summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Alteholz <debian@alteholz.de>2018-06-20 10:02:07 +0200
committerThorsten Alteholz <debian@alteholz.de>2018-06-20 10:02:07 +0200
commit1dc1480e7f024f8807f2d28a031bf9fc2040a401 (patch)
tree1b60207172e9c99fe9364508b76b95a40dab425f
Import Upstream version 0.2.0
-rw-r--r--.gitignore43
-rw-r--r--.gitreview3
-rw-r--r--COPYING661
-rw-r--r--Makefile.am16
-rw-r--r--README.md103
-rw-r--r--TODO-RELEASE9
-rwxr-xr-xasn1/asn1enum.pl29
-rwxr-xr-xasn1/asn1msgs.pl35
-rw-r--r--asn1/hnbap/HNBAP-CommonDataTypes.asn102
-rw-r--r--asn1/hnbap/HNBAP-Constants.asn98
-rw-r--r--asn1/hnbap/HNBAP-Containers.asn149
-rw-r--r--asn1/hnbap/HNBAP-IEs.asn485
-rw-r--r--asn1/hnbap/HNBAP-PDU-Contents.asn561
-rw-r--r--asn1/hnbap/HNBAP-PDU-Descriptions.asn228
-rw-r--r--asn1/hnbap/HNBAP-PDU.asn146
-rw-r--r--asn1/iucommon/IU-Common.asn45
-rw-r--r--asn1/ranap/RANAP-CommonDataTypes.asn353
-rw-r--r--asn1/ranap/RANAP-Constants.asn405
-rw-r--r--asn1/ranap/RANAP-Containers.asn194
-rw-r--r--asn1/ranap/RANAP-IEs.asn2208
-rw-r--r--asn1/ranap/RANAP-PDU-Contents.asn3595
-rw-r--r--asn1/ranap/RANAP-PDU-Descriptions.asn617
-rw-r--r--asn1/ranap/RANAP-PDU.asn1023
-rw-r--r--asn1/rua/RUA-CommonDataTypes.asn62
-rw-r--r--asn1/rua/RUA-Constants.asn55
-rw-r--r--asn1/rua/RUA-Containers.asn153
-rw-r--r--asn1/rua/RUA-IEs.asn183
-rw-r--r--asn1/rua/RUA-PDU-Contents.asn195
-rw-r--r--asn1/rua/RUA-PDU-Descriptions.asn166
-rw-r--r--asn1/rua/RUA-PDU.asn80
-rw-r--r--asn1/rua/eurecom/rua_decoder.c390
-rw-r--r--asn1/rua/eurecom/rua_encoder.c216
-rw-r--r--asn1/rua/eurecom/rua_ies_defs.h175
-rwxr-xr-xasn1/utils/asn1tostruct.py535
-rw-r--r--configure.ac64
-rwxr-xr-xcontrib/jenkins.sh56
-rw-r--r--contrib/systemd/osmo-hnbgw.service11
-rw-r--r--doc/Makefile.am12
-rw-r--r--doc/README2
-rw-r--r--doc/examples/Makefile.am23
-rw-r--r--doc/examples/osmo-hnbgw.cfg25
-rw-r--r--doc/hnb_cs_lu.msc45
-rw-r--r--doc/hnb_cs_mo_call.msc75
-rw-r--r--doc/hnb_cs_mo_sms.msc67
-rw-r--r--doc/hnb_cs_mt_call.msc79
-rw-r--r--doc/hnb_cs_mt_sms.msc67
-rw-r--r--doc/hnb_ps_lu.msc45
-rw-r--r--doc/hnb_ps_pdp_act.msc25
-rw-r--r--doc/protocols_around_hnbgw.txt60
-rwxr-xr-xgit-version-gen151
-rw-r--r--include/Makefile.am2
-rw-r--r--include/osmocom/Makefile.am2
-rw-r--r--include/osmocom/hnbap/Access-stratum-release-indicator.h56
-rw-r--r--include/osmocom/hnbap/AccessResult.h52
-rw-r--r--include/osmocom/hnbap/AdditionalNeighbourInfoList.h44
-rw-r--r--include/osmocom/hnbap/AltitudeAndDirection.h51
-rw-r--r--include/osmocom/hnbap/BackoffTimer.h43
-rw-r--r--include/osmocom/hnbap/BindingID.h43
-rw-r--r--include/osmocom/hnbap/CELL-FACHMobilitySupport.h51
-rw-r--r--include/osmocom/hnbap/CGI.h49
-rw-r--r--include/osmocom/hnbap/CI.h43
-rw-r--r--include/osmocom/hnbap/CN-DomainIndicator.h49
-rw-r--r--include/osmocom/hnbap/CSG-Capability.h52
-rw-r--r--include/osmocom/hnbap/CSG-ID.h43
-rw-r--r--include/osmocom/hnbap/CSGMembershipStatus.h52
-rw-r--r--include/osmocom/hnbap/CSGMembershipUpdate.h54
-rw-r--r--include/osmocom/hnbap/Cause.h62
-rw-r--r--include/osmocom/hnbap/CauseMisc.h54
-rw-r--r--include/osmocom/hnbap/CauseProtocol.h57
-rw-r--r--include/osmocom/hnbap/CauseRadioNetwork.h66
-rw-r--r--include/osmocom/hnbap/CauseTransport.h52
-rw-r--r--include/osmocom/hnbap/CellIdentity.h43
-rw-r--r--include/osmocom/hnbap/ConfigurationInformation.h56
-rw-r--r--include/osmocom/hnbap/Context-ID.h43
-rw-r--r--include/osmocom/hnbap/Criticality.h50
-rw-r--r--include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h60
-rw-r--r--include/osmocom/hnbap/CriticalityDiagnostics.h56
-rw-r--r--include/osmocom/hnbap/ESN.h43
-rw-r--r--include/osmocom/hnbap/ErrorIndication.h54
-rw-r--r--include/osmocom/hnbap/GTP-TEI.h43
-rw-r--r--include/osmocom/hnbap/GeographicalCoordinates.h59
-rw-r--r--include/osmocom/hnbap/GeographicalLocation.h51
-rw-r--r--include/osmocom/hnbap/HNB-Cell-Access-Mode.h53
-rw-r--r--include/osmocom/hnbap/HNB-Cell-Identifier.h51
-rw-r--r--include/osmocom/hnbap/HNB-GWResponse.h59
-rw-r--r--include/osmocom/hnbap/HNB-Identity-Info.h43
-rw-r--r--include/osmocom/hnbap/HNB-Identity.h49
-rw-r--r--include/osmocom/hnbap/HNB-Location-Information.h53
-rw-r--r--include/osmocom/hnbap/HNB-RNL-Identity.h53
-rw-r--r--include/osmocom/hnbap/HNBAP-PDU.h59
-rw-r--r--include/osmocom/hnbap/HNBCapacity.h43
-rw-r--r--include/osmocom/hnbap/HNBConfigInfo.h51
-rw-r--r--include/osmocom/hnbap/HNBConfigTransferRequest.h54
-rw-r--r--include/osmocom/hnbap/HNBConfigTransferResponse.h54
-rw-r--r--include/osmocom/hnbap/HNBConfigurationInformationMissing.h49
-rw-r--r--include/osmocom/hnbap/HNBConfigurationInformationProvided.h55
-rw-r--r--include/osmocom/hnbap/HNBDe-Register.h54
-rw-r--r--include/osmocom/hnbap/HNBRegisterAccept.h54
-rw-r--r--include/osmocom/hnbap/HNBRegisterReject.h54
-rw-r--r--include/osmocom/hnbap/HNBRegisterRequest.h54
-rw-r--r--include/osmocom/hnbap/IE-Extensions.h44
-rw-r--r--include/osmocom/hnbap/IE.h42
-rw-r--r--include/osmocom/hnbap/IMEI.h43
-rw-r--r--include/osmocom/hnbap/IMSI.h43
-rw-r--r--include/osmocom/hnbap/IMSIDS41.h43
-rw-r--r--include/osmocom/hnbap/IMSIESN.h40
-rw-r--r--include/osmocom/hnbap/IP-Address.h73
-rw-r--r--include/osmocom/hnbap/InitiatingMessage.h42
-rw-r--r--include/osmocom/hnbap/Ipv4Address.h43
-rw-r--r--include/osmocom/hnbap/Ipv6Address.h43
-rw-r--r--include/osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h44
-rw-r--r--include/osmocom/hnbap/LAC.h43
-rw-r--r--include/osmocom/hnbap/LAI.h44
-rw-r--r--include/osmocom/hnbap/MacroCellID.h56
-rw-r--r--include/osmocom/hnbap/MacroCoverageInformation.h49
-rw-r--r--include/osmocom/hnbap/Makefile.am120
-rw-r--r--include/osmocom/hnbap/MuxPortNumber.h43
-rw-r--r--include/osmocom/hnbap/NeighbourCellIdentityList.h44
-rw-r--r--include/osmocom/hnbap/NeighbourIdentity.h56
-rw-r--r--include/osmocom/hnbap/NeighbourInfoList.h44
-rw-r--r--include/osmocom/hnbap/NeighbourInfoRequestItem.h49
-rw-r--r--include/osmocom/hnbap/NeighbourInfoRequestList.h44
-rw-r--r--include/osmocom/hnbap/PLMNidentity.h43
-rw-r--r--include/osmocom/hnbap/PSC.h43
-rw-r--r--include/osmocom/hnbap/PTMSI.h43
-rw-r--r--include/osmocom/hnbap/PTMSIRAI.h44
-rw-r--r--include/osmocom/hnbap/Presence.h50
-rw-r--r--include/osmocom/hnbap/PrivateIE-ID.h50
-rw-r--r--include/osmocom/hnbap/PrivateMessage.h54
-rw-r--r--include/osmocom/hnbap/ProcedureCode.h58
-rw-r--r--include/osmocom/hnbap/ProtocolIE-ID.h89
-rw-r--r--include/osmocom/hnbap/RAB-ID.h43
-rw-r--r--include/osmocom/hnbap/RABList.h44
-rw-r--r--include/osmocom/hnbap/RABListItem.h54
-rw-r--r--include/osmocom/hnbap/RAC.h43
-rw-r--r--include/osmocom/hnbap/RAI.h44
-rw-r--r--include/osmocom/hnbap/RNC-ID.h43
-rw-r--r--include/osmocom/hnbap/Registration-Cause.h53
-rw-r--r--include/osmocom/hnbap/RelocationComplete.h54
-rw-r--r--include/osmocom/hnbap/S-RNTIPrefix.h43
-rw-r--r--include/osmocom/hnbap/SAC.h43
-rw-r--r--include/osmocom/hnbap/SuccessfulOutcome.h42
-rw-r--r--include/osmocom/hnbap/TMSIDS41.h43
-rw-r--r--include/osmocom/hnbap/TMSILAI.h40
-rw-r--r--include/osmocom/hnbap/TNLUpdateFailure.h54
-rw-r--r--include/osmocom/hnbap/TNLUpdateRequest.h54
-rw-r--r--include/osmocom/hnbap/TNLUpdateResponse.h54
-rw-r--r--include/osmocom/hnbap/TransportInfo.h75
-rw-r--r--include/osmocom/hnbap/TransportLayerAddress.h43
-rw-r--r--include/osmocom/hnbap/TriggeringMessage.h50
-rw-r--r--include/osmocom/hnbap/Tunnel-Information.h51
-rw-r--r--include/osmocom/hnbap/TypeOfError.h52
-rw-r--r--include/osmocom/hnbap/U-RNTI.h43
-rw-r--r--include/osmocom/hnbap/U-RNTIQueryRequest.h54
-rw-r--r--include/osmocom/hnbap/U-RNTIQueryResponse.h54
-rw-r--r--include/osmocom/hnbap/UDP-Port-Number.h43
-rw-r--r--include/osmocom/hnbap/UE-Capabilities.h51
-rw-r--r--include/osmocom/hnbap/UE-Identity.h74
-rw-r--r--include/osmocom/hnbap/UEDe-Register.h54
-rw-r--r--include/osmocom/hnbap/UERegisterAccept.h54
-rw-r--r--include/osmocom/hnbap/UERegisterReject.h54
-rw-r--r--include/osmocom/hnbap/UERegisterRequest.h54
-rw-r--r--include/osmocom/hnbap/URAIdentity.h43
-rw-r--r--include/osmocom/hnbap/URAIdentityList.h39
-rw-r--r--include/osmocom/hnbap/UTRANCellID.h51
-rw-r--r--include/osmocom/hnbap/UnknownU-RNTIIndication.h51
-rw-r--r--include/osmocom/hnbap/UnsuccessfulOutcome.h42
-rw-r--r--include/osmocom/hnbap/Update-cause.h51
-rw-r--r--include/osmocom/hnbap/hnbap_common.h159
-rw-r--r--include/osmocom/iuh/Makefile.am4
-rw-r--r--include/osmocom/iuh/context_map.h46
-rw-r--r--include/osmocom/iuh/hnbgw.h156
-rw-r--r--include/osmocom/iuh/hnbgw_cn.h5
-rw-r--r--include/osmocom/iuh/hnbgw_hnbap.h6
-rw-r--r--include/osmocom/iuh/hnbgw_ranap.h6
-rw-r--r--include/osmocom/iuh/hnbgw_rua.h13
-rw-r--r--include/osmocom/iuh/iu_common.h23
-rw-r--r--include/osmocom/iuh/vty.h11
-rw-r--r--include/osmocom/ranap/Makefile.am599
-rw-r--r--include/osmocom/ranap/RANAP_APN.h42
-rw-r--r--include/osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h51
-rw-r--r--include/osmocom/ranap/RANAP_AllocationOrRetentionPriority.h49
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h43
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h43
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h43
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h52
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h43
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h52
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h45
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h45
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h38
-rw-r--r--include/osmocom/ranap/RANAP_Alt-RAB-Parameters.h45
-rw-r--r--include/osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h50
-rw-r--r--include/osmocom/ranap/RANAP_AreaIdentity.h55
-rw-r--r--include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Ass-RAB-Parameters.h45
-rw-r--r--include/osmocom/ranap/RANAP_AuthorisedPLMNs.h52
-rw-r--r--include/osmocom/ranap/RANAP_AuthorisedSNAs.h38
-rw-r--r--include/osmocom/ranap/RANAP_BindingID.h42
-rw-r--r--include/osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h43
-rw-r--r--include/osmocom/ranap/RANAP_CGI.h43
-rw-r--r--include/osmocom/ranap/RANAP_CI.h42
-rw-r--r--include/osmocom/ranap/RANAP_CN-DeactivateTrace.h48
-rw-r--r--include/osmocom/ranap/RANAP_CN-DomainIndicator.h48
-rw-r--r--include/osmocom/ranap/RANAP_CN-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_CN-InvokeTrace.h48
-rw-r--r--include/osmocom/ranap/RANAP_CNMBMSLinkingInformation.h43
-rw-r--r--include/osmocom/ranap/RANAP_CSFB-Information.h51
-rw-r--r--include/osmocom/ranap/RANAP_CSG-Id-List.h38
-rw-r--r--include/osmocom/ranap/RANAP_CSG-Id.h42
-rw-r--r--include/osmocom/ranap/RANAP_CSG-Membership-Status.h51
-rw-r--r--include/osmocom/ranap/RANAP_Cause.h69
-rw-r--r--include/osmocom/ranap/RANAP_CauseMisc.h50
-rw-r--r--include/osmocom/ranap/RANAP_CauseNAS.h50
-rw-r--r--include/osmocom/ranap/RANAP_CauseNon-Standard.h42
-rw-r--r--include/osmocom/ranap/RANAP_CauseProtocol.h52
-rw-r--r--include/osmocom/ranap/RANAP_CauseRadioNetwork.h110
-rw-r--r--include/osmocom/ranap/RANAP_CauseRadioNetworkExtension.h59
-rw-r--r--include/osmocom/ranap/RANAP_CauseTransmissionNetwork.h48
-rw-r--r--include/osmocom/ranap/RANAP_Cell-Access-Mode.h50
-rw-r--r--include/osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h42
-rw-r--r--include/osmocom/ranap/RANAP_Cell-Id.h42
-rw-r--r--include/osmocom/ranap/RANAP_CellBased.h43
-rw-r--r--include/osmocom/ranap/RANAP_CellIdList.h38
-rw-r--r--include/osmocom/ranap/RANAP_CellLoadInformation.h49
-rw-r--r--include/osmocom/ranap/RANAP_CellLoadInformationGroup.h46
-rw-r--r--include/osmocom/ranap/RANAP_CellType.h53
-rw-r--r--include/osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h43
-rw-r--r--include/osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h43
-rw-r--r--include/osmocom/ranap/RANAP_ClassmarkInformation2.h42
-rw-r--r--include/osmocom/ranap/RANAP_ClassmarkInformation3.h42
-rw-r--r--include/osmocom/ranap/RANAP_ClientType.h57
-rw-r--r--include/osmocom/ranap/RANAP_CommonID.h48
-rw-r--r--include/osmocom/ranap/RANAP_Correlation-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_Criticality.h49
-rw-r--r--include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h54
-rw-r--r--include/osmocom/ranap/RANAP_CriticalityDiagnostics.h49
-rw-r--r--include/osmocom/ranap/RANAP_D-RNTI.h42
-rw-r--r--include/osmocom/ranap/RANAP_DCH-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h42
-rw-r--r--include/osmocom/ranap/RANAP_DSCH-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_DataPDUType.h51
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeList.h52
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeReference.h42
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeReport.h48
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeReportList.h48
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeReportRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_DataVolumeReportingIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h49
-rw-r--r--include/osmocom/ranap/RANAP_DeliveryOrder.h48
-rw-r--r--include/osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h41
-rw-r--r--include/osmocom/ranap/RANAP_DirectInformationTransfer.h48
-rw-r--r--include/osmocom/ranap/RANAP_DirectReportingIndicator.h51
-rw-r--r--include/osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h38
-rw-r--r--include/osmocom/ranap/RANAP_DirectTransfer.h48
-rw-r--r--include/osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h47
-rw-r--r--include/osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h50
-rw-r--r--include/osmocom/ranap/RANAP_EARFCN-Extended.h42
-rw-r--r--include/osmocom/ranap/RANAP_ENB-ID.h54
-rw-r--r--include/osmocom/ranap/RANAP_EUTRANFrequencies.h48
-rw-r--r--include/osmocom/ranap/RANAP_EncryptionAlgorithm.h49
-rw-r--r--include/osmocom/ranap/RANAP_EncryptionInformation.h41
-rw-r--r--include/osmocom/ranap/RANAP_EncryptionKey.h42
-rw-r--r--include/osmocom/ranap/RANAP_End-Of-CSFB.h50
-rw-r--r--include/osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h48
-rw-r--r--include/osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_EquipmentsToBeTraced.h61
-rw-r--r--include/osmocom/ranap/RANAP_ErrorIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_Event.h55
-rw-r--r--include/osmocom/ranap/RANAP_Event1F-Parameters.h43
-rw-r--r--include/osmocom/ranap/RANAP_Event1I-Parameters.h41
-rw-r--r--include/osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h42
-rw-r--r--include/osmocom/ranap/RANAP_ExtendedMaxBitrate.h42
-rw-r--r--include/osmocom/ranap/RANAP_ExtendedRNC-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_ForwardSRNS-Context.h48
-rw-r--r--include/osmocom/ranap/RANAP_ForwardingIndication.h50
-rw-r--r--include/osmocom/ranap/RANAP_FrameSequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h50
-rw-r--r--include/osmocom/ranap/RANAP_GA-AltitudeAndDirection.h50
-rw-r--r--include/osmocom/ranap/RANAP_GA-EllipsoidArc.h49
-rw-r--r--include/osmocom/ranap/RANAP_GA-Point.h43
-rw-r--r--include/osmocom/ranap/RANAP_GA-PointWithAltitude.h45
-rw-r--r--include/osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h50
-rw-r--r--include/osmocom/ranap/RANAP_GA-PointWithUnCertainty.h41
-rw-r--r--include/osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h47
-rw-r--r--include/osmocom/ranap/RANAP_GA-Polygon.h50
-rw-r--r--include/osmocom/ranap/RANAP_GA-UncertaintyEllipse.h43
-rw-r--r--include/osmocom/ranap/RANAP_GANSS-PositioningDataSet.h38
-rw-r--r--include/osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h42
-rw-r--r--include/osmocom/ranap/RANAP_GERAN-BSC-Container.h42
-rw-r--r--include/osmocom/ranap/RANAP_GERAN-Cell-ID.h43
-rw-r--r--include/osmocom/ranap/RANAP_GERAN-Classmark.h42
-rw-r--r--include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h47
-rw-r--r--include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h48
-rw-r--r--include/osmocom/ranap/RANAP_GTP-TEI.h42
-rw-r--r--include/osmocom/ranap/RANAP_GeographicalArea.h69
-rw-r--r--include/osmocom/ranap/RANAP_GeographicalCoordinates.h53
-rw-r--r--include/osmocom/ranap/RANAP_GlobalCN-ID.h39
-rw-r--r--include/osmocom/ranap/RANAP_GlobalRNC-ID.h39
-rw-r--r--include/osmocom/ranap/RANAP_GuaranteedBitrate.h42
-rw-r--r--include/osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h51
-rw-r--r--include/osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h38
-rw-r--r--include/osmocom/ranap/RANAP_HorizontalVelocity.h43
-rw-r--r--include/osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h45
-rw-r--r--include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h45
-rw-r--r--include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h48
-rw-r--r--include/osmocom/ranap/RANAP_IE-Extensions.h38
-rw-r--r--include/osmocom/ranap/RANAP_IE.h41
-rw-r--r--include/osmocom/ranap/RANAP_IMEI.h42
-rw-r--r--include/osmocom/ranap/RANAP_IMEIGroup.h41
-rw-r--r--include/osmocom/ranap/RANAP_IMEIList.h38
-rw-r--r--include/osmocom/ranap/RANAP_IMEISV.h42
-rw-r--r--include/osmocom/ranap/RANAP_IMEISVGroup.h41
-rw-r--r--include/osmocom/ranap/RANAP_IMEISVList.h38
-rw-r--r--include/osmocom/ranap/RANAP_IMSI.h43
-rw-r--r--include/osmocom/ranap/RANAP_IPMulticastAddress.h42
-rw-r--r--include/osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h42
-rw-r--r--include/osmocom/ranap/RANAP_IRATmeasurementParameters.h41
-rw-r--r--include/osmocom/ranap/RANAP_ImmediateMDT.h47
-rw-r--r--include/osmocom/ranap/RANAP_IncludeVelocity.h47
-rw-r--r--include/osmocom/ranap/RANAP_InformationExchangeID.h42
-rw-r--r--include/osmocom/ranap/RANAP_InformationExchangeType.h51
-rw-r--r--include/osmocom/ranap/RANAP_InformationRequestType.h55
-rw-r--r--include/osmocom/ranap/RANAP_InformationRequested.h55
-rw-r--r--include/osmocom/ranap/RANAP_InformationTransferConfirmation.h48
-rw-r--r--include/osmocom/ranap/RANAP_InformationTransferFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_InformationTransferID.h42
-rw-r--r--include/osmocom/ranap/RANAP_InformationTransferIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_InformationTransferType.h52
-rw-r--r--include/osmocom/ranap/RANAP_InitialUE-Message.h48
-rw-r--r--include/osmocom/ranap/RANAP_InitiatingMessage.h41
-rw-r--r--include/osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h49
-rw-r--r--include/osmocom/ranap/RANAP_IntegrityProtectionInformation.h41
-rw-r--r--include/osmocom/ranap/RANAP_IntegrityProtectionKey.h42
-rw-r--r--include/osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h44
-rw-r--r--include/osmocom/ranap/RANAP_InterSystemInformationTransferType.h52
-rw-r--r--include/osmocom/ranap/RANAP_InterfacesToTraceItem.h56
-rw-r--r--include/osmocom/ranap/RANAP_Iu-ReleaseCommand.h48
-rw-r--r--include/osmocom/ranap/RANAP_Iu-ReleaseComplete.h48
-rw-r--r--include/osmocom/ranap/RANAP_Iu-ReleaseRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h38
-rw-r--r--include/osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h42
-rw-r--r--include/osmocom/ranap/RANAP_IuTransportAssociation.h55
-rw-r--r--include/osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h52
-rw-r--r--include/osmocom/ranap/RANAP_KeyStatus.h51
-rw-r--r--include/osmocom/ranap/RANAP_L3-Information.h42
-rw-r--r--include/osmocom/ranap/RANAP_LA-LIST.h52
-rw-r--r--include/osmocom/ranap/RANAP_LABased.h43
-rw-r--r--include/osmocom/ranap/RANAP_LAC.h42
-rw-r--r--include/osmocom/ranap/RANAP_LAI-List.h38
-rw-r--r--include/osmocom/ranap/RANAP_LAI.h41
-rw-r--r--include/osmocom/ranap/RANAP_LAListofIdleModeUEs.h38
-rw-r--r--include/osmocom/ranap/RANAP_LHN-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_LastKnownServiceArea.h45
-rw-r--r--include/osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h47
-rw-r--r--include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h50
-rw-r--r--include/osmocom/ranap/RANAP_Links-to-log.h52
-rw-r--r--include/osmocom/ranap/RANAP_ListOF-SNAs.h38
-rw-r--r--include/osmocom/ranap/RANAP_ListOfInterfacesToTrace.h38
-rw-r--r--include/osmocom/ranap/RANAP_LoadValue.h42
-rw-r--r--include/osmocom/ranap/RANAP_LocationRelatedDataFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_LocationRelatedDataRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_LocationRelatedDataRequestType.h43
-rw-r--r--include/osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h52
-rw-r--r--include/osmocom/ranap/RANAP_LocationRelatedDataResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_LocationReport.h48
-rw-r--r--include/osmocom/ranap/RANAP_LocationReportingControl.h48
-rw-r--r--include/osmocom/ranap/RANAP_LocationReportingTransferInformation.h61
-rw-r--r--include/osmocom/ranap/RANAP_LoggedMDT.h45
-rw-r--r--include/osmocom/ranap/RANAP_LoggingDuration.h55
-rw-r--r--include/osmocom/ranap/RANAP_LoggingInterval.h57
-rw-r--r--include/osmocom/ranap/RANAP_M1Report.h55
-rw-r--r--include/osmocom/ranap/RANAP_M2Report.h55
-rw-r--r--include/osmocom/ranap/RANAP_M4-Collection-Parameters.h45
-rw-r--r--include/osmocom/ranap/RANAP_M4-Period.h57
-rw-r--r--include/osmocom/ranap/RANAP_M4-Threshold.h42
-rw-r--r--include/osmocom/ranap/RANAP_M4Report.h55
-rw-r--r--include/osmocom/ranap/RANAP_M5-Period.h57
-rw-r--r--include/osmocom/ranap/RANAP_M5Report.h55
-rw-r--r--include/osmocom/ranap/RANAP_M6-Period.h62
-rw-r--r--include/osmocom/ranap/RANAP_M6Report.h45
-rw-r--r--include/osmocom/ranap/RANAP_M7-Period.h62
-rw-r--r--include/osmocom/ranap/RANAP_M7Report.h45
-rw-r--r--include/osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_MBMSBearerServiceType.h51
-rw-r--r--include/osmocom/ranap/RANAP_MBMSCNDe-Registration.h51
-rw-r--r--include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSCountingInformation.h51
-rw-r--r--include/osmocom/ranap/RANAP_MBMSHCIndicator.h51
-rw-r--r--include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h38
-rw-r--r--include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h47
-rw-r--r--include/osmocom/ranap/RANAP_MBMSLinkingInformation.h50
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRABRelease.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRABReleaseFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRABReleaseRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRegistrationFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRegistrationRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRegistrationRequestType.h51
-rw-r--r--include/osmocom/ranap/RANAP_MBMSRegistrationResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSServiceArea.h42
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionDuration.h42
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionIdentity.h42
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionStart.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionStartFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionStartResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionStop.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionStopResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionUpdate.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSSynchronisationInformation.h47
-rw-r--r--include/osmocom/ranap/RANAP_MBMSUELinkingRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_MBMSUELinkingResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_MDT-Activation.h52
-rw-r--r--include/osmocom/ranap/RANAP_MDT-Configuration.h47
-rw-r--r--include/osmocom/ranap/RANAP_MDT-PLMN-List.h38
-rw-r--r--include/osmocom/ranap/RANAP_MDT-Report-Parameters.h43
-rw-r--r--include/osmocom/ranap/RANAP_MDTAreaScope.h61
-rw-r--r--include/osmocom/ranap/RANAP_MDTMode.h55
-rw-r--r--include/osmocom/ranap/RANAP_MSISDN.h42
-rw-r--r--include/osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h50
-rw-r--r--include/osmocom/ranap/RANAP_MaxBitrate.h42
-rw-r--r--include/osmocom/ranap/RANAP_MaxSDU-Size.h42
-rw-r--r--include/osmocom/ranap/RANAP_MeasBand.h52
-rw-r--r--include/osmocom/ranap/RANAP_MeasurementQuantity.h52
-rw-r--r--include/osmocom/ranap/RANAP_MeasurementsToActivate.h42
-rw-r--r--include/osmocom/ranap/RANAP_MessageStructure.h52
-rw-r--r--include/osmocom/ranap/RANAP_NAS-PDU.h42
-rw-r--r--include/osmocom/ranap/RANAP_NAS-SequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h42
-rw-r--r--include/osmocom/ranap/RANAP_NRTLoadInformationValue.h42
-rw-r--r--include/osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h42
-rw-r--r--include/osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h38
-rw-r--r--include/osmocom/ranap/RANAP_NonSearchingIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h39
-rw-r--r--include/osmocom/ranap/RANAP_NumberOfIuInstances.h42
-rw-r--r--include/osmocom/ranap/RANAP_NumberOfSteps.h42
-rw-r--r--include/osmocom/ranap/RANAP_OMC-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h42
-rw-r--r--include/osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h42
-rw-r--r--include/osmocom/ranap/RANAP_Offload-RAB-Parameters.h45
-rw-r--r--include/osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h42
-rw-r--r--include/osmocom/ranap/RANAP_Out-Of-UTRAN.h50
-rw-r--r--include/osmocom/ranap/RANAP_Outcome.h41
-rw-r--r--include/osmocom/ranap/RANAP_Overload.h48
-rw-r--r--include/osmocom/ranap/RANAP_P-TMSI.h42
-rw-r--r--include/osmocom/ranap/RANAP_PDP-Type-extension.h50
-rw-r--r--include/osmocom/ranap/RANAP_PDP-Type.h54
-rw-r--r--include/osmocom/ranap/RANAP_PDP-TypeInformation-extension.h38
-rw-r--r--include/osmocom/ranap/RANAP_PDP-TypeInformation.h38
-rw-r--r--include/osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_PLMNidentity.h43
-rw-r--r--include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h52
-rw-r--r--include/osmocom/ranap/RANAP_Paging.h48
-rw-r--r--include/osmocom/ranap/RANAP_PagingAreaID.h55
-rw-r--r--include/osmocom/ranap/RANAP_PagingCause.h55
-rw-r--r--include/osmocom/ranap/RANAP_PeriodicLocationInfo.h44
-rw-r--r--include/osmocom/ranap/RANAP_PeriodicReportingIndicator.h51
-rw-r--r--include/osmocom/ranap/RANAP_PermanentNAS-UE-ID.h52
-rw-r--r--include/osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h38
-rw-r--r--include/osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h38
-rw-r--r--include/osmocom/ranap/RANAP_Port-Number.h42
-rw-r--r--include/osmocom/ranap/RANAP_PositionData.h45
-rw-r--r--include/osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h42
-rw-r--r--include/osmocom/ranap/RANAP_PositioningDataDiscriminator.h42
-rw-r--r--include/osmocom/ranap/RANAP_PositioningDataSet.h38
-rw-r--r--include/osmocom/ranap/RANAP_PositioningMethodAndUsage.h42
-rw-r--r--include/osmocom/ranap/RANAP_PositioningPriority.h51
-rw-r--r--include/osmocom/ranap/RANAP_Pre-emptionCapability.h48
-rw-r--r--include/osmocom/ranap/RANAP_Pre-emptionVulnerability.h48
-rw-r--r--include/osmocom/ranap/RANAP_Presence.h49
-rw-r--r--include/osmocom/ranap/RANAP_Priority-Class-Indicator.h42
-rw-r--r--include/osmocom/ranap/RANAP_PriorityLevel.h50
-rw-r--r--include/osmocom/ranap/RANAP_PrivateIE-ID.h49
-rw-r--r--include/osmocom/ranap/RANAP_PrivateMessage.h48
-rw-r--r--include/osmocom/ranap/RANAP_ProcedureCode.h93
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h38
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolExtensionContainer.h38
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolExtensionField.h41
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolExtensionID.h42
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolIE-Container.h38
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h38
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolIE-FieldPair.h43
-rw-r--r--include/osmocom/ranap/RANAP_ProtocolIE-ID.h318
-rw-r--r--include/osmocom/ranap/RANAP_ProvidedData.h52
-rw-r--r--include/osmocom/ranap/RANAP_QueuingAllowed.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-AssignmentRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-AssignmentResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h53
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h51
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ContextItem.h51
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ContextList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h43
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataForwardingItem.h47
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataForwardingList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataVolumeReportList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h43
-rw-r--r--include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h47
-rw-r--r--include/osmocom/ranap/RANAP_RAB-FailedItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-FailedList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_RAB-IE-ContainerList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ModifyItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ModifyList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ModifyRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-Parameters.h65
-rw-r--r--include/osmocom/ranap/RANAP_RAB-QueuedItem.h43
-rw-r--r--include/osmocom/ranap/RANAP_RAB-QueuedList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleaseFailedList.h42
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleaseItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleaseList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleaseRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h47
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleasedItem.h49
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ReleasedList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h43
-rw-r--r--include/osmocom/ranap/RANAP_RAB-RelocationReleaseList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h60
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h49
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h49
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h53
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h59
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h47
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h49
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h53
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h53
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SetupOrModifyList.h42
-rw-r--r--include/osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h42
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAB-TrCH-Mapping.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RABDataVolumeReport.h52
-rw-r--r--include/osmocom/ranap/RANAP_RABParametersList.h56
-rw-r--r--include/osmocom/ranap/RANAP_RABased.h43
-rw-r--r--include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RABs-failed-to-reportItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_RABs-failed-to-reportList.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAC.h42
-rw-r--r--include/osmocom/ranap/RANAP_RAI-List.h38
-rw-r--r--include/osmocom/ranap/RANAP_RAI.h45
-rw-r--r--include/osmocom/ranap/RANAP_RAListofIdleModeUEs.h63
-rw-r--r--include/osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h38
-rw-r--r--include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_RANAP-PDU.h61
-rw-r--r--include/osmocom/ranap/RANAP_RANAP-RelocationInformation.h48
-rw-r--r--include/osmocom/ranap/RANAP_RAT-Type.h51
-rw-r--r--include/osmocom/ranap/RANAP_RAofIdleModeUEs.h38
-rw-r--r--include/osmocom/ranap/RANAP_RIM-Transfer.h41
-rw-r--r--include/osmocom/ranap/RANAP_RIMInformation.h42
-rw-r--r--include/osmocom/ranap/RANAP_RIMRoutingAddress.h57
-rw-r--r--include/osmocom/ranap/RANAP_RNC-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_RNCTraceInformation.h50
-rw-r--r--include/osmocom/ranap/RANAP_RNSAPRelocationParameters.h49
-rw-r--r--include/osmocom/ranap/RANAP_RRC-Container.h42
-rw-r--r--include/osmocom/ranap/RANAP_RSRQ-Extension.h42
-rw-r--r--include/osmocom/ranap/RANAP_RSRQ-Type.h38
-rw-r--r--include/osmocom/ranap/RANAP_RSRVCC-HO-Indication.h50
-rw-r--r--include/osmocom/ranap/RANAP_RSRVCC-Information.h45
-rw-r--r--include/osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h50
-rw-r--r--include/osmocom/ranap/RANAP_RTLoadValue.h42
-rw-r--r--include/osmocom/ranap/RANAP_RateControlAllowed.h48
-rw-r--r--include/osmocom/ranap/RANAP_RedirectAttemptFlag.h42
-rw-r--r--include/osmocom/ranap/RANAP_RedirectionCompleted.h50
-rw-r--r--include/osmocom/ranap/RANAP_RedirectionIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_RejectCauseValue.h57
-rw-r--r--include/osmocom/ranap/RANAP_RelocationCancel.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationCancelAcknowledge.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationCommand.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationComplete.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationDetect.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationPreparationFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationRequestAcknowledge.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationRequired.h48
-rw-r--r--include/osmocom/ranap/RANAP_RelocationRequirement.h52
-rw-r--r--include/osmocom/ranap/RANAP_RelocationType.h51
-rw-r--r--include/osmocom/ranap/RANAP_RepetitionNumber0.h42
-rw-r--r--include/osmocom/ranap/RANAP_RepetitionNumber1.h42
-rw-r--r--include/osmocom/ranap/RANAP_ReportAmount.h57
-rw-r--r--include/osmocom/ranap/RANAP_ReportArea.h51
-rw-r--r--include/osmocom/ranap/RANAP_ReportChangeOfSAI.h50
-rw-r--r--include/osmocom/ranap/RANAP_ReportInterval.h64
-rw-r--r--include/osmocom/ranap/RANAP_RequestType.h45
-rw-r--r--include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h45
-rw-r--r--include/osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h42
-rw-r--r--include/osmocom/ranap/RANAP_RequestedGPSAssistanceData.h42
-rw-r--r--include/osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h57
-rw-r--r--include/osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h38
-rw-r--r--include/osmocom/ranap/RANAP_RequestedMulticastServiceList.h38
-rw-r--r--include/osmocom/ranap/RANAP_Reset.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResetAcknowledge.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResetResource.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResetResourceAckItem.h43
-rw-r--r--include/osmocom/ranap/RANAP_ResetResourceAckList.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResetResourceAcknowledge.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResetResourceItem.h43
-rw-r--r--include/osmocom/ranap/RANAP_ResetResourceList.h48
-rw-r--r--include/osmocom/ranap/RANAP_ResidualBitErrorRatio.h40
-rw-r--r--include/osmocom/ranap/RANAP_ResponseTime.h51
-rw-r--r--include/osmocom/ranap/RANAP_SAC.h42
-rw-r--r--include/osmocom/ranap/RANAP_SAI.h43
-rw-r--r--include/osmocom/ranap/RANAP_SAPI.h51
-rw-r--r--include/osmocom/ranap/RANAP_SDU-ErrorRatio.h40
-rw-r--r--include/osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_SDU-FormatInformationParameters.h38
-rw-r--r--include/osmocom/ranap/RANAP_SDU-ParameterItem.h49
-rw-r--r--include/osmocom/ranap/RANAP_SDU-Parameters.h38
-rw-r--r--include/osmocom/ranap/RANAP_SNA-Access-Information.h43
-rw-r--r--include/osmocom/ranap/RANAP_SNAC.h42
-rw-r--r--include/osmocom/ranap/RANAP_SRB-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_SRB-TrCH-Mapping.h38
-rw-r--r--include/osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h45
-rw-r--r--include/osmocom/ranap/RANAP_SRNS-ContextRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_SRNS-ContextResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_SRNS-DataForwardCommand.h48
-rw-r--r--include/osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_SRVCC-HO-Indication.h51
-rw-r--r--include/osmocom/ranap/RANAP_SRVCC-Information.h43
-rw-r--r--include/osmocom/ranap/RANAP_SRVCC-Operation-Possible.h50
-rw-r--r--include/osmocom/ranap/RANAP_SecurityModeCommand.h48
-rw-r--r--include/osmocom/ranap/RANAP_SecurityModeComplete.h48
-rw-r--r--include/osmocom/ranap/RANAP_SecurityModeReject.h48
-rw-r--r--include/osmocom/ranap/RANAP_Service-Handover.h52
-rw-r--r--include/osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h50
-rw-r--r--include/osmocom/ranap/RANAP_SessionUpdateID.h42
-rw-r--r--include/osmocom/ranap/RANAP_Shared-Network-Information.h43
-rw-r--r--include/osmocom/ranap/RANAP_SignallingIndication.h50
-rw-r--r--include/osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_SourceCellID.h55
-rw-r--r--include/osmocom/ranap/RANAP_SourceID.h55
-rw-r--r--include/osmocom/ranap/RANAP_SourceRNC-ID.h41
-rw-r--r--include/osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h63
-rw-r--r--include/osmocom/ranap/RANAP_SourceStatisticsDescriptor.h51
-rw-r--r--include/osmocom/ranap/RANAP_SourceUTRANCellID.h41
-rw-r--r--include/osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_SubflowSDU-Size.h42
-rw-r--r--include/osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h42
-rw-r--r--include/osmocom/ranap/RANAP_SuccessfulOutcome.h41
-rw-r--r--include/osmocom/ranap/RANAP_SupportedBitrate.h42
-rw-r--r--include/osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h38
-rw-r--r--include/osmocom/ranap/RANAP_TAC.h42
-rw-r--r--include/osmocom/ranap/RANAP_TAI.h41
-rw-r--r--include/osmocom/ranap/RANAP_TBCD-STRING.h42
-rw-r--r--include/osmocom/ranap/RANAP_TMGI.h41
-rw-r--r--include/osmocom/ranap/RANAP_TMSI.h42
-rw-r--r--include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h45
-rw-r--r--include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h45
-rw-r--r--include/osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_TargetCellId.h42
-rw-r--r--include/osmocom/ranap/RANAP_TargetENB-ID.h47
-rw-r--r--include/osmocom/ranap/RANAP_TargetID.h57
-rw-r--r--include/osmocom/ranap/RANAP_TargetRNC-ID.h43
-rw-r--r--include/osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h45
-rw-r--r--include/osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h42
-rw-r--r--include/osmocom/ranap/RANAP_TemporaryUE-ID.h55
-rw-r--r--include/osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h42
-rw-r--r--include/osmocom/ranap/RANAP_Time-UE-StayedInCell.h42
-rw-r--r--include/osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h42
-rw-r--r--include/osmocom/ranap/RANAP_TimingDifferenceULDL.h42
-rw-r--r--include/osmocom/ranap/RANAP_TrCH-ID-List.h38
-rw-r--r--include/osmocom/ranap/RANAP_TrCH-ID.h47
-rw-r--r--include/osmocom/ranap/RANAP_TraceDepth.h52
-rw-r--r--include/osmocom/ranap/RANAP_TraceInformation.h47
-rw-r--r--include/osmocom/ranap/RANAP_TracePropagationParameters.h47
-rw-r--r--include/osmocom/ranap/RANAP_TraceRecordingSessionInformation.h45
-rw-r--r--include/osmocom/ranap/RANAP_TraceRecordingSessionReference.h42
-rw-r--r--include/osmocom/ranap/RANAP_TraceReference.h42
-rw-r--r--include/osmocom/ranap/RANAP_TraceType.h42
-rw-r--r--include/osmocom/ranap/RANAP_TrafficClass.h53
-rw-r--r--include/osmocom/ranap/RANAP_TrafficHandlingPriority.h50
-rw-r--r--include/osmocom/ranap/RANAP_TransferDelay.h42
-rw-r--r--include/osmocom/ranap/RANAP_TransportLayerAddress.h42
-rw-r--r--include/osmocom/ranap/RANAP_TransportLayerInformation.h45
-rw-r--r--include/osmocom/ranap/RANAP_TriggerID.h42
-rw-r--r--include/osmocom/ranap/RANAP_TriggeringMessage.h50
-rw-r--r--include/osmocom/ranap/RANAP_TunnelInformation.h45
-rw-r--r--include/osmocom/ranap/RANAP_TypeOfError.h51
-rw-r--r--include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h43
-rw-r--r--include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h42
-rw-r--r--include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h42
-rw-r--r--include/osmocom/ranap/RANAP_UE-History-Information.h42
-rw-r--r--include/osmocom/ranap/RANAP_UE-ID.h57
-rw-r--r--include/osmocom/ranap/RANAP_UESBI-Iu.h45
-rw-r--r--include/osmocom/ranap/RANAP_UESBI-IuA.h42
-rw-r--r--include/osmocom/ranap/RANAP_UESBI-IuB.h42
-rw-r--r--include/osmocom/ranap/RANAP_UESpecificInformationIndication.h48
-rw-r--r--include/osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h42
-rw-r--r--include/osmocom/ranap/RANAP_UP-ModeVersions.h42
-rw-r--r--include/osmocom/ranap/RANAP_UPInformation.h51
-rw-r--r--include/osmocom/ranap/RANAP_UPInitialisationFrame.h42
-rw-r--r--include/osmocom/ranap/RANAP_USCH-ID.h42
-rw-r--r--include/osmocom/ranap/RANAP_UTRAN-CellID.h41
-rw-r--r--include/osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h52
-rw-r--r--include/osmocom/ranap/RANAP_UnsuccessfulOutcome.h41
-rw-r--r--include/osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h42
-rw-r--r--include/osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h48
-rw-r--r--include/osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h48
-rw-r--r--include/osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h48
-rw-r--r--include/osmocom/ranap/RANAP_UserPlaneInformation.h45
-rw-r--r--include/osmocom/ranap/RANAP_UserPlaneMode.h51
-rw-r--r--include/osmocom/ranap/RANAP_VelocityEstimate.h61
-rw-r--r--include/osmocom/ranap/RANAP_VerticalAccuracyCode.h42
-rw-r--r--include/osmocom/ranap/RANAP_VerticalSpeedDirection.h48
-rw-r--r--include/osmocom/ranap/RANAP_VerticalVelocity.h39
-rw-r--r--include/osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h51
-rw-r--r--include/osmocom/ranap/iu_client.h74
-rw-r--r--include/osmocom/ranap/iu_helpers.h7
-rw-r--r--include/osmocom/ranap/ranap_common.h645
-rw-r--r--include/osmocom/ranap/ranap_common_cn.h14
-rw-r--r--include/osmocom/ranap/ranap_msg_factory.h61
-rw-r--r--include/osmocom/rua/Makefile.am40
-rw-r--r--include/osmocom/rua/RUA_Ansi-41-IDNNS.h42
-rw-r--r--include/osmocom/rua/RUA_CN-DomainIndicator.h48
-rw-r--r--include/osmocom/rua/RUA_CSGMembershipStatus.h51
-rw-r--r--include/osmocom/rua/RUA_Cause.h61
-rw-r--r--include/osmocom/rua/RUA_CauseMisc.h53
-rw-r--r--include/osmocom/rua/RUA_CauseProtocol.h56
-rw-r--r--include/osmocom/rua/RUA_CauseRadioNetwork.h53
-rw-r--r--include/osmocom/rua/RUA_CauseTransport.h51
-rw-r--r--include/osmocom/rua/RUA_Connect.h48
-rw-r--r--include/osmocom/rua/RUA_ConnectionlessTransfer.h48
-rw-r--r--include/osmocom/rua/RUA_Context-ID.h42
-rw-r--r--include/osmocom/rua/RUA_Criticality.h49
-rw-r--r--include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h54
-rw-r--r--include/osmocom/rua/RUA_CriticalityDiagnostics.h49
-rw-r--r--include/osmocom/rua/RUA_DirectTransfer.h48
-rw-r--r--include/osmocom/rua/RUA_Disconnect.h48
-rw-r--r--include/osmocom/rua/RUA_ErrorIndication.h48
-rw-r--r--include/osmocom/rua/RUA_Establishment-Cause.h51
-rw-r--r--include/osmocom/rua/RUA_Gsm-map-IDNNS.h108
-rw-r--r--include/osmocom/rua/RUA_IE-Extensions.h38
-rw-r--r--include/osmocom/rua/RUA_IE.h41
-rw-r--r--include/osmocom/rua/RUA_InitiatingMessage.h41
-rw-r--r--include/osmocom/rua/RUA_IntraDomainNasNodeSelector.h80
-rw-r--r--include/osmocom/rua/RUA_Presence.h49
-rw-r--r--include/osmocom/rua/RUA_PrivateIE-ID.h49
-rw-r--r--include/osmocom/rua/RUA_PrivateMessage.h48
-rw-r--r--include/osmocom/rua/RUA_ProcedureCode.h52
-rw-r--r--include/osmocom/rua/RUA_ProtocolIE-ID.h54
-rw-r--r--include/osmocom/rua/RUA_RANAP-Message.h42
-rw-r--r--include/osmocom/rua/RUA_RUA-PDU.h58
-rw-r--r--include/osmocom/rua/RUA_RoutingParameter.h42
-rw-r--r--include/osmocom/rua/RUA_SuccessfulOutcome.h41
-rw-r--r--include/osmocom/rua/RUA_TriggeringMessage.h49
-rw-r--r--include/osmocom/rua/RUA_TypeOfError.h51
-rw-r--r--include/osmocom/rua/RUA_UnsuccessfulOutcome.h41
-rw-r--r--include/osmocom/rua/rua_common.h71
-rw-r--r--include/osmocom/rua/rua_msg_factory.h9
-rw-r--r--libosmo-ranap.pc.in10
-rwxr-xr-xmove-asn1-header-files.sh44
-rw-r--r--pcap/20150911-hnbap-ue_register.pcapbin0 -> 6712 bytes
-rw-r--r--pcap/2016-01-22_PS_data.pcapngbin0 -> 895196 bytes
-rw-r--r--pcap/UPP RANAP.pcapbin0 -> 74758 bytes
-rw-r--r--pcap/ranap/29eb1ef0-9805-012b-b2a6-0016cb8cea27.capbin0 -> 66684 bytes
-rw-r--r--pcap/ranap/3GDT_example.pcapbin0 -> 1365 bytes
-rw-r--r--pcap/ranap/IuPS_PS_call_flow.pcapbin0 -> 2710 bytes
-rw-r--r--pcap/ranap/MobileOriginatingCall_AMR.capbin0 -> 28475 bytes
-rw-r--r--pcap/ranap/MobileTerminatingCall_AMR.capbin0 -> 29127 bytes
-rw-r--r--pcap/ranap/ranap-linkbit_ETH.pcapbin0 -> 3394 bytes
-rw-r--r--pcap/ranap/ranap.pcapbin0 -> 2510 bytes
l---------specs/by_chapter/25.401.pdf1
l---------specs/by_chapter/25.410.pdf1
l---------specs/by_chapter/25.412.pdf1
l---------specs/by_chapter/25.413.doc1
l---------specs/by_chapter/25.413.pdf1
l---------specs/by_chapter/25.414.pdf1
l---------specs/by_chapter/25.444.doc1
l---------specs/by_chapter/25.444.pdf1
l---------specs/by_chapter/25.467.doc1
l---------specs/by_chapter/25.467.pdf1
l---------specs/by_chapter/25.468.doc1
l---------specs/by_chapter/25.468.pdf1
l---------specs/by_chapter/25.469.doc1
l---------specs/by_chapter/25.469.pdf1
l---------specs/by_chapter/25.931.pdf1
l---------specs/by_chapter/32.571.pdf1
l---------specs/by_chapter/32.572.pdf1
l---------specs/by_chapter/32.581.pdf1
l---------specs/by_chapter/32.583.pdf1
l---------specs/by_chapter/32.584.pdf1
l---------specs/by_chapter/32.821.doc1
l---------specs/by_chapter/32.821.pdf1
l---------specs/by_name/examples_signalling_procedures.pdf1
l---------specs/by_name/hnb_stage2.pdf1
l---------specs/by_name/hnbap.pdf1
l---------specs/by_name/iu_data_transport_and_transport_signalling.pdf1
l---------specs/by_name/iu_general_aspects_and_principles.pdf1
l---------specs/by_name/iu_signalling_transport.pdf1
l---------specs/by_name/iuh_transport.pdf1
l---------specs/by_name/ranap.pdf1
l---------specs/by_name/rua.pdf1
l---------specs/by_name/utran_overall_description.pdf1
-rw-r--r--specs/files/25413-c40.docbin0 -> 6998528 bytes
-rw-r--r--specs/files/25444-c00.docbin0 -> 481792 bytes
-rw-r--r--specs/files/25467-c30.docbin0 -> 5870080 bytes
-rw-r--r--specs/files/25468-c10.docbin0 -> 881664 bytes
-rw-r--r--specs/files/25469-c40.docbin0 -> 1253888 bytes
-rw-r--r--specs/files/32821-900.docbin0 -> 3583488 bytes
-rw-r--r--specs/files/32821-900.pdfbin0 -> 1178933 bytes
-rw-r--r--specs/files/tr_125931v130000p.pdfbin0 -> 918422 bytes
-rw-r--r--specs/files/ts_125401v040200p.pdf1749
-rw-r--r--specs/files/ts_125410v120000p.pdfbin0 -> 191294 bytes
-rw-r--r--specs/files/ts_125412v120000p.pdfbin0 -> 90453 bytes
-rw-r--r--specs/files/ts_125413v120400p.pdf9891
-rw-r--r--specs/files/ts_125414v120000p.pdfbin0 -> 124506 bytes
-rw-r--r--specs/files/ts_125444v120000p.pdfbin0 -> 93019 bytes
-rw-r--r--specs/files/ts_125467v120300p.pdfbin0 -> 1235860 bytes
-rw-r--r--specs/files/ts_125468v120100p.pdfbin0 -> 200361 bytes
-rw-r--r--specs/files/ts_125469v120400p.pdf3736
-rw-r--r--specs/files/ts_132571v120000p.pdfbin0 -> 104661 bytes
-rw-r--r--specs/files/ts_132572v120000p.pdfbin0 -> 109181 bytes
-rw-r--r--specs/files/ts_132581v120000p.pdfbin0 -> 98661 bytes
-rw-r--r--specs/files/ts_132583v120000p.pdfbin0 -> 246177 bytes
-rw-r--r--specs/files/ts_132584v120000p.pdfbin0 -> 135472 bytes
-rw-r--r--specs/iuh-notes.txt81
-rw-r--r--src/.gitignore10
-rw-r--r--src/Makefile.am94
-rw-r--r--src/context_map.c172
-rw-r--r--src/hnbap/.gitignore60
-rw-r--r--src/hnbap/Access-stratum-release-indicator.c176
-rw-r--r--src/hnbap/AccessResult.c168
-rw-r--r--src/hnbap/AdditionalNeighbourInfoList.c60
-rw-r--r--src/hnbap/AltitudeAndDirection.c261
-rw-r--r--src/hnbap/BackoffTimer.c166
-rw-r--r--src/hnbap/BindingID.c167
-rw-r--r--src/hnbap/CELL-FACHMobilitySupport.c166
-rw-r--r--src/hnbap/CGI.c94
-rw-r--r--src/hnbap/CI.c167
-rw-r--r--src/hnbap/CN-DomainIndicator.c166
-rw-r--r--src/hnbap/CSG-Capability.c168
-rw-r--r--src/hnbap/CSG-ID.c172
-rw-r--r--src/hnbap/CSGMembershipStatus.c168
-rw-r--r--src/hnbap/CSGMembershipUpdate.c146
-rw-r--r--src/hnbap/Cause.c93
-rw-r--r--src/hnbap/CauseMisc.c172
-rw-r--r--src/hnbap/CauseProtocol.c178
-rw-r--r--src/hnbap/CauseRadioNetwork.c196
-rw-r--r--src/hnbap/CauseTransport.c168
-rw-r--r--src/hnbap/CellIdentity.c172
-rw-r--r--src/hnbap/ConfigurationInformation.c73
-rw-r--r--src/hnbap/Context-ID.c172
-rw-r--r--src/hnbap/Criticality.c168
-rw-r--r--src/hnbap/CriticalityDiagnostics-IE-List.c146
-rw-r--r--src/hnbap/CriticalityDiagnostics.c104
-rw-r--r--src/hnbap/ESN.c172
-rw-r--r--src/hnbap/ErrorIndication.c146
-rw-r--r--src/hnbap/GTP-TEI.c167
-rw-r--r--src/hnbap/GeographicalCoordinates.c313
-rw-r--r--src/hnbap/GeographicalLocation.c84
-rw-r--r--src/hnbap/HNB-Cell-Access-Mode.c170
-rw-r--r--src/hnbap/HNB-Cell-Identifier.c84
-rw-r--r--src/hnbap/HNB-GWResponse.c83
-rw-r--r--src/hnbap/HNB-Identity-Info.c167
-rw-r--r--src/hnbap/HNB-Identity.c74
-rw-r--r--src/hnbap/HNB-Location-Information.c84
-rw-r--r--src/hnbap/HNB-RNL-Identity.c63
-rw-r--r--src/hnbap/HNBAP-PDU.c83
-rw-r--r--src/hnbap/HNBCapacity.c166
-rw-r--r--src/hnbap/HNBConfigInfo.c84
-rw-r--r--src/hnbap/HNBConfigTransferRequest.c146
-rw-r--r--src/hnbap/HNBConfigTransferResponse.c146
-rw-r--r--src/hnbap/HNBConfigurationInformationMissing.c74
-rw-r--r--src/hnbap/HNBConfigurationInformationProvided.c104
-rw-r--r--src/hnbap/HNBDe-Register.c146
-rw-r--r--src/hnbap/HNBRegisterAccept.c146
-rw-r--r--src/hnbap/HNBRegisterReject.c146
-rw-r--r--src/hnbap/HNBRegisterRequest.c146
-rw-r--r--src/hnbap/IE-Extensions.c60
-rw-r--r--src/hnbap/IE.c82
-rw-r--r--src/hnbap/IMEI.c172
-rw-r--r--src/hnbap/IMSI.c167
-rw-r--r--src/hnbap/IMSIDS41.c167
-rw-r--r--src/hnbap/IMSIESN.c72
-rw-r--r--src/hnbap/IP-Address.c139
-rw-r--r--src/hnbap/InitiatingMessage.c82
-rw-r--r--src/hnbap/Ipv4Address.c167
-rw-r--r--src/hnbap/Ipv6Address.c167
-rw-r--r--src/hnbap/Iurh-Signalling-TNL-AddressList.c60
-rw-r--r--src/hnbap/LAC.c167
-rw-r--r--src/hnbap/LAI.c72
-rw-r--r--src/hnbap/MacroCellID.c73
-rw-r--r--src/hnbap/MacroCoverageInformation.c74
-rw-r--r--src/hnbap/Makefile.am250
-rw-r--r--src/hnbap/MuxPortNumber.c166
-rw-r--r--src/hnbap/NeighbourCellIdentityList.c60
-rw-r--r--src/hnbap/NeighbourIdentity.c73
-rw-r--r--src/hnbap/NeighbourInfoList.c60
-rw-r--r--src/hnbap/NeighbourInfoRequestItem.c74
-rw-r--r--src/hnbap/NeighbourInfoRequestList.c60
-rw-r--r--src/hnbap/PLMNidentity.c167
-rw-r--r--src/hnbap/PSC.c172
-rw-r--r--src/hnbap/PTMSI.c172
-rw-r--r--src/hnbap/PTMSIRAI.c72
-rw-r--r--src/hnbap/Presence.c168
-rw-r--r--src/hnbap/PrivateIE-ID.c103
-rw-r--r--src/hnbap/PrivateMessage.c146
-rw-r--r--src/hnbap/ProcedureCode.c166
-rw-r--r--src/hnbap/ProtocolIE-ID.c166
-rw-r--r--src/hnbap/RAB-ID.c172
-rw-r--r--src/hnbap/RABList.c60
-rw-r--r--src/hnbap/RABListItem.c104
-rw-r--r--src/hnbap/RAC.c167
-rw-r--r--src/hnbap/RAI.c72
-rw-r--r--src/hnbap/RNC-ID.c166
-rw-r--r--src/hnbap/Registration-Cause.c170
-rw-r--r--src/hnbap/RelocationComplete.c146
-rw-r--r--src/hnbap/S-RNTIPrefix.c172
-rw-r--r--src/hnbap/SAC.c167
-rw-r--r--src/hnbap/SuccessfulOutcome.c82
-rw-r--r--src/hnbap/TMSIDS41.c167
-rw-r--r--src/hnbap/TMSILAI.c108
-rw-r--r--src/hnbap/TNLUpdateFailure.c146
-rw-r--r--src/hnbap/TNLUpdateRequest.c146
-rw-r--r--src/hnbap/TNLUpdateResponse.c146
-rw-r--r--src/hnbap/TransportInfo.c149
-rw-r--r--src/hnbap/TransportLayerAddress.c172
-rw-r--r--src/hnbap/TriggeringMessage.c168
-rw-r--r--src/hnbap/Tunnel-Information.c84
-rw-r--r--src/hnbap/TypeOfError.c168
-rw-r--r--src/hnbap/U-RNTI.c172
-rw-r--r--src/hnbap/U-RNTIQueryRequest.c146
-rw-r--r--src/hnbap/U-RNTIQueryResponse.c146
-rw-r--r--src/hnbap/UDP-Port-Number.c167
-rw-r--r--src/hnbap/UE-Capabilities.c84
-rw-r--r--src/hnbap/UE-Identity.c133
-rw-r--r--src/hnbap/UEDe-Register.c146
-rw-r--r--src/hnbap/UERegisterAccept.c146
-rw-r--r--src/hnbap/UERegisterReject.c146
-rw-r--r--src/hnbap/UERegisterRequest.c146
-rw-r--r--src/hnbap/URAIdentity.c166
-rw-r--r--src/hnbap/URAIdentityList.c60
-rw-r--r--src/hnbap/UTRANCellID.c104
-rw-r--r--src/hnbap/UnknownU-RNTIIndication.c166
-rw-r--r--src/hnbap/UnsuccessfulOutcome.c82
-rw-r--r--src/hnbap/Update-cause.c166
-rw-r--r--src/hnbap_common.c249
-rw-r--r--src/hnbgw.c541
-rw-r--r--src/hnbgw_cn.c509
-rw-r--r--src/hnbgw_hnbap.c585
-rw-r--r--src/hnbgw_ranap.c232
-rw-r--r--src/hnbgw_rua.c558
-rw-r--r--src/hnbgw_vty.c296
-rw-r--r--src/iu_client.c778
-rw-r--r--src/iu_client_vty.c121
-rw-r--r--src/iu_helpers.c72
-rw-r--r--src/ranap/Makefile.am1191
-rw-r--r--src/ranap/RANAP_APN.c166
-rw-r--r--src/ranap/RANAP_AccuracyFulfilmentIndicator.c167
-rw-r--r--src/ranap/RANAP_AllocationOrRetentionPriority.c103
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.c73
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.c73
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.c73
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.c169
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.c73
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.c169
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.c83
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.c83
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.c59
-rw-r--r--src/ranap/RANAP_Alt-RAB-Parameters.c83
-rw-r--r--src/ranap/RANAP_AlternativeRABConfigurationRequest.c165
-rw-r--r--src/ranap/RANAP_AreaIdentity.c72
-rw-r--r--src/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Ass-RAB-Parameters.c83
-rw-r--r--src/ranap/RANAP_AuthorisedPLMNs.c135
-rw-r--r--src/ranap/RANAP_AuthorisedSNAs.c59
-rw-r--r--src/ranap/RANAP_BindingID.c166
-rw-r--r--src/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.c189
-rw-r--r--src/ranap/RANAP_CGI.c93
-rw-r--r--src/ranap/RANAP_CI.c166
-rw-r--r--src/ranap/RANAP_CN-DeactivateTrace.c145
-rw-r--r--src/ranap/RANAP_CN-DomainIndicator.c165
-rw-r--r--src/ranap/RANAP_CN-ID.c165
-rw-r--r--src/ranap/RANAP_CN-InvokeTrace.c145
-rw-r--r--src/ranap/RANAP_CNMBMSLinkingInformation.c73
-rw-r--r--src/ranap/RANAP_CSFB-Information.c167
-rw-r--r--src/ranap/RANAP_CSG-Id-List.c59
-rw-r--r--src/ranap/RANAP_CSG-Id.c171
-rw-r--r--src/ranap/RANAP_CSG-Membership-Status.c167
-rw-r--r--src/ranap/RANAP_Cause.c122
-rw-r--r--src/ranap/RANAP_CauseMisc.c165
-rw-r--r--src/ranap/RANAP_CauseNAS.c165
-rw-r--r--src/ranap/RANAP_CauseNon-Standard.c165
-rw-r--r--src/ranap/RANAP_CauseProtocol.c165
-rw-r--r--src/ranap/RANAP_CauseRadioNetwork.c165
-rw-r--r--src/ranap/RANAP_CauseRadioNetworkExtension.c165
-rw-r--r--src/ranap/RANAP_CauseTransmissionNetwork.c165
-rw-r--r--src/ranap/RANAP_Cell-Access-Mode.c165
-rw-r--r--src/ranap/RANAP_Cell-Capacity-Class-Value.c165
-rw-r--r--src/ranap/RANAP_Cell-Id.c165
-rw-r--r--src/ranap/RANAP_CellBased.c73
-rw-r--r--src/ranap/RANAP_CellIdList.c59
-rw-r--r--src/ranap/RANAP_CellLoadInformation.c103
-rw-r--r--src/ranap/RANAP_CellLoadInformationGroup.c93
-rw-r--r--src/ranap/RANAP_CellType.c171
-rw-r--r--src/ranap/RANAP_ChosenEncryptionAlgorithm.c157
-rw-r--r--src/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.c157
-rw-r--r--src/ranap/RANAP_ClassmarkInformation2.c143
-rw-r--r--src/ranap/RANAP_ClassmarkInformation3.c143
-rw-r--r--src/ranap/RANAP_ClientType.c179
-rw-r--r--src/ranap/RANAP_CommonID.c145
-rw-r--r--src/ranap/RANAP_Correlation-ID.c166
-rw-r--r--src/ranap/RANAP_Criticality.c167
-rw-r--r--src/ranap/RANAP_CriticalityDiagnostics-IE-List.c145
-rw-r--r--src/ranap/RANAP_CriticalityDiagnostics.c103
-rw-r--r--src/ranap/RANAP_D-RNTI.c165
-rw-r--r--src/ranap/RANAP_DCH-ID.c165
-rw-r--r--src/ranap/RANAP_DL-GTP-PDU-SequenceNumber.c165
-rw-r--r--src/ranap/RANAP_DL-N-PDU-SequenceNumber.c165
-rw-r--r--src/ranap/RANAP_DRX-CycleLengthCoefficient.c165
-rw-r--r--src/ranap/RANAP_DSCH-ID.c165
-rw-r--r--src/ranap/RANAP_DataPDUType.c167
-rw-r--r--src/ranap/RANAP_DataVolumeList.c135
-rw-r--r--src/ranap/RANAP_DataVolumeReference.c165
-rw-r--r--src/ranap/RANAP_DataVolumeReport.c145
-rw-r--r--src/ranap/RANAP_DataVolumeReportList.c145
-rw-r--r--src/ranap/RANAP_DataVolumeReportRequest.c145
-rw-r--r--src/ranap/RANAP_DataVolumeReportingIndication.c165
-rw-r--r--src/ranap/RANAP_DeliveryOfErroneousSDU.c167
-rw-r--r--src/ranap/RANAP_DeliveryOrder.c165
-rw-r--r--src/ranap/RANAP_DeltaRAListofIdleModeUEs.c83
-rw-r--r--src/ranap/RANAP_DirectInformationTransfer.c145
-rw-r--r--src/ranap/RANAP_DirectReportingIndicator.c167
-rw-r--r--src/ranap/RANAP_DirectTransfer-IE-ContainerList.c59
-rw-r--r--src/ranap/RANAP_DirectTransfer.c145
-rw-r--r--src/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.c93
-rw-r--r--src/ranap/RANAP_E-DCH-MAC-d-Flow-ID.c165
-rw-r--r--src/ranap/RANAP_E-UTRAN-Service-Handover.c165
-rw-r--r--src/ranap/RANAP_EARFCN-Extended.c165
-rw-r--r--src/ranap/RANAP_ENB-ID.c144
-rw-r--r--src/ranap/RANAP_EUTRANFrequencies.c165
-rw-r--r--src/ranap/RANAP_EncryptionAlgorithm.c165
-rw-r--r--src/ranap/RANAP_EncryptionInformation.c83
-rw-r--r--src/ranap/RANAP_EncryptionKey.c171
-rw-r--r--src/ranap/RANAP_End-Of-CSFB.c165
-rw-r--r--src/ranap/RANAP_EnhancedRelocationCompleteConfirm.c145
-rw-r--r--src/ranap/RANAP_EnhancedRelocationCompleteFailure.c145
-rw-r--r--src/ranap/RANAP_EnhancedRelocationCompleteRequest.c145
-rw-r--r--src/ranap/RANAP_EnhancedRelocationCompleteResponse.c145
-rw-r--r--src/ranap/RANAP_EquipmentsToBeTraced.c92
-rw-r--r--src/ranap/RANAP_ErrorIndication.c145
-rw-r--r--src/ranap/RANAP_Event.c175
-rw-r--r--src/ranap/RANAP_Event1F-Parameters.c101
-rw-r--r--src/ranap/RANAP_Event1I-Parameters.c91
-rw-r--r--src/ranap/RANAP_ExtendedGuaranteedBitrate.c165
-rw-r--r--src/ranap/RANAP_ExtendedMaxBitrate.c165
-rw-r--r--src/ranap/RANAP_ExtendedRNC-ID.c165
-rw-r--r--src/ranap/RANAP_ForwardSRNS-Context.c145
-rw-r--r--src/ranap/RANAP_ForwardingIndication.c165
-rw-r--r--src/ranap/RANAP_FrameSequenceNumber.c165
-rw-r--r--src/ranap/RANAP_FrequenceLayerConvergenceFlag.c165
-rw-r--r--src/ranap/RANAP_GA-AltitudeAndDirection.c260
-rw-r--r--src/ranap/RANAP_GA-EllipsoidArc.c273
-rw-r--r--src/ranap/RANAP_GA-Point.c73
-rw-r--r--src/ranap/RANAP_GA-PointWithAltitude.c83
-rw-r--r--src/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.c173
-rw-r--r--src/ranap/RANAP_GA-PointWithUnCertainty.c113
-rw-r--r--src/ranap/RANAP_GA-PointWithUnCertaintyEllipse.c123
-rw-r--r--src/ranap/RANAP_GA-Polygon.c125
-rw-r--r--src/ranap/RANAP_GA-UncertaintyEllipse.c171
-rw-r--r--src/ranap/RANAP_GANSS-PositioningDataSet.c59
-rw-r--r--src/ranap/RANAP_GANSS-PositioningMethodAndUsage.c166
-rw-r--r--src/ranap/RANAP_GERAN-BSC-Container.c143
-rw-r--r--src/ranap/RANAP_GERAN-Cell-ID.c93
-rw-r--r--src/ranap/RANAP_GERAN-Classmark.c143
-rw-r--r--src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.c93
-rw-r--r--src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.c145
-rw-r--r--src/ranap/RANAP_GTP-TEI.c166
-rw-r--r--src/ranap/RANAP_GeographicalArea.c122
-rw-r--r--src/ranap/RANAP_GeographicalCoordinates.c312
-rw-r--r--src/ranap/RANAP_GlobalCN-ID.c71
-rw-r--r--src/ranap/RANAP_GlobalRNC-ID.c71
-rw-r--r--src/ranap/RANAP_GuaranteedBitrate.c165
-rw-r--r--src/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.c165
-rw-r--r--src/ranap/RANAP_HigherBitratesThan16MbpsFlag.c167
-rw-r--r--src/ranap/RANAP_HorizontalSpeedAndBearing.c131
-rw-r--r--src/ranap/RANAP_HorizontalVelocity.c73
-rw-r--r--src/ranap/RANAP_HorizontalVelocityWithUncertainty.c113
-rw-r--r--src/ranap/RANAP_HorizontalWithVerticalVelocity.c83
-rw-r--r--src/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.c163
-rw-r--r--src/ranap/RANAP_IE-Extensions.c59
-rw-r--r--src/ranap/RANAP_IE.c81
-rw-r--r--src/ranap/RANAP_IMEI.c166
-rw-r--r--src/ranap/RANAP_IMEIGroup.c119
-rw-r--r--src/ranap/RANAP_IMEIList.c59
-rw-r--r--src/ranap/RANAP_IMEISV.c166
-rw-r--r--src/ranap/RANAP_IMEISVGroup.c119
-rw-r--r--src/ranap/RANAP_IMEISVList.c59
-rw-r--r--src/ranap/RANAP_IMSI.c166
-rw-r--r--src/ranap/RANAP_IPMulticastAddress.c166
-rw-r--r--src/ranap/RANAP_IRAT-Measurement-Configuration.c153
-rw-r--r--src/ranap/RANAP_IRATmeasurementParameters.c113
-rw-r--r--src/ranap/RANAP_ImmediateMDT.c93
-rw-r--r--src/ranap/RANAP_IncludeVelocity.c163
-rw-r--r--src/ranap/RANAP_InformationExchangeID.c165
-rw-r--r--src/ranap/RANAP_InformationExchangeType.c167
-rw-r--r--src/ranap/RANAP_InformationRequestType.c72
-rw-r--r--src/ranap/RANAP_InformationRequested.c72
-rw-r--r--src/ranap/RANAP_InformationTransferConfirmation.c145
-rw-r--r--src/ranap/RANAP_InformationTransferFailure.c145
-rw-r--r--src/ranap/RANAP_InformationTransferID.c165
-rw-r--r--src/ranap/RANAP_InformationTransferIndication.c145
-rw-r--r--src/ranap/RANAP_InformationTransferType.c62
-rw-r--r--src/ranap/RANAP_InitialUE-Message.c145
-rw-r--r--src/ranap/RANAP_InitiatingMessage.c81
-rw-r--r--src/ranap/RANAP_IntegrityProtectionAlgorithm.c165
-rw-r--r--src/ranap/RANAP_IntegrityProtectionInformation.c83
-rw-r--r--src/ranap/RANAP_IntegrityProtectionKey.c171
-rw-r--r--src/ranap/RANAP_InterSystemInformation-TransparentContainer.c83
-rw-r--r--src/ranap/RANAP_InterSystemInformationTransferType.c62
-rw-r--r--src/ranap/RANAP_InterfacesToTraceItem.c240
-rw-r--r--src/ranap/RANAP_Iu-ReleaseCommand.c145
-rw-r--r--src/ranap/RANAP_Iu-ReleaseComplete.c145
-rw-r--r--src/ranap/RANAP_Iu-ReleaseRequest.c145
-rw-r--r--src/ranap/RANAP_IuSigConId-IE-ContainerList.c59
-rw-r--r--src/ranap/RANAP_IuSignallingConnectionIdentifier.c171
-rw-r--r--src/ranap/RANAP_IuTransportAssociation.c72
-rw-r--r--src/ranap/RANAP_JoinedMBMSBearerService-IEs.c135
-rw-r--r--src/ranap/RANAP_KeyStatus.c167
-rw-r--r--src/ranap/RANAP_L3-Information.c143
-rw-r--r--src/ranap/RANAP_LA-LIST.c135
-rw-r--r--src/ranap/RANAP_LABased.c73
-rw-r--r--src/ranap/RANAP_LAC.c166
-rw-r--r--src/ranap/RANAP_LAI-List.c59
-rw-r--r--src/ranap/RANAP_LAI.c83
-rw-r--r--src/ranap/RANAP_LAListofIdleModeUEs.c59
-rw-r--r--src/ranap/RANAP_LHN-ID.c166
-rw-r--r--src/ranap/RANAP_LastKnownServiceArea.c113
-rw-r--r--src/ranap/RANAP_LastVisitedUTRANCell-Item.c93
-rw-r--r--src/ranap/RANAP_LeftMBMSBearerService-IEs.c125
-rw-r--r--src/ranap/RANAP_Links-to-log.c169
-rw-r--r--src/ranap/RANAP_ListOF-SNAs.c59
-rw-r--r--src/ranap/RANAP_ListOfInterfacesToTrace.c59
-rw-r--r--src/ranap/RANAP_LoadValue.c165
-rw-r--r--src/ranap/RANAP_LocationRelatedDataFailure.c145
-rw-r--r--src/ranap/RANAP_LocationRelatedDataRequest.c145
-rw-r--r--src/ranap/RANAP_LocationRelatedDataRequestType.c73
-rw-r--r--src/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.c169
-rw-r--r--src/ranap/RANAP_LocationRelatedDataResponse.c145
-rw-r--r--src/ranap/RANAP_LocationReport.c145
-rw-r--r--src/ranap/RANAP_LocationReportingControl.c145
-rw-r--r--src/ranap/RANAP_LocationReportingTransferInformation.c173
-rw-r--r--src/ranap/RANAP_LoggedMDT.c83
-rw-r--r--src/ranap/RANAP_LoggingDuration.c175
-rw-r--r--src/ranap/RANAP_LoggingInterval.c179
-rw-r--r--src/ranap/RANAP_M1Report.c72
-rw-r--r--src/ranap/RANAP_M2Report.c72
-rw-r--r--src/ranap/RANAP_M4-Collection-Parameters.c83
-rw-r--r--src/ranap/RANAP_M4-Period.c179
-rw-r--r--src/ranap/RANAP_M4-Threshold.c165
-rw-r--r--src/ranap/RANAP_M4Report.c72
-rw-r--r--src/ranap/RANAP_M5-Period.c179
-rw-r--r--src/ranap/RANAP_M5Report.c72
-rw-r--r--src/ranap/RANAP_M6-Period.c189
-rw-r--r--src/ranap/RANAP_M6Report.c83
-rw-r--r--src/ranap/RANAP_M7-Period.c189
-rw-r--r--src/ranap/RANAP_M7Report.c83
-rw-r--r--src/ranap/RANAP_MBMS-PTP-RAB-ID.c171
-rw-r--r--src/ranap/RANAP_MBMSBearerServiceType.c167
-rw-r--r--src/ranap/RANAP_MBMSCNDe-Registration.c167
-rw-r--r--src/ranap/RANAP_MBMSCNDe-RegistrationRequest.c145
-rw-r--r--src/ranap/RANAP_MBMSCNDe-RegistrationResponse.c145
-rw-r--r--src/ranap/RANAP_MBMSCountingInformation.c167
-rw-r--r--src/ranap/RANAP_MBMSHCIndicator.c167
-rw-r--r--src/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.c59
-rw-r--r--src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c93
-rw-r--r--src/ranap/RANAP_MBMSLinkingInformation.c165
-rw-r--r--src/ranap/RANAP_MBMSRABEstablishmentIndication.c145
-rw-r--r--src/ranap/RANAP_MBMSRABRelease.c145
-rw-r--r--src/ranap/RANAP_MBMSRABReleaseFailure.c145
-rw-r--r--src/ranap/RANAP_MBMSRABReleaseRequest.c145
-rw-r--r--src/ranap/RANAP_MBMSRegistrationFailure.c145
-rw-r--r--src/ranap/RANAP_MBMSRegistrationRequest.c145
-rw-r--r--src/ranap/RANAP_MBMSRegistrationRequestType.c167
-rw-r--r--src/ranap/RANAP_MBMSRegistrationResponse.c145
-rw-r--r--src/ranap/RANAP_MBMSServiceArea.c143
-rw-r--r--src/ranap/RANAP_MBMSSessionDuration.c166
-rw-r--r--src/ranap/RANAP_MBMSSessionIdentity.c166
-rw-r--r--src/ranap/RANAP_MBMSSessionRepetitionNumber.c166
-rw-r--r--src/ranap/RANAP_MBMSSessionStart.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionStartFailure.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionStartResponse.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionStop.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionStopResponse.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionUpdate.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionUpdateFailure.c145
-rw-r--r--src/ranap/RANAP_MBMSSessionUpdateResponse.c145
-rw-r--r--src/ranap/RANAP_MBMSSynchronisationInformation.c93
-rw-r--r--src/ranap/RANAP_MBMSUELinkingRequest.c145
-rw-r--r--src/ranap/RANAP_MBMSUELinkingResponse.c145
-rw-r--r--src/ranap/RANAP_MDT-Activation.c169
-rw-r--r--src/ranap/RANAP_MDT-Configuration.c93
-rw-r--r--src/ranap/RANAP_MDT-PLMN-List.c59
-rw-r--r--src/ranap/RANAP_MDT-Report-Parameters.c71
-rw-r--r--src/ranap/RANAP_MDTAreaScope.c92
-rw-r--r--src/ranap/RANAP_MDTMode.c72
-rw-r--r--src/ranap/RANAP_MSISDN.c166
-rw-r--r--src/ranap/RANAP_Management-Based-MDT-Allowed.c165
-rw-r--r--src/ranap/RANAP_MaxBitrate.c165
-rw-r--r--src/ranap/RANAP_MaxSDU-Size.c165
-rw-r--r--src/ranap/RANAP_MeasBand.c173
-rw-r--r--src/ranap/RANAP_MeasurementQuantity.c169
-rw-r--r--src/ranap/RANAP_MeasurementsToActivate.c171
-rw-r--r--src/ranap/RANAP_MessageStructure.c135
-rw-r--r--src/ranap/RANAP_NAS-PDU.c143
-rw-r--r--src/ranap/RANAP_NAS-SequenceNumber.c171
-rw-r--r--src/ranap/RANAP_NAS-SynchronisationIndicator.c171
-rw-r--r--src/ranap/RANAP_NRTLoadInformationValue.c165
-rw-r--r--src/ranap/RANAP_NewBSS-To-OldBSS-Information.c143
-rw-r--r--src/ranap/RANAP_NewRAListofIdleModeUEs.c59
-rw-r--r--src/ranap/RANAP_NonSearchingIndication.c165
-rw-r--r--src/ranap/RANAP_NotEmptyRAListofIdleModeUEs.c73
-rw-r--r--src/ranap/RANAP_NumberOfIuInstances.c165
-rw-r--r--src/ranap/RANAP_NumberOfSteps.c165
-rw-r--r--src/ranap/RANAP_OMC-ID.c166
-rw-r--r--src/ranap/RANAP_Offload-RAB-Parameters-APN.c166
-rw-r--r--src/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.c166
-rw-r--r--src/ranap/RANAP_Offload-RAB-Parameters.c83
-rw-r--r--src/ranap/RANAP_OldBSS-ToNewBSS-Information.c143
-rw-r--r--src/ranap/RANAP_Out-Of-UTRAN.c165
-rw-r--r--src/ranap/RANAP_Outcome.c81
-rw-r--r--src/ranap/RANAP_Overload.c145
-rw-r--r--src/ranap/RANAP_P-TMSI.c166
-rw-r--r--src/ranap/RANAP_PDP-Type-extension.c165
-rw-r--r--src/ranap/RANAP_PDP-Type.c173
-rw-r--r--src/ranap/RANAP_PDP-TypeInformation-extension.c59
-rw-r--r--src/ranap/RANAP_PDP-TypeInformation.c59
-rw-r--r--src/ranap/RANAP_PDUType14FrameSequenceNumber.c165
-rw-r--r--src/ranap/RANAP_PLMNidentity.c166
-rw-r--r--src/ranap/RANAP_PLMNs-in-shared-network.c135
-rw-r--r--src/ranap/RANAP_Paging.c145
-rw-r--r--src/ranap/RANAP_PagingAreaID.c72
-rw-r--r--src/ranap/RANAP_PagingCause.c175
-rw-r--r--src/ranap/RANAP_PeriodicLocationInfo.c143
-rw-r--r--src/ranap/RANAP_PeriodicReportingIndicator.c167
-rw-r--r--src/ranap/RANAP_PermanentNAS-UE-ID.c62
-rw-r--r--src/ranap/RANAP_PermittedEncryptionAlgorithms.c59
-rw-r--r--src/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.c59
-rw-r--r--src/ranap/RANAP_Port-Number.c166
-rw-r--r--src/ranap/RANAP_PositionData.c83
-rw-r--r--src/ranap/RANAP_PositionDataSpecificToGERANIuMode.c143
-rw-r--r--src/ranap/RANAP_PositioningDataDiscriminator.c171
-rw-r--r--src/ranap/RANAP_PositioningDataSet.c59
-rw-r--r--src/ranap/RANAP_PositioningMethodAndUsage.c166
-rw-r--r--src/ranap/RANAP_PositioningPriority.c167
-rw-r--r--src/ranap/RANAP_Pre-emptionCapability.c165
-rw-r--r--src/ranap/RANAP_Pre-emptionVulnerability.c165
-rw-r--r--src/ranap/RANAP_Presence.c167
-rw-r--r--src/ranap/RANAP_Priority-Class-Indicator.c171
-rw-r--r--src/ranap/RANAP_PriorityLevel.c165
-rw-r--r--src/ranap/RANAP_PrivateIE-ID.c102
-rw-r--r--src/ranap/RANAP_PrivateMessage.c145
-rw-r--r--src/ranap/RANAP_ProcedureCode.c165
-rw-r--r--src/ranap/RANAP_ProtocolError-IE-ContainerList.c59
-rw-r--r--src/ranap/RANAP_ProtocolExtensionContainer.c59
-rw-r--r--src/ranap/RANAP_ProtocolExtensionField.c81
-rw-r--r--src/ranap/RANAP_ProtocolExtensionID.c165
-rw-r--r--src/ranap/RANAP_ProtocolIE-Container.c59
-rw-r--r--src/ranap/RANAP_ProtocolIE-ContainerPair.c59
-rw-r--r--src/ranap/RANAP_ProtocolIE-FieldPair.c101
-rw-r--r--src/ranap/RANAP_ProtocolIE-ID.c165
-rw-r--r--src/ranap/RANAP_ProvidedData.c62
-rw-r--r--src/ranap/RANAP_QueuingAllowed.c165
-rw-r--r--src/ranap/RANAP_RAB-AssignmentRequest.c145
-rw-r--r--src/ranap/RANAP_RAB-AssignmentResponse.c145
-rw-r--r--src/ranap/RANAP_RAB-AsymmetryIndicator.c171
-rw-r--r--src/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.c113
-rw-r--r--src/ranap/RANAP_RAB-ContextItem.c113
-rw-r--r--src/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.c145
-rw-r--r--src/ranap/RANAP_RAB-ContextList.c145
-rw-r--r--src/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.c73
-rw-r--r--src/ranap/RANAP_RAB-DataForwardingItem.c93
-rw-r--r--src/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.c145
-rw-r--r--src/ranap/RANAP_RAB-DataForwardingList.c145
-rw-r--r--src/ranap/RANAP_RAB-DataVolumeReportItem.c83
-rw-r--r--src/ranap/RANAP_RAB-DataVolumeReportList.c145
-rw-r--r--src/ranap/RANAP_RAB-DataVolumeReportRequestItem.c73
-rw-r--r--src/ranap/RANAP_RAB-DataVolumeReportRequestList.c145
-rw-r--r--src/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.c93
-rw-r--r--src/ranap/RANAP_RAB-FailedItem.c83
-rw-r--r--src/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.c145
-rw-r--r--src/ranap/RANAP_RAB-FailedList.c145
-rw-r--r--src/ranap/RANAP_RAB-ID.c171
-rw-r--r--src/ranap/RANAP_RAB-IE-ContainerList.c59
-rw-r--r--src/ranap/RANAP_RAB-IE-ContainerPairList.c59
-rw-r--r--src/ranap/RANAP_RAB-ModifyItem.c83
-rw-r--r--src/ranap/RANAP_RAB-ModifyList.c145
-rw-r--r--src/ranap/RANAP_RAB-ModifyRequest.c145
-rw-r--r--src/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_RAB-Parameter-MaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_RAB-Parameters.c183
-rw-r--r--src/ranap/RANAP_RAB-QueuedItem.c73
-rw-r--r--src/ranap/RANAP_RAB-QueuedList.c145
-rw-r--r--src/ranap/RANAP_RAB-ReleaseFailedList.c145
-rw-r--r--src/ranap/RANAP_RAB-ReleaseItem.c83
-rw-r--r--src/ranap/RANAP_RAB-ReleaseList.c146
-rw-r--r--src/ranap/RANAP_RAB-ReleaseRequest.c145
-rw-r--r--src/ranap/RANAP_RAB-ReleasedItem-IuRelComp.c93
-rw-r--r--src/ranap/RANAP_RAB-ReleasedItem.c103
-rw-r--r--src/ranap/RANAP_RAB-ReleasedList-IuRelComp.c145
-rw-r--r--src/ranap/RANAP_RAB-ReleasedList.c145
-rw-r--r--src/ranap/RANAP_RAB-RelocationReleaseItem.c73
-rw-r--r--src/ranap/RANAP_RAB-RelocationReleaseList.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.c163
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.c103
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.c103
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.c123
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-RelocReq.c153
-rw-r--r--src/ranap/RANAP_RAB-SetupItem-RelocReqAck.c93
-rw-r--r--src/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupList-RelocReq.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupList-RelocReqAck.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupOrModifiedItem.c103
-rw-r--r--src/ranap/RANAP_RAB-SetupOrModifiedList.c145
-rw-r--r--src/ranap/RANAP_RAB-SetupOrModifyItemFirst.c123
-rw-r--r--src/ranap/RANAP_RAB-SetupOrModifyItemSecond.c123
-rw-r--r--src/ranap/RANAP_RAB-SetupOrModifyList.c158
-rw-r--r--src/ranap/RANAP_RAB-SubflowCombinationBitRate.c165
-rw-r--r--src/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.c83
-rw-r--r--src/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.c145
-rw-r--r--src/ranap/RANAP_RAB-TrCH-Mapping.c59
-rw-r--r--src/ranap/RANAP_RAB-TrCH-MappingItem.c83
-rw-r--r--src/ranap/RANAP_RABDataVolumeReport.c135
-rw-r--r--src/ranap/RANAP_RABParametersList.c155
-rw-r--r--src/ranap/RANAP_RABased.c73
-rw-r--r--src/ranap/RANAP_RABs-ContextFailedtoTransferItem.c83
-rw-r--r--src/ranap/RANAP_RABs-ContextFailedtoTransferList.c145
-rw-r--r--src/ranap/RANAP_RABs-failed-to-reportItem.c83
-rw-r--r--src/ranap/RANAP_RABs-failed-to-reportList.c145
-rw-r--r--src/ranap/RANAP_RAC.c166
-rw-r--r--src/ranap/RANAP_RAI-List.c59
-rw-r--r--src/ranap/RANAP_RAI.c83
-rw-r--r--src/ranap/RANAP_RAListofIdleModeUEs.c233
-rw-r--r--src/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.c59
-rw-r--r--src/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.c145
-rw-r--r--src/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.c145
-rw-r--r--src/ranap/RANAP_RANAP-PDU.c92
-rw-r--r--src/ranap/RANAP_RANAP-RelocationInformation.c145
-rw-r--r--src/ranap/RANAP_RAT-Type.c167
-rw-r--r--src/ranap/RANAP_RAofIdleModeUEs.c59
-rw-r--r--src/ranap/RANAP_RIM-Transfer.c83
-rw-r--r--src/ranap/RANAP_RIMInformation.c143
-rw-r--r--src/ranap/RANAP_RIMRoutingAddress.c82
-rw-r--r--src/ranap/RANAP_RNC-ID.c165
-rw-r--r--src/ranap/RANAP_RNCTraceInformation.c252
-rw-r--r--src/ranap/RANAP_RNSAPRelocationParameters.c103
-rw-r--r--src/ranap/RANAP_RRC-Container.c143
-rw-r--r--src/ranap/RANAP_RSRQ-Extension.c165
-rw-r--r--src/ranap/RANAP_RSRQ-Type.c71
-rw-r--r--src/ranap/RANAP_RSRVCC-HO-Indication.c165
-rw-r--r--src/ranap/RANAP_RSRVCC-Information.c150
-rw-r--r--src/ranap/RANAP_RSRVCC-Operation-Possible.c165
-rw-r--r--src/ranap/RANAP_RTLoadValue.c165
-rw-r--r--src/ranap/RANAP_RateControlAllowed.c165
-rw-r--r--src/ranap/RANAP_RedirectAttemptFlag.c143
-rw-r--r--src/ranap/RANAP_RedirectionCompleted.c165
-rw-r--r--src/ranap/RANAP_RedirectionIndication.c145
-rw-r--r--src/ranap/RANAP_RejectCauseValue.c179
-rw-r--r--src/ranap/RANAP_RelocationCancel.c145
-rw-r--r--src/ranap/RANAP_RelocationCancelAcknowledge.c145
-rw-r--r--src/ranap/RANAP_RelocationCommand.c145
-rw-r--r--src/ranap/RANAP_RelocationComplete.c145
-rw-r--r--src/ranap/RANAP_RelocationDetect.c145
-rw-r--r--src/ranap/RANAP_RelocationFailure.c145
-rw-r--r--src/ranap/RANAP_RelocationPreparationFailure.c145
-rw-r--r--src/ranap/RANAP_RelocationRequest.c145
-rw-r--r--src/ranap/RANAP_RelocationRequestAcknowledge.c145
-rw-r--r--src/ranap/RANAP_RelocationRequired.c145
-rw-r--r--src/ranap/RANAP_RelocationRequirement.c169
-rw-r--r--src/ranap/RANAP_RelocationType.c167
-rw-r--r--src/ranap/RANAP_RepetitionNumber0.c165
-rw-r--r--src/ranap/RANAP_RepetitionNumber1.c165
-rw-r--r--src/ranap/RANAP_ReportAmount.c179
-rw-r--r--src/ranap/RANAP_ReportArea.c167
-rw-r--r--src/ranap/RANAP_ReportChangeOfSAI.c165
-rw-r--r--src/ranap/RANAP_ReportInterval.c193
-rw-r--r--src/ranap/RANAP_RequestType.c113
-rw-r--r--src/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.c59
-rw-r--r--src/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.c59
-rw-r--r--src/ranap/RANAP_Requested-RAB-Parameter-Values.c83
-rw-r--r--src/ranap/RANAP_RequestedGANSSAssistanceData.c166
-rw-r--r--src/ranap/RANAP_RequestedGPSAssistanceData.c166
-rw-r--r--src/ranap/RANAP_RequestedLocationRelatedDataType.c179
-rw-r--r--src/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.c59
-rw-r--r--src/ranap/RANAP_RequestedMulticastServiceList.c59
-rw-r--r--src/ranap/RANAP_Reset.c145
-rw-r--r--src/ranap/RANAP_ResetAcknowledge.c145
-rw-r--r--src/ranap/RANAP_ResetResource.c145
-rw-r--r--src/ranap/RANAP_ResetResourceAckItem.c73
-rw-r--r--src/ranap/RANAP_ResetResourceAckList.c146
-rw-r--r--src/ranap/RANAP_ResetResourceAcknowledge.c145
-rw-r--r--src/ranap/RANAP_ResetResourceItem.c73
-rw-r--r--src/ranap/RANAP_ResetResourceList.c146
-rw-r--r--src/ranap/RANAP_ResidualBitErrorRatio.c143
-rw-r--r--src/ranap/RANAP_ResponseTime.c167
-rw-r--r--src/ranap/RANAP_SAC.c166
-rw-r--r--src/ranap/RANAP_SAI.c93
-rw-r--r--src/ranap/RANAP_SAPI.c167
-rw-r--r--src/ranap/RANAP_SDU-ErrorRatio.c143
-rw-r--r--src/ranap/RANAP_SDU-FormatInformationParameterItem.c83
-rw-r--r--src/ranap/RANAP_SDU-FormatInformationParameters.c59
-rw-r--r--src/ranap/RANAP_SDU-ParameterItem.c103
-rw-r--r--src/ranap/RANAP_SDU-Parameters.c59
-rw-r--r--src/ranap/RANAP_SNA-Access-Information.c73
-rw-r--r--src/ranap/RANAP_SNAC.c165
-rw-r--r--src/ranap/RANAP_SRB-ID.c165
-rw-r--r--src/ranap/RANAP_SRB-TrCH-Mapping.c59
-rw-r--r--src/ranap/RANAP_SRB-TrCH-MappingItem.c83
-rw-r--r--src/ranap/RANAP_SRNS-ContextRequest.c145
-rw-r--r--src/ranap/RANAP_SRNS-ContextResponse.c145
-rw-r--r--src/ranap/RANAP_SRNS-DataForwardCommand.c145
-rw-r--r--src/ranap/RANAP_SRVCC-CSKeysRequest.c145
-rw-r--r--src/ranap/RANAP_SRVCC-CSKeysResponse.c145
-rw-r--r--src/ranap/RANAP_SRVCC-HO-Indication.c167
-rw-r--r--src/ranap/RANAP_SRVCC-Information.c109
-rw-r--r--src/ranap/RANAP_SRVCC-Operation-Possible.c165
-rw-r--r--src/ranap/RANAP_SecurityModeCommand.c145
-rw-r--r--src/ranap/RANAP_SecurityModeComplete.c145
-rw-r--r--src/ranap/RANAP_SecurityModeReject.c145
-rw-r--r--src/ranap/RANAP_Service-Handover.c169
-rw-r--r--src/ranap/RANAP_Session-Re-establishment-Indicator.c165
-rw-r--r--src/ranap/RANAP_SessionUpdateID.c165
-rw-r--r--src/ranap/RANAP_Shared-Network-Information.c73
-rw-r--r--src/ranap/RANAP_SignallingIndication.c165
-rw-r--r--src/ranap/RANAP_Source-ToTarget-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_SourceCellID.c72
-rw-r--r--src/ranap/RANAP_SourceID.c72
-rw-r--r--src/ranap/RANAP_SourceRNC-ID.c83
-rw-r--r--src/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.c183
-rw-r--r--src/ranap/RANAP_SourceStatisticsDescriptor.c167
-rw-r--r--src/ranap/RANAP_SourceUTRANCellID.c83
-rw-r--r--src/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_SubflowSDU-Size.c165
-rw-r--r--src/ranap/RANAP_SubscriberProfileIDforRFP.c165
-rw-r--r--src/ranap/RANAP_SuccessfulOutcome.c81
-rw-r--r--src/ranap/RANAP_SupportedBitrate.c165
-rw-r--r--src/ranap/RANAP_SupportedRAB-ParameterBitrateList.c59
-rw-r--r--src/ranap/RANAP_TAC.c166
-rw-r--r--src/ranap/RANAP_TAI.c83
-rw-r--r--src/ranap/RANAP_TBCD-STRING.c143
-rw-r--r--src/ranap/RANAP_TMGI.c114
-rw-r--r--src/ranap/RANAP_TMSI.c166
-rw-r--r--src/ranap/RANAP_TNLInformationEnhRelInfoReq.c83
-rw-r--r--src/ranap/RANAP_TNLInformationEnhRelInfoRes.c83
-rw-r--r--src/ranap/RANAP_Target-ToSource-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_TargetCellId.c165
-rw-r--r--src/ranap/RANAP_TargetENB-ID.c93
-rw-r--r--src/ranap/RANAP_TargetID.c82
-rw-r--r--src/ranap/RANAP_TargetRNC-ID.c93
-rw-r--r--src/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.c83
-rw-r--r--src/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.c143
-rw-r--r--src/ranap/RANAP_TemporaryUE-ID.c72
-rw-r--r--src/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.c165
-rw-r--r--src/ranap/RANAP_Time-UE-StayedInCell.c165
-rw-r--r--src/ranap/RANAP_TimeToMBMSDataTransfer.c166
-rw-r--r--src/ranap/RANAP_TimingDifferenceULDL.c166
-rw-r--r--src/ranap/RANAP_TrCH-ID-List.c59
-rw-r--r--src/ranap/RANAP_TrCH-ID.c93
-rw-r--r--src/ranap/RANAP_TraceDepth.c169
-rw-r--r--src/ranap/RANAP_TraceInformation.c93
-rw-r--r--src/ranap/RANAP_TracePropagationParameters.c93
-rw-r--r--src/ranap/RANAP_TraceRecordingSessionInformation.c83
-rw-r--r--src/ranap/RANAP_TraceRecordingSessionReference.c165
-rw-r--r--src/ranap/RANAP_TraceReference.c166
-rw-r--r--src/ranap/RANAP_TraceType.c166
-rw-r--r--src/ranap/RANAP_TrafficClass.c171
-rw-r--r--src/ranap/RANAP_TrafficHandlingPriority.c165
-rw-r--r--src/ranap/RANAP_TransferDelay.c165
-rw-r--r--src/ranap/RANAP_TransportLayerAddress.c171
-rw-r--r--src/ranap/RANAP_TransportLayerInformation.c83
-rw-r--r--src/ranap/RANAP_TriggerID.c166
-rw-r--r--src/ranap/RANAP_TriggeringMessage.c169
-rw-r--r--src/ranap/RANAP_TunnelInformation.c83
-rw-r--r--src/ranap/RANAP_TypeOfError.c167
-rw-r--r--src/ranap/RANAP_UE-AggregateMaximumBitRate.c73
-rw-r--r--src/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.c165
-rw-r--r--src/ranap/RANAP_UE-AggregateMaximumBitRateUplink.c165
-rw-r--r--src/ranap/RANAP_UE-History-Information.c143
-rw-r--r--src/ranap/RANAP_UE-ID.c82
-rw-r--r--src/ranap/RANAP_UESBI-Iu.c83
-rw-r--r--src/ranap/RANAP_UESBI-IuA.c171
-rw-r--r--src/ranap/RANAP_UESBI-IuB.c171
-rw-r--r--src/ranap/RANAP_UESpecificInformationIndication.c145
-rw-r--r--src/ranap/RANAP_UL-GTP-PDU-SequenceNumber.c165
-rw-r--r--src/ranap/RANAP_UL-N-PDU-SequenceNumber.c165
-rw-r--r--src/ranap/RANAP_UP-ModeVersions.c171
-rw-r--r--src/ranap/RANAP_UPInformation.c123
-rw-r--r--src/ranap/RANAP_UPInitialisationFrame.c143
-rw-r--r--src/ranap/RANAP_USCH-ID.c165
-rw-r--r--src/ranap/RANAP_UTRAN-CellID.c83
-rw-r--r--src/ranap/RANAP_UeRadioCapabilityMatchRequest.c145
-rw-r--r--src/ranap/RANAP_UeRadioCapabilityMatchResponse.c145
-rw-r--r--src/ranap/RANAP_UnsuccessfulLinking-IEs.c135
-rw-r--r--src/ranap/RANAP_UnsuccessfulOutcome.c81
-rw-r--r--src/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.c161
-rw-r--r--src/ranap/RANAP_UplinkInformationExchangeFailure.c145
-rw-r--r--src/ranap/RANAP_UplinkInformationExchangeRequest.c145
-rw-r--r--src/ranap/RANAP_UplinkInformationExchangeResponse.c145
-rw-r--r--src/ranap/RANAP_UserPlaneInformation.c83
-rw-r--r--src/ranap/RANAP_UserPlaneMode.c167
-rw-r--r--src/ranap/RANAP_VelocityEstimate.c92
-rw-r--r--src/ranap/RANAP_VerticalAccuracyCode.c165
-rw-r--r--src/ranap/RANAP_VerticalSpeedDirection.c165
-rw-r--r--src/ranap/RANAP_VerticalVelocity.c101
-rw-r--r--src/ranap/RANAP_VoiceSupportMatchIndicator.c167
-rw-r--r--src/ranap_common.c583
-rw-r--r--src/ranap_common_cn.c546
-rw-r--r--src/ranap_msg_factory.c928
-rwxr-xr-xsrc/regen-common-includes.sh3
-rw-r--r--src/rua/Makefile.am89
-rw-r--r--src/rua/RUA_Ansi-41-IDNNS.c171
-rw-r--r--src/rua/RUA_CN-DomainIndicator.c165
-rw-r--r--src/rua/RUA_CSGMembershipStatus.c167
-rw-r--r--src/rua/RUA_Cause.c92
-rw-r--r--src/rua/RUA_CauseMisc.c171
-rw-r--r--src/rua/RUA_CauseProtocol.c177
-rw-r--r--src/rua/RUA_CauseRadioNetwork.c171
-rw-r--r--src/rua/RUA_CauseTransport.c167
-rw-r--r--src/rua/RUA_Connect.c145
-rw-r--r--src/rua/RUA_ConnectionlessTransfer.c145
-rw-r--r--src/rua/RUA_Context-ID.c171
-rw-r--r--src/rua/RUA_Criticality.c167
-rw-r--r--src/rua/RUA_CriticalityDiagnostics-IE-List.c145
-rw-r--r--src/rua/RUA_CriticalityDiagnostics.c103
-rw-r--r--src/rua/RUA_DirectTransfer.c145
-rw-r--r--src/rua/RUA_Disconnect.c145
-rw-r--r--src/rua/RUA_ErrorIndication.c145
-rw-r--r--src/rua/RUA_Establishment-Cause.c167
-rw-r--r--src/rua/RUA_Gsm-map-IDNNS.c636
-rw-r--r--src/rua/RUA_IE-Extensions.c59
-rw-r--r--src/rua/RUA_IE.c81
-rw-r--r--src/rua/RUA_InitiatingMessage.c81
-rw-r--r--src/rua/RUA_IntraDomainNasNodeSelector.c337
-rw-r--r--src/rua/RUA_Presence.c167
-rw-r--r--src/rua/RUA_PrivateIE-ID.c102
-rw-r--r--src/rua/RUA_PrivateMessage.c145
-rw-r--r--src/rua/RUA_ProcedureCode.c165
-rw-r--r--src/rua/RUA_ProtocolIE-ID.c165
-rw-r--r--src/rua/RUA_RANAP-Message.c143
-rw-r--r--src/rua/RUA_RUA-PDU.c82
-rw-r--r--src/rua/RUA_RoutingParameter.c171
-rw-r--r--src/rua/RUA_SuccessfulOutcome.c81
-rw-r--r--src/rua/RUA_TriggeringMessage.c167
-rw-r--r--src/rua/RUA_TypeOfError.c167
-rw-r--r--src/rua/RUA_UnsuccessfulOutcome.c81
-rw-r--r--src/rua_common.c226
-rw-r--r--src/rua_msg_factory.c154
-rw-r--r--src/tests/Makefile.am75
-rw-r--r--src/tests/dummy_cn_sua.c386
-rw-r--r--src/tests/hnb-test-layers.h21
-rw-r--r--src/tests/hnb-test-ranap.c85
-rw-r--r--src/tests/hnb-test-rua.c40
-rw-r--r--src/tests/hnb-test.c1012
-rw-r--r--src/tests/hnb-test.h80
-rw-r--r--src/tests/test-helpers.c215
-rw-r--r--src/tests/test-helpers.err2
-rw-r--r--src/tests/test-helpers.ok25
-rw-r--r--src/tests/test-hnbap.c180
-rw-r--r--src/tests/test-hnbap.ok4
-rw-r--r--src/tests/test-ranap.c202
-rw-r--r--src/tests/test-ranap.ok222
-rw-r--r--src/tests/test_common.c87
-rw-r--r--src/tests/test_common.h3
-rw-r--r--src/tests/testsuite.at22
1637 files changed, 173775 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e1430f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
+*.o
+*.lo
+*.la
+*.a
+*.so
+*~
+.*
+autom4te.cache
+aclocal.m4
+config.guess
+config.log
+config.status
+config.sub
+configure
+compile
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+Makefile.in
+Makefile
+Makefile.am.sample
+src/tests/atconfig
+src/tests/dummy-cn
+src/tests/hnb-test
+src/tests/package.m4
+src/tests/test-helpers
+src/tests/test-hnbap
+src/tests/test-ranap
+src/tests/testsuite
+src/tests/testsuite.dir
+src/tests/testsuite.log
+src/osmo-hnbgw
+tags
+libosmo-ranap.pc
+m4
+gen_hnbap.stamp
+gen_rua.stamp
+gen_ranap.stamp
+include/osmocom/hnbap/hnbap_ies_defs.h
+include/osmocom/rua/rua_ies_defs.h
+include/osmocom/ranap/ranap_ies_defs.h
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..b8af595
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,3 @@
+[gerrit]
+host=gerrit.osmocom.org
+project=osmo-iuh
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..67445ee
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,16 @@
+AUTOMAKE_OPTIONS = foreign dist-bzip2
+
+SUBDIRS = src include doc
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libosmo-ranap.pc
+
+EXTRA_DIST = asn1 .version README.md
+
+@RELMAKE@
+
+BUILT_SOURCES = $(top_srcdir)/.version
+$(top_srcdir)/.version:
+ echo $(VERSION) > $@-t && mv $@-t $@
+dist-hook:
+ echo $(VERSION) > $(distdir)/.tarball-version
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..edbde9f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,103 @@
+osmo-iuh - Osmocom Iuh and HNB-GW implementation
+================================================
+
+This repository contains a C-language implementation of the 3GPP Iuh
+interface, together with a HNB-GW (Home NodeB Gateway). You can use it
+to interface Iuh-speaking femtocells/small cells to Iu-speaking MSCs and
+SGSNs.
+
+It is part of the [Osmocom](https://osmocom.org/) Open Source Mobile
+Communications project.
+
+Homepage
+--------
+
+The official homepage of the project is
+https://osmocom.org/projects/osmohnbgw/wiki
+
+GIT Repository
+--------------
+
+You can clone from the official libosmocore.git repository using
+
+ git clone git://git.osmocom.org/osmo-iuh.git
+
+There is a cgit interface at http://git.osmocom.org/osmo-iuh/
+
+Documentation
+-------------
+
+There is currently no documentation beyond the wiki available on the
+homepage. We would love to see somebody contributing a manual that can
+be part of the osmo-gsm-manuals suite.
+
+Mailing List
+------------
+
+Discussions related to osmo-iuh are happening on the
+openbsc@lists.osmocom.org mailing list, please see
+https://lists.osmocom.org/mailman/listinfo/openbsc for subscription
+options and the list archive.
+
+Please observe the [Osmocom Mailing List
+Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules)
+when posting.
+
+Contributing
+------------
+
+Our coding standards are described at
+https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards
+
+We us a gerrit based patch submission/review process for managing
+contributions. Please see
+https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for
+more details
+
+The current patch queue for osmo-iuh can be seen at
+https://gerrit.osmocom.org/#/q/project:osmo-iuh+status:open
+
+
+Building
+--------
+
+It is generally best to check the wiki for the most up-to-date build
+instructions.
+
+As external library dependencies, you will need
+* libosmocore from git://git.osmocom.org/libosmocore
+* libasn1c from git://git.osmocom.org/libasn1c
+* libsctp-dev (this is the package name in Debian)
+* libosmo-netif from git://git.osmocom.org/libosmo-netif (sysmocom/sctp branch)
+* libosmo-sccp from git://git.osmocom.org/libosmo-sccp (sysmocom/iu branch)
+
+To bootstrap the build, in the root directory, run:
+
+ autoreconf --install
+
+After that, run the usual
+
+ ./configure [options]
+ make
+ [sudo] make install
+
+Using
+-----
+
+Note: osmo-iuh just left very active development (December 2015, January
+2016), so your mileage may vary.
+
+If you run the 'hnbgw' executable, it will open a listening SCTP socket
+and wait for incoming Iuh connections. It will accept any
+HNB-REGISTER-REQUEST, and it will establish Iu (over SUA) connections
+towards the MSC and SGSN.
+
+Regenerating C code from ASN.1 source
+-------------------------------------
+
+In order to re-generate the C source code from the ASN.1 source,
+you will need a modified asn1c which has the following features:
+* APER support (the patch from Eurecom, or its forward-ported version
+ from the aper branch of git://git.osmocom.org/asn1c)
+* support for prefixing the generated types (aper-prefix branch of
+ git://git.osmocom.org/asn1c)
diff --git a/TODO-RELEASE b/TODO-RELEASE
new file mode 100644
index 0000000..d0852fc
--- /dev/null
+++ b/TODO-RELEASE
@@ -0,0 +1,9 @@
+# When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install
+# according to https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
+# In short:
+# LIBVERSION=c:r:a
+# If the library source code has changed at all since the last update, then increment revision: c:r + 1:a.
+# If any interfaces have been added, removed, or changed since the last update: c + 1:0:0.
+# If any interfaces have been added since the last public release: c:r:a + 1.
+# If any interfaces have been removed or changed since the last public release: c:r:0.
+#library what description / commit summary line
diff --git a/asn1/asn1enum.pl b/asn1/asn1enum.pl
new file mode 100755
index 0000000..8584e84
--- /dev/null
+++ b/asn1/asn1enum.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+use strict;
+
+# small script to extract the constants from
+# {HNBAP,RUA,RANAP}-Constants.asn and print them in an ASN.1 format that
+# will trigger asn1c to generate associated enums in C.
+#
+# Usage: ./asn1enum.pl < HNBAP-Constants.asn
+
+my $l;
+my %h;
+
+while ($l = <STDIN>) {
+ chomp($l);
+ if ($l =~ /^(\S+)\s+(\S+)\s+::=\s+(\d+)/) {
+ $h{$2}{$3} = $1;
+ }
+}
+
+foreach my $k (keys %h) {
+ if ($k eq 'INTEGER') {
+ next;
+ }
+ printf("%s ::= INTEGER {\n", $k);
+ foreach my $r (sort { $a <=> $b } keys $h{$k}) {
+ printf("\t%s(%d),\n", $h{$k}{$r}, $r);
+ }
+ printf("}\n");
+}
diff --git a/asn1/asn1msgs.pl b/asn1/asn1msgs.pl
new file mode 100755
index 0000000..4b07a3b
--- /dev/null
+++ b/asn1/asn1msgs.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl -w
+#use strict;
+
+# small script to extract the types used in elementary procedures
+# {HNBAP,RUA,RANAP}-PDU-Descriptions.asn and print them in an ASN.1
+# format that will trigger asn1c to generate associated structures
+#
+# Usage: ./asn1enum.pl < HNBAP-PDU-Descriptions.asn
+
+my $l;
+my @a;
+
+while ($l = <STDIN>) {
+ chomp($l);
+ if ($l =~ /^\s*(\S+\s*\S+)\s+(\S+)\s*$/) {
+ if ($1 eq 'INITIATING MESSAGE' ||
+ $1 eq 'SUCCESSFUL OUTCOME' ||
+ $1 eq 'UNSUCCESSFUL OUTCOME' ||
+ $1 eq 'OUTCOME') {
+ push(@a, $2);
+ }
+ }
+}
+
+foreach my $k (@a) {
+ my $lk = $k;
+ my $firstchar = substr($lk, 0, 1);
+ if ($firstchar =~ /^[A-Z]/) {
+ substr($lk, 0, 1, lc($firstchar));
+ }
+ printf("%s ::= SEQUENCE {\n", $k);
+ printf(" %s-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,\n", $lk);
+ printf(" ...\n");
+ printf("}\n\n");
+}
diff --git a/asn1/hnbap/HNBAP-CommonDataTypes.asn b/asn1/hnbap/HNBAP-CommonDataTypes.asn
new file mode 100644
index 0000000..9ef9745
--- /dev/null
+++ b/asn1/hnbap/HNBAP-CommonDataTypes.asn
@@ -0,0 +1,102 @@
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+HNBAP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs INTEGER ::= 65535
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Common Data Types
+--
+-- **************************************************************
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID ::= CHOICE {
+ local INTEGER (0..65535),
+ global OBJECT IDENTIFIER
+}
+
+
+ProcedureCode ::= INTEGER {
+ id-HNBRegister(1),
+ id-HNBDe-Register(2),
+ id-UERegister(3),
+ id-UEDe-Register(4),
+ id-ErrorIndication(5),
+ id-privateMessage(6),
+ id-CSGMembershipUpdate(7),
+ id-TNLUpdate(9),
+ id-HNBConfigTransfer(10),
+ id-RelocationComplete(11),
+ id-U-RNTIQuery(14)
+} (0..255)
+
+
+ProtocolIE-ID ::= INTEGER {
+ id-Cause(1),
+ id-CriticalityDiagnostics(2),
+ id-HNB-Identity(3),
+ id-Context-ID(4),
+ id-UE-Identity(5),
+ id-LAC(6),
+ id-RAC(7),
+ id-HNB-Location-Information(8),
+ id-PLMNidentity(9),
+ id-SAC(10),
+ id-CellIdentity(11),
+ id-Registration-Cause(12),
+ id-UE-Capabilities(13),
+ id-RNC-ID(14),
+ id-CSG-ID(15),
+ id-BackoffTimer(16),
+ id-HNB-Internet-Information(17),
+ id-HNB-Cell-Access-Mode(18),
+ id-MuxPortNumber(19),
+ id-Service-Area-For-Broadcast(20),
+ id-CSGMembershipStatus(21),
+ id-RABList(22),
+ id-HNBConfigInfo(23),
+ id-AccessResult(25),
+ id-Update-cause(26),
+ id-NeighbourInfoList(27),
+ id-NeighbourInfoRequestList(28),
+ id-Iurh-Signalling-TNL-Address(29),
+ id-PSC(30),
+ id-HNB-Cell-Identifier(31),
+ id-Tunnel-Information(41),
+ id-CELL-FACHMobilitySupport(42),
+ id-S-RNTIPrefix(43),
+ id-URAIdentity(44),
+ id-NeighbourIdentity(45),
+ id-HNBCapacity(46),
+ id-NeighbourCellIdentityList(47),
+ id-AdditionalNeighbourInfoList(48),
+ id-U-RNTI(49),
+ id-UnknownU-RNTIIndication(50),
+ id-HNB-GWResponse(51),
+ id-URAIdentityList(52)
+} (0..maxProtocolIEs)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome }
+
+END
diff --git a/asn1/hnbap/HNBAP-Constants.asn b/asn1/hnbap/HNBAP-Constants.asn
new file mode 100644
index 0000000..8603703
--- /dev/null
+++ b/asn1/hnbap/HNBAP-Constants.asn
@@ -0,0 +1,98 @@
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+HNBAP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+FROM HNBAP-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+id-HNBRegister ProcedureCode ::= 1
+id-HNBDe-Register ProcedureCode ::= 2
+id-UERegister ProcedureCode ::= 3
+id-UEDe-Register ProcedureCode ::= 4
+id-ErrorIndication ProcedureCode ::= 5
+id-privateMessage ProcedureCode ::= 6
+id-CSGMembershipUpdate ProcedureCode ::= 7
+id-TNLUpdate ProcedureCode ::= 9
+id-HNBConfigTransfer ProcedureCode ::= 10
+id-RelocationComplete ProcedureCode ::= 11
+id-U-RNTIQuery ProcedureCode ::= 14
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+maxNrOfErrors INTEGER ::= 256
+maxnoofRABs INTEGER ::= 256
+maxnoofAdditionalNeighbours INTEGER ::= 128
+maxnoofURAIdentities INTEGER ::= 8
+maxnoofNeighbours INTEGER ::= 32
+maxnoofIurhAddresses INTEGER ::= 3
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-Cause ProtocolIE-ID ::= 1
+id-CriticalityDiagnostics ProtocolIE-ID ::= 2
+id-HNB-Identity ProtocolIE-ID ::= 3
+id-Context-ID ProtocolIE-ID ::= 4
+id-UE-Identity ProtocolIE-ID ::= 5
+id-LAC ProtocolIE-ID ::= 6
+id-RAC ProtocolIE-ID ::= 7
+id-HNB-Location-Information ProtocolIE-ID ::= 8
+id-PLMNidentity ProtocolIE-ID ::= 9
+id-SAC ProtocolIE-ID ::= 10
+id-CellIdentity ProtocolIE-ID ::= 11
+id-Registration-Cause ProtocolIE-ID ::= 12
+id-UE-Capabilities ProtocolIE-ID ::= 13
+id-RNC-ID ProtocolIE-ID ::= 14
+id-CSG-ID ProtocolIE-ID ::= 15
+id-BackoffTimer ProtocolIE-ID ::= 16
+id-HNB-Internet-Information ProtocolIE-ID ::= 17
+id-HNB-Cell-Access-Mode ProtocolIE-ID ::= 18
+id-MuxPortNumber ProtocolIE-ID ::= 19
+id-Service-Area-For-Broadcast ProtocolIE-ID ::= 20
+id-CSGMembershipStatus ProtocolIE-ID ::= 21
+id-RABList ProtocolIE-ID ::= 22
+id-HNBConfigInfo ProtocolIE-ID ::= 23
+id-AccessResult ProtocolIE-ID ::= 25
+id-Update-cause ProtocolIE-ID ::= 26
+id-NeighbourInfoList ProtocolIE-ID ::= 27
+id-NeighbourInfoRequestList ProtocolIE-ID ::= 28
+id-Iurh-Signalling-TNL-Address ProtocolIE-ID ::= 29
+id-PSC ProtocolIE-ID ::= 30
+id-HNB-Cell-Identifier ProtocolIE-ID ::= 31
+id-Tunnel-Information ProtocolIE-ID ::= 41
+id-CELL-FACHMobilitySupport ProtocolIE-ID ::= 42
+id-S-RNTIPrefix ProtocolIE-ID ::= 43
+id-URAIdentity ProtocolIE-ID ::= 44
+id-NeighbourIdentity ProtocolIE-ID ::= 45
+id-HNBCapacity ProtocolIE-ID ::= 46
+id-NeighbourCellIdentityList ProtocolIE-ID ::= 47
+id-AdditionalNeighbourInfoList ProtocolIE-ID ::= 48
+id-U-RNTI ProtocolIE-ID ::= 49
+id-UnknownU-RNTIIndication ProtocolIE-ID ::= 50
+id-HNB-GWResponse ProtocolIE-ID ::= 51
+id-URAIdentityList ProtocolIE-ID ::= 52
+
+END
diff --git a/asn1/hnbap/HNBAP-Containers.asn b/asn1/hnbap/HNBAP-Containers.asn
new file mode 100644
index 0000000..91aad6e
--- /dev/null
+++ b/asn1/hnbap/HNBAP-Containers.asn
@@ -0,0 +1,149 @@
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+HNBAP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ Presence,
+ PrivateIE-ID,
+ ProtocolIE-ID,
+ maxPrivateIEs,
+ maxProtocolExtensions,
+ maxProtocolIEs
+FROM HNBAP-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+HNBAP-PROTOCOL-IES ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+HNBAP-PROTOCOL-EXTENSION ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Extension,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ EXTENSION &Extension
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+HNBAP-PRIVATE-IES ::= CLASS {
+ &id PrivateIE-ID,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Single-Container {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {HNBAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id HNBAP-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality HNBAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value HNBAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, HNBAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-Container {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+ SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+ ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+ id HNBAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
+ criticality HNBAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
+ extensionValue HNBAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {HNBAP-PRIVATE-IES : IEsSetParam } ::=
+ SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+ PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {HNBAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+ id HNBAP-PRIVATE-IES.&id ({IEsSetParam}),
+ criticality HNBAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
+ value HNBAP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
+}
+
+END
diff --git a/asn1/hnbap/HNBAP-IEs.asn b/asn1/hnbap/HNBAP-IEs.asn
new file mode 100644
index 0000000..775d25b
--- /dev/null
+++ b/asn1/hnbap/HNBAP-IEs.asn
@@ -0,0 +1,485 @@
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+HNBAP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxNrOfErrors,
+ maxnoofRABs,
+ maxnoofNeighbours,
+ maxnoofIurhAddresses,
+ maxnoofAdditionalNeighbours,
+ maxnoofURAIdentities,
+ id-HNB-Internet-Information,
+ id-HNB-Cell-Identifier,
+ id-S-RNTIPrefix,
+ id-URAIdentityList
+
+FROM HNBAP-Constants
+
+ IE
+FROM HNBAP-PDU
+
+ maxProtocolExtensions,
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+FROM HNBAP-CommonDataTypes;
+
+IE-Extensions ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF IE
+
+--A
+Access-stratum-release-indicator ::= ENUMERATED {r99,
+ rel-4, rel-5, rel-6, rel-7, rel-8-and-beyond,
+ ...}
+
+AccessResult ::= ENUMERATED {allowed, notAllowed, ...}
+
+AltitudeAndDirection ::= SEQUENCE {
+ directionOfAltitude ENUMERATED {height, depth},
+ altitude INTEGER (0..32767),
+ ...
+}
+
+--B
+BackoffTimer ::= INTEGER(0..3600)
+
+BindingID ::= OCTET STRING(SIZE(1..4,...))
+
+--C
+Cause ::= CHOICE {
+ radioNetwork CauseRadioNetwork,
+ transport CauseTransport,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ ...
+}
+CauseRadioNetwork ::= ENUMERATED {
+ overload,
+ unauthorised-Location,
+ unauthorised-HNB,
+ hNB-parameter-mismatch,
+ invalid-UE-identity,
+ uE-not-allowed-on-this-HNB,
+ uE-unauthorised,
+ connection-with-UE-lost,
+ ue-RRC-release,
+ hNB-not-registered,
+ unspecified,
+ normal,
+ uE-relocated,
+ ue-registered-in-another-HNB,
+ ...,
+ no-neighbour-information-available,
+ iurh-connection-to-that-neighbour-not-Allowed
+}
+
+CauseTransport ::= ENUMERATED {
+ transport-resource-unavailable,
+ unspecified,
+ ...
+}
+
+CauseProtocol ::= ENUMERATED {
+ transfer-syntax-error,
+ abstract-syntax-error-reject,
+ abstract-syntax-error-ignore-and-notify,
+ message-not-compatible-with-receiver-state,
+ semantic-error,
+ unspecified,
+ abstract-syntax-error-falsely-constructed-message,
+ ...
+}
+
+CauseMisc ::= ENUMERATED {
+ processing-overload,
+ hardware-failure,
+ o-and-m-intervention,
+ unspecified,
+ ...
+}
+
+CellIdentity ::= BIT STRING (SIZE (28))
+
+CELL-FACHMobilitySupport ::= ENUMERATED {
+ supported,
+ ...
+}
+
+Context-ID ::= BIT STRING (SIZE(24))
+
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+ SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ typeOfError TypeOfError,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+CSG-ID ::= BIT STRING (SIZE (27))
+
+CSG-Capability ::= ENUMERATED {
+ csg-capable,
+ not-csg-capable,
+ ...
+}
+
+CSGMembershipStatus ::= ENUMERATED {
+ member,
+ non-member,
+ ...
+}
+
+CGI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lAC LAC,
+ cI CI,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+CI ::= OCTET STRING (SIZE (2))
+
+
+CN-DomainIndicator ::= ENUMERATED {
+ cs-domain,
+ ps-domain
+}
+--D
+--E
+ESN ::= BIT STRING (SIZE(32))
+--F
+--G
+GeographicalLocation ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ altitudeAndDirection AltitudeAndDirection,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GeographicalCoordinates ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ latitude INTEGER (0..8388607),
+ longitude INTEGER (-8388608..8388607),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GTP-TEI ::= OCTET STRING (SIZE (4))
+
+--H
+
+HNBCapacity ::= INTEGER(0..1000)
+
+HNB-Cell-Access-Mode::= ENUMERATED {
+ closed,
+ hybrid,
+ open,
+ ...
+}
+
+HNB-Cell-Identifier ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ cellIdentity CellIdentity,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HNB-GWResponse ::= CHOICE {
+ hNB HNBConfigInfo,
+ macroRNC RNC-ID,
+ unknownU-RNTIIndication UnknownU-RNTIIndication,
+ ...
+}
+
+HNB-RNL-Identity ::= CHOICE {
+ hNB-Identity-as-Cell-Identifier HNB-Cell-Identifier,
+ ...
+}
+
+HNBConfigInfo ::= SEQUENCE {
+ hnb-RNL-Identity HNB-RNL-Identity,
+ configurationInformation ConfigurationInformation,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+ConfigurationInformation ::= CHOICE {
+ provided HNBConfigurationInformationProvided,
+ missing HNBConfigurationInformationMissing,
+ ...
+}
+
+HNBConfigurationInformationProvided ::= SEQUENCE {
+ psc PSC OPTIONAL,
+ cSG-ID CSG-ID OPTIONAL,
+ hNB-Cell-Access-Mode HNB-Cell-Access-Mode,
+ iurh-Signalling-TNL-AddressList Iurh-Signalling-TNL-AddressList,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HNBConfigurationInformationMissing ::= SEQUENCE {
+ cause Cause,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HNB-Location-Information ::= SEQUENCE {
+ macroCoverageInfo MacroCoverageInformation OPTIONAL,
+ geographicalCoordinates GeographicalLocation OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HNB-Identity ::= SEQUENCE {
+ hNB-Identity-Info HNB-Identity-Info,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HNB-Identity-Info ::= OCTET STRING (SIZE (1..255))
+
+--I
+
+IMEI ::= BIT STRING (SIZE(60))
+
+IMSI ::= OCTET STRING (SIZE (3..8))
+-- Reference: 23.003
+IMSIDS41 ::= OCTET STRING (SIZE (5..7))
+
+IMSIESN ::= SEQUENCE {
+ iMSIDS41 IMSIDS41,
+ eSN ESN
+}
+
+IP-Address ::= SEQUENCE {
+ ipaddress CHOICE {
+ ipv4info Ipv4Address,
+ ipv6info Ipv6Address,
+ ...
+ },
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Ipv4Address ::= OCTET STRING (SIZE (4))
+
+Ipv6Address ::= OCTET STRING (SIZE (16))
+
+Iurh-Signalling-TNL-AddressList ::= SEQUENCE (SIZE(1..maxnoofIurhAddresses)) OF IP-Address
+
+
+--J
+--K
+--L
+LAC ::= OCTET STRING(SIZE(2))
+
+LAI ::= SEQUENCE {
+ pLMNID PLMNidentity,
+ lAC LAC,
+ ...
+}
+
+-- M
+
+MacroCoverageInformation ::= SEQUENCE {
+ cellIdentity MacroCellID,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+MacroCellID ::= CHOICE {
+ uTRANCellID UTRANCellID,
+ gERANCellID CGI,
+ ...
+}
+
+MuxPortNumber ::= INTEGER (1024..65535)
+
+--N
+
+NeighbourCellIdentityList ::= SEQUENCE (SIZE(0..maxnoofAdditionalNeighbours)) OF NeighbourIdentity
+
+NeighbourIdentity ::= CHOICE {
+ hNB-RNL-Identity HNB-RNL-Identity,
+ cell-ID CellIdentity,
+ ...
+}
+
+NeighbourInfoList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF HNBConfigInfo
+
+AdditionalNeighbourInfoList ::= SEQUENCE (SIZE(1..maxnoofAdditionalNeighbours)) OF HNBConfigInfo
+
+NeighbourInfoRequestList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF NeighbourInfoRequestItem
+
+NeighbourInfoRequestItem ::= SEQUENCE {
+ hnb-RNL-Identity HNB-RNL-Identity,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+--O
+--P
+PLMNidentity ::= OCTET STRING (SIZE (3))
+
+PSC ::= BIT STRING (SIZE(9))
+
+PTMSI ::= BIT STRING (SIZE(32))
+
+PTMSIRAI ::= SEQUENCE {
+ pTMSI PTMSI,
+ rAI RAI,
+ ...
+}
+
+
+--Q
+--R
+
+RAB-ID ::= BIT STRING (SIZE (8))
+
+RABList ::= SEQUENCE (SIZE(1..maxnoofRABs)) OF RABListItem
+
+RABListItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ old-transport-Info TransportInfo,
+ new-transport-Info TransportInfo,
+ cn-domain-indicator CN-DomainIndicator,
+ iE-Extensions IE-Extensions OPTIONAL,
+...
+}
+
+RAC ::= OCTET STRING(SIZE(1))
+
+RAI ::= SEQUENCE {
+ lAI LAI,
+ rAC RAC,
+ ...
+}
+
+
+Registration-Cause ::= ENUMERATED {
+ emergency-call,
+ normal,
+ ...,
+ ue-relocation
+}
+
+RNC-ID ::= INTEGER(0..65535)
+
+--S
+
+SAC ::= OCTET STRING(SIZE(2))
+
+S-RNTIPrefix ::= BIT STRING(SIZE(1..16, ...))
+
+--T
+TMSILAI ::= SEQUENCE {
+ tMSI BIT STRING(SIZE (32)),
+ lAI LAI
+}
+
+TMSIDS41 ::= OCTET STRING (SIZE (2..17))
+
+TransportInfo ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ transportAssociation CHOICE {
+ gtp-TEI GTP-TEI,
+ bindingID BindingID,
+ ...
+ },
+ iE-Extensions IE-Extensions OPTIONAL,
+...
+}
+
+TransportLayerAddress ::= BIT STRING(SIZE(1..160,...))
+
+Tunnel-Information ::= SEQUENCE {
+ iP-Address IP-Address,
+ uDP-Port-Number UDP-Port-Number OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+--U
+
+UDP-Port-Number ::= OCTET STRING(SIZE(2))
+
+UE-Capabilities ::= SEQUENCE {
+ access-stratum-release-indicator Access-stratum-release-indicator,
+ csg-capability CSG-Capability,
+ iE-Extensions IE-Extensions OPTIONAL,
+...
+}
+
+UTRANCellID ::= SEQUENCE {
+ lAC LAC,
+ rAC RAC,
+ pLMNidentity PLMNidentity,
+ uTRANcellID CellIdentity,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+
+
+UE-Identity ::= CHOICE {
+ iMSI IMSI,
+ tMSILAI TMSILAI,
+ pTMSIRAI PTMSIRAI,
+ iMEI IMEI,
+ eSN ESN,
+ iMSIDS41 IMSIDS41,
+ iMSIESN IMSIESN,
+ tMSIDS41 TMSIDS41,
+ ...
+}
+
+Update-cause ::= ENUMERATED {
+ relocation-preparation,
+ ...
+}
+
+URAIdentityList ::= SEQUENCE (SIZE (0..maxnoofURAIdentities)) OF URAIdentity
+
+URAIdentity ::= INTEGER(0..65535)
+
+U-RNTI ::= BIT STRING (SIZE (32))
+
+UnknownU-RNTIIndication ::= ENUMERATED {
+ unknown,
+ ...
+}
+
+--V
+--W
+--X
+--Y
+--Z
+
+
+END
diff --git a/asn1/hnbap/HNBAP-PDU-Contents.asn b/asn1/hnbap/HNBAP-PDU-Contents.asn
new file mode 100644
index 0000000..8f00967
--- /dev/null
+++ b/asn1/hnbap/HNBAP-PDU-Contents.asn
@@ -0,0 +1,561 @@
+-- **************************************************************
+--
+-- PDU definitions for HNBAP.
+--
+-- **************************************************************
+
+HNBAP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Cause,
+ CriticalityDiagnostics,
+ CSGMembershipStatus,
+ HNB-Location-Information,
+ HNB-Identity,
+ Context-ID,
+ UE-Identity,
+ LAC,
+ RAC,
+ SAC,
+ CN-DomainIndicator,
+ IP-Address,
+ Registration-Cause,
+ UE-Capabilities,
+ PLMNidentity,
+ CellIdentity,
+ RNC-ID,
+ CSG-ID,
+ HNB-Cell-Access-Mode,
+ BackoffTimer,
+ MuxPortNumber,
+ RABList,
+ HNBConfigInfo,
+ AccessResult,
+ Update-cause,
+ NeighbourInfoList,
+ NeighbourInfoRequestList,
+ PSC,
+ Tunnel-Information,
+ CELL-FACHMobilitySupport,
+ S-RNTIPrefix,
+ NeighbourIdentity,
+ NeighbourCellIdentityList,
+ URAIdentity,
+ URAIdentityList,
+ HNBCapacity,
+ AdditionalNeighbourInfoList,
+ U-RNTI,
+ UnknownU-RNTIIndication,
+ HNB-GWResponse
+
+
+
+FROM HNBAP-IEs
+
+
+ ProtocolExtensionContainer{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-Container{},
+ ProtocolIE-Single-Container{},
+ PrivateIE-Container{},
+ HNBAP-PRIVATE-IES,
+ HNBAP-PROTOCOL-EXTENSION,
+ HNBAP-PROTOCOL-IES
+
+FROM HNBAP-Containers
+
+ id-Cause,
+ id-CriticalityDiagnostics,
+ id-CSGMembershipStatus,
+ id-HNB-Location-Information,
+ id-HNB-Identity,
+ id-Context-ID,
+ id-PLMNidentity,
+ id-UE-Identity,
+ id-LAC,
+ id-RAC,
+ id-SAC,
+ id-UE-Capabilities,
+ id-Registration-Cause,
+ id-CellIdentity,
+ id-RNC-ID,
+ id-CSG-ID,
+ id-HNB-Cell-Access-Mode,
+ id-BackoffTimer,
+ id-Service-Area-For-Broadcast,
+ id-MuxPortNumber,
+ id-RABList,
+ id-HNBConfigInfo,
+ id-AccessResult,
+ id-Update-cause,
+ id-NeighbourInfoList,
+ id-NeighbourInfoRequestList,
+ id-Iurh-Signalling-TNL-Address,
+ id-PSC,
+ id-Tunnel-Information,
+ id-CELL-FACHMobilitySupport,
+ id-S-RNTIPrefix,
+ id-URAIdentity,
+ id-URAIdentityList,
+ id-NeighbourIdentity,
+ id-NeighbourCellIdentityList,
+ id-HNBCapacity,
+ id-AdditionalNeighbourInfoList,
+ id-U-RNTI,
+ id-UnknownU-RNTIIndication,
+ id-HNB-GWResponse
+
+
+FROM HNBAP-Constants;
+
+-- **************************************************************
+--
+-- HNB Register REQUEST
+--
+-- **************************************************************
+
+HNBRegisterRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterRequestExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-HNB-Identity CRITICALITY reject TYPE HNB-Identity PRESENCE mandatory } |
+ { ID id-HNB-Location-Information CRITICALITY reject TYPE HNB-Location-Information PRESENCE mandatory } |
+ { ID id-PLMNidentity CRITICALITY reject TYPE PLMNidentity PRESENCE mandatory } |
+ { ID id-CellIdentity CRITICALITY reject TYPE CellIdentity PRESENCE mandatory } |
+ { ID id-LAC CRITICALITY reject TYPE LAC PRESENCE mandatory } |
+ { ID id-RAC CRITICALITY reject TYPE RAC PRESENCE mandatory } |
+ { ID id-SAC CRITICALITY reject TYPE SAC PRESENCE mandatory } |
+ { ID id-CSG-ID CRITICALITY reject TYPE CSG-ID PRESENCE optional } ,
+ ...
+}
+
+HNBRegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ { ID id-Service-Area-For-Broadcast CRITICALITY ignore EXTENSION SAC PRESENCE optional }|
+ { ID id-HNB-Cell-Access-Mode CRITICALITY reject EXTENSION HNB-Cell-Access-Mode PRESENCE optional }|
+ { ID id-PSC CRITICALITY ignore EXTENSION PSC PRESENCE optional }|
+ { ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional }|
+ { ID id-Tunnel-Information CRITICALITY ignore EXTENSION Tunnel-Information PRESENCE optional }|
+ { ID id-CELL-FACHMobilitySupport CRITICALITY ignore EXTENSION CELL-FACHMobilitySupport PRESENCE optional }|
+ { ID id-NeighbourCellIdentityList CRITICALITY ignore EXTENSION NeighbourCellIdentityList PRESENCE optional }|
+ { ID id-URAIdentityList CRITICALITY ignore EXTENSION URAIdentityList PRESENCE optional }|
+ { ID id-HNBCapacity CRITICALITY ignore EXTENSION HNBCapacity PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Register Accept
+--
+-- **************************************************************
+
+HNBRegisterAccept ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterAcceptIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterAcceptExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterAcceptIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-RNC-ID CRITICALITY reject TYPE RNC-ID PRESENCE mandatory },
+ ...
+}
+
+HNBRegisterAcceptExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 9 to support CS Multiplexing --
+ { ID id-MuxPortNumber CRITICALITY ignore EXTENSION MuxPortNumber PRESENCE optional}|
+ { ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional}|
+ { ID id-S-RNTIPrefix CRITICALITY ignore EXTENSION S-RNTIPrefix PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Register REJECT
+--
+-- **************************************************************
+
+HNBRegisterReject ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBRegisterRejectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBRegisterRejectExtensions} } OPTIONAL,
+ ...
+}
+
+HNBRegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
+ -- This IE shall be present if the Cause IE is set to "Overload".
+ ...
+}
+
+HNBRegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+-- **************************************************************
+--
+-- HNB De- Register
+--
+-- **************************************************************
+
+HNBDe-Register ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBDe-RegisterIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBDe-RegisterExtensions} } OPTIONAL,
+ ...
+}
+
+HNBDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
+ -- This IE shall be present if the Cause IE is set to "Overload".
+ ...
+}
+
+HNBDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE Register REQUEST
+--
+-- **************************************************************
+
+UERegisterRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterRequestExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Registration-Cause CRITICALITY ignore TYPE Registration-Cause PRESENCE mandatory } |
+ { ID id-UE-Capabilities CRITICALITY reject TYPE UE-Capabilities PRESENCE mandatory },
+ ...
+}
+
+UERegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Register ACCEPT
+--
+-- **************************************************************
+
+UERegisterAccept ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterAcceptIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterAcceptExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterAcceptIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory },
+ ...
+}
+
+
+UERegisterAcceptExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ { ID id-CSGMembershipStatus CRITICALITY reject EXTENSION CSGMembershipStatus PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Register REJECT
+--
+-- **************************************************************
+
+UERegisterReject ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UERegisterRejectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UERegisterRejectExtensions} } OPTIONAL,
+ ...
+}
+
+UERegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+UERegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- UE De-Register
+--
+-- **************************************************************
+
+UEDe-Register ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UEDe-RegisterIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UEDe-RegisterExtensions} } OPTIONAL,
+ ...
+}
+
+UEDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } ,
+ ...
+}
+
+UEDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- CSG Membership Update
+--
+-- **************************************************************
+
+CSGMembershipUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {CSGMembershipUpdateIEs} },
+ protocolExtensions ProtocolExtensionContainer { {CSGMembershipUpdateExtensions} } OPTIONAL,
+ ...
+}
+
+CSGMembershipUpdateIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE mandatory },
+ ...
+}
+
+CSGMembershipUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL Update Request
+--
+-- **************************************************************
+
+TNLUpdateRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {TNLUpdateRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {TNLUpdateExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-RABList CRITICALITY reject TYPE RABList PRESENCE mandatory } |
+ { ID id-Update-cause CRITICALITY reject TYPE Update-cause PRESENCE mandatory } ,
+ ...
+}
+
+TNLUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL UPDATE RESPONSE
+--
+-- **************************************************************
+
+TNLUpdateResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { TNLUpdateResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { TNLUpdateResponseExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } ,
+ ...
+}
+
+TNLUpdateResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- TNL UPDATE FAILURE
+--
+-- **************************************************************
+
+TNLUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {TNLUpdateFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {TNLUpdateFailureExtensions} } OPTIONAL,
+ ...
+}
+
+TNLUpdateFailureIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+TNLUpdateFailureExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Configuration Transfer Request
+--
+-- **************************************************************
+
+HNBConfigTransferRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {HNBConfigTransferRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {HNBConfigTransferRequestExtensions} } OPTIONAL,
+ ...
+}
+
+HNBConfigTransferRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-NeighbourInfoRequestList CRITICALITY reject TYPE NeighbourInfoRequestList PRESENCE mandatory } ,
+ ...
+}
+
+HNBConfigTransferRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- HNB Configuration Transfer Response
+--
+-- **************************************************************
+
+HNBConfigTransferResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { HNBConfigTransferResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { HNBConfigTransferResponseExtensions} } OPTIONAL,
+ ...
+}
+
+HNBConfigTransferResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-NeighbourInfoList CRITICALITY reject TYPE NeighbourInfoList PRESENCE mandatory } ,
+ ...
+}
+
+HNBConfigTransferResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ { ID id-AdditionalNeighbourInfoList CRITICALITY ignore EXTENSION AdditionalNeighbourInfoList PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION COMPLETE
+--
+-- **************************************************************
+
+RelocationComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { RelocationCompleteIEs} },
+ protocolExtensions ProtocolExtensionContainer { { RelocationCompleteExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCompleteIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Context-ID CRITICALITY ignore TYPE Context-ID PRESENCE mandatory } ,
+ ...
+}
+
+
+RelocationCompleteExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+ErrorIndicationIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+ErrorIndicationExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+ privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
+ ...
+}
+
+PrivateMessage-IEs HNBAP-PRIVATE-IES ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- U-RNTI Query Request
+--
+-- **************************************************************
+
+U-RNTIQueryRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {U-RNTIQueryRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {U-RNTIQueryRequestExtensions} } OPTIONAL,
+ ...
+}
+
+U-RNTIQueryRequestIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-U-RNTI CRITICALITY reject TYPE U-RNTI PRESENCE mandatory } ,
+ ...
+}
+
+U-RNTIQueryRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- U-RNTI Query Response
+--
+-- **************************************************************
+
+U-RNTIQueryResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { U-RNTIQueryResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { U-RNTIQueryResponseExtensions} } OPTIONAL,
+ ...
+}
+
+U-RNTIQueryResponseIEs HNBAP-PROTOCOL-IES ::= {
+ { ID id-HNB-GWResponse CRITICALITY reject TYPE HNB-GWResponse PRESENCE mandatory } ,
+ ...
+}
+
+U-RNTIQueryResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+END
diff --git a/asn1/hnbap/HNBAP-PDU-Descriptions.asn b/asn1/hnbap/HNBAP-PDU-Descriptions.asn
new file mode 100644
index 0000000..67b3824
--- /dev/null
+++ b/asn1/hnbap/HNBAP-PDU-Descriptions.asn
@@ -0,0 +1,228 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+HNBAP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+FROM HNBAP-CommonDataTypes
+
+ HNBRegisterRequest,
+ HNBRegisterAccept,
+ HNBRegisterReject,
+ HNBDe-Register,
+ UERegisterRequest,
+ UERegisterAccept,
+ UERegisterReject,
+ UEDe-Register,
+ ErrorIndication,
+ PrivateMessage,
+ CSGMembershipUpdate,
+ TNLUpdateRequest,
+ TNLUpdateResponse,
+ TNLUpdateFailure,
+ HNBConfigTransferRequest,
+ HNBConfigTransferResponse,
+ RelocationComplete,
+ U-RNTIQueryRequest,
+ U-RNTIQueryResponse
+
+
+FROM HNBAP-PDU-Contents
+ id-HNBRegister,
+ id-UERegister,
+ id-UEDe-Register,
+ id-HNBDe-Register,
+ id-ErrorIndication,
+ id-privateMessage,
+ id-CSGMembershipUpdate,
+ id-TNLUpdate,
+ id-HNBConfigTransfer,
+ id-RelocationComplete,
+ id-U-RNTIQuery
+
+FROM HNBAP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+HNBAP-ELEMENTARY-PROCEDURE ::= CLASS {
+ &InitiatingMessage,
+ &SuccessfulOutcome OPTIONAL,
+ &UnsuccessfulOutcome OPTIONAL,
+ &procedureCode ProcedureCode UNIQUE,
+ &criticality Criticality DEFAULT ignore
+}
+
+WITH SYNTAX {
+ INITIATING MESSAGE &InitiatingMessage
+ [SUCCESSFUL OUTCOME &SuccessfulOutcome]
+ [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
+ PROCEDURE CODE &procedureCode
+ [CRITICALITY &criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU definitions
+--
+-- **************************************************************
+
+HNBAP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
+ criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value HNBAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+HNBAP-ELEMENTARY-PROCEDURES HNBAP-ELEMENTARY-PROCEDURE ::= {
+ HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 |
+ HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 ,
+ ...
+}
+
+HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 HNBAP-ELEMENTARY-PROCEDURE ::= {
+ hNBRegister|
+ uERegister,
+ ...,
+ tnlUpdate|
+ hNBConfigTransfer|
+ u-RNTIQuery
+}
+
+
+HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 HNBAP-ELEMENTARY-PROCEDURE ::= {
+ uEDe-Register |
+ hNBDe-Register |
+ errorIndication |
+ privateMessage,
+ ...,
+ csg-membership-update|
+ relocationComplete
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+
+hNBRegister HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBRegisterRequest
+ SUCCESSFUL OUTCOME HNBRegisterAccept
+ UNSUCCESSFUL OUTCOME HNBRegisterReject
+ PROCEDURE CODE id-HNBRegister
+ CRITICALITY reject
+}
+
+uERegister HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UERegisterRequest
+ SUCCESSFUL OUTCOME UERegisterAccept
+ UNSUCCESSFUL OUTCOME UERegisterReject
+ PROCEDURE CODE id-UERegister
+ CRITICALITY reject
+}
+
+uEDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UEDe-Register
+ PROCEDURE CODE id-UEDe-Register
+ CRITICALITY ignore
+}
+
+hNBDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBDe-Register
+ PROCEDURE CODE id-HNBDe-Register
+ CRITICALITY ignore
+}
+
+errorIndication HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+csg-membership-update HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE CSGMembershipUpdate
+ PROCEDURE CODE id-CSGMembershipUpdate
+ CRITICALITY ignore
+}
+
+tnlUpdate HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE TNLUpdateRequest
+ SUCCESSFUL OUTCOME TNLUpdateResponse
+ UNSUCCESSFUL OUTCOME TNLUpdateFailure
+ PROCEDURE CODE id-TNLUpdate
+ CRITICALITY reject
+}
+
+hNBConfigTransfer HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE HNBConfigTransferRequest
+ SUCCESSFUL OUTCOME HNBConfigTransferResponse
+ PROCEDURE CODE id-HNBConfigTransfer
+ CRITICALITY reject
+}
+
+relocationComplete HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationComplete
+ PROCEDURE CODE id-RelocationComplete
+ CRITICALITY ignore
+}
+
+u-RNTIQuery HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE U-RNTIQueryRequest
+ SUCCESSFUL OUTCOME U-RNTIQueryResponse
+ PROCEDURE CODE id-U-RNTIQuery
+ CRITICALITY reject
+}
+
+privateMessage HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+END
diff --git a/asn1/hnbap/HNBAP-PDU.asn b/asn1/hnbap/HNBAP-PDU.asn
new file mode 100644
index 0000000..6d32215
--- /dev/null
+++ b/asn1/hnbap/HNBAP-PDU.asn
@@ -0,0 +1,146 @@
+HNBAP-PDU {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU (255) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxProtocolIEs,
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID
+
+FROM HNBAP-CommonDataTypes;
+
+
+HNBAP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+
+HNBRegisterRequest ::= SEQUENCE {
+ hnbRegisterRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+HNBRegisterAccept ::= SEQUENCE {
+ hnbRegisterAccept-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+HNBRegisterReject ::= SEQUENCE {
+ hnbRegisterReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UERegisterRequest ::= SEQUENCE {
+ ueRegisterRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UERegisterAccept ::= SEQUENCE {
+ ueRegisterAccept-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UERegisterReject ::= SEQUENCE {
+ ueRegisterReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UEDe-Register ::= SEQUENCE {
+ ueDe-Register-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+HNBDe-Register ::= SEQUENCE {
+ hnbDe-Register-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ErrorIndication ::= SEQUENCE {
+ errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+CSGMembershipUpdate ::= SEQUENCE {
+ csgMembershipUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+TNLUpdateRequest ::= SEQUENCE {
+ tnlUpdateRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+TNLUpdateResponse ::= SEQUENCE {
+ tnlUpdateResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+TNLUpdateFailure ::= SEQUENCE {
+ tnlUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+HNBConfigTransferRequest ::= SEQUENCE {
+ hnbConfigTransferRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+HNBConfigTransferResponse ::= SEQUENCE {
+ hnbConfigTransferResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationComplete ::= SEQUENCE {
+ relocationComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+U-RNTIQueryRequest ::= SEQUENCE {
+ u-RNTIQueryRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+U-RNTIQueryResponse ::= SEQUENCE {
+ u-RNTIQueryResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+PrivateMessage ::= SEQUENCE {
+ privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+
+IE ::= SEQUENCE {
+ id ProtocolIE-ID,
+ criticality Criticality,
+ value ANY
+}
+
+END
diff --git a/asn1/iucommon/IU-Common.asn b/asn1/iucommon/IU-Common.asn
new file mode 100644
index 0000000..0dfe7c6
--- /dev/null
+++ b/asn1/iucommon/IU-Common.asn
@@ -0,0 +1,45 @@
+IU-Common { }
+
+-- Humble attempt of extracting the common part of RUA, HNBAP and RANAP out of
+-- their respective ASN.1 syntax definitions. Hidden in all those information
+-- object classes is a quite classic 'message header' structure that is identical
+-- to all of the messages of the above protocols. Only the actual information element
+-- contents is specified as 'real' ASN.1 complex data type.
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+ProcedureCode ::= INTEGER (0..255)
+
+ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs)
+
+MessageType ::= ENUMERATED { initiatingMessage, successfulOutcome, unsuccessfulOutcome }
+
+ProtocolIEContainer ::= SEQUENCE (SIZE (0..maxProtocolIEs)) OF ProtocolIE-Field
+
+ProtocolExtensionContainer ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF ProtocolIE-Field
+
+ProtocolIE-Field ::= SEQUENCE {
+ id ProtocolIE-ID,
+ criticality Criticality,
+ value ANY
+}
+
+
+IUCommon-PDU ::= SEQUENCE {
+ choice MessageType,
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ protocolIEs ProtocolIEContainer,
+ protocolExtensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+
+END
diff --git a/asn1/ranap/RANAP-CommonDataTypes.asn b/asn1/ranap/RANAP-CommonDataTypes.asn
new file mode 100644
index 0000000..3abc0b9
--- /dev/null
+++ b/asn1/ranap/RANAP-CommonDataTypes.asn
@@ -0,0 +1,353 @@
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+RANAP-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+PrivateIE-ID ::= CHOICE {
+ local INTEGER (0..65535),
+ global OBJECT IDENTIFIER
+}
+
+ProcedureCode ::= INTEGER {
+ id-RAB-Assignment(0),
+ id-Iu-Release(1),
+ id-RelocationPreparation(2),
+ id-RelocationResourceAllocation(3),
+ id-RelocationCancel(4),
+ id-SRNS-ContextTransfer(5),
+ id-SecurityModeControl(6),
+ id-DataVolumeReport(7),
+ id-Reset(9),
+ id-RAB-ReleaseRequest(10),
+ id-Iu-ReleaseRequest(11),
+ id-RelocationDetect(12),
+ id-RelocationComplete(13),
+ id-Paging(14),
+ id-CommonID(15),
+ id-CN-InvokeTrace(16),
+ id-LocationReportingControl(17),
+ id-LocationReport(18),
+ id-InitialUE-Message(19),
+ id-DirectTransfer(20),
+ id-OverloadControl(21),
+ id-ErrorIndication(22),
+ id-SRNS-DataForward(23),
+ id-ForwardSRNS-Context(24),
+ id-privateMessage(25),
+ id-CN-DeactivateTrace(26),
+ id-ResetResource(27),
+ id-RANAP-Relocation(28),
+ id-RAB-ModifyRequest(29),
+ id-LocationRelatedData(30),
+ id-InformationTransfer(31),
+ id-UESpecificInformation(32),
+ id-UplinkInformationExchange(33),
+ id-DirectInformationTransfer(34),
+ id-MBMSSessionStart(35),
+ id-MBMSSessionUpdate(36),
+ id-MBMSSessionStop(37),
+ id-MBMSUELinking(38),
+ id-MBMSRegistration(39),
+ id-MBMSCNDe-Registration-Procedure(40),
+ id-MBMSRABEstablishmentIndication(41),
+ id-MBMSRABRelease(42),
+ id-enhancedRelocationComplete(43),
+ id-enhancedRelocationCompleteConfirm(44),
+ id-RANAPenhancedRelocation(45),
+ id-SRVCCPreparation(46),
+ id-UeRadioCapabilityMatch(47)
+} (0..255)
+
+ProtocolExtensionID ::= INTEGER (0..65535)
+
+ProtocolIE-ID ::= INTEGER {
+ id-AreaIdentity(0),
+ id-CN-DomainIndicator(3),
+ id-Cause(4),
+ id-ChosenEncryptionAlgorithm(5),
+ id-ChosenIntegrityProtectionAlgorithm(6),
+ id-ClassmarkInformation2(7),
+ id-ClassmarkInformation3(8),
+ id-CriticalityDiagnostics(9),
+ id-DL-GTP-PDU-SequenceNumber(10),
+ id-EncryptionInformation(11),
+ id-IntegrityProtectionInformation(12),
+ id-IuTransportAssociation(13),
+ id-L3-Information(14),
+ id-LAI(15),
+ id-NAS-PDU(16),
+ id-NonSearchingIndication(17),
+ id-NumberOfSteps(18),
+ id-OMC-ID(19),
+ id-OldBSS-ToNewBSS-Information(20),
+ id-PagingAreaID(21),
+ id-PagingCause(22),
+ id-PermanentNAS-UE-ID(23),
+ id-RAB-ContextItem(24),
+ id-RAB-ContextList(25),
+ id-RAB-DataForwardingItem(26),
+ id-RAB-DataForwardingItem-SRNS-CtxReq(27),
+ id-RAB-DataForwardingList(28),
+ id-RAB-DataForwardingList-SRNS-CtxReq(29),
+ id-RAB-DataVolumeReportItem(30),
+ id-RAB-DataVolumeReportList(31),
+ id-RAB-DataVolumeReportRequestItem(32),
+ id-RAB-DataVolumeReportRequestList(33),
+ id-RAB-FailedItem(34),
+ id-RAB-FailedList(35),
+ id-RAB-ID(36),
+ id-RAB-QueuedItem(37),
+ id-RAB-QueuedList(38),
+ id-RAB-ReleaseFailedList(39),
+ id-RAB-ReleaseItem(40),
+ id-RAB-ReleaseList(41),
+ id-RAB-ReleasedItem(42),
+ id-RAB-ReleasedList(43),
+ id-RAB-ReleasedList-IuRelComp(44),
+ id-RAB-RelocationReleaseItem(45),
+ id-RAB-RelocationReleaseList(46),
+ id-RAB-SetupItem-RelocReq(47),
+ id-RAB-SetupItem-RelocReqAck(48),
+ id-RAB-SetupList-RelocReq(49),
+ id-RAB-SetupList-RelocReqAck(50),
+ id-RAB-SetupOrModifiedItem(51),
+ id-RAB-SetupOrModifiedList(52),
+ id-RAB-SetupOrModifyItem(53),
+ id-RAB-SetupOrModifyList(54),
+ id-RAC(55),
+ id-RelocationType(56),
+ id-RequestType(57),
+ id-SAI(58),
+ id-SAPI(59),
+ id-SourceID(60),
+ id-Source-ToTarget-TransparentContainer(61),
+ id-TargetID(62),
+ id-Target-ToSource-TransparentContainer(63),
+ id-TemporaryUE-ID(64),
+ id-TraceReference(65),
+ id-TraceType(66),
+ id-TransportLayerAddress(67),
+ id-TriggerID(68),
+ id-UE-ID(69),
+ id-UL-GTP-PDU-SequenceNumber(70),
+ id-RAB-FailedtoReportItem(71),
+ id-RAB-FailedtoReportList(72),
+ id-KeyStatus(75),
+ id-DRX-CycleLengthCoefficient(76),
+ id-IuSigConIdList(77),
+ id-IuSigConIdItem(78),
+ id-IuSigConId(79),
+ id-DirectTransferInformationItem-RANAP-RelocInf(80),
+ id-DirectTransferInformationList-RANAP-RelocInf(81),
+ id-RAB-ContextItem-RANAP-RelocInf(82),
+ id-RAB-ContextList-RANAP-RelocInf(83),
+ id-RAB-ContextFailedtoTransferItem(84),
+ id-RAB-ContextFailedtoTransferList(85),
+ id-GlobalRNC-ID(86),
+ id-RAB-ReleasedItem-IuRelComp(87),
+ id-MessageStructure(88),
+ id-Alt-RAB-Parameters(89),
+ id-Ass-RAB-Parameters(90),
+ id-RAB-ModifyList(91),
+ id-RAB-ModifyItem(92),
+ id-TypeOfError(93),
+ id-BroadcastAssistanceDataDecipheringKeys(94),
+ id-LocationRelatedDataRequestType(95),
+ id-GlobalCN-ID(96),
+ id-LastKnownServiceArea(97),
+ id-SRB-TrCH-Mapping(98),
+ id-InterSystemInformation-TransparentContainer(99),
+ id-NewBSS-To-OldBSS-Information(100),
+ id-SourceRNC-PDCP-context-info(103),
+ id-InformationTransferID(104),
+ id-SNA-Access-Information(105),
+ id-ProvidedData(106),
+ id-GERAN-BSC-Container(107),
+ id-GERAN-Classmark(108),
+ id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item(109),
+ id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse(110),
+ id-VerticalAccuracyCode(111),
+ id-ResponseTime(112),
+ id-PositioningPriority(113),
+ id-ClientType(114),
+ id-LocationRelatedDataRequestTypeSpecificToGERANIuMode(115),
+ id-SignallingIndication(116),
+ id-hS-DSCH-MAC-d-Flow-ID(117),
+ id-UESBI-Iu(118),
+ id-PositionData(119),
+ id-PositionDataSpecificToGERANIuMode(120),
+ id-CellLoadInformationGroup(121),
+ id-AccuracyFulfilmentIndicator(122),
+ id-InformationTransferType(123),
+ id-TraceRecordingSessionInformation(124),
+ id-TracePropagationParameters(125),
+ id-InterSystemInformationTransferType(126),
+ id-SelectedPLMN-ID(127),
+ id-RedirectionCompleted(128),
+ id-RedirectionIndication(129),
+ id-NAS-SequenceNumber(130),
+ id-RejectCauseValue(131),
+ id-APN(132),
+ id-CNMBMSLinkingInformation(133),
+ id-DeltaRAListofIdleModeUEs(134),
+ id-FrequenceLayerConvergenceFlag(135),
+ id-InformationExchangeID(136),
+ id-InformationExchangeType(137),
+ id-InformationRequested(138),
+ id-InformationRequestType(139),
+ id-IPMulticastAddress(140),
+ id-JoinedMBMSBearerServicesList(141),
+ id-LeftMBMSBearerServicesList(142),
+ id-MBMSBearerServiceType(143),
+ id-MBMSCNDe-Registration(144),
+ id-MBMSServiceArea(145),
+ id-MBMSSessionDuration(146),
+ id-MBMSSessionIdentity(147),
+ id-PDP-TypeInformation(148),
+ id-RAB-Parameters(149),
+ id-RAListofIdleModeUEs(150),
+ id-MBMSRegistrationRequestType(151),
+ id-SessionUpdateID(152),
+ id-TMGI(153),
+ id-TransportLayerInformation(154),
+ id-UnsuccessfulLinkingList(155),
+ id-MBMSLinkingInformation(156),
+ id-MBMSSessionRepetitionNumber(157),
+ id-AlternativeRABConfiguration(158),
+ id-AlternativeRABConfigurationRequest(159),
+ id-E-DCH-MAC-d-Flow-ID(160),
+ id-SourceBSS-ToTargetBSS-TransparentContainer(161),
+ id-TargetBSS-ToSourceBSS-TransparentContainer(162),
+ id-TimeToMBMSDataTransfer(163),
+ id-IncludeVelocity(164),
+ id-VelocityEstimate(165),
+ id-RedirectAttemptFlag(166),
+ id-RAT-Type(167),
+ id-PeriodicLocationInfo(168),
+ id-MBMSCountingInformation(169),
+ id-170-not-to-be-used-for-IE-ids(170),
+ id-ExtendedRNC-ID(171),
+ id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf(172),
+ id-Alt-RAB-Parameter-ExtendedMaxBitrateInf(173),
+ id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList(174),
+ id-Ass-RAB-Parameter-ExtendedMaxBitrateList(175),
+ id-RAB-Parameter-ExtendedGuaranteedBitrateList(176),
+ id-RAB-Parameter-ExtendedMaxBitrateList(177),
+ id-Requested-RAB-Parameter-ExtendedMaxBitrateList(178),
+ id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList(179),
+ id-LAofIdleModeUEs(180),
+ id-newLAListofIdleModeUEs(181),
+ id-LAListwithNoIdleModeUEsAnyMore(182),
+ id-183-not-to-be-used-for-IE-ids(183),
+ id-GANSS-PositioningDataSet(184),
+ id-RequestedGANSSAssistanceData(185),
+ id-BroadcastGANSSAssistanceDataDecipheringKeys(186),
+ id-d-RNTI-for-NoIuCSUP(187),
+ id-RAB-SetupList-EnhancedRelocCompleteReq(188),
+ id-RAB-SetupItem-EnhancedRelocCompleteReq(189),
+ id-RAB-SetupList-EnhancedRelocCompleteRes(190),
+ id-RAB-SetupItem-EnhancedRelocCompleteRes(191),
+ id-RAB-SetupList-EnhRelocInfoReq(192),
+ id-RAB-SetupItem-EnhRelocInfoReq(193),
+ id-RAB-SetupList-EnhRelocInfoRes(194),
+ id-RAB-SetupItem-EnhRelocInfoRes(195),
+ id-OldIuSigConId(196),
+ id-RAB-FailedList-EnhRelocInfoRes(197),
+ id-RAB-FailedItem-EnhRelocInfoRes(198),
+ id-Global-ENB-ID(199),
+ id-UE-History-Information(200),
+ id-MBMSSynchronisationInformation(201),
+ id-SubscriberProfileIDforRFP(202),
+ id-CSG-Id(203),
+ id-OldIuSigConIdCS(204),
+ id-OldIuSigConIdPS(205),
+ id-GlobalCN-IDCS(206),
+ id-GlobalCN-IDPS(207),
+ id-SourceExtendedRNC-ID(208),
+ id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes(209),
+ id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes(210),
+ id-SourceRNC-ID(211),
+ id-Relocation-TargetRNC-ID(212),
+ id-Relocation-TargetExtendedRNC-ID(213),
+ id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf(214),
+ id-Alt-RAB-Parameter-SupportedMaxBitrateInf(215),
+ id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList(216),
+ id-Ass-RAB-Parameter-SupportedMaxBitrateList(217),
+ id-RAB-Parameter-SupportedGuaranteedBitrateList(218),
+ id-RAB-Parameter-SupportedMaxBitrateList(219),
+ id-Requested-RAB-Parameter-SupportedMaxBitrateList(220),
+ id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList(221),
+ id-Relocation-SourceRNC-ID(222),
+ id-Relocation-SourceExtendedRNC-ID(223),
+ id-EncryptionKey(224),
+ id-IntegrityProtectionKey(225),
+ id-SRVCC-HO-Indication(226),
+ id-SRVCC-Information(227),
+ id-SRVCC-Operation-Possible(228),
+ id-CSG-Id-List(229),
+ id-PSRABtobeReplaced(230),
+ id-E-UTRAN-Service-Handover(231),
+ id-UE-AggregateMaximumBitRate(233),
+ id-CSG-Membership-Status(234),
+ id-Cell-Access-Mode(235),
+ id-IP-Source-Address(236),
+ id-CSFB-Information(237),
+ id-PDP-TypeInformation-extension(238),
+ id-MSISDN(239),
+ id-Offload-RAB-Parameters(240),
+ id-LGW-TransportLayerAddress(241),
+ id-Correlation-ID(242),
+ id-IRAT-Measurement-Configuration(243),
+ id-MDT-Configuration(244),
+ id-Priority-Class-Indicator(245),
+ id-RNSAPRelocationParameters(247),
+ id-RABParametersList(248),
+ id-Management-Based-MDT-Allowed(249),
+ id-HigherBitratesThan16MbpsFlag(250),
+ id-Trace-Collection-Entity-IP-Addess(251),
+ id-End-Of-CSFB(252),
+ id-Time-UE-StayedInCell-EnhancedGranularity(253),
+ id-Out-Of-UTRAN(254),
+ id-TraceRecordingSessionReference(255),
+ id-IMSI(256),
+ id-HO-Cause(257),
+ id-VoiceSupportMatchIndicator(258),
+ id-RSRVCC-HO-Indication(259),
+ id-RSRVCC-Information(260),
+ id-AnchorPLMN-ID(261),
+ id-Tunnel-Information-for-BBF(262),
+ id-Management-Based-MDT-PLMN-List(263),
+ id-SignallingBasedMDTPLMNList(264),
+ id-M4Report(265),
+ id-M5Report(266),
+ id-M6Report(267),
+ id-M7Report(268),
+ id-TimingDifferenceULDL(269),
+ id-Serving-Cell-Identifier(270),
+ id-EARFCN-Extended(271),
+ id-RSRVCC-Operation-Possible(272),
+ id-SIPTO-LGW-TransportLayerAddress(273),
+ id-SIPTO-Correlation-ID(274),
+ id-LHN-ID(275),
+ id-Session-Re-establishment-Indicator(276),
+ id-LastE-UTRANPLMNIdentity(277),
+ id-RSRQ-Type(278),
+ id-RSRQ-Extension(279)
+} (0..65535)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome, outcome }
+
+END
diff --git a/asn1/ranap/RANAP-Constants.asn b/asn1/ranap/RANAP-Constants.asn
new file mode 100644
index 0000000..9451294
--- /dev/null
+++ b/asn1/ranap/RANAP-Constants.asn
@@ -0,0 +1,405 @@
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+RANAP-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+FROM RANAP-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+-- **************************************************************
+
+id-RAB-Assignment ProcedureCode ::= 0
+id-Iu-Release ProcedureCode ::= 1
+id-RelocationPreparation ProcedureCode ::= 2
+id-RelocationResourceAllocation ProcedureCode ::= 3
+id-RelocationCancel ProcedureCode ::= 4
+id-SRNS-ContextTransfer ProcedureCode ::= 5
+id-SecurityModeControl ProcedureCode ::= 6
+id-DataVolumeReport ProcedureCode ::= 7
+id-Reset ProcedureCode ::= 9
+id-RAB-ReleaseRequest ProcedureCode ::= 10
+id-Iu-ReleaseRequest ProcedureCode ::= 11
+id-RelocationDetect ProcedureCode ::= 12
+id-RelocationComplete ProcedureCode ::= 13
+id-Paging ProcedureCode ::= 14
+id-CommonID ProcedureCode ::= 15
+id-CN-InvokeTrace ProcedureCode ::= 16
+id-LocationReportingControl ProcedureCode ::= 17
+id-LocationReport ProcedureCode ::= 18
+id-InitialUE-Message ProcedureCode ::= 19
+id-DirectTransfer ProcedureCode ::= 20
+id-OverloadControl ProcedureCode ::= 21
+id-ErrorIndication ProcedureCode ::= 22
+id-SRNS-DataForward ProcedureCode ::= 23
+id-ForwardSRNS-Context ProcedureCode ::= 24
+id-privateMessage ProcedureCode ::= 25
+id-CN-DeactivateTrace ProcedureCode ::= 26
+id-ResetResource ProcedureCode ::= 27
+id-RANAP-Relocation ProcedureCode ::= 28
+id-RAB-ModifyRequest ProcedureCode ::= 29
+id-LocationRelatedData ProcedureCode ::= 30
+id-InformationTransfer ProcedureCode ::= 31
+id-UESpecificInformation ProcedureCode ::= 32
+id-UplinkInformationExchange ProcedureCode ::= 33
+id-DirectInformationTransfer ProcedureCode ::= 34
+id-MBMSSessionStart ProcedureCode ::= 35
+id-MBMSSessionUpdate ProcedureCode ::= 36
+id-MBMSSessionStop ProcedureCode ::= 37
+id-MBMSUELinking ProcedureCode ::= 38
+id-MBMSRegistration ProcedureCode ::= 39
+id-MBMSCNDe-Registration-Procedure ProcedureCode ::= 40
+id-MBMSRABEstablishmentIndication ProcedureCode ::= 41
+id-MBMSRABRelease ProcedureCode ::= 42
+id-enhancedRelocationComplete ProcedureCode ::= 43
+id-enhancedRelocationCompleteConfirm ProcedureCode ::= 44
+id-RANAPenhancedRelocation ProcedureCode ::= 45
+id-SRVCCPreparation ProcedureCode ::= 46
+id-UeRadioCapabilityMatch ProcedureCode ::= 47
+
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs INTEGER ::= 65535
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+
+maxNrOfDTs INTEGER ::= 15
+maxNrOfErrors INTEGER ::= 256
+maxNrOfIuSigConIds INTEGER ::= 250
+maxNrOfPDPDirections INTEGER ::= 2
+maxNrOfPoints INTEGER ::= 15
+maxNrOfRABs INTEGER ::= 256
+maxNrOfSeparateTrafficDirections INTEGER ::= 2
+maxNrOfSRBs INTEGER ::= 8
+maxNrOfVol INTEGER ::= 2
+maxNrOfLevels INTEGER ::= 256
+maxNrOfAltValues INTEGER ::= 16
+maxNrOfPLMNsSN INTEGER ::= 32
+maxNrOfLAs INTEGER ::= 65536
+maxNrOfSNAs INTEGER ::= 65536
+maxNrOfUEsToBeTraced INTEGER ::= 64
+maxNrOfInterfaces INTEGER ::= 16
+maxRAB-Subflows INTEGER ::= 7
+maxRAB-SubflowCombination INTEGER ::= 64
+maxSet INTEGER ::= 9
+maxNrOfHSDSCHMACdFlows-1 INTEGER ::= 7
+maxnoofMulticastServicesPerUE INTEGER ::= 128
+maxnoofMulticastServicesPerRNC INTEGER ::= 512
+maxMBMSSA INTEGER ::= 256
+maxMBMSRA INTEGER ::= 65536
+maxNrOfEDCHMACdFlows-1 INTEGER ::= 7
+maxGANSSSet INTEGER ::= 9
+maxNrOfCSGs INTEGER ::= 256
+maxNrOfEUTRAFreqs INTEGER ::= 8
+maxNrOfCellIds INTEGER ::= 32
+maxNrOfRAIs INTEGER ::= 8
+maxNrOfLAIs INTEGER ::= 8
+maxSizeOfIMSInfo INTEGER ::= 32
+maxnoofMDTPLMNs INTEGER ::= 16
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-AreaIdentity ProtocolIE-ID ::= 0
+id-CN-DomainIndicator ProtocolIE-ID ::= 3
+id-Cause ProtocolIE-ID ::= 4
+id-ChosenEncryptionAlgorithm ProtocolIE-ID ::= 5
+id-ChosenIntegrityProtectionAlgorithm ProtocolIE-ID ::= 6
+id-ClassmarkInformation2 ProtocolIE-ID ::= 7
+id-ClassmarkInformation3 ProtocolIE-ID ::= 8
+id-CriticalityDiagnostics ProtocolIE-ID ::= 9
+id-DL-GTP-PDU-SequenceNumber ProtocolIE-ID ::= 10
+id-EncryptionInformation ProtocolIE-ID ::= 11
+id-IntegrityProtectionInformation ProtocolIE-ID ::= 12
+id-IuTransportAssociation ProtocolIE-ID ::= 13
+id-L3-Information ProtocolIE-ID ::= 14
+id-LAI ProtocolIE-ID ::= 15
+id-NAS-PDU ProtocolIE-ID ::= 16
+id-NonSearchingIndication ProtocolIE-ID ::= 17
+id-NumberOfSteps ProtocolIE-ID ::= 18
+id-OMC-ID ProtocolIE-ID ::= 19
+id-OldBSS-ToNewBSS-Information ProtocolIE-ID ::= 20
+id-PagingAreaID ProtocolIE-ID ::= 21
+id-PagingCause ProtocolIE-ID ::= 22
+id-PermanentNAS-UE-ID ProtocolIE-ID ::= 23
+id-RAB-ContextItem ProtocolIE-ID ::= 24
+id-RAB-ContextList ProtocolIE-ID ::= 25
+id-RAB-DataForwardingItem ProtocolIE-ID ::= 26
+id-RAB-DataForwardingItem-SRNS-CtxReq ProtocolIE-ID ::= 27
+id-RAB-DataForwardingList ProtocolIE-ID ::= 28
+id-RAB-DataForwardingList-SRNS-CtxReq ProtocolIE-ID ::= 29
+id-RAB-DataVolumeReportItem ProtocolIE-ID ::= 30
+id-RAB-DataVolumeReportList ProtocolIE-ID ::= 31
+id-RAB-DataVolumeReportRequestItem ProtocolIE-ID ::= 32
+id-RAB-DataVolumeReportRequestList ProtocolIE-ID ::= 33
+id-RAB-FailedItem ProtocolIE-ID ::= 34
+id-RAB-FailedList ProtocolIE-ID ::= 35
+id-RAB-ID ProtocolIE-ID ::= 36
+id-RAB-QueuedItem ProtocolIE-ID ::= 37
+id-RAB-QueuedList ProtocolIE-ID ::= 38
+id-RAB-ReleaseFailedList ProtocolIE-ID ::= 39
+id-RAB-ReleaseItem ProtocolIE-ID ::= 40
+id-RAB-ReleaseList ProtocolIE-ID ::= 41
+id-RAB-ReleasedItem ProtocolIE-ID ::= 42
+id-RAB-ReleasedList ProtocolIE-ID ::= 43
+id-RAB-ReleasedList-IuRelComp ProtocolIE-ID ::= 44
+id-RAB-RelocationReleaseItem ProtocolIE-ID ::= 45
+id-RAB-RelocationReleaseList ProtocolIE-ID ::= 46
+id-RAB-SetupItem-RelocReq ProtocolIE-ID ::= 47
+id-RAB-SetupItem-RelocReqAck ProtocolIE-ID ::= 48
+id-RAB-SetupList-RelocReq ProtocolIE-ID ::= 49
+id-RAB-SetupList-RelocReqAck ProtocolIE-ID ::= 50
+id-RAB-SetupOrModifiedItem ProtocolIE-ID ::= 51
+id-RAB-SetupOrModifiedList ProtocolIE-ID ::= 52
+id-RAB-SetupOrModifyItem ProtocolIE-ID ::= 53
+id-RAB-SetupOrModifyList ProtocolIE-ID ::= 54
+id-RAC ProtocolIE-ID ::= 55
+id-RelocationType ProtocolIE-ID ::= 56
+id-RequestType ProtocolIE-ID ::= 57
+id-SAI ProtocolIE-ID ::= 58
+id-SAPI ProtocolIE-ID ::= 59
+id-SourceID ProtocolIE-ID ::= 60
+id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 61
+id-TargetID ProtocolIE-ID ::= 62
+id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 63
+id-TemporaryUE-ID ProtocolIE-ID ::= 64
+id-TraceReference ProtocolIE-ID ::= 65
+id-TraceType ProtocolIE-ID ::= 66
+id-TransportLayerAddress ProtocolIE-ID ::= 67
+id-TriggerID ProtocolIE-ID ::= 68
+id-UE-ID ProtocolIE-ID ::= 69
+id-UL-GTP-PDU-SequenceNumber ProtocolIE-ID ::= 70
+id-RAB-FailedtoReportItem ProtocolIE-ID ::= 71
+id-RAB-FailedtoReportList ProtocolIE-ID ::= 72
+id-KeyStatus ProtocolIE-ID ::= 75
+id-DRX-CycleLengthCoefficient ProtocolIE-ID ::= 76
+id-IuSigConIdList ProtocolIE-ID ::= 77
+id-IuSigConIdItem ProtocolIE-ID ::= 78
+id-IuSigConId ProtocolIE-ID ::= 79
+id-DirectTransferInformationItem-RANAP-RelocInf ProtocolIE-ID ::= 80
+id-DirectTransferInformationList-RANAP-RelocInf ProtocolIE-ID ::= 81
+id-RAB-ContextItem-RANAP-RelocInf ProtocolIE-ID ::= 82
+id-RAB-ContextList-RANAP-RelocInf ProtocolIE-ID ::= 83
+id-RAB-ContextFailedtoTransferItem ProtocolIE-ID ::= 84
+id-RAB-ContextFailedtoTransferList ProtocolIE-ID ::= 85
+id-GlobalRNC-ID ProtocolIE-ID ::= 86
+id-RAB-ReleasedItem-IuRelComp ProtocolIE-ID ::= 87
+id-MessageStructure ProtocolIE-ID ::= 88
+id-Alt-RAB-Parameters ProtocolIE-ID ::= 89
+id-Ass-RAB-Parameters ProtocolIE-ID ::= 90
+id-RAB-ModifyList ProtocolIE-ID ::= 91
+id-RAB-ModifyItem ProtocolIE-ID ::= 92
+id-TypeOfError ProtocolIE-ID ::= 93
+id-BroadcastAssistanceDataDecipheringKeys ProtocolIE-ID ::= 94
+id-LocationRelatedDataRequestType ProtocolIE-ID ::= 95
+id-GlobalCN-ID ProtocolIE-ID ::= 96
+id-LastKnownServiceArea ProtocolIE-ID ::= 97
+id-SRB-TrCH-Mapping ProtocolIE-ID ::= 98
+id-InterSystemInformation-TransparentContainer ProtocolIE-ID ::= 99
+id-NewBSS-To-OldBSS-Information ProtocolIE-ID ::= 100
+id-SourceRNC-PDCP-context-info ProtocolIE-ID ::= 103
+id-InformationTransferID ProtocolIE-ID ::= 104
+id-SNA-Access-Information ProtocolIE-ID ::= 105
+id-ProvidedData ProtocolIE-ID ::= 106
+id-GERAN-BSC-Container ProtocolIE-ID ::= 107
+id-GERAN-Classmark ProtocolIE-ID ::= 108
+id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item ProtocolIE-ID ::= 109
+id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse ProtocolIE-ID ::= 110
+id-VerticalAccuracyCode ProtocolIE-ID ::= 111
+id-ResponseTime ProtocolIE-ID ::= 112
+id-PositioningPriority ProtocolIE-ID ::= 113
+id-ClientType ProtocolIE-ID ::= 114
+id-LocationRelatedDataRequestTypeSpecificToGERANIuMode ProtocolIE-ID ::= 115
+id-SignallingIndication ProtocolIE-ID ::= 116
+id-hS-DSCH-MAC-d-Flow-ID ProtocolIE-ID ::= 117
+id-UESBI-Iu ProtocolIE-ID ::= 118
+id-PositionData ProtocolIE-ID ::= 119
+id-PositionDataSpecificToGERANIuMode ProtocolIE-ID ::= 120
+id-CellLoadInformationGroup ProtocolIE-ID ::= 121
+id-AccuracyFulfilmentIndicator ProtocolIE-ID ::= 122
+id-InformationTransferType ProtocolIE-ID ::= 123
+id-TraceRecordingSessionInformation ProtocolIE-ID ::= 124
+id-TracePropagationParameters ProtocolIE-ID ::= 125
+id-InterSystemInformationTransferType ProtocolIE-ID ::= 126
+id-SelectedPLMN-ID ProtocolIE-ID ::= 127
+id-RedirectionCompleted ProtocolIE-ID ::= 128
+id-RedirectionIndication ProtocolIE-ID ::= 129
+id-NAS-SequenceNumber ProtocolIE-ID ::= 130
+id-RejectCauseValue ProtocolIE-ID ::= 131
+id-APN ProtocolIE-ID ::= 132
+id-CNMBMSLinkingInformation ProtocolIE-ID ::= 133
+id-DeltaRAListofIdleModeUEs ProtocolIE-ID ::= 134
+id-FrequenceLayerConvergenceFlag ProtocolIE-ID ::= 135
+id-InformationExchangeID ProtocolIE-ID ::= 136
+id-InformationExchangeType ProtocolIE-ID ::= 137
+id-InformationRequested ProtocolIE-ID ::= 138
+id-InformationRequestType ProtocolIE-ID ::= 139
+id-IPMulticastAddress ProtocolIE-ID ::= 140
+id-JoinedMBMSBearerServicesList ProtocolIE-ID ::= 141
+id-LeftMBMSBearerServicesList ProtocolIE-ID ::= 142
+id-MBMSBearerServiceType ProtocolIE-ID ::= 143
+id-MBMSCNDe-Registration ProtocolIE-ID ::= 144
+id-MBMSServiceArea ProtocolIE-ID ::= 145
+id-MBMSSessionDuration ProtocolIE-ID ::= 146
+id-MBMSSessionIdentity ProtocolIE-ID ::= 147
+id-PDP-TypeInformation ProtocolIE-ID ::= 148
+id-RAB-Parameters ProtocolIE-ID ::= 149
+id-RAListofIdleModeUEs ProtocolIE-ID ::= 150
+id-MBMSRegistrationRequestType ProtocolIE-ID ::= 151
+id-SessionUpdateID ProtocolIE-ID ::= 152
+id-TMGI ProtocolIE-ID ::= 153
+id-TransportLayerInformation ProtocolIE-ID ::= 154
+id-UnsuccessfulLinkingList ProtocolIE-ID ::= 155
+id-MBMSLinkingInformation ProtocolIE-ID ::= 156
+id-MBMSSessionRepetitionNumber ProtocolIE-ID ::= 157
+id-AlternativeRABConfiguration ProtocolIE-ID ::= 158
+id-AlternativeRABConfigurationRequest ProtocolIE-ID ::= 159
+id-E-DCH-MAC-d-Flow-ID ProtocolIE-ID ::= 160
+id-SourceBSS-ToTargetBSS-TransparentContainer ProtocolIE-ID ::= 161
+id-TargetBSS-ToSourceBSS-TransparentContainer ProtocolIE-ID ::= 162
+id-TimeToMBMSDataTransfer ProtocolIE-ID ::= 163
+id-IncludeVelocity ProtocolIE-ID ::= 164
+id-VelocityEstimate ProtocolIE-ID ::= 165
+id-RedirectAttemptFlag ProtocolIE-ID ::= 166
+id-RAT-Type ProtocolIE-ID ::= 167
+id-PeriodicLocationInfo ProtocolIE-ID ::= 168
+id-MBMSCountingInformation ProtocolIE-ID ::= 169
+id-170-not-to-be-used-for-IE-ids ProtocolIE-ID ::= 170
+id-ExtendedRNC-ID ProtocolIE-ID ::= 171
+id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf ProtocolIE-ID ::= 172
+id-Alt-RAB-Parameter-ExtendedMaxBitrateInf ProtocolIE-ID ::= 173
+id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList ProtocolIE-ID ::= 174
+id-Ass-RAB-Parameter-ExtendedMaxBitrateList ProtocolIE-ID ::= 175
+id-RAB-Parameter-ExtendedGuaranteedBitrateList ProtocolIE-ID ::= 176
+id-RAB-Parameter-ExtendedMaxBitrateList ProtocolIE-ID ::= 177
+id-Requested-RAB-Parameter-ExtendedMaxBitrateList ProtocolIE-ID ::= 178
+id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList ProtocolIE-ID ::= 179
+id-LAofIdleModeUEs ProtocolIE-ID ::= 180
+id-newLAListofIdleModeUEs ProtocolIE-ID ::= 181
+id-LAListwithNoIdleModeUEsAnyMore ProtocolIE-ID ::= 182
+id-183-not-to-be-used-for-IE-ids ProtocolIE-ID ::= 183
+id-GANSS-PositioningDataSet ProtocolIE-ID ::= 184
+id-RequestedGANSSAssistanceData ProtocolIE-ID ::= 185
+id-BroadcastGANSSAssistanceDataDecipheringKeys ProtocolIE-ID ::= 186
+id-d-RNTI-for-NoIuCSUP ProtocolIE-ID ::= 187
+id-RAB-SetupList-EnhancedRelocCompleteReq ProtocolIE-ID ::= 188
+id-RAB-SetupItem-EnhancedRelocCompleteReq ProtocolIE-ID ::= 189
+id-RAB-SetupList-EnhancedRelocCompleteRes ProtocolIE-ID ::= 190
+id-RAB-SetupItem-EnhancedRelocCompleteRes ProtocolIE-ID ::= 191
+id-RAB-SetupList-EnhRelocInfoReq ProtocolIE-ID ::= 192
+id-RAB-SetupItem-EnhRelocInfoReq ProtocolIE-ID ::= 193
+id-RAB-SetupList-EnhRelocInfoRes ProtocolIE-ID ::= 194
+id-RAB-SetupItem-EnhRelocInfoRes ProtocolIE-ID ::= 195
+id-OldIuSigConId ProtocolIE-ID ::= 196
+id-RAB-FailedList-EnhRelocInfoRes ProtocolIE-ID ::= 197
+id-RAB-FailedItem-EnhRelocInfoRes ProtocolIE-ID ::= 198
+id-Global-ENB-ID ProtocolIE-ID ::= 199
+id-UE-History-Information ProtocolIE-ID ::= 200
+id-MBMSSynchronisationInformation ProtocolIE-ID ::= 201
+id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 202
+id-CSG-Id ProtocolIE-ID ::= 203
+id-OldIuSigConIdCS ProtocolIE-ID ::= 204
+id-OldIuSigConIdPS ProtocolIE-ID ::= 205
+id-GlobalCN-IDCS ProtocolIE-ID ::= 206
+id-GlobalCN-IDPS ProtocolIE-ID ::= 207
+id-SourceExtendedRNC-ID ProtocolIE-ID ::= 208
+id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes ProtocolIE-ID ::= 209
+id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes ProtocolIE-ID ::= 210
+id-SourceRNC-ID ProtocolIE-ID ::= 211
+id-Relocation-TargetRNC-ID ProtocolIE-ID ::= 212
+id-Relocation-TargetExtendedRNC-ID ProtocolIE-ID ::= 213
+id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf ProtocolIE-ID ::= 214
+id-Alt-RAB-Parameter-SupportedMaxBitrateInf ProtocolIE-ID ::= 215
+id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList ProtocolIE-ID ::= 216
+id-Ass-RAB-Parameter-SupportedMaxBitrateList ProtocolIE-ID ::= 217
+id-RAB-Parameter-SupportedGuaranteedBitrateList ProtocolIE-ID ::= 218
+id-RAB-Parameter-SupportedMaxBitrateList ProtocolIE-ID ::= 219
+id-Requested-RAB-Parameter-SupportedMaxBitrateList ProtocolIE-ID ::= 220
+id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList ProtocolIE-ID ::= 221
+id-Relocation-SourceRNC-ID ProtocolIE-ID ::= 222
+id-Relocation-SourceExtendedRNC-ID ProtocolIE-ID ::= 223
+id-EncryptionKey ProtocolIE-ID ::= 224
+id-IntegrityProtectionKey ProtocolIE-ID ::= 225
+id-SRVCC-HO-Indication ProtocolIE-ID ::= 226
+id-SRVCC-Information ProtocolIE-ID ::= 227
+id-SRVCC-Operation-Possible ProtocolIE-ID ::= 228
+id-CSG-Id-List ProtocolIE-ID ::= 229
+id-PSRABtobeReplaced ProtocolIE-ID ::= 230
+id-E-UTRAN-Service-Handover ProtocolIE-ID ::= 231
+id-UE-AggregateMaximumBitRate ProtocolIE-ID ::= 233
+id-CSG-Membership-Status ProtocolIE-ID ::= 234
+id-Cell-Access-Mode ProtocolIE-ID ::= 235
+id-IP-Source-Address ProtocolIE-ID ::= 236
+id-CSFB-Information ProtocolIE-ID ::= 237
+id-PDP-TypeInformation-extension ProtocolIE-ID ::= 238
+id-MSISDN ProtocolIE-ID ::= 239
+id-Offload-RAB-Parameters ProtocolIE-ID ::= 240
+id-LGW-TransportLayerAddress ProtocolIE-ID ::= 241
+id-Correlation-ID ProtocolIE-ID ::= 242
+id-IRAT-Measurement-Configuration ProtocolIE-ID ::= 243
+id-MDT-Configuration ProtocolIE-ID ::= 244
+id-Priority-Class-Indicator ProtocolIE-ID ::= 245
+id-RNSAPRelocationParameters ProtocolIE-ID ::= 247
+id-RABParametersList ProtocolIE-ID ::= 248
+id-Management-Based-MDT-Allowed ProtocolIE-ID ::= 249
+id-HigherBitratesThan16MbpsFlag ProtocolIE-ID ::= 250
+id-Trace-Collection-Entity-IP-Addess ProtocolIE-ID ::= 251
+id-End-Of-CSFB ProtocolIE-ID ::= 252
+id-Time-UE-StayedInCell-EnhancedGranularity ProtocolIE-ID ::= 253
+id-Out-Of-UTRAN ProtocolIE-ID ::= 254
+id-TraceRecordingSessionReference ProtocolIE-ID ::= 255
+id-IMSI ProtocolIE-ID ::= 256
+id-HO-Cause ProtocolIE-ID ::= 257
+id-VoiceSupportMatchIndicator ProtocolIE-ID ::= 258
+id-RSRVCC-HO-Indication ProtocolIE-ID ::= 259
+id-RSRVCC-Information ProtocolIE-ID ::= 260
+id-AnchorPLMN-ID ProtocolIE-ID ::= 261
+id-Tunnel-Information-for-BBF ProtocolIE-ID ::= 262
+id-Management-Based-MDT-PLMN-List ProtocolIE-ID ::= 263
+id-SignallingBasedMDTPLMNList ProtocolIE-ID ::= 264
+id-M4Report ProtocolIE-ID ::= 265
+id-M5Report ProtocolIE-ID ::= 266
+id-M6Report ProtocolIE-ID ::= 267
+id-M7Report ProtocolIE-ID ::= 268
+id-TimingDifferenceULDL ProtocolIE-ID ::= 269
+id-Serving-Cell-Identifier ProtocolIE-ID ::= 270
+id-EARFCN-Extended ProtocolIE-ID ::= 271
+id-RSRVCC-Operation-Possible ProtocolIE-ID ::= 272
+id-SIPTO-LGW-TransportLayerAddress ProtocolIE-ID ::= 273
+id-SIPTO-Correlation-ID ProtocolIE-ID ::= 274
+id-LHN-ID ProtocolIE-ID ::= 275
+id-Session-Re-establishment-Indicator ProtocolIE-ID ::= 276
+id-LastE-UTRANPLMNIdentity ProtocolIE-ID ::= 277
+id-RSRQ-Type ProtocolIE-ID ::= 278
+id-RSRQ-Extension ProtocolIE-ID ::= 279
+
+END
diff --git a/asn1/ranap/RANAP-Containers.asn b/asn1/ranap/RANAP-Containers.asn
new file mode 100644
index 0000000..e31d847
--- /dev/null
+++ b/asn1/ranap/RANAP-Containers.asn
@@ -0,0 +1,194 @@
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+RANAP-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ Presence,
+ PrivateIE-ID,
+ ProtocolExtensionID,
+ ProtocolIE-ID
+FROM RANAP-CommonDataTypes
+
+ maxPrivateIEs,
+ maxProtocolExtensions,
+ maxProtocolIEs
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-IES ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-IES-PAIR ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &firstCriticality Criticality,
+ &FirstValue,
+ &secondCriticality Criticality,
+ &SecondValue,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ FIRST CRITICALITY &firstCriticality
+ FIRST TYPE &FirstValue
+ SECOND CRITICALITY &secondCriticality
+ SECOND TYPE &SecondValue
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+RANAP-PROTOCOL-EXTENSION ::= CLASS {
+ &id ProtocolExtensionID UNIQUE,
+ &criticality Criticality,
+ &Extension,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ EXTENSION &Extension
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+RANAP-PRIVATE-IES ::= CLASS {
+ &id PrivateIE-ID,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {RANAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {RANAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id RANAP-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality RANAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value RANAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Protocol IE Pairs
+--
+-- **************************************************************
+
+ProtocolIE-ContainerPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-FieldPair {{IEsSetParam}}
+
+ProtocolIE-FieldPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
+ id RANAP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
+ firstCriticality RANAP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
+ firstValue RANAP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
+ secondCriticality RANAP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
+ secondValue RANAP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-Container {{IEsSetParam}}
+
+ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-ContainerPair {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+ SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+ ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+ id RANAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
+ criticality RANAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
+ extensionValue RANAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {RANAP-PRIVATE-IES : IEsSetParam } ::=
+ SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+ PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {RANAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+ id RANAP-PRIVATE-IES.&id ({IEsSetParam}),
+ criticality RANAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
+ value RANAP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
+}
+
+END
diff --git a/asn1/ranap/RANAP-IEs.asn b/asn1/ranap/RANAP-IEs.asn
new file mode 100644
index 0000000..843ec8d
--- /dev/null
+++ b/asn1/ranap/RANAP-IEs.asn
@@ -0,0 +1,2208 @@
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+RANAP-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxNrOfCSGs,
+ maxNrOfErrors,
+ maxNrOfPDPDirections,
+ maxNrOfPoints,
+ maxNrOfRABs,
+ maxNrOfSRBs,
+ maxNrOfSeparateTrafficDirections,
+ maxRAB-Subflows,
+ maxRAB-SubflowCombination,
+ maxNrOfLevels,
+ maxNrOfAltValues,
+ maxNrOfSNAs,
+ maxNrOfLAs,
+ maxNrOfPLMNsSN,
+ maxSet,
+ maxNrOfHSDSCHMACdFlows-1,
+ maxNrOfUEsToBeTraced,
+ maxNrOfInterfaces,
+ maxnoofMulticastServicesPerRNC,
+ maxMBMSSA,
+ maxMBMSRA,
+ maxnoofMulticastServicesPerUE,
+ maxNrOfEDCHMACdFlows-1,
+ maxGANSSSet,
+ maxNrOfEUTRAFreqs,
+ maxNrOfCellIds,
+ maxNrOfRAIs,
+ maxNrOfLAIs,
+ maxNrOfVol,
+ maxSizeOfIMSInfo,
+ maxnoofMDTPLMNs,
+ maxProtocolExtensions,
+
+ id-CN-DomainIndicator,
+ id-MessageStructure,
+ id-SRB-TrCH-Mapping,
+ id-TypeOfError,
+ id-hS-DSCH-MAC-d-Flow-ID,
+ id-SignallingIndication,
+ id-CellLoadInformationGroup,
+ id-TraceRecordingSessionInformation,
+ id-MBMSLinkingInformation,
+ id-AlternativeRABConfiguration,
+ id-AlternativeRABConfigurationRequest,
+ id-E-DCH-MAC-d-Flow-ID,
+ id-RAC,
+ id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf,
+ id-Alt-RAB-Parameter-ExtendedMaxBitrateInf,
+ id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList,
+ id-Ass-RAB-Parameter-ExtendedMaxBitrateList,
+ id-RAB-Parameter-ExtendedGuaranteedBitrateList,
+ id-RAB-Parameter-ExtendedMaxBitrateList,
+ id-Requested-RAB-Parameter-ExtendedMaxBitrateList,
+ id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList,
+ id-LAofIdleModeUEs,
+ id-newLAListofIdleModeUEs,
+ id-LAListwithNoIdleModeUEsAnyMore,
+ id-ExtendedRNC-ID,
+ id-GANSS-PositioningDataSet,
+ id-d-RNTI-for-NoIuCSUP,
+ id-UE-History-Information,
+ id-SubscriberProfileIDforRFP,
+ id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf,
+ id-Alt-RAB-Parameter-SupportedMaxBitrateInf,
+ id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList,
+ id-Ass-RAB-Parameter-SupportedMaxBitrateList,
+ id-RAB-Parameter-SupportedGuaranteedBitrateList,
+ id-RAB-Parameter-SupportedMaxBitrateList,
+ id-Requested-RAB-Parameter-SupportedMaxBitrateList,
+ id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList,
+ id-PSRABtobeReplaced,
+ id-SRVCC-Information,
+ id-CSG-Id,
+ id-CSFB-Information,
+ id-IRAT-Measurement-Configuration,
+ id-Management-Based-MDT-Allowed,
+ id-Time-UE-StayedInCell-EnhancedGranularity,
+ id-HO-Cause,
+ id-TraceRecordingSessionReference,
+ id-IMSI,
+ id-Management-Based-MDT-PLMN-List,
+ id-SignallingBasedMDTPLMNList,
+ id-M4Report,
+ id-M5Report,
+ id-M6Report,
+ id-M7Report,
+ id-TimingDifferenceULDL,
+ id-Trace-Collection-Entity-IP-Addess,
+ id-Serving-Cell-Identifier,
+ id-EARFCN-Extended,
+ id-LastE-UTRANPLMNIdentity,
+ id-RSRQ-Type,
+ id-RSRQ-Extension
+
+
+FROM RANAP-Constants
+
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+FROM RANAP-CommonDataTypes
+
+ IE
+FROM RANAP-PDU;
+
+IE-Extensions ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF IE
+
+-- A
+
+AccuracyFulfilmentIndicator ::= ENUMERATED{
+ requested-Accuracy-Fulfilled,
+ requested-Accuracy-Not-Fulfilled,
+ ...
+}
+
+AllocationOrRetentionPriority ::= SEQUENCE {
+ priorityLevel PriorityLevel,
+ pre-emptionCapability Pre-emptionCapability,
+ pre-emptionVulnerability Pre-emptionVulnerability,
+ queuingAllowed QueuingAllowed,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Alt-RAB-Parameters ::= SEQUENCE {
+ altMaxBitrateInf Alt-RAB-Parameter-MaxBitrateInf OPTIONAL,
+ altGuaranteedBitRateInf Alt-RAB-Parameter-GuaranteedBitrateInf OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf ::= SEQUENCE {
+ altExtendedGuaranteedBitrateType Alt-RAB-Parameter-GuaranteedBitrateType,
+ altExtendedGuaranteedBitrates Alt-RAB-Parameter-ExtendedGuaranteedBitrates OPTIONAL
+ -- This IE shall be present if the Type of Extended Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ ...
+}
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ Alt-RAB-Parameter-ExtendedGuaranteedBitrateList
+
+Alt-RAB-Parameter-ExtendedGuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Alt-RAB-Parameter-GuaranteedBitrateInf ::= SEQUENCE {
+ altGuaranteedBitrateType Alt-RAB-Parameter-GuaranteedBitrateType,
+ altGuaranteedBitrates Alt-RAB-Parameter-GuaranteedBitrates OPTIONAL
+ -- This IE shall be present if the Type of Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ ...
+}
+
+Alt-RAB-Parameter-GuaranteedBitrateType ::= ENUMERATED{
+ unspecified,
+ value-range,
+ discrete-values,
+ ...
+}
+
+Alt-RAB-Parameter-GuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ Alt-RAB-Parameter-GuaranteedBitrateList
+
+
+Alt-RAB-Parameter-GuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+Alt-RAB-Parameter-SupportedGuaranteedBitrateInf ::= SEQUENCE {
+ altSupportedGuaranteedBitrateType Alt-RAB-Parameter-GuaranteedBitrateType,
+ altSupportedGuaranteedBitrates Alt-RAB-Parameter-SupportedGuaranteedBitrates OPTIONAL
+ -- This IE shall be present if the Type of Supported Guaranteed Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Alt-RAB-Parameter-SupportedGuaranteedBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ SupportedRAB-ParameterBitrateList
+
+
+Alt-RAB-Parameter-ExtendedMaxBitrateInf ::= SEQUENCE {
+ altExtendedMaxBitrateType Alt-RAB-Parameter-MaxBitrateType,
+ altExtendedMaxBitrates Alt-RAB-Parameter-ExtendedMaxBitrates OPTIONAL
+ -- This IE shall be present if the Type of Extended Alternative Maximum Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ ...
+}
+
+Alt-RAB-Parameter-ExtendedMaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ Alt-RAB-Parameter-ExtendedMaxBitrateList
+
+Alt-RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+Alt-RAB-Parameter-MaxBitrateInf ::= SEQUENCE {
+ altMaxBitrateType Alt-RAB-Parameter-MaxBitrateType,
+ altMaxBitrates Alt-RAB-Parameter-MaxBitrates OPTIONAL
+ -- This IE shall be present if the Type of Alternative Maximun Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ ...
+}
+
+Alt-RAB-Parameter-MaxBitrateType ::= ENUMERATED{
+ unspecified,
+ value-range,
+ discrete-values,
+ ...
+}
+
+Alt-RAB-Parameter-MaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ Alt-RAB-Parameter-MaxBitrateList
+
+
+Alt-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+
+Alt-RAB-Parameter-SupportedMaxBitrateInf ::= SEQUENCE {
+ altSupportedMaxBitrateType Alt-RAB-Parameter-MaxBitrateType,
+ altSupportedMaxBitrates Alt-RAB-Parameter-SupportedMaxBitrates OPTIONAL
+ -- This IE shall be present if the Type of Supported Alternative Maximun Bit Rates Information IE is set to "Value range" or "Discrete values" --,
+ iE-Extensions IE-Extensions OPTIONAL,
+...
+}
+
+
+Alt-RAB-Parameter-SupportedMaxBitrates ::= SEQUENCE (SIZE (1..maxNrOfAltValues)) OF
+ SupportedRAB-ParameterBitrateList
+
+AlternativeRABConfigurationRequest ::= ENUMERATED{
+ alternative-RAB-configuration-Requested,
+ ...
+}
+
+APN ::= OCTET STRING (SIZE (1..255))
+-- Reference: 23.003
+
+AreaIdentity ::= CHOICE {
+ sAI SAI,
+ geographicalArea GeographicalArea,
+ ...
+}
+
+Ass-RAB-Parameters ::= SEQUENCE {
+ assMaxBitrateInf Ass-RAB-Parameter-MaxBitrateList OPTIONAL,
+ assGuaranteedBitRateInf Ass-RAB-Parameter-GuaranteedBitrateList OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Ass-RAB-Parameter-ExtendedGuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Ass-RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+
+Ass-RAB-Parameter-GuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+
+Ass-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+AuthorisedPLMNs ::= SEQUENCE (SIZE (1..maxNrOfPLMNsSN)) OF
+ SEQUENCE {
+ pLMNidentity PLMNidentity,
+ authorisedSNAsList AuthorisedSNAs OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+AuthorisedSNAs ::= SEQUENCE (SIZE (1..maxNrOfSNAs)) OF SNAC
+
+
+-- B
+
+BindingID ::= OCTET STRING (SIZE (4))
+
+BroadcastAssistanceDataDecipheringKeys ::= SEQUENCE {
+ cipheringKeyFlag BIT STRING (SIZE (1)),
+ currentDecipheringKey BIT STRING (SIZE (56)),
+ nextDecipheringKey BIT STRING (SIZE (56)),
+ ...
+}
+
+-- C
+
+
+Cause ::= CHOICE {
+ radioNetwork CauseRadioNetwork,
+ transmissionNetwork CauseTransmissionNetwork,
+ nAS CauseNAS,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ non-Standard CauseNon-Standard,
+ ...,
+ radioNetworkExtension CauseRadioNetworkExtension
+}
+
+CauseMisc ::= INTEGER {
+ om-intervention (113),
+ no-resource-available (114),
+ unspecified-failure (115),
+ network-optimisation (116)
+} (113..128)
+
+CauseNAS ::= INTEGER {
+ user-restriction-start-indication (81),
+ user-restriction-end-indication (82),
+ normal-release (83),
+ csg-subscription-expiry(84)
+} (81..96)
+
+CauseProtocol ::= INTEGER {
+ transfer-syntax-error (97),
+ semantic-error (98),
+ message-not-compatible-with-receiver-state (99),
+ abstract-syntax-error-reject (100),
+ abstract-syntax-error-ignore-and-notify (101),
+ abstract-syntax-error-falsely-constructed-message (102)
+} (97..112)
+
+CauseRadioNetwork ::= INTEGER {
+ rab-pre-empted (1),
+ trelocoverall-expiry (2),
+ trelocprep-expiry (3),
+ treloccomplete-expiry (4),
+ tqueing-expiry (5),
+ relocation-triggered (6),
+ trellocalloc-expiry(7),
+ unable-to-establish-during-relocation (8),
+ unknown-target-rnc (9),
+ relocation-cancelled (10),
+ successful-relocation (11),
+ requested-ciphering-and-or-integrity-protection-algorithms-not-supported (12),
+ conflict-with-already-existing-integrity-protection-and-or-ciphering-information (13),
+ failure-in-the-radio-interface-procedure (14),
+ release-due-to-utran-generated-reason (15),
+ user-inactivity (16),
+ time-critical-relocation (17),
+ requested-traffic-class-not-available (18),
+ invalid-rab-parameters-value (19),
+ requested-maximum-bit-rate-not-available (20),
+ requested-guaranteed-bit-rate-not-available (21),
+ requested-transfer-delay-not-achievable (22),
+ invalid-rab-parameters-combination (23),
+ condition-violation-for-sdu-parameters (24),
+ condition-violation-for-traffic-handling-priority (25),
+ condition-violation-for-guaranteed-bit-rate (26),
+ user-plane-versions-not-supported (27),
+ iu-up-failure (28),
+ relocation-failure-in-target-CN-RNC-or-target-system(29),
+ invalid-RAB-ID (30),
+ no-remaining-rab (31),
+ interaction-with-other-procedure (32),
+ requested-maximum-bit-rate-for-dl-not-available (33),
+ requested-maximum-bit-rate-for-ul-not-available (34),
+ requested-guaranteed-bit-rate-for-dl-not-available (35),
+ requested-guaranteed-bit-rate-for-ul-not-available (36),
+ repeated-integrity-checking-failure (37),
+ requested-request-type-not-supported (38),
+ request-superseded (39),
+ release-due-to-UE-generated-signalling-connection-release (40),
+ resource-optimisation-relocation (41),
+ requested-information-not-available (42),
+ relocation-desirable-for-radio-reasons (43),
+ relocation-not-supported-in-target-RNC-or-target-system (44),
+ directed-retry (45),
+ radio-connection-with-UE-Lost (46),
+ rNC-unable-to-establish-all-RFCs (47),
+ deciphering-keys-not-available(48),
+ dedicated-assistance-data-not-available(49),
+ relocation-target-not-allowed (50),
+ location-reporting-congestion (51),
+ reduce-load-in-serving-cell (52),
+ no-radio-resources-available-in-target-cell (53),
+ gERAN-Iumode-failure (54),
+ access-restricted-due-to-shared-networks (55),
+ incoming-relocation-not-supported-due-to-PUESBINE-feature (56),
+ traffic-load-in-the-target-cell-higher-than-in-the-source-cell (57),
+ mBMS-no-multicast-service-for-this-UE(58),
+ mBMS-unknown-UE-ID(59),
+ successful-MBMS-session-start-no-data-bearer-necessary(60),
+ mBMS-superseded-due-to-NNSF(61),
+ mBMS-UE-linking-already-done(62),
+ mBMS-UE-de-linking-failure-no-existing-UE-linking(63),
+ tMGI-unknown(64)
+} (1..64)
+
+CauseRadioNetworkExtension ::= INTEGER {
+ iP-multicast-address-and-APN-not-valid(257),
+ mBMS-de-registration-rejected-due-to-implicit-registration(258),
+ mBMS-request-superseded(259),
+ mBMS-de-registration-during-session-not-allowed(260),
+ mBMS-no-data-bearer-necessary(261),
+ periodicLocationInformationNotAvailable(262),
+ gTP-Resources-Unavailable(263),
+ tMGI-inUse-overlapping-MBMS-service-area(264),
+ mBMS-no-cell-in-MBMS-service-area(265),
+ no-Iu-CS-UP-relocation(266),
+ successful-MBMS-Session-Start-IP-Multicast-Bearer-established(267),
+ cS-fallback-triggered(268),
+ invalid-CSG-Id(269)
+} (257..512)
+
+CauseNon-Standard ::= INTEGER (129..256)
+-- Cause value 256 shall not be used --
+
+CauseTransmissionNetwork ::= INTEGER {
+ signalling-transport-resource-failure (65),
+ iu-transport-connection-failed-to-establish (66)
+} (65..80)
+
+Cell-Access-Mode::= ENUMERATED {
+ hybrid,
+ ...
+}
+
+CellBased::= SEQUENCE {
+ cellIdList CellIdList,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CellIdList ::= SEQUENCE (SIZE (1..maxNrOfCellIds)) OF
+ Cell-Id
+
+Cell-Id ::= INTEGER (0..268435455)
+
+Cell-Capacity-Class-Value ::= INTEGER (1..100,...)
+
+CellLoadInformation ::= SEQUENCE {
+ cell-Capacity-Class-Value Cell-Capacity-Class-Value,
+ loadValue LoadValue,
+ rTLoadValue RTLoadValue OPTIONAL,
+ nRTLoadInformationValue NRTLoadInformationValue OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CellLoadInformationGroup ::= SEQUENCE {
+ sourceCellID SourceCellID,
+ uplinkCellLoadInformation CellLoadInformation OPTIONAL,
+ downlinkCellLoadInformation CellLoadInformation OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CellType ::= ENUMERATED{
+ macro,
+ micro,
+ pico,
+ femto,
+ ...
+}
+
+ClientType ::= ENUMERATED {
+ emergency-Services,
+ value-Added-Services,
+ pLMN-Operator-Services,
+ lawful-Intercept-Services,
+ pLMN-Operator-Broadcast-Services,
+ pLMN-Operator-O-et-M,
+ pLMN-Operator-Anonymous-Statistics,
+ pLMN-Operator-Target-MS-Service-Support,
+ ...
+}
+
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+ SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ repetitionNumber RepetitionNumber0 OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+MessageStructure ::= SEQUENCE (SIZE (1..maxNrOfLevels)) OF
+ SEQUENCE {
+ iE-ID ProtocolIE-ID,
+ repetitionNumber RepetitionNumber1 OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+CGI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lAC LAC,
+ cI CI,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+ChosenEncryptionAlgorithm ::= EncryptionAlgorithm
+
+ChosenIntegrityProtectionAlgorithm ::= IntegrityProtectionAlgorithm
+
+CI ::= OCTET STRING (SIZE (2))
+
+ClassmarkInformation2 ::= OCTET STRING
+
+ClassmarkInformation3 ::= OCTET STRING
+
+CN-DomainIndicator ::= ENUMERATED {
+ cs-domain,
+ ps-domain
+}
+
+CN-ID ::= INTEGER (0..4095)
+
+Correlation-ID ::= OCTET STRING (SIZE (4))
+
+CSFB-Information ::= ENUMERATED {
+ csfb,
+ csfb-high-priority,
+ ...
+}
+
+CSG-Id ::= BIT STRING (SIZE (27))
+
+CSG-Id-List ::= SEQUENCE (SIZE (1..maxNrOfCSGs)) OF
+ CSG-Id
+
+CSG-Membership-Status ::= ENUMERATED {
+ member,
+ non-member,
+ ...
+}
+
+-- D
+
+DataPDUType ::= ENUMERATED {
+ pDUtype0,
+ pDUtype1,
+ ...
+}
+
+DataVolumeReference ::= INTEGER (0..255)
+
+DataVolumeReportingIndication ::= ENUMERATED {
+ do-report,
+ do-not-report
+}
+
+DCH-ID ::= INTEGER (0..255)
+
+DeliveryOfErroneousSDU ::= ENUMERATED {
+ yes,
+ no,
+ no-error-detection-consideration
+}
+
+DeliveryOrder::= ENUMERATED {
+ delivery-order-requested,
+ delivery-order-not-requested
+}
+
+DeltaRAListofIdleModeUEs ::= SEQUENCE {
+ newRAListofIdleModeUEs NewRAListofIdleModeUEs OPTIONAL,
+ rAListwithNoIdleModeUEsAnyMore RAListwithNoIdleModeUEsAnyMore OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+NewRAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+ RAC
+
+RAListwithNoIdleModeUEsAnyMore ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+ RAC
+
+ForwardingIndication::=ENUMERATED{
+ forwarding-admitted,
+ ...
+}
+
+DL-GTP-PDU-SequenceNumber ::= INTEGER (0..65535)
+
+DL-N-PDU-SequenceNumber ::= INTEGER (0..65535)
+
+D-RNTI ::= INTEGER (0..1048575)
+
+DRX-CycleLengthCoefficient ::= INTEGER (6..9)
+
+DSCH-ID ::= INTEGER (0..255)
+
+
+-- E
+
+EARFCN-Extended ::= INTEGER (65536..262143, ...)
+
+E-DCH-MAC-d-Flow-ID ::= INTEGER (0.. maxNrOfEDCHMACdFlows-1)
+
+ENB-ID ::= CHOICE {
+ macroENB-ID BIT STRING (SIZE(20)),
+ homeENB-ID BIT STRING (SIZE(28)),
+ ...
+}
+
+EncryptionAlgorithm ::= INTEGER { no-encryption (0), standard-UMTS-encryption-algorith-UEA1 (1), standard-UMTS-encryption-algorithm-UEA2 (2) } (0..15)
+
+EncryptionInformation ::= SEQUENCE {
+ permittedAlgorithms PermittedEncryptionAlgorithms,
+ key EncryptionKey,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+EncryptionKey ::= BIT STRING (SIZE (128))
+-- Reference: 33.102
+
+End-Of-CSFB ::= ENUMERATED{
+ end-of-CSFB,
+ ...
+}
+
+EquipmentsToBeTraced ::= CHOICE {
+ iMEIlist IMEIList,
+ iMEISVlist IMEISVList,
+ iMEIgroup IMEIGroup,
+ iMEISVgroup IMEISVGroup,
+ ...
+}
+
+E-UTRAN-Service-Handover ::= ENUMERATED {
+ handover-to-E-UTRAN-shall-not-be-performed,
+ ...
+}
+
+Event ::= ENUMERATED {
+ stop-change-of-service-area,
+ direct,
+ change-of-servicearea,
+ ...,
+ stop-direct,
+ periodic,
+ stop-periodic
+}
+
+Event1F-Parameters ::= SEQUENCE {
+ measurementQuantity MeasurementQuantity,
+ threshold INTEGER(-120..165),
+ ...
+}
+
+Event1I-Parameters ::= SEQUENCE {
+ threshold INTEGER(-120..-25),
+ ...
+}
+
+ExtendedGuaranteedBitrate ::= INTEGER (16000001..256000000)
+-- Unit is bits per sec
+
+ExtendedMaxBitrate ::= INTEGER (16000001..256000000)
+-- Unit is bits per sec
+
+ExtendedRNC-ID ::= INTEGER (4096..65535)
+
+-- F
+
+FrameSequenceNumber ::= INTEGER(0..15)
+
+FrequenceLayerConvergenceFlag ::= ENUMERATED {
+ no-FLC-flag,
+ ...
+}
+
+-- G
+
+GANSS-PositioningDataSet ::= SEQUENCE(SIZE(1..maxGANSSSet)) OF GANSS-PositioningMethodAndUsage
+
+GANSS-PositioningMethodAndUsage ::= OCTET STRING (SIZE(1))
+
+GeographicalArea ::= CHOICE {
+ point GA-Point,
+ pointWithUnCertainty GA-PointWithUnCertainty,
+ polygon GA-Polygon,
+ ...,
+ pointWithUncertaintyEllipse GA-PointWithUnCertaintyEllipse,
+ pointWithAltitude GA-PointWithAltitude,
+ pointWithAltitudeAndUncertaintyEllipsoid GA-PointWithAltitudeAndUncertaintyEllipsoid,
+ ellipsoidArc GA-EllipsoidArc
+}
+
+GeographicalCoordinates ::= SEQUENCE {
+ latitudeSign ENUMERATED { north, south },
+ latitude INTEGER (0..8388607),
+ longitude INTEGER (-8388608..8388607),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-AltitudeAndDirection ::= SEQUENCE {
+ directionOfAltitude ENUMERATED {height, depth},
+ altitude INTEGER (0..32767),
+ ...
+}
+
+GA-EllipsoidArc ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ innerRadius INTEGER (0..65535),
+ uncertaintyRadius INTEGER (0..127),
+ offsetAngle INTEGER (0..179),
+ includedAngle INTEGER(0..179),
+ confidence INTEGER (0..127),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-Point ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-PointWithAltitude ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ altitudeAndDirection GA-AltitudeAndDirection,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-PointWithAltitudeAndUncertaintyEllipsoid ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ altitudeAndDirection GA-AltitudeAndDirection,
+ uncertaintyEllipse GA-UncertaintyEllipse,
+ uncertaintyAltitude INTEGER (0..127),
+ confidence INTEGER (0..127),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-PointWithUnCertainty ::=SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ iE-Extensions IE-Extensions OPTIONAL,
+ uncertaintyCode INTEGER (0..127)
+}
+
+GA-PointWithUnCertaintyEllipse ::= SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ uncertaintyEllipse GA-UncertaintyEllipse,
+ confidence INTEGER (0..127),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF
+ SEQUENCE {
+ geographicalCoordinates GeographicalCoordinates,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+GA-UncertaintyEllipse ::= SEQUENCE {
+ uncertaintySemi-major INTEGER (0..127),
+ uncertaintySemi-minor INTEGER (0..127),
+ orientationOfMajorAxis INTEGER (0..179), -- The values 90..179 shall not be used.
+ ...
+}
+
+GERAN-BSC-Container ::= OCTET STRING
+ -- GERAN BSC Container as defined in TS 48.008 [11] --
+
+
+GERAN-Cell-ID ::= SEQUENCE {
+ lAI LAI,
+ rAC RAC,
+ cI CI,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+GERAN-Classmark ::= OCTET STRING
+ -- GERAN Classmark as defined in TS 48.008 [11] --
+
+GlobalCN-ID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ cN-ID CN-ID
+}
+
+
+GlobalRNC-ID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ rNC-ID RNC-ID
+}
+
+GTP-TEI ::= OCTET STRING (SIZE (4))
+
+GuaranteedBitrate ::= INTEGER (0..16000000)
+-- Unit is bits per sec
+
+-- H
+
+HigherBitratesThan16MbpsFlag ::= ENUMERATED{
+ allowed,
+ not-allowed,
+ ...
+}
+
+HS-DSCH-MAC-d-Flow-ID ::= INTEGER (0.. maxNrOfHSDSCHMACdFlows-1)
+
+-- I
+
+
+IMEI ::= OCTET STRING (SIZE (8))
+-- Reference: 23.003
+
+IMEIGroup ::= SEQUENCE {
+ iMEI IMEI,
+ iMEIMask BIT STRING (SIZE (7)),
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+IMEIList ::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEI
+
+IMEISV ::= OCTET STRING (SIZE (8))
+-- Reference: 23.003
+
+IMEISVGroup ::= SEQUENCE {
+ iMEISV IMEISV,
+ iMEISVMask BIT STRING (SIZE (7)),
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+IMEISVList ::= SEQUENCE (SIZE (1..maxNrOfUEsToBeTraced)) OF IMEISV
+
+ImmediateMDT ::= SEQUENCE {
+ measurementsToActivate MeasurementsToActivate,
+ m1report M1Report OPTIONAL,
+ -- Included in case of event-triggered reporting for measurement M1
+ m2report M2Report OPTIONAL,
+ -- Included in case of event-triggered reporting for measurement M2
+ ...,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+IMSI ::= OCTET STRING (SIZE (3..8))
+-- Reference: 23.003
+
+IncludeVelocity ::= ENUMERATED {
+ requested
+}
+
+InformationExchangeID ::= INTEGER (0.. 1048575)
+
+InformationExchangeType ::= ENUMERATED {
+ transfer,
+ request,
+ ...
+}
+
+InformationRequested ::= CHOICE {
+ requestedMBMSIPMulticastAddressandAPNRequest RequestedMBMSIPMulticastAddressandAPNRequest,
+ requestedMulticastServiceList RequestedMulticastServiceList,
+ ...
+}
+
+
+InformationRequestType ::= CHOICE {
+ mBMSIPMulticastAddressandAPNRequest MBMSIPMulticastAddressandAPNRequest,
+ permanentNAS-UE-ID PermanentNAS-UE-ID,
+ ...
+}
+
+InformationTransferID ::= INTEGER (0.. 1048575)
+
+InformationTransferType ::= CHOICE {
+ rNCTraceInformation RNCTraceInformation,
+ ...
+}
+
+IntegrityProtectionAlgorithm ::= INTEGER {
+ standard-UMTS-integrity-algorithm-UIA1 (0), standard-UMTS-integrity-algorithm-UIA2 (1),
+ no-value (15)
+} (0..15)
+
+IntegrityProtectionInformation ::= SEQUENCE {
+ permittedAlgorithms PermittedIntegrityProtectionAlgorithms,
+ key IntegrityProtectionKey,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+IntegrityProtectionKey ::= BIT STRING (SIZE (128))
+
+InterSystemInformationTransferType ::= CHOICE {
+ rIM-Transfer RIM-Transfer,
+ ...
+}
+
+InterSystemInformation-TransparentContainer ::= SEQUENCE {
+ downlinkCellLoadInformation CellLoadInformation OPTIONAL,
+ uplinkCellLoadInformation CellLoadInformation OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+IPMulticastAddress ::= OCTET STRING (SIZE (4..16))
+-- Reference: 23.003
+
+IuSignallingConnectionIdentifier ::= BIT STRING (SIZE (24))
+
+IuTransportAssociation ::= CHOICE {
+ gTP-TEI GTP-TEI,
+ bindingID BindingID,
+ ...
+}
+
+-- J
+-- K
+
+KeyStatus ::= ENUMERATED {
+ old,
+ new,
+ ...
+}
+-- L
+
+LA-LIST ::= SEQUENCE (SIZE (1..maxNrOfLAs)) OF
+ SEQUENCE {
+ lAC LAC,
+ listOF-SNAs ListOF-SNAs,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+LAC ::= OCTET STRING (SIZE (2))
+
+LAI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lAC LAC,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+LastKnownServiceArea ::= SEQUENCE {
+ sAI SAI,
+ ageOfSAI INTEGER (0..32767),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+LastVisitedUTRANCell-Item ::= SEQUENCE {
+ uTRAN-CellID UTRAN-CellID,
+ cellType CellType,
+ time-UE-StayedInCell Time-UE-StayedInCell,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+LHN-ID ::= OCTET STRING (SIZE (32..256))
+
+Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...}
+
+ListOF-SNAs ::= SEQUENCE (SIZE (1..maxNrOfSNAs)) OF SNAC
+
+ListOfInterfacesToTrace ::= SEQUENCE (SIZE (1..maxNrOfInterfaces)) OF InterfacesToTraceItem
+
+InterfacesToTraceItem ::= SEQUENCE {
+ interface ENUMERATED {iu-cs, iu-ps, iur, iub, uu, ...},
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+LoadValue ::= INTEGER (0..100)
+
+LocationRelatedDataRequestType ::= SEQUENCE {
+ requestedLocationRelatedDataType RequestedLocationRelatedDataType,
+ requestedGPSAssistanceData RequestedGPSAssistanceData OPTIONAL,
+ -- This IE shall be present if the Requested Location Related Data Type IE is set to ‘Dedicated Assistance Data for Assisted GPS’ or
+ -- `Dedicated Assistance Data for Assisted GPS and GANSS’
+ ...
+}
+
+LocationRelatedDataRequestTypeSpecificToGERANIuMode ::= ENUMERATED {
+ decipheringKeysEOTD,
+ dedicatedMobileAssistedEOTDAssistanceData,
+ dedicatedMobileBasedEOTDAssistanceData,
+ ...
+}
+
+LocationReportingTransferInformation ::= SEQUENCE {
+ reportChangeOfSAI ReportChangeOfSAI OPTIONAL,
+ periodicReportingIndicator PeriodicReportingIndicator OPTIONAL,
+ directReportingIndicator DirectReportingIndicator OPTIONAL,
+ verticalAccuracyCode VerticalAccuracyCode OPTIONAL,
+ positioningPriorityChangeSAI PositioningPriority OPTIONAL,
+ positioningPriorityDirect PositioningPriority OPTIONAL,
+ clientTypePeriodic ClientType OPTIONAL,
+ clientTypeDirect ClientType OPTIONAL,
+ responseTime ResponseTime OPTIONAL,
+ includeVelocity IncludeVelocity OPTIONAL,
+ periodicLocationInfo PeriodicLocationInfo OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+ReportChangeOfSAI ::= ENUMERATED {
+ requested,
+ ...
+}
+
+PeriodicReportingIndicator ::= ENUMERATED {
+ periodicSAI,
+ periodicGeo,
+ ...
+}
+
+DirectReportingIndicator ::= ENUMERATED {
+ directSAI,
+ directGeo,
+ ...
+}
+
+L3-Information ::= OCTET STRING
+
+-- M
+
+M1Report ::= CHOICE {
+ periodic MDT-Report-Parameters,
+ event1F Event1F-Parameters,
+ ...
+}
+
+M2Report ::= CHOICE {
+ periodic MDT-Report-Parameters,
+ event1I Event1I-Parameters,
+ ...
+}
+
+M4Report ::= CHOICE {
+ all NULL,
+ m4-collection-parameters M4-Collection-Parameters,
+ ...
+}
+
+M4-Collection-Parameters ::= SEQUENCE {
+ m4-period M4-Period,
+ m4-threshold M4-Threshold OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+M4-Period ::= ENUMERATED {ms100, ms250, ms500, ms1000, ms2000, ms3000, ms4000, ms6000, ...}
+
+
+M4-Threshold ::= INTEGER (0..31)
+
+
+M5Report ::= CHOICE {
+ when-available NULL,
+ m5-period M5-Period,
+ ...
+}
+M5-Period ::= ENUMERATED {ms100, ms250, ms500, ms1000, ms2000, ms3000, ms4000, ms6000, ...}
+
+
+
+M6Report ::= SEQUENCE {
+ m6-period M6-Period,
+ m6-links-to-log Links-to-log,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+M6-Period ::= ENUMERATED {ms1000, ms2000, ms3000, ms4000, ms6000, ms8000, ms12000, ms16000, ms20000, ms24000, ms28000, ms32000, ms64000, ...}
+
+M7Report ::= SEQUENCE {
+ m7-period M7-Period,
+ m7-links-to-log Links-to-log,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+M7-Period ::= ENUMERATED {ms1000, ms2000, ms3000, ms4000, ms6000, ms8000, ms12000, ms16000, ms20000, ms24000, ms28000, ms32000, ms64000, ...}
+
+Management-Based-MDT-Allowed ::= ENUMERATED {
+ allowed, ... }
+
+MaxBitrate ::= INTEGER (1..16000000)
+-- Unit is bits per sec
+
+MaxSDU-Size ::= INTEGER (0..32768)
+-- MaxSDU-Size
+-- Unit isBIT STRING (SIZE (8))
+
+MBMS-PTP-RAB-ID ::= BIT STRING (SIZE (8))
+
+MBMSBearerServiceType ::= ENUMERATED {
+ multicast,
+ broadcast,
+ ...
+}
+
+MBMSCNDe-Registration ::= ENUMERATED {
+ normalsessionstop,
+ deregister,
+ ...
+}
+
+
+MBMSCountingInformation ::= ENUMERATED {
+ counting,
+ notcounting,
+ ...
+}
+
+MBMSHCIndicator ::= ENUMERATED {
+ uncompressed-header,
+ compressed-header,
+ ...
+}
+
+MBMSIPMulticastAddressandAPNRequest ::= SEQUENCE (SIZE (1..maxnoofMulticastServicesPerRNC)) OF
+ TMGI
+
+MBMSLinkingInformation ::= ENUMERATED {
+ uE-has-joined-multicast-services,
+ ...
+}
+
+MBMSRegistrationRequestType ::= ENUMERATED {
+ register,
+ deregister,
+ ...
+}
+
+MBMSServiceArea ::= OCTET STRING
+
+MBMSSessionDuration ::= OCTET STRING (SIZE (3))
+
+
+
+MBMSSessionIdentity ::= OCTET STRING (SIZE (1))
+
+MBMSSessionRepetitionNumber ::= OCTET STRING (SIZE (1))
+
+MDT-Activation ::= ENUMERATED {
+ immediateMDTonly,
+ loggedMDTonly,
+ immediateMDTandTrace,
+ ...
+}
+
+MDTAreaScope ::= CHOICE {
+ cellbased CellBased,
+ labased LABased,
+ rabased RABased,
+ plmn-area-based NULL,
+ ...
+}
+
+MDT-Configuration ::= SEQUENCE {
+ mdtActivation MDT-Activation,
+ mdtAreaScope MDTAreaScope,
+ mdtMode MDTMode,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+MDTMode ::= CHOICE {
+ immediateMDT ImmediateMDT,
+ loggedMDT LoggedMDT,
+ ...
+}
+
+MDT-PLMN-List ::= SEQUENCE (SIZE (1..maxnoofMDTPLMNs)) OF PLMNidentity
+
+MDT-Report-Parameters ::= SEQUENCE {
+ reportInterval ReportInterval,
+ reportAmount ReportAmount,
+ ...
+}
+
+MeasurementQuantity ::= ENUMERATED {
+ cpichEcNo,
+ cpichRSCP,
+ pathloss,
+ ...
+}
+
+MeasurementsToActivate::= BIT STRING (SIZE (8))
+
+MSISDN ::= OCTET STRING (SIZE (1..9))
+
+-- N
+
+
+NAS-PDU ::= OCTET STRING
+
+NAS-SequenceNumber ::= BIT STRING (SIZE (2))
+-- Reference: 24.008
+
+NAS-SynchronisationIndicator ::= BIT STRING (SIZE (4))
+
+NewBSS-To-OldBSS-Information ::= OCTET STRING
+
+NonSearchingIndication ::= ENUMERATED {
+ non-searching,
+ searching
+}
+
+NRTLoadInformationValue ::= INTEGER (0..3)
+
+NumberOfIuInstances ::= INTEGER (1..2)
+
+NumberOfSteps ::= INTEGER (1..16)
+
+-- O
+
+Offload-RAB-Parameters ::= SEQUENCE {
+ accessPointName Offload-RAB-Parameters-APN,
+ chargingCharacteristics Offload-RAB-Parameters-ChargingCharacteristics,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Offload-RAB-Parameters-APN ::= OCTET STRING (SIZE (1..255))
+
+Offload-RAB-Parameters-ChargingCharacteristics ::= OCTET STRING (SIZE (2))
+
+OldBSS-ToNewBSS-Information ::= OCTET STRING
+
+OMC-ID ::= OCTET STRING (SIZE (3..22))
+-- Reference: GSM TS 12.20 [25]
+
+Out-Of-UTRAN ::= ENUMERATED{
+ cell-reselection-to-EUTRAN,
+ ...
+}
+
+-- P
+
+PagingAreaID ::= CHOICE {
+ lAI LAI,
+ rAI RAI,
+ ...
+}
+
+PagingCause ::= ENUMERATED {
+ terminating-conversational-call,
+ terminating-streaming-call,
+ terminating-interactive-call,
+ terminating-background-call,
+ terminating-low-priority-signalling,
+ ...,
+ terminating-high-priority-signalling
+}
+
+PDP-TypeInformation ::= SEQUENCE (SIZE (1..maxNrOfPDPDirections)) OF
+ PDP-Type
+
+PDP-Type ::= ENUMERATED {
+ empty,
+ ppp,
+ osp-ihoss -- this value shall not be used -- ,
+ ipv4,
+ ipv6,
+ ...
+}
+
+PDP-TypeInformation-extension ::= SEQUENCE (SIZE (1..maxNrOfPDPDirections)) OF
+ PDP-Type-extension
+
+PDP-Type-extension ::= ENUMERATED {
+ ipv4-and-ipv6,
+ ...
+}
+
+PDUType14FrameSequenceNumber ::= INTEGER(0..3)
+
+PeriodicLocationInfo ::= SEQUENCE {
+ reportingAmount INTEGER (1..8639999, ...),
+ reportingInterval INTEGER (1..8639999, ...),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+PermanentNAS-UE-ID ::= CHOICE {
+ iMSI IMSI,
+ ...
+}
+
+PermittedEncryptionAlgorithms ::= SEQUENCE (SIZE (1..16)) OF
+ EncryptionAlgorithm
+
+PermittedIntegrityProtectionAlgorithms ::= SEQUENCE (SIZE (1..16)) OF
+ IntegrityProtectionAlgorithm
+
+LABased ::= SEQUENCE {
+ laiList LAI-List,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+LAI-List ::= SEQUENCE (SIZE (1..maxNrOfLAIs)) OF
+ LAI
+
+
+
+LoggedMDT ::= SEQUENCE {
+ loggingInterval LoggingInterval,
+ loggingDuration LoggingDuration,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+LoggingInterval ::= ENUMERATED {
+ s1d28,
+ s2d56,
+ s5d12,
+ s10d24,
+ s20d48,
+ s30d72,
+ s40d96,
+ s61d44,
+ ...
+ }
+
+LoggingDuration ::= ENUMERATED {
+ min10,
+ min20,
+ min40,
+ min60,
+ min90,
+ min120,
+...}
+
+
+
+PLMNidentity ::= OCTET STRING (SIZE (3))
+
+PLMNs-in-shared-network ::= SEQUENCE (SIZE (1..maxNrOfPLMNsSN)) OF
+ SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lA-LIST LA-LIST,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+Port-Number ::= OCTET STRING (SIZE (2))
+
+PositioningDataDiscriminator ::= BIT STRING (SIZE(4))
+
+PositioningDataSet ::= SEQUENCE(SIZE(1..maxSet)) OF PositioningMethodAndUsage
+
+PositioningMethodAndUsage ::= OCTET STRING (SIZE(1))
+
+PositioningPriority ::= ENUMERATED {
+ high-Priority,
+ normal-Priority,
+...
+}
+
+PositionData ::= SEQUENCE {
+ positioningDataDiscriminator PositioningDataDiscriminator,
+ positioningDataSet PositioningDataSet OPTIONAL,
+-- This IE shall be present if the PositioningDataDiscriminator IE is set to the value "0000" --
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+PositionDataSpecificToGERANIuMode ::= OCTET STRING
+
+Pre-emptionCapability ::= ENUMERATED {
+ shall-not-trigger-pre-emption,
+ may-trigger-pre-emption
+}
+
+Pre-emptionVulnerability ::= ENUMERATED {
+ not-pre-emptable,
+ pre-emptable
+}
+
+PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
+
+Priority-Class-Indicator ::= BIT STRING (SIZE(8))
+
+ProvidedData ::= CHOICE {
+ shared-network-information Shared-Network-Information,
+ ...
+}
+
+P-TMSI ::= OCTET STRING (SIZE (4))
+
+-- Q
+
+QueuingAllowed ::= ENUMERATED {
+ queueing-not-allowed,
+ queueing-allowed
+}
+
+-- R
+RAB-AsymmetryIndicator::= ENUMERATED {
+ symmetric-bidirectional,
+ asymmetric-unidirectional-downlink,
+ asymmetric-unidirectional-uplink,
+ asymmetric-bidirectional,
+ ...
+}
+
+RABased ::= SEQUENCE {
+ raiList RAI-List,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RAI-List ::= SEQUENCE (SIZE (1..maxNrOfRAIs)) OF
+ RAI
+
+RABDataVolumeReport ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
+ SEQUENCE {
+ dl-UnsuccessfullyTransmittedDataVolume UnsuccessfullyTransmittedDataVolume,
+ dataVolumeReference DataVolumeReference OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+RAB-ID ::= BIT STRING (SIZE (8))
+
+RAB-Parameter-ExtendedGuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+
+RAB-Parameter-GuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+--This IE shall be ignored if Supported Guaranteed Bit rate is present--
+
+RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+--This IE shall be ignored if Supported Maximum Bit rate is present--
+
+RAB-Parameters ::= SEQUENCE {
+ trafficClass TrafficClass,
+ rAB-AsymmetryIndicator RAB-AsymmetryIndicator,
+ maxBitrate RAB-Parameter-MaxBitrateList,
+ guaranteedBitRate RAB-Parameter-GuaranteedBitrateList OPTIONAL
+ -- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+ deliveryOrder DeliveryOrder,
+ maxSDU-Size MaxSDU-Size,
+ sDU-Parameters SDU-Parameters,
+ transferDelay TransferDelay OPTIONAL
+ -- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+ trafficHandlingPriority TrafficHandlingPriority OPTIONAL
+ -- This IE shall be present the traffic class IE is set to "Interactive" --,
+ allocationOrRetentionPriority AllocationOrRetentionPriority OPTIONAL,
+ sourceStatisticsDescriptor SourceStatisticsDescriptor OPTIONAL
+ -- This IE shall be present the traffic class IE is set to "Conversational" or "Streaming" --,
+ relocationRequirement RelocationRequirement OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RABParametersList ::= SEQUENCE (SIZE (1.. maxNrOfRABs)) OF SEQUENCE {
+ rab-Id RAB-ID,
+ cn-domain CN-DomainIndicator,
+ rabDataVolumeReport RABDataVolumeReport OPTIONAL,
+ upInformation UPInformation OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RAB-SubflowCombinationBitRate ::= INTEGER (0..16000000)
+
+RAB-TrCH-Mapping ::= SEQUENCE ( SIZE (1..maxNrOfRABs)) OF
+ RAB-TrCH-MappingItem
+
+RAB-TrCH-MappingItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ trCH-ID-List TrCH-ID-List,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RAC ::= OCTET STRING (SIZE (1))
+
+RAI ::= SEQUENCE {
+ lAI LAI,
+ rAC RAC,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RAListofIdleModeUEs ::= CHOICE {
+ notEmptyRAListofIdleModeUEs NotEmptyRAListofIdleModeUEs,
+ emptyFullRAListofIdleModeUEs ENUMERATED {emptylist,fulllist,...},
+ ...
+}
+
+NotEmptyRAListofIdleModeUEs ::= SEQUENCE {
+ rAofIdleModeUEs RAofIdleModeUEs,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+RAofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+ RAC
+
+LAListofIdleModeUEs ::= SEQUENCE (SIZE (1..maxMBMSRA)) OF
+ LAI
+
+RAT-Type ::= ENUMERATED {
+ utran,
+ geran,
+ ...
+}
+
+RateControlAllowed ::= ENUMERATED {
+ not-allowed,
+ allowed
+}
+
+RedirectAttemptFlag ::= NULL
+
+RedirectionCompleted ::= ENUMERATED {
+ redirection-completed,
+ ...
+}
+
+RejectCauseValue ::= ENUMERATED {
+ pLMN-Not-Allowed,
+ location-Area-Not-Allowed,
+ roaming-Not-Allowed-In-This-Location-Area,
+ no-Suitable-Cell-In-Location-Area,
+ gPRS-Services-Not-Allowed-In-This-PLMN,
+ cS-PS-coordination-required,
+ ...,
+ network-failure,
+ not-authorized-for-this-CSG
+}
+
+
+RelocationRequirement ::= ENUMERATED {
+ lossless,
+ none,
+ ...,
+ realtime
+}
+
+RelocationType ::= ENUMERATED {
+ ue-not-involved,
+ ue-involved,
+ ...
+}
+
+RepetitionNumber0 ::= INTEGER (0..255)
+
+RepetitionNumber1 ::= INTEGER (1..256)
+
+
+ReportArea ::= ENUMERATED {
+ service-area,
+ geographical-area,
+ ...
+}
+
+ReportInterval ::= ENUMERATED {
+ ms250,
+ ms500,
+ ms1000,
+ ms2000,
+ ms3000,
+ ms4000,
+ ms6000,
+ ms12000,
+ ms16000,
+ ms20000,
+ ms24000,
+ ms32000,
+ ms64000,
+ ...,
+ ms8000,
+ ms28000
+}
+
+ReportAmount ::= ENUMERATED { n1, n2, n4, n8, n16, n32, n64, infinity, ... }
+
+RequestedGPSAssistanceData ::= OCTET STRING (SIZE (1 .. 38 ))
+ -- gpsAssistanceData as defined in 24.080 --
+
+RequestedGANSSAssistanceData ::= OCTET STRING (SIZE (1 .. 201 ))
+ -- ganssAssistanceData as defined in 24.080 --
+
+RequestedLocationRelatedDataType ::= ENUMERATED {
+ decipheringKeysUEBasedOTDOA,
+ decipheringKeysAssistedGPS,
+ dedicatedAssistanceDataUEBasedOTDOA,
+ dedicatedAssistanceDataAssistedGPS,
+ ...,
+-- Release 7 extension elements --
+ decipheringKeysAssistedGANSS,
+ dedicatedAssistanceDataAssistedGANSS,
+ decipheringKeysAssistedGPSandGANSS,
+ dedicatedAssistanceDataAssistedGPSandGANSS
+}
+
+RequestedMBMSIPMulticastAddressandAPNRequest ::= SEQUENCE (SIZE (1..maxnoofMulticastServicesPerRNC)) OF
+ MBMSIPMulticastAddressandAPNlist
+
+MBMSIPMulticastAddressandAPNlist ::= SEQUENCE {
+ tMGI TMGI,
+ iPMulticastAddress IPMulticastAddress,
+ aPN APN,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RequestedMulticastServiceList ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ TMGI
+
+Requested-RAB-Parameter-Values ::= SEQUENCE {
+ requestedMaxBitrates Requested-RAB-Parameter-MaxBitrateList OPTIONAL,
+ requestedGuaranteedBitrates Requested-RAB-Parameter-GuaranteedBitrateList OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Requested-RAB-Parameter-ExtendedMaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedMaxBitrate
+
+Requested-RAB-Parameter-ExtendedGuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF ExtendedGuaranteedBitrate
+
+Requested-RAB-Parameter-MaxBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF MaxBitrate
+
+Requested-RAB-Parameter-GuaranteedBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF GuaranteedBitrate
+
+
+RequestType ::= SEQUENCE {
+ event Event,
+ reportArea ReportArea,
+ accuracyCode INTEGER (0..127) OPTIONAL,
+ ...
+}
+
+ResidualBitErrorRatio ::= SEQUENCE {
+ mantissa INTEGER (1..9),
+ exponent INTEGER (1..8),
+ iE-Extensions IE-Extensions OPTIONAL
+}
+-- ResidualBitErrorRatio = mantissa * 10^-exponent
+
+ResponseTime ::= ENUMERATED {
+ lowdelay,
+ delaytolerant,
+ ...
+}
+
+RIMInformation ::= OCTET STRING
+
+RIM-Transfer ::= SEQUENCE {
+ rIMInformation RIMInformation,
+ rIMRoutingAddress RIMRoutingAddress OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+RIMRoutingAddress ::= CHOICE {
+ targetRNC-ID TargetRNC-ID,
+ gERAN-Cell-ID GERAN-Cell-ID,
+ ... ,
+ targeteNB-ID TargetENB-ID
+}
+
+
+RNC-ID ::= INTEGER (0..4095)
+-- RNC-ID ::= BIT STRING (SIZE (12))
+-- Harmonized with RNSAP and NBAP definitions
+
+
+RNCTraceInformation::= SEQUENCE {
+ traceReference TraceReference,
+ traceActivationIndicato ENUMERATED {activated,deactivated},
+ equipmentsToBeTraced EquipmentsToBeTraced OPTIONAL,
+ -- This IE shall be present if the Trace Activation Indicator IE is set to "Activated".
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+RNSAPRelocationParameters ::= SEQUENCE {
+ rabParmetersList RABParametersList OPTIONAL,
+ locationReporting LocationReportingTransferInformation OPTIONAL,
+ traceInformation TraceInformation OPTIONAL,
+ sourceSAI SAI OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+RRC-Container ::= OCTET STRING
+
+RTLoadValue ::= INTEGER (0..100)
+
+RSRVCC-HO-Indication ::= ENUMERATED {
+ ps-only,
+ ...
+}
+
+RSRVCC-Information ::= SEQUENCE {
+ nonce BIT STRING (SIZE (128)),
+ iMSInformation OCTET STRING(SIZE(1.. maxSizeOfIMSInfo)),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+
+}
+
+RSRVCC-Operation-Possible ::= ENUMERATED {
+ rsrvcc-possible,
+ ...
+}
+
+-- S
+
+SAC ::= OCTET STRING (SIZE (2))
+SAI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ lAC LAC,
+ sAC SAC,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+SAPI ::= ENUMERATED {
+ sapi-0,
+ sapi-3,
+ ...
+}
+
+SessionUpdateID ::= INTEGER (0.. 1048575)
+Shared-Network-Information ::= SEQUENCE {
+ pLMNs-in-shared-network PLMNs-in-shared-network,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+Session-Re-establishment-Indicator ::= ENUMERATED {true, ...}
+
+SignallingIndication ::= ENUMERATED {
+ signalling,
+ ...
+}
+
+SDU-ErrorRatio ::= SEQUENCE {
+ mantissa INTEGER (1..9),
+ exponent INTEGER (1..6),
+ iE-Extensions IE-Extensions OPTIONAL
+}
+-- SDU-ErrorRatio = mantissa * 10^-exponent
+
+SDU-FormatInformationParameters ::= SEQUENCE (SIZE (1..maxRAB-SubflowCombination)) OF SDU-FormatInformationParameterItem
+SDU-FormatInformationParameterItem ::=
+ SEQUENCE {
+ subflowSDU-Size SubflowSDU-Size OPTIONAL,
+ rAB-SubflowCombinationBitRate RAB-SubflowCombinationBitRate OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+SDU-Parameters ::= SEQUENCE (SIZE (1..maxRAB-Subflows)) OF SDU-ParameterItem
+SDU-ParameterItem ::=
+ SEQUENCE {
+ sDU-ErrorRatio SDU-ErrorRatio OPTIONAL
+ -- This IE shall be present if the Delivery Of Erroneous SDU IE is set to "Yes" or "No" --,
+ residualBitErrorRatio ResidualBitErrorRatio,
+ deliveryOfErroneousSDU DeliveryOfErroneousSDU,
+ sDU-FormatInformationParameters SDU-FormatInformationParameters OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+SNA-Access-Information ::= SEQUENCE {
+ authorisedPLMNs AuthorisedPLMNs,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+SNAC ::= INTEGER (0..65535)
+
+Service-Handover ::= ENUMERATED {
+ handover-to-GSM-should-be-performed,
+ handover-to-GSM-should-not-be-performed,
+ handover-to-GSM-shall-not-be-performed,
+ ...
+}
+
+Source-ToTarget-TransparentContainer ::= OCTET STRING
+-- This IE is a transparent container, the IE shall be encoded not as an OCTET STRING but according to the type specifications of the target system.
+-- Note: In the current version of this specification, this IE may either carry the Source RNC to
+-- Target RNC Transparent Container or the Source eNB to Target eNB Transparent Container IE as
+-- defined in TS 36.413 [49]
+
+SourceeNodeB-ToTargeteNodeB-TransparentContainer ::= OCTET STRING
+
+
+SourceCellID ::= CHOICE {
+ sourceUTRANCellID SourceUTRANCellID,
+ sourceGERANCellID CGI,
+ ...
+}
+
+SourceBSS-ToTargetBSS-TransparentContainer ::= OCTET STRING
+
+SourceID ::= CHOICE {
+ sourceRNC-ID SourceRNC-ID,
+ sAI SAI,
+ ...
+}
+
+
+SourceRNC-ID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ rNC-ID RNC-ID,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+SourceRNC-ToTargetRNC-TransparentContainer ::= SEQUENCE {
+ rRC-Container RRC-Container,
+ numberOfIuInstances NumberOfIuInstances,
+ relocationType RelocationType,
+ chosenIntegrityProtectionAlgorithm ChosenIntegrityProtectionAlgorithm OPTIONAL,
+ integrityProtectionKey IntegrityProtectionKey OPTIONAL,
+ chosenEncryptionAlgorithForSignalling ChosenEncryptionAlgorithm OPTIONAL,
+ cipheringKey EncryptionKey OPTIONAL,
+ chosenEncryptionAlgorithForCS ChosenEncryptionAlgorithm OPTIONAL,
+ chosenEncryptionAlgorithForPS ChosenEncryptionAlgorithm OPTIONAL,
+ d-RNTI D-RNTI OPTIONAL
+ -- This IE shall be present if the Relocation type IE is set to "UE not involved in relocation of SRNS" --,
+ targetCellId TargetCellId OPTIONAL
+ -- This IE shall be present if the Relocation type IE is set to "UE involved in relocation of SRNS" --,
+ rAB-TrCH-Mapping RAB-TrCH-Mapping OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+IRAT-Measurement-Configuration ::= SEQUENCE {
+ rSRP INTEGER (0..97) OPTIONAL,
+ rSRQ INTEGER (0..34) OPTIONAL,
+ iRATmeasurementParameters IRATmeasurementParameters,
+ iE-Extensions IE-Extensions OPTIONAL}
+
+IRATmeasurementParameters::= SEQUENCE {
+ measurementDuration INTEGER (1..100),
+ eUTRANFrequencies EUTRANFrequencies OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL}
+
+RSRQ-Type ::= SEQUENCE {
+ allSymbols BOOLEAN,
+ wideBand BOOLEAN
+}
+
+RSRQ-Extension ::= INTEGER (-30..46, ...)
+
+EUTRANFrequencies ::= SEQUENCE (SIZE (1..maxNrOfEUTRAFreqs)) OF SEQUENCE {
+ earfcn INTEGER (0..65535),
+ measBand MeasBand OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL}
+
+MeasBand ::= ENUMERATED {
+ v6,
+ v15,
+ v25,
+ v50,
+ v75,
+ v100
+}
+
+SubscriberProfileIDforRFP ::= INTEGER (1..256)
+
+SourceStatisticsDescriptor ::= ENUMERATED {
+ speech,
+ unknown,
+ ...
+}
+
+SupportedRAB-ParameterBitrateList ::= SEQUENCE (SIZE (1..maxNrOfSeparateTrafficDirections)) OF SupportedBitrate
+
+SupportedBitrate ::= INTEGER (1..1000000000, ...)
+-- Unit is bits per sec
+
+SourceUTRANCellID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ uTRANcellID TargetCellId,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+SRB-ID ::= INTEGER (1..32)
+
+SRB-TrCH-Mapping ::= SEQUENCE ( SIZE (1..maxNrOfSRBs)) OF
+ SRB-TrCH-MappingItem
+
+SRB-TrCH-MappingItem ::= SEQUENCE {
+ sRB-ID SRB-ID,
+ trCH-ID TrCH-ID,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+
+SRVCC-HO-Indication ::= ENUMERATED {
+ ps-and-cs,
+ cs-only,
+ ...
+}
+
+SRVCC-Information ::= SEQUENCE {
+ nonce BIT STRING (SIZE (128)),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+SRVCC-Operation-Possible ::= ENUMERATED {
+ srvcc-possible,
+ ...
+}
+
+SubflowSDU-Size ::= INTEGER (0..4095)
+-- Unit is bit
+
+
+-- T
+TAC ::= OCTET STRING (SIZE (2))
+
+TAI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ tAC TAC,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+Target-ToSource-TransparentContainer ::= OCTET STRING
+-- This IE is a transparent container, the IE shall be encoded not as an OCTET STRING but according to the type specifications of the target system.
+-- Note: In the current version of this specification, this IE may either carry the Target RNC to
+-- Source RNC Transparent Container or the Target eNB to Source eNB Transparent Container IE as
+-- defined in TS 36.413 [49]
+
+TargeteNodeB-ToSourceeNodeB-TransparentContainer ::= OCTET STRING
+
+TargetBSS-ToSourceBSS-TransparentContainer ::= OCTET STRING
+
+TargetCellId ::= INTEGER (0..268435455)
+
+TargetID ::= CHOICE {
+ targetRNC-ID TargetRNC-ID,
+ cGI CGI,
+
+ ...,
+ targeteNB-ID TargetENB-ID
+}
+
+TargetENB-ID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ eNB-ID ENB-ID,
+ iE-Extensions IE-Extensions OPTIONAL,
+ selectedTAI TAI,
+ ...
+}
+
+TargetRNC-ID ::= SEQUENCE {
+ lAI LAI,
+ rAC RAC OPTIONAL,
+ rNC-ID RNC-ID,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+TargetRNC-ToSourceRNC-TransparentContainer ::= SEQUENCE {
+ rRC-Container RRC-Container,
+ d-RNTI D-RNTI OPTIONAL
+ -- May be included to allow the triggering of the Relocation Detect procedure from the Iur Interface --,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TBCD-STRING ::= OCTET STRING
+
+TemporaryUE-ID ::= CHOICE {
+ tMSI TMSI,
+ p-TMSI P-TMSI,
+ ...
+}
+
+Time-UE-StayedInCell ::= INTEGER (0..4095)
+
+Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950)
+
+TimeToMBMSDataTransfer ::= OCTET STRING(SIZE(1))
+
+TimingDifferenceULDL ::= OCTET STRING (SIZE(1))
+
+TMGI ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ serviceID OCTET STRING (SIZE (3)),
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+TMSI ::= OCTET STRING (SIZE (4))
+
+TraceDepth ::= ENUMERATED {
+ minimum,
+ medium,
+ maximum,
+ ...
+}
+
+TraceInformation ::= SEQUENCE {
+ traceReference TraceReference,
+ ue-identity UE-ID,
+ tracePropagationParameters TracePropagationParameters OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TracePropagationParameters ::= SEQUENCE {
+ traceRecordingSessionReference TraceRecordingSessionReference,
+ traceDepth TraceDepth,
+ listOfInterfacesToTrace ListOfInterfacesToTrace OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TraceRecordingSessionInformation ::= SEQUENCE {
+ traceReference TraceReference,
+ traceRecordingSessionReference TraceRecordingSessionReference,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TraceRecordingSessionReference ::= INTEGER (0..65535)
+
+TraceReference ::= OCTET STRING (SIZE (2..3))
+
+TraceType ::= OCTET STRING (SIZE (1))
+-- Reference: GSM TS 12.08
+
+TrafficClass ::= ENUMERATED {
+ conversational,
+ streaming,
+ interactive,
+ background,
+ ...
+}
+
+TrafficHandlingPriority ::= INTEGER { spare (0), highest (1), lowest (14), no-priority-used (15) } (0..15)
+
+TransferDelay ::= INTEGER (0..65535)
+-- Unit is millisecond
+
+UnsuccessfullyTransmittedDataVolume ::= INTEGER (0..4294967295)
+
+TransportLayerAddress ::= BIT STRING (SIZE (1..160, ...))
+
+TrCH-ID ::= SEQUENCE {
+ dCH-ID DCH-ID OPTIONAL,
+ dSCH-ID DSCH-ID OPTIONAL,
+ uSCH-ID USCH-ID OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TrCH-ID-List ::= SEQUENCE (SIZE (1..maxRAB-Subflows)) OF
+ TrCH-ID
+
+TriggerID ::= OCTET STRING (SIZE (3..22))
+
+TunnelInformation ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ uDP-Port-Number Port-Number OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+
+
+-- U
+
+UE-AggregateMaximumBitRate ::= SEQUENCE {
+ uE-AggregateMaximumBitRateDownlink UE-AggregateMaximumBitRateDownlink OPTIONAL,
+ uE-AggregateMaximumBitRateUplink UE-AggregateMaximumBitRateUplink OPTIONAL,
+ ...
+}
+
+UE-AggregateMaximumBitRateDownlink ::= INTEGER (1..1000000000)
+-- Unit is bits per sec
+
+UE-AggregateMaximumBitRateUplink ::= INTEGER (1..1000000000)
+-- Unit is bits per sec
+
+
+UE-History-Information ::= OCTET STRING
+
+UE-ID ::= CHOICE {
+ imsi IMSI,
+ imei IMEI,
+ ...,
+ imeisv IMEISV
+
+}
+
+UESBI-Iu ::= SEQUENCE {
+ uESBI-IuA UESBI-IuA OPTIONAL,
+ uESBI-IuB UESBI-IuB OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+UESBI-IuA ::= BIT STRING (SIZE(1..128))
+-- Reference: TR25.994 --
+UESBI-IuB ::= BIT STRING (SIZE(1..128))
+-- Reference: TR25.995 --
+
+UL-GTP-PDU-SequenceNumber ::= INTEGER (0..65535)
+
+UL-N-PDU-SequenceNumber ::= INTEGER (0..65535)
+
+UPInformation ::= SEQUENCE {
+ frameSeqNoUL FrameSequenceNumber,
+ frameSeqNoDL FrameSequenceNumber,
+ pdu14FrameSeqNoUL PDUType14FrameSequenceNumber,
+ pdu14FrameSeqNoDL PDUType14FrameSequenceNumber,
+ dataPDUType DataPDUType,
+ upinitialisationFrame UPInitialisationFrame,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+UPInitialisationFrame ::= OCTET STRING
+
+UP-ModeVersions ::= BIT STRING (SIZE (16))
+
+USCH-ID ::= INTEGER (0..255)
+
+UserPlaneMode ::= ENUMERATED {
+ transparent-mode,
+ support-mode-for-predefined-SDU-sizes,
+ ...
+}
+
+UTRAN-CellID ::= SEQUENCE {
+ pLMNidentity PLMNidentity,
+ cellID TargetCellId,
+ iE-Extensions IE-Extensions OPTIONAL
+}
+
+
+-- V
+
+VelocityEstimate ::= CHOICE {
+ horizontalVelocity HorizontalVelocity,
+ horizontalWithVerticalVelocity HorizontalWithVerticalVelocity,
+ horizontalVelocityWithUncertainty HorizontalVelocityWithUncertainty,
+ horizontalWithVeritcalVelocityAndUncertainty HorizontalWithVerticalVelocityAndUncertainty,
+ ...
+}
+
+HorizontalVelocity ::= SEQUENCE {
+ horizontalSpeedAndBearing HorizontalSpeedAndBearing,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HorizontalWithVerticalVelocity ::= SEQUENCE {
+ horizontalSpeedAndBearing HorizontalSpeedAndBearing,
+ veritcalVelocity VerticalVelocity,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HorizontalVelocityWithUncertainty ::= SEQUENCE {
+ horizontalSpeedAndBearing HorizontalSpeedAndBearing,
+ uncertaintySpeed INTEGER (0..255),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HorizontalWithVerticalVelocityAndUncertainty ::= SEQUENCE {
+ horizontalSpeedAndBearing HorizontalSpeedAndBearing,
+ veritcalVelocity VerticalVelocity,
+ horizontalUncertaintySpeed INTEGER (0..255),
+ verticalUncertaintySpeed INTEGER (0..255),
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+HorizontalSpeedAndBearing ::= SEQUENCE {
+ bearing INTEGER (0..359),
+ horizontalSpeed INTEGER (0..2047)
+}
+
+VerticalVelocity ::= SEQUENCE {
+ veritcalSpeed INTEGER (0..255),
+ veritcalSpeedDirection VerticalSpeedDirection
+}
+
+VerticalSpeedDirection ::= ENUMERATED {
+ upward,
+ downward
+}
+
+VerticalAccuracyCode ::= INTEGER (0..127)
+
+VoiceSupportMatchIndicator ::= ENUMERATED {
+ supported,
+ not-supported,
+ ...
+}
+
+END
diff --git a/asn1/ranap/RANAP-PDU-Contents.asn b/asn1/ranap/RANAP-PDU-Contents.asn
new file mode 100644
index 0000000..75aeaeb
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU-Contents.asn
@@ -0,0 +1,3595 @@
+-- **************************************************************
+--
+-- PDU definitions for RANAP.
+--
+-- **************************************************************
+
+RANAP-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ AccuracyFulfilmentIndicator,
+ APN,
+ BroadcastAssistanceDataDecipheringKeys,
+ LocationRelatedDataRequestType,
+ LocationRelatedDataRequestTypeSpecificToGERANIuMode,
+ DataVolumeReference,
+ CellLoadInformation,
+ AreaIdentity,
+ CN-DomainIndicator,
+ Cause,
+ Cell-Access-Mode,
+ ClientType,
+ CriticalityDiagnostics,
+ ChosenEncryptionAlgorithm,
+ ChosenIntegrityProtectionAlgorithm,
+ ClassmarkInformation2,
+ ClassmarkInformation3,
+ CSG-Id,
+ CSG-Id-List,
+ CSG-Membership-Status,
+ DL-GTP-PDU-SequenceNumber,
+ DL-N-PDU-SequenceNumber,
+ DataVolumeReportingIndication,
+ DeltaRAListofIdleModeUEs,
+ DRX-CycleLengthCoefficient,
+ EncryptionInformation,
+ EncryptionKey,
+ E-UTRAN-Service-Handover,
+ ExtendedRNC-ID,
+ FrequenceLayerConvergenceFlag,
+ GERAN-BSC-Container,
+ GERAN-Classmark,
+ GlobalCN-ID,
+ GlobalRNC-ID,
+ GTP-TEI,
+ IncludeVelocity,
+ InformationExchangeID,
+ InformationExchangeType,
+ InformationRequested,
+ InformationRequestType,
+ InformationTransferID,
+ InformationTransferType,
+ InterSystemInformationTransferType,
+ IntegrityProtectionInformation,
+ IntegrityProtectionKey,
+ InterSystemInformation-TransparentContainer,
+ IPMulticastAddress,
+ IuSignallingConnectionIdentifier,
+ IuTransportAssociation,
+ KeyStatus,
+ L3-Information,
+ LAI,
+ LastKnownServiceArea,
+ Correlation-ID,
+ MBMS-PTP-RAB-ID,
+ MBMSBearerServiceType,
+ MBMSCountingInformation,
+ MBMSCNDe-Registration,
+ MBMSHCIndicator,
+ MBMSRegistrationRequestType,
+ MBMSServiceArea,
+ MBMSSessionDuration,
+ MBMSSessionIdentity,
+ MBMSSessionRepetitionNumber,
+ MSISDN,
+ NAS-PDU,
+ NAS-SequenceNumber,
+ NAS-SynchronisationIndicator,
+ NewBSS-To-OldBSS-Information,
+ NonSearchingIndication,
+ NumberOfSteps,
+ Offload-RAB-Parameters,
+ Offload-RAB-Parameters-APN,
+ Offload-RAB-Parameters-ChargingCharacteristics,
+ OMC-ID,
+ OldBSS-ToNewBSS-Information,
+ PagingAreaID,
+ PagingCause,
+ PDP-TypeInformation,
+ PDP-TypeInformation-extension,
+ PermanentNAS-UE-ID,
+ PLMNidentity,
+ PositionData,
+ PositionDataSpecificToGERANIuMode,
+ PositioningPriority,
+ ProvidedData,
+ RAB-ID,
+ RAB-Parameters,
+ RAC,
+ RAListofIdleModeUEs,
+ RAT-Type,
+ RedirectAttemptFlag,
+ RedirectionCompleted,
+ RejectCauseValue,
+ RelocationType,
+ RequestedGANSSAssistanceData,
+ RequestType,
+ Requested-RAB-Parameter-Values,
+ ResponseTime,
+ RRC-Container,
+ RSRVCC-Operation-Possible,
+ RSRQ-Type,
+ RSRQ-Extension,
+ SAI,
+ SAPI,
+ Service-Handover,
+ SessionUpdateID,
+ SNA-Access-Information,
+ SourceBSS-ToTargetBSS-TransparentContainer,
+ SourceID,
+ Source-ToTarget-TransparentContainer,
+ SourceRNC-ToTargetRNC-TransparentContainer,
+ SRVCC-HO-Indication,
+ SRVCC-Information,
+ SRVCC-Operation-Possible,
+ TargetBSS-ToSourceBSS-TransparentContainer,
+ TargetID,
+ Target-ToSource-TransparentContainer,
+ TargetRNC-ToSourceRNC-TransparentContainer,
+ TemporaryUE-ID,
+ TimeToMBMSDataTransfer,
+ TMGI,
+ TracePropagationParameters,
+ TraceReference,
+ TraceType,
+ UnsuccessfullyTransmittedDataVolume,
+ TransportLayerAddress,
+ TriggerID,
+ UE-AggregateMaximumBitRate,
+ UE-ID,
+ UESBI-Iu,
+ UL-GTP-PDU-SequenceNumber,
+ UL-N-PDU-SequenceNumber,
+ UP-ModeVersions,
+ UserPlaneMode,
+ VelocityEstimate,
+ VerticalAccuracyCode,
+ VoiceSupportMatchIndicator,
+ Alt-RAB-Parameters,
+ Ass-RAB-Parameters,
+ PeriodicLocationInfo,
+ SubscriberProfileIDforRFP,
+ RNSAPRelocationParameters,
+ RABParametersList,
+ MDT-Configuration,
+ Priority-Class-Indicator,
+ Management-Based-MDT-Allowed,
+ HigherBitratesThan16MbpsFlag,
+ End-Of-CSFB,
+ Out-Of-UTRAN,
+ RSRVCC-HO-Indication,
+ RSRVCC-Information,
+ MDT-PLMN-List,
+ TunnelInformation,
+ LHN-ID,
+ Session-Re-establishment-Indicator
+
+FROM RANAP-IEs
+
+ PrivateIE-Container{},
+ ProtocolExtensionContainer{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-ContainerPair{},
+ ProtocolIE-ContainerPairList{},
+ ProtocolIE-Container{},
+ RANAP-PRIVATE-IES,
+ RANAP-PROTOCOL-EXTENSION,
+ RANAP-PROTOCOL-IES,
+ RANAP-PROTOCOL-IES-PAIR
+FROM RANAP-Containers
+
+ maxNrOfDTs,
+ maxNrOfErrors,
+ maxNrOfIuSigConIds,
+ maxNrOfRABs,
+ maxNrOfVol,
+ maxnoofMulticastServicesPerUE,
+
+ id-AccuracyFulfilmentIndicator,
+ id-APN,
+ id-AreaIdentity,
+ id-Alt-RAB-Parameters,
+ id-Ass-RAB-Parameters,
+ id-BroadcastAssistanceDataDecipheringKeys,
+ id-LocationRelatedDataRequestType,
+ id-CN-DomainIndicator,
+ id-Cause,
+ id-Cell-Access-Mode,
+ id-ChosenEncryptionAlgorithm,
+ id-ChosenIntegrityProtectionAlgorithm,
+ id-ClassmarkInformation2,
+ id-ClassmarkInformation3,
+ id-ClientType,
+ id-CNMBMSLinkingInformation,
+ id-CriticalityDiagnostics,
+ id-CSG-Id,
+ id-CSG-Id-List,
+ id-CSG-Membership-Status,
+ id-DeltaRAListofIdleModeUEs,
+ id-DRX-CycleLengthCoefficient,
+ id-DirectTransferInformationItem-RANAP-RelocInf,
+ id-DirectTransferInformationList-RANAP-RelocInf,
+ id-DL-GTP-PDU-SequenceNumber,
+ id-EncryptionInformation,
+ id-EncryptionKey,
+ id-ExtendedRNC-ID,
+ id-FrequenceLayerConvergenceFlag,
+ id-GERAN-BSC-Container,
+ id-GERAN-Classmark,
+ id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item,
+ id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse,
+ id-GlobalCN-ID,
+ id-GlobalCN-IDCS,
+ id-GlobalCN-IDPS,
+ id-GlobalRNC-ID,
+ id-IncludeVelocity,
+ id-InformationExchangeID,
+ id-InformationExchangeType,
+ id-InformationRequested,
+ id-InformationRequestType,
+ id-InformationTransferID,
+ id-InformationTransferType,
+ id-IntegrityProtectionInformation,
+ id-IntegrityProtectionKey,
+ id-InterSystemInformationTransferType,
+ id-InterSystemInformation-TransparentContainer,
+ id-IPMulticastAddress,
+ id-IuSigConId,
+ id-OldIuSigConId,
+ id-OldIuSigConIdCS,
+ id-OldIuSigConIdPS,
+ id-IuSigConIdItem,
+ id-IuSigConIdList,
+ id-IuTransportAssociation,
+ id-JoinedMBMSBearerServicesList,
+ id-KeyStatus,
+ id-L3-Information,
+ id-LAI,
+ id-LastKnownServiceArea,
+ id-LeftMBMSBearerServicesList,
+ id-LocationRelatedDataRequestTypeSpecificToGERANIuMode,
+ id-MBMSBearerServiceType,
+ id-MBMSCountingInformation,
+ id-MBMSCNDe-Registration,
+ id-MBMSRegistrationRequestType,
+ id-MBMSSynchronisationInformation,
+ id-MBMSServiceArea,
+ id-MBMSSessionDuration,
+ id-MBMSSessionIdentity,
+ id-MBMSSessionRepetitionNumber,
+ id-MSISDN,
+ id-NAS-PDU,
+ id-NAS-SequenceNumber,
+ id-NewBSS-To-OldBSS-Information,
+ id-NonSearchingIndication,
+ id-NumberOfSteps,
+ id-Offload-RAB-Parameters,
+ id-OMC-ID,
+ id-OldBSS-ToNewBSS-Information,
+ id-PagingAreaID,
+ id-PagingCause,
+ id-PDP-TypeInformation,
+ id-PDP-TypeInformation-extension,
+ id-PermanentNAS-UE-ID,
+ id-PositionData,
+ id-PositionDataSpecificToGERANIuMode,
+ id-PositioningPriority,
+ id-ProvidedData,
+ id-RAB-ContextItem,
+ id-RAB-ContextList,
+ id-RAB-ContextFailedtoTransferItem,
+ id-RAB-ContextFailedtoTransferList,
+ id-RAB-ContextItem-RANAP-RelocInf,
+ id-RAB-ContextList-RANAP-RelocInf,
+ id-RAB-DataForwardingItem,
+ id-RAB-DataForwardingItem-SRNS-CtxReq,
+ id-RAB-DataForwardingList,
+ id-RAB-DataForwardingList-SRNS-CtxReq,
+ id-RAB-DataVolumeReportItem,
+ id-RAB-DataVolumeReportList,
+ id-RAB-DataVolumeReportRequestItem,
+ id-RAB-DataVolumeReportRequestList,
+ id-RAB-FailedItem,
+ id-RAB-FailedList,
+ id-RAB-FailedList-EnhRelocInfoRes,
+ id-RAB-FailedItem-EnhRelocInfoRes,
+ id-RAB-FailedtoReportItem,
+ id-RAB-FailedtoReportList,
+ id-RAB-ID,
+ id-RAB-ModifyList,
+ id-RAB-ModifyItem,
+ id-RAB-Parameters,
+ id-RAB-QueuedItem,
+ id-RAB-QueuedList,
+ id-RAB-ReleaseFailedList,
+ id-RAB-ReleaseItem,
+ id-RAB-ReleasedItem-IuRelComp,
+ id-RAB-ReleaseList,
+ id-RAB-ReleasedItem,
+ id-RAB-ReleasedList,
+ id-RAB-ReleasedList-IuRelComp,
+ id-RAB-RelocationReleaseItem,
+ id-RAB-RelocationReleaseList,
+ id-RAB-SetupItem-RelocReq,
+ id-RAB-SetupItem-RelocReqAck,
+ id-RAB-SetupList-RelocReq,
+ id-RAB-SetupList-RelocReqAck,
+ id-RAB-SetupList-EnhRelocInfoReq,
+ id-RAB-SetupItem-EnhRelocInfoReq,
+ id-RAB-SetupList-EnhRelocInfoRes,
+ id-RAB-SetupItem-EnhRelocInfoRes,
+ id-RAB-SetupList-EnhancedRelocCompleteReq,
+ id-RAB-SetupItem-EnhancedRelocCompleteReq,
+ id-RAB-SetupList-EnhancedRelocCompleteRes,
+ id-RAB-SetupItem-EnhancedRelocCompleteRes,
+ id-RAB-SetupOrModifiedItem,
+ id-RAB-SetupOrModifiedList,
+ id-RAB-SetupOrModifyItem,
+ id-RAB-SetupOrModifyList,
+ id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes,
+ id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes,
+ id-RAC,
+ id-RAListofIdleModeUEs,
+ id-RAT-Type,
+ id-RedirectAttemptFlag,
+ id-RedirectionCompleted,
+ id-RedirectionIndication,
+ id-RejectCauseValue,
+ id-RelocationType,
+ id-Relocation-SourceRNC-ID,
+ id-Relocation-SourceExtendedRNC-ID,
+ id-Relocation-TargetRNC-ID,
+ id-Relocation-TargetExtendedRNC-ID,
+ id-RequestedGANSSAssistanceData,
+ id-RequestType,
+ id-ResponseTime,
+ id-RSRVCC-Operation-Possible,
+ id-SAI,
+ id-SAPI,
+ id-SelectedPLMN-ID,
+ id-SessionUpdateID,
+ id-SNA-Access-Information,
+ id-SourceBSS-ToTargetBSS-TransparentContainer,
+ id-SourceRNC-ID,
+ id-SourceExtendedRNC-ID,
+ id-SourceID,
+ id-Source-ToTarget-TransparentContainer,
+ id-SourceRNC-PDCP-context-info,
+ id-SRVCC-HO-Indication,
+ id-SRVCC-Information,
+ id-SRVCC-Operation-Possible,
+ id-TargetBSS-ToSourceBSS-TransparentContainer,
+ id-TargetID,
+ id-Target-ToSource-TransparentContainer,
+ id-TemporaryUE-ID,
+ id-TimeToMBMSDataTransfer,
+ id-TMGI,
+ id-TracePropagationParameters,
+ id-TraceReference,
+ id-TraceType,
+ id-TransportLayerAddress,
+ id-TransportLayerInformation,
+ id-TriggerID,
+ id-UE-AggregateMaximumBitRate,
+ id-UE-ID,
+ id-UESBI-Iu,
+ id-UL-GTP-PDU-SequenceNumber,
+ id-UnsuccessfulLinkingList,
+ id-VelocityEstimate,
+ id-VerticalAccuracyCode,
+ id-VoiceSupportMatchIndicator,
+ id-PeriodicLocationInfo,
+ id-BroadcastGANSSAssistanceDataDecipheringKeys,
+ id-SubscriberProfileIDforRFP,
+ id-E-UTRAN-Service-Handover,
+ id-IP-Source-Address,
+ id-LGW-TransportLayerAddress,
+ id-Correlation-ID,
+ id-MDT-Configuration,
+ id-RNSAPRelocationParameters,
+ id-RABParametersList,
+ id-Priority-Class-Indicator,
+ id-Management-Based-MDT-Allowed,
+ id-HigherBitratesThan16MbpsFlag,
+ id-Trace-Collection-Entity-IP-Addess,
+ id-End-Of-CSFB,
+ id-Out-Of-UTRAN,
+ id-RSRVCC-HO-Indication,
+ id-RSRVCC-Information,
+ id-AnchorPLMN-ID,
+ id-Management-Based-MDT-PLMN-List,
+ id-Tunnel-Information-for-BBF,
+ id-SIPTO-Correlation-ID,
+ id-SIPTO-LGW-TransportLayerAddress,
+ id-LHN-ID,
+ id-LastE-UTRANPLMNIdentity,
+ id-Session-Re-establishment-Indicator
+
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Common Container Lists
+--
+-- **************************************************************
+
+RAB-IE-ContainerList { RANAP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfRABs, {IEsSetParam} }
+RAB-IE-ContainerPairList { RANAP-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxNrOfRABs, {IEsSetParam} }
+ProtocolError-IE-ContainerList { RANAP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfRABs, {IEsSetParam} }
+IuSigConId-IE-ContainerList { RANAP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfIuSigConIds, {IEsSetParam} }
+DirectTransfer-IE-ContainerList { RANAP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfDTs, {IEsSetParam} }
+
+-- **************************************************************
+--
+-- Iu RELEASE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Iu Release Command
+--
+-- **************************************************************
+
+Iu-ReleaseCommand ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {Iu-ReleaseCommandIEs} },
+ protocolExtensions ProtocolExtensionContainer { {Iu-ReleaseCommandExtensions} } OPTIONAL,
+ ...
+}
+
+Iu-ReleaseCommandIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+Iu-ReleaseCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-End-Of-CSFB CRITICALITY ignore EXTENSION End-Of-CSFB PRESENCE optional }|
+ { ID id-Out-Of-UTRAN CRITICALITY ignore EXTENSION Out-Of-UTRAN PRESENCE optional }|
+ { ID id-LastE-UTRANPLMNIdentity CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Iu Release Complete
+--
+-- **************************************************************
+
+Iu-ReleaseComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {Iu-ReleaseCompleteIEs} },
+ protocolExtensions ProtocolExtensionContainer { {Iu-ReleaseCompleteExtensions} } OPTIONAL,
+ ...
+}
+
+Iu-ReleaseCompleteIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataVolumeReportList CRITICALITY ignore TYPE RAB-DataVolumeReportList PRESENCE optional } |
+ { ID id-RAB-ReleasedList-IuRelComp CRITICALITY ignore TYPE RAB-ReleasedList-IuRelComp PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-DataVolumeReportList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportItemIEs} }
+
+RAB-DataVolumeReportItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataVolumeReportItem CRITICALITY ignore TYPE RAB-DataVolumeReportItem PRESENCE mandatory },
+ ...
+}
+
+RAB-DataVolumeReportItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-UnsuccessfullyTransmittedDataVolume DataVolumeList OPTIONAL
+ -- This IE shall always be present although its presence is optional --,
+ iE-Extensions ProtocolExtensionContainer { {RAB-DataVolumeReportItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-DataVolumeReportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-ReleasedList-IuRelComp ::= RAB-IE-ContainerList { {RAB-ReleasedItem-IuRelComp-IEs} }
+
+RAB-ReleasedItem-IuRelComp-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ReleasedItem-IuRelComp CRITICALITY ignore TYPE RAB-ReleasedItem-IuRelComp PRESENCE mandatory },
+ ...
+}
+
+RAB-ReleasedItem-IuRelComp ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dL-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ uL-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ReleasedItem-IuRelComp-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ReleasedItem-IuRelComp-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+Iu-ReleaseCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION PREPARATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Required
+--
+-- **************************************************************
+
+RelocationRequired ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationRequiredIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationRequiredExtensions} } OPTIONAL,
+...
+}
+
+RelocationRequiredIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RelocationType CRITICALITY reject TYPE RelocationType PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-SourceID CRITICALITY ignore TYPE SourceID PRESENCE mandatory } |
+ { ID id-TargetID CRITICALITY reject TYPE TargetID PRESENCE mandatory } |
+ { ID id-ClassmarkInformation2 CRITICALITY reject TYPE ClassmarkInformation2 PRESENCE conditional
+ -- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included -- } |
+ { ID id-ClassmarkInformation3 CRITICALITY ignore TYPE ClassmarkInformation3 PRESENCE conditional
+ -- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included -- } |
+ { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE conditional
+ -- This IE shall be present if the Target ID IE contains a RNC-ID IE or eNB-ID -- } |
+ { ID id-OldBSS-ToNewBSS-Information CRITICALITY ignore TYPE OldBSS-ToNewBSS-Information PRESENCE optional } ,
+ ...
+}
+
+RelocationRequiredExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-Classmark CRITICALITY ignore EXTENSION GERAN-Classmark PRESENCE optional} |
+-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
+ { ID id-SourceBSS-ToTargetBSS-TransparentContainer CRITICALITY ignore EXTENSION SourceBSS-ToTargetBSS-TransparentContainer PRESENCE optional} |
+-- Extension for Release 8 for SRVCC operation --
+ { ID id-SRVCC-HO-Indication CRITICALITY reject EXTENSION SRVCC-HO-Indication PRESENCE optional} |
+-- Extension for Release 9 to communicate to the CN the CSG id of the target cell --
+ { ID id-CSG-Id CRITICALITY reject EXTENSION CSG-Id PRESENCE optional} |
+-- Extension for Release 9 to communicate to the CN the hybrid access status of the target cell --
+ { ID id-Cell-Access-Mode CRITICALITY reject EXTENSION Cell-Access-Mode PRESENCE optional} |
+-- Extension for Release 11 for rSRVCC operation --
+ { ID id-RSRVCC-HO-Indication CRITICALITY reject EXTENSION RSRVCC-HO-Indication PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- Relocation Command
+--
+-- **************************************************************
+
+RelocationCommand ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationCommandIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationCommandExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCommandIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Target-ToSource-TransparentContainer
+ CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE optional } |
+ { ID id-L3-Information CRITICALITY ignore TYPE L3-Information PRESENCE optional } |
+ { ID id-RAB-RelocationReleaseList CRITICALITY ignore TYPE RAB-RelocationReleaseList PRESENCE optional } |
+ { ID id-RAB-DataForwardingList CRITICALITY ignore TYPE RAB-DataForwardingList PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-RelocationReleaseList ::= RAB-IE-ContainerList { {RAB-RelocationReleaseItemIEs} }
+
+RAB-RelocationReleaseItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-RelocationReleaseItem CRITICALITY ignore TYPE RAB-RelocationReleaseItem PRESENCE mandatory },
+ ...
+}
+
+RAB-RelocationReleaseItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer { {RAB-RelocationReleaseItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-RelocationReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-DataForwardingList ::= RAB-IE-ContainerList { {RAB-DataForwardingItemIEs} }
+
+RAB-DataForwardingItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataForwardingItem CRITICALITY ignore TYPE RAB-DataForwardingItem PRESENCE mandatory },
+ ...
+}
+
+RAB-DataForwardingItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer { {RAB-DataForwardingItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-DataForwardingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
+ {ID id-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional} |
+ {ID id-IuTransportAssociation CRITICALITY ignore EXTENSION IuTransportAssociation PRESENCE optional},
+ ...
+}
+
+RelocationCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+ { ID id-InterSystemInformation-TransparentContainer CRITICALITY ignore EXTENSION InterSystemInformation-TransparentContainer PRESENCE optional} |
+-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
+ { ID id-TargetBSS-ToSourceBSS-TransparentContainer CRITICALITY ignore EXTENSION TargetBSS-ToSourceBSS-TransparentContainer PRESENCE optional} |
+-- Extension for Release 8 for SRVCC operation --
+ { ID id-SRVCC-Information CRITICALITY reject EXTENSION SRVCC-Information PRESENCE optional} |
+-- Extension for Release 11 for rSRVCC operation --
+ { ID id-RSRVCC-Information CRITICALITY reject EXTENSION RSRVCC-Information PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- Relocation Preparation Failure
+--
+-- **************************************************************
+
+RelocationPreparationFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationPreparationFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationPreparationFailureExtensions} } OPTIONAL,
+...
+}
+
+RelocationPreparationFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RelocationPreparationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+ { ID id-InterSystemInformation-TransparentContainer CRITICALITY ignore EXTENSION InterSystemInformation-TransparentContainer PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION RESOURCE ALLOCATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Request
+--
+-- **************************************************************
+
+RelocationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationRequestExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-PermanentNAS-UE-ID CRITICALITY ignore TYPE PermanentNAS-UE-ID PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE SourceRNC-ToTargetRNC-TransparentContainer PRESENCE mandatory } |
+ { ID id-RAB-SetupList-RelocReq CRITICALITY reject TYPE RAB-SetupList-RelocReq PRESENCE optional } |
+ { ID id-IntegrityProtectionInformation CRITICALITY ignore TYPE IntegrityProtectionInformation PRESENCE optional } |
+ { ID id-EncryptionInformation CRITICALITY ignore TYPE EncryptionInformation PRESENCE optional } |
+ { ID id-IuSigConId CRITICALITY ignore TYPE IuSignallingConnectionIdentifier PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupList-RelocReq ::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReq-IEs} }
+
+RAB-SetupItem-RelocReq-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-RelocReq CRITICALITY reject TYPE RAB-SetupItem-RelocReq PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-RelocReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ nAS-SynchronisationIndicator NAS-SynchronisationIndicator OPTIONAL,
+ rAB-Parameters RAB-Parameters,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ userPlaneInformation UserPlaneInformation,
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ service-Handover Service-Handover OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-SetupItem-RelocReq-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-RelocReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+ { ID id-Alt-RAB-Parameters CRITICALITY ignore EXTENSION Alt-RAB-Parameters PRESENCE optional}|
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-BSC-Container CRITICALITY ignore EXTENSION GERAN-BSC-Container PRESENCE optional}|
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+ { ID id-E-UTRAN-Service-Handover CRITICALITY ignore EXTENSION E-UTRAN-Service-Handover PRESENCE optional}|
+-- Extension for Release 9 to enable a new value --
+ { ID id-PDP-TypeInformation-extension CRITICALITY ignore EXTENSION PDP-TypeInformation-extension PRESENCE optional}|
+-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
+ { ID id-Offload-RAB-Parameters CRITICALITY ignore EXTENSION Offload-RAB-Parameters PRESENCE optional},
+ ...
+}
+
+UserPlaneInformation ::= SEQUENCE {
+ userPlaneMode UserPlaneMode,
+ uP-ModeVersions UP-ModeVersions,
+ iE-Extensions ProtocolExtensionContainer { {UserPlaneInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+UserPlaneInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RelocationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY reject EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 5 to enable shared networks in connected mode --
+ { ID id-SNA-Access-Information CRITICALITY ignore EXTENSION SNA-Access-Information PRESENCE optional}|
+-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
+ { ID id-UESBI-Iu CRITICALITY ignore EXTENSION UESBI-Iu PRESENCE optional}|
+-- Extension for Release 6 to convey the selected PLMN id in network sharing mobility scenarios --
+ { ID id-SelectedPLMN-ID CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional}|
+-- Extension for Release 6 to enable MBMS UE linking at relocation --
+ { ID id-CNMBMSLinkingInformation CRITICALITY ignore EXTENSION CNMBMSLinkingInformation PRESENCE optional}|
+ { ID id-UE-AggregateMaximumBitRate CRITICALITY ignore EXTENSION UE-AggregateMaximumBitRate PRESENCE optional}|
+-- Extension for Release 9 to communicate to the target cell the CSG id reported by the source --
+ { ID id-CSG-Id CRITICALITY reject EXTENSION CSG-Id PRESENCE optional}|
+-- Extension for Release 9 for enabling UE prioritisation during access to hybrid cells --
+ { ID id-CSG-Membership-Status CRITICALITY ignore EXTENSION CSG-Membership-Status PRESENCE optional}|
+-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
+ { ID id-MSISDN CRITICALITY ignore EXTENSION MSISDN PRESENCE optional}|
+-- Extension for Release 11 to support rSRVCC in case of network sharing –
+ { ID id-AnchorPLMN-ID CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional},
+ ...
+}
+
+CNMBMSLinkingInformation ::= SEQUENCE {
+ joinedMBMSBearerService-IEs JoinedMBMSBearerService-IEs,
+ iE-Extensions ProtocolExtensionContainer { {CNMBMSLinkingInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+CNMBMSLinkingInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+JoinedMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ mBMS-PTP-RAB-ID MBMS-PTP-RAB-ID,
+ iE-Extensions ProtocolExtensionContainer { {JoinedMBMSBearerService-ExtIEs} } OPTIONAL,
+ ...
+ }
+
+JoinedMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Relocation Request Acknowledge
+--
+-- **************************************************************
+
+RelocationRequestAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationRequestAcknowledgeIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationRequestAcknowledgeExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationRequestAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Target-ToSource-TransparentContainer CRITICALITY ignore TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional } |
+ { ID id-RAB-SetupList-RelocReqAck CRITICALITY ignore TYPE RAB-SetupList-RelocReqAck PRESENCE optional } |
+ { ID id-RAB-FailedList CRITICALITY ignore TYPE RAB-FailedList PRESENCE optional } |
+ { ID id-ChosenIntegrityProtectionAlgorithm CRITICALITY ignore TYPE ChosenIntegrityProtectionAlgorithm PRESENCE optional } |
+ { ID id-ChosenEncryptionAlgorithm CRITICALITY ignore TYPE ChosenEncryptionAlgorithm PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-SetupList-RelocReqAck ::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReqAck-IEs} }
+
+RAB-SetupItem-RelocReqAck-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-RelocReqAck CRITICALITY reject TYPE RAB-SetupItem-RelocReqAck PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-RelocReqAck ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress OPTIONAL,
+ iuTransportAssociation IuTransportAssociation OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-SetupItem-RelocReqAck-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-RelocReqAck-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+ {ID id-Ass-RAB-Parameters CRITICALITY ignore EXTENSION Ass-RAB-Parameters PRESENCE optional } |
+-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
+ {ID id-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional } |
+ {ID id-IuTransportAssociation CRITICALITY ignore EXTENSION IuTransportAssociation PRESENCE optional },
+ ...
+}
+
+RAB-FailedList ::= RAB-IE-ContainerList { {RAB-FailedItemIEs} }
+
+RAB-FailedItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-FailedItem CRITICALITY ignore TYPE RAB-FailedItem PRESENCE mandatory },
+ ...
+}
+
+RAB-FailedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { {RAB-FailedItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-FailedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RelocationRequestAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+ {ID id-NewBSS-To-OldBSS-Information CRITICALITY ignore EXTENSION NewBSS-To-OldBSS-Information PRESENCE optional }|
+ {ID id-CSG-Id CRITICALITY ignore EXTENSION CSG-Id PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Relocation Failure
+--
+-- **************************************************************
+
+RelocationFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationFailureExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RelocationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
+ { ID id-NewBSS-To-OldBSS-Information CRITICALITY ignore EXTENSION NewBSS-To-OldBSS-Information PRESENCE optional } |
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-Classmark CRITICALITY ignore EXTENSION GERAN-Classmark PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION CANCEL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Cancel
+--
+-- **************************************************************
+
+RelocationCancel ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationCancelIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationCancelExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCancelIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+RelocationCancelExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Relocation Cancel Acknowledge
+--
+-- **************************************************************
+
+RelocationCancelAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationCancelAcknowledgeIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationCancelAcknowledgeExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCancelAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RelocationCancelAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- SRNS CONTEXT TRANSFER OPEARATION
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRNS Context Request
+--
+-- **************************************************************
+
+SRNS-ContextRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SRNS-ContextRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SRNS-ContextRequestExtensions} } OPTIONAL,
+ ...
+}
+
+SRNS-ContextRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataForwardingList-SRNS-CtxReq CRITICALITY ignore TYPE RAB-DataForwardingList-SRNS-CtxReq PRESENCE mandatory },
+ ...
+}
+
+RAB-DataForwardingList-SRNS-CtxReq ::= RAB-IE-ContainerList { {RAB-DataForwardingItem-SRNS-CtxReq-IEs} }
+
+RAB-DataForwardingItem-SRNS-CtxReq-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataForwardingItem-SRNS-CtxReq CRITICALITY reject TYPE RAB-DataForwardingItem-SRNS-CtxReq PRESENCE mandatory },
+ ...
+}
+
+RAB-DataForwardingItem-SRNS-CtxReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer { {RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+SRNS-ContextRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- The SGSN may include the IE, when available to indicate the RAT from which the context request originates, to correct measurement points in SRNC. --
+ {ID id-RAT-Type CRITICALITY ignore EXTENSION RAT-Type PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- SRNS Context Response
+--
+-- **************************************************************
+
+SRNS-ContextResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SRNS-ContextResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SRNS-ContextResponseExtensions} } OPTIONAL,
+ ...
+}
+
+SRNS-ContextResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ContextList CRITICALITY ignore TYPE RAB-ContextList PRESENCE optional } |
+ { ID id-RAB-ContextFailedtoTransferList CRITICALITY ignore TYPE RABs-ContextFailedtoTransferList PRESENCE optional }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-ContextList ::= RAB-IE-ContainerList { {RAB-ContextItemIEs} }
+
+RAB-ContextItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ContextItem CRITICALITY ignore TYPE RAB-ContextItem PRESENCE mandatory },
+ ...
+}
+
+RAB-ContextItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ContextItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+s
+RABs-ContextFailedtoTransferList ::= RAB-IE-ContainerList { {RABs-ContextFailedtoTransferItemIEs} }
+
+RABs-ContextFailedtoTransferItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ContextFailedtoTransferItem CRITICALITY ignore TYPE RABs-ContextFailedtoTransferItem PRESENCE mandatory },
+ ...
+}
+
+RABs-ContextFailedtoTransferItem::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { { RABs-ContextFailedtoTransferItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+
+RABs-ContextFailedtoTransferItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+SRNS-ContextResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- SECURITY MODE CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Security Mode Command
+--
+-- **************************************************************
+
+SecurityModeCommand ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SecurityModeCommandIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SecurityModeCommandExtensions} } OPTIONAL,
+ ...
+}
+
+SecurityModeCommandIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-IntegrityProtectionInformation CRITICALITY reject TYPE IntegrityProtectionInformation PRESENCE mandatory } |
+ { ID id-EncryptionInformation CRITICALITY ignore TYPE EncryptionInformation PRESENCE optional } |
+ { ID id-KeyStatus CRITICALITY reject TYPE KeyStatus PRESENCE mandatory},
+ ...
+}
+
+SecurityModeCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Security Mode Complete
+--
+-- **************************************************************
+
+SecurityModeComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SecurityModeCompleteIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SecurityModeCompleteExtensions} } OPTIONAL,
+ ...
+}
+
+SecurityModeCompleteIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-ChosenIntegrityProtectionAlgorithm CRITICALITY reject TYPE ChosenIntegrityProtectionAlgorithm PRESENCE mandatory } |
+ { ID id-ChosenEncryptionAlgorithm CRITICALITY ignore TYPE ChosenEncryptionAlgorithm PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+SecurityModeCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Security Mode Reject
+--
+-- **************************************************************
+
+SecurityModeReject ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SecurityModeRejectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SecurityModeRejectExtensions} } OPTIONAL,
+ ...
+}
+
+SecurityModeRejectIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+SecurityModeRejectExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- DATA VOLUME REPORT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Data Volume Report Request
+--
+-- **************************************************************
+
+DataVolumeReportRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {DataVolumeReportRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {DataVolumeReportRequestExtensions} } OPTIONAL,
+ ...
+}
+
+DataVolumeReportRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataVolumeReportRequestList CRITICALITY ignore TYPE RAB-DataVolumeReportRequestList PRESENCE mandatory },
+ ...
+}
+
+RAB-DataVolumeReportRequestList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportRequestItemIEs} }
+
+RAB-DataVolumeReportRequestItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataVolumeReportRequestItem CRITICALITY reject TYPE RAB-DataVolumeReportRequestItem PRESENCE mandatory },
+ ...
+}
+
+RAB-DataVolumeReportRequestItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer { {RAB-DataVolumeReportRequestItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-DataVolumeReportRequestItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+DataVolumeReportRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Data Volume Report
+--
+-- **************************************************************
+
+DataVolumeReport ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {DataVolumeReportIEs} },
+ protocolExtensions ProtocolExtensionContainer { {DataVolumeReportExtensions} } OPTIONAL,
+ ...
+}
+
+DataVolumeReportIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataVolumeReportList CRITICALITY ignore TYPE RAB-DataVolumeReportList PRESENCE optional } |
+ { ID id-RAB-FailedtoReportList CRITICALITY ignore TYPE RABs-failed-to-reportList PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+DataVolumeReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RABs-failed-to-reportList ::= RAB-IE-ContainerList { {RABs-failed-to-reportItemIEs} }
+
+RABs-failed-to-reportItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-FailedtoReportItem CRITICALITY ignore TYPE RABs-failed-to-reportItem PRESENCE mandatory },
+ ...
+}
+
+RABs-failed-to-reportItem::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { { RABs-failed-to-reportItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+
+RABs-failed-to-reportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- RESET ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Reset
+--
+-- **************************************************************
+
+Reset ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ResetExtensions} } OPTIONAL,
+ ...
+}
+
+ResetIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+ResetExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Reset Acknowledge
+--
+-- **************************************************************
+
+ResetAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ResetAcknowledgeExtensions} } OPTIONAL,
+ ...
+}
+
+ResetAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+ResetAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+-- **************************************************************
+--
+-- RESET RESOURCE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- Reset Resource
+--
+-- **************************************************************
+
+ResetResource ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetResourceIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ResetResourceExtensions} } OPTIONAL,
+ ...
+}
+
+ResetResourceIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-IuSigConIdList CRITICALITY ignore TYPE ResetResourceList PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+ResetResourceList ::= IuSigConId-IE-ContainerList{ {ResetResourceItemIEs} }
+
+ResetResourceItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-IuSigConIdItem CRITICALITY reject TYPE ResetResourceItem PRESENCE mandatory },
+ ...
+}
+
+ResetResourceItem ::= SEQUENCE {
+ iuSigConId IuSignallingConnectionIdentifier,
+ iE-Extensions ProtocolExtensionContainer { { ResetResourceItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+ResetResourceItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+ResetResourceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Reset Resource Acknowledge
+--
+-- **************************************************************
+
+ResetResourceAcknowledge ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ResetResourceAcknowledgeIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ResetResourceAcknowledgeExtensions} } OPTIONAL,
+ ...
+}
+
+ResetResourceAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-IuSigConIdList CRITICALITY ignore TYPE ResetResourceAckList PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+ResetResourceAckList ::= IuSigConId-IE-ContainerList{ {ResetResourceAckItemIEs} }
+
+ResetResourceAckItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-IuSigConIdItem CRITICALITY reject TYPE ResetResourceAckItem PRESENCE mandatory },
+ ...
+}
+
+ResetResourceAckItem ::= SEQUENCE {
+ iuSigConId IuSignallingConnectionIdentifier,
+ iE-Extensions ProtocolExtensionContainer { { ResetResourceAckItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+ResetResourceAckItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+ResetResourceAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RAB RELEASE REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Release Request
+--
+-- **************************************************************
+
+RAB-ReleaseRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RAB-ReleaseRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RAB-ReleaseRequestExtensions} } OPTIONAL,
+ ...
+}
+
+RAB-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ReleaseList CRITICALITY ignore TYPE RAB-ReleaseList PRESENCE mandatory },
+ ...
+}
+
+RAB-ReleaseList ::= RAB-IE-ContainerList { {RAB-ReleaseItemIEs} }
+
+RAB-ReleaseItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ReleaseItem CRITICALITY ignore TYPE RAB-ReleaseItem PRESENCE mandatory },
+ ...
+}
+
+RAB-ReleaseItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ReleaseItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Iu RELEASE REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Iu Release Request
+--
+-- **************************************************************
+
+Iu-ReleaseRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {Iu-ReleaseRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {Iu-ReleaseRequestExtensions} } OPTIONAL,
+ ...
+}
+
+Iu-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+Iu-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION DETECT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Detect
+--
+-- **************************************************************
+
+RelocationDetect ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationDetectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationDetectExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationDetectIEs RANAP-PROTOCOL-IES ::= {
+ ...
+}
+
+RelocationDetectExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- RELOCATION COMPLETE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Relocation Complete
+--
+-- **************************************************************
+
+RelocationComplete ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RelocationCompleteIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RelocationCompleteExtensions} } OPTIONAL,
+ ...
+}
+
+RelocationCompleteIEs RANAP-PROTOCOL-IES ::= {
+ ...
+}
+
+RelocationCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates --
+ { ID id-HigherBitratesThan16MbpsFlag CRITICALITY ignore EXTENSION HigherBitratesThan16MbpsFlag PRESENCE optional}|
+-- Extension for Release 11 to support BBAI --
+ { ID id-Tunnel-Information-for-BBF CRITICALITY ignore EXTENSION TunnelInformation PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+ { ID id-LHN-ID CRITICALITY ignore EXTENSION LHN-ID PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- ENHANCED RELOCATION COMPLETE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Request
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {EnhancedRelocationCompleteRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {EnhancedRelocationCompleteRequestExtensions} } OPTIONAL,
+ ...
+}
+
+EnhancedRelocationCompleteRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-OldIuSigConId CRITICALITY reject TYPE IuSignallingConnectionIdentifier PRESENCE mandatory } |
+ { ID id-IuSigConId CRITICALITY reject TYPE IuSignallingConnectionIdentifier PRESENCE mandatory } |
+ { ID id-Relocation-SourceRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE mandatory } |
+ { ID id-Relocation-SourceExtendedRNC-ID CRITICALITY ignore TYPE ExtendedRNC-ID PRESENCE optional } |
+ { ID id-Relocation-TargetRNC-ID CRITICALITY reject TYPE GlobalRNC-ID PRESENCE mandatory } |
+ { ID id-Relocation-TargetExtendedRNC-ID CRITICALITY reject TYPE ExtendedRNC-ID PRESENCE optional } |
+ { ID id-RAB-SetupList-EnhancedRelocCompleteReq CRITICALITY reject TYPE RAB-SetupList-EnhancedRelocCompleteReq PRESENCE optional },
+ ...
+}
+
+RAB-SetupList-EnhancedRelocCompleteReq ::= RAB-IE-ContainerList { { RAB-SetupItem-EnhancedRelocCompleteReq-IEs} }
+
+RAB-SetupItem-EnhancedRelocCompleteReq-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-EnhancedRelocCompleteReq CRITICALITY reject TYPE RAB-SetupItem-EnhancedRelocCompleteReq PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddressReq1 TransportLayerAddress OPTIONAL,
+ iuTransportAssociationReq1 IuTransportAssociation OPTIONAL,
+ ass-RAB-Parameters Ass-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+EnhancedRelocationCompleteRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-ChosenIntegrityProtectionAlgorithm CRITICALITY ignore EXTENSION ChosenIntegrityProtectionAlgorithm PRESENCE optional}|
+ { ID id-ChosenEncryptionAlgorithm CRITICALITY ignore EXTENSION ChosenEncryptionAlgorithm PRESENCE optional}|
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates --
+ { ID id-HigherBitratesThan16MbpsFlag CRITICALITY ignore EXTENSION HigherBitratesThan16MbpsFlag PRESENCE optional}|
+-- Extensions for Release 11 to enable enhanced relocation from RNC to hybrid cell –
+ { ID id-CSG-Id CRITICALITY reject EXTENSION CSG-Id PRESENCE optional}|
+ { ID id-Cell-Access-Mode CRITICALITY reject EXTENSION Cell-Access-Mode PRESENCE optional}|
+-- Extension for Release 11 to support BBAI --
+ { ID id-Tunnel-Information-for-BBF CRITICALITY ignore EXTENSION TunnelInformation PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+ { ID id-LHN-ID CRITICALITY ignore EXTENSION LHN-ID PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Response
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {EnhancedRelocationCompleteResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {EnhancedRelocationCompleteResponseExtensions} } OPTIONAL,
+ ...
+}
+
+EnhancedRelocationCompleteResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupList-EnhancedRelocCompleteRes CRITICALITY ignore TYPE RAB-SetupList-EnhancedRelocCompleteRes PRESENCE optional} |
+ { ID id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes CRITICALITY ignore TYPE RAB-ToBeReleasedList-EnhancedRelocCompleteRes PRESENCE optional} |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-SetupList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-SetupItem-EnhancedRelocCompleteRes-IEs} }
+
+RAB-SetupItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-EnhancedRelocCompleteRes CRITICALITY reject TYPE RAB-SetupItem-EnhancedRelocCompleteRes PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ rAB-Parameters RAB-Parameters OPTIONAL,
+ userPlaneInformation UserPlaneInformation,
+ transportLayerAddressRes1 TransportLayerAddress OPTIONAL,
+ iuTransportAssociationRes1 IuTransportAssociation OPTIONAL,
+ rab2beReleasedList RAB-ToBeReleasedList-EnhancedRelocCompleteRes OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ -- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+ { ID id-Offload-RAB-Parameters CRITICALITY ignore EXTENSION Offload-RAB-Parameters PRESENCE optional},
+ ...
+}
+
+RAB-ToBeReleasedList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs} }
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes CRITICALITY ignore TYPE RAB-ToBeReleasedItem-EnhancedRelocCompleteRes PRESENCE mandatory },
+ ...
+}
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { { RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+EnhancedRelocationCompleteResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-UE-AggregateMaximumBitRate CRITICALITY ignore EXTENSION UE-AggregateMaximumBitRate PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+ { ID id-MSISDN CRITICALITY ignore EXTENSION MSISDN PRESENCE optional}|
+-- Extension for Release 11 to enable ehnahced relocation from RNC to hybrid cell –
+ { ID id-CSG-Membership-Status CRITICALITY ignore EXTENSION CSG-Membership-Status PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Failure
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {EnhancedRelocationCompleteFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {EnhancedRelocationCompleteFailureExtensions} } OPTIONAL,
+ ...
+}
+
+EnhancedRelocationCompleteFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+EnhancedRelocationCompleteFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Enhanced Relocation Complete Confirm
+--
+-- **************************************************************
+
+EnhancedRelocationCompleteConfirm ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {EnhancedRelocationCompleteConfirmIEs} },
+ protocolExtensions ProtocolExtensionContainer { {EnhancedRelocationCompleteConfirmExtensions} } OPTIONAL,
+ ...
+}
+
+EnhancedRelocationCompleteConfirmIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-FailedList CRITICALITY ignore TYPE RAB-FailedList PRESENCE optional },
+ ...
+}
+
+EnhancedRelocationCompleteConfirmExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+-- **************************************************************
+--
+-- PAGING ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Paging
+--
+-- **************************************************************
+
+Paging ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {PagingIEs} },
+ protocolExtensions ProtocolExtensionContainer { {PagingExtensions} } OPTIONAL,
+ ...
+}
+
+PagingIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-PermanentNAS-UE-ID CRITICALITY ignore TYPE PermanentNAS-UE-ID PRESENCE mandatory } |
+ { ID id-TemporaryUE-ID CRITICALITY ignore TYPE TemporaryUE-ID PRESENCE optional } |
+ { ID id-PagingAreaID CRITICALITY ignore TYPE PagingAreaID PRESENCE optional } |
+ { ID id-PagingCause CRITICALITY ignore TYPE PagingCause PRESENCE optional } |
+ { ID id-NonSearchingIndication CRITICALITY ignore TYPE NonSearchingIndication PRESENCE optional } |
+ { ID id-DRX-CycleLengthCoefficient CRITICALITY ignore TYPE DRX-CycleLengthCoefficient PRESENCE optional } ,
+ ...
+}
+
+PagingExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable NNSF --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional } |
+-- Extension for Release 8 to support CSG --
+ { ID id-CSG-Id-List CRITICALITY ignore EXTENSION CSG-Id-List PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- COMMON ID ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Common ID
+--
+-- **************************************************************
+
+CommonID ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {CommonID-IEs} },
+ protocolExtensions ProtocolExtensionContainer { {CommonIDExtensions} } OPTIONAL,
+ ...
+}
+
+CommonID-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-PermanentNAS-UE-ID CRITICALITY ignore TYPE PermanentNAS-UE-ID PRESENCE mandatory },
+ ...
+}
+
+CommonIDExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable shared networks in connected mode --
+ { ID id-SNA-Access-Information CRITICALITY ignore EXTENSION SNA-Access-Information PRESENCE optional }|
+-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
+ { ID id-UESBI-Iu CRITICALITY ignore EXTENSION UESBI-Iu PRESENCE optional }|
+-- Extension for Release 6 to indicate the selected plmn in GWCN configuration for network sharing non-supporting UEs --
+ { ID id-SelectedPLMN-ID CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional }|
+-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
+ {ID id-SubscriberProfileIDforRFP CRITICALITY ignore EXTENSION SubscriberProfileIDforRFP PRESENCE optional }|
+-- Extension for Release 8 for SRVCC operation --
+ { ID id-SRVCC-Operation-Possible CRITICALITY ignore EXTENSION SRVCC-Operation-Possible PRESENCE optional }|
+-- Extension for Release 9 to allow for UE prioritisation during access to hybrid cells --
+ { ID id-CSG-Membership-Status CRITICALITY ignore EXTENSION CSG-Membership-Status PRESENCE optional }|
+-- Extension for Release 10 to indicate Management Based MDT Allowed --
+ { ID id-Management-Based-MDT-Allowed CRITICALITY ignore EXTENSION Management-Based-MDT-Allowed PRESENCE optional }|
+-- Extension for Release 11 to indicate MDT PLMN List --
+ { ID id-Management-Based-MDT-PLMN-List CRITICALITY ignore EXTENSION MDT-PLMN-List PRESENCE optional }|
+-- Extension for Release 11 rSRVCC operation --
+ { ID id-RSRVCC-Operation-Possible CRITICALITY ignore EXTENSION RSRVCC-Operation-Possible PRESENCE optional }|
+-- Extension for Release 11 to inidcate the last E-UTRAN PLMN Identity --
+ { ID id-LastE-UTRANPLMNIdentity CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- CN INVOKE TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- CN Invoke Trace
+--
+-- **************************************************************
+
+CN-InvokeTrace ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {CN-InvokeTraceIEs} },
+ protocolExtensions ProtocolExtensionContainer { {CN-InvokeTraceExtensions} } OPTIONAL,
+ ...
+}
+
+CN-InvokeTraceIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TraceType CRITICALITY ignore TYPE TraceType PRESENCE optional } |
+ -- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+ { ID id-TraceReference CRITICALITY ignore TYPE TraceReference PRESENCE mandatory } |
+ { ID id-TriggerID CRITICALITY ignore TYPE TriggerID PRESENCE optional } |
+ -- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+ { ID id-UE-ID CRITICALITY ignore TYPE UE-ID PRESENCE optional } |
+ -- This information is mandatory for UTRAN, optional for GERAN Iu mode --
+ { ID id-OMC-ID CRITICALITY ignore TYPE OMC-ID PRESENCE optional },
+ -- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
+ ...
+}
+
+CN-InvokeTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable signalling based activation for Subscriber and Equipment Trace over Iu interface --
+ { ID id-TracePropagationParameters CRITICALITY ignore EXTENSION TracePropagationParameters PRESENCE optional}|
+-- Extension for Release 10 to support MDT--
+ { ID id-MDT-Configuration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional}|
+-- Extension for Release 10 to support MDT--
+ { ID id-Trace-Collection-Entity-IP-Addess CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- CN DEACTIVATE TRACE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- CN Deactivate Trace
+--
+-- **************************************************************
+
+CN-DeactivateTrace ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {CN-DeactivateTraceIEs} },
+ protocolExtensions ProtocolExtensionContainer { {CN-DeactivateTraceExtensions} } OPTIONAL,
+ ...
+}
+
+CN-DeactivateTraceIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TraceReference CRITICALITY ignore TYPE TraceReference PRESENCE mandatory } |
+ { ID id-TriggerID CRITICALITY ignore TYPE TriggerID PRESENCE optional },
+ -- This information is optional for GERAN Iu Mode, not applicable to UTRAN --
+ ...
+}
+
+CN-DeactivateTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- LOCATION REPORTING CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Reporting Control
+--
+-- **************************************************************
+
+LocationReportingControl ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {LocationReportingControlIEs} },
+ protocolExtensions ProtocolExtensionContainer { {LocationReportingControlExtensions} } OPTIONAL,
+ ...
+}
+
+LocationReportingControlIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE mandatory },
+ ...
+}
+
+LocationReportingControlExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enhance the location request over Iu --
+ { ID id-VerticalAccuracyCode CRITICALITY ignore EXTENSION VerticalAccuracyCode PRESENCE optional } |
+-- Extension for Release 4 to enhance the location request over Iu --
+ { ID id-ResponseTime CRITICALITY ignore EXTENSION ResponseTime PRESENCE optional } |
+-- Extension for Release 4 to enhance the location request over Iu --
+ { ID id-PositioningPriority CRITICALITY ignore EXTENSION PositioningPriority PRESENCE optional } |
+-- Extension for Release 4 to enhance the location request over Iu --
+ { ID id-ClientType CRITICALITY ignore EXTENSION ClientType PRESENCE optional } |
+-- Extension for Release 7 to allow the request of velocity over Iu --
+ { ID id-IncludeVelocity CRITICALITY ignore EXTENSION IncludeVelocity PRESENCE optional } |
+-- Extension for Release 7 to allow periodic reporting over Iu --
+ { ID id-PeriodicLocationInfo CRITICALITY ignore EXTENSION PeriodicLocationInfo PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- LOCATION REPORT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Report
+--
+-- **************************************************************
+
+LocationReport ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {LocationReportIEs} },
+ protocolExtensions ProtocolExtensionContainer { {LocationReportExtensions} } OPTIONAL,
+ ...
+}
+
+LocationReportIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-AreaIdentity CRITICALITY ignore TYPE AreaIdentity PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE optional } ,
+ ...
+}
+
+LocationReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable report of Last Known Service Area with its Age over Iu --
+ { ID id-LastKnownServiceArea CRITICALITY ignore EXTENSION LastKnownServiceArea PRESENCE optional} |
+-- Extension for Release 5 to pass the positioning methods that have been used --
+ { ID id-PositionData CRITICALITY ignore EXTENSION PositionData PRESENCE optional}|
+-- Extension for Release 5 to pass the positioning methods that have been used for GERAN Iu mode --
+ { ID id-PositionDataSpecificToGERANIuMode CRITICALITY ignore EXTENSION PositionDataSpecificToGERANIuMode PRESENCE optional }|
+ -- This extension is optional for GERAN Iu mode only, not applicable for UTRAN --
+-- Extension for Release 6 to indicate whether the returned position estimate satisfies the requested accuracy or not --
+ { ID id-AccuracyFulfilmentIndicator CRITICALITY ignore EXTENSION AccuracyFulfilmentIndicator PRESENCE optional}|
+-- Extension for Release 7 to provide a velocity estimate --
+ { ID id-VelocityEstimate CRITICALITY ignore EXTENSION VelocityEstimate PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- INITIAL UE MESSAGE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Initial UE Message
+--
+-- **************************************************************
+
+InitialUE-Message ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {InitialUE-MessageIEs} },
+ protocolExtensions ProtocolExtensionContainer { {InitialUE-MessageExtensions} } OPTIONAL,
+ ...
+}
+
+InitialUE-MessageIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-LAI CRITICALITY ignore TYPE LAI PRESENCE mandatory } |
+ { ID id-RAC CRITICALITY ignore TYPE RAC PRESENCE conditional } |
+ -- This IE shall be present if the CN Domain Indicator IE is set to "PS domain" -- } |
+ { ID id-SAI CRITICALITY ignore TYPE SAI PRESENCE mandatory } |
+ { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory } |
+ { ID id-IuSigConId CRITICALITY ignore TYPE IuSignallingConnectionIdentifier PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE mandatory },
+ ...
+}
+
+InitialUE-MessageExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-Classmark CRITICALITY ignore EXTENSION GERAN-Classmark PRESENCE optional}|
+-- Extension for Release 6 to convey the selected PLMN id in shared networks --
+ { ID id-SelectedPLMN-ID CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional}|
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+ { ID id-PermanentNAS-UE-ID CRITICALITY ignore EXTENSION PermanentNAS-UE-ID PRESENCE optional}|
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+ { ID id-NAS-SequenceNumber CRITICALITY ignore EXTENSION NAS-SequenceNumber PRESENCE optional}|
+-- Extension for Release 6 to indicate rerouting in MOCN configuration for network sharing non-supporting UEs --
+ { ID id-RedirectAttemptFlag CRITICALITY ignore EXTENSION RedirectAttemptFlag PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional}|
+-- Extension for Release 8 to support CSG --
+ { ID id-CSG-Id CRITICALITY reject EXTENSION CSG-Id PRESENCE optional}|
+-- Extension for Release 9 to allow communication of the cell access mode --
+ { ID id-Cell-Access-Mode CRITICALITY reject EXTENSION Cell-Access-Mode PRESENCE optional}|
+-- Extension for Release 10 to support LIPA --
+ { ID id-LGW-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}|
+-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates --
+ { ID id-HigherBitratesThan16MbpsFlag CRITICALITY ignore EXTENSION HigherBitratesThan16MbpsFlag PRESENCE optional}|
+-- Extension for Release 11 to support BBAI --
+ { ID id-Tunnel-Information-for-BBF CRITICALITY ignore EXTENSION TunnelInformation PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW--
+ { ID id-SIPTO-LGW-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+ { ID id-LHN-ID CRITICALITY ignore EXTENSION LHN-ID PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- DIRECT TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Direct Transfer
+--
+-- **************************************************************
+
+DirectTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {DirectTransferIEs} },
+ protocolExtensions ProtocolExtensionContainer { {DirectTransferExtensions} } OPTIONAL,
+ ...
+}
+
+DirectTransferIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory}|
+ { ID id-LAI CRITICALITY ignore TYPE LAI PRESENCE optional}|
+ { ID id-RAC CRITICALITY ignore TYPE RAC PRESENCE optional}|
+ { ID id-SAI CRITICALITY ignore TYPE SAI PRESENCE optional}|
+ { ID id-SAPI CRITICALITY ignore TYPE SAPI PRESENCE optional},
+ ...
+}
+
+DirectTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
+ { ID id-RedirectionIndication CRITICALITY ignore EXTENSION RedirectionIndication PRESENCE optional}|
+-- Extension for Release 6 to indicate the MOCN rerouting is completed --
+ { ID id-RedirectionCompleted CRITICALITY ignore EXTENSION RedirectionCompleted PRESENCE optional}|
+-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
+ { ID id-SubscriberProfileIDforRFP CRITICALITY ignore EXTENSION SubscriberProfileIDforRFP PRESENCE optional}|
+-- Extension for Release 10 to support LIPA --
+ { ID id-LGW-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW --
+ { ID id-SIPTO-LGW-TransportLayerAddress CRITICALITY ignore EXTENSION TransportLayerAddress PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
+ { ID id-LHN-ID CRITICALITY ignore EXTENSION LHN-ID PRESENCE optional},
+ ...
+}
+
+RedirectionIndication ::= ProtocolIE-Container { {RedirectionIndication-IEs} }
+
+RedirectionIndication-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory }|
+ { ID id-RejectCauseValue CRITICALITY ignore TYPE RejectCauseValue PRESENCE mandatory}|
+ { ID id-NAS-SequenceNumber CRITICALITY ignore TYPE NAS-SequenceNumber PRESENCE optional}|
+ { ID id-PermanentNAS-UE-ID CRITICALITY ignore TYPE PermanentNAS-UE-ID PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- OVERLOAD CONTROL ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Overload
+--
+-- **************************************************************
+
+Overload ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {OverloadIEs} },
+ protocolExtensions ProtocolExtensionContainer { {OverloadExtensions} } OPTIONAL,
+ ...
+}
+
+OverloadIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-NumberOfSteps CRITICALITY ignore TYPE NumberOfSteps PRESENCE optional } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+OverloadExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 99 to enable the indication to the RNC which CN domain is suffering the signalling traffic overload --
+ { ID id-CN-DomainIndicator CRITICALITY ignore EXTENSION CN-DomainIndicator PRESENCE optional} |
+-- Extension for Release 5 to enable NNSF --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional} |
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional} |
+-- Extension for Release 10 to support Low Priority overload --
+ { ID id-Priority-Class-Indicator CRITICALITY ignore EXTENSION Priority-Class-Indicator PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- ERROR INDICATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Error Indication
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+ErrorIndicationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE optional } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+ErrorIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 --
+ { ID id-GlobalCN-ID CRITICALITY ignore EXTENSION GlobalCN-ID PRESENCE optional}|
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- SRNS DATA FORWARD ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRNS Data Forward Command
+--
+-- **************************************************************
+
+SRNS-DataForwardCommand ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SRNS-DataForwardCommandIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SRNS-DataForwardCommandExtensions} } OPTIONAL,
+ ...
+}
+
+SRNS-DataForwardCommandIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-DataForwardingList CRITICALITY ignore TYPE RAB-DataForwardingList PRESENCE optional },
+ ...
+}
+
+SRNS-DataForwardCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- FORWARD SRNS CONTEXT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Forward SRNS Context
+--
+-- **************************************************************
+
+ForwardSRNS-Context ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ForwardSRNS-ContextIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ForwardSRNS-ContextExtensions} } OPTIONAL,
+ ...
+}
+
+ForwardSRNS-ContextIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ContextList CRITICALITY ignore TYPE RAB-ContextList PRESENCE mandatory },
+ ...
+}
+
+ForwardSRNS-ContextExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
+ { ID id-SourceRNC-PDCP-context-info CRITICALITY ignore EXTENSION RRC-Container PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RAB ASSIGNMENT ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Assignment Request
+--
+-- **************************************************************
+
+RAB-AssignmentRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RAB-AssignmentRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RAB-AssignmentRequestExtensions} } OPTIONAL,
+ ...
+}
+
+RAB-AssignmentRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupOrModifyList CRITICALITY ignore TYPE RAB-SetupOrModifyList PRESENCE optional } |
+ { ID id-RAB-ReleaseList CRITICALITY ignore TYPE RAB-ReleaseList PRESENCE optional },
+ ...
+}
+
+RAB-SetupOrModifyList ::= RAB-IE-ContainerPairList { {RAB-SetupOrModifyItem-IEs} }
+
+RAB-SetupOrModifyItem-IEs RANAP-PROTOCOL-IES-PAIR ::= {
+ { ID id-RAB-SetupOrModifyItem FIRST CRITICALITY reject FIRST TYPE RAB-SetupOrModifyItemFirst
+ SECOND CRITICALITY ignore SECOND TYPE RAB-SetupOrModifyItemSecond
+ PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupOrModifyItemFirst ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ nAS-SynchronisationIndicator NAS-SynchronisationIndicator OPTIONAL,
+ rAB-Parameters RAB-Parameters OPTIONAL,
+ userPlaneInformation UserPlaneInformation OPTIONAL,
+ transportLayerInformation TransportLayerInformation OPTIONAL,
+ service-Handover Service-Handover OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-SetupOrModifyItemFirst-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TransportLayerInformation ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer { {TransportLayerInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TransportLayerInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-SetupOrModifyItemFirst-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+ { ID id-E-UTRAN-Service-Handover CRITICALITY ignore EXTENSION E-UTRAN-Service-Handover PRESENCE optional}|
+-- Extension for Release 10 to support LIPA --
+ { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}|
+-- Extension for Release 12 to support SIPTO@LN with collocated L-GW --
+ { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional},
+ ...
+}
+
+RAB-SetupOrModifyItemSecond ::= SEQUENCE {
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-SetupOrModifyItemSecond-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupOrModifyItemSecond-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+ { ID id-Alt-RAB-Parameters CRITICALITY ignore EXTENSION Alt-RAB-Parameters PRESENCE optional}|
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-BSC-Container CRITICALITY ignore EXTENSION GERAN-BSC-Container PRESENCE optional}|
+-- Extension for Release Release 9 to enable a new value --
+ { ID id-PDP-TypeInformation-extension CRITICALITY ignore EXTENSION PDP-TypeInformation-extension PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+ { ID id-Offload-RAB-Parameters CRITICALITY ignore EXTENSION Offload-RAB-Parameters PRESENCE optional},
+ ...
+}
+
+RAB-AssignmentRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-UE-AggregateMaximumBitRate CRITICALITY ignore EXTENSION UE-AggregateMaximumBitRate PRESENCE optional}|
+-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
+ { ID id-MSISDN CRITICALITY ignore EXTENSION MSISDN PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RAB Assignment Response
+--
+-- **************************************************************
+
+RAB-AssignmentResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RAB-AssignmentResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RAB-AssignmentResponseExtensions} } OPTIONAL,
+ ...
+}
+
+RAB-AssignmentResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupOrModifiedList CRITICALITY ignore TYPE RAB-SetupOrModifiedList PRESENCE optional } |
+ { ID id-RAB-ReleasedList CRITICALITY ignore TYPE RAB-ReleasedList PRESENCE optional } |
+ { ID id-RAB-QueuedList CRITICALITY ignore TYPE RAB-QueuedList PRESENCE optional } |
+ { ID id-RAB-FailedList CRITICALITY ignore TYPE RAB-FailedList PRESENCE optional } |
+ { ID id-RAB-ReleaseFailedList CRITICALITY ignore TYPE RAB-ReleaseFailedList PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-SetupOrModifiedList ::= RAB-IE-ContainerList { {RAB-SetupOrModifiedItemIEs} }
+
+RAB-SetupOrModifiedItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupOrModifiedItem CRITICALITY ignore TYPE RAB-SetupOrModifiedItem PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupOrModifiedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress OPTIONAL,
+ iuTransportAssociation IuTransportAssociation OPTIONAL,
+ dl-dataVolumes DataVolumeList OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-SetupOrModifiedItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupOrModifiedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
+ { ID id-Ass-RAB-Parameters CRITICALITY ignore EXTENSION Ass-RAB-Parameters PRESENCE optional },
+ ...
+}
+
+RAB-ReleasedList ::= RAB-IE-ContainerList { {RAB-ReleasedItemIEs} }
+
+RAB-ReleasedItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ReleasedItem CRITICALITY ignore TYPE RAB-ReleasedItem PRESENCE mandatory },
+ ...
+}
+
+RAB-ReleasedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-dataVolumes DataVolumeList OPTIONAL,
+ dL-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ uL-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ReleasedItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ReleasedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+DataVolumeList ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
+ SEQUENCE {
+ dl-UnsuccessfullyTransmittedDataVolume UnsuccessfullyTransmittedDataVolume,
+ dataVolumeReference DataVolumeReference OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {DataVolumeList-ExtIEs} } OPTIONAL,
+ ...
+ }
+
+DataVolumeList-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-QueuedList ::= RAB-IE-ContainerList { {RAB-QueuedItemIEs} }
+
+RAB-QueuedItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-QueuedItem CRITICALITY ignore TYPE RAB-QueuedItem PRESENCE mandatory },
+ ...
+}
+
+RAB-QueuedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer { {RAB-QueuedItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-QueuedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-ReleaseFailedList ::= RAB-FailedList
+
+RAB-AssignmentResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable GERAN support over Iu-cs --
+ { ID id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse CRITICALITY ignore EXTENSION GERAN-Iumode-RAB-FailedList-RABAssgntResponse PRESENCE optional} ,
+ ...
+}
+
+GERAN-Iumode-RAB-FailedList-RABAssgntResponse ::= RAB-IE-ContainerList { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs} }
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item CRITICALITY ignore TYPE GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item PRESENCE mandatory },
+ ...
+}
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ gERAN-Classmark GERAN-Classmark OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs} } OPTIONAL,
+ ...
+}
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+ privateIEs PrivateIE-Container { {PrivateMessage-IEs } },
+ ...
+}
+
+PrivateMessage-IEs RANAP-PRIVATE-IES ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- RANAP RELOCATION INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+RANAP-RelocationInformation ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RANAP-RelocationInformationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RANAP-RelocationInformationExtensions} } OPTIONAL,
+ ...
+}
+
+RANAP-RelocationInformationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-DirectTransferInformationList-RANAP-RelocInf
+ CRITICALITY ignore TYPE DirectTransferInformationList-RANAP-RelocInf
+ PRESENCE optional } |
+ { ID id-RAB-ContextList-RANAP-RelocInf CRITICALITY ignore TYPE RAB-ContextList-RANAP-RelocInf PRESENCE optional },
+ ...
+}
+
+DirectTransferInformationList-RANAP-RelocInf ::= DirectTransfer-IE-ContainerList { {DirectTransferInformationItemIEs-RANAP-RelocInf} }
+
+DirectTransferInformationItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
+ { ID id-DirectTransferInformationItem-RANAP-RelocInf
+ CRITICALITY ignore TYPE DirectTransferInformationItem-RANAP-RelocInf
+ PRESENCE mandatory },
+ ...
+}
+
+DirectTransferInformationItem-RANAP-RelocInf ::= SEQUENCE {
+ nAS-PDU NAS-PDU,
+ sAPI SAPI,
+ cN-DomainIndicator CN-DomainIndicator,
+ iE-Extensions ProtocolExtensionContainer { {RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf} } OPTIONAL,
+ ...
+}
+
+RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-ContextList-RANAP-RelocInf ::= RAB-IE-ContainerList { {RAB-ContextItemIEs-RANAP-RelocInf} }
+
+RAB-ContextItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ContextItem-RANAP-RelocInf CRITICALITY ignore TYPE RAB-ContextItem-RANAP-RelocInf PRESENCE mandatory },
+ ...
+}
+
+RAB-ContextItem-RANAP-RelocInf ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs-RANAP-RelocInf} } OPTIONAL,
+ ...
+}
+
+RAB-ContextItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RANAP-RelocationInformationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
+ { ID id-SourceRNC-PDCP-context-info CRITICALITY ignore EXTENSION RRC-Container PRESENCE optional} |
+-- Extension for Release 10 to enable RNSAP Relocation --
+ { ID id-RNSAPRelocationParameters CRITICALITY reject EXTENSION RNSAPRelocationParameters PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RANAP ENHANCED RELOCATION INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RANAP Enhanced Relocation Information Request
+--
+-- **************************************************************
+
+RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RANAP-EnhancedRelocationInformationRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RANAP-EnhancedRelocationInformationRequestExtensions} } OPTIONAL,
+ ...
+}
+
+RANAP-EnhancedRelocationInformationRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE SourceRNC-ToTargetRNC-TransparentContainer PRESENCE mandatory }|
+ { ID id-OldIuSigConIdCS CRITICALITY ignore TYPE IuSignallingConnectionIdentifier PRESENCE optional }|
+ { ID id-GlobalCN-IDCS CRITICALITY reject TYPE GlobalCN-ID PRESENCE optional }|
+ { ID id-OldIuSigConIdPS CRITICALITY ignore TYPE IuSignallingConnectionIdentifier PRESENCE optional }|
+ { ID id-GlobalCN-IDPS CRITICALITY reject TYPE GlobalCN-ID PRESENCE optional }|
+ { ID id-RAB-SetupList-EnhRelocInfoReq CRITICALITY reject TYPE RAB-SetupList-EnhRelocInfoReq PRESENCE optional }|
+ { ID id-SNA-Access-Information CRITICALITY ignore TYPE SNA-Access-Information PRESENCE optional }|
+ { ID id-UESBI-Iu CRITICALITY ignore TYPE UESBI-Iu PRESENCE optional }|
+ { ID id-SelectedPLMN-ID CRITICALITY ignore TYPE PLMNidentity PRESENCE optional }|
+ { ID id-CNMBMSLinkingInformation CRITICALITY ignore TYPE CNMBMSLinkingInformation PRESENCE optional },
+ ...
+}
+
+RAB-SetupList-EnhRelocInfoReq ::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoReq-IEs} }
+
+RAB-SetupItem-EnhRelocInfoReq-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-EnhRelocInfoReq CRITICALITY reject TYPE RAB-SetupItem-EnhRelocInfoReq PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-EnhRelocInfoReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-Parameters RAB-Parameters,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ userPlaneInformation UserPlaneInformation,
+ dataForwardingInformation TNLInformationEnhRelInfoReq OPTIONAL,
+ sourceSideIuULTNLInfo TNLInformationEnhRelInfoReq OPTIONAL,
+
+ service-Handover Service-Handover OPTIONAL,
+ alt-RAB-Parameters Alt-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoReq-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhRelocInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 8 to enable handover restriction to E-UTRAN --
+ { ID id-E-UTRAN-Service-Handover CRITICALITY ignore EXTENSION E-UTRAN-Service-Handover PRESENCE optional }|
+-- Extension for Release Release 9 to enable a new value --
+ { ID id-PDP-TypeInformation-extension CRITICALITY ignore EXTENSION PDP-TypeInformation-extension PRESENCE optional },
+ ...
+}
+
+TNLInformationEnhRelInfoReq ::=SEQUENCE{
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer { { TNLInformationEnhRelInfoReq-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TNLInformationEnhRelInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+RANAP-EnhancedRelocationInformationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-IntegrityProtectionInformation CRITICALITY ignore EXTENSION IntegrityProtectionInformation PRESENCE optional} |
+ { ID id-EncryptionInformation CRITICALITY ignore EXTENSION EncryptionInformation PRESENCE optional} |
+ { ID id-UE-AggregateMaximumBitRate CRITICALITY ignore EXTENSION UE-AggregateMaximumBitRate PRESENCE optional} |
+-- Extension for Release 10 to enable RNSAP Relocation --
+ { ID id-RABParametersList CRITICALITY reject EXTENSION RABParametersList PRESENCE optional} |
+ { ID id-CSG-Id CRITICALITY reject EXTENSION CSG-Id PRESENCE optional} |
+ { ID id-CSG-Membership-Status CRITICALITY reject EXTENSION CSG-Membership-Status PRESENCE optional} |
+-- Extension for Release 11 to support rSRVCC in case of network sharing –
+ { ID id-AnchorPLMN-ID CRITICALITY ignore EXTENSION PLMNidentity PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- RANAP Enhanced Relocation Information Response
+--
+-- **************************************************************
+
+RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RANAP-EnhancedRelocationInformationResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RANAP-EnhancedRelocationInformationResponseExtensions} } OPTIONAL,
+ ...
+}
+
+RANAP-EnhancedRelocationInformationResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Target-ToSource-TransparentContainer CRITICALITY ignore TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional } |
+ { ID id-RAB-SetupList-EnhRelocInfoRes CRITICALITY ignore TYPE RAB-SetupList-EnhRelocInfoRes PRESENCE optional } |
+ { ID id-RAB-FailedList-EnhRelocInfoRes CRITICALITY ignore TYPE RAB-FailedList-EnhRelocInfoRes PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+RAB-SetupList-EnhRelocInfoRes ::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoRes-IEs} }
+
+RAB-SetupItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-SetupItem-EnhRelocInfoRes CRITICALITY reject TYPE RAB-SetupItem-EnhRelocInfoRes PRESENCE mandatory },
+ ...
+}
+
+RAB-SetupItem-EnhRelocInfoRes ::= SEQUENCE {
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-ID RAB-ID,
+ dataForwardingInformation TNLInformationEnhRelInfoRes OPTIONAL,
+ ass-RAB-Parameters Ass-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoRes-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-FailedList-EnhRelocInfoRes ::= RAB-IE-ContainerList { { RAB-FailedItem-EnhRelocInfoRes-IEs} }
+
+RAB-FailedItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-FailedItem-EnhRelocInfoRes CRITICALITY reject TYPE RAB-FailedItem-EnhRelocInfoRes PRESENCE mandatory },
+ ...
+}
+
+RAB-FailedItem-EnhRelocInfoRes ::= SEQUENCE {
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { { RAB-FailedItem-EnhRelocInfoRes-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-FailedItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+TNLInformationEnhRelInfoRes ::=SEQUENCE{
+ dl-forwardingTransportLayerAddress TransportLayerAddress,
+ dl-forwardingTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer { { TNLInformationEnhRelInfoRes-ExtIEs} } OPTIONAL,
+ ...
+}
+
+TNLInformationEnhRelInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RANAP-EnhancedRelocationInformationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+-- **************************************************************
+--
+-- RAB MODIFICATION REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- RAB Modify Request
+--
+-- **************************************************************
+
+RAB-ModifyRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {RAB-ModifyRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {RAB-ModifyRequestExtensions} } OPTIONAL,
+ ...
+}
+
+RAB-ModifyRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ModifyList CRITICALITY ignore TYPE RAB-ModifyList PRESENCE mandatory},
+ ...
+}
+
+RAB-ModifyList ::= RAB-IE-ContainerList { {RAB-ModifyItemIEs} }
+
+RAB-ModifyItemIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-RAB-ModifyItem CRITICALITY ignore TYPE RAB-ModifyItem PRESENCE mandatory },
+ ...
+}
+
+RAB-ModifyItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ requested-RAB-Parameter-Values Requested-RAB-Parameter-Values,
+ iE-Extensions ProtocolExtensionContainer { {RAB-ModifyItem-ExtIEs} } OPTIONAL,
+ ...
+}
+
+RAB-ModifyItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+RAB-ModifyRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- LOCATION RELATED DATA ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Location Related Data Request
+--
+-- **************************************************************
+
+LocationRelatedDataRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {LocationRelatedDataRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {LocationRelatedDataRequestExtensions} } OPTIONAL,
+ ...
+}
+
+LocationRelatedDataRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-LocationRelatedDataRequestType CRITICALITY reject TYPE LocationRelatedDataRequestType PRESENCE optional },
+ -- This IE is mandatory for UTRAN, optional for GERAN Iu Mode –-
+ ...
+}
+
+LocationRelatedDataRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 5 to enable LCS support for GERAN Iu mode --
+ { ID id-LocationRelatedDataRequestTypeSpecificToGERANIuMode CRITICALITY reject EXTENSION LocationRelatedDataRequestTypeSpecificToGERANIuMode PRESENCE optional }|
+ -- The previous extension is optional for GERAN Iu Mode only, not applicable for UTRAN --
+ -- Extension for Release 7 to request GANSS Assistance Data. This IE shall be present if the Requested Location Related Data Type IE is set to
+ -- ‘Dedicated Assistance Data for Assisted GANSS’ or `Dedicated Assistance Data for Assisted GPS and GANSS’--
+ { ID id-RequestedGANSSAssistanceData CRITICALITY reject EXTENSION RequestedGANSSAssistanceData PRESENCE conditional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Location Related Data Response
+--
+-- **************************************************************
+
+LocationRelatedDataResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { LocationRelatedDataResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { LocationRelatedDataResponseExtensions} } OPTIONAL,
+ ...
+}
+
+LocationRelatedDataResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-BroadcastAssistanceDataDecipheringKeys CRITICALITY ignore TYPE BroadcastAssistanceDataDecipheringKeys PRESENCE optional },
+ ...
+}
+
+LocationRelatedDataResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for error handling
+ { ID id-CriticalityDiagnostics CRITICALITY ignore EXTENSION CriticalityDiagnostics PRESENCE optional }|
+ { ID id-BroadcastGANSSAssistanceDataDecipheringKeys CRITICALITY ignore EXTENSION BroadcastAssistanceDataDecipheringKeys PRESENCE optional},
+ ...
+}
+
+-- **************************************************************
+--
+-- Location Related Data Failure
+--
+-- **************************************************************
+
+LocationRelatedDataFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { LocationRelatedDataFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { LocationRelatedDataFailureExtensions} } OPTIONAL,
+ ...
+}
+
+LocationRelatedDataFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+LocationRelatedDataFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for error handling
+ { ID id-CriticalityDiagnostics CRITICALITY ignore EXTENSION CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Information Transfer Indication
+--
+-- **************************************************************
+
+InformationTransferIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { InformationTransferIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { { InformationTransferIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+InformationTransferIndicationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationTransferID CRITICALITY reject TYPE InformationTransferID PRESENCE mandatory } |
+ { ID id-ProvidedData CRITICALITY reject TYPE ProvidedData PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional},
+ ...
+}
+
+InformationTransferIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Information Transfer Confirmation
+--
+-- **************************************************************
+
+InformationTransferConfirmation ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { InformationTransferConfirmationIEs} },
+ protocolExtensions ProtocolExtensionContainer { { InformationTransferConfirmationExtensions} } OPTIONAL,
+ ...
+}
+
+InformationTransferConfirmationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationTransferID CRITICALITY ignore TYPE InformationTransferID PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE mandatory },
+ ...
+}
+
+InformationTransferConfirmationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Information Transfer Failure
+--
+-- **************************************************************
+
+InformationTransferFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { InformationTransferFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { InformationTransferFailureExtensions} } OPTIONAL,
+ ...
+}
+
+InformationTransferFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationTransferID CRITICALITY ignore TYPE InformationTransferID PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE mandatory },
+ ...
+}
+
+InformationTransferFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UE SPECIFIC INFORMATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- UE Specific Information Indication
+--
+-- **************************************************************
+
+UESpecificInformationIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UESpecificInformationIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UESpecificInformationIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+UESpecificInformationIndicationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-UESBI-Iu CRITICALITY ignore TYPE UESBI-Iu PRESENCE optional },
+ ...
+}
+
+UESpecificInformationIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Direct Information Transfer
+--
+-- **************************************************************
+
+DirectInformationTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { DirectInformationTransferIEs} },
+ protocolExtensions ProtocolExtensionContainer { { DirectInformationTransferExtensions} } OPTIONAL,
+ ...
+}
+
+DirectInformationTransferIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InterSystemInformationTransferType CRITICALITY ignore TYPE InterSystemInformationTransferType PRESENCE optional } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE optional } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional },
+ ...
+}
+
+DirectInformationTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- UPLINK INFORMATION EXCHANGE ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Request
+--
+-- **************************************************************
+
+UplinkInformationExchangeRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UplinkInformationExchangeRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { { UplinkInformationExchangeRequestExtensions} } OPTIONAL,
+ ...
+}
+
+UplinkInformationExchangeRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationExchangeID CRITICALITY reject TYPE InformationExchangeID PRESENCE mandatory } |
+ { ID id-InformationExchangeType CRITICALITY reject TYPE InformationExchangeType PRESENCE mandatory } |
+ { ID id-InformationTransferType CRITICALITY reject TYPE InformationTransferType PRESENCE conditional
+ -- This IE shall be present if the Information Exchange Type IE is set to "transfer" -- } |
+ { ID id-InformationRequestType CRITICALITY reject TYPE InformationRequestType PRESENCE conditional
+ -- This IE shall be present if the Information Exchange Type IE is set to "request" -- } |
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY reject TYPE GlobalRNC-ID PRESENCE mandatory },
+ ...
+}
+
+UplinkInformationExchangeRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Response
+--
+-- **************************************************************
+
+UplinkInformationExchangeResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UplinkInformationExchangeResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { UplinkInformationExchangeResponseExtensions} } OPTIONAL,
+ ...
+}
+
+UplinkInformationExchangeResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationExchangeID CRITICALITY ignore TYPE InformationExchangeID PRESENCE mandatory } |
+ { ID id-InformationRequested CRITICALITY ignore TYPE InformationRequested PRESENCE optional } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+UplinkInformationExchangeResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Uplink Information Exchange Failure
+--
+-- **************************************************************
+
+UplinkInformationExchangeFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { UplinkInformationExchangeFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { UplinkInformationExchangeFailureExtensions} } OPTIONAL,
+ ...
+}
+
+UplinkInformationExchangeFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-InformationExchangeID CRITICALITY ignore TYPE InformationExchangeID PRESENCE mandatory } |
+ { ID id-CN-DomainIndicator CRITICALITY ignore TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+UplinkInformationExchangeFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSION START PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Start
+--
+-- **************************************************************
+
+MBMSSessionStart ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionStartIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionStartExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionStartIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TMGI CRITICALITY reject TYPE TMGI PRESENCE mandatory } |
+ { ID id-MBMSSessionIdentity CRITICALITY ignore TYPE MBMSSessionIdentity PRESENCE optional } |
+ { ID id-MBMSBearerServiceType CRITICALITY reject TYPE MBMSBearerServiceType PRESENCE mandatory } |
+ { ID id-IuSigConId CRITICALITY reject TYPE IuSignallingConnectionIdentifier PRESENCE mandatory } |
+ { ID id-RAB-Parameters CRITICALITY reject TYPE RAB-Parameters PRESENCE mandatory } |
+ { ID id-PDP-TypeInformation CRITICALITY ignore TYPE PDP-TypeInformation PRESENCE optional } |
+ { ID id-MBMSSessionDuration CRITICALITY reject TYPE MBMSSessionDuration PRESENCE mandatory } |
+ { ID id-MBMSServiceArea CRITICALITY reject TYPE MBMSServiceArea PRESENCE mandatory } |
+ { ID id-FrequenceLayerConvergenceFlag CRITICALITY ignore TYPE FrequenceLayerConvergenceFlag PRESENCE optional } |
+ { ID id-RAListofIdleModeUEs CRITICALITY ignore TYPE RAListofIdleModeUEs PRESENCE optional } |
+ { ID id-GlobalCN-ID CRITICALITY reject TYPE GlobalCN-ID PRESENCE optional } |
+ { ID id-MBMSSessionRepetitionNumber CRITICALITY ignore TYPE MBMSSessionRepetitionNumber PRESENCE optional } |
+ { ID id-TimeToMBMSDataTransfer CRITICALITY reject TYPE TimeToMBMSDataTransfer PRESENCE mandatory },
+ ...
+}
+
+MBMSSessionStartExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 6 to enable MBMS counting in broadcast mode --
+ { ID id-MBMSCountingInformation CRITICALITY ignore EXTENSION MBMSCountingInformation PRESENCE optional}|
+ { ID id-MBMSSynchronisationInformation CRITICALITY ignore EXTENSION MBMSSynchronisationInformation PRESENCE optional}|
+-- Extension for Release Release 9 to enable a new value --
+ { ID id-PDP-TypeInformation-extension CRITICALITY ignore EXTENSION PDP-TypeInformation-extension PRESENCE optional}|
+-- Extension for Release 12 to support Session re-establishment --
+ { ID id-Session-Re-establishment-Indicator CRITICALITY ignore EXTENSION Session-Re-establishment-Indicator PRESENCE optional},
+ ...
+}
+
+MBMSSynchronisationInformation ::= SEQUENCE {
+ mBMSHCIndicator MBMSHCIndicator,
+ iPMulticastAddress IPMulticastAddress,
+ gTPDLTEID GTP-TEI,
+ iE-Extensions ProtocolExtensionContainer { {MBMSSynchronisationInformation-ExtIEs} } OPTIONAL,
+ ...
+}
+
+MBMSSynchronisationInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ { ID id-IP-Source-Address CRITICALITY reject EXTENSION IPMulticastAddress PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Start Response
+--
+-- **************************************************************
+
+MBMSSessionStartResponse::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {MBMSSessionStartResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {MBMSSessionStartResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionStartResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TransportLayerInformation CRITICALITY ignore TYPE TransportLayerInformation PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSSessionStartResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Start Failure
+--
+-- **************************************************************
+
+MBMSSessionStartFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionStartFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionStartFailureExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionStartFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSSessionStartFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSION UPDATE PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Update
+--
+-- **************************************************************
+
+MBMSSessionUpdate ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionUpdateIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionUpdateExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionUpdateIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-SessionUpdateID CRITICALITY reject TYPE SessionUpdateID PRESENCE mandatory } |
+ { ID id-DeltaRAListofIdleModeUEs CRITICALITY reject TYPE DeltaRAListofIdleModeUEs PRESENCE mandatory },
+ ...
+}
+
+MBMSSessionUpdateExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Update Response
+--
+-- **************************************************************
+
+MBMSSessionUpdateResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionUpdateResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionUpdateResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionUpdateResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-SessionUpdateID CRITICALITY ignore TYPE SessionUpdateID PRESENCE mandatory } |
+ { ID id-TransportLayerInformation CRITICALITY ignore TYPE TransportLayerInformation PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSSessionUpdateResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Update Failure
+--
+-- **************************************************************
+
+MBMSSessionUpdateFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionUpdateFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionUpdateFailureExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionUpdateFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-SessionUpdateID CRITICALITY ignore TYPE SessionUpdateID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSSessionUpdateFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS SESSIE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Session Stop
+--
+-- **************************************************************
+
+MBMSSessionStop ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionStopIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionStopExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionStopIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-MBMSCNDe-Registration CRITICALITY reject TYPE MBMSCNDe-Registration PRESENCE mandatory },
+ ...
+}
+
+MBMSSessionStopExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Session Stop Response
+--
+-- **************************************************************
+
+MBMSSessionStopResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSSessionStopResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSSessionStopResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSSessionStopResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSSessionStopResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS UE LINKING PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS UE Linking Request
+--
+-- **************************************************************
+
+MBMSUELinkingRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSUELinkingRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSUELinkingRequestExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSUELinkingRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-JoinedMBMSBearerServicesList CRITICALITY reject TYPE JoinedMBMSBearerService-IEs PRESENCE optional } |
+ { ID id-LeftMBMSBearerServicesList CRITICALITY reject TYPE LeftMBMSBearerService-IEs PRESENCE optional },
+ ...
+}
+
+LeftMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ iE-Extensions ProtocolExtensionContainer { {LeftMBMSBearerService-ExtIEs} } OPTIONAL,
+ ...
+ }
+
+LeftMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+MBMSUELinkingRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS UE Linking Response
+--
+-- **************************************************************
+
+MBMSUELinkingResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSUELinkingResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSUELinkingResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSUELinkingResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-UnsuccessfulLinkingList CRITICALITY ignore TYPE UnsuccessfulLinking-IEs PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+UnsuccessfulLinking-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer { {UnsuccessfulLinking-ExtIEs} } OPTIONAL,
+ ...
+ }
+
+UnsuccessfulLinking-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+MBMSUELinkingResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- *************************************************
+--
+-- MBMS REGISTRATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS Registration Request
+--
+-- **************************************************************
+
+MBMSRegistrationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSRegistrationRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSRegistrationRequestExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-MBMSRegistrationRequestType CRITICALITY reject TYPE MBMSRegistrationRequestType PRESENCE mandatory } |
+ { ID id-TMGI CRITICALITY reject TYPE TMGI PRESENCE mandatory } |
+ { ID id-IPMulticastAddress CRITICALITY reject TYPE IPMulticastAddress PRESENCE conditional
+ -- This IE shall be present if the MBMS Registration Request Type IE is set to "register" -- } |
+ { ID id-APN CRITICALITY reject TYPE APN PRESENCE conditional
+ -- This IE shall be present if the MBMS Registration Request Type IE is set to "register" -- } |
+ { ID id-GlobalRNC-ID CRITICALITY reject TYPE GlobalRNC-ID PRESENCE optional },
+ ...
+}
+
+MBMSRegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Registration Response
+--
+-- **************************************************************
+
+MBMSRegistrationResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSRegistrationResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSRegistrationResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TMGI CRITICALITY ignore TYPE TMGI PRESENCE optional } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSRegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS Registration Failure
+--
+-- **************************************************************
+
+MBMSRegistrationFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSRegistrationFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSRegistrationFailureExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRegistrationFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TMGI CRITICALITY ignore TYPE TMGI PRESENCE optional } |
+ { ID id-GlobalCN-ID CRITICALITY ignore TYPE GlobalCN-ID PRESENCE optional } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSRegistrationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS CN DE-REGISTRATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS CN De-Registration Request
+--
+-- **************************************************************
+
+MBMSCNDe-RegistrationRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSCNDe-RegistrationRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSCNDe-RegistrationRequestExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSCNDe-RegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TMGI CRITICALITY reject TYPE TMGI PRESENCE mandatory } |
+ { ID id-GlobalCN-ID CRITICALITY reject TYPE GlobalCN-ID PRESENCE optional },
+ ...
+}
+
+MBMSCNDe-RegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS CN De-Registration Response
+--
+-- **************************************************************
+
+MBMSCNDe-RegistrationResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSCNDe-RegistrationResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSCNDe-RegistrationResponseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSCNDe-RegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TMGI CRITICALITY ignore TYPE TMGI PRESENCE mandatory } |
+ { ID id-GlobalRNC-ID CRITICALITY ignore TYPE GlobalRNC-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
+ ...
+}
+
+MBMSCNDe-RegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+-- Extension for Release 7 to indicate extended RNC-ID --
+ { ID id-ExtendedRNC-ID CRITICALITY reject EXTENSION ExtendedRNC-ID PRESENCE optional },
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB ESTABLISHMENT INDICATION PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS RAB Establishment Indication
+--
+-- **************************************************************
+
+MBMSRABEstablishmentIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { { MBMSRABEstablishmentIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { { MBMSRABEstablishmentIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRABEstablishmentIndicationIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-TransportLayerInformation CRITICALITY ignore TYPE TransportLayerInformation PRESENCE mandatory } ,
+ ...
+}
+
+MBMSRABEstablishmentIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB RELEASE PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- MBMS RAB Release Request
+--
+-- **************************************************************
+
+MBMSRABReleaseRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {MBMSRABReleaseRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {MBMSRABReleaseRequestExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRABReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
+ ...
+}
+
+
+MBMSRABReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB Release
+--
+-- **************************************************************
+
+MBMSRABRelease ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {MBMSRABReleaseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {MBMSRABReleaseExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRABReleaseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+MBMSRABReleaseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- MBMS RAB Release Failure
+--
+-- **************************************************************
+
+MBMSRABReleaseFailure ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {MBMSRABReleaseFailureIEs} },
+ protocolExtensions ProtocolExtensionContainer { {MBMSRABReleaseFailureExtensions} } OPTIONAL,
+ ...
+}
+
+MBMSRABReleaseFailureIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+MBMSRABReleaseFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- SRVCC PREPARATION ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+-- **************************************************************
+--
+-- SRVCC CS Keys Request
+--
+-- **************************************************************
+
+SRVCC-CSKeysRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SRVCC-CSKeysRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SRVCC-CSKeysRequestExtensions} } OPTIONAL,
+ ...
+}
+
+SRVCC-CSKeysRequestIEs RANAP-PROTOCOL-IES ::= {
+ ...
+}
+
+SRVCC-CSKeysRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- SRVCC CS Keys Response
+--
+-- **************************************************************
+
+SRVCC-CSKeysResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {SRVCC-CSKeysResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {SRVCC-CSKeysResponseExtensions} } OPTIONAL,
+ ...
+}
+
+SRVCC-CSKeysResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-IntegrityProtectionKey CRITICALITY reject TYPE IntegrityProtectionKey PRESENCE mandatory }|
+ { ID id-EncryptionKey CRITICALITY reject TYPE EncryptionKey PRESENCE mandatory }|
+ { ID id-SRVCC-Information CRITICALITY reject TYPE SRVCC-Information PRESENCE mandatory }|
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+SRVCC-CSKeysResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- UE RADIO CAPABILITY MATCH PROCEDURE
+--
+-- **************************************************************
+
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Request
+--
+-- **************************************************************
+
+UeRadioCapabilityMatchRequest ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UeRadioCapabilityMatchRequestIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UeRadioCapabilityMatchRequestExtensions} } OPTIONAL,
+ ...
+}
+
+UeRadioCapabilityMatchRequestIEs RANAP-PROTOCOL-IES ::= {
+ ...
+}
+
+UeRadioCapabilityMatchRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- UE Radio Capability Match Response
+--
+-- **************************************************************
+
+UeRadioCapabilityMatchResponse ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {UeRadioCapabilityMatchResponseIEs} },
+ protocolExtensions ProtocolExtensionContainer { {UeRadioCapabilityMatchResponseExtensions} } OPTIONAL,
+ ...
+}
+
+UeRadioCapabilityMatchResponseIEs RANAP-PROTOCOL-IES ::= {
+ { ID id-VoiceSupportMatchIndicator CRITICALITY reject TYPE VoiceSupportMatchIndicator PRESENCE mandatory },
+ ...
+}
+
+UeRadioCapabilityMatchResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+END
diff --git a/asn1/ranap/RANAP-PDU-Descriptions.asn b/asn1/ranap/RANAP-PDU-Descriptions.asn
new file mode 100644
index 0000000..f4253b7
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU-Descriptions.asn
@@ -0,0 +1,617 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+RANAP-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+FROM RANAP-CommonDataTypes
+
+ Iu-ReleaseCommand,
+ Iu-ReleaseComplete,
+ RelocationCommand,
+ RelocationPreparationFailure,
+ RelocationRequired,
+ RelocationRequest,
+ RelocationRequestAcknowledge,
+ RelocationFailure,
+ RelocationCancel,
+ RelocationCancelAcknowledge,
+ EnhancedRelocationCompleteRequest,
+ EnhancedRelocationCompleteResponse,
+ EnhancedRelocationCompleteFailure,
+ EnhancedRelocationCompleteConfirm,
+ SRNS-ContextRequest,
+ SRNS-ContextResponse,
+ SecurityModeCommand,
+ SecurityModeComplete,
+ SecurityModeReject,
+ DataVolumeReportRequest,
+ DataVolumeReport,
+ Reset,
+ ResetAcknowledge,
+ RAB-ReleaseRequest,
+ Iu-ReleaseRequest,
+ RelocationDetect,
+ RelocationComplete,
+ Paging,
+ CommonID,
+ CN-InvokeTrace,
+ CN-DeactivateTrace,
+ LocationReportingControl,
+ LocationReport,
+ InitialUE-Message,
+ DirectTransfer,
+ Overload,
+ ErrorIndication,
+ SRNS-DataForwardCommand,
+ ForwardSRNS-Context,
+ RAB-AssignmentRequest,
+ RAB-AssignmentResponse,
+ RAB-ModifyRequest,
+ PrivateMessage,
+ ResetResource,
+ ResetResourceAcknowledge,
+ RANAP-RelocationInformation,
+ RANAP-EnhancedRelocationInformationRequest,
+ RANAP-EnhancedRelocationInformationResponse,
+ LocationRelatedDataRequest,
+ LocationRelatedDataResponse,
+ LocationRelatedDataFailure,
+ InformationTransferIndication,
+ InformationTransferConfirmation,
+ InformationTransferFailure,
+ UESpecificInformationIndication,
+ DirectInformationTransfer,
+ UplinkInformationExchangeRequest,
+ UplinkInformationExchangeResponse,
+ UplinkInformationExchangeFailure,
+ MBMSSessionStart,
+ MBMSSessionStartResponse,
+ MBMSSessionStartFailure,
+ MBMSSessionUpdate,
+ MBMSSessionUpdateResponse,
+ MBMSSessionUpdateFailure,
+ MBMSSessionStop,
+ MBMSSessionStopResponse,
+ MBMSUELinkingRequest,
+ MBMSUELinkingResponse,
+ MBMSRegistrationRequest,
+ MBMSRegistrationResponse,
+ MBMSRegistrationFailure,
+ MBMSCNDe-RegistrationRequest,
+ MBMSCNDe-RegistrationResponse,
+ MBMSRABEstablishmentIndication,
+ MBMSRABReleaseRequest,
+ MBMSRABRelease,
+ MBMSRABReleaseFailure,
+ SRVCC-CSKeysRequest,
+ SRVCC-CSKeysResponse,
+ UeRadioCapabilityMatchRequest,
+ UeRadioCapabilityMatchResponse
+FROM RANAP-PDU-Contents
+
+ id-LocationRelatedData,
+ id-CN-DeactivateTrace,
+ id-CN-InvokeTrace,
+ id-CommonID,
+ id-DataVolumeReport,
+ id-DirectTransfer,
+ id-ErrorIndication,
+ id-ForwardSRNS-Context,
+ id-InformationTransfer,
+ id-InitialUE-Message,
+ id-Iu-Release,
+ id-Iu-ReleaseRequest,
+ id-LocationReport,
+ id-LocationReportingControl,
+ id-OverloadControl,
+ id-Paging,
+ id-privateMessage,
+ id-RAB-Assignment,
+ id-RAB-ReleaseRequest,
+ id-RAB-ModifyRequest,
+ id-RANAP-Relocation,
+ id-RANAPenhancedRelocation,
+ id-RelocationCancel,
+ id-RelocationComplete,
+ id-RelocationDetect,
+ id-RelocationPreparation,
+ id-RelocationResourceAllocation,
+ id-enhancedRelocationComplete,
+ id-enhancedRelocationCompleteConfirm,
+ id-Reset,
+ id-SRNS-ContextTransfer,
+ id-SRNS-DataForward,
+ id-SecurityModeControl,
+ id-ResetResource,
+ id-UESpecificInformation,
+ id-DirectInformationTransfer,
+ id-UplinkInformationExchange,
+ id-MBMSSessionStart,
+ id-MBMSSessionUpdate,
+ id-MBMSSessionStop,
+ id-MBMSUELinking,
+ id-MBMSRegistration,
+ id-MBMSCNDe-Registration-Procedure,
+ id-MBMSRABEstablishmentIndication,
+ id-MBMSRABRelease,
+ id-SRVCCPreparation,
+ id-UeRadioCapabilityMatch
+
+FROM RANAP-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+RANAP-ELEMENTARY-PROCEDURE ::= CLASS {
+ &InitiatingMessage ,
+ &SuccessfulOutcome OPTIONAL,
+ &UnsuccessfulOutcome OPTIONAL,
+ &Outcome OPTIONAL,
+ &procedureCode ProcedureCode UNIQUE,
+ &criticality Criticality DEFAULT ignore
+}
+WITH SYNTAX {
+ INITIATING MESSAGE &InitiatingMessage
+ [SUCCESSFUL OUTCOME &SuccessfulOutcome]
+ [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
+ [OUTCOME &Outcome]
+ PROCEDURE CODE &procedureCode
+ [CRITICALITY &criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU Definition
+--
+-- **************************************************************
+
+RANAP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ outcome Outcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
+ criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RANAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
+ criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RANAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
+ criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RANAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+Outcome ::= SEQUENCE {
+ procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
+ criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RANAP-ELEMENTARY-PROCEDURE.&Outcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+RANAP-ELEMENTARY-PROCEDURES RANAP-ELEMENTARY-PROCEDURE ::= {
+ RANAP-ELEMENTARY-PROCEDURES-CLASS-1 |
+ RANAP-ELEMENTARY-PROCEDURES-CLASS-2 |
+ RANAP-ELEMENTARY-PROCEDURES-CLASS-3 ,
+ ...
+}
+
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-1 RANAP-ELEMENTARY-PROCEDURE ::= {
+ iu-Release |
+ relocationPreparation |
+ relocationResourceAllocation |
+ relocationCancel |
+ sRNS-ContextTransfer |
+ securityModeControl |
+ dataVolumeReport |
+ reset |
+ resetResource ,
+ ...,
+ locationRelatedData |
+ informationTransfer |
+ uplinkInformationExchange |
+ mBMSSessionStart |
+ mBMSSessionUpdate |
+ mBMSSessionStop |
+ mBMSUELinking |
+ mBMSRegistration |
+ mBMSCNDe-Registration |
+ mBMSRABRelease |
+ enhancedRelocationComplete |
+ rANAP-enhancedRelocation |
+ sRVCCPreparation |
+ ueRadioCapabilityMatch }
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-2 RANAP-ELEMENTARY-PROCEDURE ::= {
+ rAB-ReleaseRequest |
+ iu-ReleaseRequest |
+ relocationDetect |
+ relocationComplete |
+ paging |
+ commonID |
+ cN-InvokeTrace |
+ cN-DeactivateTrace |
+ locationReportingControl |
+ locationReport |
+ initialUE-Message |
+ directTransfer |
+ overloadControl |
+ errorIndication |
+ sRNS-DataForward |
+ forwardSRNS-Context |
+ privateMessage |
+ rANAP-Relocation ,
+ ...,
+ rAB-ModifyRequest |
+ uESpecificInformation |
+ directInformationTransfer |
+ mBMSRABEstablishmentIndication |
+ enhancedRelocationCompleteConfirm
+}
+
+RANAP-ELEMENTARY-PROCEDURES-CLASS-3 RANAP-ELEMENTARY-PROCEDURE ::= {
+ rAB-Assignment ,
+ ...
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+iu-Release RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Iu-ReleaseCommand
+ SUCCESSFUL OUTCOME Iu-ReleaseComplete
+ PROCEDURE CODE id-Iu-Release
+ CRITICALITY reject
+}
+
+relocationPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationRequired
+ SUCCESSFUL OUTCOME RelocationCommand
+ UNSUCCESSFUL OUTCOME RelocationPreparationFailure
+ PROCEDURE CODE id-RelocationPreparation
+ CRITICALITY reject
+}
+
+relocationResourceAllocation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationRequest
+ SUCCESSFUL OUTCOME RelocationRequestAcknowledge
+ UNSUCCESSFUL OUTCOME RelocationFailure
+ PROCEDURE CODE id-RelocationResourceAllocation
+ CRITICALITY reject
+}
+
+relocationCancel RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationCancel
+ SUCCESSFUL OUTCOME RelocationCancelAcknowledge
+ PROCEDURE CODE id-RelocationCancel
+ CRITICALITY reject
+}
+
+sRNS-ContextTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE SRNS-ContextRequest
+ SUCCESSFUL OUTCOME SRNS-ContextResponse
+ PROCEDURE CODE id-SRNS-ContextTransfer
+ CRITICALITY reject
+}
+
+securityModeControl RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE SecurityModeCommand
+ SUCCESSFUL OUTCOME SecurityModeComplete
+ UNSUCCESSFUL OUTCOME SecurityModeReject
+ PROCEDURE CODE id-SecurityModeControl
+ CRITICALITY reject
+}
+
+dataVolumeReport RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE DataVolumeReportRequest
+ SUCCESSFUL OUTCOME DataVolumeReport
+ PROCEDURE CODE id-DataVolumeReport
+ CRITICALITY reject
+}
+
+
+reset RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Reset
+ SUCCESSFUL OUTCOME ResetAcknowledge
+ PROCEDURE CODE id-Reset
+ CRITICALITY reject
+}
+
+rAB-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RAB-ReleaseRequest
+ PROCEDURE CODE id-RAB-ReleaseRequest
+ CRITICALITY ignore
+}
+
+iu-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Iu-ReleaseRequest
+ PROCEDURE CODE id-Iu-ReleaseRequest
+ CRITICALITY ignore
+}
+
+relocationDetect RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationDetect
+ PROCEDURE CODE id-RelocationDetect
+ CRITICALITY ignore
+}
+
+relocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RelocationComplete
+ PROCEDURE CODE id-RelocationComplete
+ CRITICALITY ignore
+}
+
+paging RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Paging
+ PROCEDURE CODE id-Paging
+ CRITICALITY ignore
+}
+
+commonID RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE CommonID
+ PROCEDURE CODE id-CommonID
+ CRITICALITY ignore
+}
+
+cN-InvokeTrace RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE CN-InvokeTrace
+ PROCEDURE CODE id-CN-InvokeTrace
+ CRITICALITY ignore
+}
+
+cN-DeactivateTrace RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE CN-DeactivateTrace
+ PROCEDURE CODE id-CN-DeactivateTrace
+ CRITICALITY ignore
+}
+
+locationReportingControl RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE LocationReportingControl
+ PROCEDURE CODE id-LocationReportingControl
+ CRITICALITY ignore
+}
+
+locationReport RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE LocationReport
+ PROCEDURE CODE id-LocationReport
+ CRITICALITY ignore
+}
+
+initialUE-Message RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE InitialUE-Message
+ PROCEDURE CODE id-InitialUE-Message
+ CRITICALITY ignore
+}
+
+directTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE DirectTransfer
+ PROCEDURE CODE id-DirectTransfer
+ CRITICALITY ignore
+}
+
+overloadControl RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Overload
+ PROCEDURE CODE id-OverloadControl
+ CRITICALITY ignore
+}
+
+errorIndication RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+sRNS-DataForward RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE SRNS-DataForwardCommand
+ PROCEDURE CODE id-SRNS-DataForward
+ CRITICALITY ignore
+}
+
+forwardSRNS-Context RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ForwardSRNS-Context
+ PROCEDURE CODE id-ForwardSRNS-Context
+ CRITICALITY ignore
+}
+
+rAB-Assignment RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RAB-AssignmentRequest
+ OUTCOME RAB-AssignmentResponse
+ PROCEDURE CODE id-RAB-Assignment
+ CRITICALITY reject
+}
+
+privateMessage RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+resetResource RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ResetResource
+ SUCCESSFUL OUTCOME ResetResourceAcknowledge
+ PROCEDURE CODE id-ResetResource
+ CRITICALITY reject
+}
+
+rANAP-Relocation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RANAP-RelocationInformation
+ PROCEDURE CODE id-RANAP-Relocation
+ CRITICALITY ignore
+}
+
+rAB-ModifyRequest RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RAB-ModifyRequest
+ PROCEDURE CODE id-RAB-ModifyRequest
+ CRITICALITY ignore
+}
+
+locationRelatedData RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE LocationRelatedDataRequest
+ SUCCESSFUL OUTCOME LocationRelatedDataResponse
+ UNSUCCESSFUL OUTCOME LocationRelatedDataFailure
+ PROCEDURE CODE id-LocationRelatedData
+ CRITICALITY reject
+}
+
+informationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE InformationTransferIndication
+ SUCCESSFUL OUTCOME InformationTransferConfirmation
+ UNSUCCESSFUL OUTCOME InformationTransferFailure
+ PROCEDURE CODE id-InformationTransfer
+ CRITICALITY reject
+}
+
+uESpecificInformation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UESpecificInformationIndication
+ PROCEDURE CODE id-UESpecificInformation
+ CRITICALITY ignore
+}
+
+directInformationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE DirectInformationTransfer
+ PROCEDURE CODE id-DirectInformationTransfer
+ CRITICALITY ignore
+}
+
+uplinkInformationExchange RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UplinkInformationExchangeRequest
+ SUCCESSFUL OUTCOME UplinkInformationExchangeResponse
+ UNSUCCESSFUL OUTCOME UplinkInformationExchangeFailure
+ PROCEDURE CODE id-UplinkInformationExchange
+ CRITICALITY reject
+}
+
+mBMSSessionStart RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSSessionStart
+ SUCCESSFUL OUTCOME MBMSSessionStartResponse
+ UNSUCCESSFUL OUTCOME MBMSSessionStartFailure
+ PROCEDURE CODE id-MBMSSessionStart
+ CRITICALITY reject
+}
+
+mBMSSessionUpdate RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSSessionUpdate
+ SUCCESSFUL OUTCOME MBMSSessionUpdateResponse
+ UNSUCCESSFUL OUTCOME MBMSSessionUpdateFailure
+ PROCEDURE CODE id-MBMSSessionUpdate
+ CRITICALITY reject
+}
+
+mBMSSessionStop RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSSessionStop
+ SUCCESSFUL OUTCOME MBMSSessionStopResponse
+ PROCEDURE CODE id-MBMSSessionStop
+ CRITICALITY reject
+}
+
+mBMSUELinking RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSUELinkingRequest
+ OUTCOME MBMSUELinkingResponse
+ PROCEDURE CODE id-MBMSUELinking
+ CRITICALITY reject
+}
+
+mBMSRegistration RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSRegistrationRequest
+ SUCCESSFUL OUTCOME MBMSRegistrationResponse
+ UNSUCCESSFUL OUTCOME MBMSRegistrationFailure
+ PROCEDURE CODE id-MBMSRegistration
+ CRITICALITY reject
+}
+
+mBMSCNDe-Registration RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSCNDe-RegistrationRequest
+ SUCCESSFUL OUTCOME MBMSCNDe-RegistrationResponse
+ PROCEDURE CODE id-MBMSCNDe-Registration-Procedure
+ CRITICALITY reject
+}
+
+mBMSRABEstablishmentIndication RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSRABEstablishmentIndication
+ PROCEDURE CODE id-MBMSRABEstablishmentIndication
+ CRITICALITY ignore
+}
+
+mBMSRABRelease RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE MBMSRABReleaseRequest
+ SUCCESSFUL OUTCOME MBMSRABRelease
+ UNSUCCESSFUL OUTCOME MBMSRABReleaseFailure
+ PROCEDURE CODE id-MBMSRABRelease
+ CRITICALITY reject
+}
+enhancedRelocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE EnhancedRelocationCompleteRequest
+ SUCCESSFUL OUTCOME EnhancedRelocationCompleteResponse
+ UNSUCCESSFUL OUTCOME EnhancedRelocationCompleteFailure
+ PROCEDURE CODE id-enhancedRelocationComplete
+ CRITICALITY reject
+}
+
+enhancedRelocationCompleteConfirm RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE EnhancedRelocationCompleteConfirm
+ PROCEDURE CODE id-enhancedRelocationCompleteConfirm
+ CRITICALITY ignore
+}
+
+rANAP-enhancedRelocation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE RANAP-EnhancedRelocationInformationRequest
+ SUCCESSFUL OUTCOME RANAP-EnhancedRelocationInformationResponse
+ PROCEDURE CODE id-RANAPenhancedRelocation
+ CRITICALITY reject
+}
+
+sRVCCPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE SRVCC-CSKeysRequest
+ OUTCOME SRVCC-CSKeysResponse
+ PROCEDURE CODE id-SRVCCPreparation
+ CRITICALITY reject
+}
+
+ueRadioCapabilityMatch RANAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE UeRadioCapabilityMatchRequest
+ OUTCOME UeRadioCapabilityMatchResponse
+ PROCEDURE CODE id-UeRadioCapabilityMatch
+ CRITICALITY ignore
+}
+
+END
diff --git a/asn1/ranap/RANAP-PDU.asn b/asn1/ranap/RANAP-PDU.asn
new file mode 100644
index 0000000..cce2689
--- /dev/null
+++ b/asn1/ranap/RANAP-PDU.asn
@@ -0,0 +1,1023 @@
+RANAP-PDU {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) ranap(0) version1 (1) ranap-PDU (255) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID
+
+FROM RANAP-CommonDataTypes
+
+ Alt-RAB-Parameters,
+ Ass-RAB-Parameters,
+ Cause,
+ CN-DomainIndicator,
+ DataVolumeReference,
+ DataVolumeReportingIndication,
+ DL-GTP-PDU-SequenceNumber,
+ DL-N-PDU-SequenceNumber,
+ GERAN-Classmark,
+ GTP-TEI,
+ IPMulticastAddress,
+ IuSignallingConnectionIdentifier,
+ IuTransportAssociation,
+ MBMS-PTP-RAB-ID,
+ MBMSHCIndicator,
+ NAS-PDU,
+ NAS-SynchronisationIndicator,
+ PDP-TypeInformation,
+ RAB-ID,
+ RAB-Parameters,
+ Requested-RAB-Parameter-Values,
+ SAPI,
+ Service-Handover,
+ TMGI,
+ TransportLayerAddress,
+ UL-GTP-PDU-SequenceNumber,
+ UL-N-PDU-SequenceNumber,
+ UnsuccessfullyTransmittedDataVolume,
+ UP-ModeVersions,
+ UserPlaneMode
+
+FROM RANAP-IEs
+
+ maxnoofMulticastServicesPerUE,
+ maxNrOfIuSigConIds,
+ maxNrOfDTs,
+ maxNrOfVol,
+ maxNrOfRABs,
+ maxProtocolIEs,
+ maxProtocolExtensions
+
+FROM RANAP-Constants;
+
+RANAP-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ outcome Outcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+Outcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+
+Iu-ReleaseCommand ::= SEQUENCE {
+ iu-ReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Iu-ReleaseComplete ::= SEQUENCE {
+ iu-ReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationRequired ::= SEQUENCE {
+ relocationRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationCommand ::= SEQUENCE {
+ relocationCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationPreparationFailure ::= SEQUENCE {
+ relocationPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationRequest ::= SEQUENCE {
+ relocationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationRequestAcknowledge ::= SEQUENCE {
+ relocationRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationFailure ::= SEQUENCE {
+ relocationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationCancel ::= SEQUENCE {
+ relocationCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationCancelAcknowledge ::= SEQUENCE {
+ relocationCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SRNS-ContextRequest ::= SEQUENCE {
+ srnS-ContextRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-DataForwardingList-SRNS-CtxReq ::= SEQUENCE {
+ raB-DataForwardingList-SRNS-CtxReq-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+DataVolumeReportRequest ::= SEQUENCE {
+ dataVolumeReportRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SRNS-ContextResponse ::= SEQUENCE {
+ srnS-ContextResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SecurityModeCommand ::= SEQUENCE {
+ securityModeCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SecurityModeComplete ::= SEQUENCE {
+ securityModeComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SecurityModeReject ::= SEQUENCE {
+ securityModeReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+DataVolumeReport ::= SEQUENCE {
+ dataVolumeReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Reset ::= SEQUENCE {
+ reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ResetAcknowledge ::= SEQUENCE {
+ resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ReleaseRequest ::= SEQUENCE {
+ raB-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RedirectionIndication ::= SEQUENCE {
+ redirectionIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ReleaseList ::= SEQUENCE {
+ raB-ReleaseList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Iu-ReleaseRequest ::= SEQUENCE {
+ iu-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationDetect ::= SEQUENCE {
+ relocationDetect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RelocationComplete ::= SEQUENCE {
+ relocationComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Paging ::= SEQUENCE {
+ paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+CommonID ::= SEQUENCE {
+ commonID-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+CN-InvokeTrace ::= SEQUENCE {
+ cN-InvokeTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+CN-DeactivateTrace ::= SEQUENCE {
+ cN-DeactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+LocationReportingControl ::= SEQUENCE {
+ locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+LocationReport ::= SEQUENCE {
+ locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+InitialUE-Message ::= SEQUENCE {
+ initialUE-Message-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+DirectTransfer ::= SEQUENCE {
+ directTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Overload ::= SEQUENCE {
+ overload-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ErrorIndication ::= SEQUENCE {
+ errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SRNS-DataForwardCommand ::= SEQUENCE {
+ srnS-DataForwardCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ForwardSRNS-Context ::= SEQUENCE {
+ forwardSRNS-Context-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-AssignmentRequest ::= SEQUENCE {
+ raB-AssignmentRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupOrModifyList ::= RAB-IE-ContainerPairList
+
+RAB-AssignmentResponse ::= SEQUENCE {
+ raB-AssignmentResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+PrivateMessage ::= SEQUENCE {
+ privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ResetResource ::= SEQUENCE {
+ resetResource-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ResetResourceAcknowledge ::= SEQUENCE {
+ resetResourceAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RANAP-RelocationInformation ::= SEQUENCE {
+ ranaP-RelocationInformation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ModifyRequest ::= SEQUENCE {
+ raB-ModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+LocationRelatedDataRequest ::= SEQUENCE {
+ locationRelatedDataRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+LocationRelatedDataResponse ::= SEQUENCE {
+ locationRelatedDataResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+LocationRelatedDataFailure ::= SEQUENCE {
+ locationRelatedDataFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+InformationTransferIndication ::= SEQUENCE {
+ informationTransferIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+InformationTransferConfirmation ::= SEQUENCE {
+ informationTransferConfirmation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+InformationTransferFailure ::= SEQUENCE {
+ informationTransferFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UESpecificInformationIndication ::= SEQUENCE {
+ ueSpecificInformationIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+DirectInformationTransfer ::= SEQUENCE {
+ directInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UplinkInformationExchangeRequest ::= SEQUENCE {
+ uplinkInformationExchangeRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UplinkInformationExchangeResponse ::= SEQUENCE {
+ uplinkInformationExchangeResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UplinkInformationExchangeFailure ::= SEQUENCE {
+ uplinkInformationExchangeFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionStart ::= SEQUENCE {
+ mbmsSessionStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionStartResponse ::= SEQUENCE {
+ mbmsSessionStartResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionStartFailure ::= SEQUENCE {
+ mbmsSessionStartFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionUpdate ::= SEQUENCE {
+ mbmsSessionUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionUpdateResponse ::= SEQUENCE {
+ mbmsSessionUpdateResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionUpdateFailure ::= SEQUENCE {
+ mbmsSessionUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionStop ::= SEQUENCE {
+ mbmsSessionStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSSessionStopResponse ::= SEQUENCE {
+ mbmsSessionStopResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSUELinkingRequest ::= SEQUENCE {
+ mbmsueLinkingRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSUELinkingResponse ::= SEQUENCE {
+ mbmsueLinkingResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRegistrationRequest ::= SEQUENCE {
+ mbmsRegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRegistrationResponse ::= SEQUENCE {
+ mbmsRegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRegistrationFailure ::= SEQUENCE {
+ mbmsRegistrationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSCNDe-RegistrationRequest ::= SEQUENCE {
+ mbmscnDe-RegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSCNDe-RegistrationResponse ::= SEQUENCE {
+ mbmscnDe-RegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRABEstablishmentIndication ::= SEQUENCE {
+ mbmsrabEstablishmentIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRABReleaseRequest ::= SEQUENCE {
+ mbmsrabReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRABRelease ::= SEQUENCE {
+ mbmsrabRelease-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+MBMSRABReleaseFailure ::= SEQUENCE {
+ mbmsrabReleaseFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+EnhancedRelocationCompleteRequest ::= SEQUENCE {
+ enhancedRelocationCompleteRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+EnhancedRelocationCompleteResponse ::= SEQUENCE {
+ enhancedRelocationCompleteResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+EnhancedRelocationCompleteFailure ::= SEQUENCE {
+ enhancedRelocationCompleteFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+EnhancedRelocationCompleteConfirm ::= SEQUENCE {
+ enhancedRelocationCompleteConfirm-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
+ ranaP-EnhancedRelocationInformationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
+ ranaP-EnhancedRelocationInformationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SRVCC-CSKeysRequest ::= SEQUENCE {
+ srvcC-CSKeysRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+SRVCC-CSKeysResponse ::= SEQUENCE {
+ srvcC-CSKeysResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UeRadioCapabilityMatchRequest ::= SEQUENCE {
+ ueRadioCapabilityMatchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+UeRadioCapabilityMatchResponse ::= SEQUENCE {
+ ueRadioCapabilityMatchResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ProtocolExtensionContainer ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF ProtocolExtensionField
+
+ProtocolExtensionField ::= SEQUENCE {
+ id ProtocolIE-ID,
+ criticality Criticality,
+ value ANY
+}
+
+IE ::= SEQUENCE {
+ id ProtocolIE-ID,
+ criticality Criticality,
+ value ANY
+}
+
+ProtocolIE-Container ::= SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE
+
+ProtocolIE-FieldPair ::= SEQUENCE {
+ id ProtocolIE-ID,
+ firstCriticality Criticality,
+ firstValue ANY,
+ secondCriticality Criticality,
+ secondValue ANY
+}
+
+ProtocolIE-ContainerPair ::= SEQUENCE (SIZE (0..maxProtocolIEs)) OF ProtocolIE-FieldPair
+
+RAB-IE-ContainerList ::= SEQUENCE (SIZE (1..maxNrOfRABs)) OF ProtocolIE-Container
+RAB-IE-ContainerPairList ::= SEQUENCE (SIZE (1..maxNrOfRABs)) OF ProtocolIE-ContainerPair
+ProtocolError-IE-ContainerList ::= SEQUENCE (SIZE (1..maxNrOfRABs)) OF ProtocolIE-Container
+IuSigConId-IE-ContainerList ::= SEQUENCE (SIZE (1..maxNrOfIuSigConIds)) OF ProtocolIE-Container
+DirectTransfer-IE-ContainerList ::= SEQUENCE (SIZE (1..maxNrOfDTs)) OF ProtocolIE-Container
+
+DataVolumeReportList ::= SEQUENCE {
+ dataVolumeReportListe-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ReleasedList-IuRelComp ::= SEQUENCE {
+ raB-ReleasedList-IuRelComp-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-RelocationReleaseList ::= SEQUENCE {
+ raB-RelocationReleaseList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-DataForwardingList ::= SEQUENCE {
+ raB-DataForwardingList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-RelocReq ::= SEQUENCE {
+ raB-SetupList-RelocReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-RelocReqAck ::= SEQUENCE {
+ raB-SetupList-RelocReqAck-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-FailedList ::= SEQUENCE {
+ raB-FailedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ContextList ::= SEQUENCE {
+ raB-ContextList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RABs-ContextFailedtoTransferList ::= SEQUENCE {
+ raBs-ContextFailedtoTransferList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-DataVolumeReportRequestList ::= SEQUENCE {
+ raB-DataVolumeReportRequestList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-DataVolumeReportRequestItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RABs-failed-to-reportList ::= SEQUENCE {
+ raBs-failed-to-reportList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-EnhancedRelocCompleteReq ::= SEQUENCE {
+ raB-SetupList-EnhancedRelocCompleteReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-EnhancedRelocCompleteRes ::= SEQUENCE {
+ raB-SetupList-EnhancedRelocCompleteRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ToBeReleasedList-EnhancedRelocCompleteRes ::= SEQUENCE {
+ raB-ToBeReleasedList-EnhancedRelocCompleteRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupOrModifiedList ::= SEQUENCE {
+ raB-SetupOrModifiedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ReleasedList ::= SEQUENCE {
+ raB-ReleasedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-QueuedList ::= SEQUENCE {
+ raB-QueuedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ContextList-RANAP-RelocInf ::= SEQUENCE {
+ raB-ContextList-RANAP-RelocInf-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-EnhRelocInfoReq ::= SEQUENCE {
+ raB-SetupList-EnhRelocInfoReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-SetupList-EnhRelocInfoRes ::= SEQUENCE {
+ raB-SetupList-EnhRelocInfoRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-FailedList-EnhRelocInfoRes ::= SEQUENCE {
+ raB-FailedList-EnhRelocInfoRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-ModifyList ::= SEQUENCE {
+ raB-ModifyList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+RAB-DataVolumeReportList ::= SEQUENCE {
+ raB-DataVolumeReportList-ies SEQUENCE (SIZE(0..maxProtocolIEs))
+OF IE,
+ ...
+}
+
+RAB-DataVolumeReportItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-UnsuccessfullyTransmittedDataVolume DataVolumeList OPTIONAL
+ -- This IE shall always be present although its presence is optional --,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ReleasedItem-IuRelComp ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dL-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ uL-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-RelocationReleaseItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-DataForwardingItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-DataForwardingItem-SRNS-CtxReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-RelocReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ nAS-SynchronisationIndicator NAS-SynchronisationIndicator OPTIONAL,
+ rAB-Parameters RAB-Parameters,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ userPlaneInformation UserPlaneInformation,
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ service-Handover Service-Handover OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+UserPlaneInformation ::= SEQUENCE {
+ userPlaneMode UserPlaneMode,
+ uP-ModeVersions UP-ModeVersions,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+CNMBMSLinkingInformation ::= SEQUENCE {
+ joinedMBMSBearerService-IEs JoinedMBMSBearerService-IEs,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+JoinedMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ mBMS-PTP-RAB-ID MBMS-PTP-RAB-ID,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+ }
+
+RAB-SetupItem-RelocReqAck ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress OPTIONAL,
+ iuTransportAssociation IuTransportAssociation OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-FailedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ContextItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RABs-ContextFailedtoTransferItem::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RABs-failed-to-reportItem::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+ResetResourceList ::= SEQUENCE {
+ resetResourceList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ResetResourceItem ::= SEQUENCE {
+ iuSigConId IuSignallingConnectionIdentifier,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+ResetResourceAckList ::= SEQUENCE {
+ resetResourceAckList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ResetResourceAckItem ::= SEQUENCE {
+ iuSigConId IuSignallingConnectionIdentifier,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ReleaseItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddressReq1 TransportLayerAddress OPTIONAL,
+ iuTransportAssociationReq1 IuTransportAssociation OPTIONAL,
+ ass-RAB-Parameters Ass-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ rAB-Parameters RAB-Parameters OPTIONAL,
+ userPlaneInformation UserPlaneInformation,
+ transportLayerAddressRes1 TransportLayerAddress OPTIONAL,
+ iuTransportAssociationRes1 IuTransportAssociation OPTIONAL,
+ rab2beReleasedList RAB-ToBeReleasedList-EnhancedRelocCompleteRes OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ToBeReleasedItem-EnhancedRelocCompleteRes ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupOrModifyItemFirst ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ nAS-SynchronisationIndicator NAS-SynchronisationIndicator OPTIONAL,
+ rAB-Parameters RAB-Parameters OPTIONAL,
+ userPlaneInformation UserPlaneInformation OPTIONAL,
+ transportLayerInformation TransportLayerInformation OPTIONAL,
+ service-Handover Service-Handover OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+TransportLayerInformation ::= SEQUENCE {
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupOrModifyItemSecond ::= SEQUENCE {
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupOrModifiedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ transportLayerAddress TransportLayerAddress OPTIONAL,
+ iuTransportAssociation IuTransportAssociation OPTIONAL,
+ dl-dataVolumes DataVolumeList OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ReleasedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-dataVolumes DataVolumeList OPTIONAL,
+ dL-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ uL-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+DataVolumeList ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
+ SEQUENCE {
+ dl-UnsuccessfullyTransmittedDataVolume UnsuccessfullyTransmittedDataVolume,
+ dataVolumeReference DataVolumeReference OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+ }
+
+RAB-QueuedItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ReleaseFailedList ::= RAB-FailedList
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-List ::= SEQUENCE {
+ geraN-Iumode-RAB-Failed-RABAssgntResponse-List-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cause Cause,
+ gERAN-Classmark GERAN-Classmark OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+DirectTransferInformationItem-RANAP-RelocInf ::= SEQUENCE {
+ nAS-PDU NAS-PDU,
+ sAPI SAPI,
+ cN-DomainIndicator CN-DomainIndicator,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-ContextItem-RANAP-RelocInf ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ dl-GTP-PDU-SequenceNumber DL-GTP-PDU-SequenceNumber OPTIONAL,
+ ul-GTP-PDU-SequenceNumber UL-GTP-PDU-SequenceNumber OPTIONAL,
+ dl-N-PDU-SequenceNumber DL-N-PDU-SequenceNumber OPTIONAL,
+ ul-N-PDU-SequenceNumber UL-N-PDU-SequenceNumber OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-SetupItem-EnhRelocInfoReq ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-Parameters RAB-Parameters,
+ dataVolumeReportingIndication DataVolumeReportingIndication OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ pDP-TypeInformation PDP-TypeInformation OPTIONAL
+ -- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
+ userPlaneInformation UserPlaneInformation,
+ dataForwardingInformation TNLInformationEnhRelInfoReq OPTIONAL,
+ sourceSideIuULTNLInfo TNLInformationEnhRelInfoReq OPTIONAL,
+
+ service-Handover Service-Handover OPTIONAL,
+ alt-RAB-Parameters Alt-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+TNLInformationEnhRelInfoReq ::=SEQUENCE{
+ transportLayerAddress TransportLayerAddress,
+ iuTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+
+RAB-SetupItem-EnhRelocInfoRes ::= SEQUENCE {
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-ID RAB-ID,
+ dataForwardingInformation TNLInformationEnhRelInfoRes OPTIONAL,
+ ass-RAB-Parameters Ass-RAB-Parameters OPTIONAL,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+RAB-FailedItem-EnhRelocInfoRes ::= SEQUENCE {
+ cN-DomainIndicator CN-DomainIndicator,
+ rAB-ID RAB-ID,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+TNLInformationEnhRelInfoRes ::=SEQUENCE{
+ dl-forwardingTransportLayerAddress TransportLayerAddress,
+ dl-forwardingTransportAssociation IuTransportAssociation,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+
+-- **************************************************************
+--
+-- RAB MODIFICATION REQUEST ELEMENTARY PROCEDURE
+--
+-- **************************************************************
+
+RAB-ModifyItem ::= SEQUENCE {
+ rAB-ID RAB-ID,
+ requested-RAB-Parameter-Values Requested-RAB-Parameter-Values,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+MBMSSynchronisationInformation ::= SEQUENCE {
+ mBMSHCIndicator MBMSHCIndicator,
+ iPMulticastAddress IPMulticastAddress,
+ gTPDLTEID GTP-TEI,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+}
+
+LeftMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+ }
+
+UnsuccessfulLinking-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
+ SEQUENCE {
+ tMGI TMGI,
+ cause Cause,
+ iE-Extensions ProtocolExtensionContainer OPTIONAL,
+ ...
+ }
+
+
+END
diff --git a/asn1/rua/RUA-CommonDataTypes.asn b/asn1/rua/RUA-CommonDataTypes.asn
new file mode 100644
index 0000000..98382af
--- /dev/null
+++ b/asn1/rua/RUA-CommonDataTypes.asn
@@ -0,0 +1,62 @@
+-- **************************************************************
+--
+-- Common definitions
+--
+-- **************************************************************
+
+RUA-CommonDataTypes {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-CommonDataTypes (3) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- Extension constants
+--
+-- **************************************************************
+
+maxPrivateIEs INTEGER ::= 65535
+maxProtocolExtensions INTEGER ::= 65535
+maxProtocolIEs INTEGER ::= 65535
+
+-- **************************************************************
+--
+-- Common Data Types
+--
+-- **************************************************************
+Criticality ::= ENUMERATED { reject, ignore, notify }
+
+Presence ::= ENUMERATED { optional, conditional, mandatory }
+
+
+ProcedureCode ::= INTEGER {
+ id-Connect(1),
+ id-DirectTransfer(2),
+ id-Disconnect(3),
+ id-ConnectionlessTransfer(4),
+ id-ErrorIndication(5),
+ id-privateMessage(6)
+} (0..255)
+
+PrivateIE-ID ::= CHOICE {
+ local INTEGER (0..65535),
+ global OBJECT IDENTIFIER
+}
+
+ProtocolIE-ID ::= INTEGER {
+ id-Cause(1),
+ id-CriticalityDiagnostics(2),
+ id-Context-ID(3),
+ id-RANAP-Message(4),
+ id-IntraDomainNasNodeSelector(5),
+ id-Establishment-Cause(6),
+ id-CN-DomainIndicator(7),
+ id-CSGMembershipStatus(9)
+} (0..maxProtocolIEs)
+
+TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome }
+
+END
diff --git a/asn1/rua/RUA-Constants.asn b/asn1/rua/RUA-Constants.asn
new file mode 100644
index 0000000..636b4d5
--- /dev/null
+++ b/asn1/rua/RUA-Constants.asn
@@ -0,0 +1,55 @@
+-- **************************************************************
+--
+-- Constant definitions
+--
+-- **************************************************************
+
+RUA-Constants {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-Constants (4) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ ProcedureCode,
+ ProtocolIE-ID
+FROM RUA-CommonDataTypes;
+
+
+-- **************************************************************
+--
+-- Elementary Procedures
+--
+id-Connect ProcedureCode ::= 1
+id-DirectTransfer ProcedureCode ::= 2
+id-Disconnect ProcedureCode ::= 3
+id-ConnectionlessTransfer ProcedureCode ::= 4
+id-ErrorIndication ProcedureCode ::= 5
+id-privateMessage ProcedureCode ::= 6
+
+-- **************************************************************
+--
+-- Lists
+--
+-- **************************************************************
+maxNrOfErrors INTEGER ::= 256
+
+-- **************************************************************
+--
+-- IEs
+--
+-- **************************************************************
+
+id-Cause ProtocolIE-ID ::= 1
+id-CriticalityDiagnostics ProtocolIE-ID ::= 2
+id-Context-ID ProtocolIE-ID ::= 3
+id-RANAP-Message ProtocolIE-ID ::= 4
+id-IntraDomainNasNodeSelector ProtocolIE-ID ::= 5
+id-Establishment-Cause ProtocolIE-ID ::= 6
+id-CN-DomainIndicator ProtocolIE-ID ::= 7
+id-CSGMembershipStatus ProtocolIE-ID ::= 9
+
+
+END
diff --git a/asn1/rua/RUA-Containers.asn b/asn1/rua/RUA-Containers.asn
new file mode 100644
index 0000000..fff938b
--- /dev/null
+++ b/asn1/rua/RUA-Containers.asn
@@ -0,0 +1,153 @@
+-- **************************************************************
+--
+-- Container definitions
+--
+-- **************************************************************
+
+RUA-Containers {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-Containers (5) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ Presence,
+ PrivateIE-ID,
+ ProtocolIE-ID,
+ maxPrivateIEs,
+ maxProtocolExtensions,
+ maxProtocolIEs
+FROM RUA-CommonDataTypes;
+
+-- **************************************************************
+--
+-- Class Definition for Private IEs
+--
+-- **************************************************************
+
+RUA-PRIVATE-IES ::= CLASS {
+ &id PrivateIE-ID,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+
+-- **************************************************************
+--
+-- Class Definition for Protocol IEs
+--
+-- **************************************************************
+
+RUA-PROTOCOL-IES ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Value,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ TYPE &Value
+ PRESENCE &presence
+}
+
+-- **************************************************************
+--
+-- Class Definition for Protocol Extensions
+--
+-- **************************************************************
+
+RUA-PROTOCOL-EXTENSION ::= CLASS {
+ &id ProtocolIE-ID UNIQUE,
+ &criticality Criticality,
+ &Extension,
+ &presence Presence
+}
+WITH SYNTAX {
+ ID &id
+ CRITICALITY &criticality
+ EXTENSION &Extension
+ PRESENCE &presence
+}
+
+
+-- **************************************************************
+--
+-- Container for Protocol IEs
+--
+-- **************************************************************
+
+ProtocolIE-Container {RUA-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (0..maxProtocolIEs)) OF
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Single-Container {RUA-PROTOCOL-IES : IEsSetParam} ::=
+ ProtocolIE-Field {{IEsSetParam}}
+
+ProtocolIE-Field {RUA-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
+ id RUA-PROTOCOL-IES.&id ({IEsSetParam}),
+ criticality RUA-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
+ value RUA-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
+}
+
+-- **************************************************************
+--
+-- Container Lists for Protocol IE Containers
+--
+-- **************************************************************
+
+ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RUA-PROTOCOL-IES : IEsSetParam} ::=
+ SEQUENCE (SIZE (lowerBound..upperBound)) OF
+ ProtocolIE-Container {{IEsSetParam}}
+
+-- **************************************************************
+--
+-- Container for Protocol Extensions
+--
+-- **************************************************************
+
+ProtocolExtensionContainer {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
+ SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
+ ProtocolExtensionField {{ExtensionSetParam}}
+
+ProtocolExtensionField {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
+ id RUA-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
+ criticality RUA-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
+ extensionValue RUA-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
+}
+
+
+-- **************************************************************
+--
+-- Container for Private IEs
+--
+-- **************************************************************
+
+PrivateIE-Container {RUA-PRIVATE-IES : IEsSetParam } ::=
+ SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
+ PrivateIE-Field {{IEsSetParam}}
+
+PrivateIE-Field {RUA-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
+ id RUA-PRIVATE-IES.&id ({IEsSetParam}),
+ criticality RUA-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
+ value RUA-PRIVATE-IES.&Value ({IEsSetParam}{@id})
+}
+
+
+END
diff --git a/asn1/rua/RUA-IEs.asn b/asn1/rua/RUA-IEs.asn
new file mode 100644
index 0000000..1e43580
--- /dev/null
+++ b/asn1/rua/RUA-IEs.asn
@@ -0,0 +1,183 @@
+-- **************************************************************
+--
+-- Information Element Definitions
+--
+-- **************************************************************
+
+RUA-IEs {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-IEs (2) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxNrOfErrors
+FROM RUA-Constants
+
+ maxProtocolExtensions,
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID,
+ TriggeringMessage
+FROM RUA-CommonDataTypes
+
+ IE
+FROM RUA-PDU;
+
+IE-Extensions ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF IE
+
+CN-DomainIndicator ::= ENUMERATED {
+ cs-domain,
+ ps-domain
+}
+
+CSGMembershipStatus ::= ENUMERATED {
+ member,
+ non-member,
+ ...
+}
+
+Establishment-Cause ::= ENUMERATED {
+ emergency-call,
+ normal-call,
+ ...
+}
+
+
+
+
+
+Context-ID ::= BIT STRING (SIZE(24))
+
+IntraDomainNasNodeSelector ::= SEQUENCE {
+ version CHOICE {
+ release99 SEQUENCE {
+ cn-Type CHOICE {
+ gsm-Map-IDNNS Gsm-map-IDNNS,
+ ansi-41-IDNNS Ansi-41-IDNNS
+ }
+ },
+ later SEQUENCE {
+ futurecoding BIT STRING (SIZE (15))
+ }
+ }
+}
+
+Gsm-map-IDNNS ::= SEQUENCE {
+ routingbasis CHOICE {
+ localPTMSI SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ tMSIofsamePLMN SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ tMSIofdifferentPLMN SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ iMSIresponsetopaging SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ iMSIcauseUEinitiatedEvent SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ iMEI SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ spare2 SEQUENCE {
+ routingparameter RoutingParameter
+ },
+ spare1 SEQUENCE {
+ routingparameter RoutingParameter
+ }
+ },
+ -- dummy is not used in this version of the specification and
+ -- it should be ignored by the receiver.
+ dummy BOOLEAN
+}
+
+
+Ansi-41-IDNNS ::= BIT STRING (SIZE (14))
+
+RANAP-Message ::= OCTET STRING
+
+RoutingParameter ::= BIT STRING (SIZE (10))
+
+
+-- **************************************************************
+--
+-- Cause IE
+--
+-- **************************************************************
+
+Cause ::= CHOICE {
+ radioNetwork CauseRadioNetwork,
+ transport CauseTransport,
+ protocol CauseProtocol,
+ misc CauseMisc,
+ ...
+}
+CauseRadioNetwork ::= ENUMERATED {
+ normal,
+ connect-failed,
+ network-release,
+ unspecified,
+ ...
+}
+CauseTransport ::= ENUMERATED {
+ transport-resource-unavailable,
+ unspecified,
+ ...
+}
+
+CauseProtocol ::= ENUMERATED {
+ transfer-syntax-error,
+ abstract-syntax-error-reject,
+ abstract-syntax-error-ignore-and-notify,
+ message-not-compatible-with-receiver-state,
+ semantic-error,
+ unspecified,
+ abstract-syntax-error-falsely-constructed-message,
+ ...
+}
+
+CauseMisc ::= ENUMERATED {
+ processing-overload,
+ hardware-failure,
+ o-and-m-intervention,
+ unspecified,
+ ...
+}
+
+-- **************************************************************
+--
+-- CriticalityDiagnostics
+--
+-- **************************************************************
+
+CriticalityDiagnostics ::= SEQUENCE {
+ procedureCode ProcedureCode OPTIONAL,
+ triggeringMessage TriggeringMessage OPTIONAL,
+ procedureCriticality Criticality OPTIONAL,
+ iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+}
+
+CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
+ SEQUENCE {
+ iECriticality Criticality,
+ iE-ID ProtocolIE-ID,
+ typeOfError TypeOfError,
+ iE-Extensions IE-Extensions OPTIONAL,
+ ...
+ }
+
+TypeOfError ::= ENUMERATED {
+ not-understood,
+ missing,
+ ...
+}
+
+END
diff --git a/asn1/rua/RUA-PDU-Contents.asn b/asn1/rua/RUA-PDU-Contents.asn
new file mode 100644
index 0000000..11b3566
--- /dev/null
+++ b/asn1/rua/RUA-PDU-Contents.asn
@@ -0,0 +1,195 @@
+-- **************************************************************
+--
+-- PDU definitions for RUA.
+--
+-- **************************************************************
+
+RUA-PDU-Contents {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Contents (1) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Cause,
+ CriticalityDiagnostics,
+ Context-ID,
+ CN-DomainIndicator,
+ CSGMembershipStatus,
+ IntraDomainNasNodeSelector,
+ RANAP-Message,
+ Establishment-Cause
+
+FROM RUA-IEs
+
+
+ ProtocolExtensionContainer{},
+ ProtocolIE-ContainerList{},
+ ProtocolIE-Container{},
+ ProtocolIE-Single-Container{},
+ PrivateIE-Container{},
+ RUA-PRIVATE-IES,
+ RUA-PROTOCOL-EXTENSION,
+ RUA-PROTOCOL-IES
+FROM RUA-Containers
+
+ id-Cause,
+ id-CriticalityDiagnostics,
+ id-Context-ID,
+ id-CN-DomainIndicator,
+ id-CSGMembershipStatus,
+ id-RANAP-Message,
+ id-IntraDomainNasNodeSelector,
+ id-Establishment-Cause
+
+FROM RUA-Constants;
+
+
+-- **************************************************************
+--
+-- Connect
+--
+-- **************************************************************
+
+Connect ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ConnectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ConnectExtensions} } OPTIONAL,
+ ...
+}
+
+ConnectIEs RUA-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-IntraDomainNasNodeSelector CRITICALITY ignore TYPE IntraDomainNasNodeSelector PRESENCE optional } |
+ { ID id-Establishment-Cause CRITICALITY reject TYPE Establishment-Cause PRESENCE mandatory } |
+ { ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
+ ...
+}
+
+ConnectExtensions RUA-PROTOCOL-EXTENSION ::= {
+ { ID id-CSGMembershipStatus CRITICALITY ignore EXTENSION CSGMembershipStatus PRESENCE optional },
+ ...
+}
+
+
+-- **************************************************************
+--
+-- Direct Transfer
+--
+-- **************************************************************
+
+DirectTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {DirectTransferIEs} },
+ protocolExtensions ProtocolExtensionContainer { {DirectTransferExtensions} } OPTIONAL,
+ ...
+}
+
+DirectTransferIEs RUA-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
+ ...
+}
+
+DirectTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+-- **************************************************************
+--
+-- Disconnect
+--
+-- **************************************************************
+
+Disconnect ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {DisconnectIEs} },
+ protocolExtensions ProtocolExtensionContainer { {DisconnectExtensions} } OPTIONAL,
+ ...
+}
+
+DisconnectIEs RUA-PROTOCOL-IES ::= {
+ { ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
+ { ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
+ { ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory } |
+ { ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE conditional },
+ -- RANAP message shall be included if Cause value is "normal"
+ ...
+}
+
+DisconnectExtensions RUA-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- Connectionless Transfer
+--
+-- **************************************************************
+
+ConnectionlessTransfer ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ConnectionlessTransferIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ConnectionlessTransferExtensions} } OPTIONAL,
+ ...
+}
+
+ConnectionlessTransferIEs RUA-PROTOCOL-IES ::= {
+ { ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
+ ...
+}
+
+ConnectionlessTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+
+
+
+-- **************************************************************
+--
+-- ERROR INDICATION
+--
+-- **************************************************************
+
+ErrorIndication ::= SEQUENCE {
+ protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
+ protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
+ ...
+}
+
+ErrorIndicationIEs RUA-PROTOCOL-IES ::= {
+ { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
+ { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
+ ...
+}
+
+ErrorIndicationExtensions RUA-PROTOCOL-EXTENSION ::= {
+ ...
+}
+
+-- **************************************************************
+--
+-- PRIVATE MESSAGE
+--
+-- **************************************************************
+
+PrivateMessage ::= SEQUENCE {
+ privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
+ ...
+}
+
+PrivateMessage-IEs RUA-PRIVATE-IES ::= {
+ ...
+}
+
+
+END
diff --git a/asn1/rua/RUA-PDU-Descriptions.asn b/asn1/rua/RUA-PDU-Descriptions.asn
new file mode 100644
index 0000000..1809154
--- /dev/null
+++ b/asn1/rua/RUA-PDU-Descriptions.asn
@@ -0,0 +1,166 @@
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+RUA-PDU-Descriptions {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+ Criticality,
+ ProcedureCode
+FROM RUA-CommonDataTypes
+ Connect,
+ DirectTransfer,
+ Disconnect,
+ ConnectionlessTransfer,
+ ErrorIndication,
+ PrivateMessage
+
+
+FROM RUA-PDU-Contents
+ id-Connect,
+ id-DirectTransfer,
+ id-Disconnect,
+ id-ConnectionlessTransfer,
+ id-ErrorIndication,
+ id-privateMessage
+FROM RUA-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+RUA-ELEMENTARY-PROCEDURE ::= CLASS {
+ &InitiatingMessage ,
+ &SuccessfulOutcome OPTIONAL,
+ &UnsuccessfulOutcome OPTIONAL,
+ &procedureCode ProcedureCode UNIQUE,
+ &criticality Criticality DEFAULT ignore
+}
+
+WITH SYNTAX {
+ INITIATING MESSAGE &InitiatingMessage
+ [SUCCESSFUL OUTCOME &SuccessfulOutcome]
+ [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
+ PROCEDURE CODE &procedureCode
+ [CRITICALITY &criticality]
+}
+
+-- **************************************************************
+--
+-- Interface PDU definitions
+--
+-- **************************************************************
+
+RUA-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
+ criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RUA-ELEMENTARY-PROCEDURE.&InitiatingMessage ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
+ criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RUA-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
+ criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+ value RUA-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+RUA-ELEMENTARY-PROCEDURES RUA-ELEMENTARY-PROCEDURE ::= {
+ RUA-ELEMENTARY-PROCEDURES-CLASS-1 |
+ RUA-ELEMENTARY-PROCEDURES-CLASS-2 ,
+ ...
+}
+
+RUA-ELEMENTARY-PROCEDURES-CLASS-1 RUA-ELEMENTARY-PROCEDURE ::= {
+ ...
+}
+
+
+RUA-ELEMENTARY-PROCEDURES-CLASS-2 RUA-ELEMENTARY-PROCEDURE ::= {
+ connectionRequest |
+ directTransfer |
+ disconnectRequest |
+ connectionlessTransfer |
+ errorIndication |
+ privateMessage,
+ ...
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+
+connectionRequest RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Connect
+ PROCEDURE CODE id-Connect
+ CRITICALITY ignore
+}
+
+directTransfer RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE DirectTransfer
+ PROCEDURE CODE id-DirectTransfer
+ CRITICALITY ignore
+}
+
+disconnectRequest RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE Disconnect
+ PROCEDURE CODE id-Disconnect
+ CRITICALITY ignore
+}
+connectionlessTransfer RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ConnectionlessTransfer
+ PROCEDURE CODE id-ConnectionlessTransfer
+ CRITICALITY ignore
+}
+
+errorIndication RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE ErrorIndication
+ PROCEDURE CODE id-ErrorIndication
+ CRITICALITY ignore
+}
+
+privateMessage RUA-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+
+END
diff --git a/asn1/rua/RUA-PDU.asn b/asn1/rua/RUA-PDU.asn
new file mode 100644
index 0000000..ea2bccc
--- /dev/null
+++ b/asn1/rua/RUA-PDU.asn
@@ -0,0 +1,80 @@
+RUA-PDU {
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU (255) }
+
+DEFINITIONS AUTOMATIC TAGS ::=
+
+BEGIN
+
+IMPORTS
+ maxProtocolIEs,
+ Criticality,
+ ProcedureCode,
+ ProtocolIE-ID
+
+FROM RUA-CommonDataTypes;
+
+RUA-PDU ::= CHOICE {
+ initiatingMessage InitiatingMessage,
+ successfulOutcome SuccessfulOutcome,
+ unsuccessfulOutcome UnsuccessfulOutcome,
+ ...
+}
+
+InitiatingMessage ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+ procedureCode ProcedureCode,
+ criticality Criticality,
+ value ANY
+}
+
+
+Connect ::= SEQUENCE {
+ connect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+DirectTransfer ::= SEQUENCE {
+ directTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+Disconnect ::= SEQUENCE {
+ disconnect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ConnectionlessTransfer ::= SEQUENCE {
+ connectionlessTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+ErrorIndication ::= SEQUENCE {
+ errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+PrivateMessage ::= SEQUENCE {
+ privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
+ ...
+}
+
+
+IE ::= SEQUENCE {
+ id ProtocolIE-ID,
+ criticality Criticality,
+ value ANY
+}
+
+END
diff --git a/asn1/rua/eurecom/rua_decoder.c b/asn1/rua/eurecom/rua_decoder.c
new file mode 100644
index 0000000..521ecab
--- /dev/null
+++ b/asn1/rua/eurecom/rua_decoder.c
@@ -0,0 +1,390 @@
+/*******************************************************************************
+
+ Eurecom OpenAirInterface
+ Copyright(c) 1999 - 2012 Eurecom
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms and conditions of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ This program is distributed in the hope it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+ The full GNU General Public License is included in this distribution in
+ the file called "COPYING".
+
+ Contact Information
+ Openair Admin: openair_admin@eurecom.fr
+ Openair Tech : openair_tech@eurecom.fr
+ Forums : http://forums.eurecom.fr/openairinterface
+ Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
+ 06410 Biot FRANCE
+
+*******************************************************************************/
+
+/*******************************************************************************
+ * This file had been created by asn1tostruct.py script v0.5
+ * Please do not modify this file but regenerate it via script.
+ * Created on: 2015-08-29 14:31:31.109013 by laforge
+ * from ['../RUA-CommonDataTypes.asn', '../RUA-Constants.asn', '../RUA-Containers.asn', '../RUA-IEs.asn', '../RUA-PDU-Contents.asn', '../RUA-PDU-Descriptions.asn']
+ ******************************************************************************/
+#include "rua_common.h"
+#include "rua_ies_defs.h"
+
+int rua_decode_connecties(
+ ConnectIEs_t *connectIEs,
+ ANY_t *any_p) {
+
+ Connect_t connect;
+ Connect_t *connect_p = &connect;
+ int i, decoded = 0;
+ int tempDecoded = 0;
+ assert(any_p != NULL);
+ assert(connectIEs != NULL);
+
+ RUA_DEBUG("Decoding message ConnectIEs (%s:%d)\n", __FILE__, __LINE__);
+
+ ANY_to_type_aper(any_p, &asn_DEF_Connect, (void**)&connect_p);
+
+ for (i = 0; i < connect_p->connect_ies.list.count; i++) {
+ IE_t *ie_p;
+ ie_p = connect_p->connect_ies.list.array[i];
+ switch(ie_p->id) {
+ case ProtocolIE_ID_id_CN_DomainIndicator:
+ {
+ CN_DomainIndicator_t cnDomainIndicator;
+ CN_DomainIndicator_t *cnDomainIndicator_p = &cnDomainIndicator;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_CN_DomainIndicator, (void**)&cnDomainIndicator_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_CN_DomainIndicator, cnDomainIndicator_p);
+ memcpy(&connectIEs->cN_DomainIndicator, cnDomainIndicator_p, sizeof(CN_DomainIndicator_t));
+ } break;
+ case ProtocolIE_ID_id_Context_ID:
+ {
+ Context_ID_t contextID;
+ Context_ID_t *contextID_p = &contextID;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Context_ID, (void**)&contextID_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE context_ID failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Context_ID, contextID_p);
+ memcpy(&connectIEs->context_ID, contextID_p, sizeof(Context_ID_t));
+ } break;
+ /* Optional field */
+ case ProtocolIE_ID_id_IntraDomainNasNodeSelector:
+ {
+ IntraDomainNasNodeSelector_t intraDomainNasNodeSelector;
+ IntraDomainNasNodeSelector_t *intraDomainNasNodeSelector_p = &intraDomainNasNodeSelector;
+ connectIEs->presenceMask |= CONNECTIES_INTRADOMAINNASNODESELECTOR_PRESENT;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_IntraDomainNasNodeSelector, (void**)&intraDomainNasNodeSelector_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE intraDomainNasNodeSelector failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_IntraDomainNasNodeSelector, intraDomainNasNodeSelector_p);
+ memcpy(&connectIEs->intraDomainNasNodeSelector, intraDomainNasNodeSelector_p, sizeof(IntraDomainNasNodeSelector_t));
+ } break;
+ case ProtocolIE_ID_id_Establishment_Cause:
+ {
+ Establishment_Cause_t establishmentCause;
+ Establishment_Cause_t *establishmentCause_p = &establishmentCause;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Establishment_Cause, (void**)&establishmentCause_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE establishment_Cause failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Establishment_Cause, establishmentCause_p);
+ memcpy(&connectIEs->establishment_Cause, establishmentCause_p, sizeof(Establishment_Cause_t));
+ } break;
+ case ProtocolIE_ID_id_RANAP_Message:
+ {
+ RANAP_Message_t ranapMessage;
+ RANAP_Message_t *ranapMessage_p = &ranapMessage;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_Message, (void**)&ranapMessage_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_RANAP_Message, ranapMessage_p);
+ memcpy(&connectIEs->ranaP_Message, ranapMessage_p, sizeof(RANAP_Message_t));
+ } break;
+ default:
+ RUA_DEBUG("Unknown protocol IE id (%d) for message connecties\n", (int)ie_p->id);
+ return -1;
+ }
+ }
+ return decoded;
+}
+
+int rua_decode_disconnecties(
+ DisconnectIEs_t *disconnectIEs,
+ ANY_t *any_p) {
+
+ Disconnect_t disconnect;
+ Disconnect_t *disconnect_p = &disconnect;
+ int i, decoded = 0;
+ int tempDecoded = 0;
+ assert(any_p != NULL);
+ assert(disconnectIEs != NULL);
+
+ RUA_DEBUG("Decoding message DisconnectIEs (%s:%d)\n", __FILE__, __LINE__);
+
+ ANY_to_type_aper(any_p, &asn_DEF_Disconnect, (void**)&disconnect_p);
+
+ for (i = 0; i < disconnect_p->disconnect_ies.list.count; i++) {
+ IE_t *ie_p;
+ ie_p = disconnect_p->disconnect_ies.list.array[i];
+ switch(ie_p->id) {
+ case ProtocolIE_ID_id_CN_DomainIndicator:
+ {
+ CN_DomainIndicator_t cnDomainIndicator;
+ CN_DomainIndicator_t *cnDomainIndicator_p = &cnDomainIndicator;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_CN_DomainIndicator, (void**)&cnDomainIndicator_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_CN_DomainIndicator, cnDomainIndicator_p);
+ memcpy(&disconnectIEs->cN_DomainIndicator, cnDomainIndicator_p, sizeof(CN_DomainIndicator_t));
+ } break;
+ case ProtocolIE_ID_id_Context_ID:
+ {
+ Context_ID_t contextID;
+ Context_ID_t *contextID_p = &contextID;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Context_ID, (void**)&contextID_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE context_ID failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Context_ID, contextID_p);
+ memcpy(&disconnectIEs->context_ID, contextID_p, sizeof(Context_ID_t));
+ } break;
+ case ProtocolIE_ID_id_Cause:
+ {
+ Cause_t cause;
+ Cause_t *cause_p = &cause;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Cause, (void**)&cause_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE cause failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Cause, cause_p);
+ memcpy(&disconnectIEs->cause, cause_p, sizeof(Cause_t));
+ } break;
+ /* Conditional field */
+ case ProtocolIE_ID_id_RANAP_Message:
+ {
+ RANAP_Message_t ranapMessage;
+ RANAP_Message_t *ranapMessage_p = &ranapMessage;
+ disconnectIEs->presenceMask |= DISCONNECTIES_RANAP_MESSAGE_PRESENT;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_Message, (void**)&ranapMessage_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_RANAP_Message, ranapMessage_p);
+ memcpy(&disconnectIEs->ranaP_Message, ranapMessage_p, sizeof(RANAP_Message_t));
+ } break;
+ default:
+ RUA_DEBUG("Unknown protocol IE id (%d) for message disconnecties\n", (int)ie_p->id);
+ return -1;
+ }
+ }
+ return decoded;
+}
+
+int rua_decode_errorindicationies(
+ ErrorIndicationIEs_t *errorIndicationIEs,
+ ANY_t *any_p) {
+
+ ErrorIndication_t errorIndication;
+ ErrorIndication_t *errorIndication_p = &errorIndication;
+ int i, decoded = 0;
+ int tempDecoded = 0;
+ assert(any_p != NULL);
+ assert(errorIndicationIEs != NULL);
+
+ RUA_DEBUG("Decoding message ErrorIndicationIEs (%s:%d)\n", __FILE__, __LINE__);
+
+ ANY_to_type_aper(any_p, &asn_DEF_ErrorIndication, (void**)&errorIndication_p);
+
+ for (i = 0; i < errorIndication_p->errorIndication_ies.list.count; i++) {
+ IE_t *ie_p;
+ ie_p = errorIndication_p->errorIndication_ies.list.array[i];
+ switch(ie_p->id) {
+ case ProtocolIE_ID_id_Cause:
+ {
+ Cause_t cause;
+ Cause_t *cause_p = &cause;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Cause, (void**)&cause_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE cause failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Cause, cause_p);
+ memcpy(&errorIndicationIEs->cause, cause_p, sizeof(Cause_t));
+ } break;
+ /* Optional field */
+ case ProtocolIE_ID_id_CriticalityDiagnostics:
+ {
+ CriticalityDiagnostics_t criticalityDiagnostics;
+ CriticalityDiagnostics_t *criticalityDiagnostics_p = &criticalityDiagnostics;
+ errorIndicationIEs->presenceMask |= ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_CriticalityDiagnostics, (void**)&criticalityDiagnostics_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE criticalityDiagnostics failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_CriticalityDiagnostics, criticalityDiagnostics_p);
+ memcpy(&errorIndicationIEs->criticalityDiagnostics, criticalityDiagnostics_p, sizeof(CriticalityDiagnostics_t));
+ } break;
+ default:
+ RUA_DEBUG("Unknown protocol IE id (%d) for message errorindicationies\n", (int)ie_p->id);
+ return -1;
+ }
+ }
+ return decoded;
+}
+
+int rua_decode_connectionlesstransferies(
+ ConnectionlessTransferIEs_t *connectionlessTransferIEs,
+ ANY_t *any_p) {
+
+ ConnectionlessTransfer_t connectionlessTransfer;
+ ConnectionlessTransfer_t *connectionlessTransfer_p = &connectionlessTransfer;
+ int i, decoded = 0;
+ int tempDecoded = 0;
+ assert(any_p != NULL);
+ assert(connectionlessTransferIEs != NULL);
+
+ RUA_DEBUG("Decoding message ConnectionlessTransferIEs (%s:%d)\n", __FILE__, __LINE__);
+
+ ANY_to_type_aper(any_p, &asn_DEF_ConnectionlessTransfer, (void**)&connectionlessTransfer_p);
+
+ for (i = 0; i < connectionlessTransfer_p->connectionlessTransfer_ies.list.count; i++) {
+ IE_t *ie_p;
+ ie_p = connectionlessTransfer_p->connectionlessTransfer_ies.list.array[i];
+ switch(ie_p->id) {
+ case ProtocolIE_ID_id_RANAP_Message:
+ {
+ RANAP_Message_t ranapMessage;
+ RANAP_Message_t *ranapMessage_p = &ranapMessage;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_Message, (void**)&ranapMessage_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_RANAP_Message, ranapMessage_p);
+ memcpy(&connectionlessTransferIEs->ranaP_Message, ranapMessage_p, sizeof(RANAP_Message_t));
+ } break;
+ default:
+ RUA_DEBUG("Unknown protocol IE id (%d) for message connectionlesstransferies\n", (int)ie_p->id);
+ return -1;
+ }
+ }
+ return decoded;
+}
+
+int rua_decode_directtransferies(
+ DirectTransferIEs_t *directTransferIEs,
+ ANY_t *any_p) {
+
+ DirectTransfer_t directTransfer;
+ DirectTransfer_t *directTransfer_p = &directTransfer;
+ int i, decoded = 0;
+ int tempDecoded = 0;
+ assert(any_p != NULL);
+ assert(directTransferIEs != NULL);
+
+ RUA_DEBUG("Decoding message DirectTransferIEs (%s:%d)\n", __FILE__, __LINE__);
+
+ ANY_to_type_aper(any_p, &asn_DEF_DirectTransfer, (void**)&directTransfer_p);
+
+ for (i = 0; i < directTransfer_p->directTransfer_ies.list.count; i++) {
+ IE_t *ie_p;
+ ie_p = directTransfer_p->directTransfer_ies.list.array[i];
+ switch(ie_p->id) {
+ case ProtocolIE_ID_id_CN_DomainIndicator:
+ {
+ CN_DomainIndicator_t cnDomainIndicator;
+ CN_DomainIndicator_t *cnDomainIndicator_p = &cnDomainIndicator;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_CN_DomainIndicator, (void**)&cnDomainIndicator_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE cN_DomainIndicator failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_CN_DomainIndicator, cnDomainIndicator_p);
+ memcpy(&directTransferIEs->cN_DomainIndicator, cnDomainIndicator_p, sizeof(CN_DomainIndicator_t));
+ } break;
+ case ProtocolIE_ID_id_Context_ID:
+ {
+ Context_ID_t contextID;
+ Context_ID_t *contextID_p = &contextID;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_Context_ID, (void**)&contextID_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE context_ID failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_Context_ID, contextID_p);
+ memcpy(&directTransferIEs->context_ID, contextID_p, sizeof(Context_ID_t));
+ } break;
+ case ProtocolIE_ID_id_RANAP_Message:
+ {
+ RANAP_Message_t ranapMessage;
+ RANAP_Message_t *ranapMessage_p = &ranapMessage;
+ tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_RANAP_Message, (void**)&ranapMessage_p);
+ if (tempDecoded < 0) {
+ RUA_DEBUG("Decoding of IE ranaP_Message failed\n");
+ return -1;
+ }
+ decoded += tempDecoded;
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_RANAP_Message, ranapMessage_p);
+ memcpy(&directTransferIEs->ranaP_Message, ranapMessage_p, sizeof(RANAP_Message_t));
+ } break;
+ default:
+ RUA_DEBUG("Unknown protocol IE id (%d) for message directtransferies\n", (int)ie_p->id);
+ return -1;
+ }
+ }
+ return decoded;
+}
+
diff --git a/asn1/rua/eurecom/rua_encoder.c b/asn1/rua/eurecom/rua_encoder.c
new file mode 100644
index 0000000..56d0f33
--- /dev/null
+++ b/asn1/rua/eurecom/rua_encoder.c
@@ -0,0 +1,216 @@
+/*******************************************************************************
+
+ Eurecom OpenAirInterface
+ Copyright(c) 1999 - 2012 Eurecom
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms and conditions of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ This program is distributed in the hope it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+ The full GNU General Public License is included in this distribution in
+ the file called "COPYING".
+
+ Contact Information
+ Openair Admin: openair_admin@eurecom.fr
+ Openair Tech : openair_tech@eurecom.fr
+ Forums : http://forums.eurecom.fr/openairinterface
+ Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
+ 06410 Biot FRANCE
+
+*******************************************************************************/
+
+/*******************************************************************************
+ * This file had been created by asn1tostruct.py script v0.5
+ * Please do not modify this file but regenerate it via script.
+ * Created on: 2015-08-29 14:31:31.110934 by laforge
+ * from ['../RUA-CommonDataTypes.asn', '../RUA-Constants.asn', '../RUA-Containers.asn', '../RUA-IEs.asn', '../RUA-PDU-Contents.asn', '../RUA-PDU-Descriptions.asn']
+ ******************************************************************************/
+#include "rua_common.h"
+#include "rua_ies_defs.h"
+
+int rua_encode_connecties(
+ Connect_t *connect,
+ ConnectIEs_t *connectIEs) {
+
+ IE_t *ie;
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_CN_DomainIndicator,
+ Criticality_reject,
+ &asn_DEF_CN_DomainIndicator,
+ &connectIEs->cN_DomainIndicator)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Context_ID,
+ Criticality_reject,
+ &asn_DEF_Context_ID,
+ &connectIEs->context_ID)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
+
+ /* Optional field */
+ if ((connectIEs->presenceMask & CONNECTIES_INTRADOMAINNASNODESELECTOR_PRESENT)
+ == CONNECTIES_INTRADOMAINNASNODESELECTOR_PRESENT) {
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_IntraDomainNasNodeSelector,
+ Criticality_ignore,
+ &asn_DEF_IntraDomainNasNodeSelector,
+ &connectIEs->intraDomainNasNodeSelector)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
+ }
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Establishment_Cause,
+ Criticality_reject,
+ &asn_DEF_Establishment_Cause,
+ &connectIEs->establishment_Cause)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_RANAP_Message,
+ Criticality_reject,
+ &asn_DEF_RANAP_Message,
+ &connectIEs->ranaP_Message)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connect->connect_ies.list, ie);
+
+ return 0;
+}
+
+int rua_encode_disconnecties(
+ Disconnect_t *disconnect,
+ DisconnectIEs_t *disconnectIEs) {
+
+ IE_t *ie;
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_CN_DomainIndicator,
+ Criticality_reject,
+ &asn_DEF_CN_DomainIndicator,
+ &disconnectIEs->cN_DomainIndicator)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Context_ID,
+ Criticality_reject,
+ &asn_DEF_Context_ID,
+ &disconnectIEs->context_ID)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Cause,
+ Criticality_reject,
+ &asn_DEF_Cause,
+ &disconnectIEs->cause)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
+
+ /* Conditional field */
+ if ((disconnectIEs->presenceMask & DISCONNECTIES_RANAP_MESSAGE_PRESENT)
+ == DISCONNECTIES_RANAP_MESSAGE_PRESENT) {
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_RANAP_Message,
+ Criticality_reject,
+ &asn_DEF_RANAP_Message,
+ &disconnectIEs->ranaP_Message)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&disconnect->disconnect_ies.list, ie);
+ }
+
+ return 0;
+}
+
+int rua_encode_errorindicationies(
+ ErrorIndication_t *errorIndication,
+ ErrorIndicationIEs_t *errorIndicationIEs) {
+
+ IE_t *ie;
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Cause,
+ Criticality_ignore,
+ &asn_DEF_Cause,
+ &errorIndicationIEs->cause)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
+
+ /* Optional field */
+ if ((errorIndicationIEs->presenceMask & ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT)
+ == ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT) {
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_CriticalityDiagnostics,
+ Criticality_ignore,
+ &asn_DEF_CriticalityDiagnostics,
+ &errorIndicationIEs->criticalityDiagnostics)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&errorIndication->errorIndication_ies.list, ie);
+ }
+
+ return 0;
+}
+
+int rua_encode_connectionlesstransferies(
+ ConnectionlessTransfer_t *connectionlessTransfer,
+ ConnectionlessTransferIEs_t *connectionlessTransferIEs) {
+
+ IE_t *ie;
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_RANAP_Message,
+ Criticality_reject,
+ &asn_DEF_RANAP_Message,
+ &connectionlessTransferIEs->ranaP_Message)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&connectionlessTransfer->connectionlessTransfer_ies.list, ie);
+
+ return 0;
+}
+
+int rua_encode_directtransferies(
+ DirectTransfer_t *directTransfer,
+ DirectTransferIEs_t *directTransferIEs) {
+
+ IE_t *ie;
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_CN_DomainIndicator,
+ Criticality_reject,
+ &asn_DEF_CN_DomainIndicator,
+ &directTransferIEs->cN_DomainIndicator)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_Context_ID,
+ Criticality_reject,
+ &asn_DEF_Context_ID,
+ &directTransferIEs->context_ID)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
+
+ if ((ie = rua_new_ie(ProtocolIE_ID_id_RANAP_Message,
+ Criticality_reject,
+ &asn_DEF_RANAP_Message,
+ &directTransferIEs->ranaP_Message)) == NULL) {
+ return -1;
+ }
+ ASN_SEQUENCE_ADD(&directTransfer->directTransfer_ies.list, ie);
+
+ return 0;
+}
+
diff --git a/asn1/rua/eurecom/rua_ies_defs.h b/asn1/rua/eurecom/rua_ies_defs.h
new file mode 100644
index 0000000..da5fc6f
--- /dev/null
+++ b/asn1/rua/eurecom/rua_ies_defs.h
@@ -0,0 +1,175 @@
+/*******************************************************************************
+
+ Eurecom OpenAirInterface
+ Copyright(c) 1999 - 2012 Eurecom
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms and conditions of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ This program is distributed in the hope it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+ The full GNU General Public License is included in this distribution in
+ the file called "COPYING".
+
+ Contact Information
+ Openair Admin: openair_admin@eurecom.fr
+ Openair Tech : openair_tech@eurecom.fr
+ Forums : http://forums.eurecom.fr/openairinterface
+ Address : EURECOM, Campus SophiaTech, 450 Route des Chappes
+ 06410 Biot FRANCE
+
+*******************************************************************************/
+
+/*******************************************************************************
+ * This file had been created by asn1tostruct.py script v0.5
+ * Please do not modify this file but regenerate it via script.
+ * Created on: 2015-08-29 14:31:31.107080 by laforge
+ * from ['../RUA-CommonDataTypes.asn', '../RUA-Constants.asn', '../RUA-Containers.asn', '../RUA-IEs.asn', '../RUA-PDU-Contents.asn', '../RUA-PDU-Descriptions.asn']
+ ******************************************************************************/
+#include "rua_common.h"
+
+#ifndef RUA_IES_DEFS_H_
+#define RUA_IES_DEFS_H_
+
+#define CONNECTIES_INTRADOMAINNASNODESELECTOR_PRESENT (1 << 0)
+
+typedef struct ConnectIEs_s {
+ uint16_t presenceMask;
+ CN_DomainIndicator_t cN_DomainIndicator;
+ Context_ID_t context_ID;
+ IntraDomainNasNodeSelector_t intraDomainNasNodeSelector; ///< Optional field
+ Establishment_Cause_t establishment_Cause;
+ RANAP_Message_t ranaP_Message;
+} ConnectIEs_t;
+
+#define DISCONNECTIES_RANAP_MESSAGE_PRESENT (1 << 0)
+
+typedef struct DisconnectIEs_s {
+ uint16_t presenceMask;
+ CN_DomainIndicator_t cN_DomainIndicator;
+ Context_ID_t context_ID;
+ Cause_t cause;
+ RANAP_Message_t ranaP_Message; ///< Conditional field
+} DisconnectIEs_t;
+
+#define ERRORINDICATIONIES_CRITICALITYDIAGNOSTICS_PRESENT (1 << 0)
+
+typedef struct ErrorIndicationIEs_s {
+ uint16_t presenceMask;
+ Cause_t cause;
+ CriticalityDiagnostics_t criticalityDiagnostics; ///< Optional field
+} ErrorIndicationIEs_t;
+
+typedef struct ConnectionlessTransferIEs_s {
+ RANAP_Message_t ranaP_Message;
+} ConnectionlessTransferIEs_t;
+
+typedef struct DirectTransferIEs_s {
+ CN_DomainIndicator_t cN_DomainIndicator;
+ Context_ID_t context_ID;
+ RANAP_Message_t ranaP_Message;
+} DirectTransferIEs_t;
+
+typedef struct rua_message_s {
+ uint8_t procedureCode;
+ uint8_t criticality;
+ uint8_t direction;
+ union {
+ ConnectIEs_t connectIEs;
+ ConnectionlessTransferIEs_t connectionlessTransferIEs;
+ DirectTransferIEs_t directTransferIEs;
+ DisconnectIEs_t disconnectIEs;
+ ErrorIndicationIEs_t errorIndicationIEs;
+ } msg;
+} rua_message;
+
+/** \brief Decode function for ConnectIEs ies.
+ * \param connectIEs Pointer to ASN1 structure in which data will be stored
+ * \param any_p Pointer to the ANY value to decode.
+ **/
+int rua_decode_connecties(
+ ConnectIEs_t *connectIEs,
+ ANY_t *any_p);
+
+/** \brief Encode function for ConnectIEs ies.
+ * \param connect Pointer to the ASN1 structure.
+ * \param connectIEs Pointer to the IES structure.
+ **/
+int rua_encode_connecties(
+ Connect_t *connect,
+ ConnectIEs_t *connectIEs);
+
+/** \brief Decode function for DisconnectIEs ies.
+ * \param disconnectIEs Pointer to ASN1 structure in which data will be stored
+ * \param any_p Pointer to the ANY value to decode.
+ **/
+int rua_decode_disconnecties(
+ DisconnectIEs_t *disconnectIEs,
+ ANY_t *any_p);
+
+/** \brief Encode function for DisconnectIEs ies.
+ * \param disconnect Pointer to the ASN1 structure.
+ * \param disconnectIEs Pointer to the IES structure.
+ **/
+int rua_encode_disconnecties(
+ Disconnect_t *disconnect,
+ DisconnectIEs_t *disconnectIEs);
+
+/** \brief Decode function for ErrorIndicationIEs ies.
+ * \param errorIndicationIEs Pointer to ASN1 structure in which data will be stored
+ * \param any_p Pointer to the ANY value to decode.
+ **/
+int rua_decode_errorindicationies(
+ ErrorIndicationIEs_t *errorIndicationIEs,
+ ANY_t *any_p);
+
+/** \brief Encode function for ErrorIndicationIEs ies.
+ * \param errorIndication Pointer to the ASN1 structure.
+ * \param errorIndicationIEs Pointer to the IES structure.
+ **/
+int rua_encode_errorindicationies(
+ ErrorIndication_t *errorIndication,
+ ErrorIndicationIEs_t *errorIndicationIEs);
+
+/** \brief Decode function for ConnectionlessTransferIEs ies.
+ * \param connectionlessTransferIEs Pointer to ASN1 structure in which data will be stored
+ * \param any_p Pointer to the ANY value to decode.
+ **/
+int rua_decode_connectionlesstransferies(
+ ConnectionlessTransferIEs_t *connectionlessTransferIEs,
+ ANY_t *any_p);
+
+/** \brief Encode function for ConnectionlessTransferIEs ies.
+ * \param connectionlessTransfer Pointer to the ASN1 structure.
+ * \param connectionlessTransferIEs Pointer to the IES structure.
+ **/
+int rua_encode_connectionlesstransferies(
+ ConnectionlessTransfer_t *connectionlessTransfer,
+ ConnectionlessTransferIEs_t *connectionlessTransferIEs);
+
+/** \brief Decode function for DirectTransferIEs ies.
+ * \param directTransferIEs Pointer to ASN1 structure in which data will be stored
+ * \param any_p Pointer to the ANY value to decode.
+ **/
+int rua_decode_directtransferies(
+ DirectTransferIEs_t *directTransferIEs,
+ ANY_t *any_p);
+
+/** \brief Encode function for DirectTransferIEs ies.
+ * \param directTransfer Pointer to the ASN1 structure.
+ * \param directTransferIEs Pointer to the IES structure.
+ **/
+int rua_encode_directtransferies(
+ DirectTransfer_t *directTransfer,
+ DirectTransferIEs_t *directTransferIEs);
+
+#endif /* RUA_IES_DEFS_H_ */
+
diff --git a/asn1/utils/asn1tostruct.py b/asn1/utils/asn1tostruct.py
new file mode 100755
index 0000000..8364c27
--- /dev/null
+++ b/asn1/utils/asn1tostruct.py
@@ -0,0 +1,535 @@
+#!/usr/bin/env python2
+
+import re, os, sys, string
+import datetime
+import getopt
+import getpass
+
+version = "0.5osmo1"
+
+lines = ""
+iesDefs = {}
+ieofielist = {}
+outdir = './'
+
+filenames = []
+verbosity = 0
+prefix = ""
+
+FAIL = '\033[91m'
+WARN = '\033[93m'
+ENDC = '\033[0m'
+
+fileprefix = ""
+
+def printFail(string):
+ sys.stderr.write(FAIL + string + ENDC + "\n")
+
+def printWarning(string):
+ print WARN + string + ENDC
+
+def printDebug(string):
+ if verbosity > 0:
+ print string
+
+def outputHeaderToFile(f, filename):
+ now = datetime.datetime.now()
+ f.write("/*******************************************************************************\n")
+ f.write(" * This file had been created by asn1tostruct.py script v%s\n" % (version))
+ f.write(" * Please do not modify this file but regenerate it via script.\n")
+ f.write(" * Created on: %s by %s\n * from %s\n" % (str(now), getpass.getuser(), filenames))
+ f.write(" ******************************************************************************/\n")
+
+def lowerFirstCamelWord(word):
+ """ puts the first word in a CamelCase Word in lowercase.
+
+ I.e. CustomerID becomes customerID, XMLInfoTest becomes xmlInfoTest
+ """
+ newstr = ''
+ swapped = word.swapcase()
+ idx = 0
+
+ # if it's all-caps, return an all-lowered version
+ lowered = word.lower()
+
+ if swapped == lowered:
+ return lowered
+
+ for c in swapped:
+ if c in string.lowercase:
+ newstr += c
+ idx += 1
+ else:
+ break
+ if idx < 2:
+ newstr += word[idx:]
+ else:
+ newstr = newstr[:-1]+ word[idx-1:]
+
+ return newstr
+
+def usage():
+ print "Python parser for asn1 v%s" % (version)
+ print "Usage: python asn1tostruct.py [options]"
+ print "Available options:"
+ print "-d Enable script debug"
+ print "-f [file] Input file to parse"
+ print "-o [dir] Output files to given directory"
+ print "-p [pfx] Prefix all types with given prefix"
+ print "-h Print this help and return"
+
+try:
+ opts, args = getopt.getopt(sys.argv[1:], "df:ho:p:", ["debug", "file", "help", "outdir", "prefix"])
+except getopt.GetoptError as err:
+ # print help information and exit:
+ usage()
+ sys.exit(2)
+
+for o, a in opts:
+ if o in ("-f", "--file"):
+ filenames.append(a)
+ if o in ("-d", "--debug"):
+ verbosity = 1
+ if o in ("-o", "--outdir"):
+ outdir = a
+ if outdir.rfind('/') != len(outdir):
+ outdir += '/'
+ if o in ("-p", "--prefix"):
+ prefix = a
+ if o in ("-h", "--help"):
+ usage()
+ sys.exit(2)
+
+for filename in filenames:
+ file = open(filename, 'r')
+ for line in file:
+ # Removing any comment
+ if line.find('--') >= 0:
+ line = line[:line.find('--')]
+ # Removing any carriage return
+ lines += re.sub('\r', '', line)
+
+ for m in re.findall(r'([a-zA-Z0-9-]+)\s*::=\s+SEQUENCE\s+\(\s*SIZE\s*\(\s*\d+\s*\.\.\s*[0-9a-zA-Z-]+\s*\)\s*\)\s*OF\s+[a-zA-Z-]+\s*\{\s*\{\s*([0-9a-zA-Z-]+)\s*\}\s*\}', lines, re.MULTILINE):
+ ieofielist[m[0]] = m[1]
+ for m in re.findall(r'([a-zA-Z0-9-]+)\s*::=\s+E-RAB-IE-ContainerList\s*\{\s*\{\s*([a-zA-Z0-9-]+)\s*\}\s*\}', lines, re.MULTILINE):
+ ieofielist[m[0]] = m[1]
+
+ for i in re.findall(r'([a-zA-Z0-9-]+)\s+([A-Z0-9-]+)\s*::=\s*\{\s+([\,\|\{\}\t\n\.{3}\ \-a-zA-Z0-9]+)\s+}\n', lines, re.MULTILINE):
+ ies = []
+ maxLength = 0
+ # TODO: handle extensions
+ if i[1].find('EXTENSION') >= 0:
+ continue
+ if fileprefix == "":
+ fileprefix = i[1][:i[1].find('-')].lower()
+ for j in re.findall(r'\s*\{\s*([a-zA-Z0-9-\ \t]+)\s*\}\s*[\|,]*', i[2], re.MULTILINE):
+ for k in re.findall(r'ID\s*([a-zA-Z0-9\-]+)\s*CRITICALITY\s*([a-zA-Z0-9\-]+)\s+[A-Z]+\s+([a-zA-Z0-9\-]+)\s*PRESENCE\s*([a-zA-Z0-9\-]+)', j, re.MULTILINE):
+ printDebug("Got new ie for message " + i[0] + ": " + str(k))
+ if len(k[2]) > maxLength:
+ maxLength = len(k[2])
+ ies.append(k)
+
+ if len(ies) > 0:
+ iesDefs[i[0]] = { "length": maxLength, "ies": ies}
+ else:
+ printWarning("Didn't find any information element for message: " + i[0])
+
+if len(iesDefs) == 0:
+ printFail("No Information Element parsed, exiting")
+ sys.exit(0)
+
+f = open(outdir + fileprefix + '_ies_defs.h', 'w')
+outputHeaderToFile(f, filename)
+f.write("#include \"%s_common.h\"\n\n" % (fileprefix))
+f.write("#ifndef %s_IES_DEFS_H_\n#define %s_IES_DEFS_H_\n\n" % (fileprefix.upper(), fileprefix.upper()))
+
+for key in iesDefs:
+
+ if key not in ieofielist.values():
+ continue
+
+ for (i, j) in ieofielist.items():
+ if j == key:
+ break
+
+ f.write("typedef struct %sIEs_s {\n" % (prefix + re.sub('-', '_', i)))
+ f.write(" A_SEQUENCE_OF(struct %s_s) %s;\n" % (prefix + re.sub('IEs', '', re.sub('-', '_', ieofielist[i])), lowerFirstCamelWord(re.sub('IEs', '', re.sub('-', '_', ieofielist[i])))))
+ f.write("} %sIEs_t;\n\n" % (prefix + re.sub('-', '_', i)))
+
+for key in iesDefs:
+ keyupperunderscore = re.sub('-', '_', key.upper())
+ keylowerunderscore = re.sub('-', '_', key.lower())
+ shift = 0
+
+ if len(iesDefs[key]["ies"]) == 0:
+ continue
+
+ # Presence mask
+ for ie in iesDefs[key]["ies"]:
+ ieupperunderscore = re.sub('-', '_', ie[2].upper())
+ if ie[3] == "optional" or ie[3] == "conditional":
+ f.write("#define {0:<{pad}} {1}\n".format("%s_%s%s_PRESENT" % (keyupperunderscore, prefix, ieupperunderscore), "(1 << %d)" % shift,
+ pad=iesDefs[key]["length"] + len(keyupperunderscore) + 9))
+ shift += 1
+ if (shift > 0):
+ f.write("\n")
+
+ f.write("typedef struct %s_s {\n" % (prefix + re.sub('-', '_', key)))
+ if (shift > 0):
+ f.write(" {0:<{pad}} {1};\n".format("uint16_t", "presenceMask", pad=iesDefs[key]["length"] + 2))
+ for ie in iesDefs[key]["ies"]:
+ ieunderscore = prefix + re.sub('-', '_', ie[2])
+ iename = re.sub('id-', '', ie[0])
+ ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
+ if ie[2] in ieofielist:
+ f.write(" %sIEs_t %s;" % (re.sub('-', '_', ie[2]), ienameunderscore))
+ else:
+ f.write(" {0:<{pad}} {1};".format("%s_t" % ieunderscore, ienameunderscore, pad=iesDefs[key]["length"] + 2))
+ if ie[3] == "optional":
+ f.write(" ///< Optional field")
+ elif ie[3] == "conditional":
+ f.write(" ///< Conditional field")
+ f.write("\n")
+
+ f.write("} %s_t;\n\n" % (prefix + re.sub('-', '_', key)))
+
+f.write("typedef struct %s_message_s {\n" % (fileprefix))
+f.write(" uint8_t procedureCode;\n")
+f.write(" uint8_t criticality;\n")
+f.write(" uint8_t direction;\n")
+f.write(" union {\n")
+
+messageList = iesDefs.keys()
+messageList.sort()
+for message in messageList:
+ if message in ieofielist.values():
+ continue
+ if len(iesDefs[message]["ies"]) == 0:
+ continue
+ f.write(" %s_t %s;\n" % (prefix + re.sub('-', '_', message), lowerFirstCamelWord(re.sub('-', '_', message))))
+f.write(" } msg;\n")
+f.write("} %s_message;\n\n" % (fileprefix))
+
+for key in iesDefs:
+ if key in ieofielist.values():
+ continue
+ structName = re.sub('ies', '', key)
+ asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
+ asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)
+ keylowerunderscore = re.sub('-', '_', key.lower())
+ firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
+ f.write("/** \\brief Decode function for %s ies.\n" % (key))
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" * \\param %s Pointer to ASN1 structure in which data will be stored\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" * \\param any_p Pointer to the ANY value to decode.\n")
+ f.write(" **/\n")
+ f.write("int %s_decode_%s(\n" % (fileprefix, keylowerunderscore))
+
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" %s_t *%s,\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" ANY_t *any_p);\n\n")
+
+ if len(iesDefs[key]["ies"]) == 0:
+ continue
+
+ f.write("/** \\brief Encode function for %s ies.\n" % (key))
+ f.write(" * \\param %s Pointer to the ASN1 structure.\n" % (firstlower))
+ f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" **/\n")
+ f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
+ f.write(" %s_t *%s,\n" % (asn1cStruct, firstlower))
+ f.write(" %s_t *%s);\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+
+for key in iesDefs:
+ if key not in ieofielist.values():
+ continue
+ asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))
+ asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)
+ firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
+ f.write("/** \\brief Encode function for %s ies.\n" % (key))
+ f.write(" * \\param %s Pointer to the ASN1 structure.\n" % (firstlower))
+ f.write(" * \\param %s Pointer to the IES structure.\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" **/\n")
+ f.write("int %s_encode_%s(\n" % (fileprefix, firstlower.lower()))
+ f.write(" %s_t *%s,\n" % (asn1cStruct, firstlower))
+ f.write(" %sIEs_t *%sIEs);\n\n" % (asn1cStruct, firstlower))
+ f.write("/** \\brief Decode function for %s ies.\n" % (key))
+ f.write(" * \\param any_p Pointer to the ANY value to decode.\n")
+ f.write(" * \\param callback Callback function called when any_p is successfully decoded.\n")
+ f.write(" **/\n")
+ f.write("int %s_decode_%s(\n" % (fileprefix, firstlower.lower()))
+ f.write(" %sIEs_t *%sIEs,\n" % (asn1cStruct, firstlower))
+ f.write(" %s_t *%s);\n\n" % (asn1cStruct, lowerFirstCamelWord(asn1cStruct)))
+
+for key in iesDefs:
+ keyupperunderscore = re.sub('-', '_', key.upper())
+ keylowerunderscore = re.sub('-', '_', key.lower())
+ structName = re.sub('ies', '', key)
+
+ if len(iesDefs[key]["ies"]) == 0:
+ continue
+
+ f.write("int %s_free_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" %s_t *%s);\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+f.write("#endif /* %s_IES_DEFS_H_ */\n\n" % (fileprefix.upper()))
+
+#Generate Decode functions
+f = open(outdir + fileprefix + '_decoder.c', 'w')
+outputHeaderToFile(f, filename)
+f.write("#include \"%s_common.h\"\n#include \"%s_ies_defs.h\"\n\n" % (fileprefix, fileprefix))
+for key in iesDefs:
+ if key in ieofielist.values():
+ continue
+ structName = re.sub('ies', '', key)
+ asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
+ ielistname = re.sub('UE', 'ue', asn1cStruct)
+ ielistnamefirstlower = ielistname[:1].lower() + ielistname[1:]
+ asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]
+ keyName = re.sub('-', '_', key)
+ keyupperunderscore = keyName.upper()
+ firstlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
+ asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)
+
+ iesaccess = ""
+ if key not in ieofielist.values():
+ iesaccess = "%s_ies." % (firstlower)
+
+ f.write("int %s_decode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" %s_t *%s,\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" ANY_t *any_p) {\n\n")
+
+ f.write(" %s_t *%s_p = NULL;\n" % (asn1cStruct, asn1cStructfirstlower))
+ f.write(" int i, decoded = 0;\n")
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" int tempDecoded = 0;\n")
+
+ f.write(" assert(any_p != NULL);\n")
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" assert(%s != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', key))))
+ f.write(" memset(%s, 0, sizeof(%s_t));\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), prefix + re.sub('-', '_', key)))
+
+ f.write(" %s_DEBUG(\"Decoding message %s (%%s:%%d)\\n\", __FILE__, __LINE__);\n\n" % (fileprefix.upper(), prefix + re.sub('-', '_', keyName)))
+ f.write(" ANY_to_type_aper(any_p, &asn_DEF_%s, (void**)&%s_p);\n\n" % (asn1cStruct, asn1cStructfirstlower))
+ f.write(" for (i = 0; i < %s_p->%slist.count; i++) {\n" % (asn1cStructfirstlower, iesaccess))
+ f.write(" %sIE_t *ie_p;\n" % (prefix))
+ f.write(" ie_p = %s_p->%slist.array[i];\n" % (asn1cStructfirstlower, iesaccess))
+ f.write(" switch(ie_p->id) {\n")
+ for ie in iesDefs[key]["ies"]:
+ iename = re.sub('id-', '', ie[0])
+ ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
+ ienameunderscorefirstlower = lowerFirstCamelWord(ienameunderscore)
+ ietypesubst = prefix + re.sub('-', '', ie[2])
+ ietypeunderscore = prefix + re.sub('-', '_', ie[2])
+ ieupperunderscore = prefix + re.sub('-', '_', ie[2]).upper()
+ if ie[3] == "optional":
+ f.write(" /* Optional field */\n")
+ elif ie[3] == "conditional":
+ f.write(" /* Conditional field */\n")
+ f.write(" case %sProtocolIE_ID_%s:\n" % (prefix, re.sub('-', '_', ie[0])))
+ f.write(" {\n")
+ f.write(" %s_t *%s_p = NULL;\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
+ if ie[3] != "mandatory":
+ f.write(" %s->presenceMask |= %s_%s_PRESENT;\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
+ f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
+ f.write(" if (tempDecoded < 0) {\n")
+ f.write(" %s_DEBUG(\"Decoding of IE %s failed\\n\");\n" % (fileprefix.upper(), ienameunderscore))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" decoded += tempDecoded;\n")
+ f.write(" if (asn1_xer_print)\n")
+ f.write(" xer_fprint(stdout, &asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
+ if ie[2] in ieofielist.keys():
+ f.write(" if (%s_decode_%s(&%s->%s, %s_p) < 0) {\n" % (fileprefix, ietypeunderscore.lower(), lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst)))
+ f.write(" %s_DEBUG(\"Decoding of encapsulated IE %s failed\\n\");\n" % (fileprefix.upper(), lowerFirstCamelWord(ietypesubst)))
+ f.write(" ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
+ else:
+ f.write(" memcpy(&%s->%s, %s_p, sizeof(%s_t));\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst), ietypeunderscore))
+ f.write(" FREEMEM(%s_p);\n" % (lowerFirstCamelWord(ietypesubst)))
+ f.write(" } break;\n")
+ f.write(" default:\n")
+ f.write(" %s_DEBUG(\"Unknown protocol IE id (%%d) for message %s\\n\", (int)ie_p->id);\n" % (fileprefix.upper(), re.sub('-', '_', structName.lower())))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" }\n")
+ f.write(" ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (asn1cStruct, asn1cStructfirstlower))
+ f.write(" return decoded;\n")
+ f.write("}\n\n")
+
+for key in iesDefs:
+ keyupperunderscore = re.sub('-', '_', key.upper())
+ keylowerunderscore = re.sub('-', '_', key.lower())
+ structName = re.sub('ies', '', key)
+
+ if len(iesDefs[key]["ies"]) == 0:
+ continue
+
+ f.write("int %s_free_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
+ if len(iesDefs[key]["ies"]) != 0:
+ f.write(" %s_t *%s) {\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+
+ for ie in iesDefs[key]["ies"]:
+ ietypeunderscore = prefix + re.sub('-', '_', ie[2])
+ ieupperunderscore = prefix + re.sub('-', '_', ie[2]).upper()
+ if ie[3] != "mandatory":
+ if ie[3] == "optional":
+ f.write(" /* Optional field */\n")
+ elif ie[3] == "conditional":
+ f.write(" /* Conditional field */\n")
+ f.write(" if ((%s->presenceMask & %s_%s_PRESENT)\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
+ f.write(" == %s_%s_PRESENT) \n " % (keyupperunderscore, ieupperunderscore))
+
+ ieunderscore = prefix + re.sub('-', '_', ie[2])
+ iename = re.sub('id-', '', ie[0])
+ ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
+ f.write(" ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_%s, &%s->%s);\n" % (ietypeunderscore, lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore))
+ f.write("}\n\n")
+
+for key in iesDefs:
+ if key not in ieofielist.values():
+ continue
+
+ keyname = re.sub('IEs', '', re.sub('Item', 'List', key))
+
+ f.write("int %s_decode_%s(\n" % (fileprefix, re.sub('-', '_', keyname).lower()))
+ f.write(" %sIEs_t *%sIEs,\n" % (prefix + re.sub('-', '_', keyname), lowerFirstCamelWord(re.sub('-', '_', keyname))))
+ f.write(" %s_t *%s) {\n\n" % (prefix + re.sub('-', '_', keyname), lowerFirstCamelWord(re.sub('-', '_', keyname))))
+ f.write(" int i, decoded = 0;\n")
+ f.write(" int tempDecoded = 0;\n\n")
+ f.write(" for (i = 0; i < %s->list.count; i++) {\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
+ f.write(" %sIE_t *ie_p = %s->list.array[i];\n" % (prefix, lowerFirstCamelWord(re.sub('-', '_', keyname))))
+ f.write(" switch (ie_p->id) {\n")
+ for ie in iesDefs[key]["ies"]:
+ iename = re.sub('id-', '', ie[0])
+ ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
+ f.write(" case ProtocolIE_ID_%s:\n" % (re.sub('-', '_', ie[0])))
+ f.write(" {\n")
+ f.write(" %s_t *%s_p;\n" % (prefix + re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" if (tempDecoded < 0 || %s_p == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" %s_DEBUG(\"Decoding of IE %s for message %s failed\\n\");\n" % (fileprefix.upper(), ienameunderscore, re.sub('-', '_', keyname)))
+ f.write(" if (%s_p)\n" % (lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" decoded += tempDecoded;\n")
+ f.write(" if (asn1_xer_print)\n")
+ f.write(" xer_fprint(stdout, &asn_DEF_%s, %s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" ASN_SEQUENCE_ADD(&%sIEs->%s, %s_p);\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname)),
+ re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key))), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
+ f.write(" } break;\n")
+ f.write(" default:\n")
+ f.write(" %s_DEBUG(\"Unknown protocol IE id (%%d) for message %s\\n\", (int)ie_p->id);\n" % (fileprefix.upper(), re.sub('-', '_', structName.lower())))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" }\n")
+ f.write(" return decoded;\n")
+ f.write("}\n\n")
+
+
+#Generate IES Encode functions
+f = open(outdir + fileprefix + '_encoder.c', 'w')
+outputHeaderToFile(f,filename)
+f.write("#include \"%s_common.h\"\n" % (fileprefix))
+f.write("#include \"%s_ies_defs.h\"\n\n" % (fileprefix))
+for key in iesDefs:
+ if key in ieofielist.values():
+ continue
+
+ structName = re.sub('ies', '', key)
+ asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
+ firstwordlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
+ asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)
+ asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]
+
+ iesaccess = ""
+ if key not in ieofielist.values():
+ iesaccess = "%s_ies." % (firstwordlower)
+
+ keyName = re.sub('-', '_', key)
+ keyupperunderscore = keyName.upper()
+ # No IE to encode...
+ if len(iesDefs[key]["ies"]) == 0:
+ continue
+
+ f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))
+ f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
+ f.write(" %s_t *%s) {\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
+
+ f.write(" %sIE_t *ie;\n\n" % (prefix))
+
+ for ie in iesDefs[key]["ies"]:
+ iename = re.sub('-', '_', re.sub('id-', '', ie[0]))
+ ienameunderscore = prefix + re.sub('-', '_', iename)
+ ienamefirstwordlower = lowerFirstCamelWord(iename)
+ ieupperunderscore = prefix + re.sub('-', '_', ie[2]).upper()
+ ietypeunderscore = prefix + re.sub('-', '_', ie[2])
+ if ie[3] != "mandatory":
+ if ie[3] == "optional":
+ f.write(" /* Optional field */\n")
+ elif ie[3] == "conditional":
+ f.write(" /* Conditional field */\n")
+ f.write(" if ((%s->presenceMask & %s_%s_PRESENT)\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
+ f.write(" == %s_%s_PRESENT) {\n" % (keyupperunderscore, ieupperunderscore))
+ f.write(" if ((ie = %s_new_ie(%sProtocolIE_ID_%s,\n" % (fileprefix, prefix, re.sub('-', '_', ie[0])))
+ f.write(" %sCriticality_%s,\n" % (prefix, ie[1]))
+ f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
+ f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n" % (firstwordlower, iesaccess))
+ f.write(" }\n\n")
+ else:
+ if ie[2] in ieofielist.keys():
+ f.write(" %s_t %s;\n\n" % (prefix + ietypeunderscore, ienamefirstwordlower))
+ f.write(" memset(&%s, 0, sizeof(%s_t));\n" % (ienamefirstwordlower, ietypeunderscore))
+ f.write("\n")
+ f.write(" if (%s_encode_%s(&%s, &%s->%s) < 0) return -1;\n" % (fileprefix, ietypeunderscore.lower(), ienamefirstwordlower, lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
+ f.write(" if ((ie = %s_new_ie(%sProtocolIE_ID_%s,\n" % (fileprefix, prefix, re.sub('-', '_', ie[0])))
+ f.write(" %sCriticality_%s,\n" % (prefix, ie[1]))
+ f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
+ if ie[2] in ieofielist.keys():
+ f.write(" &%s)) == NULL) {\n" % (ienamefirstwordlower))
+ else:
+ f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n\n" % (firstwordlower, iesaccess))
+ if ie[2] in ieofielist.keys():
+ f.write(" ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_%s, &%s);\n\n" % (ietypeunderscore, ienamefirstwordlower))
+
+ f.write(" return 0;\n")
+ f.write("}\n\n")
+
+for (key, value) in iesDefs.items():
+ if key not in ieofielist.values():
+ continue
+
+ ie = value["ies"][0]
+ ietypeunderscore = re.sub('-', '_', ie[2])
+ asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))
+ asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)
+ firstwordlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))
+
+ for (i, j) in ieofielist.items():
+ if j == key:
+ break
+ f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', i).lower()))
+ f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
+ f.write(" %sIEs_t *%sIEs) {\n\n" % (prefix + re.sub('-', '_', i), lowerFirstCamelWord(re.sub('-', '_', i))))
+ f.write(" int i;\n")
+
+ f.write(" %sIE_t *ie;\n\n" % (prefix))
+
+ f.write(" for (i = 0; i < %sIEs->%s.count; i++) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
+ f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
+ f.write(" Criticality_%s,\n" % (ie[1]))
+ f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
+ f.write(" %sIEs->%s.array[i])) == NULL) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
+ f.write(" return -1;\n")
+ f.write(" }\n")
+ f.write(" ASN_SEQUENCE_ADD(&%s->list, ie);\n" % (firstwordlower))
+ f.write(" }\n")
+ f.write(" return 0;\n")
+ f.write("}\n\n")
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..ff0501a
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,64 @@
+AC_INIT([osmo-iuh],
+ m4_esyscmd([./git-version-gen .tarball-version]),
+ [openbsc@lists.osmocom.org])
+
+dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
+AC_CONFIG_AUX_DIR([.])
+
+LT_INIT
+
+AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip 1.9 tar-ustar])
+dnl tar-ustar: some asn1 filenames surpass the 99 char limit of tar, so we need
+dnl to make tar allow longer filenames.
+
+AC_CONFIG_TESTDIR(src/tests)
+
+dnl kernel style compile messages
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+dnl include release helper
+RELMAKE='-include osmo-release.mk'
+AC_SUBST([RELMAKE])
+
+dnl checks for programs
+AC_PROG_MAKE_SET
+AC_PROG_MKDIR_P
+AC_PROG_CC
+AC_PROG_INSTALL
+
+dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
+AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
+if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
+ AC_MSG_WARN([You need to install pkg-config])
+fi
+PKG_PROG_PKG_CONFIG([0.20])
+
+PKG_CHECK_MODULES(OSMOCORE, libosmocore >= 0.10.0)
+PKG_CHECK_MODULES(OSMOGSM, libosmogsm >= 0.10.0)
+PKG_CHECK_MODULES(OSMOVTY, libosmovty >= 0.10.0)
+PKG_CHECK_MODULES(OSMONETIF, libosmo-netif >= 0.1.0)
+PKG_CHECK_MODULES(OSMOSIGTRAN, libosmo-sigtran >= 0.8.0)
+PKG_CHECK_MODULES(ASN1C, libasn1c >= 0.9.28)
+
+AC_CONFIG_MACRO_DIR([m4])
+
+dnl checks for header files
+AC_HEADER_STDC
+
+AC_OUTPUT(
+ libosmo-ranap.pc
+ src/Makefile
+ src/hnbap/Makefile
+ src/ranap/Makefile
+ src/rua/Makefile
+ src/tests/Makefile
+ Makefile
+ include/Makefile
+ include/osmocom/Makefile
+ include/osmocom/hnbap/Makefile
+ include/osmocom/ranap/Makefile
+ include/osmocom/rua/Makefile
+ include/osmocom/iuh/Makefile
+ doc/Makefile
+ doc/examples/Makefile
+ )
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
new file mode 100755
index 0000000..cda0e2c
--- /dev/null
+++ b/contrib/jenkins.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+set -ex
+
+base="$PWD"
+deps="$base/deps"
+inst="$deps/install"
+export deps inst
+
+mkdir "$deps" || true
+rm -rf "$inst"
+
+verify_value_string_arrays_are_terminated.py $(find . -name "*.[hc]")
+
+export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
+export LD_LIBRARY_PATH="$inst/lib"
+
+osmo-build-dep.sh libosmocore
+osmo-build-dep.sh libosmo-abis
+osmo-build-dep.sh libosmo-netif
+osmo-build-dep.sh libosmo-sccp
+osmo-build-dep.sh libasn1c
+
+# the asn1c binary is used by the 'regen' target below
+osmo-build-dep.sh asn1c aper-prefix
+
+set +x
+echo
+echo
+echo
+echo " =============================== osmo-iuh ==============================="
+echo
+set -x
+
+autoreconf --install --force
+./configure
+
+# Verify that checked-in asn1 code is identical to regenerated asn1 code
+PATH="$inst/bin:$PATH" $MAKE $PARALLEL_MAKE -C src regen
+
+# attempt to settle the file system
+sleep 1
+
+git status
+git diff | cat
+
+if ! git diff-files --quiet ; then
+ echo "ERROR: 'make -C src regen' does not match committed asn1 code"
+ exit 1
+fi
+
+$MAKE $PARALLEL_MAKE
+$MAKE check \
+ || cat-testlogs.sh
+$MAKE distcheck \
+ || cat-testlogs.sh
diff --git a/contrib/systemd/osmo-hnbgw.service b/contrib/systemd/osmo-hnbgw.service
new file mode 100644
index 0000000..7aca29f
--- /dev/null
+++ b/contrib/systemd/osmo-hnbgw.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Osmocom Home Nodeb Gateway (OsmoHNBGW)
+
+[Service]
+Type=simple
+Restart=always
+ExecStart=/usr/bin/osmo-hnbgw -c /etc/osmocom/osmo-hnbgw.cfg
+RestartSec=2
+
+[Install]
+WantedBy=multi-user.target
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..81a25e2
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,12 @@
+SUBDIRS = examples
+
+EXTRA_DIST = \
+ hnb_cs_lu.msc \
+ hnb_cs_mo_call.msc \
+ hnb_cs_mo_sms.msc \
+ hnb_cs_mt_call.msc \
+ hnb_cs_mt_sms.msc \
+ hnb_ps_lu.msc \
+ hnb_ps_pdp_act.msc \
+ protocols_around_hnbgw.txt \
+ README
diff --git a/doc/README b/doc/README
new file mode 100644
index 0000000..580fa8f
--- /dev/null
+++ b/doc/README
@@ -0,0 +1,2 @@
+sudo apt-get install mscgen
+mscgen -T svg hnb_cs_lu.msc
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
new file mode 100644
index 0000000..8f14fdc
--- /dev/null
+++ b/doc/examples/Makefile.am
@@ -0,0 +1,23 @@
+
+CFG_FILES = find $(srcdir) -name '*.cfg*' | sed -e 's,^$(srcdir),,'
+
+dist-hook:
+ for f in $$($(CFG_FILES)); do \
+ j="$(distdir)/$$f" && \
+ mkdir -p "$$(dirname $$j)" && \
+ $(INSTALL_DATA) $(srcdir)/$$f $$j; \
+ done
+
+install-data-hook:
+ for f in $$($(CFG_FILES)); do \
+ j="$(DESTDIR)$(docdir)/examples/$$f" && \
+ mkdir -p "$$(dirname $$j)" && \
+ $(INSTALL_DATA) $(srcdir)/$$f $$j; \
+ done
+
+uninstall-hook:
+ @$(PRE_UNINSTALL)
+ for f in $$($(CFG_FILES)); do \
+ j="$(DESTDIR)$(docdir)/examples/$$f" && \
+ $(RM) $$j; \
+ done
diff --git a/doc/examples/osmo-hnbgw.cfg b/doc/examples/osmo-hnbgw.cfg
new file mode 100644
index 0000000..cba7f51
--- /dev/null
+++ b/doc/examples/osmo-hnbgw.cfg
@@ -0,0 +1,25 @@
+!
+! OsmoHNBGW (0) configuration saved from vty
+!!
+!
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category 1
+ logging timestamp 1
+ logging print extended-timestamp 1
+ logging level all debug
+ logging level lglobal notice
+ logging level llapd notice
+ logging level linp notice
+ logging level lmux notice
+ logging level lmi notice
+ logging level lmib notice
+ logging level lsms notice
+ logging level lctrl notice
+ logging level lgtp notice
+ logging level lstats notice
+hnbgw
+ iuh
+ local-ip 10.23.24.1
+ hnbap-allow-tmsi 1
diff --git a/doc/hnb_cs_lu.msc b/doc/hnb_cs_lu.msc
new file mode 100644
index 0000000..01546f6
--- /dev/null
+++ b/doc/hnb_cs_lu.msc
@@ -0,0 +1,45 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (MM LOC UPD REQ)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (MM LOC UPD REQ))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (MM LOC UPD REQ))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in LU or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (MM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (MM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (MM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (MM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM LOC UPD ACC))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (MM LOC UPD ACC))" ];
+ hnb >> ue [ label = "RRC (MM LOC UPD ACC)" ];
+}
diff --git a/doc/hnb_cs_mo_call.msc b/doc/hnb_cs_mo_call.msc
new file mode 100644
index 0000000..a9253c0
--- /dev/null
+++ b/doc/hnb_cs_mo_call.msc
@@ -0,0 +1,75 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (CM SERV REQ)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (CM SERV REQ))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (CM SERV REQ))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in CM or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (MM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (MM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (MM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (MM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnb >> ue [ label = "RRC (CM SERV ACC)" ];
+
+ ue box ue [ label = "subscriber A dials a call" ];
+ ue => hnb [ label = "RRC (CC SETUP)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CC SETUP))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CC SETUP))" ];
+
+ cn box cn [ label = "Signalling towards B subscriber via ISUP, SIP, ..." ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CC ALERTING))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CC ALERTING))" ];
+ hnb => ue [ label = "RC (CC ALERTING)" ];
+
+ --- [ label = "Assignment of Voice Channel" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP RAB Assign Cmd)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP RAB Assign Cmd)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP RAB Assign Rsp)" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP RAB Assign Rsp)" ];
+
+ cn box cn [ label = "subscriber B picks up the ringing call" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CC CALL CONF))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CC CALL CONF))" ];
+ hnb => ue [ label = "RRC (CC CALL CONF)" ];
+
+ cn box ue [ label = "Voice channel open" ];
+
+ ue box ue [ label = "subscriber A hangs up" ];
+ ue => hnb [ label = "RRC (CC DISCONNECT)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTranfer (CC DISCONNECT))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTranfer (CC DISCONNECT))" ];
+
+ cn box hnb [ label = "RAB Release or Iu Release" ];
+}
diff --git a/doc/hnb_cs_mo_sms.msc b/doc/hnb_cs_mo_sms.msc
new file mode 100644
index 0000000..07013f1
--- /dev/null
+++ b/doc/hnb_cs_mo_sms.msc
@@ -0,0 +1,67 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ ue box ue [ label = "subscriber A sends text message" ];
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (CM SERV REQ)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (CM SERV REQ))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (CM SERV REQ))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in CM or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (MM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (MM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (MM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (MM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnb >> ue [ label = "RRC (CM SERV ACC)" ];
+
+ ue => hnb [ label = "RRC (CP-DATA (RP-DATA (SMS SUBMIT)))" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS-SUBMIT))))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS-SUBMIT))))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CP-ACK)" ];
+ hnb => ue [ label = "RRC (CP-ACK)" ];
+
+ cn box cn [ label = "MAP MO Forward SM to IWMSC / SMSC" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CP-DATA (RP-ACK)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-ACK)" ];
+ hnb => ue [ label = "RRC (CP-DATA (RP-ACK)" ];
+
+ ue => hnb [ label = "RRC (CP-ACK)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CP-ACK))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK))" ];
+
+ cn box hnb [ label = "RAB Release or Iu Release" ];
+}
diff --git a/doc/hnb_cs_mt_call.msc b/doc/hnb_cs_mt_call.msc
new file mode 100644
index 0000000..0a4c281
--- /dev/null
+++ b/doc/hnb_cs_mt_call.msc
@@ -0,0 +1,79 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ cn box cn [ label = "subscriber A dials a call; signalling arrives at CN" ];
+
+ cn => hnbgw [ label = "SCCP UDT (RANAP Paging Command)" ];
+ hnbgw => hnb [ label = "RUA ConnectionlessTransfer (RANAP Paging Command)" ];
+ hnb => ue [ label = "RRC Paging" ];
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (CM PAGING RESP)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (CM PAGING RESP))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (CM PAGING RESP))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in CM or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (MM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (MM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (MM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (MM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (CM SERV ACC))" ];
+ hnb >> ue [ label = "RRC (CM SERV ACC)" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CC SETUP))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CC SETUP))" ];
+ hnb => ue [ label = "RRC (CC SETUP)" ];
+
+ ue => hnb [ label = "RC (CC ALERTING)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CC ALERTING))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CC ALERTING))" ];
+ cn box cn [ label = "Signalling towards A subscriber via ISUP, SIP, ..." ];
+
+ --- [ label = "Assignment of Voice Channel" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP RAB Assign Cmd)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP RAB Assign Cmd)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP RAB Assign Rsp)" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP RAB Assign Rsp)" ];
+
+ ue => hnb [ label = "RRC (CC CONNECT)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CC CONNECT))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CC CONNECT))" ];
+
+ cn box ue [ label = "Voice channel open" ];
+
+ ue box ue [ label = "subscriber B hangs up" ];
+ ue => hnb [ label = "RRC (CC DISCONNECT)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTranfer (CC DISCONNECT))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTranfer (CC DISCONNECT))" ];
+
+ cn box hnb [ label = "RAB Release or Iu Release" ];
+}
diff --git a/doc/hnb_cs_mt_sms.msc b/doc/hnb_cs_mt_sms.msc
new file mode 100644
index 0000000..8a1b808
--- /dev/null
+++ b/doc/hnb_cs_mt_sms.msc
@@ -0,0 +1,67 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ cn box cn [ label = "subscriber A send a SMS; signalling arrives at CN" ];
+
+ cn => hnbgw [ label = "SCCP UDT (RANAP Paging Command)" ];
+ hnbgw => hnb [ label = "RUA ConnectionlessTransfer (RANAP Paging Command)" ];
+ hnb => ue [ label = "RRC Paging" ];
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (CM PAGING RESP)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (CM PAGING RESP))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (CM PAGING RESP))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in CM or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (MM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (MM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (MM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (MM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (MM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (MM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (MM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS DELIVER))))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-DATA (SMS DELIVER))))" ];
+ hnb => ue [ label = "RRC (CP-DATA (RP-DATA (SMS DELIVER)))" ];
+
+ ue => hnb [ label = "RRC (CP-ACK)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CP-ACK))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK))" ];
+
+ ue => hnb [ label = "RRC (CP-DATA (RP-ACK)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (CP-DATA (RP-ACK)))" ];
+ hnbgw => cn [ label = "SCCP DT1 (RANAP DirectTransfer (CP-DTA (RP-ACK)))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (CP-ACK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (CP-ACK))" ];
+ hnb => ue [ label = "RRC (CP-ACK)" ];
+
+ cn box cn [ label = "MAP MT Forward SM to GMSC/SMSC" ];
+
+ cn box hnb [ label = "RAB Release or Iu Release" ];
+}
diff --git a/doc/hnb_ps_lu.msc b/doc/hnb_ps_lu.msc
new file mode 100644
index 0000000..de2dce8
--- /dev/null
+++ b/doc/hnb_ps_lu.msc
@@ -0,0 +1,45 @@
+msc {
+ hscale = "3";
+ ue,hnb,hnbgw,cn;
+
+ ue box hnb [ label = "Radio Channel Establishment" ];
+ ue => hnb [ label = "RRC (GMM IMSI ATTACH REQ)" ] ;
+ hnb => hnbgw [ label = "RUA CONNECT (RANAP Initial UE Msg (GMM IMSI ATTACH REQ))" ];
+ hnbgw => cn [ label = "SCCP CR (RANAP Initial UE Msg (GMM IMSI ATTACH REQ))" ];
+ cn >> hnbgw [ label = "SCCP CC" ];
+
+ --- [ label = "Optional retrieval of IMSI (if not given in LU or retrived from VLR by TMSI)" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (GMM IDENTITY REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (GMM IDENTITY REQ))" ];
+ hnb => ue [ label = "RRC (GMM IDENTITY REQ)" ];
+ ue >> hnb [ label = "RRC (GMM IDENTITY RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (GMM IDENTITY RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (GMM IDENTITY RESP))" ];
+
+ --- [ label = "Mandatory activation of Integrity Protection" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK))" ];
+
+ cn => hnbgw [ label = "SCCP DT1 (RANAP CommonID)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP CommonID)" ];
+
+ --- [ label = "Optional Authentication" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (GMM AUTH REQ))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP DirectTransfer (GMM AUTH REQ))" ];
+ hnb => ue [ label = "RRC (GMM AUTH REQ)" ];
+ ue >> hnb [ label = "RRC (GMM AUTH RESP)" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP DirectTransfer (GMM AUTH RESP))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP DirectTransfer (GMM AUTH RESP))" ];
+
+ --- [ label = "Optional activation of Encryption" ];
+ cn => hnbgw [ label = "SCCP DT1 (RANAP SecurityModeCommand (IK+CK))" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP SecurityModeCommand (IK+CK))" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP SecurityModeResponse (IK+CK))" ];
+ hnbgw >> cn [ label = "SCCP DT1 (RANAP SecurityModeResponse (IK+CK))" ];
+
+ cn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (GMM IMSI ATTACH ACC))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (GMM IMSI ATTACH ACC))" ];
+ hnb >> ue [ label = "RRC (GMM IMSI ATTACH ACC)" ];
+}
diff --git a/doc/hnb_ps_pdp_act.msc b/doc/hnb_ps_pdp_act.msc
new file mode 100644
index 0000000..2f2f3cf
--- /dev/null
+++ b/doc/hnb_ps_pdp_act.msc
@@ -0,0 +1,25 @@
+msc {
+ hscale="3", wordwraparcs="1";
+ ue,hnb,hnbgw,sgsn,ggsn;
+
+ ue box hnb [ label = "Radio Channel Establishment, possibly already done by IMSI ATTACH / RAU" ];
+ ue => hnb [ label = "RRC (SM PDP CTX ACT REQ)" ];
+ hnb => hnbgw [ label = "RUA DT (RANAP DirectTransfer (SM PDP CTX ACT REQ))" ];
+ hnbgw => sgsn [ label = "SCCP DT1 (RANAP DirectTransfer (SM PDP CTX ACT REQ))" ];
+
+ sgsn => ggsn [ label = "GTP-C PDP CTX ACT REQ" ];
+ ggsn >> sgsn [ label = "GTP-C PDP CTX ACT ACK (IP+TEI of GGSN)" ];
+
+ sgsn => hnbgw [ label = "SCCP DT1 (RANAP Activate RAB Req (IP+TEI of GGSN)" ];
+ hnbgw => hnb [ label = "RUA DT (RANAP Activate RAB Req (IP+TEI of GGSN)" ];
+ hnb box ue [ label = "RAB Establishment" ];
+ hnb >> hnbgw [ label = "RUA DT (RANAP Activate RAB Resp (IP + TEI of HNB)" ];
+ hnbgw >> sgsn [ label = "SCCP DT1 (RANAP Activate RAB Resp (IP + TEI of HNB)" ];
+
+ sgsn => ggsn [ label = "GTP-C PDP CTX MOD REQ (IP + TEI of HNB)" ];
+ ggsn >> sgsn [ label = "GTP-C PDP CTX MOD RESP" ];
+
+ sgsn >> hnbgw [ label = "SCCP DT1 (RANAP DirectTransfer (SM PDP CTX ACT ACK))" ];
+ hnbgw >> hnb [ label = "RUA DT (RANAP DirectTransfer (SM PDP CTX ACT ACK))" ];
+ hnb >> ue [ label = "RRC (SM PDP CTX ACT ACK))" ];
+}
diff --git a/doc/protocols_around_hnbgw.txt b/doc/protocols_around_hnbgw.txt
new file mode 100644
index 0000000..3eef155
--- /dev/null
+++ b/doc/protocols_around_hnbgw.txt
@@ -0,0 +1,60 @@
+Protocols Around the Home Node B Gateway
+========================================
+
+ +--------+
+ ,-->| Osmo |
+ / | MGCPGW |
+ | | |<--MGCP
+ | +--------+ \
+ / |
+ +------------+<--RTP +--------+ `->+----------+
+ UE <-->| hNodeB | | Osmo | | OsmoMSC | +------+
+ UE <-->| femto cell |<--Iuh---->| HNB-GW |<--IuCS-->| | | Osmo |
+ | | | | | (VLR)|<-GSUP->| HLR |
+ | | | | +----------+ GSUP->+------+
+ +------------+<--GTP-U | | /
+ \ | | +------+<---' +------+
+ | | |<--IuPS-->| Osmo |<--GTP-C--->| Open |
+ | +--------+ | SGSN | GTP-U--->| GGSN |
+ | +------+ / +------+
+ \_______________________________/
+
+
+
+ Iuh IuCS/IuPS
+
+NAS +----+----+ +----+----+
+Non-Access Stratum | CC | MM | | CC | MM |
+- - - - - - - - - - - +----+----+-------+ +----+----+
+ | RANAP | | H | RANAP |
+Access Stratum +---------+ HNBAP | N +---------+ - - SCCP USER SAP
+ | RUA | | B | SUA | \
+ +---------+-------+ - +---------+ |
+ | SCTP | G | SCTP | } SIGTRAN
+ +-----------------+ W +---------+ |
+ | IP | | IP | /
+ +-----------------+ +---------+
+
+
+Various SIGTRAN implementations:
+
+ IuCS/IuPS
+ usual
+ | simplest
+ | |
+ v v
+ +------+------+------+-----+
+ | SCCP | SCCP | | |
+ +------+------+ SCCP | |
+ | MTP3 | MTP3 | | |
+ +------+------+------+ SUA |
+ | MTP2 | | | |
+ +------+ M2UA | M3UA | |
+ | M2PA | | | |
+ +------+------+------+-----+
+ | SCTP |
+ +--------------------------+
+ | IP |
+ +--------------------------+
+
+UE (User Endpoint) == MS (Mobile Subscriber) == mobile device
diff --git a/git-version-gen b/git-version-gen
new file mode 100755
index 0000000..42cf3d2
--- /dev/null
+++ b/git-version-gen
@@ -0,0 +1,151 @@
+#!/bin/sh
+# Print a version string.
+scriptversion=2010-01-28.01
+
+# Copyright (C) 2007-2010 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
+# It may be run two ways:
+# - from a git repository in which the "git describe" command below
+# produces useful output (thus requiring at least one signed tag)
+# - from a non-git-repo directory containing a .tarball-version file, which
+# presumes this script is invoked like "./git-version-gen .tarball-version".
+
+# In order to use intra-version strings in your project, you will need two
+# separate generated version string files:
+#
+# .tarball-version - present only in a distribution tarball, and not in
+# a checked-out repository. Created with contents that were learned at
+# the last time autoconf was run, and used by git-version-gen. Must not
+# be present in either $(srcdir) or $(builddir) for git-version-gen to
+# give accurate answers during normal development with a checked out tree,
+# but must be present in a tarball when there is no version control system.
+# Therefore, it cannot be used in any dependencies. GNUmakefile has
+# hooks to force a reconfigure at distribution time to get the value
+# correct, without penalizing normal development with extra reconfigures.
+#
+# .version - present in a checked-out repository and in a distribution
+# tarball. Usable in dependencies, particularly for files that don't
+# want to depend on config.h but do want to track version changes.
+# Delete this file prior to any autoconf run where you want to rebuild
+# files to pick up a version string change; and leave it stale to
+# minimize rebuild time after unrelated changes to configure sources.
+#
+# It is probably wise to add these two files to .gitignore, so that you
+# don't accidentally commit either generated file.
+#
+# Use the following line in your configure.ac, so that $(VERSION) will
+# automatically be up-to-date each time configure is run (and note that
+# since configure.ac no longer includes a version string, Makefile rules
+# should not depend on configure.ac for version updates).
+#
+# AC_INIT([GNU project],
+# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+# [bug-project@example])
+#
+# Then use the following lines in your Makefile.am, so that .version
+# will be present for dependencies, and so that .tarball-version will
+# exist in distribution tarballs.
+#
+# BUILT_SOURCES = $(top_srcdir)/.version
+# $(top_srcdir)/.version:
+# echo $(VERSION) > $@-t && mv $@-t $@
+# dist-hook:
+# echo $(VERSION) > $(distdir)/.tarball-version
+
+case $# in
+ 1) ;;
+ *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
+esac
+
+tarball_version_file=$1
+nl='
+'
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+ v=`cat $tarball_version_file` || exit 1
+ case $v in
+ *$nl*) v= ;; # reject multi-line output
+ [0-9]*) ;;
+ *) v= ;;
+ esac
+ test -z "$v" \
+ && echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
+fi
+
+if test -n "$v"
+then
+ : # use $v
+elif
+ v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
+ || git describe --abbrev=4 HEAD 2>/dev/null` \
+ && case $v in
+ [0-9]*) ;;
+ v[0-9]*) ;;
+ *) (exit 1) ;;
+ esac
+then
+ # Is this a new git that lists number of commits since the last
+ # tag or the previous older version that did not?
+ # Newer: v6.10-77-g0f8faeb
+ # Older: v6.10-g0f8faeb
+ case $v in
+ *-*-*) : git describe is okay three part flavor ;;
+ *-*)
+ : git describe is older two part flavor
+ # Recreate the number of commits and rewrite such that the
+ # result is the same as if we were using the newer version
+ # of git describe.
+ vtag=`echo "$v" | sed 's/-.*//'`
+ numcommits=`git rev-list "$vtag"..HEAD | wc -l`
+ v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+ ;;
+ esac
+
+ # Change the first '-' to a '.', so version-comparing tools work properly.
+ # Remove the "g" in git describe's output string, to save a byte.
+ v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
+else
+ v=UNKNOWN
+fi
+
+v=`echo "$v" |sed 's/^v//'`
+
+# Don't declare a version "dirty" merely because a time stamp has changed.
+git status > /dev/null 2>&1
+
+dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
+case "$dirty" in
+ '') ;;
+ *) # Append the suffix only if there isn't one already.
+ case $v in
+ *-dirty) ;;
+ *) v="$v-dirty" ;;
+ esac ;;
+esac
+
+# Omit the trailing newline, so that m4_esyscmd can use the result directly.
+echo "$v" | tr -d '\012'
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..3e32d0f
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = osmocom
+
diff --git a/include/osmocom/Makefile.am b/include/osmocom/Makefile.am
new file mode 100644
index 0000000..246cb34
--- /dev/null
+++ b/include/osmocom/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = hnbap ranap rua iuh
+
diff --git a/include/osmocom/hnbap/Access-stratum-release-indicator.h b/include/osmocom/hnbap/Access-stratum-release-indicator.h
new file mode 100644
index 0000000..1e1f7e1
--- /dev/null
+++ b/include/osmocom/hnbap/Access-stratum-release-indicator.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Access_stratum_release_indicator_H_
+#define _Access_stratum_release_indicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Access_stratum_release_indicator {
+ Access_stratum_release_indicator_r99 = 0,
+ Access_stratum_release_indicator_rel_4 = 1,
+ Access_stratum_release_indicator_rel_5 = 2,
+ Access_stratum_release_indicator_rel_6 = 3,
+ Access_stratum_release_indicator_rel_7 = 4,
+ Access_stratum_release_indicator_rel_8_and_beyond = 5
+ /*
+ * Enumeration is extensible
+ */
+} e_Access_stratum_release_indicator;
+
+/* Access-stratum-release-indicator */
+typedef long Access_stratum_release_indicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Access_stratum_release_indicator;
+asn_struct_free_f Access_stratum_release_indicator_free;
+asn_struct_print_f Access_stratum_release_indicator_print;
+asn_constr_check_f Access_stratum_release_indicator_constraint;
+ber_type_decoder_f Access_stratum_release_indicator_decode_ber;
+der_type_encoder_f Access_stratum_release_indicator_encode_der;
+xer_type_decoder_f Access_stratum_release_indicator_decode_xer;
+xer_type_encoder_f Access_stratum_release_indicator_encode_xer;
+per_type_decoder_f Access_stratum_release_indicator_decode_uper;
+per_type_encoder_f Access_stratum_release_indicator_encode_uper;
+per_type_decoder_f Access_stratum_release_indicator_decode_aper;
+per_type_encoder_f Access_stratum_release_indicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Access_stratum_release_indicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/AccessResult.h b/include/osmocom/hnbap/AccessResult.h
new file mode 100644
index 0000000..e9f8087
--- /dev/null
+++ b/include/osmocom/hnbap/AccessResult.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _AccessResult_H_
+#define _AccessResult_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum AccessResult {
+ AccessResult_allowed = 0,
+ AccessResult_notAllowed = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_AccessResult;
+
+/* AccessResult */
+typedef long AccessResult_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AccessResult;
+asn_struct_free_f AccessResult_free;
+asn_struct_print_f AccessResult_print;
+asn_constr_check_f AccessResult_constraint;
+ber_type_decoder_f AccessResult_decode_ber;
+der_type_encoder_f AccessResult_encode_der;
+xer_type_decoder_f AccessResult_decode_xer;
+xer_type_encoder_f AccessResult_encode_xer;
+per_type_decoder_f AccessResult_decode_uper;
+per_type_encoder_f AccessResult_encode_uper;
+per_type_decoder_f AccessResult_decode_aper;
+per_type_encoder_f AccessResult_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AccessResult_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/AdditionalNeighbourInfoList.h b/include/osmocom/hnbap/AdditionalNeighbourInfoList.h
new file mode 100644
index 0000000..7f1691d
--- /dev/null
+++ b/include/osmocom/hnbap/AdditionalNeighbourInfoList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _AdditionalNeighbourInfoList_H_
+#define _AdditionalNeighbourInfoList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct HNBConfigInfo;
+
+/* AdditionalNeighbourInfoList */
+typedef struct AdditionalNeighbourInfoList {
+ A_SEQUENCE_OF(struct HNBConfigInfo) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} AdditionalNeighbourInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AdditionalNeighbourInfoList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/HNBConfigInfo.h>
+
+#endif /* _AdditionalNeighbourInfoList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/AltitudeAndDirection.h b/include/osmocom/hnbap/AltitudeAndDirection.h
new file mode 100644
index 0000000..7ea3dfd
--- /dev/null
+++ b/include/osmocom/hnbap/AltitudeAndDirection.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _AltitudeAndDirection_H_
+#define _AltitudeAndDirection_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum directionOfAltitude {
+ directionOfAltitude_height = 0,
+ directionOfAltitude_depth = 1
+} e_directionOfAltitude;
+
+/* AltitudeAndDirection */
+typedef struct AltitudeAndDirection {
+ long directionOfAltitude;
+ long altitude;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} AltitudeAndDirection_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_AltitudeAndDirection;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AltitudeAndDirection_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/BackoffTimer.h b/include/osmocom/hnbap/BackoffTimer.h
new file mode 100644
index 0000000..9b6b01f
--- /dev/null
+++ b/include/osmocom/hnbap/BackoffTimer.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _BackoffTimer_H_
+#define _BackoffTimer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BackoffTimer */
+typedef long BackoffTimer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BackoffTimer;
+asn_struct_free_f BackoffTimer_free;
+asn_struct_print_f BackoffTimer_print;
+asn_constr_check_f BackoffTimer_constraint;
+ber_type_decoder_f BackoffTimer_decode_ber;
+der_type_encoder_f BackoffTimer_encode_der;
+xer_type_decoder_f BackoffTimer_decode_xer;
+xer_type_encoder_f BackoffTimer_encode_xer;
+per_type_decoder_f BackoffTimer_decode_uper;
+per_type_encoder_f BackoffTimer_encode_uper;
+per_type_decoder_f BackoffTimer_decode_aper;
+per_type_encoder_f BackoffTimer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BackoffTimer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/BindingID.h b/include/osmocom/hnbap/BindingID.h
new file mode 100644
index 0000000..ad1a142
--- /dev/null
+++ b/include/osmocom/hnbap/BindingID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _BindingID_H_
+#define _BindingID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BindingID */
+typedef OCTET_STRING_t BindingID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BindingID;
+asn_struct_free_f BindingID_free;
+asn_struct_print_f BindingID_print;
+asn_constr_check_f BindingID_constraint;
+ber_type_decoder_f BindingID_decode_ber;
+der_type_encoder_f BindingID_encode_der;
+xer_type_decoder_f BindingID_decode_xer;
+xer_type_encoder_f BindingID_encode_xer;
+per_type_decoder_f BindingID_decode_uper;
+per_type_encoder_f BindingID_encode_uper;
+per_type_decoder_f BindingID_decode_aper;
+per_type_encoder_f BindingID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BindingID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CELL-FACHMobilitySupport.h b/include/osmocom/hnbap/CELL-FACHMobilitySupport.h
new file mode 100644
index 0000000..3d6b588
--- /dev/null
+++ b/include/osmocom/hnbap/CELL-FACHMobilitySupport.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CELL_FACHMobilitySupport_H_
+#define _CELL_FACHMobilitySupport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CELL_FACHMobilitySupport {
+ CELL_FACHMobilitySupport_supported = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_CELL_FACHMobilitySupport;
+
+/* CELL-FACHMobilitySupport */
+typedef long CELL_FACHMobilitySupport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CELL_FACHMobilitySupport;
+asn_struct_free_f CELL_FACHMobilitySupport_free;
+asn_struct_print_f CELL_FACHMobilitySupport_print;
+asn_constr_check_f CELL_FACHMobilitySupport_constraint;
+ber_type_decoder_f CELL_FACHMobilitySupport_decode_ber;
+der_type_encoder_f CELL_FACHMobilitySupport_encode_der;
+xer_type_decoder_f CELL_FACHMobilitySupport_decode_xer;
+xer_type_encoder_f CELL_FACHMobilitySupport_encode_xer;
+per_type_decoder_f CELL_FACHMobilitySupport_decode_uper;
+per_type_encoder_f CELL_FACHMobilitySupport_encode_uper;
+per_type_decoder_f CELL_FACHMobilitySupport_decode_aper;
+per_type_encoder_f CELL_FACHMobilitySupport_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CELL_FACHMobilitySupport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CGI.h b/include/osmocom/hnbap/CGI.h
new file mode 100644
index 0000000..d588d01
--- /dev/null
+++ b/include/osmocom/hnbap/CGI.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CGI_H_
+#define _CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/PLMNidentity.h>
+#include <osmocom/hnbap/LAC.h>
+#include <osmocom/hnbap/CI.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* CGI */
+typedef struct CGI {
+ PLMNidentity_t pLMNidentity;
+ LAC_t lAC;
+ CI_t cI;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CGI;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _CGI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CI.h b/include/osmocom/hnbap/CI.h
new file mode 100644
index 0000000..8efd030
--- /dev/null
+++ b/include/osmocom/hnbap/CI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CI_H_
+#define _CI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CI */
+typedef OCTET_STRING_t CI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CI;
+asn_struct_free_f CI_free;
+asn_struct_print_f CI_print;
+asn_constr_check_f CI_constraint;
+ber_type_decoder_f CI_decode_ber;
+der_type_encoder_f CI_encode_der;
+xer_type_decoder_f CI_decode_xer;
+xer_type_encoder_f CI_encode_xer;
+per_type_decoder_f CI_decode_uper;
+per_type_encoder_f CI_encode_uper;
+per_type_decoder_f CI_decode_aper;
+per_type_encoder_f CI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CN-DomainIndicator.h b/include/osmocom/hnbap/CN-DomainIndicator.h
new file mode 100644
index 0000000..854f375
--- /dev/null
+++ b/include/osmocom/hnbap/CN-DomainIndicator.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CN_DomainIndicator_H_
+#define _CN_DomainIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CN_DomainIndicator {
+ CN_DomainIndicator_cs_domain = 0,
+ CN_DomainIndicator_ps_domain = 1
+} e_CN_DomainIndicator;
+
+/* CN-DomainIndicator */
+typedef long CN_DomainIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CN_DomainIndicator;
+asn_struct_free_f CN_DomainIndicator_free;
+asn_struct_print_f CN_DomainIndicator_print;
+asn_constr_check_f CN_DomainIndicator_constraint;
+ber_type_decoder_f CN_DomainIndicator_decode_ber;
+der_type_encoder_f CN_DomainIndicator_encode_der;
+xer_type_decoder_f CN_DomainIndicator_decode_xer;
+xer_type_encoder_f CN_DomainIndicator_encode_xer;
+per_type_decoder_f CN_DomainIndicator_decode_uper;
+per_type_encoder_f CN_DomainIndicator_encode_uper;
+per_type_decoder_f CN_DomainIndicator_decode_aper;
+per_type_encoder_f CN_DomainIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CN_DomainIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CSG-Capability.h b/include/osmocom/hnbap/CSG-Capability.h
new file mode 100644
index 0000000..f6df34d
--- /dev/null
+++ b/include/osmocom/hnbap/CSG-Capability.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CSG_Capability_H_
+#define _CSG_Capability_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSG_Capability {
+ CSG_Capability_csg_capable = 0,
+ CSG_Capability_not_csg_capable = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_CSG_Capability;
+
+/* CSG-Capability */
+typedef long CSG_Capability_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSG_Capability;
+asn_struct_free_f CSG_Capability_free;
+asn_struct_print_f CSG_Capability_print;
+asn_constr_check_f CSG_Capability_constraint;
+ber_type_decoder_f CSG_Capability_decode_ber;
+der_type_encoder_f CSG_Capability_encode_der;
+xer_type_decoder_f CSG_Capability_decode_xer;
+xer_type_encoder_f CSG_Capability_encode_xer;
+per_type_decoder_f CSG_Capability_decode_uper;
+per_type_encoder_f CSG_Capability_encode_uper;
+per_type_decoder_f CSG_Capability_decode_aper;
+per_type_encoder_f CSG_Capability_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSG_Capability_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CSG-ID.h b/include/osmocom/hnbap/CSG-ID.h
new file mode 100644
index 0000000..dfffa81
--- /dev/null
+++ b/include/osmocom/hnbap/CSG-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CSG_ID_H_
+#define _CSG_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSG-ID */
+typedef BIT_STRING_t CSG_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSG_ID;
+asn_struct_free_f CSG_ID_free;
+asn_struct_print_f CSG_ID_print;
+asn_constr_check_f CSG_ID_constraint;
+ber_type_decoder_f CSG_ID_decode_ber;
+der_type_encoder_f CSG_ID_encode_der;
+xer_type_decoder_f CSG_ID_decode_xer;
+xer_type_encoder_f CSG_ID_encode_xer;
+per_type_decoder_f CSG_ID_decode_uper;
+per_type_encoder_f CSG_ID_encode_uper;
+per_type_decoder_f CSG_ID_decode_aper;
+per_type_encoder_f CSG_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSG_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CSGMembershipStatus.h b/include/osmocom/hnbap/CSGMembershipStatus.h
new file mode 100644
index 0000000..5f7e88c
--- /dev/null
+++ b/include/osmocom/hnbap/CSGMembershipStatus.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CSGMembershipStatus_H_
+#define _CSGMembershipStatus_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSGMembershipStatus {
+ CSGMembershipStatus_member = 0,
+ CSGMembershipStatus_non_member = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_CSGMembershipStatus;
+
+/* CSGMembershipStatus */
+typedef long CSGMembershipStatus_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus;
+asn_struct_free_f CSGMembershipStatus_free;
+asn_struct_print_f CSGMembershipStatus_print;
+asn_constr_check_f CSGMembershipStatus_constraint;
+ber_type_decoder_f CSGMembershipStatus_decode_ber;
+der_type_encoder_f CSGMembershipStatus_encode_der;
+xer_type_decoder_f CSGMembershipStatus_decode_xer;
+xer_type_encoder_f CSGMembershipStatus_encode_xer;
+per_type_decoder_f CSGMembershipStatus_decode_uper;
+per_type_encoder_f CSGMembershipStatus_encode_uper;
+per_type_decoder_f CSGMembershipStatus_decode_aper;
+per_type_encoder_f CSGMembershipStatus_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSGMembershipStatus_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CSGMembershipUpdate.h b/include/osmocom/hnbap/CSGMembershipUpdate.h
new file mode 100644
index 0000000..93e0248
--- /dev/null
+++ b/include/osmocom/hnbap/CSGMembershipUpdate.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CSGMembershipUpdate_H_
+#define _CSGMembershipUpdate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* CSGMembershipUpdate */
+typedef struct CSGMembershipUpdate {
+ struct csgMembershipUpdate_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } csgMembershipUpdate_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CSGMembershipUpdate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipUpdate;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _CSGMembershipUpdate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Cause.h b/include/osmocom/hnbap/Cause.h
new file mode 100644
index 0000000..1ce4c23
--- /dev/null
+++ b/include/osmocom/hnbap/Cause.h
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Cause_H_
+#define _Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/CauseRadioNetwork.h>
+#include <osmocom/hnbap/CauseTransport.h>
+#include <osmocom/hnbap/CauseProtocol.h>
+#include <osmocom/hnbap/CauseMisc.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Cause_PR {
+ Cause_PR_NOTHING, /* No components present */
+ Cause_PR_radioNetwork,
+ Cause_PR_transport,
+ Cause_PR_protocol,
+ Cause_PR_misc,
+ /* Extensions may appear below */
+
+} Cause_PR;
+
+/* Cause */
+typedef struct Cause {
+ Cause_PR present;
+ union Cause_u {
+ CauseRadioNetwork_t radioNetwork;
+ CauseTransport_t transport;
+ CauseProtocol_t protocol;
+ CauseMisc_t misc;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Cause;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CauseMisc.h b/include/osmocom/hnbap/CauseMisc.h
new file mode 100644
index 0000000..7863364
--- /dev/null
+++ b/include/osmocom/hnbap/CauseMisc.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CauseMisc_H_
+#define _CauseMisc_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CauseMisc {
+ CauseMisc_processing_overload = 0,
+ CauseMisc_hardware_failure = 1,
+ CauseMisc_o_and_m_intervention = 2,
+ CauseMisc_unspecified = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_CauseMisc;
+
+/* CauseMisc */
+typedef long CauseMisc_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CauseMisc;
+asn_struct_free_f CauseMisc_free;
+asn_struct_print_f CauseMisc_print;
+asn_constr_check_f CauseMisc_constraint;
+ber_type_decoder_f CauseMisc_decode_ber;
+der_type_encoder_f CauseMisc_encode_der;
+xer_type_decoder_f CauseMisc_decode_xer;
+xer_type_encoder_f CauseMisc_encode_xer;
+per_type_decoder_f CauseMisc_decode_uper;
+per_type_encoder_f CauseMisc_encode_uper;
+per_type_decoder_f CauseMisc_decode_aper;
+per_type_encoder_f CauseMisc_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CauseMisc_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CauseProtocol.h b/include/osmocom/hnbap/CauseProtocol.h
new file mode 100644
index 0000000..1dc187c
--- /dev/null
+++ b/include/osmocom/hnbap/CauseProtocol.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CauseProtocol_H_
+#define _CauseProtocol_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CauseProtocol {
+ CauseProtocol_transfer_syntax_error = 0,
+ CauseProtocol_abstract_syntax_error_reject = 1,
+ CauseProtocol_abstract_syntax_error_ignore_and_notify = 2,
+ CauseProtocol_message_not_compatible_with_receiver_state = 3,
+ CauseProtocol_semantic_error = 4,
+ CauseProtocol_unspecified = 5,
+ CauseProtocol_abstract_syntax_error_falsely_constructed_message = 6
+ /*
+ * Enumeration is extensible
+ */
+} e_CauseProtocol;
+
+/* CauseProtocol */
+typedef long CauseProtocol_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol;
+asn_struct_free_f CauseProtocol_free;
+asn_struct_print_f CauseProtocol_print;
+asn_constr_check_f CauseProtocol_constraint;
+ber_type_decoder_f CauseProtocol_decode_ber;
+der_type_encoder_f CauseProtocol_encode_der;
+xer_type_decoder_f CauseProtocol_decode_xer;
+xer_type_encoder_f CauseProtocol_encode_xer;
+per_type_decoder_f CauseProtocol_decode_uper;
+per_type_encoder_f CauseProtocol_encode_uper;
+per_type_decoder_f CauseProtocol_decode_aper;
+per_type_encoder_f CauseProtocol_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CauseProtocol_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CauseRadioNetwork.h b/include/osmocom/hnbap/CauseRadioNetwork.h
new file mode 100644
index 0000000..54d8b50
--- /dev/null
+++ b/include/osmocom/hnbap/CauseRadioNetwork.h
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CauseRadioNetwork_H_
+#define _CauseRadioNetwork_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CauseRadioNetwork {
+ CauseRadioNetwork_overload = 0,
+ CauseRadioNetwork_unauthorised_Location = 1,
+ CauseRadioNetwork_unauthorised_HNB = 2,
+ CauseRadioNetwork_hNB_parameter_mismatch = 3,
+ CauseRadioNetwork_invalid_UE_identity = 4,
+ CauseRadioNetwork_uE_not_allowed_on_this_HNB = 5,
+ CauseRadioNetwork_uE_unauthorised = 6,
+ CauseRadioNetwork_connection_with_UE_lost = 7,
+ CauseRadioNetwork_ue_RRC_release = 8,
+ CauseRadioNetwork_hNB_not_registered = 9,
+ CauseRadioNetwork_unspecified = 10,
+ CauseRadioNetwork_normal = 11,
+ CauseRadioNetwork_uE_relocated = 12,
+ CauseRadioNetwork_ue_registered_in_another_HNB = 13,
+ /*
+ * Enumeration is extensible
+ */
+ CauseRadioNetwork_no_neighbour_information_available = 14,
+ CauseRadioNetwork_iurh_connection_to_that_neighbour_not_Allowed = 15
+} e_CauseRadioNetwork;
+
+/* CauseRadioNetwork */
+typedef long CauseRadioNetwork_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork;
+asn_struct_free_f CauseRadioNetwork_free;
+asn_struct_print_f CauseRadioNetwork_print;
+asn_constr_check_f CauseRadioNetwork_constraint;
+ber_type_decoder_f CauseRadioNetwork_decode_ber;
+der_type_encoder_f CauseRadioNetwork_encode_der;
+xer_type_decoder_f CauseRadioNetwork_decode_xer;
+xer_type_encoder_f CauseRadioNetwork_encode_xer;
+per_type_decoder_f CauseRadioNetwork_decode_uper;
+per_type_encoder_f CauseRadioNetwork_encode_uper;
+per_type_decoder_f CauseRadioNetwork_decode_aper;
+per_type_encoder_f CauseRadioNetwork_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CauseRadioNetwork_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CauseTransport.h b/include/osmocom/hnbap/CauseTransport.h
new file mode 100644
index 0000000..ea445e9
--- /dev/null
+++ b/include/osmocom/hnbap/CauseTransport.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CauseTransport_H_
+#define _CauseTransport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CauseTransport {
+ CauseTransport_transport_resource_unavailable = 0,
+ CauseTransport_unspecified = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_CauseTransport;
+
+/* CauseTransport */
+typedef long CauseTransport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CauseTransport;
+asn_struct_free_f CauseTransport_free;
+asn_struct_print_f CauseTransport_print;
+asn_constr_check_f CauseTransport_constraint;
+ber_type_decoder_f CauseTransport_decode_ber;
+der_type_encoder_f CauseTransport_encode_der;
+xer_type_decoder_f CauseTransport_decode_xer;
+xer_type_encoder_f CauseTransport_encode_xer;
+per_type_decoder_f CauseTransport_decode_uper;
+per_type_encoder_f CauseTransport_encode_uper;
+per_type_decoder_f CauseTransport_decode_aper;
+per_type_encoder_f CauseTransport_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CauseTransport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CellIdentity.h b/include/osmocom/hnbap/CellIdentity.h
new file mode 100644
index 0000000..69b1688
--- /dev/null
+++ b/include/osmocom/hnbap/CellIdentity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CellIdentity_H_
+#define _CellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellIdentity */
+typedef BIT_STRING_t CellIdentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellIdentity;
+asn_struct_free_f CellIdentity_free;
+asn_struct_print_f CellIdentity_print;
+asn_constr_check_f CellIdentity_constraint;
+ber_type_decoder_f CellIdentity_decode_ber;
+der_type_encoder_f CellIdentity_encode_der;
+xer_type_decoder_f CellIdentity_decode_xer;
+xer_type_encoder_f CellIdentity_encode_xer;
+per_type_decoder_f CellIdentity_decode_uper;
+per_type_encoder_f CellIdentity_encode_uper;
+per_type_decoder_f CellIdentity_decode_aper;
+per_type_encoder_f CellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellIdentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/ConfigurationInformation.h b/include/osmocom/hnbap/ConfigurationInformation.h
new file mode 100644
index 0000000..4cd2bda
--- /dev/null
+++ b/include/osmocom/hnbap/ConfigurationInformation.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _ConfigurationInformation_H_
+#define _ConfigurationInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNBConfigurationInformationProvided.h>
+#include <osmocom/hnbap/HNBConfigurationInformationMissing.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ConfigurationInformation_PR {
+ ConfigurationInformation_PR_NOTHING, /* No components present */
+ ConfigurationInformation_PR_provided,
+ ConfigurationInformation_PR_missing,
+ /* Extensions may appear below */
+
+} ConfigurationInformation_PR;
+
+/* ConfigurationInformation */
+typedef struct ConfigurationInformation {
+ ConfigurationInformation_PR present;
+ union ConfigurationInformation_u {
+ HNBConfigurationInformationProvided_t provided;
+ HNBConfigurationInformationMissing_t missing;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} ConfigurationInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConfigurationInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ConfigurationInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Context-ID.h b/include/osmocom/hnbap/Context-ID.h
new file mode 100644
index 0000000..89ba4e6
--- /dev/null
+++ b/include/osmocom/hnbap/Context-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Context_ID_H_
+#define _Context_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Context-ID */
+typedef BIT_STRING_t Context_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Context_ID;
+asn_struct_free_f Context_ID_free;
+asn_struct_print_f Context_ID_print;
+asn_constr_check_f Context_ID_constraint;
+ber_type_decoder_f Context_ID_decode_ber;
+der_type_encoder_f Context_ID_encode_der;
+xer_type_decoder_f Context_ID_decode_xer;
+xer_type_encoder_f Context_ID_encode_xer;
+per_type_decoder_f Context_ID_decode_uper;
+per_type_encoder_f Context_ID_encode_uper;
+per_type_decoder_f Context_ID_decode_aper;
+per_type_encoder_f Context_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Context_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Criticality.h b/include/osmocom/hnbap/Criticality.h
new file mode 100644
index 0000000..c110ab9
--- /dev/null
+++ b/include/osmocom/hnbap/Criticality.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Criticality_H_
+#define _Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Criticality {
+ Criticality_reject = 0,
+ Criticality_ignore = 1,
+ Criticality_notify = 2
+} e_Criticality;
+
+/* Criticality */
+typedef long Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Criticality;
+asn_struct_free_f Criticality_free;
+asn_struct_print_f Criticality_print;
+asn_constr_check_f Criticality_constraint;
+ber_type_decoder_f Criticality_decode_ber;
+der_type_encoder_f Criticality_encode_der;
+xer_type_decoder_f Criticality_decode_xer;
+xer_type_encoder_f Criticality_encode_xer;
+per_type_decoder_f Criticality_decode_uper;
+per_type_encoder_f Criticality_encode_uper;
+per_type_decoder_f Criticality_decode_aper;
+per_type_encoder_f Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Criticality_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h b/include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h
new file mode 100644
index 0000000..3e24ec9
--- /dev/null
+++ b/include/osmocom/hnbap/CriticalityDiagnostics-IE-List.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CriticalityDiagnostics_IE_List_H_
+#define _CriticalityDiagnostics_IE_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <osmocom/hnbap/ProtocolIE-ID.h>
+#include <osmocom/hnbap/TypeOfError.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* CriticalityDiagnostics-IE-List */
+typedef struct CriticalityDiagnostics_IE_List {
+ A_SEQUENCE_OF(struct Member {
+ Criticality_t iECriticality;
+ ProtocolIE_ID_t iE_ID;
+ TypeOfError_t typeOfError;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CriticalityDiagnostics_IE_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _CriticalityDiagnostics_IE_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/CriticalityDiagnostics.h b/include/osmocom/hnbap/CriticalityDiagnostics.h
new file mode 100644
index 0000000..d6595a1
--- /dev/null
+++ b/include/osmocom/hnbap/CriticalityDiagnostics.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _CriticalityDiagnostics_H_
+#define _CriticalityDiagnostics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/ProcedureCode.h>
+#include <osmocom/hnbap/TriggeringMessage.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CriticalityDiagnostics_IE_List;
+struct IE_Extensions;
+
+/* CriticalityDiagnostics */
+typedef struct CriticalityDiagnostics {
+ ProcedureCode_t *procedureCode /* OPTIONAL */;
+ TriggeringMessage_t *triggeringMessage /* OPTIONAL */;
+ Criticality_t *procedureCriticality /* OPTIONAL */;
+ struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics /* OPTIONAL */;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CriticalityDiagnostics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/CriticalityDiagnostics-IE-List.h>
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _CriticalityDiagnostics_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/ESN.h b/include/osmocom/hnbap/ESN.h
new file mode 100644
index 0000000..36ee2ca
--- /dev/null
+++ b/include/osmocom/hnbap/ESN.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _ESN_H_
+#define _ESN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ESN */
+typedef BIT_STRING_t ESN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ESN;
+asn_struct_free_f ESN_free;
+asn_struct_print_f ESN_print;
+asn_constr_check_f ESN_constraint;
+ber_type_decoder_f ESN_decode_ber;
+der_type_encoder_f ESN_encode_der;
+xer_type_decoder_f ESN_decode_xer;
+xer_type_encoder_f ESN_encode_xer;
+per_type_decoder_f ESN_decode_uper;
+per_type_encoder_f ESN_encode_uper;
+per_type_decoder_f ESN_decode_aper;
+per_type_encoder_f ESN_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ESN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/ErrorIndication.h b/include/osmocom/hnbap/ErrorIndication.h
new file mode 100644
index 0000000..110934c
--- /dev/null
+++ b/include/osmocom/hnbap/ErrorIndication.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _ErrorIndication_H_
+#define _ErrorIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* ErrorIndication */
+typedef struct ErrorIndication {
+ struct errorIndication_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } errorIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} ErrorIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _ErrorIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/GTP-TEI.h b/include/osmocom/hnbap/GTP-TEI.h
new file mode 100644
index 0000000..863c612
--- /dev/null
+++ b/include/osmocom/hnbap/GTP-TEI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _GTP_TEI_H_
+#define _GTP_TEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GTP-TEI */
+typedef OCTET_STRING_t GTP_TEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GTP_TEI;
+asn_struct_free_f GTP_TEI_free;
+asn_struct_print_f GTP_TEI_print;
+asn_constr_check_f GTP_TEI_constraint;
+ber_type_decoder_f GTP_TEI_decode_ber;
+der_type_encoder_f GTP_TEI_encode_der;
+xer_type_decoder_f GTP_TEI_decode_xer;
+xer_type_encoder_f GTP_TEI_encode_xer;
+per_type_decoder_f GTP_TEI_decode_uper;
+per_type_encoder_f GTP_TEI_encode_uper;
+per_type_decoder_f GTP_TEI_decode_aper;
+per_type_encoder_f GTP_TEI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GTP_TEI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/GeographicalCoordinates.h b/include/osmocom/hnbap/GeographicalCoordinates.h
new file mode 100644
index 0000000..cf0650b
--- /dev/null
+++ b/include/osmocom/hnbap/GeographicalCoordinates.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _GeographicalCoordinates_H_
+#define _GeographicalCoordinates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum latitudeSign {
+ latitudeSign_north = 0,
+ latitudeSign_south = 1
+} e_latitudeSign;
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* GeographicalCoordinates */
+typedef struct GeographicalCoordinates {
+ long latitudeSign;
+ long latitude;
+ long longitude;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GeographicalCoordinates_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_latitudeSign_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_GeographicalCoordinates;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _GeographicalCoordinates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/GeographicalLocation.h b/include/osmocom/hnbap/GeographicalLocation.h
new file mode 100644
index 0000000..bf228e7
--- /dev/null
+++ b/include/osmocom/hnbap/GeographicalLocation.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _GeographicalLocation_H_
+#define _GeographicalLocation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/GeographicalCoordinates.h>
+#include <osmocom/hnbap/AltitudeAndDirection.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* GeographicalLocation */
+typedef struct GeographicalLocation {
+ GeographicalCoordinates_t geographicalCoordinates;
+ AltitudeAndDirection_t altitudeAndDirection;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GeographicalLocation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GeographicalLocation;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _GeographicalLocation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-Cell-Access-Mode.h b/include/osmocom/hnbap/HNB-Cell-Access-Mode.h
new file mode 100644
index 0000000..76778e4
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-Cell-Access-Mode.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_Cell_Access_Mode_H_
+#define _HNB_Cell_Access_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HNB_Cell_Access_Mode {
+ HNB_Cell_Access_Mode_closed = 0,
+ HNB_Cell_Access_Mode_hybrid = 1,
+ HNB_Cell_Access_Mode_open = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_HNB_Cell_Access_Mode;
+
+/* HNB-Cell-Access-Mode */
+typedef long HNB_Cell_Access_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Access_Mode;
+asn_struct_free_f HNB_Cell_Access_Mode_free;
+asn_struct_print_f HNB_Cell_Access_Mode_print;
+asn_constr_check_f HNB_Cell_Access_Mode_constraint;
+ber_type_decoder_f HNB_Cell_Access_Mode_decode_ber;
+der_type_encoder_f HNB_Cell_Access_Mode_encode_der;
+xer_type_decoder_f HNB_Cell_Access_Mode_decode_xer;
+xer_type_encoder_f HNB_Cell_Access_Mode_encode_xer;
+per_type_decoder_f HNB_Cell_Access_Mode_decode_uper;
+per_type_encoder_f HNB_Cell_Access_Mode_encode_uper;
+per_type_decoder_f HNB_Cell_Access_Mode_decode_aper;
+per_type_encoder_f HNB_Cell_Access_Mode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNB_Cell_Access_Mode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-Cell-Identifier.h b/include/osmocom/hnbap/HNB-Cell-Identifier.h
new file mode 100644
index 0000000..66e63f5
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-Cell-Identifier.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_Cell_Identifier_H_
+#define _HNB_Cell_Identifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/PLMNidentity.h>
+#include <osmocom/hnbap/CellIdentity.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* HNB-Cell-Identifier */
+typedef struct HNB_Cell_Identifier {
+ PLMNidentity_t pLMNidentity;
+ CellIdentity_t cellIdentity;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNB_Cell_Identifier_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Identifier;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNB_Cell_Identifier_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-GWResponse.h b/include/osmocom/hnbap/HNB-GWResponse.h
new file mode 100644
index 0000000..436cf55
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-GWResponse.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_GWResponse_H_
+#define _HNB_GWResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNBConfigInfo.h>
+#include <osmocom/hnbap/RNC-ID.h>
+#include <osmocom/hnbap/UnknownU-RNTIIndication.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HNB_GWResponse_PR {
+ HNB_GWResponse_PR_NOTHING, /* No components present */
+ HNB_GWResponse_PR_hNB,
+ HNB_GWResponse_PR_macroRNC,
+ HNB_GWResponse_PR_unknownU_RNTIIndication,
+ /* Extensions may appear below */
+
+} HNB_GWResponse_PR;
+
+/* HNB-GWResponse */
+typedef struct HNB_GWResponse {
+ HNB_GWResponse_PR present;
+ union HNB_GWResponse_u {
+ HNBConfigInfo_t hNB;
+ RNC_ID_t macroRNC;
+ UnknownU_RNTIIndication_t unknownU_RNTIIndication;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNB_GWResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_GWResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNB_GWResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-Identity-Info.h b/include/osmocom/hnbap/HNB-Identity-Info.h
new file mode 100644
index 0000000..f36ac89
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-Identity-Info.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_Identity_Info_H_
+#define _HNB_Identity_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* HNB-Identity-Info */
+typedef OCTET_STRING_t HNB_Identity_Info_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_Identity_Info;
+asn_struct_free_f HNB_Identity_Info_free;
+asn_struct_print_f HNB_Identity_Info_print;
+asn_constr_check_f HNB_Identity_Info_constraint;
+ber_type_decoder_f HNB_Identity_Info_decode_ber;
+der_type_encoder_f HNB_Identity_Info_encode_der;
+xer_type_decoder_f HNB_Identity_Info_decode_xer;
+xer_type_encoder_f HNB_Identity_Info_encode_xer;
+per_type_decoder_f HNB_Identity_Info_decode_uper;
+per_type_encoder_f HNB_Identity_Info_encode_uper;
+per_type_decoder_f HNB_Identity_Info_decode_aper;
+per_type_encoder_f HNB_Identity_Info_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNB_Identity_Info_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-Identity.h b/include/osmocom/hnbap/HNB-Identity.h
new file mode 100644
index 0000000..9fc83d5
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-Identity.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_Identity_H_
+#define _HNB_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNB-Identity-Info.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* HNB-Identity */
+typedef struct HNB_Identity {
+ HNB_Identity_Info_t hNB_Identity_Info;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNB_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_Identity;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNB_Identity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-Location-Information.h b/include/osmocom/hnbap/HNB-Location-Information.h
new file mode 100644
index 0000000..0416b59
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-Location-Information.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_Location_Information_H_
+#define _HNB_Location_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MacroCoverageInformation;
+struct GeographicalLocation;
+struct IE_Extensions;
+
+/* HNB-Location-Information */
+typedef struct HNB_Location_Information {
+ struct MacroCoverageInformation *macroCoverageInfo /* OPTIONAL */;
+ struct GeographicalLocation *geographicalCoordinates /* OPTIONAL */;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNB_Location_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_Location_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/MacroCoverageInformation.h>
+#include <osmocom/hnbap/GeographicalLocation.h>
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNB_Location_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNB-RNL-Identity.h b/include/osmocom/hnbap/HNB-RNL-Identity.h
new file mode 100644
index 0000000..1256f16
--- /dev/null
+++ b/include/osmocom/hnbap/HNB-RNL-Identity.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNB_RNL_Identity_H_
+#define _HNB_RNL_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNB-Cell-Identifier.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HNB_RNL_Identity_PR {
+ HNB_RNL_Identity_PR_NOTHING, /* No components present */
+ HNB_RNL_Identity_PR_hNB_Identity_as_Cell_Identifier,
+ /* Extensions may appear below */
+
+} HNB_RNL_Identity_PR;
+
+/* HNB-RNL-Identity */
+typedef struct HNB_RNL_Identity {
+ HNB_RNL_Identity_PR present;
+ union HNB_RNL_Identity_u {
+ HNB_Cell_Identifier_t hNB_Identity_as_Cell_Identifier;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNB_RNL_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNB_RNL_Identity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNB_RNL_Identity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBAP-PDU.h b/include/osmocom/hnbap/HNBAP-PDU.h
new file mode 100644
index 0000000..4026a8e
--- /dev/null
+++ b/include/osmocom/hnbap/HNBAP-PDU.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBAP_PDU_H_
+#define _HNBAP_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/InitiatingMessage.h>
+#include <osmocom/hnbap/SuccessfulOutcome.h>
+#include <osmocom/hnbap/UnsuccessfulOutcome.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HNBAP_PDU_PR {
+ HNBAP_PDU_PR_NOTHING, /* No components present */
+ HNBAP_PDU_PR_initiatingMessage,
+ HNBAP_PDU_PR_successfulOutcome,
+ HNBAP_PDU_PR_unsuccessfulOutcome,
+ /* Extensions may appear below */
+
+} HNBAP_PDU_PR;
+
+/* HNBAP-PDU */
+typedef struct HNBAP_PDU {
+ HNBAP_PDU_PR present;
+ union HNBAP_PDU_u {
+ InitiatingMessage_t initiatingMessage;
+ SuccessfulOutcome_t successfulOutcome;
+ UnsuccessfulOutcome_t unsuccessfulOutcome;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBAP_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBAP_PDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNBAP_PDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBCapacity.h b/include/osmocom/hnbap/HNBCapacity.h
new file mode 100644
index 0000000..2c6eea1
--- /dev/null
+++ b/include/osmocom/hnbap/HNBCapacity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBCapacity_H_
+#define _HNBCapacity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* HNBCapacity */
+typedef long HNBCapacity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBCapacity;
+asn_struct_free_f HNBCapacity_free;
+asn_struct_print_f HNBCapacity_print;
+asn_constr_check_f HNBCapacity_constraint;
+ber_type_decoder_f HNBCapacity_decode_ber;
+der_type_encoder_f HNBCapacity_encode_der;
+xer_type_decoder_f HNBCapacity_decode_xer;
+xer_type_encoder_f HNBCapacity_encode_xer;
+per_type_decoder_f HNBCapacity_decode_uper;
+per_type_encoder_f HNBCapacity_encode_uper;
+per_type_decoder_f HNBCapacity_decode_aper;
+per_type_encoder_f HNBCapacity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HNBCapacity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBConfigInfo.h b/include/osmocom/hnbap/HNBConfigInfo.h
new file mode 100644
index 0000000..95c4fb9
--- /dev/null
+++ b/include/osmocom/hnbap/HNBConfigInfo.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBConfigInfo_H_
+#define _HNBConfigInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNB-RNL-Identity.h>
+#include <osmocom/hnbap/ConfigurationInformation.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* HNBConfigInfo */
+typedef struct HNBConfigInfo {
+ HNB_RNL_Identity_t hnb_RNL_Identity;
+ ConfigurationInformation_t configurationInformation;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBConfigInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBConfigInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNBConfigInfo_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBConfigTransferRequest.h b/include/osmocom/hnbap/HNBConfigTransferRequest.h
new file mode 100644
index 0000000..89229ca
--- /dev/null
+++ b/include/osmocom/hnbap/HNBConfigTransferRequest.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBConfigTransferRequest_H_
+#define _HNBConfigTransferRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBConfigTransferRequest */
+typedef struct HNBConfigTransferRequest {
+ struct hnbConfigTransferRequest_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbConfigTransferRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBConfigTransferRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBConfigTransferRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBConfigTransferResponse.h b/include/osmocom/hnbap/HNBConfigTransferResponse.h
new file mode 100644
index 0000000..edfb327
--- /dev/null
+++ b/include/osmocom/hnbap/HNBConfigTransferResponse.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBConfigTransferResponse_H_
+#define _HNBConfigTransferResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBConfigTransferResponse */
+typedef struct HNBConfigTransferResponse {
+ struct hnbConfigTransferResponse_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbConfigTransferResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBConfigTransferResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBConfigTransferResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBConfigurationInformationMissing.h b/include/osmocom/hnbap/HNBConfigurationInformationMissing.h
new file mode 100644
index 0000000..9f928f8
--- /dev/null
+++ b/include/osmocom/hnbap/HNBConfigurationInformationMissing.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBConfigurationInformationMissing_H_
+#define _HNBConfigurationInformationMissing_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/Cause.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* HNBConfigurationInformationMissing */
+typedef struct HNBConfigurationInformationMissing {
+ Cause_t cause;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBConfigurationInformationMissing_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationMissing;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNBConfigurationInformationMissing_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBConfigurationInformationProvided.h b/include/osmocom/hnbap/HNBConfigurationInformationProvided.h
new file mode 100644
index 0000000..5d8b8fe
--- /dev/null
+++ b/include/osmocom/hnbap/HNBConfigurationInformationProvided.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBConfigurationInformationProvided_H_
+#define _HNBConfigurationInformationProvided_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/PSC.h>
+#include <osmocom/hnbap/CSG-ID.h>
+#include <osmocom/hnbap/HNB-Cell-Access-Mode.h>
+#include <osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* HNBConfigurationInformationProvided */
+typedef struct HNBConfigurationInformationProvided {
+ PSC_t *psc /* OPTIONAL */;
+ CSG_ID_t *cSG_ID /* OPTIONAL */;
+ HNB_Cell_Access_Mode_t hNB_Cell_Access_Mode;
+ Iurh_Signalling_TNL_AddressList_t iurh_Signalling_TNL_AddressList;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBConfigurationInformationProvided_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationProvided;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _HNBConfigurationInformationProvided_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBDe-Register.h b/include/osmocom/hnbap/HNBDe-Register.h
new file mode 100644
index 0000000..5cc8cce
--- /dev/null
+++ b/include/osmocom/hnbap/HNBDe-Register.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBDe_Register_H_
+#define _HNBDe_Register_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBDe-Register */
+typedef struct HNBDe_Register {
+ struct hnbDe_Register_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbDe_Register_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBDe_Register_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBDe_Register;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBDe_Register_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBRegisterAccept.h b/include/osmocom/hnbap/HNBRegisterAccept.h
new file mode 100644
index 0000000..0d7719b
--- /dev/null
+++ b/include/osmocom/hnbap/HNBRegisterAccept.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBRegisterAccept_H_
+#define _HNBRegisterAccept_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBRegisterAccept */
+typedef struct HNBRegisterAccept {
+ struct hnbRegisterAccept_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbRegisterAccept_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBRegisterAccept_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterAccept;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBRegisterAccept_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBRegisterReject.h b/include/osmocom/hnbap/HNBRegisterReject.h
new file mode 100644
index 0000000..e39e01d
--- /dev/null
+++ b/include/osmocom/hnbap/HNBRegisterReject.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBRegisterReject_H_
+#define _HNBRegisterReject_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBRegisterReject */
+typedef struct HNBRegisterReject {
+ struct hnbRegisterReject_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbRegisterReject_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBRegisterReject_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterReject;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBRegisterReject_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/HNBRegisterRequest.h b/include/osmocom/hnbap/HNBRegisterRequest.h
new file mode 100644
index 0000000..181ef3c
--- /dev/null
+++ b/include/osmocom/hnbap/HNBRegisterRequest.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _HNBRegisterRequest_H_
+#define _HNBRegisterRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* HNBRegisterRequest */
+typedef struct HNBRegisterRequest {
+ struct hnbRegisterRequest_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } hnbRegisterRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} HNBRegisterRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HNBRegisterRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _HNBRegisterRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IE-Extensions.h b/include/osmocom/hnbap/IE-Extensions.h
new file mode 100644
index 0000000..5236df0
--- /dev/null
+++ b/include/osmocom/hnbap/IE-Extensions.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IE_Extensions_H_
+#define _IE_Extensions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* IE-Extensions */
+typedef struct IE_Extensions {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} IE_Extensions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IE_Extensions;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _IE_Extensions_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IE.h b/include/osmocom/hnbap/IE.h
new file mode 100644
index 0000000..291932a
--- /dev/null
+++ b/include/osmocom/hnbap/IE.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IE_H_
+#define _IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/ProtocolIE-ID.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IE */
+typedef struct IE {
+ ProtocolIE_ID_t id;
+ Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} IE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IE_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IMEI.h b/include/osmocom/hnbap/IMEI.h
new file mode 100644
index 0000000..41c8c9a
--- /dev/null
+++ b/include/osmocom/hnbap/IMEI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IMEI_H_
+#define _IMEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IMEI */
+typedef BIT_STRING_t IMEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IMEI;
+asn_struct_free_f IMEI_free;
+asn_struct_print_f IMEI_print;
+asn_constr_check_f IMEI_constraint;
+ber_type_decoder_f IMEI_decode_ber;
+der_type_encoder_f IMEI_encode_der;
+xer_type_decoder_f IMEI_decode_xer;
+xer_type_encoder_f IMEI_encode_xer;
+per_type_decoder_f IMEI_decode_uper;
+per_type_encoder_f IMEI_encode_uper;
+per_type_decoder_f IMEI_decode_aper;
+per_type_encoder_f IMEI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMEI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IMSI.h b/include/osmocom/hnbap/IMSI.h
new file mode 100644
index 0000000..061520c
--- /dev/null
+++ b/include/osmocom/hnbap/IMSI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IMSI_H_
+#define _IMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IMSI */
+typedef OCTET_STRING_t IMSI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IMSI;
+asn_struct_free_f IMSI_free;
+asn_struct_print_f IMSI_print;
+asn_constr_check_f IMSI_constraint;
+ber_type_decoder_f IMSI_decode_ber;
+der_type_encoder_f IMSI_encode_der;
+xer_type_decoder_f IMSI_decode_xer;
+xer_type_encoder_f IMSI_encode_xer;
+per_type_decoder_f IMSI_decode_uper;
+per_type_encoder_f IMSI_encode_uper;
+per_type_decoder_f IMSI_decode_aper;
+per_type_encoder_f IMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMSI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IMSIDS41.h b/include/osmocom/hnbap/IMSIDS41.h
new file mode 100644
index 0000000..e424742
--- /dev/null
+++ b/include/osmocom/hnbap/IMSIDS41.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IMSIDS41_H_
+#define _IMSIDS41_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IMSIDS41 */
+typedef OCTET_STRING_t IMSIDS41_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IMSIDS41;
+asn_struct_free_f IMSIDS41_free;
+asn_struct_print_f IMSIDS41_print;
+asn_constr_check_f IMSIDS41_constraint;
+ber_type_decoder_f IMSIDS41_decode_ber;
+der_type_encoder_f IMSIDS41_encode_der;
+xer_type_decoder_f IMSIDS41_decode_xer;
+xer_type_encoder_f IMSIDS41_encode_xer;
+per_type_decoder_f IMSIDS41_decode_uper;
+per_type_encoder_f IMSIDS41_encode_uper;
+per_type_decoder_f IMSIDS41_decode_aper;
+per_type_encoder_f IMSIDS41_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMSIDS41_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IMSIESN.h b/include/osmocom/hnbap/IMSIESN.h
new file mode 100644
index 0000000..e68989a
--- /dev/null
+++ b/include/osmocom/hnbap/IMSIESN.h
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IMSIESN_H_
+#define _IMSIESN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/IMSIDS41.h>
+#include <osmocom/hnbap/ESN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IMSIESN */
+typedef struct IMSIESN {
+ IMSIDS41_t iMSIDS41;
+ ESN_t eSN;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} IMSIESN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IMSIESN;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMSIESN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/IP-Address.h b/include/osmocom/hnbap/IP-Address.h
new file mode 100644
index 0000000..501dab1
--- /dev/null
+++ b/include/osmocom/hnbap/IP-Address.h
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _IP_Address_H_
+#define _IP_Address_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/Ipv4Address.h>
+#include <osmocom/hnbap/Ipv6Address.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ipaddress_PR {
+ ipaddress_PR_NOTHING, /* No components present */
+ ipaddress_PR_ipv4info,
+ ipaddress_PR_ipv6info,
+ /* Extensions may appear below */
+
+} ipaddress_PR;
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* IP-Address */
+typedef struct IP_Address {
+ struct ipaddress {
+ ipaddress_PR present;
+ union IP_Address__ipaddress_u {
+ Ipv4Address_t ipv4info;
+ Ipv6Address_t ipv6info;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ipaddress;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} IP_Address_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IP_Address;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _IP_Address_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/InitiatingMessage.h b/include/osmocom/hnbap/InitiatingMessage.h
new file mode 100644
index 0000000..e3c958b
--- /dev/null
+++ b/include/osmocom/hnbap/InitiatingMessage.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _InitiatingMessage_H_
+#define _InitiatingMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/ProcedureCode.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* InitiatingMessage */
+typedef struct InitiatingMessage {
+ ProcedureCode_t procedureCode;
+ Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} InitiatingMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InitiatingMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Ipv4Address.h b/include/osmocom/hnbap/Ipv4Address.h
new file mode 100644
index 0000000..49154ed
--- /dev/null
+++ b/include/osmocom/hnbap/Ipv4Address.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Ipv4Address_H_
+#define _Ipv4Address_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ipv4Address */
+typedef OCTET_STRING_t Ipv4Address_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Ipv4Address;
+asn_struct_free_f Ipv4Address_free;
+asn_struct_print_f Ipv4Address_print;
+asn_constr_check_f Ipv4Address_constraint;
+ber_type_decoder_f Ipv4Address_decode_ber;
+der_type_encoder_f Ipv4Address_encode_der;
+xer_type_decoder_f Ipv4Address_decode_xer;
+xer_type_encoder_f Ipv4Address_encode_xer;
+per_type_decoder_f Ipv4Address_decode_uper;
+per_type_encoder_f Ipv4Address_encode_uper;
+per_type_decoder_f Ipv4Address_decode_aper;
+per_type_encoder_f Ipv4Address_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Ipv4Address_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Ipv6Address.h b/include/osmocom/hnbap/Ipv6Address.h
new file mode 100644
index 0000000..5268e4c
--- /dev/null
+++ b/include/osmocom/hnbap/Ipv6Address.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Ipv6Address_H_
+#define _Ipv6Address_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ipv6Address */
+typedef OCTET_STRING_t Ipv6Address_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Ipv6Address;
+asn_struct_free_f Ipv6Address_free;
+asn_struct_print_f Ipv6Address_print;
+asn_constr_check_f Ipv6Address_constraint;
+ber_type_decoder_f Ipv6Address_decode_ber;
+der_type_encoder_f Ipv6Address_encode_der;
+xer_type_decoder_f Ipv6Address_decode_xer;
+xer_type_encoder_f Ipv6Address_encode_xer;
+per_type_decoder_f Ipv6Address_decode_uper;
+per_type_encoder_f Ipv6Address_encode_uper;
+per_type_decoder_f Ipv6Address_decode_aper;
+per_type_encoder_f Ipv6Address_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Ipv6Address_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h b/include/osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h
new file mode 100644
index 0000000..784f7c9
--- /dev/null
+++ b/include/osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Iurh_Signalling_TNL_AddressList_H_
+#define _Iurh_Signalling_TNL_AddressList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IP_Address;
+
+/* Iurh-Signalling-TNL-AddressList */
+typedef struct Iurh_Signalling_TNL_AddressList {
+ A_SEQUENCE_OF(struct IP_Address) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} Iurh_Signalling_TNL_AddressList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Iurh_Signalling_TNL_AddressList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IP-Address.h>
+
+#endif /* _Iurh_Signalling_TNL_AddressList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/LAC.h b/include/osmocom/hnbap/LAC.h
new file mode 100644
index 0000000..462fd4c
--- /dev/null
+++ b/include/osmocom/hnbap/LAC.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _LAC_H_
+#define _LAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* LAC */
+typedef OCTET_STRING_t LAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LAC;
+asn_struct_free_f LAC_free;
+asn_struct_print_f LAC_print;
+asn_constr_check_f LAC_constraint;
+ber_type_decoder_f LAC_decode_ber;
+der_type_encoder_f LAC_encode_der;
+xer_type_decoder_f LAC_decode_xer;
+xer_type_encoder_f LAC_encode_xer;
+per_type_decoder_f LAC_decode_uper;
+per_type_encoder_f LAC_encode_uper;
+per_type_decoder_f LAC_decode_aper;
+per_type_encoder_f LAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/LAI.h b/include/osmocom/hnbap/LAI.h
new file mode 100644
index 0000000..7537fe3
--- /dev/null
+++ b/include/osmocom/hnbap/LAI.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _LAI_H_
+#define _LAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/PLMNidentity.h>
+#include <osmocom/hnbap/LAC.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* LAI */
+typedef struct LAI {
+ PLMNidentity_t pLMNID;
+ LAC_t lAC;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} LAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/MacroCellID.h b/include/osmocom/hnbap/MacroCellID.h
new file mode 100644
index 0000000..88b4a62
--- /dev/null
+++ b/include/osmocom/hnbap/MacroCellID.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _MacroCellID_H_
+#define _MacroCellID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/UTRANCellID.h>
+#include <osmocom/hnbap/CGI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MacroCellID_PR {
+ MacroCellID_PR_NOTHING, /* No components present */
+ MacroCellID_PR_uTRANCellID,
+ MacroCellID_PR_gERANCellID,
+ /* Extensions may appear below */
+
+} MacroCellID_PR;
+
+/* MacroCellID */
+typedef struct MacroCellID {
+ MacroCellID_PR present;
+ union MacroCellID_u {
+ UTRANCellID_t uTRANCellID;
+ CGI_t gERANCellID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MacroCellID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MacroCellID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MacroCellID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/MacroCoverageInformation.h b/include/osmocom/hnbap/MacroCoverageInformation.h
new file mode 100644
index 0000000..1d3f915
--- /dev/null
+++ b/include/osmocom/hnbap/MacroCoverageInformation.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _MacroCoverageInformation_H_
+#define _MacroCoverageInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/MacroCellID.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* MacroCoverageInformation */
+typedef struct MacroCoverageInformation {
+ MacroCellID_t cellIdentity;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} MacroCoverageInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MacroCoverageInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _MacroCoverageInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Makefile.am b/include/osmocom/hnbap/Makefile.am
new file mode 100644
index 0000000..cd9b720
--- /dev/null
+++ b/include/osmocom/hnbap/Makefile.am
@@ -0,0 +1,120 @@
+noinst_HEADERS = \
+ hnbap_common.h hnbap_ies_defs.h \
+ AccessResult.h \
+ Access-stratum-release-indicator.h \
+ AdditionalNeighbourInfoList.h \
+ AltitudeAndDirection.h \
+ BackoffTimer.h \
+ BindingID.h \
+ Cause.h \
+ CauseMisc.h \
+ CauseProtocol.h \
+ CauseRadioNetwork.h \
+ CauseTransport.h \
+ CELL-FACHMobilitySupport.h \
+ CellIdentity.h \
+ CGI.h \
+ CI.h \
+ CN-DomainIndicator.h \
+ ConfigurationInformation.h \
+ Context-ID.h \
+ CriticalityDiagnostics.h \
+ CriticalityDiagnostics-IE-List.h \
+ Criticality.h \
+ CSG-Capability.h \
+ CSG-ID.h \
+ CSGMembershipStatus.h \
+ CSGMembershipUpdate.h \
+ ErrorIndication.h \
+ ESN.h \
+ GeographicalCoordinates.h \
+ GeographicalLocation.h \
+ GTP-TEI.h \
+ HNBAP-PDU.h \
+ HNBCapacity.h \
+ HNB-Cell-Access-Mode.h \
+ HNB-Cell-Identifier.h \
+ HNBConfigInfo.h \
+ HNBConfigTransferRequest.h \
+ HNBConfigTransferResponse.h \
+ HNBConfigurationInformationMissing.h \
+ HNBConfigurationInformationProvided.h \
+ HNBDe-Register.h \
+ HNB-GWResponse.h \
+ HNB-Identity.h \
+ HNB-Identity-Info.h \
+ HNB-Location-Information.h \
+ HNBRegisterAccept.h \
+ HNBRegisterReject.h \
+ HNBRegisterRequest.h \
+ HNB-RNL-Identity.h \
+ IE-Extensions.h \
+ IE.h \
+ IMEI.h \
+ IMSIDS41.h \
+ IMSIESN.h \
+ IMSI.h \
+ InitiatingMessage.h \
+ IP-Address.h \
+ Ipv4Address.h \
+ Ipv6Address.h \
+ Iurh-Signalling-TNL-AddressList.h \
+ LAC.h \
+ LAI.h \
+ MacroCellID.h \
+ MacroCoverageInformation.h \
+ MuxPortNumber.h \
+ NeighbourCellIdentityList.h \
+ NeighbourIdentity.h \
+ NeighbourInfoList.h \
+ NeighbourInfoRequestItem.h \
+ NeighbourInfoRequestList.h \
+ PLMNidentity.h \
+ Presence.h \
+ PrivateIE-ID.h \
+ PrivateMessage.h \
+ ProcedureCode.h \
+ ProtocolIE-ID.h \
+ PSC.h \
+ PTMSI.h \
+ PTMSIRAI.h \
+ RAB-ID.h \
+ RABList.h \
+ RABListItem.h \
+ RAC.h \
+ RAI.h \
+ Registration-Cause.h \
+ RelocationComplete.h \
+ RNC-ID.h \
+ SAC.h \
+ S-RNTIPrefix.h \
+ SuccessfulOutcome.h \
+ TMSIDS41.h \
+ TMSILAI.h \
+ TNLUpdateFailure.h \
+ TNLUpdateRequest.h \
+ TNLUpdateResponse.h \
+ TransportInfo.h \
+ TransportLayerAddress.h \
+ TriggeringMessage.h \
+ Tunnel-Information.h \
+ TypeOfError.h \
+ UDP-Port-Number.h \
+ UE-Capabilities.h \
+ UEDe-Register.h \
+ UE-Identity.h \
+ UERegisterAccept.h \
+ UERegisterReject.h \
+ UERegisterRequest.h \
+ UnknownU-RNTIIndication.h \
+ UnsuccessfulOutcome.h \
+ Update-cause.h \
+ URAIdentity.h \
+ URAIdentityList.h \
+ U-RNTI.h \
+ U-RNTIQueryRequest.h \
+ U-RNTIQueryResponse.h \
+ UTRANCellID.h
+
+DISTCLEANFILES = \
+ hnbap_ies_defs.h
diff --git a/include/osmocom/hnbap/MuxPortNumber.h b/include/osmocom/hnbap/MuxPortNumber.h
new file mode 100644
index 0000000..2e07f73
--- /dev/null
+++ b/include/osmocom/hnbap/MuxPortNumber.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _MuxPortNumber_H_
+#define _MuxPortNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MuxPortNumber */
+typedef long MuxPortNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MuxPortNumber;
+asn_struct_free_f MuxPortNumber_free;
+asn_struct_print_f MuxPortNumber_print;
+asn_constr_check_f MuxPortNumber_constraint;
+ber_type_decoder_f MuxPortNumber_decode_ber;
+der_type_encoder_f MuxPortNumber_encode_der;
+xer_type_decoder_f MuxPortNumber_decode_xer;
+xer_type_encoder_f MuxPortNumber_encode_xer;
+per_type_decoder_f MuxPortNumber_decode_uper;
+per_type_encoder_f MuxPortNumber_encode_uper;
+per_type_decoder_f MuxPortNumber_decode_aper;
+per_type_encoder_f MuxPortNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MuxPortNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/NeighbourCellIdentityList.h b/include/osmocom/hnbap/NeighbourCellIdentityList.h
new file mode 100644
index 0000000..5b013cc
--- /dev/null
+++ b/include/osmocom/hnbap/NeighbourCellIdentityList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _NeighbourCellIdentityList_H_
+#define _NeighbourCellIdentityList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct NeighbourIdentity;
+
+/* NeighbourCellIdentityList */
+typedef struct NeighbourCellIdentityList {
+ A_SEQUENCE_OF(struct NeighbourIdentity) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NeighbourCellIdentityList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NeighbourCellIdentityList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/NeighbourIdentity.h>
+
+#endif /* _NeighbourCellIdentityList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/NeighbourIdentity.h b/include/osmocom/hnbap/NeighbourIdentity.h
new file mode 100644
index 0000000..290b09d
--- /dev/null
+++ b/include/osmocom/hnbap/NeighbourIdentity.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _NeighbourIdentity_H_
+#define _NeighbourIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNB-RNL-Identity.h>
+#include <osmocom/hnbap/CellIdentity.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NeighbourIdentity_PR {
+ NeighbourIdentity_PR_NOTHING, /* No components present */
+ NeighbourIdentity_PR_hNB_RNL_Identity,
+ NeighbourIdentity_PR_cell_ID,
+ /* Extensions may appear below */
+
+} NeighbourIdentity_PR;
+
+/* NeighbourIdentity */
+typedef struct NeighbourIdentity {
+ NeighbourIdentity_PR present;
+ union NeighbourIdentity_u {
+ HNB_RNL_Identity_t hNB_RNL_Identity;
+ CellIdentity_t cell_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NeighbourIdentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NeighbourIdentity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NeighbourIdentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/NeighbourInfoList.h b/include/osmocom/hnbap/NeighbourInfoList.h
new file mode 100644
index 0000000..0581af4
--- /dev/null
+++ b/include/osmocom/hnbap/NeighbourInfoList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _NeighbourInfoList_H_
+#define _NeighbourInfoList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct HNBConfigInfo;
+
+/* NeighbourInfoList */
+typedef struct NeighbourInfoList {
+ A_SEQUENCE_OF(struct HNBConfigInfo) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NeighbourInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/HNBConfigInfo.h>
+
+#endif /* _NeighbourInfoList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/NeighbourInfoRequestItem.h b/include/osmocom/hnbap/NeighbourInfoRequestItem.h
new file mode 100644
index 0000000..39fd6d7
--- /dev/null
+++ b/include/osmocom/hnbap/NeighbourInfoRequestItem.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _NeighbourInfoRequestItem_H_
+#define _NeighbourInfoRequestItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/HNB-RNL-Identity.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* NeighbourInfoRequestItem */
+typedef struct NeighbourInfoRequestItem {
+ HNB_RNL_Identity_t hnb_RNL_Identity;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NeighbourInfoRequestItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _NeighbourInfoRequestItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/NeighbourInfoRequestList.h b/include/osmocom/hnbap/NeighbourInfoRequestList.h
new file mode 100644
index 0000000..4944272
--- /dev/null
+++ b/include/osmocom/hnbap/NeighbourInfoRequestList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _NeighbourInfoRequestList_H_
+#define _NeighbourInfoRequestList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct NeighbourInfoRequestItem;
+
+/* NeighbourInfoRequestList */
+typedef struct NeighbourInfoRequestList {
+ A_SEQUENCE_OF(struct NeighbourInfoRequestItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} NeighbourInfoRequestList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/NeighbourInfoRequestItem.h>
+
+#endif /* _NeighbourInfoRequestList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PLMNidentity.h b/include/osmocom/hnbap/PLMNidentity.h
new file mode 100644
index 0000000..3abe97a
--- /dev/null
+++ b/include/osmocom/hnbap/PLMNidentity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PLMNidentity_H_
+#define _PLMNidentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PLMNidentity */
+typedef OCTET_STRING_t PLMNidentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMNidentity;
+asn_struct_free_f PLMNidentity_free;
+asn_struct_print_f PLMNidentity_print;
+asn_constr_check_f PLMNidentity_constraint;
+ber_type_decoder_f PLMNidentity_decode_ber;
+der_type_encoder_f PLMNidentity_encode_der;
+xer_type_decoder_f PLMNidentity_decode_xer;
+xer_type_encoder_f PLMNidentity_encode_xer;
+per_type_decoder_f PLMNidentity_decode_uper;
+per_type_encoder_f PLMNidentity_encode_uper;
+per_type_decoder_f PLMNidentity_decode_aper;
+per_type_encoder_f PLMNidentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMNidentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PSC.h b/include/osmocom/hnbap/PSC.h
new file mode 100644
index 0000000..4fbd4be
--- /dev/null
+++ b/include/osmocom/hnbap/PSC.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PSC_H_
+#define _PSC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PSC */
+typedef BIT_STRING_t PSC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PSC;
+asn_struct_free_f PSC_free;
+asn_struct_print_f PSC_print;
+asn_constr_check_f PSC_constraint;
+ber_type_decoder_f PSC_decode_ber;
+der_type_encoder_f PSC_encode_der;
+xer_type_decoder_f PSC_decode_xer;
+xer_type_encoder_f PSC_encode_xer;
+per_type_decoder_f PSC_decode_uper;
+per_type_encoder_f PSC_encode_uper;
+per_type_decoder_f PSC_decode_aper;
+per_type_encoder_f PSC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PSC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PTMSI.h b/include/osmocom/hnbap/PTMSI.h
new file mode 100644
index 0000000..6853624
--- /dev/null
+++ b/include/osmocom/hnbap/PTMSI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PTMSI_H_
+#define _PTMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PTMSI */
+typedef BIT_STRING_t PTMSI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PTMSI;
+asn_struct_free_f PTMSI_free;
+asn_struct_print_f PTMSI_print;
+asn_constr_check_f PTMSI_constraint;
+ber_type_decoder_f PTMSI_decode_ber;
+der_type_encoder_f PTMSI_encode_der;
+xer_type_decoder_f PTMSI_decode_xer;
+xer_type_encoder_f PTMSI_encode_xer;
+per_type_decoder_f PTMSI_decode_uper;
+per_type_encoder_f PTMSI_encode_uper;
+per_type_decoder_f PTMSI_decode_aper;
+per_type_encoder_f PTMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTMSI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PTMSIRAI.h b/include/osmocom/hnbap/PTMSIRAI.h
new file mode 100644
index 0000000..3564393
--- /dev/null
+++ b/include/osmocom/hnbap/PTMSIRAI.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PTMSIRAI_H_
+#define _PTMSIRAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/PTMSI.h>
+#include <osmocom/hnbap/RAI.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PTMSIRAI */
+typedef struct PTMSIRAI {
+ PTMSI_t pTMSI;
+ RAI_t rAI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} PTMSIRAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PTMSIRAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTMSIRAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Presence.h b/include/osmocom/hnbap/Presence.h
new file mode 100644
index 0000000..a3773aa
--- /dev/null
+++ b/include/osmocom/hnbap/Presence.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Presence_H_
+#define _Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Presence {
+ Presence_optional = 0,
+ Presence_conditional = 1,
+ Presence_mandatory = 2
+} e_Presence;
+
+/* Presence */
+typedef long Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Presence;
+asn_struct_free_f Presence_free;
+asn_struct_print_f Presence_print;
+asn_constr_check_f Presence_constraint;
+ber_type_decoder_f Presence_decode_ber;
+der_type_encoder_f Presence_encode_der;
+xer_type_decoder_f Presence_decode_xer;
+xer_type_encoder_f Presence_encode_xer;
+per_type_decoder_f Presence_decode_uper;
+per_type_encoder_f Presence_encode_uper;
+per_type_decoder_f Presence_decode_aper;
+per_type_encoder_f Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Presence_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PrivateIE-ID.h b/include/osmocom/hnbap/PrivateIE-ID.h
new file mode 100644
index 0000000..890974e
--- /dev/null
+++ b/include/osmocom/hnbap/PrivateIE-ID.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PrivateIE_ID_H_
+#define _PrivateIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <OBJECT_IDENTIFIER.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PrivateIE_ID_PR {
+ PrivateIE_ID_PR_NOTHING, /* No components present */
+ PrivateIE_ID_PR_local,
+ PrivateIE_ID_PR_global
+} PrivateIE_ID_PR;
+
+/* PrivateIE-ID */
+typedef struct PrivateIE_ID {
+ PrivateIE_ID_PR present;
+ union PrivateIE_ID_u {
+ long local;
+ OBJECT_IDENTIFIER_t global;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} PrivateIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PrivateIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/PrivateMessage.h b/include/osmocom/hnbap/PrivateMessage.h
new file mode 100644
index 0000000..a9e65bb
--- /dev/null
+++ b/include/osmocom/hnbap/PrivateMessage.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _PrivateMessage_H_
+#define _PrivateMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* PrivateMessage */
+typedef struct PrivateMessage {
+ struct privateMessage_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } privateMessage_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} PrivateMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _PrivateMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/ProcedureCode.h b/include/osmocom/hnbap/ProcedureCode.h
new file mode 100644
index 0000000..a48f453
--- /dev/null
+++ b/include/osmocom/hnbap/ProcedureCode.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _ProcedureCode_H_
+#define _ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ProcedureCode {
+ ProcedureCode_id_HNBRegister = 1,
+ ProcedureCode_id_HNBDe_Register = 2,
+ ProcedureCode_id_UERegister = 3,
+ ProcedureCode_id_UEDe_Register = 4,
+ ProcedureCode_id_ErrorIndication = 5,
+ ProcedureCode_id_privateMessage = 6,
+ ProcedureCode_id_CSGMembershipUpdate = 7,
+ ProcedureCode_id_TNLUpdate = 9,
+ ProcedureCode_id_HNBConfigTransfer = 10,
+ ProcedureCode_id_RelocationComplete = 11,
+ ProcedureCode_id_U_RNTIQuery = 14
+} e_ProcedureCode;
+
+/* ProcedureCode */
+typedef long ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode;
+asn_struct_free_f ProcedureCode_free;
+asn_struct_print_f ProcedureCode_print;
+asn_constr_check_f ProcedureCode_constraint;
+ber_type_decoder_f ProcedureCode_decode_ber;
+der_type_encoder_f ProcedureCode_encode_der;
+xer_type_decoder_f ProcedureCode_decode_xer;
+xer_type_encoder_f ProcedureCode_encode_xer;
+per_type_decoder_f ProcedureCode_decode_uper;
+per_type_encoder_f ProcedureCode_encode_uper;
+per_type_decoder_f ProcedureCode_decode_aper;
+per_type_encoder_f ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/ProtocolIE-ID.h b/include/osmocom/hnbap/ProtocolIE-ID.h
new file mode 100644
index 0000000..3252e97
--- /dev/null
+++ b/include/osmocom/hnbap/ProtocolIE-ID.h
@@ -0,0 +1,89 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _ProtocolIE_ID_H_
+#define _ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ProtocolIE_ID {
+ ProtocolIE_ID_id_Cause = 1,
+ ProtocolIE_ID_id_CriticalityDiagnostics = 2,
+ ProtocolIE_ID_id_HNB_Identity = 3,
+ ProtocolIE_ID_id_Context_ID = 4,
+ ProtocolIE_ID_id_UE_Identity = 5,
+ ProtocolIE_ID_id_LAC = 6,
+ ProtocolIE_ID_id_RAC = 7,
+ ProtocolIE_ID_id_HNB_Location_Information = 8,
+ ProtocolIE_ID_id_PLMNidentity = 9,
+ ProtocolIE_ID_id_SAC = 10,
+ ProtocolIE_ID_id_CellIdentity = 11,
+ ProtocolIE_ID_id_Registration_Cause = 12,
+ ProtocolIE_ID_id_UE_Capabilities = 13,
+ ProtocolIE_ID_id_RNC_ID = 14,
+ ProtocolIE_ID_id_CSG_ID = 15,
+ ProtocolIE_ID_id_BackoffTimer = 16,
+ ProtocolIE_ID_id_HNB_Internet_Information = 17,
+ ProtocolIE_ID_id_HNB_Cell_Access_Mode = 18,
+ ProtocolIE_ID_id_MuxPortNumber = 19,
+ ProtocolIE_ID_id_Service_Area_For_Broadcast = 20,
+ ProtocolIE_ID_id_CSGMembershipStatus = 21,
+ ProtocolIE_ID_id_RABList = 22,
+ ProtocolIE_ID_id_HNBConfigInfo = 23,
+ ProtocolIE_ID_id_AccessResult = 25,
+ ProtocolIE_ID_id_Update_cause = 26,
+ ProtocolIE_ID_id_NeighbourInfoList = 27,
+ ProtocolIE_ID_id_NeighbourInfoRequestList = 28,
+ ProtocolIE_ID_id_Iurh_Signalling_TNL_Address = 29,
+ ProtocolIE_ID_id_PSC = 30,
+ ProtocolIE_ID_id_HNB_Cell_Identifier = 31,
+ ProtocolIE_ID_id_Tunnel_Information = 41,
+ ProtocolIE_ID_id_CELL_FACHMobilitySupport = 42,
+ ProtocolIE_ID_id_S_RNTIPrefix = 43,
+ ProtocolIE_ID_id_URAIdentity = 44,
+ ProtocolIE_ID_id_NeighbourIdentity = 45,
+ ProtocolIE_ID_id_HNBCapacity = 46,
+ ProtocolIE_ID_id_NeighbourCellIdentityList = 47,
+ ProtocolIE_ID_id_AdditionalNeighbourInfoList = 48,
+ ProtocolIE_ID_id_U_RNTI = 49,
+ ProtocolIE_ID_id_UnknownU_RNTIIndication = 50,
+ ProtocolIE_ID_id_HNB_GWResponse = 51,
+ ProtocolIE_ID_id_URAIdentityList = 52
+} e_ProtocolIE_ID;
+
+/* ProtocolIE-ID */
+typedef long ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID;
+asn_struct_free_f ProtocolIE_ID_free;
+asn_struct_print_f ProtocolIE_ID_print;
+asn_constr_check_f ProtocolIE_ID_constraint;
+ber_type_decoder_f ProtocolIE_ID_decode_ber;
+der_type_encoder_f ProtocolIE_ID_encode_der;
+xer_type_decoder_f ProtocolIE_ID_decode_xer;
+xer_type_encoder_f ProtocolIE_ID_encode_xer;
+per_type_decoder_f ProtocolIE_ID_decode_uper;
+per_type_encoder_f ProtocolIE_ID_encode_uper;
+per_type_decoder_f ProtocolIE_ID_decode_aper;
+per_type_encoder_f ProtocolIE_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RAB-ID.h b/include/osmocom/hnbap/RAB-ID.h
new file mode 100644
index 0000000..45cf69e
--- /dev/null
+++ b/include/osmocom/hnbap/RAB-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RAB_ID_H_
+#define _RAB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAB-ID */
+typedef BIT_STRING_t RAB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAB_ID;
+asn_struct_free_f RAB_ID_free;
+asn_struct_print_f RAB_ID_print;
+asn_constr_check_f RAB_ID_constraint;
+ber_type_decoder_f RAB_ID_decode_ber;
+der_type_encoder_f RAB_ID_encode_der;
+xer_type_decoder_f RAB_ID_decode_xer;
+xer_type_encoder_f RAB_ID_encode_xer;
+per_type_decoder_f RAB_ID_decode_uper;
+per_type_encoder_f RAB_ID_encode_uper;
+per_type_decoder_f RAB_ID_decode_aper;
+per_type_encoder_f RAB_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RABList.h b/include/osmocom/hnbap/RABList.h
new file mode 100644
index 0000000..9dff419
--- /dev/null
+++ b/include/osmocom/hnbap/RABList.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RABList_H_
+#define _RABList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RABListItem;
+
+/* RABList */
+typedef struct RABList {
+ A_SEQUENCE_OF(struct RABListItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RABList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RABList;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/RABListItem.h>
+
+#endif /* _RABList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RABListItem.h b/include/osmocom/hnbap/RABListItem.h
new file mode 100644
index 0000000..3d5a9e9
--- /dev/null
+++ b/include/osmocom/hnbap/RABListItem.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RABListItem_H_
+#define _RABListItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/RAB-ID.h>
+#include <osmocom/hnbap/TransportInfo.h>
+#include <osmocom/hnbap/CN-DomainIndicator.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* RABListItem */
+typedef struct RABListItem {
+ RAB_ID_t rAB_ID;
+ TransportInfo_t old_transport_Info;
+ TransportInfo_t new_transport_Info;
+ CN_DomainIndicator_t cn_domain_indicator;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RABListItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RABListItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _RABListItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RAC.h b/include/osmocom/hnbap/RAC.h
new file mode 100644
index 0000000..bf61f44
--- /dev/null
+++ b/include/osmocom/hnbap/RAC.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RAC_H_
+#define _RAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAC */
+typedef OCTET_STRING_t RAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAC;
+asn_struct_free_f RAC_free;
+asn_struct_print_f RAC_print;
+asn_constr_check_f RAC_constraint;
+ber_type_decoder_f RAC_decode_ber;
+der_type_encoder_f RAC_encode_der;
+xer_type_decoder_f RAC_decode_xer;
+xer_type_encoder_f RAC_encode_xer;
+per_type_decoder_f RAC_decode_uper;
+per_type_encoder_f RAC_encode_uper;
+per_type_decoder_f RAC_decode_aper;
+per_type_encoder_f RAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RAI.h b/include/osmocom/hnbap/RAI.h
new file mode 100644
index 0000000..a044246
--- /dev/null
+++ b/include/osmocom/hnbap/RAI.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RAI_H_
+#define _RAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/LAI.h>
+#include <osmocom/hnbap/RAC.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAI */
+typedef struct RAI {
+ LAI_t lAI;
+ RAC_t rAC;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RNC-ID.h b/include/osmocom/hnbap/RNC-ID.h
new file mode 100644
index 0000000..c42f984
--- /dev/null
+++ b/include/osmocom/hnbap/RNC-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RNC_ID_H_
+#define _RNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RNC-ID */
+typedef long RNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RNC_ID;
+asn_struct_free_f RNC_ID_free;
+asn_struct_print_f RNC_ID_print;
+asn_constr_check_f RNC_ID_constraint;
+ber_type_decoder_f RNC_ID_decode_ber;
+der_type_encoder_f RNC_ID_encode_der;
+xer_type_decoder_f RNC_ID_decode_xer;
+xer_type_encoder_f RNC_ID_encode_xer;
+per_type_decoder_f RNC_ID_decode_uper;
+per_type_encoder_f RNC_ID_encode_uper;
+per_type_decoder_f RNC_ID_decode_aper;
+per_type_encoder_f RNC_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Registration-Cause.h b/include/osmocom/hnbap/Registration-Cause.h
new file mode 100644
index 0000000..c137068
--- /dev/null
+++ b/include/osmocom/hnbap/Registration-Cause.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Registration_Cause_H_
+#define _Registration_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Registration_Cause {
+ Registration_Cause_emergency_call = 0,
+ Registration_Cause_normal = 1,
+ /*
+ * Enumeration is extensible
+ */
+ Registration_Cause_ue_relocation = 2
+} e_Registration_Cause;
+
+/* Registration-Cause */
+typedef long Registration_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Registration_Cause;
+asn_struct_free_f Registration_Cause_free;
+asn_struct_print_f Registration_Cause_print;
+asn_constr_check_f Registration_Cause_constraint;
+ber_type_decoder_f Registration_Cause_decode_ber;
+der_type_encoder_f Registration_Cause_encode_der;
+xer_type_decoder_f Registration_Cause_decode_xer;
+xer_type_encoder_f Registration_Cause_encode_xer;
+per_type_decoder_f Registration_Cause_decode_uper;
+per_type_encoder_f Registration_Cause_encode_uper;
+per_type_decoder_f Registration_Cause_decode_aper;
+per_type_encoder_f Registration_Cause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Registration_Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/RelocationComplete.h b/include/osmocom/hnbap/RelocationComplete.h
new file mode 100644
index 0000000..4dd2a2d
--- /dev/null
+++ b/include/osmocom/hnbap/RelocationComplete.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _RelocationComplete_H_
+#define _RelocationComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* RelocationComplete */
+typedef struct RelocationComplete {
+ struct relocationComplete_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationComplete_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RelocationComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RelocationComplete;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _RelocationComplete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/S-RNTIPrefix.h b/include/osmocom/hnbap/S-RNTIPrefix.h
new file mode 100644
index 0000000..072e305
--- /dev/null
+++ b/include/osmocom/hnbap/S-RNTIPrefix.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _S_RNTIPrefix_H_
+#define _S_RNTIPrefix_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* S-RNTIPrefix */
+typedef BIT_STRING_t S_RNTIPrefix_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_S_RNTIPrefix;
+asn_struct_free_f S_RNTIPrefix_free;
+asn_struct_print_f S_RNTIPrefix_print;
+asn_constr_check_f S_RNTIPrefix_constraint;
+ber_type_decoder_f S_RNTIPrefix_decode_ber;
+der_type_encoder_f S_RNTIPrefix_encode_der;
+xer_type_decoder_f S_RNTIPrefix_decode_xer;
+xer_type_encoder_f S_RNTIPrefix_encode_xer;
+per_type_decoder_f S_RNTIPrefix_decode_uper;
+per_type_encoder_f S_RNTIPrefix_encode_uper;
+per_type_decoder_f S_RNTIPrefix_decode_aper;
+per_type_encoder_f S_RNTIPrefix_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _S_RNTIPrefix_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/SAC.h b/include/osmocom/hnbap/SAC.h
new file mode 100644
index 0000000..5362968
--- /dev/null
+++ b/include/osmocom/hnbap/SAC.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _SAC_H_
+#define _SAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SAC */
+typedef OCTET_STRING_t SAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SAC;
+asn_struct_free_f SAC_free;
+asn_struct_print_f SAC_print;
+asn_constr_check_f SAC_constraint;
+ber_type_decoder_f SAC_decode_ber;
+der_type_encoder_f SAC_encode_der;
+xer_type_decoder_f SAC_decode_xer;
+xer_type_encoder_f SAC_encode_xer;
+per_type_decoder_f SAC_decode_uper;
+per_type_encoder_f SAC_encode_uper;
+per_type_decoder_f SAC_decode_aper;
+per_type_encoder_f SAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/SuccessfulOutcome.h b/include/osmocom/hnbap/SuccessfulOutcome.h
new file mode 100644
index 0000000..fc53d89
--- /dev/null
+++ b/include/osmocom/hnbap/SuccessfulOutcome.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _SuccessfulOutcome_H_
+#define _SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/ProcedureCode.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SuccessfulOutcome */
+typedef struct SuccessfulOutcome {
+ ProcedureCode_t procedureCode;
+ Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TMSIDS41.h b/include/osmocom/hnbap/TMSIDS41.h
new file mode 100644
index 0000000..1cd21a4
--- /dev/null
+++ b/include/osmocom/hnbap/TMSIDS41.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TMSIDS41_H_
+#define _TMSIDS41_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TMSIDS41 */
+typedef OCTET_STRING_t TMSIDS41_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TMSIDS41;
+asn_struct_free_f TMSIDS41_free;
+asn_struct_print_f TMSIDS41_print;
+asn_constr_check_f TMSIDS41_constraint;
+ber_type_decoder_f TMSIDS41_decode_ber;
+der_type_encoder_f TMSIDS41_encode_der;
+xer_type_decoder_f TMSIDS41_decode_xer;
+xer_type_encoder_f TMSIDS41_encode_xer;
+per_type_decoder_f TMSIDS41_decode_uper;
+per_type_encoder_f TMSIDS41_encode_uper;
+per_type_decoder_f TMSIDS41_decode_aper;
+per_type_encoder_f TMSIDS41_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TMSIDS41_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TMSILAI.h b/include/osmocom/hnbap/TMSILAI.h
new file mode 100644
index 0000000..ee38a24
--- /dev/null
+++ b/include/osmocom/hnbap/TMSILAI.h
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TMSILAI_H_
+#define _TMSILAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <osmocom/hnbap/LAI.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TMSILAI */
+typedef struct TMSILAI {
+ BIT_STRING_t tMSI;
+ LAI_t lAI;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TMSILAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TMSILAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TMSILAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TNLUpdateFailure.h b/include/osmocom/hnbap/TNLUpdateFailure.h
new file mode 100644
index 0000000..91ea963
--- /dev/null
+++ b/include/osmocom/hnbap/TNLUpdateFailure.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TNLUpdateFailure_H_
+#define _TNLUpdateFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* TNLUpdateFailure */
+typedef struct TNLUpdateFailure {
+ struct tnlUpdateFailure_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } tnlUpdateFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TNLUpdateFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _TNLUpdateFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TNLUpdateRequest.h b/include/osmocom/hnbap/TNLUpdateRequest.h
new file mode 100644
index 0000000..c87702c
--- /dev/null
+++ b/include/osmocom/hnbap/TNLUpdateRequest.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TNLUpdateRequest_H_
+#define _TNLUpdateRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* TNLUpdateRequest */
+typedef struct TNLUpdateRequest {
+ struct tnlUpdateRequest_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } tnlUpdateRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TNLUpdateRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _TNLUpdateRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TNLUpdateResponse.h b/include/osmocom/hnbap/TNLUpdateResponse.h
new file mode 100644
index 0000000..01ca4c6
--- /dev/null
+++ b/include/osmocom/hnbap/TNLUpdateResponse.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TNLUpdateResponse_H_
+#define _TNLUpdateResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* TNLUpdateResponse */
+typedef struct TNLUpdateResponse {
+ struct tnlUpdateResponse_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } tnlUpdateResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TNLUpdateResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TNLUpdateResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _TNLUpdateResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TransportInfo.h b/include/osmocom/hnbap/TransportInfo.h
new file mode 100644
index 0000000..dcd6420
--- /dev/null
+++ b/include/osmocom/hnbap/TransportInfo.h
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TransportInfo_H_
+#define _TransportInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/TransportLayerAddress.h>
+#include <osmocom/hnbap/GTP-TEI.h>
+#include <osmocom/hnbap/BindingID.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum transportAssociation_PR {
+ transportAssociation_PR_NOTHING, /* No components present */
+ transportAssociation_PR_gtp_TEI,
+ transportAssociation_PR_bindingID,
+ /* Extensions may appear below */
+
+} transportAssociation_PR;
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* TransportInfo */
+typedef struct TransportInfo {
+ TransportLayerAddress_t transportLayerAddress;
+ struct transportAssociation {
+ transportAssociation_PR present;
+ union TransportInfo__transportAssociation_u {
+ GTP_TEI_t gtp_TEI;
+ BindingID_t bindingID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } transportAssociation;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} TransportInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TransportInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _TransportInfo_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TransportLayerAddress.h b/include/osmocom/hnbap/TransportLayerAddress.h
new file mode 100644
index 0000000..d320738
--- /dev/null
+++ b/include/osmocom/hnbap/TransportLayerAddress.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TransportLayerAddress_H_
+#define _TransportLayerAddress_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TransportLayerAddress */
+typedef BIT_STRING_t TransportLayerAddress_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress;
+asn_struct_free_f TransportLayerAddress_free;
+asn_struct_print_f TransportLayerAddress_print;
+asn_constr_check_f TransportLayerAddress_constraint;
+ber_type_decoder_f TransportLayerAddress_decode_ber;
+der_type_encoder_f TransportLayerAddress_encode_der;
+xer_type_decoder_f TransportLayerAddress_decode_xer;
+xer_type_encoder_f TransportLayerAddress_encode_xer;
+per_type_decoder_f TransportLayerAddress_decode_uper;
+per_type_encoder_f TransportLayerAddress_encode_uper;
+per_type_decoder_f TransportLayerAddress_decode_aper;
+per_type_encoder_f TransportLayerAddress_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TransportLayerAddress_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TriggeringMessage.h b/include/osmocom/hnbap/TriggeringMessage.h
new file mode 100644
index 0000000..3854505
--- /dev/null
+++ b/include/osmocom/hnbap/TriggeringMessage.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TriggeringMessage_H_
+#define _TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TriggeringMessage {
+ TriggeringMessage_initiating_message = 0,
+ TriggeringMessage_successful_outcome = 1,
+ TriggeringMessage_unsuccessful_outcome = 2
+} e_TriggeringMessage;
+
+/* TriggeringMessage */
+typedef long TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage;
+asn_struct_free_f TriggeringMessage_free;
+asn_struct_print_f TriggeringMessage_print;
+asn_constr_check_f TriggeringMessage_constraint;
+ber_type_decoder_f TriggeringMessage_decode_ber;
+der_type_encoder_f TriggeringMessage_encode_der;
+xer_type_decoder_f TriggeringMessage_decode_xer;
+xer_type_encoder_f TriggeringMessage_encode_xer;
+per_type_decoder_f TriggeringMessage_decode_uper;
+per_type_encoder_f TriggeringMessage_encode_uper;
+per_type_decoder_f TriggeringMessage_decode_aper;
+per_type_encoder_f TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Tunnel-Information.h b/include/osmocom/hnbap/Tunnel-Information.h
new file mode 100644
index 0000000..e01de71
--- /dev/null
+++ b/include/osmocom/hnbap/Tunnel-Information.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Tunnel_Information_H_
+#define _Tunnel_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/IP-Address.h>
+#include <osmocom/hnbap/UDP-Port-Number.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* Tunnel-Information */
+typedef struct Tunnel_Information {
+ IP_Address_t iP_Address;
+ UDP_Port_Number_t *uDP_Port_Number /* OPTIONAL */;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} Tunnel_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Tunnel_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _Tunnel_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/TypeOfError.h b/include/osmocom/hnbap/TypeOfError.h
new file mode 100644
index 0000000..7e0fcf0
--- /dev/null
+++ b/include/osmocom/hnbap/TypeOfError.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _TypeOfError_H_
+#define _TypeOfError_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TypeOfError {
+ TypeOfError_not_understood = 0,
+ TypeOfError_missing = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_TypeOfError;
+
+/* TypeOfError */
+typedef long TypeOfError_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TypeOfError;
+asn_struct_free_f TypeOfError_free;
+asn_struct_print_f TypeOfError_print;
+asn_constr_check_f TypeOfError_constraint;
+ber_type_decoder_f TypeOfError_decode_ber;
+der_type_encoder_f TypeOfError_encode_der;
+xer_type_decoder_f TypeOfError_decode_xer;
+xer_type_encoder_f TypeOfError_encode_xer;
+per_type_decoder_f TypeOfError_decode_uper;
+per_type_encoder_f TypeOfError_encode_uper;
+per_type_decoder_f TypeOfError_decode_aper;
+per_type_encoder_f TypeOfError_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TypeOfError_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/U-RNTI.h b/include/osmocom/hnbap/U-RNTI.h
new file mode 100644
index 0000000..81ab168
--- /dev/null
+++ b/include/osmocom/hnbap/U-RNTI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _U_RNTI_H_
+#define _U_RNTI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* U-RNTI */
+typedef BIT_STRING_t U_RNTI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_U_RNTI;
+asn_struct_free_f U_RNTI_free;
+asn_struct_print_f U_RNTI_print;
+asn_constr_check_f U_RNTI_constraint;
+ber_type_decoder_f U_RNTI_decode_ber;
+der_type_encoder_f U_RNTI_encode_der;
+xer_type_decoder_f U_RNTI_decode_xer;
+xer_type_encoder_f U_RNTI_encode_xer;
+per_type_decoder_f U_RNTI_decode_uper;
+per_type_encoder_f U_RNTI_encode_uper;
+per_type_decoder_f U_RNTI_decode_aper;
+per_type_encoder_f U_RNTI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _U_RNTI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/U-RNTIQueryRequest.h b/include/osmocom/hnbap/U-RNTIQueryRequest.h
new file mode 100644
index 0000000..7403c0a
--- /dev/null
+++ b/include/osmocom/hnbap/U-RNTIQueryRequest.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _U_RNTIQueryRequest_H_
+#define _U_RNTIQueryRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* U-RNTIQueryRequest */
+typedef struct U_RNTIQueryRequest {
+ struct u_RNTIQueryRequest_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } u_RNTIQueryRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} U_RNTIQueryRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _U_RNTIQueryRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/U-RNTIQueryResponse.h b/include/osmocom/hnbap/U-RNTIQueryResponse.h
new file mode 100644
index 0000000..730144f
--- /dev/null
+++ b/include/osmocom/hnbap/U-RNTIQueryResponse.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _U_RNTIQueryResponse_H_
+#define _U_RNTIQueryResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* U-RNTIQueryResponse */
+typedef struct U_RNTIQueryResponse {
+ struct u_RNTIQueryResponse_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } u_RNTIQueryResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} U_RNTIQueryResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _U_RNTIQueryResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UDP-Port-Number.h b/include/osmocom/hnbap/UDP-Port-Number.h
new file mode 100644
index 0000000..0f350cb
--- /dev/null
+++ b/include/osmocom/hnbap/UDP-Port-Number.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UDP_Port_Number_H_
+#define _UDP_Port_Number_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UDP-Port-Number */
+typedef OCTET_STRING_t UDP_Port_Number_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UDP_Port_Number;
+asn_struct_free_f UDP_Port_Number_free;
+asn_struct_print_f UDP_Port_Number_print;
+asn_constr_check_f UDP_Port_Number_constraint;
+ber_type_decoder_f UDP_Port_Number_decode_ber;
+der_type_encoder_f UDP_Port_Number_encode_der;
+xer_type_decoder_f UDP_Port_Number_decode_xer;
+xer_type_encoder_f UDP_Port_Number_encode_xer;
+per_type_decoder_f UDP_Port_Number_decode_uper;
+per_type_encoder_f UDP_Port_Number_encode_uper;
+per_type_decoder_f UDP_Port_Number_decode_aper;
+per_type_encoder_f UDP_Port_Number_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UDP_Port_Number_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UE-Capabilities.h b/include/osmocom/hnbap/UE-Capabilities.h
new file mode 100644
index 0000000..1274bbf
--- /dev/null
+++ b/include/osmocom/hnbap/UE-Capabilities.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UE_Capabilities_H_
+#define _UE_Capabilities_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/Access-stratum-release-indicator.h>
+#include <osmocom/hnbap/CSG-Capability.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* UE-Capabilities */
+typedef struct UE_Capabilities {
+ Access_stratum_release_indicator_t access_stratum_release_indicator;
+ CSG_Capability_t csg_capability;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UE_Capabilities_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_Capabilities;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _UE_Capabilities_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UE-Identity.h b/include/osmocom/hnbap/UE-Identity.h
new file mode 100644
index 0000000..f0f012a
--- /dev/null
+++ b/include/osmocom/hnbap/UE-Identity.h
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UE_Identity_H_
+#define _UE_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/IMSI.h>
+#include <osmocom/hnbap/TMSILAI.h>
+#include <osmocom/hnbap/PTMSIRAI.h>
+#include <osmocom/hnbap/IMEI.h>
+#include <osmocom/hnbap/ESN.h>
+#include <osmocom/hnbap/IMSIDS41.h>
+#include <osmocom/hnbap/IMSIESN.h>
+#include <osmocom/hnbap/TMSIDS41.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UE_Identity_PR {
+ UE_Identity_PR_NOTHING, /* No components present */
+ UE_Identity_PR_iMSI,
+ UE_Identity_PR_tMSILAI,
+ UE_Identity_PR_pTMSIRAI,
+ UE_Identity_PR_iMEI,
+ UE_Identity_PR_eSN,
+ UE_Identity_PR_iMSIDS41,
+ UE_Identity_PR_iMSIESN,
+ UE_Identity_PR_tMSIDS41,
+ /* Extensions may appear below */
+
+} UE_Identity_PR;
+
+/* UE-Identity */
+typedef struct UE_Identity {
+ UE_Identity_PR present;
+ union UE_Identity_u {
+ IMSI_t iMSI;
+ TMSILAI_t tMSILAI;
+ PTMSIRAI_t pTMSIRAI;
+ IMEI_t iMEI;
+ ESN_t eSN;
+ IMSIDS41_t iMSIDS41;
+ IMSIESN_t iMSIESN;
+ TMSIDS41_t tMSIDS41;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UE_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_Identity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_Identity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UEDe-Register.h b/include/osmocom/hnbap/UEDe-Register.h
new file mode 100644
index 0000000..dab4334
--- /dev/null
+++ b/include/osmocom/hnbap/UEDe-Register.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UEDe_Register_H_
+#define _UEDe_Register_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* UEDe-Register */
+typedef struct UEDe_Register {
+ struct ueDe_Register_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueDe_Register_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UEDe_Register_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEDe_Register;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _UEDe_Register_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UERegisterAccept.h b/include/osmocom/hnbap/UERegisterAccept.h
new file mode 100644
index 0000000..de630b1
--- /dev/null
+++ b/include/osmocom/hnbap/UERegisterAccept.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UERegisterAccept_H_
+#define _UERegisterAccept_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* UERegisterAccept */
+typedef struct UERegisterAccept {
+ struct ueRegisterAccept_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueRegisterAccept_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UERegisterAccept_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERegisterAccept;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _UERegisterAccept_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UERegisterReject.h b/include/osmocom/hnbap/UERegisterReject.h
new file mode 100644
index 0000000..abda80d
--- /dev/null
+++ b/include/osmocom/hnbap/UERegisterReject.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UERegisterReject_H_
+#define _UERegisterReject_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* UERegisterReject */
+typedef struct UERegisterReject {
+ struct ueRegisterReject_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueRegisterReject_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UERegisterReject_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERegisterReject;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _UERegisterReject_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UERegisterRequest.h b/include/osmocom/hnbap/UERegisterRequest.h
new file mode 100644
index 0000000..09d6a29
--- /dev/null
+++ b/include/osmocom/hnbap/UERegisterRequest.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UERegisterRequest_H_
+#define _UERegisterRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE;
+
+/* UERegisterRequest */
+typedef struct UERegisterRequest {
+ struct ueRegisterRequest_ies {
+ A_SEQUENCE_OF(struct IE) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueRegisterRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UERegisterRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERegisterRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE.h>
+
+#endif /* _UERegisterRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/URAIdentity.h b/include/osmocom/hnbap/URAIdentity.h
new file mode 100644
index 0000000..ec2c4bc
--- /dev/null
+++ b/include/osmocom/hnbap/URAIdentity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _URAIdentity_H_
+#define _URAIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* URAIdentity */
+typedef long URAIdentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_URAIdentity;
+asn_struct_free_f URAIdentity_free;
+asn_struct_print_f URAIdentity_print;
+asn_constr_check_f URAIdentity_constraint;
+ber_type_decoder_f URAIdentity_decode_ber;
+der_type_encoder_f URAIdentity_encode_der;
+xer_type_decoder_f URAIdentity_decode_xer;
+xer_type_encoder_f URAIdentity_encode_xer;
+per_type_decoder_f URAIdentity_decode_uper;
+per_type_encoder_f URAIdentity_encode_uper;
+per_type_decoder_f URAIdentity_decode_aper;
+per_type_encoder_f URAIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _URAIdentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/URAIdentityList.h b/include/osmocom/hnbap/URAIdentityList.h
new file mode 100644
index 0000000..b4c8a36
--- /dev/null
+++ b/include/osmocom/hnbap/URAIdentityList.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _URAIdentityList_H_
+#define _URAIdentityList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/URAIdentity.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* URAIdentityList */
+typedef struct URAIdentityList {
+ A_SEQUENCE_OF(URAIdentity_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} URAIdentityList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_URAIdentityList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _URAIdentityList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UTRANCellID.h b/include/osmocom/hnbap/UTRANCellID.h
new file mode 100644
index 0000000..39c5b84
--- /dev/null
+++ b/include/osmocom/hnbap/UTRANCellID.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UTRANCellID_H_
+#define _UTRANCellID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/LAC.h>
+#include <osmocom/hnbap/RAC.h>
+#include <osmocom/hnbap/PLMNidentity.h>
+#include <osmocom/hnbap/CellIdentity.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IE_Extensions;
+
+/* UTRANCellID */
+typedef struct UTRANCellID {
+ LAC_t lAC;
+ RAC_t rAC;
+ PLMNidentity_t pLMNidentity;
+ CellIdentity_t uTRANcellID;
+ struct IE_Extensions *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UTRANCellID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UTRANCellID;
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include <osmocom/hnbap/IE-Extensions.h>
+
+#endif /* _UTRANCellID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UnknownU-RNTIIndication.h b/include/osmocom/hnbap/UnknownU-RNTIIndication.h
new file mode 100644
index 0000000..d0f2a9a
--- /dev/null
+++ b/include/osmocom/hnbap/UnknownU-RNTIIndication.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UnknownU_RNTIIndication_H_
+#define _UnknownU_RNTIIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UnknownU_RNTIIndication {
+ UnknownU_RNTIIndication_unknown = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_UnknownU_RNTIIndication;
+
+/* UnknownU-RNTIIndication */
+typedef long UnknownU_RNTIIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UnknownU_RNTIIndication;
+asn_struct_free_f UnknownU_RNTIIndication_free;
+asn_struct_print_f UnknownU_RNTIIndication_print;
+asn_constr_check_f UnknownU_RNTIIndication_constraint;
+ber_type_decoder_f UnknownU_RNTIIndication_decode_ber;
+der_type_encoder_f UnknownU_RNTIIndication_encode_der;
+xer_type_decoder_f UnknownU_RNTIIndication_decode_xer;
+xer_type_encoder_f UnknownU_RNTIIndication_encode_xer;
+per_type_decoder_f UnknownU_RNTIIndication_decode_uper;
+per_type_encoder_f UnknownU_RNTIIndication_encode_uper;
+per_type_decoder_f UnknownU_RNTIIndication_decode_aper;
+per_type_encoder_f UnknownU_RNTIIndication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UnknownU_RNTIIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/UnsuccessfulOutcome.h b/include/osmocom/hnbap/UnsuccessfulOutcome.h
new file mode 100644
index 0000000..5fd9bd0
--- /dev/null
+++ b/include/osmocom/hnbap/UnsuccessfulOutcome.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _UnsuccessfulOutcome_H_
+#define _UnsuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/hnbap/ProcedureCode.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UnsuccessfulOutcome */
+typedef struct UnsuccessfulOutcome {
+ ProcedureCode_t procedureCode;
+ Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} UnsuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UnsuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/Update-cause.h b/include/osmocom/hnbap/Update-cause.h
new file mode 100644
index 0000000..cff96e1
--- /dev/null
+++ b/include/osmocom/hnbap/Update-cause.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#ifndef _Update_cause_H_
+#define _Update_cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Update_cause {
+ Update_cause_relocation_preparation = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_Update_cause;
+
+/* Update-cause */
+typedef long Update_cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Update_cause;
+asn_struct_free_f Update_cause_free;
+asn_struct_print_f Update_cause_print;
+asn_constr_check_f Update_cause_constraint;
+ber_type_decoder_f Update_cause_decode_ber;
+der_type_encoder_f Update_cause_encode_der;
+xer_type_decoder_f Update_cause_decode_xer;
+xer_type_encoder_f Update_cause_encode_xer;
+per_type_decoder_f Update_cause_decode_uper;
+per_type_encoder_f Update_cause_encode_uper;
+per_type_decoder_f Update_cause_decode_aper;
+per_type_encoder_f Update_cause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Update_cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/hnbap/hnbap_common.h b/include/osmocom/hnbap/hnbap_common.h
new file mode 100644
index 0000000..25cb2f0
--- /dev/null
+++ b/include/osmocom/hnbap/hnbap_common.h
@@ -0,0 +1,159 @@
+#pragma once
+
+#include "asn_application.h"
+
+#include <ANY.h>
+#include <BIT_STRING.h>
+#include <INTEGER.h>
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <OBJECT_IDENTIFIER.h>
+#include <OCTET_STRING.h>
+
+#include <osmocom/hnbap/Access-stratum-release-indicator.h>
+#include <osmocom/hnbap/AccessResult.h>
+#include <osmocom/hnbap/AdditionalNeighbourInfoList.h>
+#include <osmocom/hnbap/AltitudeAndDirection.h>
+#include <osmocom/hnbap/BackoffTimer.h>
+#include <osmocom/hnbap/BindingID.h>
+#include <osmocom/hnbap/CELL-FACHMobilitySupport.h>
+#include <osmocom/hnbap/CGI.h>
+#include <osmocom/hnbap/CI.h>
+#include <osmocom/hnbap/CN-DomainIndicator.h>
+#include <osmocom/hnbap/CSG-Capability.h>
+#include <osmocom/hnbap/CSG-ID.h>
+#include <osmocom/hnbap/CSGMembershipStatus.h>
+#include <osmocom/hnbap/CSGMembershipUpdate.h>
+#include <osmocom/hnbap/Cause.h>
+#include <osmocom/hnbap/CauseMisc.h>
+#include <osmocom/hnbap/CauseProtocol.h>
+#include <osmocom/hnbap/CauseRadioNetwork.h>
+#include <osmocom/hnbap/CauseTransport.h>
+#include <osmocom/hnbap/CellIdentity.h>
+#include <osmocom/hnbap/ConfigurationInformation.h>
+#include <osmocom/hnbap/Context-ID.h>
+#include <osmocom/hnbap/Criticality.h>
+#include <osmocom/hnbap/CriticalityDiagnostics-IE-List.h>
+#include <osmocom/hnbap/CriticalityDiagnostics.h>
+#include <osmocom/hnbap/ESN.h>
+#include <osmocom/hnbap/ErrorIndication.h>
+#include <osmocom/hnbap/GTP-TEI.h>
+#include <osmocom/hnbap/GeographicalCoordinates.h>
+#include <osmocom/hnbap/GeographicalLocation.h>
+#include <osmocom/hnbap/HNB-Cell-Access-Mode.h>
+#include <osmocom/hnbap/HNB-Cell-Identifier.h>
+#include <osmocom/hnbap/HNB-GWResponse.h>
+#include <osmocom/hnbap/HNB-Identity-Info.h>
+#include <osmocom/hnbap/HNB-Identity.h>
+#include <osmocom/hnbap/HNB-Location-Information.h>
+#include <osmocom/hnbap/HNB-RNL-Identity.h>
+#include <osmocom/hnbap/HNBAP-PDU.h>
+#include <osmocom/hnbap/HNBCapacity.h>
+#include <osmocom/hnbap/HNBConfigInfo.h>
+#include <osmocom/hnbap/HNBConfigTransferRequest.h>
+#include <osmocom/hnbap/HNBConfigTransferResponse.h>
+#include <osmocom/hnbap/HNBConfigurationInformationMissing.h>
+#include <osmocom/hnbap/HNBConfigurationInformationProvided.h>
+#include <osmocom/hnbap/HNBDe-Register.h>
+#include <osmocom/hnbap/HNBRegisterAccept.h>
+#include <osmocom/hnbap/HNBRegisterReject.h>
+#include <osmocom/hnbap/HNBRegisterRequest.h>
+#include <osmocom/hnbap/IE-Extensions.h>
+#include <osmocom/hnbap/IE.h>
+#include <osmocom/hnbap/IMEI.h>
+#include <osmocom/hnbap/IMSI.h>
+#include <osmocom/hnbap/IMSIDS41.h>
+#include <osmocom/hnbap/IMSIESN.h>
+#include <osmocom/hnbap/IP-Address.h>
+#include <osmocom/hnbap/InitiatingMessage.h>
+#include <osmocom/hnbap/Ipv4Address.h>
+#include <osmocom/hnbap/Ipv6Address.h>
+#include <osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h>
+#include <osmocom/hnbap/LAC.h>
+#include <osmocom/hnbap/LAI.h>
+#include <osmocom/hnbap/MacroCellID.h>
+#include <osmocom/hnbap/MacroCoverageInformation.h>
+#include <osmocom/hnbap/MuxPortNumber.h>
+#include <osmocom/hnbap/NeighbourCellIdentityList.h>
+#include <osmocom/hnbap/NeighbourIdentity.h>
+#include <osmocom/hnbap/NeighbourInfoList.h>
+#include <osmocom/hnbap/NeighbourInfoRequestItem.h>
+#include <osmocom/hnbap/NeighbourInfoRequestList.h>
+#include <osmocom/hnbap/PLMNidentity.h>
+#include <osmocom/hnbap/PSC.h>
+#include <osmocom/hnbap/PTMSI.h>
+#include <osmocom/hnbap/PTMSIRAI.h>
+#include <osmocom/hnbap/Presence.h>
+#include <osmocom/hnbap/PrivateIE-ID.h>
+#include <osmocom/hnbap/PrivateMessage.h>
+#include <osmocom/hnbap/ProcedureCode.h>
+#include <osmocom/hnbap/ProtocolIE-ID.h>
+#include <osmocom/hnbap/RAB-ID.h>
+#include <osmocom/hnbap/RABList.h>
+#include <osmocom/hnbap/RABListItem.h>
+#include <osmocom/hnbap/RAC.h>
+#include <osmocom/hnbap/RAI.h>
+#include <osmocom/hnbap/RNC-ID.h>
+#include <osmocom/hnbap/Registration-Cause.h>
+#include <osmocom/hnbap/RelocationComplete.h>
+#include <osmocom/hnbap/S-RNTIPrefix.h>
+#include <osmocom/hnbap/SAC.h>
+#include <osmocom/hnbap/SuccessfulOutcome.h>
+#include <osmocom/hnbap/TMSIDS41.h>
+#include <osmocom/hnbap/TMSILAI.h>
+#include <osmocom/hnbap/TNLUpdateFailure.h>
+#include <osmocom/hnbap/TNLUpdateRequest.h>
+#include <osmocom/hnbap/TNLUpdateResponse.h>
+#include <osmocom/hnbap/TransportInfo.h>
+#include <osmocom/hnbap/TransportLayerAddress.h>
+#include <osmocom/hnbap/TriggeringMessage.h>
+#include <osmocom/hnbap/Tunnel-Information.h>
+#include <osmocom/hnbap/TypeOfError.h>
+#include <osmocom/hnbap/U-RNTI.h>
+#include <osmocom/hnbap/U-RNTIQueryRequest.h>
+#include <osmocom/hnbap/U-RNTIQueryResponse.h>
+#include <osmocom/hnbap/UDP-Port-Number.h>
+#include <osmocom/hnbap/UE-Capabilities.h>
+#include <osmocom/hnbap/UE-Identity.h>
+#include <osmocom/hnbap/UEDe-Register.h>
+#include <osmocom/hnbap/UERegisterAccept.h>
+#include <osmocom/hnbap/UERegisterReject.h>
+#include <osmocom/hnbap/UERegisterRequest.h>
+#include <osmocom/hnbap/URAIdentity.h>
+#include <osmocom/hnbap/URAIdentityList.h>
+#include <osmocom/hnbap/UTRANCellID.h>
+#include <osmocom/hnbap/UnknownU-RNTIIndication.h>
+#include <osmocom/hnbap/UnsuccessfulOutcome.h>
+#include <osmocom/hnbap/Update-cause.h>
+
+#if (ASN1C_ENVIRONMENT_VERSION < 924)
+# error "You are compiling with the wrong version of ASN1C"
+#endif
+
+#include <osmocom/core/logging.h>
+
+#define HNBAP_DEBUG(x, args ...) DEBUGP(1, x, ## args)
+
+extern int asn1_xer_print;
+
+struct msgb *hnbap_generate_initiating_message(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td, void *sptr);
+
+struct msgb *hnbap_generate_successful_outcome(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+struct msgb *hnbap_generate_unsuccessful_outcome(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+IE_t *hnbap_new_ie(ProtocolIE_ID_t id, Criticality_t criticality,
+ asn_TYPE_descriptor_t *type, void *sptr);
+
+char *hnbap_cause_str(Cause_t *cause);
diff --git a/include/osmocom/iuh/Makefile.am b/include/osmocom/iuh/Makefile.am
new file mode 100644
index 0000000..b2a667d
--- /dev/null
+++ b/include/osmocom/iuh/Makefile.am
@@ -0,0 +1,4 @@
+noinst_HEADERS = \
+ vty.h \
+ context_map.h hnbgw.h hnbgw_cn.h \
+ hnbgw_hnbap.h hnbgw_rua.h hnbgw_ranap.h
diff --git a/include/osmocom/iuh/context_map.h b/include/osmocom/iuh/context_map.h
new file mode 100644
index 0000000..8d957d6
--- /dev/null
+++ b/include/osmocom/iuh/context_map.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <stdint.h>
+#include <osmocom/core/linuxlist.h>
+
+enum hnbgw_context_map_state {
+ MAP_S_NULL,
+ MAP_S_ACTIVE, /* currently active map */
+ MAP_S_RESERVED1, /* just disconnected, still resrved */
+ MAP_S_RESERVED2, /* still reserved */
+};
+
+struct hnb_context;
+struct hnbgw_cnlink;
+
+struct hnbgw_context_map {
+ /* entry in the per-CN list of mappings */
+ struct llist_head cn_list;
+ /* entry in the per-HNB list of mappings */
+ struct llist_head hnb_list;
+ /* pointer to HNB */
+ struct hnb_context *hnb_ctx;
+ /* pointer to CN */
+ struct hnbgw_cnlink *cn_link;
+ /* RUA contxt ID */
+ uint32_t rua_ctx_id;
+ /* False for CS, true for PS */
+ bool is_ps;
+ /* SCCP User SAP connection ID */
+ uint32_t scu_conn_id;
+
+ enum hnbgw_context_map_state state;
+};
+
+
+struct hnbgw_context_map *
+context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id,
+ bool is_ps,
+ struct hnbgw_cnlink *cn_if_new);
+
+struct hnbgw_context_map *
+context_map_by_cn(struct hnbgw_cnlink *cn, uint32_t scu_conn_id);
+
+void context_map_deactivate(struct hnbgw_context_map *map);
+
+int context_map_init(struct hnb_gw *gw);
diff --git a/include/osmocom/iuh/hnbgw.h b/include/osmocom/iuh/hnbgw.h
new file mode 100644
index 0000000..58bdab4
--- /dev/null
+++ b/include/osmocom/iuh/hnbgw.h
@@ -0,0 +1,156 @@
+#pragma once
+
+#include <osmocom/core/select.h>
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/write_queue.h>
+#include <osmocom/core/timer.h>
+#include <osmocom/sigtran/sccp_sap.h>
+#include <osmocom/sigtran/osmo_ss7.h>
+
+#define DEBUG
+#include <osmocom/core/logging.h>
+
+
+enum {
+ DMAIN,
+ DHNBAP,
+ DRUA,
+ DRANAP,
+};
+
+
+#define HNBGW_LOCAL_IP_DEFAULT "0.0.0.0"
+/* TODO: CS and PS now both connect to OsmoSTP, i.e. that's always going to be the same address. Drop the
+ * duplicity. */
+#define HNBGW_IUCS_REMOTE_IP_DEFAULT "127.0.0.1"
+#define HNBGW_IUPS_REMOTE_IP_DEFAULT "127.0.0.1"
+
+/* 25.467 Section 7.1 */
+#define IUH_DEFAULT_SCTP_PORT 29169
+#define RNA_DEFAULT_SCTP_PORT 25471
+
+#define IUH_PPI_RUA 19
+#define IUH_PPI_HNBAP 20
+#define IUH_PPI_SABP 31
+#define IUH_PPI_RNA 42
+#define IUH_PPI_PUA 55
+
+#define IUH_MSGB_SIZE 2048
+
+struct umts_cell_id {
+ uint16_t mcc; /*!< Mobile Country Code */
+ uint16_t mnc; /*!< Mobile Network Code */
+ uint16_t lac; /*!< Locaton Area Code */
+ uint16_t rac; /*!< Routing Area Code */
+ uint16_t sac; /*!< Service Area Code */
+ uint32_t cid; /*!< Cell ID */
+};
+
+struct hnb_gw;
+
+enum hnbgw_cnlink_state {
+ /* we have just been initialized or were disconnected */
+ CNLINK_S_NULL,
+ /* establishment of the SUA/SCCP link is pending */
+ CNLINK_S_EST_PEND,
+ /* establishment of the SUA/SCCP link was confirmed */
+ CNLINK_S_EST_CONF,
+ /* we have esnt the RANAP RESET and wait for the ACK */
+ CNLINK_S_EST_RST_TX_WAIT_ACK,
+ /* we have received the RANAP RESET ACK and are active */
+ CNLINK_S_EST_ACTIVE,
+};
+
+struct hnbgw_cnlink {
+ struct llist_head list;
+ enum hnbgw_cnlink_state state;
+ struct hnb_gw *gw;
+ /* timer for re-transmitting the RANAP Reset */
+ struct osmo_timer_list T_RafC;
+ /* reference to the SCCP User SAP by which we communicate */
+ struct osmo_sccp_instance *sccp;
+ struct osmo_sccp_user *sccp_user;
+ uint32_t next_conn_id;
+
+ /* linked list of hnbgw_context_map */
+ struct llist_head map_list;
+};
+
+struct hnb_context {
+ /*! Entry in HNB-global list of HNB */
+ struct llist_head list;
+ /*! HNB-GW we are part of */
+ struct hnb_gw *gw;
+ /*! SCTP socket + write queue for Iuh to this specific HNB */
+ struct osmo_stream_srv *conn;
+ /*! copied from HNB-Identity-Info IE */
+ char identity_info[256];
+ /*! copied from Cell Identity IE */
+ struct umts_cell_id id;
+
+ /*! SCTP stream ID for HNBAP */
+ uint16_t hnbap_stream;
+ /*! SCTP stream ID for RUA */
+ uint16_t rua_stream;
+
+ /* linked list of hnbgw_context_map */
+ struct llist_head map_list;
+};
+
+struct ue_context {
+ /*! Entry in the HNB-global list of UE */
+ struct llist_head list;
+ /*! Unique Context ID for this UE */
+ uint32_t context_id;
+ char imsi[16+1];
+ uint32_t tmsi;
+ /*! UE is serviced via this HNB */
+ struct hnb_context *hnb;
+};
+
+struct hnb_gw {
+ struct {
+ const char *iuh_local_ip;
+ /*! SCTP port for Iuh listening */
+ uint16_t iuh_local_port;
+ /*! The UDP port where we receive multiplexed CS user
+ * plane traffic from HNBs */
+ uint16_t iuh_cs_mux_port;
+ const char *iucs_remote_addr_name;
+ const char *iups_remote_addr_name;
+ uint16_t rnc_id;
+ bool hnbap_allow_tmsi;
+ } config;
+ /*! SCTP listen socket for incoming connections */
+ struct osmo_stream_srv_link *iuh;
+ /* list of struct hnb_context */
+ struct llist_head hnb_list;
+ /* list of struct ue_context */
+ struct llist_head ue_list;
+ /* next availble UE Context ID */
+ uint32_t next_ue_ctx_id;
+
+ /* currently active CN links for CS and PS */
+ struct {
+ struct osmo_sccp_instance *client;
+ struct hnbgw_cnlink *cnlink;
+ struct osmo_sccp_addr local_addr;
+ struct osmo_sccp_addr iucs_remote_addr;
+ struct osmo_sccp_addr iups_remote_addr;
+ } sccp;
+};
+
+extern void *talloc_asn1_ctx;
+
+struct ue_context *ue_context_by_id(struct hnb_gw *gw, uint32_t id);
+struct ue_context *ue_context_by_imsi(struct hnb_gw *gw, const char *imsi);
+struct ue_context *ue_context_by_tmsi(struct hnb_gw *gw, uint32_t tmsi);
+struct ue_context *ue_context_alloc(struct hnb_context *hnb, const char *imsi,
+ uint32_t tmsi);
+void ue_context_free(struct ue_context *ue);
+
+struct hnb_context *hnb_context_alloc(struct hnb_gw *gw, struct osmo_stream_srv_link *link, int new_fd);
+void hnb_context_release(struct hnb_context *ctx);
+
+void hnbgw_vty_init(struct hnb_gw *gw, void *tall_ctx);
+int hnbgw_vty_go_parent(struct vty *vty);
diff --git a/include/osmocom/iuh/hnbgw_cn.h b/include/osmocom/iuh/hnbgw_cn.h
new file mode 100644
index 0000000..2e61d82
--- /dev/null
+++ b/include/osmocom/iuh/hnbgw_cn.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <osmocom/iuh/hnbgw.h>
+
+int hnbgw_cnlink_init(struct hnb_gw *gw, const char *stp_host, uint16_t stp_port, const char *local_ip);
diff --git a/include/osmocom/iuh/hnbgw_hnbap.h b/include/osmocom/iuh/hnbgw_hnbap.h
new file mode 100644
index 0000000..cca3550
--- /dev/null
+++ b/include/osmocom/iuh/hnbgw_hnbap.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#include <osmocom/iuh/hnbgw.h>
+
+int hnbgw_hnbap_rx(struct hnb_context *hnb, struct msgb *msg);
+int hnbgw_hnbap_init(void);
diff --git a/include/osmocom/iuh/hnbgw_ranap.h b/include/osmocom/iuh/hnbgw_ranap.h
new file mode 100644
index 0000000..2c55964
--- /dev/null
+++ b/include/osmocom/iuh/hnbgw_ranap.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#include <osmocom/iuh/hnbgw.h>
+
+int hnbgw_ranap_rx(struct msgb *msg, uint8_t *data, size_t len);
+int hnbgw_ranap_init(void);
diff --git a/include/osmocom/iuh/hnbgw_rua.h b/include/osmocom/iuh/hnbgw_rua.h
new file mode 100644
index 0000000..6a890b7
--- /dev/null
+++ b/include/osmocom/iuh/hnbgw_rua.h
@@ -0,0 +1,13 @@
+#pragma once
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/rua/RUA_Cause.h>
+
+int hnbgw_rua_rx(struct hnb_context *hnb, struct msgb *msg);
+int hnbgw_rua_init(void);
+
+int rua_tx_udt(struct hnb_context *hnb, const uint8_t *data, unsigned int len);
+int rua_tx_dt(struct hnb_context *hnb, int is_ps, uint32_t context_id,
+ const uint8_t *data, unsigned int len);
+int rua_tx_disc(struct hnb_context *hnb, int is_ps, uint32_t context_id,
+ const RUA_Cause_t *cause, const uint8_t *data, unsigned int len);
diff --git a/include/osmocom/iuh/iu_common.h b/include/osmocom/iuh/iu_common.h
new file mode 100644
index 0000000..11c2a79
--- /dev/null
+++ b/include/osmocom/iuh/iu_common.h
@@ -0,0 +1,23 @@
+#pragma once
+
+/* A humble attempt of reading the Iu messages (RUA/RANAP/HNBAP) without an asn.1 parser.
+ * Not actually used anywhere (yet?) */
+
+struct iu_common_hdr {
+ uint8_t msg_type;
+ uint8_t procedure_code;
+ uint8_t criticality;
+ uint8_t len; /* first byte of length field */
+ uint8_t payload[0]; /* possible further length field + payload */
+ /* extension? */
+ /* ? */
+ /* number of ProtocolIEs */
+} __attribute__ ((packed));
+
+struct iu_common_ie {
+ uint16_t iei;
+ uint8_t criticality;
+ uint8_t len; /* first byte of length field */
+ uint8_t payload[0]; /* possible further length field + payload */
+} __attribute__ ((packed));
+
diff --git a/include/osmocom/iuh/vty.h b/include/osmocom/iuh/vty.h
new file mode 100644
index 0000000..3d05da5
--- /dev/null
+++ b/include/osmocom/iuh/vty.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include <osmocom/vty/vty.h>
+
+enum osmo_iuh_vty_node {
+ HNBGW_NODE = _LAST_OSMOVTY_NODE + 1,
+ IUH_NODE,
+ IUCS_NODE,
+ IUPS_NODE,
+};
+
diff --git a/include/osmocom/ranap/Makefile.am b/include/osmocom/ranap/Makefile.am
new file mode 100644
index 0000000..1606928
--- /dev/null
+++ b/include/osmocom/ranap/Makefile.am
@@ -0,0 +1,599 @@
+# Ugly: ranap_ies_defs.h is generated from asn1tostruct.py at the same time as
+# the ranap_*.c files in src/, but the ranap_ies_defs.h should live here. If
+# the build process wants this header file, it should first build
+# src/ranap_encoder.c and src/ranap_decoder.c.
+# This rule sucks:
+ranap_ies_defs.h:
+ $(MAKE) -C $(top_builddir)/src/ gen_ranap.stamp
+
+ranap_HEADERS = \
+ ranap_ies_defs.h \
+ ranap_common.h \
+ ranap_common_cn.h \
+ ranap_msg_factory.h \
+ iu_helpers.h \
+ iu_client.h \
+ RANAP_AccuracyFulfilmentIndicator.h \
+ RANAP_AllocationOrRetentionPriority.h \
+ RANAP_AlternativeRABConfigurationRequest.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateList.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrates.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateType.h \
+ RANAP_Alt-RAB-Parameters.h \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h \
+ RANAP_APN.h \
+ RANAP_AreaIdentity.h \
+ RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_Ass-RAB-Parameter-MaxBitrateList.h \
+ RANAP_Ass-RAB-Parameters.h \
+ RANAP_AuthorisedPLMNs.h \
+ RANAP_AuthorisedSNAs.h \
+ RANAP_BindingID.h \
+ RANAP_BroadcastAssistanceDataDecipheringKeys.h \
+ RANAP_Cause.h \
+ RANAP_CauseMisc.h \
+ RANAP_CauseNAS.h \
+ RANAP_CauseNon-Standard.h \
+ RANAP_CauseProtocol.h \
+ RANAP_CauseRadioNetworkExtension.h \
+ RANAP_CauseRadioNetwork.h \
+ RANAP_CauseTransmissionNetwork.h \
+ RANAP_Cell-Access-Mode.h \
+ RANAP_CellBased.h \
+ RANAP_Cell-Capacity-Class-Value.h \
+ RANAP_Cell-Id.h \
+ RANAP_CellIdList.h \
+ RANAP_CellLoadInformationGroup.h \
+ RANAP_CellLoadInformation.h \
+ RANAP_CellType.h \
+ RANAP_CGI.h \
+ RANAP_ChosenEncryptionAlgorithm.h \
+ RANAP_ChosenIntegrityProtectionAlgorithm.h \
+ RANAP_CI.h \
+ RANAP_ClassmarkInformation2.h \
+ RANAP_ClassmarkInformation3.h \
+ RANAP_ClientType.h \
+ RANAP_CN-DeactivateTrace.h \
+ RANAP_CN-DomainIndicator.h \
+ RANAP_CN-ID.h \
+ RANAP_CN-InvokeTrace.h \
+ RANAP_CNMBMSLinkingInformation.h \
+ RANAP_CommonID.h \
+ RANAP_Correlation-ID.h \
+ RANAP_CriticalityDiagnostics.h \
+ RANAP_CriticalityDiagnostics-IE-List.h \
+ RANAP_Criticality.h \
+ RANAP_CSFB-Information.h \
+ RANAP_CSG-Id.h \
+ RANAP_CSG-Id-List.h \
+ RANAP_CSG-Membership-Status.h \
+ RANAP_DataPDUType.h \
+ RANAP_DataVolumeList.h \
+ RANAP_DataVolumeReference.h \
+ RANAP_DataVolumeReport.h \
+ RANAP_DataVolumeReportingIndication.h \
+ RANAP_DataVolumeReportList.h \
+ RANAP_DataVolumeReportRequest.h \
+ RANAP_DCH-ID.h \
+ RANAP_DeliveryOfErroneousSDU.h \
+ RANAP_DeliveryOrder.h \
+ RANAP_DeltaRAListofIdleModeUEs.h \
+ RANAP_DirectInformationTransfer.h \
+ RANAP_DirectReportingIndicator.h \
+ RANAP_DirectTransfer.h \
+ RANAP_DirectTransfer-IE-ContainerList.h \
+ RANAP_DirectTransferInformationItem-RANAP-RelocInf.h \
+ RANAP_DL-GTP-PDU-SequenceNumber.h \
+ RANAP_DL-N-PDU-SequenceNumber.h \
+ RANAP_D-RNTI.h \
+ RANAP_DRX-CycleLengthCoefficient.h \
+ RANAP_DSCH-ID.h \
+ RANAP_EARFCN-Extended.h \
+ RANAP_E-DCH-MAC-d-Flow-ID.h \
+ RANAP_ENB-ID.h \
+ RANAP_EncryptionAlgorithm.h \
+ RANAP_EncryptionInformation.h \
+ RANAP_EncryptionKey.h \
+ RANAP_End-Of-CSFB.h \
+ RANAP_EnhancedRelocationCompleteConfirm.h \
+ RANAP_EnhancedRelocationCompleteFailure.h \
+ RANAP_EnhancedRelocationCompleteRequest.h \
+ RANAP_EnhancedRelocationCompleteResponse.h \
+ RANAP_EquipmentsToBeTraced.h \
+ RANAP_ErrorIndication.h \
+ RANAP_EUTRANFrequencies.h \
+ RANAP_E-UTRAN-Service-Handover.h \
+ RANAP_Event1F-Parameters.h \
+ RANAP_Event1I-Parameters.h \
+ RANAP_Event.h \
+ RANAP_ExtendedGuaranteedBitrate.h \
+ RANAP_ExtendedMaxBitrate.h \
+ RANAP_ExtendedRNC-ID.h \
+ RANAP_ForwardingIndication.h \
+ RANAP_ForwardSRNS-Context.h \
+ RANAP_FrameSequenceNumber.h \
+ RANAP_FrequenceLayerConvergenceFlag.h \
+ RANAP_GA-AltitudeAndDirection.h \
+ RANAP_GA-EllipsoidArc.h \
+ RANAP_GANSS-PositioningDataSet.h \
+ RANAP_GANSS-PositioningMethodAndUsage.h \
+ RANAP_GA-Point.h \
+ RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h \
+ RANAP_GA-PointWithAltitude.h \
+ RANAP_GA-PointWithUnCertaintyEllipse.h \
+ RANAP_GA-PointWithUnCertainty.h \
+ RANAP_GA-Polygon.h \
+ RANAP_GA-UncertaintyEllipse.h \
+ RANAP_GeographicalArea.h \
+ RANAP_GeographicalCoordinates.h \
+ RANAP_GERAN-BSC-Container.h \
+ RANAP_GERAN-Cell-ID.h \
+ RANAP_GERAN-Classmark.h \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h \
+ RANAP_GlobalCN-ID.h \
+ RANAP_GlobalRNC-ID.h \
+ RANAP_GTP-TEI.h \
+ RANAP_GuaranteedBitrate.h \
+ RANAP_HigherBitratesThan16MbpsFlag.h \
+ RANAP_HorizontalSpeedAndBearing.h \
+ RANAP_HorizontalVelocity.h \
+ RANAP_HorizontalVelocityWithUncertainty.h \
+ RANAP_HorizontalWithVerticalVelocityAndUncertainty.h \
+ RANAP_HorizontalWithVerticalVelocity.h \
+ RANAP_HS-DSCH-MAC-d-Flow-ID.h \
+ RANAP_IE-Extensions.h \
+ RANAP_IE.h \
+ RANAP_IMEIGroup.h \
+ RANAP_IMEI.h \
+ RANAP_IMEIList.h \
+ RANAP_IMEISVGroup.h \
+ RANAP_IMEISV.h \
+ RANAP_IMEISVList.h \
+ RANAP_ImmediateMDT.h \
+ RANAP_IMSI.h \
+ RANAP_IncludeVelocity.h \
+ RANAP_InformationExchangeID.h \
+ RANAP_InformationExchangeType.h \
+ RANAP_InformationRequested.h \
+ RANAP_InformationRequestType.h \
+ RANAP_InformationTransferConfirmation.h \
+ RANAP_InformationTransferFailure.h \
+ RANAP_InformationTransferID.h \
+ RANAP_InformationTransferIndication.h \
+ RANAP_InformationTransferType.h \
+ RANAP_InitialUE-Message.h \
+ RANAP_InitiatingMessage.h \
+ RANAP_IntegrityProtectionAlgorithm.h \
+ RANAP_IntegrityProtectionInformation.h \
+ RANAP_IntegrityProtectionKey.h \
+ RANAP_InterfacesToTraceItem.h \
+ RANAP_InterSystemInformationTransferType.h \
+ RANAP_InterSystemInformation-TransparentContainer.h \
+ RANAP_IPMulticastAddress.h \
+ RANAP_IRAT-Measurement-Configuration.h \
+ RANAP_IRATmeasurementParameters.h \
+ RANAP_Iu-ReleaseCommand.h \
+ RANAP_Iu-ReleaseComplete.h \
+ RANAP_Iu-ReleaseRequest.h \
+ RANAP_IuSigConId-IE-ContainerList.h \
+ RANAP_IuSignallingConnectionIdentifier.h \
+ RANAP_IuTransportAssociation.h \
+ RANAP_JoinedMBMSBearerService-IEs.h \
+ RANAP_KeyStatus.h \
+ RANAP_L3-Information.h \
+ RANAP_LABased.h \
+ RANAP_LAC.h \
+ RANAP_LAI.h \
+ RANAP_LAI-List.h \
+ RANAP_LA-LIST.h \
+ RANAP_LAListofIdleModeUEs.h \
+ RANAP_LastKnownServiceArea.h \
+ RANAP_LastVisitedUTRANCell-Item.h \
+ RANAP_LeftMBMSBearerService-IEs.h \
+ RANAP_LHN-ID.h \
+ RANAP_Links-to-log.h \
+ RANAP_ListOfInterfacesToTrace.h \
+ RANAP_ListOF-SNAs.h \
+ RANAP_LoadValue.h \
+ RANAP_LocationRelatedDataFailure.h \
+ RANAP_LocationRelatedDataRequest.h \
+ RANAP_LocationRelatedDataRequestType.h \
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h \
+ RANAP_LocationRelatedDataResponse.h \
+ RANAP_LocationReport.h \
+ RANAP_LocationReportingControl.h \
+ RANAP_LocationReportingTransferInformation.h \
+ RANAP_LoggedMDT.h \
+ RANAP_LoggingDuration.h \
+ RANAP_LoggingInterval.h \
+ RANAP_M1Report.h \
+ RANAP_M2Report.h \
+ RANAP_M4-Collection-Parameters.h \
+ RANAP_M4-Period.h \
+ RANAP_M4Report.h \
+ RANAP_M4-Threshold.h \
+ RANAP_M5-Period.h \
+ RANAP_M5Report.h \
+ RANAP_M6-Period.h \
+ RANAP_M6Report.h \
+ RANAP_M7-Period.h \
+ RANAP_M7Report.h \
+ RANAP_Management-Based-MDT-Allowed.h \
+ RANAP_MaxBitrate.h \
+ RANAP_MaxSDU-Size.h \
+ RANAP_MBMSBearerServiceType.h \
+ RANAP_MBMSCNDe-Registration.h \
+ RANAP_MBMSCNDe-RegistrationRequest.h \
+ RANAP_MBMSCNDe-RegistrationResponse.h \
+ RANAP_MBMSCountingInformation.h \
+ RANAP_MBMSHCIndicator.h \
+ RANAP_MBMSIPMulticastAddressandAPNlist.h \
+ RANAP_MBMSIPMulticastAddressandAPNRequest.h \
+ RANAP_MBMSLinkingInformation.h \
+ RANAP_MBMS-PTP-RAB-ID.h \
+ RANAP_MBMSRABEstablishmentIndication.h \
+ RANAP_MBMSRABReleaseFailure.h \
+ RANAP_MBMSRABRelease.h \
+ RANAP_MBMSRABReleaseRequest.h \
+ RANAP_MBMSRegistrationFailure.h \
+ RANAP_MBMSRegistrationRequest.h \
+ RANAP_MBMSRegistrationRequestType.h \
+ RANAP_MBMSRegistrationResponse.h \
+ RANAP_MBMSServiceArea.h \
+ RANAP_MBMSSessionDuration.h \
+ RANAP_MBMSSessionIdentity.h \
+ RANAP_MBMSSessionRepetitionNumber.h \
+ RANAP_MBMSSessionStartFailure.h \
+ RANAP_MBMSSessionStart.h \
+ RANAP_MBMSSessionStartResponse.h \
+ RANAP_MBMSSessionStop.h \
+ RANAP_MBMSSessionStopResponse.h \
+ RANAP_MBMSSessionUpdateFailure.h \
+ RANAP_MBMSSessionUpdate.h \
+ RANAP_MBMSSessionUpdateResponse.h \
+ RANAP_MBMSSynchronisationInformation.h \
+ RANAP_MBMSUELinkingRequest.h \
+ RANAP_MBMSUELinkingResponse.h \
+ RANAP_MDT-Activation.h \
+ RANAP_MDTAreaScope.h \
+ RANAP_MDT-Configuration.h \
+ RANAP_MDTMode.h \
+ RANAP_MDT-PLMN-List.h \
+ RANAP_MDT-Report-Parameters.h \
+ RANAP_MeasBand.h \
+ RANAP_MeasurementQuantity.h \
+ RANAP_MeasurementsToActivate.h \
+ RANAP_MessageStructure.h \
+ RANAP_MSISDN.h \
+ RANAP_NAS-PDU.h \
+ RANAP_NAS-SequenceNumber.h \
+ RANAP_NAS-SynchronisationIndicator.h \
+ RANAP_NewBSS-To-OldBSS-Information.h \
+ RANAP_NewRAListofIdleModeUEs.h \
+ RANAP_NonSearchingIndication.h \
+ RANAP_NotEmptyRAListofIdleModeUEs.h \
+ RANAP_NRTLoadInformationValue.h \
+ RANAP_NumberOfIuInstances.h \
+ RANAP_NumberOfSteps.h \
+ RANAP_Offload-RAB-Parameters-APN.h \
+ RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h \
+ RANAP_Offload-RAB-Parameters.h \
+ RANAP_OldBSS-ToNewBSS-Information.h \
+ RANAP_OMC-ID.h \
+ RANAP_Outcome.h \
+ RANAP_Out-Of-UTRAN.h \
+ RANAP_Overload.h \
+ RANAP_PagingAreaID.h \
+ RANAP_PagingCause.h \
+ RANAP_Paging.h \
+ RANAP_PDP-Type-extension.h \
+ RANAP_PDP-Type.h \
+ RANAP_PDP-TypeInformation-extension.h \
+ RANAP_PDP-TypeInformation.h \
+ RANAP_PDUType14FrameSequenceNumber.h \
+ RANAP_PeriodicLocationInfo.h \
+ RANAP_PeriodicReportingIndicator.h \
+ RANAP_PermanentNAS-UE-ID.h \
+ RANAP_PermittedEncryptionAlgorithms.h \
+ RANAP_PermittedIntegrityProtectionAlgorithms.h \
+ RANAP_PLMNidentity.h \
+ RANAP_PLMNs-in-shared-network.h \
+ RANAP_Port-Number.h \
+ RANAP_PositionData.h \
+ RANAP_PositionDataSpecificToGERANIuMode.h \
+ RANAP_PositioningDataDiscriminator.h \
+ RANAP_PositioningDataSet.h \
+ RANAP_PositioningMethodAndUsage.h \
+ RANAP_PositioningPriority.h \
+ RANAP_Pre-emptionCapability.h \
+ RANAP_Pre-emptionVulnerability.h \
+ RANAP_Presence.h \
+ RANAP_Priority-Class-Indicator.h \
+ RANAP_PriorityLevel.h \
+ RANAP_PrivateIE-ID.h \
+ RANAP_PrivateMessage.h \
+ RANAP_ProcedureCode.h \
+ RANAP_ProtocolError-IE-ContainerList.h \
+ RANAP_ProtocolExtensionContainer.h \
+ RANAP_ProtocolExtensionField.h \
+ RANAP_ProtocolExtensionID.h \
+ RANAP_ProtocolIE-Container.h \
+ RANAP_ProtocolIE-ContainerPair.h \
+ RANAP_ProtocolIE-FieldPair.h \
+ RANAP_ProtocolIE-ID.h \
+ RANAP_ProvidedData.h \
+ RANAP_P-TMSI.h \
+ RANAP_QueuingAllowed.h \
+ RANAP_RABased.h \
+ RANAP_RAB-AssignmentRequest.h \
+ RANAP_RAB-AssignmentResponse.h \
+ RANAP_RAB-AsymmetryIndicator.h \
+ RANAP_RAB-ContextItem.h \
+ RANAP_RAB-ContextItem-RANAP-RelocInf.h \
+ RANAP_RAB-ContextList.h \
+ RANAP_RAB-ContextList-RANAP-RelocInf.h \
+ RANAP_RAB-DataForwardingItem.h \
+ RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h \
+ RANAP_RAB-DataForwardingList.h \
+ RANAP_RAB-DataForwardingList-SRNS-CtxReq.h \
+ RANAP_RABDataVolumeReport.h \
+ RANAP_RAB-DataVolumeReportItem.h \
+ RANAP_RAB-DataVolumeReportList.h \
+ RANAP_RAB-DataVolumeReportRequestItem.h \
+ RANAP_RAB-DataVolumeReportRequestList.h \
+ RANAP_RAB-FailedItem-EnhRelocInfoRes.h \
+ RANAP_RAB-FailedItem.h \
+ RANAP_RAB-FailedList-EnhRelocInfoRes.h \
+ RANAP_RAB-FailedList.h \
+ RANAP_RAB-ID.h \
+ RANAP_RAB-IE-ContainerList.h \
+ RANAP_RAB-IE-ContainerPairList.h \
+ RANAP_RAB-ModifyItem.h \
+ RANAP_RAB-ModifyList.h \
+ RANAP_RAB-ModifyRequest.h \
+ RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_RAB-Parameter-MaxBitrateList.h \
+ RANAP_RAB-Parameters.h \
+ RANAP_RABParametersList.h \
+ RANAP_RAB-QueuedItem.h \
+ RANAP_RAB-QueuedList.h \
+ RANAP_RAB-ReleasedItem.h \
+ RANAP_RAB-ReleasedItem-IuRelComp.h \
+ RANAP_RAB-ReleasedList.h \
+ RANAP_RAB-ReleasedList-IuRelComp.h \
+ RANAP_RAB-ReleaseFailedList.h \
+ RANAP_RAB-ReleaseItem.h \
+ RANAP_RAB-ReleaseList.h \
+ RANAP_RAB-ReleaseRequest.h \
+ RANAP_RAB-RelocationReleaseItem.h \
+ RANAP_RAB-RelocationReleaseList.h \
+ RANAP_RABs-ContextFailedtoTransferItem.h \
+ RANAP_RABs-ContextFailedtoTransferList.h \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-SetupItem-EnhRelocInfoReq.h \
+ RANAP_RAB-SetupItem-EnhRelocInfoRes.h \
+ RANAP_RAB-SetupItem-RelocReqAck.h \
+ RANAP_RAB-SetupItem-RelocReq.h \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-SetupList-EnhRelocInfoReq.h \
+ RANAP_RAB-SetupList-EnhRelocInfoRes.h \
+ RANAP_RAB-SetupList-RelocReqAck.h \
+ RANAP_RAB-SetupList-RelocReq.h \
+ RANAP_RAB-SetupOrModifiedItem.h \
+ RANAP_RAB-SetupOrModifiedList.h \
+ RANAP_RAB-SetupOrModifyItemFirst.h \
+ RANAP_RAB-SetupOrModifyItemSecond.h \
+ RANAP_RAB-SetupOrModifyList.h \
+ RANAP_RABs-failed-to-reportItem.h \
+ RANAP_RABs-failed-to-reportList.h \
+ RANAP_RAB-SubflowCombinationBitRate.h \
+ RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-TrCH-Mapping.h \
+ RANAP_RAB-TrCH-MappingItem.h \
+ RANAP_RAC.h \
+ RANAP_RAI.h \
+ RANAP_RAI-List.h \
+ RANAP_RAListofIdleModeUEs.h \
+ RANAP_RAListwithNoIdleModeUEsAnyMore.h \
+ RANAP_RANAP-EnhancedRelocationInformationRequest.h \
+ RANAP_RANAP-EnhancedRelocationInformationResponse.h \
+ RANAP_RANAP-PDU.h \
+ RANAP_RANAP-RelocationInformation.h \
+ RANAP_RAofIdleModeUEs.h \
+ RANAP_RateControlAllowed.h \
+ RANAP_RAT-Type.h \
+ RANAP_RedirectAttemptFlag.h \
+ RANAP_RedirectionCompleted.h \
+ RANAP_RedirectionIndication.h \
+ RANAP_RejectCauseValue.h \
+ RANAP_RelocationCancelAcknowledge.h \
+ RANAP_RelocationCancel.h \
+ RANAP_RelocationCommand.h \
+ RANAP_RelocationComplete.h \
+ RANAP_RelocationDetect.h \
+ RANAP_RelocationFailure.h \
+ RANAP_RelocationPreparationFailure.h \
+ RANAP_RelocationRequestAcknowledge.h \
+ RANAP_RelocationRequest.h \
+ RANAP_RelocationRequired.h \
+ RANAP_RelocationRequirement.h \
+ RANAP_RelocationType.h \
+ RANAP_RepetitionNumber0.h \
+ RANAP_RepetitionNumber1.h \
+ RANAP_ReportAmount.h \
+ RANAP_ReportArea.h \
+ RANAP_ReportChangeOfSAI.h \
+ RANAP_ReportInterval.h \
+ RANAP_RequestedGANSSAssistanceData.h \
+ RANAP_RequestedGPSAssistanceData.h \
+ RANAP_RequestedLocationRelatedDataType.h \
+ RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h \
+ RANAP_RequestedMulticastServiceList.h \
+ RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_Requested-RAB-Parameter-MaxBitrateList.h \
+ RANAP_Requested-RAB-Parameter-Values.h \
+ RANAP_RequestType.h \
+ RANAP_ResetAcknowledge.h \
+ RANAP_Reset.h \
+ RANAP_ResetResourceAckItem.h \
+ RANAP_ResetResourceAckList.h \
+ RANAP_ResetResourceAcknowledge.h \
+ RANAP_ResetResource.h \
+ RANAP_ResetResourceItem.h \
+ RANAP_ResetResourceList.h \
+ RANAP_ResidualBitErrorRatio.h \
+ RANAP_ResponseTime.h \
+ RANAP_RIMInformation.h \
+ RANAP_RIMRoutingAddress.h \
+ RANAP_RIM-Transfer.h \
+ RANAP_RNC-ID.h \
+ RANAP_RNCTraceInformation.h \
+ RANAP_RNSAPRelocationParameters.h \
+ RANAP_RRC-Container.h \
+ RANAP_RSRQ-Extension.h \
+ RANAP_RSRQ-Type.h \
+ RANAP_RSRVCC-HO-Indication.h \
+ RANAP_RSRVCC-Information.h \
+ RANAP_RSRVCC-Operation-Possible.h \
+ RANAP_RTLoadValue.h \
+ RANAP_SAC.h \
+ RANAP_SAI.h \
+ RANAP_SAPI.h \
+ RANAP_SDU-ErrorRatio.h \
+ RANAP_SDU-FormatInformationParameterItem.h \
+ RANAP_SDU-FormatInformationParameters.h \
+ RANAP_SDU-ParameterItem.h \
+ RANAP_SDU-Parameters.h \
+ RANAP_SecurityModeCommand.h \
+ RANAP_SecurityModeComplete.h \
+ RANAP_SecurityModeReject.h \
+ RANAP_Service-Handover.h \
+ RANAP_Session-Re-establishment-Indicator.h \
+ RANAP_SessionUpdateID.h \
+ RANAP_Shared-Network-Information.h \
+ RANAP_SignallingIndication.h \
+ RANAP_SNA-Access-Information.h \
+ RANAP_SNAC.h \
+ RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h \
+ RANAP_SourceCellID.h \
+ RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h \
+ RANAP_SourceID.h \
+ RANAP_SourceRNC-ID.h \
+ RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h \
+ RANAP_SourceStatisticsDescriptor.h \
+ RANAP_Source-ToTarget-TransparentContainer.h \
+ RANAP_SourceUTRANCellID.h \
+ RANAP_SRB-ID.h \
+ RANAP_SRB-TrCH-Mapping.h \
+ RANAP_SRB-TrCH-MappingItem.h \
+ RANAP_SRNS-ContextRequest.h \
+ RANAP_SRNS-ContextResponse.h \
+ RANAP_SRNS-DataForwardCommand.h \
+ RANAP_SRVCC-CSKeysRequest.h \
+ RANAP_SRVCC-CSKeysResponse.h \
+ RANAP_SRVCC-HO-Indication.h \
+ RANAP_SRVCC-Information.h \
+ RANAP_SRVCC-Operation-Possible.h \
+ RANAP_SubflowSDU-Size.h \
+ RANAP_SubscriberProfileIDforRFP.h \
+ RANAP_SuccessfulOutcome.h \
+ RANAP_SupportedBitrate.h \
+ RANAP_SupportedRAB-ParameterBitrateList.h \
+ RANAP_TAC.h \
+ RANAP_TAI.h \
+ RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h \
+ RANAP_TargetCellId.h \
+ RANAP_TargetENB-ID.h \
+ RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h \
+ RANAP_TargetID.h \
+ RANAP_TargetRNC-ID.h \
+ RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h \
+ RANAP_Target-ToSource-TransparentContainer.h \
+ RANAP_TBCD-STRING.h \
+ RANAP_TemporaryUE-ID.h \
+ RANAP_TimeToMBMSDataTransfer.h \
+ RANAP_Time-UE-StayedInCell-EnhancedGranularity.h \
+ RANAP_Time-UE-StayedInCell.h \
+ RANAP_TimingDifferenceULDL.h \
+ RANAP_TMGI.h \
+ RANAP_TMSI.h \
+ RANAP_TNLInformationEnhRelInfoReq.h \
+ RANAP_TNLInformationEnhRelInfoRes.h \
+ RANAP_TraceDepth.h \
+ RANAP_TraceInformation.h \
+ RANAP_TracePropagationParameters.h \
+ RANAP_TraceRecordingSessionInformation.h \
+ RANAP_TraceRecordingSessionReference.h \
+ RANAP_TraceReference.h \
+ RANAP_TraceType.h \
+ RANAP_TrafficClass.h \
+ RANAP_TrafficHandlingPriority.h \
+ RANAP_TransferDelay.h \
+ RANAP_TransportLayerAddress.h \
+ RANAP_TransportLayerInformation.h \
+ RANAP_TrCH-ID.h \
+ RANAP_TrCH-ID-List.h \
+ RANAP_TriggerID.h \
+ RANAP_TriggeringMessage.h \
+ RANAP_TunnelInformation.h \
+ RANAP_TypeOfError.h \
+ RANAP_UE-AggregateMaximumBitRateDownlink.h \
+ RANAP_UE-AggregateMaximumBitRate.h \
+ RANAP_UE-AggregateMaximumBitRateUplink.h \
+ RANAP_UE-History-Information.h \
+ RANAP_UE-ID.h \
+ RANAP_UeRadioCapabilityMatchRequest.h \
+ RANAP_UeRadioCapabilityMatchResponse.h \
+ RANAP_UESBI-IuA.h \
+ RANAP_UESBI-IuB.h \
+ RANAP_UESBI-Iu.h \
+ RANAP_UESpecificInformationIndication.h \
+ RANAP_UL-GTP-PDU-SequenceNumber.h \
+ RANAP_UL-N-PDU-SequenceNumber.h \
+ RANAP_UnsuccessfulLinking-IEs.h \
+ RANAP_UnsuccessfullyTransmittedDataVolume.h \
+ RANAP_UnsuccessfulOutcome.h \
+ RANAP_UPInformation.h \
+ RANAP_UPInitialisationFrame.h \
+ RANAP_UplinkInformationExchangeFailure.h \
+ RANAP_UplinkInformationExchangeRequest.h \
+ RANAP_UplinkInformationExchangeResponse.h \
+ RANAP_UP-ModeVersions.h \
+ RANAP_USCH-ID.h \
+ RANAP_UserPlaneInformation.h \
+ RANAP_UserPlaneMode.h \
+ RANAP_UTRAN-CellID.h \
+ RANAP_VelocityEstimate.h \
+ RANAP_VerticalAccuracyCode.h \
+ RANAP_VerticalSpeedDirection.h \
+ RANAP_VerticalVelocity.h \
+ RANAP_VoiceSupportMatchIndicator.h
+
+ranapdir = $(includedir)/osmocom/ranap
+
+DISTCLEANFILES = \
+ ranap_ies_defs.h
diff --git a/include/osmocom/ranap/RANAP_APN.h b/include/osmocom/ranap/RANAP_APN.h
new file mode 100644
index 0000000..ac158e1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_APN.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_APN_H_
+#define _RANAP_APN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_APN */
+typedef OCTET_STRING_t RANAP_APN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_APN;
+asn_struct_free_f RANAP_APN_free;
+asn_struct_print_f RANAP_APN_print;
+asn_constr_check_f RANAP_APN_constraint;
+ber_type_decoder_f RANAP_APN_decode_ber;
+der_type_encoder_f RANAP_APN_encode_der;
+xer_type_decoder_f RANAP_APN_decode_xer;
+xer_type_encoder_f RANAP_APN_encode_xer;
+per_type_decoder_f RANAP_APN_decode_uper;
+per_type_encoder_f RANAP_APN_encode_uper;
+per_type_decoder_f RANAP_APN_decode_aper;
+per_type_encoder_f RANAP_APN_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_APN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h b/include/osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h
new file mode 100644
index 0000000..e95d0b9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AccuracyFulfilmentIndicator_H_
+#define _RANAP_AccuracyFulfilmentIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_AccuracyFulfilmentIndicator {
+ RANAP_AccuracyFulfilmentIndicator_requested_Accuracy_Fulfilled = 0,
+ RANAP_AccuracyFulfilmentIndicator_requested_Accuracy_Not_Fulfilled = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_AccuracyFulfilmentIndicator;
+
+/* RANAP_AccuracyFulfilmentIndicator */
+typedef long RANAP_AccuracyFulfilmentIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AccuracyFulfilmentIndicator;
+asn_struct_free_f RANAP_AccuracyFulfilmentIndicator_free;
+asn_struct_print_f RANAP_AccuracyFulfilmentIndicator_print;
+asn_constr_check_f RANAP_AccuracyFulfilmentIndicator_constraint;
+ber_type_decoder_f RANAP_AccuracyFulfilmentIndicator_decode_ber;
+der_type_encoder_f RANAP_AccuracyFulfilmentIndicator_encode_der;
+xer_type_decoder_f RANAP_AccuracyFulfilmentIndicator_decode_xer;
+xer_type_encoder_f RANAP_AccuracyFulfilmentIndicator_encode_xer;
+per_type_decoder_f RANAP_AccuracyFulfilmentIndicator_decode_uper;
+per_type_encoder_f RANAP_AccuracyFulfilmentIndicator_encode_uper;
+per_type_decoder_f RANAP_AccuracyFulfilmentIndicator_decode_aper;
+per_type_encoder_f RANAP_AccuracyFulfilmentIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AccuracyFulfilmentIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AllocationOrRetentionPriority.h b/include/osmocom/ranap/RANAP_AllocationOrRetentionPriority.h
new file mode 100644
index 0000000..ec73d30
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AllocationOrRetentionPriority.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AllocationOrRetentionPriority_H_
+#define _RANAP_AllocationOrRetentionPriority_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PriorityLevel.h>
+#include <osmocom/ranap/RANAP_Pre-emptionCapability.h>
+#include <osmocom/ranap/RANAP_Pre-emptionVulnerability.h>
+#include <osmocom/ranap/RANAP_QueuingAllowed.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_AllocationOrRetentionPriority */
+typedef struct RANAP_AllocationOrRetentionPriority {
+ RANAP_PriorityLevel_t priorityLevel;
+ RANAP_Pre_emptionCapability_t pre_emptionCapability;
+ RANAP_Pre_emptionVulnerability_t pre_emptionVulnerability;
+ RANAP_QueuingAllowed_t queuingAllowed;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_AllocationOrRetentionPriority_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AllocationOrRetentionPriority;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AllocationOrRetentionPriority_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h
new file mode 100644
index 0000000..7d209d5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_t altExtendedGuaranteedBitrateType;
+ RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_t *altExtendedGuaranteedBitrates /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h
new file mode 100644
index 0000000..d6105a2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedGuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h
new file mode 100644
index 0000000..dff57a7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates {
+ A_SEQUENCE_OF(RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h
new file mode 100644
index 0000000..cc56279
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_t altExtendedMaxBitrateType;
+ RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_t *altExtendedMaxBitrates /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h
new file mode 100644
index 0000000..518acbe
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedMaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h
new file mode 100644
index 0000000..d22f7fd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates {
+ A_SEQUENCE_OF(RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h
new file mode 100644
index 0000000..262c742
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_t altGuaranteedBitrateType;
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrates_t *altGuaranteedBitrates /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h
new file mode 100644
index 0000000..b7099d0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_H_
+#define _RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-GuaranteedBitrateList */
+typedef struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_GuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h
new file mode 100644
index 0000000..57611be
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_H_
+#define _RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Alt_RAB_Parameter_GuaranteedBitrateType {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_unspecified = 0,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_value_range = 1,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_discrete_values = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType;
+
+/* RANAP_Alt-RAB-Parameter-GuaranteedBitrateType */
+typedef long RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType;
+asn_struct_free_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_free;
+asn_struct_print_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_print;
+asn_constr_check_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_constraint;
+ber_type_decoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_ber;
+der_type_encoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_der;
+xer_type_decoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_xer;
+xer_type_encoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_xer;
+per_type_decoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_uper;
+per_type_encoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_uper;
+per_type_decoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_aper;
+per_type_encoder_f RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h
new file mode 100644
index 0000000..e8e2f8d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_GuaranteedBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_GuaranteedBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-GuaranteedBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_GuaranteedBitrates {
+ A_SEQUENCE_OF(RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_GuaranteedBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_GuaranteedBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h
new file mode 100644
index 0000000..5d7a8c9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_MaxBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_MaxBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-MaxBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_MaxBitrateInf {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_t altMaxBitrateType;
+ RANAP_Alt_RAB_Parameter_MaxBitrates_t *altMaxBitrates /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_MaxBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_MaxBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h
new file mode 100644
index 0000000..4ff9287
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_MaxBitrateList_H_
+#define _RANAP_Alt_RAB_Parameter_MaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-MaxBitrateList */
+typedef struct RANAP_Alt_RAB_Parameter_MaxBitrateList {
+ A_SEQUENCE_OF(RANAP_MaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_MaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_MaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h
new file mode 100644
index 0000000..1370399
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_MaxBitrateType_H_
+#define _RANAP_Alt_RAB_Parameter_MaxBitrateType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Alt_RAB_Parameter_MaxBitrateType {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_unspecified = 0,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_value_range = 1,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_discrete_values = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Alt_RAB_Parameter_MaxBitrateType;
+
+/* RANAP_Alt-RAB-Parameter-MaxBitrateType */
+typedef long RANAP_Alt_RAB_Parameter_MaxBitrateType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType;
+asn_struct_free_f RANAP_Alt_RAB_Parameter_MaxBitrateType_free;
+asn_struct_print_f RANAP_Alt_RAB_Parameter_MaxBitrateType_print;
+asn_constr_check_f RANAP_Alt_RAB_Parameter_MaxBitrateType_constraint;
+ber_type_decoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_ber;
+der_type_encoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_der;
+xer_type_decoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_xer;
+xer_type_encoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_xer;
+per_type_decoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_uper;
+per_type_encoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_uper;
+per_type_decoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_aper;
+per_type_encoder_f RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_MaxBitrateType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h
new file mode 100644
index 0000000..9d26566
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_MaxBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_MaxBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-MaxBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_MaxBitrates {
+ A_SEQUENCE_OF(RANAP_Alt_RAB_Parameter_MaxBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_MaxBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_MaxBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h
new file mode 100644
index 0000000..3dcaf55
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_t altSupportedGuaranteedBitrateType;
+ RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_t *altSupportedGuaranteedBitrates /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h
new file mode 100644
index 0000000..d712b9a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates {
+ A_SEQUENCE_OF(RANAP_SupportedRAB_ParameterBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h
new file mode 100644
index 0000000..3e6a1cf
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_H_
+#define _RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf */
+typedef struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_t altSupportedMaxBitrateType;
+ RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_t *altSupportedMaxBitrates /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h
new file mode 100644
index 0000000..c2a462b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_H_
+#define _RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameter-SupportedMaxBitrates */
+typedef struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrates {
+ A_SEQUENCE_OF(RANAP_SupportedRAB_ParameterBitrateList_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Alt-RAB-Parameters.h b/include/osmocom/ranap/RANAP_Alt-RAB-Parameters.h
new file mode 100644
index 0000000..855cfcf
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Alt-RAB-Parameters.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Alt_RAB_Parameters_H_
+#define _RANAP_Alt_RAB_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Alt-RAB-Parameters */
+typedef struct RANAP_Alt_RAB_Parameters {
+ RANAP_Alt_RAB_Parameter_MaxBitrateInf_t *altMaxBitrateInf /* OPTIONAL */;
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_t *altGuaranteedBitRateInf /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Alt_RAB_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Alt_RAB_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h b/include/osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h
new file mode 100644
index 0000000..676d97f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AlternativeRABConfigurationRequest_H_
+#define _RANAP_AlternativeRABConfigurationRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_AlternativeRABConfigurationRequest {
+ RANAP_AlternativeRABConfigurationRequest_alternative_RAB_configuration_Requested = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_AlternativeRABConfigurationRequest;
+
+/* RANAP_AlternativeRABConfigurationRequest */
+typedef long RANAP_AlternativeRABConfigurationRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AlternativeRABConfigurationRequest;
+asn_struct_free_f RANAP_AlternativeRABConfigurationRequest_free;
+asn_struct_print_f RANAP_AlternativeRABConfigurationRequest_print;
+asn_constr_check_f RANAP_AlternativeRABConfigurationRequest_constraint;
+ber_type_decoder_f RANAP_AlternativeRABConfigurationRequest_decode_ber;
+der_type_encoder_f RANAP_AlternativeRABConfigurationRequest_encode_der;
+xer_type_decoder_f RANAP_AlternativeRABConfigurationRequest_decode_xer;
+xer_type_encoder_f RANAP_AlternativeRABConfigurationRequest_encode_xer;
+per_type_decoder_f RANAP_AlternativeRABConfigurationRequest_decode_uper;
+per_type_encoder_f RANAP_AlternativeRABConfigurationRequest_encode_uper;
+per_type_decoder_f RANAP_AlternativeRABConfigurationRequest_decode_aper;
+per_type_encoder_f RANAP_AlternativeRABConfigurationRequest_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AlternativeRABConfigurationRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AreaIdentity.h b/include/osmocom/ranap/RANAP_AreaIdentity.h
new file mode 100644
index 0000000..a57bc5b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AreaIdentity.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AreaIdentity_H_
+#define _RANAP_AreaIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SAI.h>
+#include <osmocom/ranap/RANAP_GeographicalArea.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_AreaIdentity_PR {
+ RANAP_AreaIdentity_PR_NOTHING, /* No components present */
+ RANAP_AreaIdentity_PR_sAI,
+ RANAP_AreaIdentity_PR_geographicalArea,
+ /* Extensions may appear below */
+
+} RANAP_AreaIdentity_PR;
+
+/* RANAP_AreaIdentity */
+typedef struct RANAP_AreaIdentity {
+ RANAP_AreaIdentity_PR present;
+ union RANAP_AreaIdentity_u {
+ RANAP_SAI_t sAI;
+ RANAP_GeographicalArea_t geographicalArea;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_AreaIdentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AreaIdentity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AreaIdentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h
new file mode 100644
index 0000000..6445665
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+#define _RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList */
+typedef struct RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedGuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h
new file mode 100644
index 0000000..994102b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_H_
+#define _RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList */
+typedef struct RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedMaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h
new file mode 100644
index 0000000..716733e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_H_
+#define _RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Ass-RAB-Parameter-GuaranteedBitrateList */
+typedef struct RANAP_Ass_RAB_Parameter_GuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_GuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h
new file mode 100644
index 0000000..a808288
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Ass_RAB_Parameter_MaxBitrateList_H_
+#define _RANAP_Ass_RAB_Parameter_MaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Ass-RAB-Parameter-MaxBitrateList */
+typedef struct RANAP_Ass_RAB_Parameter_MaxBitrateList {
+ A_SEQUENCE_OF(RANAP_MaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Ass_RAB_Parameter_MaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Ass_RAB_Parameter_MaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Ass-RAB-Parameters.h b/include/osmocom/ranap/RANAP_Ass-RAB-Parameters.h
new file mode 100644
index 0000000..dbbe10a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Ass-RAB-Parameters.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Ass_RAB_Parameters_H_
+#define _RANAP_Ass_RAB_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Ass-RAB-Parameters */
+typedef struct RANAP_Ass_RAB_Parameters {
+ RANAP_Ass_RAB_Parameter_MaxBitrateList_t *assMaxBitrateInf /* OPTIONAL */;
+ RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_t *assGuaranteedBitRateInf /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Ass_RAB_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Ass_RAB_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AuthorisedPLMNs.h b/include/osmocom/ranap/RANAP_AuthorisedPLMNs.h
new file mode 100644
index 0000000..77b65a7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AuthorisedPLMNs.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AuthorisedPLMNs_H_
+#define _RANAP_AuthorisedPLMNs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_AuthorisedSNAs.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_AuthorisedPLMNs */
+typedef struct RANAP_AuthorisedPLMNs {
+ A_SEQUENCE_OF(struct MemberC {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_AuthorisedSNAs_t *authorisedSNAsList /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_AuthorisedPLMNs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AuthorisedPLMNs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AuthorisedPLMNs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_AuthorisedSNAs.h b/include/osmocom/ranap/RANAP_AuthorisedSNAs.h
new file mode 100644
index 0000000..2cad6d9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_AuthorisedSNAs.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_AuthorisedSNAs_H_
+#define _RANAP_AuthorisedSNAs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SNAC.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_AuthorisedSNAs */
+typedef struct RANAP_AuthorisedSNAs {
+ A_SEQUENCE_OF(RANAP_SNAC_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_AuthorisedSNAs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_AuthorisedSNAs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_AuthorisedSNAs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_BindingID.h b/include/osmocom/ranap/RANAP_BindingID.h
new file mode 100644
index 0000000..ff5a303
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_BindingID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_BindingID_H_
+#define _RANAP_BindingID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_BindingID */
+typedef OCTET_STRING_t RANAP_BindingID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_BindingID;
+asn_struct_free_f RANAP_BindingID_free;
+asn_struct_print_f RANAP_BindingID_print;
+asn_constr_check_f RANAP_BindingID_constraint;
+ber_type_decoder_f RANAP_BindingID_decode_ber;
+der_type_encoder_f RANAP_BindingID_encode_der;
+xer_type_decoder_f RANAP_BindingID_decode_xer;
+xer_type_encoder_f RANAP_BindingID_encode_xer;
+per_type_decoder_f RANAP_BindingID_decode_uper;
+per_type_encoder_f RANAP_BindingID_encode_uper;
+per_type_decoder_f RANAP_BindingID_decode_aper;
+per_type_encoder_f RANAP_BindingID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_BindingID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h b/include/osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h
new file mode 100644
index 0000000..8d0e895
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_BroadcastAssistanceDataDecipheringKeys_H_
+#define _RANAP_BroadcastAssistanceDataDecipheringKeys_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_BroadcastAssistanceDataDecipheringKeys */
+typedef struct RANAP_BroadcastAssistanceDataDecipheringKeys {
+ BIT_STRING_t cipheringKeyFlag;
+ BIT_STRING_t currentDecipheringKey;
+ BIT_STRING_t nextDecipheringKey;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_BroadcastAssistanceDataDecipheringKeys_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_BroadcastAssistanceDataDecipheringKeys_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CGI.h b/include/osmocom/ranap/RANAP_CGI.h
new file mode 100644
index 0000000..9e03e28
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CGI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CGI_H_
+#define _RANAP_CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_LAC.h>
+#include <osmocom/ranap/RANAP_CI.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CGI */
+typedef struct RANAP_CGI {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_LAC_t lAC;
+ RANAP_CI_t cI;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CGI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CGI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CI.h b/include/osmocom/ranap/RANAP_CI.h
new file mode 100644
index 0000000..fb7c777
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CI_H_
+#define _RANAP_CI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CI */
+typedef OCTET_STRING_t RANAP_CI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CI;
+asn_struct_free_f RANAP_CI_free;
+asn_struct_print_f RANAP_CI_print;
+asn_constr_check_f RANAP_CI_constraint;
+ber_type_decoder_f RANAP_CI_decode_ber;
+der_type_encoder_f RANAP_CI_encode_der;
+xer_type_decoder_f RANAP_CI_decode_xer;
+xer_type_encoder_f RANAP_CI_encode_xer;
+per_type_decoder_f RANAP_CI_decode_uper;
+per_type_encoder_f RANAP_CI_encode_uper;
+per_type_decoder_f RANAP_CI_decode_aper;
+per_type_encoder_f RANAP_CI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CN-DeactivateTrace.h b/include/osmocom/ranap/RANAP_CN-DeactivateTrace.h
new file mode 100644
index 0000000..fa42126
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CN-DeactivateTrace.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_CN_DeactivateTrace_H_
+#define _RANAP_CN_DeactivateTrace_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CN-DeactivateTrace */
+typedef struct RANAP_CN_DeactivateTrace {
+ struct cN_DeactivateTrace_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cN_DeactivateTrace_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CN_DeactivateTrace_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CN_DeactivateTrace;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CN_DeactivateTrace_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CN-DomainIndicator.h b/include/osmocom/ranap/RANAP_CN-DomainIndicator.h
new file mode 100644
index 0000000..3a63f87
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CN-DomainIndicator.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CN_DomainIndicator_H_
+#define _RANAP_CN_DomainIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CN_DomainIndicator {
+ RANAP_CN_DomainIndicator_cs_domain = 0,
+ RANAP_CN_DomainIndicator_ps_domain = 1
+} e_RANAP_CN_DomainIndicator;
+
+/* RANAP_CN-DomainIndicator */
+typedef long RANAP_CN_DomainIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CN_DomainIndicator;
+asn_struct_free_f RANAP_CN_DomainIndicator_free;
+asn_struct_print_f RANAP_CN_DomainIndicator_print;
+asn_constr_check_f RANAP_CN_DomainIndicator_constraint;
+ber_type_decoder_f RANAP_CN_DomainIndicator_decode_ber;
+der_type_encoder_f RANAP_CN_DomainIndicator_encode_der;
+xer_type_decoder_f RANAP_CN_DomainIndicator_decode_xer;
+xer_type_encoder_f RANAP_CN_DomainIndicator_encode_xer;
+per_type_decoder_f RANAP_CN_DomainIndicator_decode_uper;
+per_type_encoder_f RANAP_CN_DomainIndicator_encode_uper;
+per_type_decoder_f RANAP_CN_DomainIndicator_decode_aper;
+per_type_encoder_f RANAP_CN_DomainIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CN_DomainIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CN-ID.h b/include/osmocom/ranap/RANAP_CN-ID.h
new file mode 100644
index 0000000..2032791
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CN-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CN_ID_H_
+#define _RANAP_CN_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CN-ID */
+typedef long RANAP_CN_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CN_ID;
+asn_struct_free_f RANAP_CN_ID_free;
+asn_struct_print_f RANAP_CN_ID_print;
+asn_constr_check_f RANAP_CN_ID_constraint;
+ber_type_decoder_f RANAP_CN_ID_decode_ber;
+der_type_encoder_f RANAP_CN_ID_encode_der;
+xer_type_decoder_f RANAP_CN_ID_decode_xer;
+xer_type_encoder_f RANAP_CN_ID_encode_xer;
+per_type_decoder_f RANAP_CN_ID_decode_uper;
+per_type_encoder_f RANAP_CN_ID_encode_uper;
+per_type_decoder_f RANAP_CN_ID_decode_aper;
+per_type_encoder_f RANAP_CN_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CN_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CN-InvokeTrace.h b/include/osmocom/ranap/RANAP_CN-InvokeTrace.h
new file mode 100644
index 0000000..6b51611
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CN-InvokeTrace.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_CN_InvokeTrace_H_
+#define _RANAP_CN_InvokeTrace_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CN-InvokeTrace */
+typedef struct RANAP_CN_InvokeTrace {
+ struct cN_InvokeTrace_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cN_InvokeTrace_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CN_InvokeTrace_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CN_InvokeTrace;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CN_InvokeTrace_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CNMBMSLinkingInformation.h b/include/osmocom/ranap/RANAP_CNMBMSLinkingInformation.h
new file mode 100644
index 0000000..93e9342
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CNMBMSLinkingInformation.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_CNMBMSLinkingInformation_H_
+#define _RANAP_CNMBMSLinkingInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CNMBMSLinkingInformation */
+typedef struct RANAP_CNMBMSLinkingInformation {
+ RANAP_JoinedMBMSBearerService_IEs_t joinedMBMSBearerService_IEs;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CNMBMSLinkingInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CNMBMSLinkingInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CNMBMSLinkingInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CSFB-Information.h b/include/osmocom/ranap/RANAP_CSFB-Information.h
new file mode 100644
index 0000000..8a64b23
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CSFB-Information.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CSFB_Information_H_
+#define _RANAP_CSFB_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CSFB_Information {
+ RANAP_CSFB_Information_csfb = 0,
+ RANAP_CSFB_Information_csfb_high_priority = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_CSFB_Information;
+
+/* RANAP_CSFB-Information */
+typedef long RANAP_CSFB_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CSFB_Information;
+asn_struct_free_f RANAP_CSFB_Information_free;
+asn_struct_print_f RANAP_CSFB_Information_print;
+asn_constr_check_f RANAP_CSFB_Information_constraint;
+ber_type_decoder_f RANAP_CSFB_Information_decode_ber;
+der_type_encoder_f RANAP_CSFB_Information_encode_der;
+xer_type_decoder_f RANAP_CSFB_Information_decode_xer;
+xer_type_encoder_f RANAP_CSFB_Information_encode_xer;
+per_type_decoder_f RANAP_CSFB_Information_decode_uper;
+per_type_encoder_f RANAP_CSFB_Information_encode_uper;
+per_type_decoder_f RANAP_CSFB_Information_decode_aper;
+per_type_encoder_f RANAP_CSFB_Information_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CSFB_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CSG-Id-List.h b/include/osmocom/ranap/RANAP_CSG-Id-List.h
new file mode 100644
index 0000000..2ea2274
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CSG-Id-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CSG_Id_List_H_
+#define _RANAP_CSG_Id_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CSG-Id.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CSG-Id-List */
+typedef struct RANAP_CSG_Id_List {
+ A_SEQUENCE_OF(RANAP_CSG_Id_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CSG_Id_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Id_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CSG_Id_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CSG-Id.h b/include/osmocom/ranap/RANAP_CSG-Id.h
new file mode 100644
index 0000000..57dd868
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CSG-Id.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CSG_Id_H_
+#define _RANAP_CSG_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CSG-Id */
+typedef BIT_STRING_t RANAP_CSG_Id_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Id;
+asn_struct_free_f RANAP_CSG_Id_free;
+asn_struct_print_f RANAP_CSG_Id_print;
+asn_constr_check_f RANAP_CSG_Id_constraint;
+ber_type_decoder_f RANAP_CSG_Id_decode_ber;
+der_type_encoder_f RANAP_CSG_Id_encode_der;
+xer_type_decoder_f RANAP_CSG_Id_decode_xer;
+xer_type_encoder_f RANAP_CSG_Id_encode_xer;
+per_type_decoder_f RANAP_CSG_Id_decode_uper;
+per_type_encoder_f RANAP_CSG_Id_encode_uper;
+per_type_decoder_f RANAP_CSG_Id_decode_aper;
+per_type_encoder_f RANAP_CSG_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CSG_Id_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CSG-Membership-Status.h b/include/osmocom/ranap/RANAP_CSG-Membership-Status.h
new file mode 100644
index 0000000..eeeae70
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CSG-Membership-Status.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CSG_Membership_Status_H_
+#define _RANAP_CSG_Membership_Status_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CSG_Membership_Status {
+ RANAP_CSG_Membership_Status_member = 0,
+ RANAP_CSG_Membership_Status_non_member = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_CSG_Membership_Status;
+
+/* RANAP_CSG-Membership-Status */
+typedef long RANAP_CSG_Membership_Status_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Membership_Status;
+asn_struct_free_f RANAP_CSG_Membership_Status_free;
+asn_struct_print_f RANAP_CSG_Membership_Status_print;
+asn_constr_check_f RANAP_CSG_Membership_Status_constraint;
+ber_type_decoder_f RANAP_CSG_Membership_Status_decode_ber;
+der_type_encoder_f RANAP_CSG_Membership_Status_encode_der;
+xer_type_decoder_f RANAP_CSG_Membership_Status_decode_xer;
+xer_type_encoder_f RANAP_CSG_Membership_Status_encode_xer;
+per_type_decoder_f RANAP_CSG_Membership_Status_decode_uper;
+per_type_encoder_f RANAP_CSG_Membership_Status_encode_uper;
+per_type_decoder_f RANAP_CSG_Membership_Status_decode_aper;
+per_type_encoder_f RANAP_CSG_Membership_Status_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CSG_Membership_Status_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Cause.h b/include/osmocom/ranap/RANAP_Cause.h
new file mode 100644
index 0000000..82ec137
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Cause.h
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Cause_H_
+#define _RANAP_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CauseRadioNetwork.h>
+#include <osmocom/ranap/RANAP_CauseTransmissionNetwork.h>
+#include <osmocom/ranap/RANAP_CauseNAS.h>
+#include <osmocom/ranap/RANAP_CauseProtocol.h>
+#include <osmocom/ranap/RANAP_CauseMisc.h>
+#include <osmocom/ranap/RANAP_CauseNon-Standard.h>
+#include <osmocom/ranap/RANAP_CauseRadioNetworkExtension.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Cause_PR {
+ RANAP_Cause_PR_NOTHING, /* No components present */
+ RANAP_Cause_PR_radioNetwork,
+ RANAP_Cause_PR_transmissionNetwork,
+ RANAP_Cause_PR_nAS,
+ RANAP_Cause_PR_protocol,
+ RANAP_Cause_PR_misc,
+ RANAP_Cause_PR_non_Standard,
+ /* Extensions may appear below */
+ RANAP_Cause_PR_radioNetworkExtension
+} RANAP_Cause_PR;
+
+/* RANAP_Cause */
+typedef struct RANAP_Cause {
+ RANAP_Cause_PR present;
+ union RANAP_Cause_u {
+ RANAP_CauseRadioNetwork_t radioNetwork;
+ RANAP_CauseTransmissionNetwork_t transmissionNetwork;
+ RANAP_CauseNAS_t nAS;
+ RANAP_CauseProtocol_t protocol;
+ RANAP_CauseMisc_t misc;
+ RANAP_CauseNon_Standard_t non_Standard;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_CauseRadioNetworkExtension_t radioNetworkExtension;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Cause;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseMisc.h b/include/osmocom/ranap/RANAP_CauseMisc.h
new file mode 100644
index 0000000..69ff507
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseMisc.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseMisc_H_
+#define _RANAP_CauseMisc_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseMisc {
+ RANAP_CauseMisc_om_intervention = 113,
+ RANAP_CauseMisc_no_resource_available = 114,
+ RANAP_CauseMisc_unspecified_failure = 115,
+ RANAP_CauseMisc_network_optimisation = 116
+} e_RANAP_CauseMisc;
+
+/* RANAP_CauseMisc */
+typedef long RANAP_CauseMisc_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseMisc;
+asn_struct_free_f RANAP_CauseMisc_free;
+asn_struct_print_f RANAP_CauseMisc_print;
+asn_constr_check_f RANAP_CauseMisc_constraint;
+ber_type_decoder_f RANAP_CauseMisc_decode_ber;
+der_type_encoder_f RANAP_CauseMisc_encode_der;
+xer_type_decoder_f RANAP_CauseMisc_decode_xer;
+xer_type_encoder_f RANAP_CauseMisc_encode_xer;
+per_type_decoder_f RANAP_CauseMisc_decode_uper;
+per_type_encoder_f RANAP_CauseMisc_encode_uper;
+per_type_decoder_f RANAP_CauseMisc_decode_aper;
+per_type_encoder_f RANAP_CauseMisc_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseMisc_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseNAS.h b/include/osmocom/ranap/RANAP_CauseNAS.h
new file mode 100644
index 0000000..90f60a4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseNAS.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseNAS_H_
+#define _RANAP_CauseNAS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseNAS {
+ RANAP_CauseNAS_user_restriction_start_indication = 81,
+ RANAP_CauseNAS_user_restriction_end_indication = 82,
+ RANAP_CauseNAS_normal_release = 83,
+ RANAP_CauseNAS_csg_subscription_expiry = 84
+} e_RANAP_CauseNAS;
+
+/* RANAP_CauseNAS */
+typedef long RANAP_CauseNAS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseNAS;
+asn_struct_free_f RANAP_CauseNAS_free;
+asn_struct_print_f RANAP_CauseNAS_print;
+asn_constr_check_f RANAP_CauseNAS_constraint;
+ber_type_decoder_f RANAP_CauseNAS_decode_ber;
+der_type_encoder_f RANAP_CauseNAS_encode_der;
+xer_type_decoder_f RANAP_CauseNAS_decode_xer;
+xer_type_encoder_f RANAP_CauseNAS_encode_xer;
+per_type_decoder_f RANAP_CauseNAS_decode_uper;
+per_type_encoder_f RANAP_CauseNAS_encode_uper;
+per_type_decoder_f RANAP_CauseNAS_decode_aper;
+per_type_encoder_f RANAP_CauseNAS_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseNAS_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseNon-Standard.h b/include/osmocom/ranap/RANAP_CauseNon-Standard.h
new file mode 100644
index 0000000..22e85e4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseNon-Standard.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseNon_Standard_H_
+#define _RANAP_CauseNon_Standard_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CauseNon-Standard */
+typedef long RANAP_CauseNon_Standard_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseNon_Standard;
+asn_struct_free_f RANAP_CauseNon_Standard_free;
+asn_struct_print_f RANAP_CauseNon_Standard_print;
+asn_constr_check_f RANAP_CauseNon_Standard_constraint;
+ber_type_decoder_f RANAP_CauseNon_Standard_decode_ber;
+der_type_encoder_f RANAP_CauseNon_Standard_encode_der;
+xer_type_decoder_f RANAP_CauseNon_Standard_decode_xer;
+xer_type_encoder_f RANAP_CauseNon_Standard_encode_xer;
+per_type_decoder_f RANAP_CauseNon_Standard_decode_uper;
+per_type_encoder_f RANAP_CauseNon_Standard_encode_uper;
+per_type_decoder_f RANAP_CauseNon_Standard_decode_aper;
+per_type_encoder_f RANAP_CauseNon_Standard_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseNon_Standard_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseProtocol.h b/include/osmocom/ranap/RANAP_CauseProtocol.h
new file mode 100644
index 0000000..d05f6e4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseProtocol.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseProtocol_H_
+#define _RANAP_CauseProtocol_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseProtocol {
+ RANAP_CauseProtocol_transfer_syntax_error = 97,
+ RANAP_CauseProtocol_semantic_error = 98,
+ RANAP_CauseProtocol_message_not_compatible_with_receiver_state = 99,
+ RANAP_CauseProtocol_abstract_syntax_error_reject = 100,
+ RANAP_CauseProtocol_abstract_syntax_error_ignore_and_notify = 101,
+ RANAP_CauseProtocol_abstract_syntax_error_falsely_constructed_message = 102
+} e_RANAP_CauseProtocol;
+
+/* RANAP_CauseProtocol */
+typedef long RANAP_CauseProtocol_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseProtocol;
+asn_struct_free_f RANAP_CauseProtocol_free;
+asn_struct_print_f RANAP_CauseProtocol_print;
+asn_constr_check_f RANAP_CauseProtocol_constraint;
+ber_type_decoder_f RANAP_CauseProtocol_decode_ber;
+der_type_encoder_f RANAP_CauseProtocol_encode_der;
+xer_type_decoder_f RANAP_CauseProtocol_decode_xer;
+xer_type_encoder_f RANAP_CauseProtocol_encode_xer;
+per_type_decoder_f RANAP_CauseProtocol_decode_uper;
+per_type_encoder_f RANAP_CauseProtocol_encode_uper;
+per_type_decoder_f RANAP_CauseProtocol_decode_aper;
+per_type_encoder_f RANAP_CauseProtocol_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseProtocol_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseRadioNetwork.h b/include/osmocom/ranap/RANAP_CauseRadioNetwork.h
new file mode 100644
index 0000000..5abcbc9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseRadioNetwork.h
@@ -0,0 +1,110 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseRadioNetwork_H_
+#define _RANAP_CauseRadioNetwork_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseRadioNetwork {
+ RANAP_CauseRadioNetwork_rab_pre_empted = 1,
+ RANAP_CauseRadioNetwork_trelocoverall_expiry = 2,
+ RANAP_CauseRadioNetwork_trelocprep_expiry = 3,
+ RANAP_CauseRadioNetwork_treloccomplete_expiry = 4,
+ RANAP_CauseRadioNetwork_tqueing_expiry = 5,
+ RANAP_CauseRadioNetwork_relocation_triggered = 6,
+ RANAP_CauseRadioNetwork_trellocalloc_expiry = 7,
+ RANAP_CauseRadioNetwork_unable_to_establish_during_relocation = 8,
+ RANAP_CauseRadioNetwork_unknown_target_rnc = 9,
+ RANAP_CauseRadioNetwork_relocation_cancelled = 10,
+ RANAP_CauseRadioNetwork_successful_relocation = 11,
+ RANAP_CauseRadioNetwork_requested_ciphering_and_or_integrity_protection_algorithms_not_supported = 12,
+ RANAP_CauseRadioNetwork_conflict_with_already_existing_integrity_protection_and_or_ciphering_information = 13,
+ RANAP_CauseRadioNetwork_failure_in_the_radio_interface_procedure = 14,
+ RANAP_CauseRadioNetwork_release_due_to_utran_generated_reason = 15,
+ RANAP_CauseRadioNetwork_user_inactivity = 16,
+ RANAP_CauseRadioNetwork_time_critical_relocation = 17,
+ RANAP_CauseRadioNetwork_requested_traffic_class_not_available = 18,
+ RANAP_CauseRadioNetwork_invalid_rab_parameters_value = 19,
+ RANAP_CauseRadioNetwork_requested_maximum_bit_rate_not_available = 20,
+ RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_not_available = 21,
+ RANAP_CauseRadioNetwork_requested_transfer_delay_not_achievable = 22,
+ RANAP_CauseRadioNetwork_invalid_rab_parameters_combination = 23,
+ RANAP_CauseRadioNetwork_condition_violation_for_sdu_parameters = 24,
+ RANAP_CauseRadioNetwork_condition_violation_for_traffic_handling_priority = 25,
+ RANAP_CauseRadioNetwork_condition_violation_for_guaranteed_bit_rate = 26,
+ RANAP_CauseRadioNetwork_user_plane_versions_not_supported = 27,
+ RANAP_CauseRadioNetwork_iu_up_failure = 28,
+ RANAP_CauseRadioNetwork_relocation_failure_in_target_CN_RNC_or_target_system = 29,
+ RANAP_CauseRadioNetwork_invalid_RAB_ID = 30,
+ RANAP_CauseRadioNetwork_no_remaining_rab = 31,
+ RANAP_CauseRadioNetwork_interaction_with_other_procedure = 32,
+ RANAP_CauseRadioNetwork_requested_maximum_bit_rate_for_dl_not_available = 33,
+ RANAP_CauseRadioNetwork_requested_maximum_bit_rate_for_ul_not_available = 34,
+ RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_for_dl_not_available = 35,
+ RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_for_ul_not_available = 36,
+ RANAP_CauseRadioNetwork_repeated_integrity_checking_failure = 37,
+ RANAP_CauseRadioNetwork_requested_request_type_not_supported = 38,
+ RANAP_CauseRadioNetwork_request_superseded = 39,
+ RANAP_CauseRadioNetwork_release_due_to_UE_generated_signalling_connection_release = 40,
+ RANAP_CauseRadioNetwork_resource_optimisation_relocation = 41,
+ RANAP_CauseRadioNetwork_requested_information_not_available = 42,
+ RANAP_CauseRadioNetwork_relocation_desirable_for_radio_reasons = 43,
+ RANAP_CauseRadioNetwork_relocation_not_supported_in_target_RNC_or_target_system = 44,
+ RANAP_CauseRadioNetwork_directed_retry = 45,
+ RANAP_CauseRadioNetwork_radio_connection_with_UE_Lost = 46,
+ RANAP_CauseRadioNetwork_rNC_unable_to_establish_all_RFCs = 47,
+ RANAP_CauseRadioNetwork_deciphering_keys_not_available = 48,
+ RANAP_CauseRadioNetwork_dedicated_assistance_data_not_available = 49,
+ RANAP_CauseRadioNetwork_relocation_target_not_allowed = 50,
+ RANAP_CauseRadioNetwork_location_reporting_congestion = 51,
+ RANAP_CauseRadioNetwork_reduce_load_in_serving_cell = 52,
+ RANAP_CauseRadioNetwork_no_radio_resources_available_in_target_cell = 53,
+ RANAP_CauseRadioNetwork_gERAN_Iumode_failure = 54,
+ RANAP_CauseRadioNetwork_access_restricted_due_to_shared_networks = 55,
+ RANAP_CauseRadioNetwork_incoming_relocation_not_supported_due_to_PUESBINE_feature = 56,
+ RANAP_CauseRadioNetwork_traffic_load_in_the_target_cell_higher_than_in_the_source_cell = 57,
+ RANAP_CauseRadioNetwork_mBMS_no_multicast_service_for_this_UE = 58,
+ RANAP_CauseRadioNetwork_mBMS_unknown_UE_ID = 59,
+ RANAP_CauseRadioNetwork_successful_MBMS_session_start_no_data_bearer_necessary = 60,
+ RANAP_CauseRadioNetwork_mBMS_superseded_due_to_NNSF = 61,
+ RANAP_CauseRadioNetwork_mBMS_UE_linking_already_done = 62,
+ RANAP_CauseRadioNetwork_mBMS_UE_de_linking_failure_no_existing_UE_linking = 63,
+ RANAP_CauseRadioNetwork_tMGI_unknown = 64
+} e_RANAP_CauseRadioNetwork;
+
+/* RANAP_CauseRadioNetwork */
+typedef long RANAP_CauseRadioNetwork_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseRadioNetwork;
+asn_struct_free_f RANAP_CauseRadioNetwork_free;
+asn_struct_print_f RANAP_CauseRadioNetwork_print;
+asn_constr_check_f RANAP_CauseRadioNetwork_constraint;
+ber_type_decoder_f RANAP_CauseRadioNetwork_decode_ber;
+der_type_encoder_f RANAP_CauseRadioNetwork_encode_der;
+xer_type_decoder_f RANAP_CauseRadioNetwork_decode_xer;
+xer_type_encoder_f RANAP_CauseRadioNetwork_encode_xer;
+per_type_decoder_f RANAP_CauseRadioNetwork_decode_uper;
+per_type_encoder_f RANAP_CauseRadioNetwork_encode_uper;
+per_type_decoder_f RANAP_CauseRadioNetwork_decode_aper;
+per_type_encoder_f RANAP_CauseRadioNetwork_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseRadioNetwork_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseRadioNetworkExtension.h b/include/osmocom/ranap/RANAP_CauseRadioNetworkExtension.h
new file mode 100644
index 0000000..b055f58
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseRadioNetworkExtension.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseRadioNetworkExtension_H_
+#define _RANAP_CauseRadioNetworkExtension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseRadioNetworkExtension {
+ RANAP_CauseRadioNetworkExtension_iP_multicast_address_and_APN_not_valid = 257,
+ RANAP_CauseRadioNetworkExtension_mBMS_de_registration_rejected_due_to_implicit_registration = 258,
+ RANAP_CauseRadioNetworkExtension_mBMS_request_superseded = 259,
+ RANAP_CauseRadioNetworkExtension_mBMS_de_registration_during_session_not_allowed = 260,
+ RANAP_CauseRadioNetworkExtension_mBMS_no_data_bearer_necessary = 261,
+ RANAP_CauseRadioNetworkExtension_periodicLocationInformationNotAvailable = 262,
+ RANAP_CauseRadioNetworkExtension_gTP_Resources_Unavailable = 263,
+ RANAP_CauseRadioNetworkExtension_tMGI_inUse_overlapping_MBMS_service_area = 264,
+ RANAP_CauseRadioNetworkExtension_mBMS_no_cell_in_MBMS_service_area = 265,
+ RANAP_CauseRadioNetworkExtension_no_Iu_CS_UP_relocation = 266,
+ RANAP_CauseRadioNetworkExtension_successful_MBMS_Session_Start_IP_Multicast_Bearer_established = 267,
+ RANAP_CauseRadioNetworkExtension_cS_fallback_triggered = 268,
+ RANAP_CauseRadioNetworkExtension_invalid_CSG_Id = 269
+} e_RANAP_CauseRadioNetworkExtension;
+
+/* RANAP_CauseRadioNetworkExtension */
+typedef long RANAP_CauseRadioNetworkExtension_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseRadioNetworkExtension;
+asn_struct_free_f RANAP_CauseRadioNetworkExtension_free;
+asn_struct_print_f RANAP_CauseRadioNetworkExtension_print;
+asn_constr_check_f RANAP_CauseRadioNetworkExtension_constraint;
+ber_type_decoder_f RANAP_CauseRadioNetworkExtension_decode_ber;
+der_type_encoder_f RANAP_CauseRadioNetworkExtension_encode_der;
+xer_type_decoder_f RANAP_CauseRadioNetworkExtension_decode_xer;
+xer_type_encoder_f RANAP_CauseRadioNetworkExtension_encode_xer;
+per_type_decoder_f RANAP_CauseRadioNetworkExtension_decode_uper;
+per_type_encoder_f RANAP_CauseRadioNetworkExtension_encode_uper;
+per_type_decoder_f RANAP_CauseRadioNetworkExtension_decode_aper;
+per_type_encoder_f RANAP_CauseRadioNetworkExtension_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseRadioNetworkExtension_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CauseTransmissionNetwork.h b/include/osmocom/ranap/RANAP_CauseTransmissionNetwork.h
new file mode 100644
index 0000000..9026c2c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CauseTransmissionNetwork.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CauseTransmissionNetwork_H_
+#define _RANAP_CauseTransmissionNetwork_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CauseTransmissionNetwork {
+ RANAP_CauseTransmissionNetwork_signalling_transport_resource_failure = 65,
+ RANAP_CauseTransmissionNetwork_iu_transport_connection_failed_to_establish = 66
+} e_RANAP_CauseTransmissionNetwork;
+
+/* RANAP_CauseTransmissionNetwork */
+typedef long RANAP_CauseTransmissionNetwork_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CauseTransmissionNetwork;
+asn_struct_free_f RANAP_CauseTransmissionNetwork_free;
+asn_struct_print_f RANAP_CauseTransmissionNetwork_print;
+asn_constr_check_f RANAP_CauseTransmissionNetwork_constraint;
+ber_type_decoder_f RANAP_CauseTransmissionNetwork_decode_ber;
+der_type_encoder_f RANAP_CauseTransmissionNetwork_encode_der;
+xer_type_decoder_f RANAP_CauseTransmissionNetwork_decode_xer;
+xer_type_encoder_f RANAP_CauseTransmissionNetwork_encode_xer;
+per_type_decoder_f RANAP_CauseTransmissionNetwork_decode_uper;
+per_type_encoder_f RANAP_CauseTransmissionNetwork_encode_uper;
+per_type_decoder_f RANAP_CauseTransmissionNetwork_decode_aper;
+per_type_encoder_f RANAP_CauseTransmissionNetwork_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CauseTransmissionNetwork_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Cell-Access-Mode.h b/include/osmocom/ranap/RANAP_Cell-Access-Mode.h
new file mode 100644
index 0000000..e0389a9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Cell-Access-Mode.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Cell_Access_Mode_H_
+#define _RANAP_Cell_Access_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Cell_Access_Mode {
+ RANAP_Cell_Access_Mode_hybrid = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Cell_Access_Mode;
+
+/* RANAP_Cell-Access-Mode */
+typedef long RANAP_Cell_Access_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Access_Mode;
+asn_struct_free_f RANAP_Cell_Access_Mode_free;
+asn_struct_print_f RANAP_Cell_Access_Mode_print;
+asn_constr_check_f RANAP_Cell_Access_Mode_constraint;
+ber_type_decoder_f RANAP_Cell_Access_Mode_decode_ber;
+der_type_encoder_f RANAP_Cell_Access_Mode_encode_der;
+xer_type_decoder_f RANAP_Cell_Access_Mode_decode_xer;
+xer_type_encoder_f RANAP_Cell_Access_Mode_encode_xer;
+per_type_decoder_f RANAP_Cell_Access_Mode_decode_uper;
+per_type_encoder_f RANAP_Cell_Access_Mode_encode_uper;
+per_type_decoder_f RANAP_Cell_Access_Mode_decode_aper;
+per_type_encoder_f RANAP_Cell_Access_Mode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Cell_Access_Mode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h b/include/osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h
new file mode 100644
index 0000000..b414ad3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Cell_Capacity_Class_Value_H_
+#define _RANAP_Cell_Capacity_Class_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Cell-Capacity-Class-Value */
+typedef long RANAP_Cell_Capacity_Class_Value_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Capacity_Class_Value;
+asn_struct_free_f RANAP_Cell_Capacity_Class_Value_free;
+asn_struct_print_f RANAP_Cell_Capacity_Class_Value_print;
+asn_constr_check_f RANAP_Cell_Capacity_Class_Value_constraint;
+ber_type_decoder_f RANAP_Cell_Capacity_Class_Value_decode_ber;
+der_type_encoder_f RANAP_Cell_Capacity_Class_Value_encode_der;
+xer_type_decoder_f RANAP_Cell_Capacity_Class_Value_decode_xer;
+xer_type_encoder_f RANAP_Cell_Capacity_Class_Value_encode_xer;
+per_type_decoder_f RANAP_Cell_Capacity_Class_Value_decode_uper;
+per_type_encoder_f RANAP_Cell_Capacity_Class_Value_encode_uper;
+per_type_decoder_f RANAP_Cell_Capacity_Class_Value_decode_aper;
+per_type_encoder_f RANAP_Cell_Capacity_Class_Value_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Cell_Capacity_Class_Value_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Cell-Id.h b/include/osmocom/ranap/RANAP_Cell-Id.h
new file mode 100644
index 0000000..36aed83
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Cell-Id.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Cell_Id_H_
+#define _RANAP_Cell_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Cell-Id */
+typedef long RANAP_Cell_Id_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Id;
+asn_struct_free_f RANAP_Cell_Id_free;
+asn_struct_print_f RANAP_Cell_Id_print;
+asn_constr_check_f RANAP_Cell_Id_constraint;
+ber_type_decoder_f RANAP_Cell_Id_decode_ber;
+der_type_encoder_f RANAP_Cell_Id_encode_der;
+xer_type_decoder_f RANAP_Cell_Id_decode_xer;
+xer_type_encoder_f RANAP_Cell_Id_encode_xer;
+per_type_decoder_f RANAP_Cell_Id_decode_uper;
+per_type_encoder_f RANAP_Cell_Id_encode_uper;
+per_type_decoder_f RANAP_Cell_Id_decode_aper;
+per_type_encoder_f RANAP_Cell_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Cell_Id_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CellBased.h b/include/osmocom/ranap/RANAP_CellBased.h
new file mode 100644
index 0000000..09edeeb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CellBased.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CellBased_H_
+#define _RANAP_CellBased_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CellIdList.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CellBased */
+typedef struct RANAP_CellBased {
+ RANAP_CellIdList_t cellIdList;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CellBased_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CellBased;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CellBased_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CellIdList.h b/include/osmocom/ranap/RANAP_CellIdList.h
new file mode 100644
index 0000000..9b5779f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CellIdList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CellIdList_H_
+#define _RANAP_CellIdList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Cell-Id.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CellIdList */
+typedef struct RANAP_CellIdList {
+ A_SEQUENCE_OF(RANAP_Cell_Id_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CellIdList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CellIdList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CellIdList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CellLoadInformation.h b/include/osmocom/ranap/RANAP_CellLoadInformation.h
new file mode 100644
index 0000000..b4f3753
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CellLoadInformation.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CellLoadInformation_H_
+#define _RANAP_CellLoadInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h>
+#include <osmocom/ranap/RANAP_LoadValue.h>
+#include <osmocom/ranap/RANAP_RTLoadValue.h>
+#include <osmocom/ranap/RANAP_NRTLoadInformationValue.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CellLoadInformation */
+typedef struct RANAP_CellLoadInformation {
+ RANAP_Cell_Capacity_Class_Value_t cell_Capacity_Class_Value;
+ RANAP_LoadValue_t loadValue;
+ RANAP_RTLoadValue_t *rTLoadValue /* OPTIONAL */;
+ RANAP_NRTLoadInformationValue_t *nRTLoadInformationValue /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CellLoadInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CellLoadInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CellLoadInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CellLoadInformationGroup.h b/include/osmocom/ranap/RANAP_CellLoadInformationGroup.h
new file mode 100644
index 0000000..092b5b0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CellLoadInformationGroup.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CellLoadInformationGroup_H_
+#define _RANAP_CellLoadInformationGroup_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SourceCellID.h>
+#include <osmocom/ranap/RANAP_CellLoadInformation.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CellLoadInformationGroup */
+typedef struct RANAP_CellLoadInformationGroup {
+ RANAP_SourceCellID_t sourceCellID;
+ RANAP_CellLoadInformation_t *uplinkCellLoadInformation /* OPTIONAL */;
+ RANAP_CellLoadInformation_t *downlinkCellLoadInformation /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CellLoadInformationGroup_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CellLoadInformationGroup;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CellLoadInformationGroup_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CellType.h b/include/osmocom/ranap/RANAP_CellType.h
new file mode 100644
index 0000000..6e47d31
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CellType.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CellType_H_
+#define _RANAP_CellType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_CellType {
+ RANAP_CellType_macro = 0,
+ RANAP_CellType_micro = 1,
+ RANAP_CellType_pico = 2,
+ RANAP_CellType_femto = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_CellType;
+
+/* RANAP_CellType */
+typedef long RANAP_CellType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CellType;
+asn_struct_free_f RANAP_CellType_free;
+asn_struct_print_f RANAP_CellType_print;
+asn_constr_check_f RANAP_CellType_constraint;
+ber_type_decoder_f RANAP_CellType_decode_ber;
+der_type_encoder_f RANAP_CellType_encode_der;
+xer_type_decoder_f RANAP_CellType_decode_xer;
+xer_type_encoder_f RANAP_CellType_encode_xer;
+per_type_decoder_f RANAP_CellType_decode_uper;
+per_type_encoder_f RANAP_CellType_encode_uper;
+per_type_decoder_f RANAP_CellType_decode_aper;
+per_type_encoder_f RANAP_CellType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CellType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h b/include/osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h
new file mode 100644
index 0000000..6d4b8fe
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+#include <constr_CHOICE.h>
+
+#ifndef _RANAP_ChosenEncryptionAlgorithm_H_
+#define _RANAP_ChosenEncryptionAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_EncryptionAlgorithm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ChosenEncryptionAlgorithm */
+typedef RANAP_EncryptionAlgorithm_t RANAP_ChosenEncryptionAlgorithm_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ChosenEncryptionAlgorithm;
+asn_struct_free_f RANAP_ChosenEncryptionAlgorithm_free;
+asn_struct_print_f RANAP_ChosenEncryptionAlgorithm_print;
+asn_constr_check_f RANAP_ChosenEncryptionAlgorithm_constraint;
+ber_type_decoder_f RANAP_ChosenEncryptionAlgorithm_decode_ber;
+der_type_encoder_f RANAP_ChosenEncryptionAlgorithm_encode_der;
+xer_type_decoder_f RANAP_ChosenEncryptionAlgorithm_decode_xer;
+xer_type_encoder_f RANAP_ChosenEncryptionAlgorithm_encode_xer;
+per_type_decoder_f RANAP_ChosenEncryptionAlgorithm_decode_uper;
+per_type_encoder_f RANAP_ChosenEncryptionAlgorithm_encode_uper;
+per_type_decoder_f RANAP_ChosenEncryptionAlgorithm_decode_aper;
+per_type_encoder_f RANAP_ChosenEncryptionAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ChosenEncryptionAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h b/include/osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h
new file mode 100644
index 0000000..d3d4963
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+#include <constr_CHOICE.h>
+
+#ifndef _RANAP_ChosenIntegrityProtectionAlgorithm_H_
+#define _RANAP_ChosenIntegrityProtectionAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ChosenIntegrityProtectionAlgorithm */
+typedef RANAP_IntegrityProtectionAlgorithm_t RANAP_ChosenIntegrityProtectionAlgorithm_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ChosenIntegrityProtectionAlgorithm;
+asn_struct_free_f RANAP_ChosenIntegrityProtectionAlgorithm_free;
+asn_struct_print_f RANAP_ChosenIntegrityProtectionAlgorithm_print;
+asn_constr_check_f RANAP_ChosenIntegrityProtectionAlgorithm_constraint;
+ber_type_decoder_f RANAP_ChosenIntegrityProtectionAlgorithm_decode_ber;
+der_type_encoder_f RANAP_ChosenIntegrityProtectionAlgorithm_encode_der;
+xer_type_decoder_f RANAP_ChosenIntegrityProtectionAlgorithm_decode_xer;
+xer_type_encoder_f RANAP_ChosenIntegrityProtectionAlgorithm_encode_xer;
+per_type_decoder_f RANAP_ChosenIntegrityProtectionAlgorithm_decode_uper;
+per_type_encoder_f RANAP_ChosenIntegrityProtectionAlgorithm_encode_uper;
+per_type_decoder_f RANAP_ChosenIntegrityProtectionAlgorithm_decode_aper;
+per_type_encoder_f RANAP_ChosenIntegrityProtectionAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ChosenIntegrityProtectionAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ClassmarkInformation2.h b/include/osmocom/ranap/RANAP_ClassmarkInformation2.h
new file mode 100644
index 0000000..efab851
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ClassmarkInformation2.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ClassmarkInformation2_H_
+#define _RANAP_ClassmarkInformation2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ClassmarkInformation2 */
+typedef OCTET_STRING_t RANAP_ClassmarkInformation2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ClassmarkInformation2;
+asn_struct_free_f RANAP_ClassmarkInformation2_free;
+asn_struct_print_f RANAP_ClassmarkInformation2_print;
+asn_constr_check_f RANAP_ClassmarkInformation2_constraint;
+ber_type_decoder_f RANAP_ClassmarkInformation2_decode_ber;
+der_type_encoder_f RANAP_ClassmarkInformation2_encode_der;
+xer_type_decoder_f RANAP_ClassmarkInformation2_decode_xer;
+xer_type_encoder_f RANAP_ClassmarkInformation2_encode_xer;
+per_type_decoder_f RANAP_ClassmarkInformation2_decode_uper;
+per_type_encoder_f RANAP_ClassmarkInformation2_encode_uper;
+per_type_decoder_f RANAP_ClassmarkInformation2_decode_aper;
+per_type_encoder_f RANAP_ClassmarkInformation2_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ClassmarkInformation2_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ClassmarkInformation3.h b/include/osmocom/ranap/RANAP_ClassmarkInformation3.h
new file mode 100644
index 0000000..db377ff
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ClassmarkInformation3.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ClassmarkInformation3_H_
+#define _RANAP_ClassmarkInformation3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ClassmarkInformation3 */
+typedef OCTET_STRING_t RANAP_ClassmarkInformation3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ClassmarkInformation3;
+asn_struct_free_f RANAP_ClassmarkInformation3_free;
+asn_struct_print_f RANAP_ClassmarkInformation3_print;
+asn_constr_check_f RANAP_ClassmarkInformation3_constraint;
+ber_type_decoder_f RANAP_ClassmarkInformation3_decode_ber;
+der_type_encoder_f RANAP_ClassmarkInformation3_encode_der;
+xer_type_decoder_f RANAP_ClassmarkInformation3_decode_xer;
+xer_type_encoder_f RANAP_ClassmarkInformation3_encode_xer;
+per_type_decoder_f RANAP_ClassmarkInformation3_decode_uper;
+per_type_encoder_f RANAP_ClassmarkInformation3_encode_uper;
+per_type_decoder_f RANAP_ClassmarkInformation3_decode_aper;
+per_type_encoder_f RANAP_ClassmarkInformation3_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ClassmarkInformation3_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ClientType.h b/include/osmocom/ranap/RANAP_ClientType.h
new file mode 100644
index 0000000..834cc0f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ClientType.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ClientType_H_
+#define _RANAP_ClientType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ClientType {
+ RANAP_ClientType_emergency_Services = 0,
+ RANAP_ClientType_value_Added_Services = 1,
+ RANAP_ClientType_pLMN_Operator_Services = 2,
+ RANAP_ClientType_lawful_Intercept_Services = 3,
+ RANAP_ClientType_pLMN_Operator_Broadcast_Services = 4,
+ RANAP_ClientType_pLMN_Operator_O_et_M = 5,
+ RANAP_ClientType_pLMN_Operator_Anonymous_Statistics = 6,
+ RANAP_ClientType_pLMN_Operator_Target_MS_Service_Support = 7
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ClientType;
+
+/* RANAP_ClientType */
+typedef long RANAP_ClientType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ClientType;
+asn_struct_free_f RANAP_ClientType_free;
+asn_struct_print_f RANAP_ClientType_print;
+asn_constr_check_f RANAP_ClientType_constraint;
+ber_type_decoder_f RANAP_ClientType_decode_ber;
+der_type_encoder_f RANAP_ClientType_encode_der;
+xer_type_decoder_f RANAP_ClientType_decode_xer;
+xer_type_encoder_f RANAP_ClientType_encode_xer;
+per_type_decoder_f RANAP_ClientType_decode_uper;
+per_type_encoder_f RANAP_ClientType_encode_uper;
+per_type_decoder_f RANAP_ClientType_decode_aper;
+per_type_encoder_f RANAP_ClientType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ClientType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CommonID.h b/include/osmocom/ranap/RANAP_CommonID.h
new file mode 100644
index 0000000..0eb0e41
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CommonID.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_CommonID_H_
+#define _RANAP_CommonID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CommonID */
+typedef struct RANAP_CommonID {
+ struct commonID_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } commonID_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CommonID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CommonID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CommonID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Correlation-ID.h b/include/osmocom/ranap/RANAP_Correlation-ID.h
new file mode 100644
index 0000000..a47174a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Correlation-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Correlation_ID_H_
+#define _RANAP_Correlation_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Correlation-ID */
+typedef OCTET_STRING_t RANAP_Correlation_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Correlation_ID;
+asn_struct_free_f RANAP_Correlation_ID_free;
+asn_struct_print_f RANAP_Correlation_ID_print;
+asn_constr_check_f RANAP_Correlation_ID_constraint;
+ber_type_decoder_f RANAP_Correlation_ID_decode_ber;
+der_type_encoder_f RANAP_Correlation_ID_encode_der;
+xer_type_decoder_f RANAP_Correlation_ID_decode_xer;
+xer_type_encoder_f RANAP_Correlation_ID_encode_xer;
+per_type_decoder_f RANAP_Correlation_ID_decode_uper;
+per_type_encoder_f RANAP_Correlation_ID_encode_uper;
+per_type_decoder_f RANAP_Correlation_ID_decode_aper;
+per_type_encoder_f RANAP_Correlation_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Correlation_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Criticality.h b/include/osmocom/ranap/RANAP_Criticality.h
new file mode 100644
index 0000000..192cd8a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Criticality.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_Criticality_H_
+#define _RANAP_Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Criticality {
+ RANAP_Criticality_reject = 0,
+ RANAP_Criticality_ignore = 1,
+ RANAP_Criticality_notify = 2
+} e_RANAP_Criticality;
+
+/* RANAP_Criticality */
+typedef long RANAP_Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Criticality;
+asn_struct_free_f RANAP_Criticality_free;
+asn_struct_print_f RANAP_Criticality_print;
+asn_constr_check_f RANAP_Criticality_constraint;
+ber_type_decoder_f RANAP_Criticality_decode_ber;
+der_type_encoder_f RANAP_Criticality_encode_der;
+xer_type_decoder_f RANAP_Criticality_decode_xer;
+xer_type_encoder_f RANAP_Criticality_encode_xer;
+per_type_decoder_f RANAP_Criticality_decode_uper;
+per_type_encoder_f RANAP_Criticality_encode_uper;
+per_type_decoder_f RANAP_Criticality_decode_aper;
+per_type_encoder_f RANAP_Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Criticality_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h b/include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h
new file mode 100644
index 0000000..0eaeb3e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CriticalityDiagnostics_IE_List_H_
+#define _RANAP_CriticalityDiagnostics_IE_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_RepetitionNumber0.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CriticalityDiagnostics-IE-List */
+typedef struct RANAP_CriticalityDiagnostics_IE_List {
+ A_SEQUENCE_OF(struct MemberG {
+ RANAP_Criticality_t iECriticality;
+ RANAP_ProtocolIE_ID_t iE_ID;
+ RANAP_RepetitionNumber0_t *repetitionNumber /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CriticalityDiagnostics_IE_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CriticalityDiagnostics_IE_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CriticalityDiagnostics_IE_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_CriticalityDiagnostics.h b/include/osmocom/ranap/RANAP_CriticalityDiagnostics.h
new file mode 100644
index 0000000..a247953
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_CriticalityDiagnostics.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_CriticalityDiagnostics_H_
+#define _RANAP_CriticalityDiagnostics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_TriggeringMessage.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_CriticalityDiagnostics */
+typedef struct RANAP_CriticalityDiagnostics {
+ RANAP_ProcedureCode_t *procedureCode /* OPTIONAL */;
+ RANAP_TriggeringMessage_t *triggeringMessage /* OPTIONAL */;
+ RANAP_Criticality_t *procedureCriticality /* OPTIONAL */;
+ RANAP_CriticalityDiagnostics_IE_List_t *iEsCriticalityDiagnostics /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_CriticalityDiagnostics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_CriticalityDiagnostics;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_CriticalityDiagnostics_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_D-RNTI.h b/include/osmocom/ranap/RANAP_D-RNTI.h
new file mode 100644
index 0000000..4ede3e4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_D-RNTI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_D_RNTI_H_
+#define _RANAP_D_RNTI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_D-RNTI */
+typedef long RANAP_D_RNTI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_D_RNTI;
+asn_struct_free_f RANAP_D_RNTI_free;
+asn_struct_print_f RANAP_D_RNTI_print;
+asn_constr_check_f RANAP_D_RNTI_constraint;
+ber_type_decoder_f RANAP_D_RNTI_decode_ber;
+der_type_encoder_f RANAP_D_RNTI_encode_der;
+xer_type_decoder_f RANAP_D_RNTI_decode_xer;
+xer_type_encoder_f RANAP_D_RNTI_encode_xer;
+per_type_decoder_f RANAP_D_RNTI_decode_uper;
+per_type_encoder_f RANAP_D_RNTI_encode_uper;
+per_type_decoder_f RANAP_D_RNTI_decode_aper;
+per_type_encoder_f RANAP_D_RNTI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_D_RNTI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DCH-ID.h b/include/osmocom/ranap/RANAP_DCH-ID.h
new file mode 100644
index 0000000..756fd5d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DCH-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DCH_ID_H_
+#define _RANAP_DCH_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DCH-ID */
+typedef long RANAP_DCH_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DCH_ID;
+asn_struct_free_f RANAP_DCH_ID_free;
+asn_struct_print_f RANAP_DCH_ID_print;
+asn_constr_check_f RANAP_DCH_ID_constraint;
+ber_type_decoder_f RANAP_DCH_ID_decode_ber;
+der_type_encoder_f RANAP_DCH_ID_encode_der;
+xer_type_decoder_f RANAP_DCH_ID_decode_xer;
+xer_type_encoder_f RANAP_DCH_ID_encode_xer;
+per_type_decoder_f RANAP_DCH_ID_decode_uper;
+per_type_encoder_f RANAP_DCH_ID_encode_uper;
+per_type_decoder_f RANAP_DCH_ID_decode_aper;
+per_type_encoder_f RANAP_DCH_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DCH_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h b/include/osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h
new file mode 100644
index 0000000..94b1ad1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DL_GTP_PDU_SequenceNumber_H_
+#define _RANAP_DL_GTP_PDU_SequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DL-GTP-PDU-SequenceNumber */
+typedef long RANAP_DL_GTP_PDU_SequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber;
+asn_struct_free_f RANAP_DL_GTP_PDU_SequenceNumber_free;
+asn_struct_print_f RANAP_DL_GTP_PDU_SequenceNumber_print;
+asn_constr_check_f RANAP_DL_GTP_PDU_SequenceNumber_constraint;
+ber_type_decoder_f RANAP_DL_GTP_PDU_SequenceNumber_decode_ber;
+der_type_encoder_f RANAP_DL_GTP_PDU_SequenceNumber_encode_der;
+xer_type_decoder_f RANAP_DL_GTP_PDU_SequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_DL_GTP_PDU_SequenceNumber_encode_xer;
+per_type_decoder_f RANAP_DL_GTP_PDU_SequenceNumber_decode_uper;
+per_type_encoder_f RANAP_DL_GTP_PDU_SequenceNumber_encode_uper;
+per_type_decoder_f RANAP_DL_GTP_PDU_SequenceNumber_decode_aper;
+per_type_encoder_f RANAP_DL_GTP_PDU_SequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DL_GTP_PDU_SequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h b/include/osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h
new file mode 100644
index 0000000..1b4d062
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DL_N_PDU_SequenceNumber_H_
+#define _RANAP_DL_N_PDU_SequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DL-N-PDU-SequenceNumber */
+typedef long RANAP_DL_N_PDU_SequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DL_N_PDU_SequenceNumber;
+asn_struct_free_f RANAP_DL_N_PDU_SequenceNumber_free;
+asn_struct_print_f RANAP_DL_N_PDU_SequenceNumber_print;
+asn_constr_check_f RANAP_DL_N_PDU_SequenceNumber_constraint;
+ber_type_decoder_f RANAP_DL_N_PDU_SequenceNumber_decode_ber;
+der_type_encoder_f RANAP_DL_N_PDU_SequenceNumber_encode_der;
+xer_type_decoder_f RANAP_DL_N_PDU_SequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_DL_N_PDU_SequenceNumber_encode_xer;
+per_type_decoder_f RANAP_DL_N_PDU_SequenceNumber_decode_uper;
+per_type_encoder_f RANAP_DL_N_PDU_SequenceNumber_encode_uper;
+per_type_decoder_f RANAP_DL_N_PDU_SequenceNumber_decode_aper;
+per_type_encoder_f RANAP_DL_N_PDU_SequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DL_N_PDU_SequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h b/include/osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h
new file mode 100644
index 0000000..f1af3ed
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DRX_CycleLengthCoefficient_H_
+#define _RANAP_DRX_CycleLengthCoefficient_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DRX-CycleLengthCoefficient */
+typedef long RANAP_DRX_CycleLengthCoefficient_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DRX_CycleLengthCoefficient;
+asn_struct_free_f RANAP_DRX_CycleLengthCoefficient_free;
+asn_struct_print_f RANAP_DRX_CycleLengthCoefficient_print;
+asn_constr_check_f RANAP_DRX_CycleLengthCoefficient_constraint;
+ber_type_decoder_f RANAP_DRX_CycleLengthCoefficient_decode_ber;
+der_type_encoder_f RANAP_DRX_CycleLengthCoefficient_encode_der;
+xer_type_decoder_f RANAP_DRX_CycleLengthCoefficient_decode_xer;
+xer_type_encoder_f RANAP_DRX_CycleLengthCoefficient_encode_xer;
+per_type_decoder_f RANAP_DRX_CycleLengthCoefficient_decode_uper;
+per_type_encoder_f RANAP_DRX_CycleLengthCoefficient_encode_uper;
+per_type_decoder_f RANAP_DRX_CycleLengthCoefficient_decode_aper;
+per_type_encoder_f RANAP_DRX_CycleLengthCoefficient_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DRX_CycleLengthCoefficient_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DSCH-ID.h b/include/osmocom/ranap/RANAP_DSCH-ID.h
new file mode 100644
index 0000000..54e678b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DSCH-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DSCH_ID_H_
+#define _RANAP_DSCH_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DSCH-ID */
+typedef long RANAP_DSCH_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DSCH_ID;
+asn_struct_free_f RANAP_DSCH_ID_free;
+asn_struct_print_f RANAP_DSCH_ID_print;
+asn_constr_check_f RANAP_DSCH_ID_constraint;
+ber_type_decoder_f RANAP_DSCH_ID_decode_ber;
+der_type_encoder_f RANAP_DSCH_ID_encode_der;
+xer_type_decoder_f RANAP_DSCH_ID_decode_xer;
+xer_type_encoder_f RANAP_DSCH_ID_encode_xer;
+per_type_decoder_f RANAP_DSCH_ID_decode_uper;
+per_type_encoder_f RANAP_DSCH_ID_encode_uper;
+per_type_decoder_f RANAP_DSCH_ID_decode_aper;
+per_type_encoder_f RANAP_DSCH_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DSCH_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataPDUType.h b/include/osmocom/ranap/RANAP_DataPDUType.h
new file mode 100644
index 0000000..f732d62
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataPDUType.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DataPDUType_H_
+#define _RANAP_DataPDUType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_DataPDUType {
+ RANAP_DataPDUType_pDUtype0 = 0,
+ RANAP_DataPDUType_pDUtype1 = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_DataPDUType;
+
+/* RANAP_DataPDUType */
+typedef long RANAP_DataPDUType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataPDUType;
+asn_struct_free_f RANAP_DataPDUType_free;
+asn_struct_print_f RANAP_DataPDUType_print;
+asn_constr_check_f RANAP_DataPDUType_constraint;
+ber_type_decoder_f RANAP_DataPDUType_decode_ber;
+der_type_encoder_f RANAP_DataPDUType_encode_der;
+xer_type_decoder_f RANAP_DataPDUType_decode_xer;
+xer_type_encoder_f RANAP_DataPDUType_encode_xer;
+per_type_decoder_f RANAP_DataPDUType_decode_uper;
+per_type_encoder_f RANAP_DataPDUType_encode_uper;
+per_type_decoder_f RANAP_DataPDUType_decode_aper;
+per_type_encoder_f RANAP_DataPDUType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataPDUType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeList.h b/include/osmocom/ranap/RANAP_DataVolumeList.h
new file mode 100644
index 0000000..459c2d5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeList.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DataVolumeList_H_
+#define _RANAP_DataVolumeList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h>
+#include <osmocom/ranap/RANAP_DataVolumeReference.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DataVolumeList */
+typedef struct RANAP_DataVolumeList {
+ A_SEQUENCE_OF(struct MemberH {
+ RANAP_UnsuccessfullyTransmittedDataVolume_t dl_UnsuccessfullyTransmittedDataVolume;
+ RANAP_DataVolumeReference_t *dataVolumeReference /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DataVolumeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeReference.h b/include/osmocom/ranap/RANAP_DataVolumeReference.h
new file mode 100644
index 0000000..693de2b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeReference.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DataVolumeReference_H_
+#define _RANAP_DataVolumeReference_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DataVolumeReference */
+typedef long RANAP_DataVolumeReference_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReference;
+asn_struct_free_f RANAP_DataVolumeReference_free;
+asn_struct_print_f RANAP_DataVolumeReference_print;
+asn_constr_check_f RANAP_DataVolumeReference_constraint;
+ber_type_decoder_f RANAP_DataVolumeReference_decode_ber;
+der_type_encoder_f RANAP_DataVolumeReference_encode_der;
+xer_type_decoder_f RANAP_DataVolumeReference_decode_xer;
+xer_type_encoder_f RANAP_DataVolumeReference_encode_xer;
+per_type_decoder_f RANAP_DataVolumeReference_decode_uper;
+per_type_encoder_f RANAP_DataVolumeReference_encode_uper;
+per_type_decoder_f RANAP_DataVolumeReference_decode_aper;
+per_type_encoder_f RANAP_DataVolumeReference_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeReference_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeReport.h b/include/osmocom/ranap/RANAP_DataVolumeReport.h
new file mode 100644
index 0000000..1018cd7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeReport.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DataVolumeReport_H_
+#define _RANAP_DataVolumeReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DataVolumeReport */
+typedef struct RANAP_DataVolumeReport {
+ struct dataVolumeReport_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } dataVolumeReport_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DataVolumeReport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReport;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeReport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeReportList.h b/include/osmocom/ranap/RANAP_DataVolumeReportList.h
new file mode 100644
index 0000000..9a26ba7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeReportList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DataVolumeReportList_H_
+#define _RANAP_DataVolumeReportList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DataVolumeReportList */
+typedef struct RANAP_DataVolumeReportList {
+ struct dataVolumeReportListe_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } dataVolumeReportListe_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DataVolumeReportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeReportList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeReportRequest.h b/include/osmocom/ranap/RANAP_DataVolumeReportRequest.h
new file mode 100644
index 0000000..cf76036
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeReportRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DataVolumeReportRequest_H_
+#define _RANAP_DataVolumeReportRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DataVolumeReportRequest */
+typedef struct RANAP_DataVolumeReportRequest {
+ struct dataVolumeReportRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } dataVolumeReportRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DataVolumeReportRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeReportRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DataVolumeReportingIndication.h b/include/osmocom/ranap/RANAP_DataVolumeReportingIndication.h
new file mode 100644
index 0000000..feaa072
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DataVolumeReportingIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DataVolumeReportingIndication_H_
+#define _RANAP_DataVolumeReportingIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_DataVolumeReportingIndication {
+ RANAP_DataVolumeReportingIndication_do_report = 0,
+ RANAP_DataVolumeReportingIndication_do_not_report = 1
+} e_RANAP_DataVolumeReportingIndication;
+
+/* RANAP_DataVolumeReportingIndication */
+typedef long RANAP_DataVolumeReportingIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportingIndication;
+asn_struct_free_f RANAP_DataVolumeReportingIndication_free;
+asn_struct_print_f RANAP_DataVolumeReportingIndication_print;
+asn_constr_check_f RANAP_DataVolumeReportingIndication_constraint;
+ber_type_decoder_f RANAP_DataVolumeReportingIndication_decode_ber;
+der_type_encoder_f RANAP_DataVolumeReportingIndication_encode_der;
+xer_type_decoder_f RANAP_DataVolumeReportingIndication_decode_xer;
+xer_type_encoder_f RANAP_DataVolumeReportingIndication_encode_xer;
+per_type_decoder_f RANAP_DataVolumeReportingIndication_decode_uper;
+per_type_encoder_f RANAP_DataVolumeReportingIndication_encode_uper;
+per_type_decoder_f RANAP_DataVolumeReportingIndication_decode_aper;
+per_type_encoder_f RANAP_DataVolumeReportingIndication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DataVolumeReportingIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h b/include/osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h
new file mode 100644
index 0000000..6e95465
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DeliveryOfErroneousSDU_H_
+#define _RANAP_DeliveryOfErroneousSDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_DeliveryOfErroneousSDU {
+ RANAP_DeliveryOfErroneousSDU_yes = 0,
+ RANAP_DeliveryOfErroneousSDU_no = 1,
+ RANAP_DeliveryOfErroneousSDU_no_error_detection_consideration = 2
+} e_RANAP_DeliveryOfErroneousSDU;
+
+/* RANAP_DeliveryOfErroneousSDU */
+typedef long RANAP_DeliveryOfErroneousSDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DeliveryOfErroneousSDU;
+asn_struct_free_f RANAP_DeliveryOfErroneousSDU_free;
+asn_struct_print_f RANAP_DeliveryOfErroneousSDU_print;
+asn_constr_check_f RANAP_DeliveryOfErroneousSDU_constraint;
+ber_type_decoder_f RANAP_DeliveryOfErroneousSDU_decode_ber;
+der_type_encoder_f RANAP_DeliveryOfErroneousSDU_encode_der;
+xer_type_decoder_f RANAP_DeliveryOfErroneousSDU_decode_xer;
+xer_type_encoder_f RANAP_DeliveryOfErroneousSDU_encode_xer;
+per_type_decoder_f RANAP_DeliveryOfErroneousSDU_decode_uper;
+per_type_encoder_f RANAP_DeliveryOfErroneousSDU_encode_uper;
+per_type_decoder_f RANAP_DeliveryOfErroneousSDU_decode_aper;
+per_type_encoder_f RANAP_DeliveryOfErroneousSDU_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DeliveryOfErroneousSDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DeliveryOrder.h b/include/osmocom/ranap/RANAP_DeliveryOrder.h
new file mode 100644
index 0000000..8968908
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DeliveryOrder.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DeliveryOrder_H_
+#define _RANAP_DeliveryOrder_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_DeliveryOrder {
+ RANAP_DeliveryOrder_delivery_order_requested = 0,
+ RANAP_DeliveryOrder_delivery_order_not_requested = 1
+} e_RANAP_DeliveryOrder;
+
+/* RANAP_DeliveryOrder */
+typedef long RANAP_DeliveryOrder_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DeliveryOrder;
+asn_struct_free_f RANAP_DeliveryOrder_free;
+asn_struct_print_f RANAP_DeliveryOrder_print;
+asn_constr_check_f RANAP_DeliveryOrder_constraint;
+ber_type_decoder_f RANAP_DeliveryOrder_decode_ber;
+der_type_encoder_f RANAP_DeliveryOrder_encode_der;
+xer_type_decoder_f RANAP_DeliveryOrder_decode_xer;
+xer_type_encoder_f RANAP_DeliveryOrder_encode_xer;
+per_type_decoder_f RANAP_DeliveryOrder_decode_uper;
+per_type_encoder_f RANAP_DeliveryOrder_encode_uper;
+per_type_decoder_f RANAP_DeliveryOrder_decode_aper;
+per_type_encoder_f RANAP_DeliveryOrder_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DeliveryOrder_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h b/include/osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h
new file mode 100644
index 0000000..209e61c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DeltaRAListofIdleModeUEs_H_
+#define _RANAP_DeltaRAListofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DeltaRAListofIdleModeUEs */
+typedef struct RANAP_DeltaRAListofIdleModeUEs {
+ RANAP_NewRAListofIdleModeUEs_t *newRAListofIdleModeUEs /* OPTIONAL */;
+ RANAP_RAListwithNoIdleModeUEsAnyMore_t *rAListwithNoIdleModeUEsAnyMore /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DeltaRAListofIdleModeUEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DeltaRAListofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DeltaRAListofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DirectInformationTransfer.h b/include/osmocom/ranap/RANAP_DirectInformationTransfer.h
new file mode 100644
index 0000000..08478d5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DirectInformationTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DirectInformationTransfer_H_
+#define _RANAP_DirectInformationTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DirectInformationTransfer */
+typedef struct RANAP_DirectInformationTransfer {
+ struct directInformationTransfer_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } directInformationTransfer_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DirectInformationTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DirectInformationTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DirectInformationTransfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DirectReportingIndicator.h b/include/osmocom/ranap/RANAP_DirectReportingIndicator.h
new file mode 100644
index 0000000..8636557
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DirectReportingIndicator.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_DirectReportingIndicator_H_
+#define _RANAP_DirectReportingIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_DirectReportingIndicator {
+ RANAP_DirectReportingIndicator_directSAI = 0,
+ RANAP_DirectReportingIndicator_directGeo = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_DirectReportingIndicator;
+
+/* RANAP_DirectReportingIndicator */
+typedef long RANAP_DirectReportingIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DirectReportingIndicator;
+asn_struct_free_f RANAP_DirectReportingIndicator_free;
+asn_struct_print_f RANAP_DirectReportingIndicator_print;
+asn_constr_check_f RANAP_DirectReportingIndicator_constraint;
+ber_type_decoder_f RANAP_DirectReportingIndicator_decode_ber;
+der_type_encoder_f RANAP_DirectReportingIndicator_encode_der;
+xer_type_decoder_f RANAP_DirectReportingIndicator_decode_xer;
+xer_type_encoder_f RANAP_DirectReportingIndicator_encode_xer;
+per_type_decoder_f RANAP_DirectReportingIndicator_decode_uper;
+per_type_encoder_f RANAP_DirectReportingIndicator_encode_uper;
+per_type_decoder_f RANAP_DirectReportingIndicator_decode_aper;
+per_type_encoder_f RANAP_DirectReportingIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DirectReportingIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h b/include/osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h
new file mode 100644
index 0000000..cc7d096
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DirectTransfer_IE_ContainerList_H_
+#define _RANAP_DirectTransfer_IE_ContainerList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DirectTransfer-IE-ContainerList */
+typedef struct RANAP_DirectTransfer_IE_ContainerList {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_Container_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DirectTransfer_IE_ContainerList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransfer_IE_ContainerList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DirectTransfer_IE_ContainerList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DirectTransfer.h b/include/osmocom/ranap/RANAP_DirectTransfer.h
new file mode 100644
index 0000000..2a8a1ff
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DirectTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DirectTransfer_H_
+#define _RANAP_DirectTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DirectTransfer */
+typedef struct RANAP_DirectTransfer {
+ struct directTransfer_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } directTransfer_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DirectTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DirectTransfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h b/include/osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h
new file mode 100644
index 0000000..59dd639
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_DirectTransferInformationItem_RANAP_RelocInf_H_
+#define _RANAP_DirectTransferInformationItem_RANAP_RelocInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_NAS-PDU.h>
+#include <osmocom/ranap/RANAP_SAPI.h>
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_DirectTransferInformationItem-RANAP-RelocInf */
+typedef struct RANAP_DirectTransferInformationItem_RANAP_RelocInf {
+ RANAP_NAS_PDU_t nAS_PDU;
+ RANAP_SAPI_t sAPI;
+ RANAP_CN_DomainIndicator_t cN_DomainIndicator;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_DirectTransferInformationItem_RANAP_RelocInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_DirectTransferInformationItem_RANAP_RelocInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h b/include/osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h
new file mode 100644
index 0000000..6fc0fda
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_E_DCH_MAC_d_Flow_ID_H_
+#define _RANAP_E_DCH_MAC_d_Flow_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_E-DCH-MAC-d-Flow-ID */
+typedef long RANAP_E_DCH_MAC_d_Flow_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID;
+asn_struct_free_f RANAP_E_DCH_MAC_d_Flow_ID_free;
+asn_struct_print_f RANAP_E_DCH_MAC_d_Flow_ID_print;
+asn_constr_check_f RANAP_E_DCH_MAC_d_Flow_ID_constraint;
+ber_type_decoder_f RANAP_E_DCH_MAC_d_Flow_ID_decode_ber;
+der_type_encoder_f RANAP_E_DCH_MAC_d_Flow_ID_encode_der;
+xer_type_decoder_f RANAP_E_DCH_MAC_d_Flow_ID_decode_xer;
+xer_type_encoder_f RANAP_E_DCH_MAC_d_Flow_ID_encode_xer;
+per_type_decoder_f RANAP_E_DCH_MAC_d_Flow_ID_decode_uper;
+per_type_encoder_f RANAP_E_DCH_MAC_d_Flow_ID_encode_uper;
+per_type_decoder_f RANAP_E_DCH_MAC_d_Flow_ID_decode_aper;
+per_type_encoder_f RANAP_E_DCH_MAC_d_Flow_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_E_DCH_MAC_d_Flow_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h b/include/osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h
new file mode 100644
index 0000000..689c743
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_E_UTRAN_Service_Handover_H_
+#define _RANAP_E_UTRAN_Service_Handover_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_E_UTRAN_Service_Handover {
+ RANAP_E_UTRAN_Service_Handover_handover_to_E_UTRAN_shall_not_be_performed = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_E_UTRAN_Service_Handover;
+
+/* RANAP_E-UTRAN-Service-Handover */
+typedef long RANAP_E_UTRAN_Service_Handover_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_E_UTRAN_Service_Handover;
+asn_struct_free_f RANAP_E_UTRAN_Service_Handover_free;
+asn_struct_print_f RANAP_E_UTRAN_Service_Handover_print;
+asn_constr_check_f RANAP_E_UTRAN_Service_Handover_constraint;
+ber_type_decoder_f RANAP_E_UTRAN_Service_Handover_decode_ber;
+der_type_encoder_f RANAP_E_UTRAN_Service_Handover_encode_der;
+xer_type_decoder_f RANAP_E_UTRAN_Service_Handover_decode_xer;
+xer_type_encoder_f RANAP_E_UTRAN_Service_Handover_encode_xer;
+per_type_decoder_f RANAP_E_UTRAN_Service_Handover_decode_uper;
+per_type_encoder_f RANAP_E_UTRAN_Service_Handover_encode_uper;
+per_type_decoder_f RANAP_E_UTRAN_Service_Handover_decode_aper;
+per_type_encoder_f RANAP_E_UTRAN_Service_Handover_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_E_UTRAN_Service_Handover_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EARFCN-Extended.h b/include/osmocom/ranap/RANAP_EARFCN-Extended.h
new file mode 100644
index 0000000..9b84df4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EARFCN-Extended.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EARFCN_Extended_H_
+#define _RANAP_EARFCN_Extended_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EARFCN-Extended */
+typedef long RANAP_EARFCN_Extended_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EARFCN_Extended;
+asn_struct_free_f RANAP_EARFCN_Extended_free;
+asn_struct_print_f RANAP_EARFCN_Extended_print;
+asn_constr_check_f RANAP_EARFCN_Extended_constraint;
+ber_type_decoder_f RANAP_EARFCN_Extended_decode_ber;
+der_type_encoder_f RANAP_EARFCN_Extended_encode_der;
+xer_type_decoder_f RANAP_EARFCN_Extended_decode_xer;
+xer_type_encoder_f RANAP_EARFCN_Extended_encode_xer;
+per_type_decoder_f RANAP_EARFCN_Extended_decode_uper;
+per_type_encoder_f RANAP_EARFCN_Extended_encode_uper;
+per_type_decoder_f RANAP_EARFCN_Extended_decode_aper;
+per_type_encoder_f RANAP_EARFCN_Extended_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EARFCN_Extended_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ENB-ID.h b/include/osmocom/ranap/RANAP_ENB-ID.h
new file mode 100644
index 0000000..4a0a3c6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ENB-ID.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ENB_ID_H_
+#define _RANAP_ENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ENB_ID_PR {
+ RANAP_ENB_ID_PR_NOTHING, /* No components present */
+ RANAP_ENB_ID_PR_macroENB_ID,
+ RANAP_ENB_ID_PR_homeENB_ID,
+ /* Extensions may appear below */
+
+} RANAP_ENB_ID_PR;
+
+/* RANAP_ENB-ID */
+typedef struct RANAP_ENB_ID {
+ RANAP_ENB_ID_PR present;
+ union RANAP_ENB_ID_u {
+ BIT_STRING_t macroENB_ID;
+ BIT_STRING_t homeENB_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ENB_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EUTRANFrequencies.h b/include/osmocom/ranap/RANAP_EUTRANFrequencies.h
new file mode 100644
index 0000000..f6c653c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EUTRANFrequencies.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EUTRANFrequencies_H_
+#define _RANAP_EUTRANFrequencies_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_MeasBand.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EUTRANFrequencies */
+typedef struct RANAP_EUTRANFrequencies {
+ A_SEQUENCE_OF(struct MemberJ {
+ long earfcn;
+ RANAP_MeasBand_t *measBand /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EUTRANFrequencies_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EUTRANFrequencies;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EUTRANFrequencies_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EncryptionAlgorithm.h b/include/osmocom/ranap/RANAP_EncryptionAlgorithm.h
new file mode 100644
index 0000000..99f5b62
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EncryptionAlgorithm.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EncryptionAlgorithm_H_
+#define _RANAP_EncryptionAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_EncryptionAlgorithm {
+ RANAP_EncryptionAlgorithm_no_encryption = 0,
+ RANAP_EncryptionAlgorithm_standard_UMTS_encryption_algorith_UEA1 = 1,
+ RANAP_EncryptionAlgorithm_standard_UMTS_encryption_algorithm_UEA2 = 2
+} e_RANAP_EncryptionAlgorithm;
+
+/* RANAP_EncryptionAlgorithm */
+typedef long RANAP_EncryptionAlgorithm_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionAlgorithm;
+asn_struct_free_f RANAP_EncryptionAlgorithm_free;
+asn_struct_print_f RANAP_EncryptionAlgorithm_print;
+asn_constr_check_f RANAP_EncryptionAlgorithm_constraint;
+ber_type_decoder_f RANAP_EncryptionAlgorithm_decode_ber;
+der_type_encoder_f RANAP_EncryptionAlgorithm_encode_der;
+xer_type_decoder_f RANAP_EncryptionAlgorithm_decode_xer;
+xer_type_encoder_f RANAP_EncryptionAlgorithm_encode_xer;
+per_type_decoder_f RANAP_EncryptionAlgorithm_decode_uper;
+per_type_encoder_f RANAP_EncryptionAlgorithm_encode_uper;
+per_type_decoder_f RANAP_EncryptionAlgorithm_decode_aper;
+per_type_encoder_f RANAP_EncryptionAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EncryptionAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EncryptionInformation.h b/include/osmocom/ranap/RANAP_EncryptionInformation.h
new file mode 100644
index 0000000..6f3c91e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EncryptionInformation.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EncryptionInformation_H_
+#define _RANAP_EncryptionInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h>
+#include <osmocom/ranap/RANAP_EncryptionKey.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EncryptionInformation */
+typedef struct RANAP_EncryptionInformation {
+ RANAP_PermittedEncryptionAlgorithms_t permittedAlgorithms;
+ RANAP_EncryptionKey_t key;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EncryptionInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EncryptionInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EncryptionKey.h b/include/osmocom/ranap/RANAP_EncryptionKey.h
new file mode 100644
index 0000000..7173803
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EncryptionKey.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EncryptionKey_H_
+#define _RANAP_EncryptionKey_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EncryptionKey */
+typedef BIT_STRING_t RANAP_EncryptionKey_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionKey;
+asn_struct_free_f RANAP_EncryptionKey_free;
+asn_struct_print_f RANAP_EncryptionKey_print;
+asn_constr_check_f RANAP_EncryptionKey_constraint;
+ber_type_decoder_f RANAP_EncryptionKey_decode_ber;
+der_type_encoder_f RANAP_EncryptionKey_encode_der;
+xer_type_decoder_f RANAP_EncryptionKey_decode_xer;
+xer_type_encoder_f RANAP_EncryptionKey_encode_xer;
+per_type_decoder_f RANAP_EncryptionKey_decode_uper;
+per_type_encoder_f RANAP_EncryptionKey_encode_uper;
+per_type_decoder_f RANAP_EncryptionKey_decode_aper;
+per_type_encoder_f RANAP_EncryptionKey_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EncryptionKey_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_End-Of-CSFB.h b/include/osmocom/ranap/RANAP_End-Of-CSFB.h
new file mode 100644
index 0000000..b992889
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_End-Of-CSFB.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_End_Of_CSFB_H_
+#define _RANAP_End_Of_CSFB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_End_Of_CSFB {
+ RANAP_End_Of_CSFB_end_of_CSFB = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_End_Of_CSFB;
+
+/* RANAP_End-Of-CSFB */
+typedef long RANAP_End_Of_CSFB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_End_Of_CSFB;
+asn_struct_free_f RANAP_End_Of_CSFB_free;
+asn_struct_print_f RANAP_End_Of_CSFB_print;
+asn_constr_check_f RANAP_End_Of_CSFB_constraint;
+ber_type_decoder_f RANAP_End_Of_CSFB_decode_ber;
+der_type_encoder_f RANAP_End_Of_CSFB_encode_der;
+xer_type_decoder_f RANAP_End_Of_CSFB_decode_xer;
+xer_type_encoder_f RANAP_End_Of_CSFB_encode_xer;
+per_type_decoder_f RANAP_End_Of_CSFB_decode_uper;
+per_type_encoder_f RANAP_End_Of_CSFB_encode_uper;
+per_type_decoder_f RANAP_End_Of_CSFB_decode_aper;
+per_type_encoder_f RANAP_End_Of_CSFB_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_End_Of_CSFB_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h
new file mode 100644
index 0000000..fa5b0f5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_EnhancedRelocationCompleteConfirm_H_
+#define _RANAP_EnhancedRelocationCompleteConfirm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EnhancedRelocationCompleteConfirm */
+typedef struct RANAP_EnhancedRelocationCompleteConfirm {
+ struct enhancedRelocationCompleteConfirm_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } enhancedRelocationCompleteConfirm_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EnhancedRelocationCompleteConfirm_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteConfirm;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EnhancedRelocationCompleteConfirm_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h
new file mode 100644
index 0000000..2e0b586
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_EnhancedRelocationCompleteFailure_H_
+#define _RANAP_EnhancedRelocationCompleteFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EnhancedRelocationCompleteFailure */
+typedef struct RANAP_EnhancedRelocationCompleteFailure {
+ struct enhancedRelocationCompleteFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } enhancedRelocationCompleteFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EnhancedRelocationCompleteFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EnhancedRelocationCompleteFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h
new file mode 100644
index 0000000..91a6ac3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_EnhancedRelocationCompleteRequest_H_
+#define _RANAP_EnhancedRelocationCompleteRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EnhancedRelocationCompleteRequest */
+typedef struct RANAP_EnhancedRelocationCompleteRequest {
+ struct enhancedRelocationCompleteRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } enhancedRelocationCompleteRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EnhancedRelocationCompleteRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EnhancedRelocationCompleteRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h
new file mode 100644
index 0000000..26126c2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_EnhancedRelocationCompleteResponse_H_
+#define _RANAP_EnhancedRelocationCompleteResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_EnhancedRelocationCompleteResponse */
+typedef struct RANAP_EnhancedRelocationCompleteResponse {
+ struct enhancedRelocationCompleteResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } enhancedRelocationCompleteResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EnhancedRelocationCompleteResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EnhancedRelocationCompleteResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_EquipmentsToBeTraced.h b/include/osmocom/ranap/RANAP_EquipmentsToBeTraced.h
new file mode 100644
index 0000000..e9084ec
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_EquipmentsToBeTraced.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_EquipmentsToBeTraced_H_
+#define _RANAP_EquipmentsToBeTraced_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMEIList.h>
+#include <osmocom/ranap/RANAP_IMEISVList.h>
+#include <osmocom/ranap/RANAP_IMEIGroup.h>
+#include <osmocom/ranap/RANAP_IMEISVGroup.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_EquipmentsToBeTraced_PR {
+ RANAP_EquipmentsToBeTraced_PR_NOTHING, /* No components present */
+ RANAP_EquipmentsToBeTraced_PR_iMEIlist,
+ RANAP_EquipmentsToBeTraced_PR_iMEISVlist,
+ RANAP_EquipmentsToBeTraced_PR_iMEIgroup,
+ RANAP_EquipmentsToBeTraced_PR_iMEISVgroup,
+ /* Extensions may appear below */
+
+} RANAP_EquipmentsToBeTraced_PR;
+
+/* RANAP_EquipmentsToBeTraced */
+typedef struct RANAP_EquipmentsToBeTraced {
+ RANAP_EquipmentsToBeTraced_PR present;
+ union RANAP_EquipmentsToBeTraced_u {
+ RANAP_IMEIList_t iMEIlist;
+ RANAP_IMEISVList_t iMEISVlist;
+ RANAP_IMEIGroup_t iMEIgroup;
+ RANAP_IMEISVGroup_t iMEISVgroup;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_EquipmentsToBeTraced_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_EquipmentsToBeTraced;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_EquipmentsToBeTraced_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ErrorIndication.h b/include/osmocom/ranap/RANAP_ErrorIndication.h
new file mode 100644
index 0000000..5bad287
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ErrorIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ErrorIndication_H_
+#define _RANAP_ErrorIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ErrorIndication */
+typedef struct RANAP_ErrorIndication {
+ struct errorIndication_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } errorIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ErrorIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ErrorIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ErrorIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Event.h b/include/osmocom/ranap/RANAP_Event.h
new file mode 100644
index 0000000..a3a0e67
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Event.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Event_H_
+#define _RANAP_Event_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Event {
+ RANAP_Event_stop_change_of_service_area = 0,
+ RANAP_Event_direct = 1,
+ RANAP_Event_change_of_servicearea = 2,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_Event_stop_direct = 3,
+ RANAP_Event_periodic = 4,
+ RANAP_Event_stop_periodic = 5
+} e_RANAP_Event;
+
+/* RANAP_Event */
+typedef long RANAP_Event_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Event;
+asn_struct_free_f RANAP_Event_free;
+asn_struct_print_f RANAP_Event_print;
+asn_constr_check_f RANAP_Event_constraint;
+ber_type_decoder_f RANAP_Event_decode_ber;
+der_type_encoder_f RANAP_Event_encode_der;
+xer_type_decoder_f RANAP_Event_decode_xer;
+xer_type_encoder_f RANAP_Event_encode_xer;
+per_type_decoder_f RANAP_Event_decode_uper;
+per_type_encoder_f RANAP_Event_encode_uper;
+per_type_decoder_f RANAP_Event_decode_aper;
+per_type_encoder_f RANAP_Event_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Event_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Event1F-Parameters.h b/include/osmocom/ranap/RANAP_Event1F-Parameters.h
new file mode 100644
index 0000000..96fd004
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Event1F-Parameters.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Event1F_Parameters_H_
+#define _RANAP_Event1F_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MeasurementQuantity.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Event1F-Parameters */
+typedef struct RANAP_Event1F_Parameters {
+ RANAP_MeasurementQuantity_t measurementQuantity;
+ long threshold;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Event1F_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Event1F_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Event1F_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Event1I-Parameters.h b/include/osmocom/ranap/RANAP_Event1I-Parameters.h
new file mode 100644
index 0000000..ded464f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Event1I-Parameters.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Event1I_Parameters_H_
+#define _RANAP_Event1I_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Event1I-Parameters */
+typedef struct RANAP_Event1I_Parameters {
+ long threshold;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Event1I_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Event1I_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Event1I_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h b/include/osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h
new file mode 100644
index 0000000..404cecb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ExtendedGuaranteedBitrate_H_
+#define _RANAP_ExtendedGuaranteedBitrate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ExtendedGuaranteedBitrate */
+typedef long RANAP_ExtendedGuaranteedBitrate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedGuaranteedBitrate;
+asn_struct_free_f RANAP_ExtendedGuaranteedBitrate_free;
+asn_struct_print_f RANAP_ExtendedGuaranteedBitrate_print;
+asn_constr_check_f RANAP_ExtendedGuaranteedBitrate_constraint;
+ber_type_decoder_f RANAP_ExtendedGuaranteedBitrate_decode_ber;
+der_type_encoder_f RANAP_ExtendedGuaranteedBitrate_encode_der;
+xer_type_decoder_f RANAP_ExtendedGuaranteedBitrate_decode_xer;
+xer_type_encoder_f RANAP_ExtendedGuaranteedBitrate_encode_xer;
+per_type_decoder_f RANAP_ExtendedGuaranteedBitrate_decode_uper;
+per_type_encoder_f RANAP_ExtendedGuaranteedBitrate_encode_uper;
+per_type_decoder_f RANAP_ExtendedGuaranteedBitrate_decode_aper;
+per_type_encoder_f RANAP_ExtendedGuaranteedBitrate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ExtendedGuaranteedBitrate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ExtendedMaxBitrate.h b/include/osmocom/ranap/RANAP_ExtendedMaxBitrate.h
new file mode 100644
index 0000000..07af50d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ExtendedMaxBitrate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ExtendedMaxBitrate_H_
+#define _RANAP_ExtendedMaxBitrate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ExtendedMaxBitrate */
+typedef long RANAP_ExtendedMaxBitrate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedMaxBitrate;
+asn_struct_free_f RANAP_ExtendedMaxBitrate_free;
+asn_struct_print_f RANAP_ExtendedMaxBitrate_print;
+asn_constr_check_f RANAP_ExtendedMaxBitrate_constraint;
+ber_type_decoder_f RANAP_ExtendedMaxBitrate_decode_ber;
+der_type_encoder_f RANAP_ExtendedMaxBitrate_encode_der;
+xer_type_decoder_f RANAP_ExtendedMaxBitrate_decode_xer;
+xer_type_encoder_f RANAP_ExtendedMaxBitrate_encode_xer;
+per_type_decoder_f RANAP_ExtendedMaxBitrate_decode_uper;
+per_type_encoder_f RANAP_ExtendedMaxBitrate_encode_uper;
+per_type_decoder_f RANAP_ExtendedMaxBitrate_decode_aper;
+per_type_encoder_f RANAP_ExtendedMaxBitrate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ExtendedMaxBitrate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ExtendedRNC-ID.h b/include/osmocom/ranap/RANAP_ExtendedRNC-ID.h
new file mode 100644
index 0000000..c76a124
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ExtendedRNC-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ExtendedRNC_ID_H_
+#define _RANAP_ExtendedRNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ExtendedRNC-ID */
+typedef long RANAP_ExtendedRNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedRNC_ID;
+asn_struct_free_f RANAP_ExtendedRNC_ID_free;
+asn_struct_print_f RANAP_ExtendedRNC_ID_print;
+asn_constr_check_f RANAP_ExtendedRNC_ID_constraint;
+ber_type_decoder_f RANAP_ExtendedRNC_ID_decode_ber;
+der_type_encoder_f RANAP_ExtendedRNC_ID_encode_der;
+xer_type_decoder_f RANAP_ExtendedRNC_ID_decode_xer;
+xer_type_encoder_f RANAP_ExtendedRNC_ID_encode_xer;
+per_type_decoder_f RANAP_ExtendedRNC_ID_decode_uper;
+per_type_encoder_f RANAP_ExtendedRNC_ID_encode_uper;
+per_type_decoder_f RANAP_ExtendedRNC_ID_decode_aper;
+per_type_encoder_f RANAP_ExtendedRNC_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ExtendedRNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ForwardSRNS-Context.h b/include/osmocom/ranap/RANAP_ForwardSRNS-Context.h
new file mode 100644
index 0000000..da74458
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ForwardSRNS-Context.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ForwardSRNS_Context_H_
+#define _RANAP_ForwardSRNS_Context_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ForwardSRNS-Context */
+typedef struct RANAP_ForwardSRNS_Context {
+ struct forwardSRNS_Context_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } forwardSRNS_Context_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ForwardSRNS_Context_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ForwardSRNS_Context;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ForwardSRNS_Context_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ForwardingIndication.h b/include/osmocom/ranap/RANAP_ForwardingIndication.h
new file mode 100644
index 0000000..ee4481c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ForwardingIndication.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ForwardingIndication_H_
+#define _RANAP_ForwardingIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ForwardingIndication {
+ RANAP_ForwardingIndication_forwarding_admitted = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ForwardingIndication;
+
+/* RANAP_ForwardingIndication */
+typedef long RANAP_ForwardingIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ForwardingIndication;
+asn_struct_free_f RANAP_ForwardingIndication_free;
+asn_struct_print_f RANAP_ForwardingIndication_print;
+asn_constr_check_f RANAP_ForwardingIndication_constraint;
+ber_type_decoder_f RANAP_ForwardingIndication_decode_ber;
+der_type_encoder_f RANAP_ForwardingIndication_encode_der;
+xer_type_decoder_f RANAP_ForwardingIndication_decode_xer;
+xer_type_encoder_f RANAP_ForwardingIndication_encode_xer;
+per_type_decoder_f RANAP_ForwardingIndication_decode_uper;
+per_type_encoder_f RANAP_ForwardingIndication_encode_uper;
+per_type_decoder_f RANAP_ForwardingIndication_decode_aper;
+per_type_encoder_f RANAP_ForwardingIndication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ForwardingIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_FrameSequenceNumber.h b/include/osmocom/ranap/RANAP_FrameSequenceNumber.h
new file mode 100644
index 0000000..0c2d9e2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_FrameSequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_FrameSequenceNumber_H_
+#define _RANAP_FrameSequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_FrameSequenceNumber */
+typedef long RANAP_FrameSequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_FrameSequenceNumber;
+asn_struct_free_f RANAP_FrameSequenceNumber_free;
+asn_struct_print_f RANAP_FrameSequenceNumber_print;
+asn_constr_check_f RANAP_FrameSequenceNumber_constraint;
+ber_type_decoder_f RANAP_FrameSequenceNumber_decode_ber;
+der_type_encoder_f RANAP_FrameSequenceNumber_encode_der;
+xer_type_decoder_f RANAP_FrameSequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_FrameSequenceNumber_encode_xer;
+per_type_decoder_f RANAP_FrameSequenceNumber_decode_uper;
+per_type_encoder_f RANAP_FrameSequenceNumber_encode_uper;
+per_type_decoder_f RANAP_FrameSequenceNumber_decode_aper;
+per_type_encoder_f RANAP_FrameSequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_FrameSequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h b/include/osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h
new file mode 100644
index 0000000..df2eaf5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_FrequenceLayerConvergenceFlag_H_
+#define _RANAP_FrequenceLayerConvergenceFlag_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_FrequenceLayerConvergenceFlag {
+ RANAP_FrequenceLayerConvergenceFlag_no_FLC_flag = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_FrequenceLayerConvergenceFlag;
+
+/* RANAP_FrequenceLayerConvergenceFlag */
+typedef long RANAP_FrequenceLayerConvergenceFlag_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_FrequenceLayerConvergenceFlag;
+asn_struct_free_f RANAP_FrequenceLayerConvergenceFlag_free;
+asn_struct_print_f RANAP_FrequenceLayerConvergenceFlag_print;
+asn_constr_check_f RANAP_FrequenceLayerConvergenceFlag_constraint;
+ber_type_decoder_f RANAP_FrequenceLayerConvergenceFlag_decode_ber;
+der_type_encoder_f RANAP_FrequenceLayerConvergenceFlag_encode_der;
+xer_type_decoder_f RANAP_FrequenceLayerConvergenceFlag_decode_xer;
+xer_type_encoder_f RANAP_FrequenceLayerConvergenceFlag_encode_xer;
+per_type_decoder_f RANAP_FrequenceLayerConvergenceFlag_decode_uper;
+per_type_encoder_f RANAP_FrequenceLayerConvergenceFlag_encode_uper;
+per_type_decoder_f RANAP_FrequenceLayerConvergenceFlag_decode_aper;
+per_type_encoder_f RANAP_FrequenceLayerConvergenceFlag_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_FrequenceLayerConvergenceFlag_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-AltitudeAndDirection.h b/include/osmocom/ranap/RANAP_GA-AltitudeAndDirection.h
new file mode 100644
index 0000000..e270a75
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-AltitudeAndDirection.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_AltitudeAndDirection_H_
+#define _RANAP_GA_AltitudeAndDirection_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum directionOfAltitude {
+ directionOfAltitude_height = 0,
+ directionOfAltitude_depth = 1
+} e_directionOfAltitude;
+
+/* RANAP_GA-AltitudeAndDirection */
+typedef struct RANAP_GA_AltitudeAndDirection {
+ long directionOfAltitude;
+ long altitude;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_AltitudeAndDirection_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_AltitudeAndDirection;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_AltitudeAndDirection_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-EllipsoidArc.h b/include/osmocom/ranap/RANAP_GA-EllipsoidArc.h
new file mode 100644
index 0000000..5f2442b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-EllipsoidArc.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_EllipsoidArc_H_
+#define _RANAP_GA_EllipsoidArc_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-EllipsoidArc */
+typedef struct RANAP_GA_EllipsoidArc {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ long innerRadius;
+ long uncertaintyRadius;
+ long offsetAngle;
+ long includedAngle;
+ long confidence;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_EllipsoidArc_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_EllipsoidArc;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_EllipsoidArc_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-Point.h b/include/osmocom/ranap/RANAP_GA-Point.h
new file mode 100644
index 0000000..5aebf02
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-Point.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_Point_H_
+#define _RANAP_GA_Point_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-Point */
+typedef struct RANAP_GA_Point {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_Point_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_Point;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_Point_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-PointWithAltitude.h b/include/osmocom/ranap/RANAP_GA-PointWithAltitude.h
new file mode 100644
index 0000000..a709c8d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-PointWithAltitude.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_PointWithAltitude_H_
+#define _RANAP_GA_PointWithAltitude_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_GA-AltitudeAndDirection.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-PointWithAltitude */
+typedef struct RANAP_GA_PointWithAltitude {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_GA_AltitudeAndDirection_t altitudeAndDirection;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_PointWithAltitude_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithAltitude;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_PointWithAltitude_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h b/include/osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h
new file mode 100644
index 0000000..76663f5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_H_
+#define _RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_GA-AltitudeAndDirection.h>
+#include <osmocom/ranap/RANAP_GA-UncertaintyEllipse.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid */
+typedef struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_GA_AltitudeAndDirection_t altitudeAndDirection;
+ RANAP_GA_UncertaintyEllipse_t uncertaintyEllipse;
+ long uncertaintyAltitude;
+ long confidence;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-PointWithUnCertainty.h b/include/osmocom/ranap/RANAP_GA-PointWithUnCertainty.h
new file mode 100644
index 0000000..a498393
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-PointWithUnCertainty.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_PointWithUnCertainty_H_
+#define _RANAP_GA_PointWithUnCertainty_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-PointWithUnCertainty */
+typedef struct RANAP_GA_PointWithUnCertainty {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ long uncertaintyCode;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_PointWithUnCertainty_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithUnCertainty;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_PointWithUnCertainty_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h b/include/osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h
new file mode 100644
index 0000000..0ed80e7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_PointWithUnCertaintyEllipse_H_
+#define _RANAP_GA_PointWithUnCertaintyEllipse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_GA-UncertaintyEllipse.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-PointWithUnCertaintyEllipse */
+typedef struct RANAP_GA_PointWithUnCertaintyEllipse {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_GA_UncertaintyEllipse_t uncertaintyEllipse;
+ long confidence;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_PointWithUnCertaintyEllipse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_PointWithUnCertaintyEllipse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-Polygon.h b/include/osmocom/ranap/RANAP_GA-Polygon.h
new file mode 100644
index 0000000..200d0a4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-Polygon.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_Polygon_H_
+#define _RANAP_GA_Polygon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-Polygon */
+typedef struct RANAP_GA_Polygon {
+ A_SEQUENCE_OF(struct Member {
+ RANAP_GeographicalCoordinates_t geographicalCoordinates;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_Polygon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_Polygon;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_Polygon_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GA-UncertaintyEllipse.h b/include/osmocom/ranap/RANAP_GA-UncertaintyEllipse.h
new file mode 100644
index 0000000..0524a29
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GA-UncertaintyEllipse.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GA_UncertaintyEllipse_H_
+#define _RANAP_GA_UncertaintyEllipse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GA-UncertaintyEllipse */
+typedef struct RANAP_GA_UncertaintyEllipse {
+ long uncertaintySemi_major;
+ long uncertaintySemi_minor;
+ long orientationOfMajorAxis;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GA_UncertaintyEllipse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GA_UncertaintyEllipse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GA_UncertaintyEllipse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GANSS-PositioningDataSet.h b/include/osmocom/ranap/RANAP_GANSS-PositioningDataSet.h
new file mode 100644
index 0000000..5f1784f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GANSS-PositioningDataSet.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GANSS_PositioningDataSet_H_
+#define _RANAP_GANSS_PositioningDataSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GANSS-PositioningDataSet */
+typedef struct RANAP_GANSS_PositioningDataSet {
+ A_SEQUENCE_OF(RANAP_GANSS_PositioningMethodAndUsage_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GANSS_PositioningDataSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GANSS_PositioningDataSet;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GANSS_PositioningDataSet_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h b/include/osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h
new file mode 100644
index 0000000..793ca23
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GANSS_PositioningMethodAndUsage_H_
+#define _RANAP_GANSS_PositioningMethodAndUsage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GANSS-PositioningMethodAndUsage */
+typedef OCTET_STRING_t RANAP_GANSS_PositioningMethodAndUsage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GANSS_PositioningMethodAndUsage;
+asn_struct_free_f RANAP_GANSS_PositioningMethodAndUsage_free;
+asn_struct_print_f RANAP_GANSS_PositioningMethodAndUsage_print;
+asn_constr_check_f RANAP_GANSS_PositioningMethodAndUsage_constraint;
+ber_type_decoder_f RANAP_GANSS_PositioningMethodAndUsage_decode_ber;
+der_type_encoder_f RANAP_GANSS_PositioningMethodAndUsage_encode_der;
+xer_type_decoder_f RANAP_GANSS_PositioningMethodAndUsage_decode_xer;
+xer_type_encoder_f RANAP_GANSS_PositioningMethodAndUsage_encode_xer;
+per_type_decoder_f RANAP_GANSS_PositioningMethodAndUsage_decode_uper;
+per_type_encoder_f RANAP_GANSS_PositioningMethodAndUsage_encode_uper;
+per_type_decoder_f RANAP_GANSS_PositioningMethodAndUsage_decode_aper;
+per_type_encoder_f RANAP_GANSS_PositioningMethodAndUsage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GANSS_PositioningMethodAndUsage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GERAN-BSC-Container.h b/include/osmocom/ranap/RANAP_GERAN-BSC-Container.h
new file mode 100644
index 0000000..920b279
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GERAN-BSC-Container.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GERAN_BSC_Container_H_
+#define _RANAP_GERAN_BSC_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GERAN-BSC-Container */
+typedef OCTET_STRING_t RANAP_GERAN_BSC_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_BSC_Container;
+asn_struct_free_f RANAP_GERAN_BSC_Container_free;
+asn_struct_print_f RANAP_GERAN_BSC_Container_print;
+asn_constr_check_f RANAP_GERAN_BSC_Container_constraint;
+ber_type_decoder_f RANAP_GERAN_BSC_Container_decode_ber;
+der_type_encoder_f RANAP_GERAN_BSC_Container_encode_der;
+xer_type_decoder_f RANAP_GERAN_BSC_Container_decode_xer;
+xer_type_encoder_f RANAP_GERAN_BSC_Container_encode_xer;
+per_type_decoder_f RANAP_GERAN_BSC_Container_decode_uper;
+per_type_encoder_f RANAP_GERAN_BSC_Container_encode_uper;
+per_type_decoder_f RANAP_GERAN_BSC_Container_decode_aper;
+per_type_encoder_f RANAP_GERAN_BSC_Container_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GERAN_BSC_Container_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GERAN-Cell-ID.h b/include/osmocom/ranap/RANAP_GERAN-Cell-ID.h
new file mode 100644
index 0000000..c161a39
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GERAN-Cell-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GERAN_Cell_ID_H_
+#define _RANAP_GERAN_Cell_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <osmocom/ranap/RANAP_CI.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GERAN-Cell-ID */
+typedef struct RANAP_GERAN_Cell_ID {
+ RANAP_LAI_t lAI;
+ RANAP_RAC_t rAC;
+ RANAP_CI_t cI;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GERAN_Cell_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Cell_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GERAN_Cell_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GERAN-Classmark.h b/include/osmocom/ranap/RANAP_GERAN-Classmark.h
new file mode 100644
index 0000000..8de744b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GERAN-Classmark.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GERAN_Classmark_H_
+#define _RANAP_GERAN_Classmark_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GERAN-Classmark */
+typedef OCTET_STRING_t RANAP_GERAN_Classmark_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Classmark;
+asn_struct_free_f RANAP_GERAN_Classmark_free;
+asn_struct_print_f RANAP_GERAN_Classmark_print;
+asn_constr_check_f RANAP_GERAN_Classmark_constraint;
+ber_type_decoder_f RANAP_GERAN_Classmark_decode_ber;
+der_type_encoder_f RANAP_GERAN_Classmark_encode_der;
+xer_type_decoder_f RANAP_GERAN_Classmark_decode_xer;
+xer_type_encoder_f RANAP_GERAN_Classmark_encode_xer;
+per_type_decoder_f RANAP_GERAN_Classmark_decode_uper;
+per_type_encoder_f RANAP_GERAN_Classmark_encode_uper;
+per_type_decoder_f RANAP_GERAN_Classmark_decode_aper;
+per_type_encoder_f RANAP_GERAN_Classmark_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GERAN_Classmark_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h b/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h
new file mode 100644
index 0000000..7466bc5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_H_
+#define _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_GERAN-Classmark.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item */
+typedef struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_GERAN_Classmark_t *gERAN_Classmark /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h b/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h
new file mode 100644
index 0000000..1d8ea3b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_H_
+#define _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List */
+typedef struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List {
+ struct geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GTP-TEI.h b/include/osmocom/ranap/RANAP_GTP-TEI.h
new file mode 100644
index 0000000..01382e0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GTP-TEI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GTP_TEI_H_
+#define _RANAP_GTP_TEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GTP-TEI */
+typedef OCTET_STRING_t RANAP_GTP_TEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GTP_TEI;
+asn_struct_free_f RANAP_GTP_TEI_free;
+asn_struct_print_f RANAP_GTP_TEI_print;
+asn_constr_check_f RANAP_GTP_TEI_constraint;
+ber_type_decoder_f RANAP_GTP_TEI_decode_ber;
+der_type_encoder_f RANAP_GTP_TEI_encode_der;
+xer_type_decoder_f RANAP_GTP_TEI_decode_xer;
+xer_type_encoder_f RANAP_GTP_TEI_encode_xer;
+per_type_decoder_f RANAP_GTP_TEI_decode_uper;
+per_type_encoder_f RANAP_GTP_TEI_encode_uper;
+per_type_decoder_f RANAP_GTP_TEI_decode_aper;
+per_type_encoder_f RANAP_GTP_TEI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GTP_TEI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GeographicalArea.h b/include/osmocom/ranap/RANAP_GeographicalArea.h
new file mode 100644
index 0000000..66474d2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GeographicalArea.h
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GeographicalArea_H_
+#define _RANAP_GeographicalArea_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GA-Point.h>
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertainty.h>
+#include <osmocom/ranap/RANAP_GA-Polygon.h>
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h>
+#include <osmocom/ranap/RANAP_GA-PointWithAltitude.h>
+#include <osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h>
+#include <osmocom/ranap/RANAP_GA-EllipsoidArc.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_GeographicalArea_PR {
+ RANAP_GeographicalArea_PR_NOTHING, /* No components present */
+ RANAP_GeographicalArea_PR_point,
+ RANAP_GeographicalArea_PR_pointWithUnCertainty,
+ RANAP_GeographicalArea_PR_polygon,
+ /* Extensions may appear below */
+ RANAP_GeographicalArea_PR_pointWithUncertaintyEllipse,
+ RANAP_GeographicalArea_PR_pointWithAltitude,
+ RANAP_GeographicalArea_PR_pointWithAltitudeAndUncertaintyEllipsoid,
+ RANAP_GeographicalArea_PR_ellipsoidArc
+} RANAP_GeographicalArea_PR;
+
+/* RANAP_GeographicalArea */
+typedef struct RANAP_GeographicalArea {
+ RANAP_GeographicalArea_PR present;
+ union RANAP_GeographicalArea_u {
+ RANAP_GA_Point_t point;
+ RANAP_GA_PointWithUnCertainty_t pointWithUnCertainty;
+ RANAP_GA_Polygon_t polygon;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_GA_PointWithUnCertaintyEllipse_t pointWithUncertaintyEllipse;
+ RANAP_GA_PointWithAltitude_t pointWithAltitude;
+ RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_t pointWithAltitudeAndUncertaintyEllipsoid;
+ RANAP_GA_EllipsoidArc_t ellipsoidArc;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GeographicalArea_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GeographicalArea;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GeographicalArea_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GeographicalCoordinates.h b/include/osmocom/ranap/RANAP_GeographicalCoordinates.h
new file mode 100644
index 0000000..48a638e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GeographicalCoordinates.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GeographicalCoordinates_H_
+#define _RANAP_GeographicalCoordinates_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum latitudeSign {
+ latitudeSign_north = 0,
+ latitudeSign_south = 1
+} e_latitudeSign;
+
+/* RANAP_GeographicalCoordinates */
+typedef struct RANAP_GeographicalCoordinates {
+ long latitudeSign;
+ long latitude;
+ long longitude;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GeographicalCoordinates_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_latitudeSign_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GeographicalCoordinates;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GeographicalCoordinates_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GlobalCN-ID.h b/include/osmocom/ranap/RANAP_GlobalCN-ID.h
new file mode 100644
index 0000000..09b43e0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GlobalCN-ID.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GlobalCN_ID_H_
+#define _RANAP_GlobalCN_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_CN-ID.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GlobalCN-ID */
+typedef struct RANAP_GlobalCN_ID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_CN_ID_t cN_ID;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GlobalCN_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GlobalCN_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GlobalCN_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GlobalRNC-ID.h b/include/osmocom/ranap/RANAP_GlobalRNC-ID.h
new file mode 100644
index 0000000..90c1264
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GlobalRNC-ID.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GlobalRNC_ID_H_
+#define _RANAP_GlobalRNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_RNC-ID.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GlobalRNC-ID */
+typedef struct RANAP_GlobalRNC_ID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_RNC_ID_t rNC_ID;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_GlobalRNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GlobalRNC_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GlobalRNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_GuaranteedBitrate.h b/include/osmocom/ranap/RANAP_GuaranteedBitrate.h
new file mode 100644
index 0000000..bc3bf0a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_GuaranteedBitrate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_GuaranteedBitrate_H_
+#define _RANAP_GuaranteedBitrate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_GuaranteedBitrate */
+typedef long RANAP_GuaranteedBitrate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_GuaranteedBitrate;
+asn_struct_free_f RANAP_GuaranteedBitrate_free;
+asn_struct_print_f RANAP_GuaranteedBitrate_print;
+asn_constr_check_f RANAP_GuaranteedBitrate_constraint;
+ber_type_decoder_f RANAP_GuaranteedBitrate_decode_ber;
+der_type_encoder_f RANAP_GuaranteedBitrate_encode_der;
+xer_type_decoder_f RANAP_GuaranteedBitrate_decode_xer;
+xer_type_encoder_f RANAP_GuaranteedBitrate_encode_xer;
+per_type_decoder_f RANAP_GuaranteedBitrate_decode_uper;
+per_type_encoder_f RANAP_GuaranteedBitrate_encode_uper;
+per_type_decoder_f RANAP_GuaranteedBitrate_decode_aper;
+per_type_encoder_f RANAP_GuaranteedBitrate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_GuaranteedBitrate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h b/include/osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h
new file mode 100644
index 0000000..1364acd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HS_DSCH_MAC_d_Flow_ID_H_
+#define _RANAP_HS_DSCH_MAC_d_Flow_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HS-DSCH-MAC-d-Flow-ID */
+typedef long RANAP_HS_DSCH_MAC_d_Flow_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID;
+asn_struct_free_f RANAP_HS_DSCH_MAC_d_Flow_ID_free;
+asn_struct_print_f RANAP_HS_DSCH_MAC_d_Flow_ID_print;
+asn_constr_check_f RANAP_HS_DSCH_MAC_d_Flow_ID_constraint;
+ber_type_decoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_decode_ber;
+der_type_encoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_encode_der;
+xer_type_decoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_decode_xer;
+xer_type_encoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_encode_xer;
+per_type_decoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_decode_uper;
+per_type_encoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_encode_uper;
+per_type_decoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_decode_aper;
+per_type_encoder_f RANAP_HS_DSCH_MAC_d_Flow_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HS_DSCH_MAC_d_Flow_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h b/include/osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h
new file mode 100644
index 0000000..19dc7b4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HigherBitratesThan16MbpsFlag_H_
+#define _RANAP_HigherBitratesThan16MbpsFlag_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_HigherBitratesThan16MbpsFlag {
+ RANAP_HigherBitratesThan16MbpsFlag_allowed = 0,
+ RANAP_HigherBitratesThan16MbpsFlag_not_allowed = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_HigherBitratesThan16MbpsFlag;
+
+/* RANAP_HigherBitratesThan16MbpsFlag */
+typedef long RANAP_HigherBitratesThan16MbpsFlag_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HigherBitratesThan16MbpsFlag;
+asn_struct_free_f RANAP_HigherBitratesThan16MbpsFlag_free;
+asn_struct_print_f RANAP_HigherBitratesThan16MbpsFlag_print;
+asn_constr_check_f RANAP_HigherBitratesThan16MbpsFlag_constraint;
+ber_type_decoder_f RANAP_HigherBitratesThan16MbpsFlag_decode_ber;
+der_type_encoder_f RANAP_HigherBitratesThan16MbpsFlag_encode_der;
+xer_type_decoder_f RANAP_HigherBitratesThan16MbpsFlag_decode_xer;
+xer_type_encoder_f RANAP_HigherBitratesThan16MbpsFlag_encode_xer;
+per_type_decoder_f RANAP_HigherBitratesThan16MbpsFlag_decode_uper;
+per_type_encoder_f RANAP_HigherBitratesThan16MbpsFlag_encode_uper;
+per_type_decoder_f RANAP_HigherBitratesThan16MbpsFlag_decode_aper;
+per_type_encoder_f RANAP_HigherBitratesThan16MbpsFlag_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HigherBitratesThan16MbpsFlag_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h b/include/osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h
new file mode 100644
index 0000000..9800231
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HorizontalSpeedAndBearing_H_
+#define _RANAP_HorizontalSpeedAndBearing_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HorizontalSpeedAndBearing */
+typedef struct RANAP_HorizontalSpeedAndBearing {
+ long bearing;
+ long horizontalSpeed;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_HorizontalSpeedAndBearing_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalSpeedAndBearing;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HorizontalSpeedAndBearing_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HorizontalVelocity.h b/include/osmocom/ranap/RANAP_HorizontalVelocity.h
new file mode 100644
index 0000000..802941c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HorizontalVelocity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HorizontalVelocity_H_
+#define _RANAP_HorizontalVelocity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HorizontalVelocity */
+typedef struct RANAP_HorizontalVelocity {
+ RANAP_HorizontalSpeedAndBearing_t horizontalSpeedAndBearing;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_HorizontalVelocity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalVelocity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HorizontalVelocity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h b/include/osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h
new file mode 100644
index 0000000..5570c8c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HorizontalVelocityWithUncertainty_H_
+#define _RANAP_HorizontalVelocityWithUncertainty_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HorizontalVelocityWithUncertainty */
+typedef struct RANAP_HorizontalVelocityWithUncertainty {
+ RANAP_HorizontalSpeedAndBearing_t horizontalSpeedAndBearing;
+ long uncertaintySpeed;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_HorizontalVelocityWithUncertainty_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalVelocityWithUncertainty;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HorizontalVelocityWithUncertainty_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h b/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h
new file mode 100644
index 0000000..e0a03eb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HorizontalWithVerticalVelocity_H_
+#define _RANAP_HorizontalWithVerticalVelocity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+#include <osmocom/ranap/RANAP_VerticalVelocity.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HorizontalWithVerticalVelocity */
+typedef struct RANAP_HorizontalWithVerticalVelocity {
+ RANAP_HorizontalSpeedAndBearing_t horizontalSpeedAndBearing;
+ RANAP_VerticalVelocity_t veritcalVelocity;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_HorizontalWithVerticalVelocity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalWithVerticalVelocity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HorizontalWithVerticalVelocity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h b/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h
new file mode 100644
index 0000000..b100f38
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_HorizontalWithVerticalVelocityAndUncertainty_H_
+#define _RANAP_HorizontalWithVerticalVelocityAndUncertainty_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+#include <osmocom/ranap/RANAP_VerticalVelocity.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_HorizontalWithVerticalVelocityAndUncertainty */
+typedef struct RANAP_HorizontalWithVerticalVelocityAndUncertainty {
+ RANAP_HorizontalSpeedAndBearing_t horizontalSpeedAndBearing;
+ RANAP_VerticalVelocity_t veritcalVelocity;
+ long horizontalUncertaintySpeed;
+ long verticalUncertaintySpeed;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_HorizontalWithVerticalVelocityAndUncertainty_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_HorizontalWithVerticalVelocityAndUncertainty_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IE-Extensions.h b/include/osmocom/ranap/RANAP_IE-Extensions.h
new file mode 100644
index 0000000..c310803
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IE-Extensions.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IE_Extensions_H_
+#define _RANAP_IE_Extensions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IE-Extensions */
+typedef struct RANAP_IE_Extensions {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IE_Extensions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IE_Extensions;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IE_Extensions_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IE.h b/include/osmocom/ranap/RANAP_IE.h
new file mode 100644
index 0000000..3ac83c0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IE.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_IE_H_
+#define _RANAP_IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IE */
+typedef struct RANAP_IE {
+ RANAP_ProtocolIE_ID_t id;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IE_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEI.h b/include/osmocom/ranap/RANAP_IMEI.h
new file mode 100644
index 0000000..0416050
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEI_H_
+#define _RANAP_IMEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEI */
+typedef OCTET_STRING_t RANAP_IMEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEI;
+asn_struct_free_f RANAP_IMEI_free;
+asn_struct_print_f RANAP_IMEI_print;
+asn_constr_check_f RANAP_IMEI_constraint;
+ber_type_decoder_f RANAP_IMEI_decode_ber;
+der_type_encoder_f RANAP_IMEI_encode_der;
+xer_type_decoder_f RANAP_IMEI_decode_xer;
+xer_type_encoder_f RANAP_IMEI_encode_xer;
+per_type_decoder_f RANAP_IMEI_decode_uper;
+per_type_encoder_f RANAP_IMEI_encode_uper;
+per_type_decoder_f RANAP_IMEI_decode_aper;
+per_type_encoder_f RANAP_IMEI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEIGroup.h b/include/osmocom/ranap/RANAP_IMEIGroup.h
new file mode 100644
index 0000000..a3bd9d0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEIGroup.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEIGroup_H_
+#define _RANAP_IMEIGroup_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMEI.h>
+#include <BIT_STRING.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEIGroup */
+typedef struct RANAP_IMEIGroup {
+ RANAP_IMEI_t iMEI;
+ BIT_STRING_t iMEIMask;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IMEIGroup_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEIGroup;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEIGroup_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEIList.h b/include/osmocom/ranap/RANAP_IMEIList.h
new file mode 100644
index 0000000..5e1246c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEIList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEIList_H_
+#define _RANAP_IMEIList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMEI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEIList */
+typedef struct RANAP_IMEIList {
+ A_SEQUENCE_OF(RANAP_IMEI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IMEIList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEIList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEIList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEISV.h b/include/osmocom/ranap/RANAP_IMEISV.h
new file mode 100644
index 0000000..2866172
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEISV.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEISV_H_
+#define _RANAP_IMEISV_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEISV */
+typedef OCTET_STRING_t RANAP_IMEISV_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISV;
+asn_struct_free_f RANAP_IMEISV_free;
+asn_struct_print_f RANAP_IMEISV_print;
+asn_constr_check_f RANAP_IMEISV_constraint;
+ber_type_decoder_f RANAP_IMEISV_decode_ber;
+der_type_encoder_f RANAP_IMEISV_encode_der;
+xer_type_decoder_f RANAP_IMEISV_decode_xer;
+xer_type_encoder_f RANAP_IMEISV_encode_xer;
+per_type_decoder_f RANAP_IMEISV_decode_uper;
+per_type_encoder_f RANAP_IMEISV_encode_uper;
+per_type_decoder_f RANAP_IMEISV_decode_aper;
+per_type_encoder_f RANAP_IMEISV_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEISV_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEISVGroup.h b/include/osmocom/ranap/RANAP_IMEISVGroup.h
new file mode 100644
index 0000000..92a3836
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEISVGroup.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEISVGroup_H_
+#define _RANAP_IMEISVGroup_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMEISV.h>
+#include <BIT_STRING.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEISVGroup */
+typedef struct RANAP_IMEISVGroup {
+ RANAP_IMEISV_t iMEISV;
+ BIT_STRING_t iMEISVMask;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IMEISVGroup_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISVGroup;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEISVGroup_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMEISVList.h b/include/osmocom/ranap/RANAP_IMEISVList.h
new file mode 100644
index 0000000..8eb1996
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMEISVList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IMEISVList_H_
+#define _RANAP_IMEISVList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMEISV.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMEISVList */
+typedef struct RANAP_IMEISVList {
+ A_SEQUENCE_OF(RANAP_IMEISV_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IMEISVList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISVList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMEISVList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IMSI.h b/include/osmocom/ranap/RANAP_IMSI.h
new file mode 100644
index 0000000..747c546
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IMSI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+#include <constr_CHOICE.h>
+
+#ifndef _RANAP_IMSI_H_
+#define _RANAP_IMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IMSI */
+typedef OCTET_STRING_t RANAP_IMSI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IMSI;
+asn_struct_free_f RANAP_IMSI_free;
+asn_struct_print_f RANAP_IMSI_print;
+asn_constr_check_f RANAP_IMSI_constraint;
+ber_type_decoder_f RANAP_IMSI_decode_ber;
+der_type_encoder_f RANAP_IMSI_encode_der;
+xer_type_decoder_f RANAP_IMSI_decode_xer;
+xer_type_encoder_f RANAP_IMSI_encode_xer;
+per_type_decoder_f RANAP_IMSI_decode_uper;
+per_type_encoder_f RANAP_IMSI_encode_uper;
+per_type_decoder_f RANAP_IMSI_decode_aper;
+per_type_encoder_f RANAP_IMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IMSI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IPMulticastAddress.h b/include/osmocom/ranap/RANAP_IPMulticastAddress.h
new file mode 100644
index 0000000..8724d11
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IPMulticastAddress.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IPMulticastAddress_H_
+#define _RANAP_IPMulticastAddress_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IPMulticastAddress */
+typedef OCTET_STRING_t RANAP_IPMulticastAddress_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IPMulticastAddress;
+asn_struct_free_f RANAP_IPMulticastAddress_free;
+asn_struct_print_f RANAP_IPMulticastAddress_print;
+asn_constr_check_f RANAP_IPMulticastAddress_constraint;
+ber_type_decoder_f RANAP_IPMulticastAddress_decode_ber;
+der_type_encoder_f RANAP_IPMulticastAddress_encode_der;
+xer_type_decoder_f RANAP_IPMulticastAddress_decode_xer;
+xer_type_encoder_f RANAP_IPMulticastAddress_encode_xer;
+per_type_decoder_f RANAP_IPMulticastAddress_decode_uper;
+per_type_encoder_f RANAP_IPMulticastAddress_encode_uper;
+per_type_decoder_f RANAP_IPMulticastAddress_decode_aper;
+per_type_encoder_f RANAP_IPMulticastAddress_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IPMulticastAddress_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h b/include/osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h
new file mode 100644
index 0000000..e2d1321
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IRAT_Measurement_Configuration_H_
+#define _RANAP_IRAT_Measurement_Configuration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IRATmeasurementParameters.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IRAT-Measurement-Configuration */
+typedef struct RANAP_IRAT_Measurement_Configuration {
+ long *rSRP /* OPTIONAL */;
+ long *rSRQ /* OPTIONAL */;
+ RANAP_IRATmeasurementParameters_t iRATmeasurementParameters;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IRAT_Measurement_Configuration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IRAT_Measurement_Configuration;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IRAT_Measurement_Configuration_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IRATmeasurementParameters.h b/include/osmocom/ranap/RANAP_IRATmeasurementParameters.h
new file mode 100644
index 0000000..e52b0e2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IRATmeasurementParameters.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IRATmeasurementParameters_H_
+#define _RANAP_IRATmeasurementParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_EUTRANFrequencies.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IRATmeasurementParameters */
+typedef struct RANAP_IRATmeasurementParameters {
+ long measurementDuration;
+ RANAP_EUTRANFrequencies_t *eUTRANFrequencies /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IRATmeasurementParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IRATmeasurementParameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IRATmeasurementParameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ImmediateMDT.h b/include/osmocom/ranap/RANAP_ImmediateMDT.h
new file mode 100644
index 0000000..2399e42
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ImmediateMDT.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ImmediateMDT_H_
+#define _RANAP_ImmediateMDT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MeasurementsToActivate.h>
+#include <osmocom/ranap/RANAP_M1Report.h>
+#include <osmocom/ranap/RANAP_M2Report.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ImmediateMDT */
+typedef struct RANAP_ImmediateMDT {
+ RANAP_MeasurementsToActivate_t measurementsToActivate;
+ RANAP_M1Report_t *m1report /* OPTIONAL */;
+ RANAP_M2Report_t *m2report /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ImmediateMDT_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ImmediateMDT;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ImmediateMDT_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IncludeVelocity.h b/include/osmocom/ranap/RANAP_IncludeVelocity.h
new file mode 100644
index 0000000..913d320
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IncludeVelocity.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IncludeVelocity_H_
+#define _RANAP_IncludeVelocity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_IncludeVelocity {
+ RANAP_IncludeVelocity_requested = 0
+} e_RANAP_IncludeVelocity;
+
+/* RANAP_IncludeVelocity */
+typedef long RANAP_IncludeVelocity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IncludeVelocity;
+asn_struct_free_f RANAP_IncludeVelocity_free;
+asn_struct_print_f RANAP_IncludeVelocity_print;
+asn_constr_check_f RANAP_IncludeVelocity_constraint;
+ber_type_decoder_f RANAP_IncludeVelocity_decode_ber;
+der_type_encoder_f RANAP_IncludeVelocity_encode_der;
+xer_type_decoder_f RANAP_IncludeVelocity_decode_xer;
+xer_type_encoder_f RANAP_IncludeVelocity_encode_xer;
+per_type_decoder_f RANAP_IncludeVelocity_decode_uper;
+per_type_encoder_f RANAP_IncludeVelocity_encode_uper;
+per_type_decoder_f RANAP_IncludeVelocity_decode_aper;
+per_type_encoder_f RANAP_IncludeVelocity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IncludeVelocity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationExchangeID.h b/include/osmocom/ranap/RANAP_InformationExchangeID.h
new file mode 100644
index 0000000..a5aac13
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationExchangeID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationExchangeID_H_
+#define _RANAP_InformationExchangeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InformationExchangeID */
+typedef long RANAP_InformationExchangeID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationExchangeID;
+asn_struct_free_f RANAP_InformationExchangeID_free;
+asn_struct_print_f RANAP_InformationExchangeID_print;
+asn_constr_check_f RANAP_InformationExchangeID_constraint;
+ber_type_decoder_f RANAP_InformationExchangeID_decode_ber;
+der_type_encoder_f RANAP_InformationExchangeID_encode_der;
+xer_type_decoder_f RANAP_InformationExchangeID_decode_xer;
+xer_type_encoder_f RANAP_InformationExchangeID_encode_xer;
+per_type_decoder_f RANAP_InformationExchangeID_decode_uper;
+per_type_encoder_f RANAP_InformationExchangeID_encode_uper;
+per_type_decoder_f RANAP_InformationExchangeID_decode_aper;
+per_type_encoder_f RANAP_InformationExchangeID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationExchangeID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationExchangeType.h b/include/osmocom/ranap/RANAP_InformationExchangeType.h
new file mode 100644
index 0000000..57d05b9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationExchangeType.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationExchangeType_H_
+#define _RANAP_InformationExchangeType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_InformationExchangeType {
+ RANAP_InformationExchangeType_transfer = 0,
+ RANAP_InformationExchangeType_request = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_InformationExchangeType;
+
+/* RANAP_InformationExchangeType */
+typedef long RANAP_InformationExchangeType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationExchangeType;
+asn_struct_free_f RANAP_InformationExchangeType_free;
+asn_struct_print_f RANAP_InformationExchangeType_print;
+asn_constr_check_f RANAP_InformationExchangeType_constraint;
+ber_type_decoder_f RANAP_InformationExchangeType_decode_ber;
+der_type_encoder_f RANAP_InformationExchangeType_encode_der;
+xer_type_decoder_f RANAP_InformationExchangeType_decode_xer;
+xer_type_encoder_f RANAP_InformationExchangeType_encode_xer;
+per_type_decoder_f RANAP_InformationExchangeType_decode_uper;
+per_type_encoder_f RANAP_InformationExchangeType_encode_uper;
+per_type_decoder_f RANAP_InformationExchangeType_decode_aper;
+per_type_encoder_f RANAP_InformationExchangeType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationExchangeType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationRequestType.h b/include/osmocom/ranap/RANAP_InformationRequestType.h
new file mode 100644
index 0000000..03ccc15
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationRequestType.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationRequestType_H_
+#define _RANAP_InformationRequestType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h>
+#include <osmocom/ranap/RANAP_PermanentNAS-UE-ID.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_InformationRequestType_PR {
+ RANAP_InformationRequestType_PR_NOTHING, /* No components present */
+ RANAP_InformationRequestType_PR_mBMSIPMulticastAddressandAPNRequest,
+ RANAP_InformationRequestType_PR_permanentNAS_UE_ID,
+ /* Extensions may appear below */
+
+} RANAP_InformationRequestType_PR;
+
+/* RANAP_InformationRequestType */
+typedef struct RANAP_InformationRequestType {
+ RANAP_InformationRequestType_PR present;
+ union RANAP_InformationRequestType_u {
+ RANAP_MBMSIPMulticastAddressandAPNRequest_t mBMSIPMulticastAddressandAPNRequest;
+ RANAP_PermanentNAS_UE_ID_t permanentNAS_UE_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationRequestType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationRequestType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationRequestType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationRequested.h b/include/osmocom/ranap/RANAP_InformationRequested.h
new file mode 100644
index 0000000..0b195b1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationRequested.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationRequested_H_
+#define _RANAP_InformationRequested_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h>
+#include <osmocom/ranap/RANAP_RequestedMulticastServiceList.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_InformationRequested_PR {
+ RANAP_InformationRequested_PR_NOTHING, /* No components present */
+ RANAP_InformationRequested_PR_requestedMBMSIPMulticastAddressandAPNRequest,
+ RANAP_InformationRequested_PR_requestedMulticastServiceList,
+ /* Extensions may appear below */
+
+} RANAP_InformationRequested_PR;
+
+/* RANAP_InformationRequested */
+typedef struct RANAP_InformationRequested {
+ RANAP_InformationRequested_PR present;
+ union RANAP_InformationRequested_u {
+ RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_t requestedMBMSIPMulticastAddressandAPNRequest;
+ RANAP_RequestedMulticastServiceList_t requestedMulticastServiceList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationRequested_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationRequested;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationRequested_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationTransferConfirmation.h b/include/osmocom/ranap/RANAP_InformationTransferConfirmation.h
new file mode 100644
index 0000000..eab0930
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationTransferConfirmation.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_InformationTransferConfirmation_H_
+#define _RANAP_InformationTransferConfirmation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InformationTransferConfirmation */
+typedef struct RANAP_InformationTransferConfirmation {
+ struct informationTransferConfirmation_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } informationTransferConfirmation_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationTransferConfirmation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferConfirmation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationTransferConfirmation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationTransferFailure.h b/include/osmocom/ranap/RANAP_InformationTransferFailure.h
new file mode 100644
index 0000000..3e11e6d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationTransferFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_InformationTransferFailure_H_
+#define _RANAP_InformationTransferFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InformationTransferFailure */
+typedef struct RANAP_InformationTransferFailure {
+ struct informationTransferFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } informationTransferFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationTransferFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationTransferFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationTransferID.h b/include/osmocom/ranap/RANAP_InformationTransferID.h
new file mode 100644
index 0000000..cc002aa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationTransferID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationTransferID_H_
+#define _RANAP_InformationTransferID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InformationTransferID */
+typedef long RANAP_InformationTransferID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferID;
+asn_struct_free_f RANAP_InformationTransferID_free;
+asn_struct_print_f RANAP_InformationTransferID_print;
+asn_constr_check_f RANAP_InformationTransferID_constraint;
+ber_type_decoder_f RANAP_InformationTransferID_decode_ber;
+der_type_encoder_f RANAP_InformationTransferID_encode_der;
+xer_type_decoder_f RANAP_InformationTransferID_decode_xer;
+xer_type_encoder_f RANAP_InformationTransferID_encode_xer;
+per_type_decoder_f RANAP_InformationTransferID_decode_uper;
+per_type_encoder_f RANAP_InformationTransferID_encode_uper;
+per_type_decoder_f RANAP_InformationTransferID_decode_aper;
+per_type_encoder_f RANAP_InformationTransferID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationTransferID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationTransferIndication.h b/include/osmocom/ranap/RANAP_InformationTransferIndication.h
new file mode 100644
index 0000000..0a2dcaf
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationTransferIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_InformationTransferIndication_H_
+#define _RANAP_InformationTransferIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InformationTransferIndication */
+typedef struct RANAP_InformationTransferIndication {
+ struct informationTransferIndication_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } informationTransferIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationTransferIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationTransferIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InformationTransferType.h b/include/osmocom/ranap/RANAP_InformationTransferType.h
new file mode 100644
index 0000000..5214ad5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InformationTransferType.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InformationTransferType_H_
+#define _RANAP_InformationTransferType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RNCTraceInformation.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_InformationTransferType_PR {
+ RANAP_InformationTransferType_PR_NOTHING, /* No components present */
+ RANAP_InformationTransferType_PR_rNCTraceInformation,
+ /* Extensions may appear below */
+
+} RANAP_InformationTransferType_PR;
+
+/* RANAP_InformationTransferType */
+typedef struct RANAP_InformationTransferType {
+ RANAP_InformationTransferType_PR present;
+ union RANAP_InformationTransferType_u {
+ RANAP_RNCTraceInformation_t rNCTraceInformation;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InformationTransferType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InformationTransferType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InitialUE-Message.h b/include/osmocom/ranap/RANAP_InitialUE-Message.h
new file mode 100644
index 0000000..f535cd9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InitialUE-Message.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_InitialUE_Message_H_
+#define _RANAP_InitialUE_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InitialUE-Message */
+typedef struct RANAP_InitialUE_Message {
+ struct initialUE_Message_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } initialUE_Message_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InitialUE_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InitialUE_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InitialUE_Message_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InitiatingMessage.h b/include/osmocom/ranap/RANAP_InitiatingMessage.h
new file mode 100644
index 0000000..62e0667
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InitiatingMessage.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_InitiatingMessage_H_
+#define _RANAP_InitiatingMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InitiatingMessage */
+typedef struct RANAP_InitiatingMessage {
+ RANAP_ProcedureCode_t procedureCode;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InitiatingMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InitiatingMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InitiatingMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h b/include/osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h
new file mode 100644
index 0000000..7ed9284
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IntegrityProtectionAlgorithm_H_
+#define _RANAP_IntegrityProtectionAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_IntegrityProtectionAlgorithm {
+ RANAP_IntegrityProtectionAlgorithm_standard_UMTS_integrity_algorithm_UIA1 = 0,
+ RANAP_IntegrityProtectionAlgorithm_standard_UMTS_integrity_algorithm_UIA2 = 1,
+ RANAP_IntegrityProtectionAlgorithm_no_value = 15
+} e_RANAP_IntegrityProtectionAlgorithm;
+
+/* RANAP_IntegrityProtectionAlgorithm */
+typedef long RANAP_IntegrityProtectionAlgorithm_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionAlgorithm;
+asn_struct_free_f RANAP_IntegrityProtectionAlgorithm_free;
+asn_struct_print_f RANAP_IntegrityProtectionAlgorithm_print;
+asn_constr_check_f RANAP_IntegrityProtectionAlgorithm_constraint;
+ber_type_decoder_f RANAP_IntegrityProtectionAlgorithm_decode_ber;
+der_type_encoder_f RANAP_IntegrityProtectionAlgorithm_encode_der;
+xer_type_decoder_f RANAP_IntegrityProtectionAlgorithm_decode_xer;
+xer_type_encoder_f RANAP_IntegrityProtectionAlgorithm_encode_xer;
+per_type_decoder_f RANAP_IntegrityProtectionAlgorithm_decode_uper;
+per_type_encoder_f RANAP_IntegrityProtectionAlgorithm_encode_uper;
+per_type_decoder_f RANAP_IntegrityProtectionAlgorithm_decode_aper;
+per_type_encoder_f RANAP_IntegrityProtectionAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IntegrityProtectionAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IntegrityProtectionInformation.h b/include/osmocom/ranap/RANAP_IntegrityProtectionInformation.h
new file mode 100644
index 0000000..a907df2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IntegrityProtectionInformation.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IntegrityProtectionInformation_H_
+#define _RANAP_IntegrityProtectionInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h>
+#include <osmocom/ranap/RANAP_IntegrityProtectionKey.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IntegrityProtectionInformation */
+typedef struct RANAP_IntegrityProtectionInformation {
+ RANAP_PermittedIntegrityProtectionAlgorithms_t permittedAlgorithms;
+ RANAP_IntegrityProtectionKey_t key;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IntegrityProtectionInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IntegrityProtectionInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IntegrityProtectionKey.h b/include/osmocom/ranap/RANAP_IntegrityProtectionKey.h
new file mode 100644
index 0000000..4010d71
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IntegrityProtectionKey.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IntegrityProtectionKey_H_
+#define _RANAP_IntegrityProtectionKey_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IntegrityProtectionKey */
+typedef BIT_STRING_t RANAP_IntegrityProtectionKey_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionKey;
+asn_struct_free_f RANAP_IntegrityProtectionKey_free;
+asn_struct_print_f RANAP_IntegrityProtectionKey_print;
+asn_constr_check_f RANAP_IntegrityProtectionKey_constraint;
+ber_type_decoder_f RANAP_IntegrityProtectionKey_decode_ber;
+der_type_encoder_f RANAP_IntegrityProtectionKey_encode_der;
+xer_type_decoder_f RANAP_IntegrityProtectionKey_decode_xer;
+xer_type_encoder_f RANAP_IntegrityProtectionKey_encode_xer;
+per_type_decoder_f RANAP_IntegrityProtectionKey_decode_uper;
+per_type_encoder_f RANAP_IntegrityProtectionKey_encode_uper;
+per_type_decoder_f RANAP_IntegrityProtectionKey_decode_aper;
+per_type_encoder_f RANAP_IntegrityProtectionKey_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IntegrityProtectionKey_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h b/include/osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h
new file mode 100644
index 0000000..d6b1039
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InterSystemInformation_TransparentContainer_H_
+#define _RANAP_InterSystemInformation_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CellLoadInformation.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_InterSystemInformation-TransparentContainer */
+typedef struct RANAP_InterSystemInformation_TransparentContainer {
+ RANAP_CellLoadInformation_t *downlinkCellLoadInformation /* OPTIONAL */;
+ RANAP_CellLoadInformation_t *uplinkCellLoadInformation /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InterSystemInformation_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InterSystemInformation_TransparentContainer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InterSystemInformation_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InterSystemInformationTransferType.h b/include/osmocom/ranap/RANAP_InterSystemInformationTransferType.h
new file mode 100644
index 0000000..605967e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InterSystemInformationTransferType.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InterSystemInformationTransferType_H_
+#define _RANAP_InterSystemInformationTransferType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RIM-Transfer.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_InterSystemInformationTransferType_PR {
+ RANAP_InterSystemInformationTransferType_PR_NOTHING, /* No components present */
+ RANAP_InterSystemInformationTransferType_PR_rIM_Transfer,
+ /* Extensions may appear below */
+
+} RANAP_InterSystemInformationTransferType_PR;
+
+/* RANAP_InterSystemInformationTransferType */
+typedef struct RANAP_InterSystemInformationTransferType {
+ RANAP_InterSystemInformationTransferType_PR present;
+ union RANAP_InterSystemInformationTransferType_u {
+ RANAP_RIM_Transfer_t rIM_Transfer;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InterSystemInformationTransferType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InterSystemInformationTransferType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InterSystemInformationTransferType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_InterfacesToTraceItem.h b/include/osmocom/ranap/RANAP_InterfacesToTraceItem.h
new file mode 100644
index 0000000..e690f90
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_InterfacesToTraceItem.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_InterfacesToTraceItem_H_
+#define _RANAP_InterfacesToTraceItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum interface {
+ interface_iu_cs = 0,
+ interface_iu_ps = 1,
+ interface_iur = 2,
+ interface_iub = 3,
+ interface_uu = 4
+ /*
+ * Enumeration is extensible
+ */
+} e_interface;
+
+/* RANAP_InterfacesToTraceItem */
+typedef struct RANAP_InterfacesToTraceItem {
+ long interface;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_InterfacesToTraceItem_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_interface_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_InterfacesToTraceItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_InterfacesToTraceItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Iu-ReleaseCommand.h b/include/osmocom/ranap/RANAP_Iu-ReleaseCommand.h
new file mode 100644
index 0000000..bbe20ec
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Iu-ReleaseCommand.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Iu_ReleaseCommand_H_
+#define _RANAP_Iu_ReleaseCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Iu-ReleaseCommand */
+typedef struct RANAP_Iu_ReleaseCommand {
+ struct iu_ReleaseCommand_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iu_ReleaseCommand_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Iu_ReleaseCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseCommand;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Iu_ReleaseCommand_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Iu-ReleaseComplete.h b/include/osmocom/ranap/RANAP_Iu-ReleaseComplete.h
new file mode 100644
index 0000000..b9a7507
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Iu-ReleaseComplete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Iu_ReleaseComplete_H_
+#define _RANAP_Iu_ReleaseComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Iu-ReleaseComplete */
+typedef struct RANAP_Iu_ReleaseComplete {
+ struct iu_ReleaseComplete_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iu_ReleaseComplete_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Iu_ReleaseComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseComplete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Iu_ReleaseComplete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Iu-ReleaseRequest.h b/include/osmocom/ranap/RANAP_Iu-ReleaseRequest.h
new file mode 100644
index 0000000..6f07090
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Iu-ReleaseRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Iu_ReleaseRequest_H_
+#define _RANAP_Iu_ReleaseRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Iu-ReleaseRequest */
+typedef struct RANAP_Iu_ReleaseRequest {
+ struct iu_ReleaseRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iu_ReleaseRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Iu_ReleaseRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Iu_ReleaseRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h b/include/osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h
new file mode 100644
index 0000000..7654441
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_IuSigConId_IE_ContainerList_H_
+#define _RANAP_IuSigConId_IE_ContainerList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IuSigConId-IE-ContainerList */
+typedef struct RANAP_IuSigConId_IE_ContainerList {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_Container_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IuSigConId_IE_ContainerList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IuSigConId_IE_ContainerList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IuSigConId_IE_ContainerList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h b/include/osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h
new file mode 100644
index 0000000..b334891
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IuSignallingConnectionIdentifier_H_
+#define _RANAP_IuSignallingConnectionIdentifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_IuSignallingConnectionIdentifier */
+typedef BIT_STRING_t RANAP_IuSignallingConnectionIdentifier_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IuSignallingConnectionIdentifier;
+asn_struct_free_f RANAP_IuSignallingConnectionIdentifier_free;
+asn_struct_print_f RANAP_IuSignallingConnectionIdentifier_print;
+asn_constr_check_f RANAP_IuSignallingConnectionIdentifier_constraint;
+ber_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_ber;
+der_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_der;
+xer_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_xer;
+xer_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_xer;
+per_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_uper;
+per_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_uper;
+per_type_decoder_f RANAP_IuSignallingConnectionIdentifier_decode_aper;
+per_type_encoder_f RANAP_IuSignallingConnectionIdentifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IuSignallingConnectionIdentifier_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_IuTransportAssociation.h b/include/osmocom/ranap/RANAP_IuTransportAssociation.h
new file mode 100644
index 0000000..450c644
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_IuTransportAssociation.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_IuTransportAssociation_H_
+#define _RANAP_IuTransportAssociation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GTP-TEI.h>
+#include <osmocom/ranap/RANAP_BindingID.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_IuTransportAssociation_PR {
+ RANAP_IuTransportAssociation_PR_NOTHING, /* No components present */
+ RANAP_IuTransportAssociation_PR_gTP_TEI,
+ RANAP_IuTransportAssociation_PR_bindingID,
+ /* Extensions may appear below */
+
+} RANAP_IuTransportAssociation_PR;
+
+/* RANAP_IuTransportAssociation */
+typedef struct RANAP_IuTransportAssociation {
+ RANAP_IuTransportAssociation_PR present;
+ union RANAP_IuTransportAssociation_u {
+ RANAP_GTP_TEI_t gTP_TEI;
+ RANAP_BindingID_t bindingID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_IuTransportAssociation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_IuTransportAssociation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_IuTransportAssociation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h b/include/osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h
new file mode 100644
index 0000000..b27cde4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_JoinedMBMSBearerService_IEs_H_
+#define _RANAP_JoinedMBMSBearerService_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_JoinedMBMSBearerService-IEs */
+typedef struct RANAP_JoinedMBMSBearerService_IEs {
+ A_SEQUENCE_OF(struct MemberF {
+ RANAP_TMGI_t tMGI;
+ RANAP_MBMS_PTP_RAB_ID_t mBMS_PTP_RAB_ID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_JoinedMBMSBearerService_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_JoinedMBMSBearerService_IEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_JoinedMBMSBearerService_IEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_KeyStatus.h b/include/osmocom/ranap/RANAP_KeyStatus.h
new file mode 100644
index 0000000..1b61813
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_KeyStatus.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_KeyStatus_H_
+#define _RANAP_KeyStatus_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_KeyStatus {
+ RANAP_KeyStatus_old = 0,
+ RANAP_KeyStatus_new = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_KeyStatus;
+
+/* RANAP_KeyStatus */
+typedef long RANAP_KeyStatus_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_KeyStatus;
+asn_struct_free_f RANAP_KeyStatus_free;
+asn_struct_print_f RANAP_KeyStatus_print;
+asn_constr_check_f RANAP_KeyStatus_constraint;
+ber_type_decoder_f RANAP_KeyStatus_decode_ber;
+der_type_encoder_f RANAP_KeyStatus_encode_der;
+xer_type_decoder_f RANAP_KeyStatus_decode_xer;
+xer_type_encoder_f RANAP_KeyStatus_encode_xer;
+per_type_decoder_f RANAP_KeyStatus_decode_uper;
+per_type_encoder_f RANAP_KeyStatus_encode_uper;
+per_type_decoder_f RANAP_KeyStatus_decode_aper;
+per_type_encoder_f RANAP_KeyStatus_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_KeyStatus_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_L3-Information.h b/include/osmocom/ranap/RANAP_L3-Information.h
new file mode 100644
index 0000000..122c64d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_L3-Information.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_L3_Information_H_
+#define _RANAP_L3_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_L3-Information */
+typedef OCTET_STRING_t RANAP_L3_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_L3_Information;
+asn_struct_free_f RANAP_L3_Information_free;
+asn_struct_print_f RANAP_L3_Information_print;
+asn_constr_check_f RANAP_L3_Information_constraint;
+ber_type_decoder_f RANAP_L3_Information_decode_ber;
+der_type_encoder_f RANAP_L3_Information_encode_der;
+xer_type_decoder_f RANAP_L3_Information_decode_xer;
+xer_type_encoder_f RANAP_L3_Information_encode_xer;
+per_type_decoder_f RANAP_L3_Information_decode_uper;
+per_type_encoder_f RANAP_L3_Information_encode_uper;
+per_type_decoder_f RANAP_L3_Information_decode_aper;
+per_type_encoder_f RANAP_L3_Information_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_L3_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LA-LIST.h b/include/osmocom/ranap/RANAP_LA-LIST.h
new file mode 100644
index 0000000..08e76ed
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LA-LIST.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LA_LIST_H_
+#define _RANAP_LA_LIST_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_LAC.h>
+#include <osmocom/ranap/RANAP_ListOF-SNAs.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LA-LIST */
+typedef struct RANAP_LA_LIST {
+ A_SEQUENCE_OF(struct MemberA {
+ RANAP_LAC_t lAC;
+ RANAP_ListOF_SNAs_t listOF_SNAs;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LA_LIST_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LA_LIST;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LA_LIST_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LABased.h b/include/osmocom/ranap/RANAP_LABased.h
new file mode 100644
index 0000000..49de171
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LABased.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LABased_H_
+#define _RANAP_LABased_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI-List.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LABased */
+typedef struct RANAP_LABased {
+ RANAP_LAI_List_t laiList;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LABased_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LABased;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LABased_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LAC.h b/include/osmocom/ranap/RANAP_LAC.h
new file mode 100644
index 0000000..ff12809
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LAC.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LAC_H_
+#define _RANAP_LAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LAC */
+typedef OCTET_STRING_t RANAP_LAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LAC;
+asn_struct_free_f RANAP_LAC_free;
+asn_struct_print_f RANAP_LAC_print;
+asn_constr_check_f RANAP_LAC_constraint;
+ber_type_decoder_f RANAP_LAC_decode_ber;
+der_type_encoder_f RANAP_LAC_encode_der;
+xer_type_decoder_f RANAP_LAC_decode_xer;
+xer_type_encoder_f RANAP_LAC_encode_xer;
+per_type_decoder_f RANAP_LAC_decode_uper;
+per_type_encoder_f RANAP_LAC_encode_uper;
+per_type_decoder_f RANAP_LAC_decode_aper;
+per_type_encoder_f RANAP_LAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LAI-List.h b/include/osmocom/ranap/RANAP_LAI-List.h
new file mode 100644
index 0000000..ba2ddf3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LAI-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LAI_List_H_
+#define _RANAP_LAI_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LAI-List */
+typedef struct RANAP_LAI_List {
+ A_SEQUENCE_OF(RANAP_LAI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LAI_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LAI_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LAI_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LAI.h b/include/osmocom/ranap/RANAP_LAI.h
new file mode 100644
index 0000000..f66b324
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LAI.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LAI_H_
+#define _RANAP_LAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_LAC.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LAI */
+typedef struct RANAP_LAI {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_LAC_t lAC;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LAListofIdleModeUEs.h b/include/osmocom/ranap/RANAP_LAListofIdleModeUEs.h
new file mode 100644
index 0000000..4332963
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LAListofIdleModeUEs.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LAListofIdleModeUEs_H_
+#define _RANAP_LAListofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LAListofIdleModeUEs */
+typedef struct RANAP_LAListofIdleModeUEs {
+ A_SEQUENCE_OF(RANAP_LAI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LAListofIdleModeUEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LAListofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LAListofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LHN-ID.h b/include/osmocom/ranap/RANAP_LHN-ID.h
new file mode 100644
index 0000000..a8776b8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LHN-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LHN_ID_H_
+#define _RANAP_LHN_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LHN-ID */
+typedef OCTET_STRING_t RANAP_LHN_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LHN_ID;
+asn_struct_free_f RANAP_LHN_ID_free;
+asn_struct_print_f RANAP_LHN_ID_print;
+asn_constr_check_f RANAP_LHN_ID_constraint;
+ber_type_decoder_f RANAP_LHN_ID_decode_ber;
+der_type_encoder_f RANAP_LHN_ID_encode_der;
+xer_type_decoder_f RANAP_LHN_ID_decode_xer;
+xer_type_encoder_f RANAP_LHN_ID_encode_xer;
+per_type_decoder_f RANAP_LHN_ID_decode_uper;
+per_type_encoder_f RANAP_LHN_ID_encode_uper;
+per_type_decoder_f RANAP_LHN_ID_decode_aper;
+per_type_encoder_f RANAP_LHN_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LHN_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LastKnownServiceArea.h b/include/osmocom/ranap/RANAP_LastKnownServiceArea.h
new file mode 100644
index 0000000..9fa72cd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LastKnownServiceArea.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LastKnownServiceArea_H_
+#define _RANAP_LastKnownServiceArea_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SAI.h>
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LastKnownServiceArea */
+typedef struct RANAP_LastKnownServiceArea {
+ RANAP_SAI_t sAI;
+ long ageOfSAI;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LastKnownServiceArea_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LastKnownServiceArea;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LastKnownServiceArea_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h b/include/osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h
new file mode 100644
index 0000000..1adfd3e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LastVisitedUTRANCell_Item_H_
+#define _RANAP_LastVisitedUTRANCell_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_UTRAN-CellID.h>
+#include <osmocom/ranap/RANAP_CellType.h>
+#include <osmocom/ranap/RANAP_Time-UE-StayedInCell.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LastVisitedUTRANCell-Item */
+typedef struct RANAP_LastVisitedUTRANCell_Item {
+ RANAP_UTRAN_CellID_t uTRAN_CellID;
+ RANAP_CellType_t cellType;
+ RANAP_Time_UE_StayedInCell_t time_UE_StayedInCell;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LastVisitedUTRANCell_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LastVisitedUTRANCell_Item;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LastVisitedUTRANCell_Item_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h b/include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h
new file mode 100644
index 0000000..f348739
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LeftMBMSBearerService_IEs_H_
+#define _RANAP_LeftMBMSBearerService_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LeftMBMSBearerService-IEs */
+typedef struct RANAP_LeftMBMSBearerService_IEs {
+ A_SEQUENCE_OF(struct MemberK {
+ RANAP_TMGI_t tMGI;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LeftMBMSBearerService_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LeftMBMSBearerService_IEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LeftMBMSBearerService_IEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Links-to-log.h b/include/osmocom/ranap/RANAP_Links-to-log.h
new file mode 100644
index 0000000..8b11a7e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Links-to-log.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Links_to_log_H_
+#define _RANAP_Links_to_log_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Links_to_log {
+ RANAP_Links_to_log_uplink = 0,
+ RANAP_Links_to_log_downlink = 1,
+ RANAP_Links_to_log_both_uplink_and_downlink = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Links_to_log;
+
+/* RANAP_Links-to-log */
+typedef long RANAP_Links_to_log_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Links_to_log;
+asn_struct_free_f RANAP_Links_to_log_free;
+asn_struct_print_f RANAP_Links_to_log_print;
+asn_constr_check_f RANAP_Links_to_log_constraint;
+ber_type_decoder_f RANAP_Links_to_log_decode_ber;
+der_type_encoder_f RANAP_Links_to_log_encode_der;
+xer_type_decoder_f RANAP_Links_to_log_decode_xer;
+xer_type_encoder_f RANAP_Links_to_log_encode_xer;
+per_type_decoder_f RANAP_Links_to_log_decode_uper;
+per_type_encoder_f RANAP_Links_to_log_encode_uper;
+per_type_decoder_f RANAP_Links_to_log_decode_aper;
+per_type_encoder_f RANAP_Links_to_log_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Links_to_log_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ListOF-SNAs.h b/include/osmocom/ranap/RANAP_ListOF-SNAs.h
new file mode 100644
index 0000000..beeb609
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ListOF-SNAs.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ListOF_SNAs_H_
+#define _RANAP_ListOF_SNAs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SNAC.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ListOF-SNAs */
+typedef struct RANAP_ListOF_SNAs {
+ A_SEQUENCE_OF(RANAP_SNAC_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ListOF_SNAs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ListOF_SNAs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ListOF_SNAs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ListOfInterfacesToTrace.h b/include/osmocom/ranap/RANAP_ListOfInterfacesToTrace.h
new file mode 100644
index 0000000..3be571b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ListOfInterfacesToTrace.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ListOfInterfacesToTrace_H_
+#define _RANAP_ListOfInterfacesToTrace_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_InterfacesToTraceItem.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ListOfInterfacesToTrace */
+typedef struct RANAP_ListOfInterfacesToTrace {
+ A_SEQUENCE_OF(RANAP_InterfacesToTraceItem_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ListOfInterfacesToTrace_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ListOfInterfacesToTrace;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ListOfInterfacesToTrace_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LoadValue.h b/include/osmocom/ranap/RANAP_LoadValue.h
new file mode 100644
index 0000000..8cb072d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LoadValue.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LoadValue_H_
+#define _RANAP_LoadValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LoadValue */
+typedef long RANAP_LoadValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LoadValue;
+asn_struct_free_f RANAP_LoadValue_free;
+asn_struct_print_f RANAP_LoadValue_print;
+asn_constr_check_f RANAP_LoadValue_constraint;
+ber_type_decoder_f RANAP_LoadValue_decode_ber;
+der_type_encoder_f RANAP_LoadValue_encode_der;
+xer_type_decoder_f RANAP_LoadValue_decode_xer;
+xer_type_encoder_f RANAP_LoadValue_encode_xer;
+per_type_decoder_f RANAP_LoadValue_decode_uper;
+per_type_encoder_f RANAP_LoadValue_encode_uper;
+per_type_decoder_f RANAP_LoadValue_decode_aper;
+per_type_encoder_f RANAP_LoadValue_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LoadValue_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationRelatedDataFailure.h b/include/osmocom/ranap/RANAP_LocationRelatedDataFailure.h
new file mode 100644
index 0000000..6ac119b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationRelatedDataFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LocationRelatedDataFailure_H_
+#define _RANAP_LocationRelatedDataFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationRelatedDataFailure */
+typedef struct RANAP_LocationRelatedDataFailure {
+ struct locationRelatedDataFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } locationRelatedDataFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationRelatedDataFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationRelatedDataFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationRelatedDataRequest.h b/include/osmocom/ranap/RANAP_LocationRelatedDataRequest.h
new file mode 100644
index 0000000..3192de2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationRelatedDataRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LocationRelatedDataRequest_H_
+#define _RANAP_LocationRelatedDataRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationRelatedDataRequest */
+typedef struct RANAP_LocationRelatedDataRequest {
+ struct locationRelatedDataRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } locationRelatedDataRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationRelatedDataRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationRelatedDataRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationRelatedDataRequestType.h b/include/osmocom/ranap/RANAP_LocationRelatedDataRequestType.h
new file mode 100644
index 0000000..7ed1e3c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationRelatedDataRequestType.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LocationRelatedDataRequestType_H_
+#define _RANAP_LocationRelatedDataRequestType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h>
+#include <osmocom/ranap/RANAP_RequestedGPSAssistanceData.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationRelatedDataRequestType */
+typedef struct RANAP_LocationRelatedDataRequestType {
+ RANAP_RequestedLocationRelatedDataType_t requestedLocationRelatedDataType;
+ RANAP_RequestedGPSAssistanceData_t *requestedGPSAssistanceData /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationRelatedDataRequestType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequestType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationRelatedDataRequestType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h b/include/osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h
new file mode 100644
index 0000000..bf80588
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_H_
+#define _RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decipheringKeysEOTD = 0,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_dedicatedMobileAssistedEOTDAssistanceData = 1,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_dedicatedMobileBasedEOTDAssistanceData = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode;
+
+/* RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode */
+typedef long RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode;
+asn_struct_free_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_free;
+asn_struct_print_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_print;
+asn_constr_check_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_constraint;
+ber_type_decoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_ber;
+der_type_encoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_der;
+xer_type_decoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_xer;
+xer_type_encoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_xer;
+per_type_decoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_uper;
+per_type_encoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_uper;
+per_type_decoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_aper;
+per_type_encoder_f RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationRelatedDataResponse.h b/include/osmocom/ranap/RANAP_LocationRelatedDataResponse.h
new file mode 100644
index 0000000..222e9b7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationRelatedDataResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LocationRelatedDataResponse_H_
+#define _RANAP_LocationRelatedDataResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationRelatedDataResponse */
+typedef struct RANAP_LocationRelatedDataResponse {
+ struct locationRelatedDataResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } locationRelatedDataResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationRelatedDataResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationRelatedDataResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationReport.h b/include/osmocom/ranap/RANAP_LocationReport.h
new file mode 100644
index 0000000..e2e8700
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationReport.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LocationReport_H_
+#define _RANAP_LocationReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationReport */
+typedef struct RANAP_LocationReport {
+ struct locationReport_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } locationReport_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationReport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReport;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationReport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationReportingControl.h b/include/osmocom/ranap/RANAP_LocationReportingControl.h
new file mode 100644
index 0000000..8909093
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationReportingControl.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_LocationReportingControl_H_
+#define _RANAP_LocationReportingControl_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationReportingControl */
+typedef struct RANAP_LocationReportingControl {
+ struct locationReportingControl_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } locationReportingControl_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationReportingControl_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReportingControl;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationReportingControl_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LocationReportingTransferInformation.h b/include/osmocom/ranap/RANAP_LocationReportingTransferInformation.h
new file mode 100644
index 0000000..dcdcbc2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LocationReportingTransferInformation.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LocationReportingTransferInformation_H_
+#define _RANAP_LocationReportingTransferInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ReportChangeOfSAI.h>
+#include <osmocom/ranap/RANAP_PeriodicReportingIndicator.h>
+#include <osmocom/ranap/RANAP_DirectReportingIndicator.h>
+#include <osmocom/ranap/RANAP_VerticalAccuracyCode.h>
+#include <osmocom/ranap/RANAP_PositioningPriority.h>
+#include <osmocom/ranap/RANAP_ClientType.h>
+#include <osmocom/ranap/RANAP_ResponseTime.h>
+#include <osmocom/ranap/RANAP_IncludeVelocity.h>
+#include <osmocom/ranap/RANAP_PeriodicLocationInfo.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LocationReportingTransferInformation */
+typedef struct RANAP_LocationReportingTransferInformation {
+ RANAP_ReportChangeOfSAI_t *reportChangeOfSAI /* OPTIONAL */;
+ RANAP_PeriodicReportingIndicator_t *periodicReportingIndicator /* OPTIONAL */;
+ RANAP_DirectReportingIndicator_t *directReportingIndicator /* OPTIONAL */;
+ RANAP_VerticalAccuracyCode_t *verticalAccuracyCode /* OPTIONAL */;
+ RANAP_PositioningPriority_t *positioningPriorityChangeSAI /* OPTIONAL */;
+ RANAP_PositioningPriority_t *positioningPriorityDirect /* OPTIONAL */;
+ RANAP_ClientType_t *clientTypePeriodic /* OPTIONAL */;
+ RANAP_ClientType_t *clientTypeDirect /* OPTIONAL */;
+ RANAP_ResponseTime_t *responseTime /* OPTIONAL */;
+ RANAP_IncludeVelocity_t *includeVelocity /* OPTIONAL */;
+ RANAP_PeriodicLocationInfo_t *periodicLocationInfo /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LocationReportingTransferInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReportingTransferInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LocationReportingTransferInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LoggedMDT.h b/include/osmocom/ranap/RANAP_LoggedMDT.h
new file mode 100644
index 0000000..83f86e5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LoggedMDT.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LoggedMDT_H_
+#define _RANAP_LoggedMDT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LoggingInterval.h>
+#include <osmocom/ranap/RANAP_LoggingDuration.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_LoggedMDT */
+typedef struct RANAP_LoggedMDT {
+ RANAP_LoggingInterval_t loggingInterval;
+ RANAP_LoggingDuration_t loggingDuration;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_LoggedMDT_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LoggedMDT;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LoggedMDT_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LoggingDuration.h b/include/osmocom/ranap/RANAP_LoggingDuration.h
new file mode 100644
index 0000000..90d4509
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LoggingDuration.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LoggingDuration_H_
+#define _RANAP_LoggingDuration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_LoggingDuration {
+ RANAP_LoggingDuration_min10 = 0,
+ RANAP_LoggingDuration_min20 = 1,
+ RANAP_LoggingDuration_min40 = 2,
+ RANAP_LoggingDuration_min60 = 3,
+ RANAP_LoggingDuration_min90 = 4,
+ RANAP_LoggingDuration_min120 = 5
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_LoggingDuration;
+
+/* RANAP_LoggingDuration */
+typedef long RANAP_LoggingDuration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LoggingDuration;
+asn_struct_free_f RANAP_LoggingDuration_free;
+asn_struct_print_f RANAP_LoggingDuration_print;
+asn_constr_check_f RANAP_LoggingDuration_constraint;
+ber_type_decoder_f RANAP_LoggingDuration_decode_ber;
+der_type_encoder_f RANAP_LoggingDuration_encode_der;
+xer_type_decoder_f RANAP_LoggingDuration_decode_xer;
+xer_type_encoder_f RANAP_LoggingDuration_encode_xer;
+per_type_decoder_f RANAP_LoggingDuration_decode_uper;
+per_type_encoder_f RANAP_LoggingDuration_encode_uper;
+per_type_decoder_f RANAP_LoggingDuration_decode_aper;
+per_type_encoder_f RANAP_LoggingDuration_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LoggingDuration_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_LoggingInterval.h b/include/osmocom/ranap/RANAP_LoggingInterval.h
new file mode 100644
index 0000000..60ebae5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_LoggingInterval.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_LoggingInterval_H_
+#define _RANAP_LoggingInterval_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_LoggingInterval {
+ RANAP_LoggingInterval_s1d28 = 0,
+ RANAP_LoggingInterval_s2d56 = 1,
+ RANAP_LoggingInterval_s5d12 = 2,
+ RANAP_LoggingInterval_s10d24 = 3,
+ RANAP_LoggingInterval_s20d48 = 4,
+ RANAP_LoggingInterval_s30d72 = 5,
+ RANAP_LoggingInterval_s40d96 = 6,
+ RANAP_LoggingInterval_s61d44 = 7
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_LoggingInterval;
+
+/* RANAP_LoggingInterval */
+typedef long RANAP_LoggingInterval_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_LoggingInterval;
+asn_struct_free_f RANAP_LoggingInterval_free;
+asn_struct_print_f RANAP_LoggingInterval_print;
+asn_constr_check_f RANAP_LoggingInterval_constraint;
+ber_type_decoder_f RANAP_LoggingInterval_decode_ber;
+der_type_encoder_f RANAP_LoggingInterval_encode_der;
+xer_type_decoder_f RANAP_LoggingInterval_decode_xer;
+xer_type_encoder_f RANAP_LoggingInterval_encode_xer;
+per_type_decoder_f RANAP_LoggingInterval_decode_uper;
+per_type_encoder_f RANAP_LoggingInterval_encode_uper;
+per_type_decoder_f RANAP_LoggingInterval_decode_aper;
+per_type_encoder_f RANAP_LoggingInterval_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_LoggingInterval_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M1Report.h b/include/osmocom/ranap/RANAP_M1Report.h
new file mode 100644
index 0000000..0773dd5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M1Report.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M1Report_H_
+#define _RANAP_M1Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MDT-Report-Parameters.h>
+#include <osmocom/ranap/RANAP_Event1F-Parameters.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M1Report_PR {
+ RANAP_M1Report_PR_NOTHING, /* No components present */
+ RANAP_M1Report_PR_periodic,
+ RANAP_M1Report_PR_event1F,
+ /* Extensions may appear below */
+
+} RANAP_M1Report_PR;
+
+/* RANAP_M1Report */
+typedef struct RANAP_M1Report {
+ RANAP_M1Report_PR present;
+ union RANAP_M1Report_u {
+ RANAP_MDT_Report_Parameters_t periodic;
+ RANAP_Event1F_Parameters_t event1F;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M1Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M1Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M1Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M2Report.h b/include/osmocom/ranap/RANAP_M2Report.h
new file mode 100644
index 0000000..b38126d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M2Report.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M2Report_H_
+#define _RANAP_M2Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MDT-Report-Parameters.h>
+#include <osmocom/ranap/RANAP_Event1I-Parameters.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M2Report_PR {
+ RANAP_M2Report_PR_NOTHING, /* No components present */
+ RANAP_M2Report_PR_periodic,
+ RANAP_M2Report_PR_event1I,
+ /* Extensions may appear below */
+
+} RANAP_M2Report_PR;
+
+/* RANAP_M2Report */
+typedef struct RANAP_M2Report {
+ RANAP_M2Report_PR present;
+ union RANAP_M2Report_u {
+ RANAP_MDT_Report_Parameters_t periodic;
+ RANAP_Event1I_Parameters_t event1I;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M2Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M2Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M2Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M4-Collection-Parameters.h b/include/osmocom/ranap/RANAP_M4-Collection-Parameters.h
new file mode 100644
index 0000000..40084ca
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M4-Collection-Parameters.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M4_Collection_Parameters_H_
+#define _RANAP_M4_Collection_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_M4-Period.h>
+#include <osmocom/ranap/RANAP_M4-Threshold.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_M4-Collection-Parameters */
+typedef struct RANAP_M4_Collection_Parameters {
+ RANAP_M4_Period_t m4_period;
+ RANAP_M4_Threshold_t *m4_threshold /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M4_Collection_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Collection_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M4_Collection_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M4-Period.h b/include/osmocom/ranap/RANAP_M4-Period.h
new file mode 100644
index 0000000..c6b615d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M4-Period.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M4_Period_H_
+#define _RANAP_M4_Period_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M4_Period {
+ RANAP_M4_Period_ms100 = 0,
+ RANAP_M4_Period_ms250 = 1,
+ RANAP_M4_Period_ms500 = 2,
+ RANAP_M4_Period_ms1000 = 3,
+ RANAP_M4_Period_ms2000 = 4,
+ RANAP_M4_Period_ms3000 = 5,
+ RANAP_M4_Period_ms4000 = 6,
+ RANAP_M4_Period_ms6000 = 7
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_M4_Period;
+
+/* RANAP_M4-Period */
+typedef long RANAP_M4_Period_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Period;
+asn_struct_free_f RANAP_M4_Period_free;
+asn_struct_print_f RANAP_M4_Period_print;
+asn_constr_check_f RANAP_M4_Period_constraint;
+ber_type_decoder_f RANAP_M4_Period_decode_ber;
+der_type_encoder_f RANAP_M4_Period_encode_der;
+xer_type_decoder_f RANAP_M4_Period_decode_xer;
+xer_type_encoder_f RANAP_M4_Period_encode_xer;
+per_type_decoder_f RANAP_M4_Period_decode_uper;
+per_type_encoder_f RANAP_M4_Period_encode_uper;
+per_type_decoder_f RANAP_M4_Period_decode_aper;
+per_type_encoder_f RANAP_M4_Period_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M4_Period_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M4-Threshold.h b/include/osmocom/ranap/RANAP_M4-Threshold.h
new file mode 100644
index 0000000..223cf9f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M4-Threshold.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M4_Threshold_H_
+#define _RANAP_M4_Threshold_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_M4-Threshold */
+typedef long RANAP_M4_Threshold_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Threshold;
+asn_struct_free_f RANAP_M4_Threshold_free;
+asn_struct_print_f RANAP_M4_Threshold_print;
+asn_constr_check_f RANAP_M4_Threshold_constraint;
+ber_type_decoder_f RANAP_M4_Threshold_decode_ber;
+der_type_encoder_f RANAP_M4_Threshold_encode_der;
+xer_type_decoder_f RANAP_M4_Threshold_decode_xer;
+xer_type_encoder_f RANAP_M4_Threshold_encode_xer;
+per_type_decoder_f RANAP_M4_Threshold_decode_uper;
+per_type_encoder_f RANAP_M4_Threshold_encode_uper;
+per_type_decoder_f RANAP_M4_Threshold_decode_aper;
+per_type_encoder_f RANAP_M4_Threshold_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M4_Threshold_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M4Report.h b/include/osmocom/ranap/RANAP_M4Report.h
new file mode 100644
index 0000000..cafd394
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M4Report.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M4Report_H_
+#define _RANAP_M4Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <osmocom/ranap/RANAP_M4-Collection-Parameters.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M4Report_PR {
+ RANAP_M4Report_PR_NOTHING, /* No components present */
+ RANAP_M4Report_PR_all,
+ RANAP_M4Report_PR_m4_collection_parameters,
+ /* Extensions may appear below */
+
+} RANAP_M4Report_PR;
+
+/* RANAP_M4Report */
+typedef struct RANAP_M4Report {
+ RANAP_M4Report_PR present;
+ union RANAP_M4Report_u {
+ NULL_t all;
+ RANAP_M4_Collection_Parameters_t m4_collection_parameters;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M4Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M4Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M4Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M5-Period.h b/include/osmocom/ranap/RANAP_M5-Period.h
new file mode 100644
index 0000000..9265658
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M5-Period.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M5_Period_H_
+#define _RANAP_M5_Period_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M5_Period {
+ RANAP_M5_Period_ms100 = 0,
+ RANAP_M5_Period_ms250 = 1,
+ RANAP_M5_Period_ms500 = 2,
+ RANAP_M5_Period_ms1000 = 3,
+ RANAP_M5_Period_ms2000 = 4,
+ RANAP_M5_Period_ms3000 = 5,
+ RANAP_M5_Period_ms4000 = 6,
+ RANAP_M5_Period_ms6000 = 7
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_M5_Period;
+
+/* RANAP_M5-Period */
+typedef long RANAP_M5_Period_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M5_Period;
+asn_struct_free_f RANAP_M5_Period_free;
+asn_struct_print_f RANAP_M5_Period_print;
+asn_constr_check_f RANAP_M5_Period_constraint;
+ber_type_decoder_f RANAP_M5_Period_decode_ber;
+der_type_encoder_f RANAP_M5_Period_encode_der;
+xer_type_decoder_f RANAP_M5_Period_decode_xer;
+xer_type_encoder_f RANAP_M5_Period_encode_xer;
+per_type_decoder_f RANAP_M5_Period_decode_uper;
+per_type_encoder_f RANAP_M5_Period_encode_uper;
+per_type_decoder_f RANAP_M5_Period_decode_aper;
+per_type_encoder_f RANAP_M5_Period_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M5_Period_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M5Report.h b/include/osmocom/ranap/RANAP_M5Report.h
new file mode 100644
index 0000000..1e20feb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M5Report.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M5Report_H_
+#define _RANAP_M5Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <osmocom/ranap/RANAP_M5-Period.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M5Report_PR {
+ RANAP_M5Report_PR_NOTHING, /* No components present */
+ RANAP_M5Report_PR_when_available,
+ RANAP_M5Report_PR_m5_period,
+ /* Extensions may appear below */
+
+} RANAP_M5Report_PR;
+
+/* RANAP_M5Report */
+typedef struct RANAP_M5Report {
+ RANAP_M5Report_PR present;
+ union RANAP_M5Report_u {
+ NULL_t when_available;
+ RANAP_M5_Period_t m5_period;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M5Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M5Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M5Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M6-Period.h b/include/osmocom/ranap/RANAP_M6-Period.h
new file mode 100644
index 0000000..90c8a84
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M6-Period.h
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M6_Period_H_
+#define _RANAP_M6_Period_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M6_Period {
+ RANAP_M6_Period_ms1000 = 0,
+ RANAP_M6_Period_ms2000 = 1,
+ RANAP_M6_Period_ms3000 = 2,
+ RANAP_M6_Period_ms4000 = 3,
+ RANAP_M6_Period_ms6000 = 4,
+ RANAP_M6_Period_ms8000 = 5,
+ RANAP_M6_Period_ms12000 = 6,
+ RANAP_M6_Period_ms16000 = 7,
+ RANAP_M6_Period_ms20000 = 8,
+ RANAP_M6_Period_ms24000 = 9,
+ RANAP_M6_Period_ms28000 = 10,
+ RANAP_M6_Period_ms32000 = 11,
+ RANAP_M6_Period_ms64000 = 12
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_M6_Period;
+
+/* RANAP_M6-Period */
+typedef long RANAP_M6_Period_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M6_Period;
+asn_struct_free_f RANAP_M6_Period_free;
+asn_struct_print_f RANAP_M6_Period_print;
+asn_constr_check_f RANAP_M6_Period_constraint;
+ber_type_decoder_f RANAP_M6_Period_decode_ber;
+der_type_encoder_f RANAP_M6_Period_encode_der;
+xer_type_decoder_f RANAP_M6_Period_decode_xer;
+xer_type_encoder_f RANAP_M6_Period_encode_xer;
+per_type_decoder_f RANAP_M6_Period_decode_uper;
+per_type_encoder_f RANAP_M6_Period_encode_uper;
+per_type_decoder_f RANAP_M6_Period_decode_aper;
+per_type_encoder_f RANAP_M6_Period_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M6_Period_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M6Report.h b/include/osmocom/ranap/RANAP_M6Report.h
new file mode 100644
index 0000000..46b8336
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M6Report.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M6Report_H_
+#define _RANAP_M6Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_M6-Period.h>
+#include <osmocom/ranap/RANAP_Links-to-log.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_M6Report */
+typedef struct RANAP_M6Report {
+ RANAP_M6_Period_t m6_period;
+ RANAP_Links_to_log_t m6_links_to_log;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M6Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M6Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M6Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M7-Period.h b/include/osmocom/ranap/RANAP_M7-Period.h
new file mode 100644
index 0000000..3fcf0aa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M7-Period.h
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M7_Period_H_
+#define _RANAP_M7_Period_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_M7_Period {
+ RANAP_M7_Period_ms1000 = 0,
+ RANAP_M7_Period_ms2000 = 1,
+ RANAP_M7_Period_ms3000 = 2,
+ RANAP_M7_Period_ms4000 = 3,
+ RANAP_M7_Period_ms6000 = 4,
+ RANAP_M7_Period_ms8000 = 5,
+ RANAP_M7_Period_ms12000 = 6,
+ RANAP_M7_Period_ms16000 = 7,
+ RANAP_M7_Period_ms20000 = 8,
+ RANAP_M7_Period_ms24000 = 9,
+ RANAP_M7_Period_ms28000 = 10,
+ RANAP_M7_Period_ms32000 = 11,
+ RANAP_M7_Period_ms64000 = 12
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_M7_Period;
+
+/* RANAP_M7-Period */
+typedef long RANAP_M7_Period_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M7_Period;
+asn_struct_free_f RANAP_M7_Period_free;
+asn_struct_print_f RANAP_M7_Period_print;
+asn_constr_check_f RANAP_M7_Period_constraint;
+ber_type_decoder_f RANAP_M7_Period_decode_ber;
+der_type_encoder_f RANAP_M7_Period_encode_der;
+xer_type_decoder_f RANAP_M7_Period_decode_xer;
+xer_type_encoder_f RANAP_M7_Period_encode_xer;
+per_type_decoder_f RANAP_M7_Period_decode_uper;
+per_type_encoder_f RANAP_M7_Period_encode_uper;
+per_type_decoder_f RANAP_M7_Period_decode_aper;
+per_type_encoder_f RANAP_M7_Period_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M7_Period_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_M7Report.h b/include/osmocom/ranap/RANAP_M7Report.h
new file mode 100644
index 0000000..e0587f5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_M7Report.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_M7Report_H_
+#define _RANAP_M7Report_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_M7-Period.h>
+#include <osmocom/ranap/RANAP_Links-to-log.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_M7Report */
+typedef struct RANAP_M7Report {
+ RANAP_M7_Period_t m7_period;
+ RANAP_Links_to_log_t m7_links_to_log;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_M7Report_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_M7Report;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_M7Report_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h b/include/osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h
new file mode 100644
index 0000000..cbc2654
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMS_PTP_RAB_ID_H_
+#define _RANAP_MBMS_PTP_RAB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMS-PTP-RAB-ID */
+typedef BIT_STRING_t RANAP_MBMS_PTP_RAB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMS_PTP_RAB_ID;
+asn_struct_free_f RANAP_MBMS_PTP_RAB_ID_free;
+asn_struct_print_f RANAP_MBMS_PTP_RAB_ID_print;
+asn_constr_check_f RANAP_MBMS_PTP_RAB_ID_constraint;
+ber_type_decoder_f RANAP_MBMS_PTP_RAB_ID_decode_ber;
+der_type_encoder_f RANAP_MBMS_PTP_RAB_ID_encode_der;
+xer_type_decoder_f RANAP_MBMS_PTP_RAB_ID_decode_xer;
+xer_type_encoder_f RANAP_MBMS_PTP_RAB_ID_encode_xer;
+per_type_decoder_f RANAP_MBMS_PTP_RAB_ID_decode_uper;
+per_type_encoder_f RANAP_MBMS_PTP_RAB_ID_encode_uper;
+per_type_decoder_f RANAP_MBMS_PTP_RAB_ID_decode_aper;
+per_type_encoder_f RANAP_MBMS_PTP_RAB_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMS_PTP_RAB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSBearerServiceType.h b/include/osmocom/ranap/RANAP_MBMSBearerServiceType.h
new file mode 100644
index 0000000..03f32f3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSBearerServiceType.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSBearerServiceType_H_
+#define _RANAP_MBMSBearerServiceType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSBearerServiceType {
+ RANAP_MBMSBearerServiceType_multicast = 0,
+ RANAP_MBMSBearerServiceType_broadcast = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSBearerServiceType;
+
+/* RANAP_MBMSBearerServiceType */
+typedef long RANAP_MBMSBearerServiceType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSBearerServiceType;
+asn_struct_free_f RANAP_MBMSBearerServiceType_free;
+asn_struct_print_f RANAP_MBMSBearerServiceType_print;
+asn_constr_check_f RANAP_MBMSBearerServiceType_constraint;
+ber_type_decoder_f RANAP_MBMSBearerServiceType_decode_ber;
+der_type_encoder_f RANAP_MBMSBearerServiceType_encode_der;
+xer_type_decoder_f RANAP_MBMSBearerServiceType_decode_xer;
+xer_type_encoder_f RANAP_MBMSBearerServiceType_encode_xer;
+per_type_decoder_f RANAP_MBMSBearerServiceType_decode_uper;
+per_type_encoder_f RANAP_MBMSBearerServiceType_encode_uper;
+per_type_decoder_f RANAP_MBMSBearerServiceType_decode_aper;
+per_type_encoder_f RANAP_MBMSBearerServiceType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSBearerServiceType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSCNDe-Registration.h b/include/osmocom/ranap/RANAP_MBMSCNDe-Registration.h
new file mode 100644
index 0000000..793e2f7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSCNDe-Registration.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSCNDe_Registration_H_
+#define _RANAP_MBMSCNDe_Registration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSCNDe_Registration {
+ RANAP_MBMSCNDe_Registration_normalsessionstop = 0,
+ RANAP_MBMSCNDe_Registration_deregister = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSCNDe_Registration;
+
+/* RANAP_MBMSCNDe-Registration */
+typedef long RANAP_MBMSCNDe_Registration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_Registration;
+asn_struct_free_f RANAP_MBMSCNDe_Registration_free;
+asn_struct_print_f RANAP_MBMSCNDe_Registration_print;
+asn_constr_check_f RANAP_MBMSCNDe_Registration_constraint;
+ber_type_decoder_f RANAP_MBMSCNDe_Registration_decode_ber;
+der_type_encoder_f RANAP_MBMSCNDe_Registration_encode_der;
+xer_type_decoder_f RANAP_MBMSCNDe_Registration_decode_xer;
+xer_type_encoder_f RANAP_MBMSCNDe_Registration_encode_xer;
+per_type_decoder_f RANAP_MBMSCNDe_Registration_decode_uper;
+per_type_encoder_f RANAP_MBMSCNDe_Registration_encode_uper;
+per_type_decoder_f RANAP_MBMSCNDe_Registration_decode_aper;
+per_type_encoder_f RANAP_MBMSCNDe_Registration_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSCNDe_Registration_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h b/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h
new file mode 100644
index 0000000..dfd1188
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSCNDe_RegistrationRequest_H_
+#define _RANAP_MBMSCNDe_RegistrationRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSCNDe-RegistrationRequest */
+typedef struct RANAP_MBMSCNDe_RegistrationRequest {
+ struct mbmscnDe_RegistrationRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmscnDe_RegistrationRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSCNDe_RegistrationRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_RegistrationRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSCNDe_RegistrationRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h b/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h
new file mode 100644
index 0000000..4c5d1ca
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSCNDe_RegistrationResponse_H_
+#define _RANAP_MBMSCNDe_RegistrationResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSCNDe-RegistrationResponse */
+typedef struct RANAP_MBMSCNDe_RegistrationResponse {
+ struct mbmscnDe_RegistrationResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmscnDe_RegistrationResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSCNDe_RegistrationResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_RegistrationResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSCNDe_RegistrationResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSCountingInformation.h b/include/osmocom/ranap/RANAP_MBMSCountingInformation.h
new file mode 100644
index 0000000..cb56317
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSCountingInformation.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSCountingInformation_H_
+#define _RANAP_MBMSCountingInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSCountingInformation {
+ RANAP_MBMSCountingInformation_counting = 0,
+ RANAP_MBMSCountingInformation_notcounting = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSCountingInformation;
+
+/* RANAP_MBMSCountingInformation */
+typedef long RANAP_MBMSCountingInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCountingInformation;
+asn_struct_free_f RANAP_MBMSCountingInformation_free;
+asn_struct_print_f RANAP_MBMSCountingInformation_print;
+asn_constr_check_f RANAP_MBMSCountingInformation_constraint;
+ber_type_decoder_f RANAP_MBMSCountingInformation_decode_ber;
+der_type_encoder_f RANAP_MBMSCountingInformation_encode_der;
+xer_type_decoder_f RANAP_MBMSCountingInformation_decode_xer;
+xer_type_encoder_f RANAP_MBMSCountingInformation_encode_xer;
+per_type_decoder_f RANAP_MBMSCountingInformation_decode_uper;
+per_type_encoder_f RANAP_MBMSCountingInformation_encode_uper;
+per_type_decoder_f RANAP_MBMSCountingInformation_decode_aper;
+per_type_encoder_f RANAP_MBMSCountingInformation_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSCountingInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSHCIndicator.h b/include/osmocom/ranap/RANAP_MBMSHCIndicator.h
new file mode 100644
index 0000000..71cdccc
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSHCIndicator.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSHCIndicator_H_
+#define _RANAP_MBMSHCIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSHCIndicator {
+ RANAP_MBMSHCIndicator_uncompressed_header = 0,
+ RANAP_MBMSHCIndicator_compressed_header = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSHCIndicator;
+
+/* RANAP_MBMSHCIndicator */
+typedef long RANAP_MBMSHCIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSHCIndicator;
+asn_struct_free_f RANAP_MBMSHCIndicator_free;
+asn_struct_print_f RANAP_MBMSHCIndicator_print;
+asn_constr_check_f RANAP_MBMSHCIndicator_constraint;
+ber_type_decoder_f RANAP_MBMSHCIndicator_decode_ber;
+der_type_encoder_f RANAP_MBMSHCIndicator_encode_der;
+xer_type_decoder_f RANAP_MBMSHCIndicator_decode_xer;
+xer_type_encoder_f RANAP_MBMSHCIndicator_encode_xer;
+per_type_decoder_f RANAP_MBMSHCIndicator_decode_uper;
+per_type_encoder_f RANAP_MBMSHCIndicator_encode_uper;
+per_type_decoder_f RANAP_MBMSHCIndicator_decode_aper;
+per_type_encoder_f RANAP_MBMSHCIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSHCIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h b/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h
new file mode 100644
index 0000000..329e54e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSIPMulticastAddressandAPNRequest_H_
+#define _RANAP_MBMSIPMulticastAddressandAPNRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSIPMulticastAddressandAPNRequest */
+typedef struct RANAP_MBMSIPMulticastAddressandAPNRequest {
+ A_SEQUENCE_OF(RANAP_TMGI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSIPMulticastAddressandAPNRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSIPMulticastAddressandAPNRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h b/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h
new file mode 100644
index 0000000..8dba5c2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSIPMulticastAddressandAPNlist_H_
+#define _RANAP_MBMSIPMulticastAddressandAPNlist_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <osmocom/ranap/RANAP_IPMulticastAddress.h>
+#include <osmocom/ranap/RANAP_APN.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSIPMulticastAddressandAPNlist */
+typedef struct RANAP_MBMSIPMulticastAddressandAPNlist {
+ RANAP_TMGI_t tMGI;
+ RANAP_IPMulticastAddress_t iPMulticastAddress;
+ RANAP_APN_t aPN;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSIPMulticastAddressandAPNlist_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSIPMulticastAddressandAPNlist_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSLinkingInformation.h b/include/osmocom/ranap/RANAP_MBMSLinkingInformation.h
new file mode 100644
index 0000000..8ce5bc2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSLinkingInformation.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSLinkingInformation_H_
+#define _RANAP_MBMSLinkingInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSLinkingInformation {
+ RANAP_MBMSLinkingInformation_uE_has_joined_multicast_services = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSLinkingInformation;
+
+/* RANAP_MBMSLinkingInformation */
+typedef long RANAP_MBMSLinkingInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSLinkingInformation;
+asn_struct_free_f RANAP_MBMSLinkingInformation_free;
+asn_struct_print_f RANAP_MBMSLinkingInformation_print;
+asn_constr_check_f RANAP_MBMSLinkingInformation_constraint;
+ber_type_decoder_f RANAP_MBMSLinkingInformation_decode_ber;
+der_type_encoder_f RANAP_MBMSLinkingInformation_encode_der;
+xer_type_decoder_f RANAP_MBMSLinkingInformation_decode_xer;
+xer_type_encoder_f RANAP_MBMSLinkingInformation_encode_xer;
+per_type_decoder_f RANAP_MBMSLinkingInformation_decode_uper;
+per_type_encoder_f RANAP_MBMSLinkingInformation_encode_uper;
+per_type_decoder_f RANAP_MBMSLinkingInformation_decode_aper;
+per_type_encoder_f RANAP_MBMSLinkingInformation_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSLinkingInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h b/include/osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h
new file mode 100644
index 0000000..80bacec
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRABEstablishmentIndication_H_
+#define _RANAP_MBMSRABEstablishmentIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRABEstablishmentIndication */
+typedef struct RANAP_MBMSRABEstablishmentIndication {
+ struct mbmsrabEstablishmentIndication_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsrabEstablishmentIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRABEstablishmentIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABEstablishmentIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRABEstablishmentIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRABRelease.h b/include/osmocom/ranap/RANAP_MBMSRABRelease.h
new file mode 100644
index 0000000..6f12d37
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRABRelease.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRABRelease_H_
+#define _RANAP_MBMSRABRelease_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRABRelease */
+typedef struct RANAP_MBMSRABRelease {
+ struct mbmsrabRelease_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsrabRelease_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRABRelease_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABRelease;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRABRelease_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRABReleaseFailure.h b/include/osmocom/ranap/RANAP_MBMSRABReleaseFailure.h
new file mode 100644
index 0000000..43d55ef
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRABReleaseFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRABReleaseFailure_H_
+#define _RANAP_MBMSRABReleaseFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRABReleaseFailure */
+typedef struct RANAP_MBMSRABReleaseFailure {
+ struct mbmsrabReleaseFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsrabReleaseFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRABReleaseFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABReleaseFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRABReleaseFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRABReleaseRequest.h b/include/osmocom/ranap/RANAP_MBMSRABReleaseRequest.h
new file mode 100644
index 0000000..369aee0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRABReleaseRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRABReleaseRequest_H_
+#define _RANAP_MBMSRABReleaseRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRABReleaseRequest */
+typedef struct RANAP_MBMSRABReleaseRequest {
+ struct mbmsrabReleaseRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsrabReleaseRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRABReleaseRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABReleaseRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRABReleaseRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRegistrationFailure.h b/include/osmocom/ranap/RANAP_MBMSRegistrationFailure.h
new file mode 100644
index 0000000..76e07d4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRegistrationFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRegistrationFailure_H_
+#define _RANAP_MBMSRegistrationFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRegistrationFailure */
+typedef struct RANAP_MBMSRegistrationFailure {
+ struct mbmsRegistrationFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsRegistrationFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRegistrationFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRegistrationFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRegistrationRequest.h b/include/osmocom/ranap/RANAP_MBMSRegistrationRequest.h
new file mode 100644
index 0000000..7db35d0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRegistrationRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRegistrationRequest_H_
+#define _RANAP_MBMSRegistrationRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRegistrationRequest */
+typedef struct RANAP_MBMSRegistrationRequest {
+ struct mbmsRegistrationRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsRegistrationRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRegistrationRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRegistrationRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRegistrationRequestType.h b/include/osmocom/ranap/RANAP_MBMSRegistrationRequestType.h
new file mode 100644
index 0000000..720b6a6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRegistrationRequestType.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSRegistrationRequestType_H_
+#define _RANAP_MBMSRegistrationRequestType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MBMSRegistrationRequestType {
+ RANAP_MBMSRegistrationRequestType_register = 0,
+ RANAP_MBMSRegistrationRequestType_deregister = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MBMSRegistrationRequestType;
+
+/* RANAP_MBMSRegistrationRequestType */
+typedef long RANAP_MBMSRegistrationRequestType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationRequestType;
+asn_struct_free_f RANAP_MBMSRegistrationRequestType_free;
+asn_struct_print_f RANAP_MBMSRegistrationRequestType_print;
+asn_constr_check_f RANAP_MBMSRegistrationRequestType_constraint;
+ber_type_decoder_f RANAP_MBMSRegistrationRequestType_decode_ber;
+der_type_encoder_f RANAP_MBMSRegistrationRequestType_encode_der;
+xer_type_decoder_f RANAP_MBMSRegistrationRequestType_decode_xer;
+xer_type_encoder_f RANAP_MBMSRegistrationRequestType_encode_xer;
+per_type_decoder_f RANAP_MBMSRegistrationRequestType_decode_uper;
+per_type_encoder_f RANAP_MBMSRegistrationRequestType_encode_uper;
+per_type_decoder_f RANAP_MBMSRegistrationRequestType_decode_aper;
+per_type_encoder_f RANAP_MBMSRegistrationRequestType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRegistrationRequestType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSRegistrationResponse.h b/include/osmocom/ranap/RANAP_MBMSRegistrationResponse.h
new file mode 100644
index 0000000..72bb393
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSRegistrationResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSRegistrationResponse_H_
+#define _RANAP_MBMSRegistrationResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSRegistrationResponse */
+typedef struct RANAP_MBMSRegistrationResponse {
+ struct mbmsRegistrationResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsRegistrationResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSRegistrationResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSRegistrationResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSServiceArea.h b/include/osmocom/ranap/RANAP_MBMSServiceArea.h
new file mode 100644
index 0000000..fe0b524
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSServiceArea.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSServiceArea_H_
+#define _RANAP_MBMSServiceArea_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSServiceArea */
+typedef OCTET_STRING_t RANAP_MBMSServiceArea_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSServiceArea;
+asn_struct_free_f RANAP_MBMSServiceArea_free;
+asn_struct_print_f RANAP_MBMSServiceArea_print;
+asn_constr_check_f RANAP_MBMSServiceArea_constraint;
+ber_type_decoder_f RANAP_MBMSServiceArea_decode_ber;
+der_type_encoder_f RANAP_MBMSServiceArea_encode_der;
+xer_type_decoder_f RANAP_MBMSServiceArea_decode_xer;
+xer_type_encoder_f RANAP_MBMSServiceArea_encode_xer;
+per_type_decoder_f RANAP_MBMSServiceArea_decode_uper;
+per_type_encoder_f RANAP_MBMSServiceArea_encode_uper;
+per_type_decoder_f RANAP_MBMSServiceArea_decode_aper;
+per_type_encoder_f RANAP_MBMSServiceArea_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSServiceArea_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionDuration.h b/include/osmocom/ranap/RANAP_MBMSSessionDuration.h
new file mode 100644
index 0000000..208da5f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionDuration.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionDuration_H_
+#define _RANAP_MBMSSessionDuration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionDuration */
+typedef OCTET_STRING_t RANAP_MBMSSessionDuration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionDuration;
+asn_struct_free_f RANAP_MBMSSessionDuration_free;
+asn_struct_print_f RANAP_MBMSSessionDuration_print;
+asn_constr_check_f RANAP_MBMSSessionDuration_constraint;
+ber_type_decoder_f RANAP_MBMSSessionDuration_decode_ber;
+der_type_encoder_f RANAP_MBMSSessionDuration_encode_der;
+xer_type_decoder_f RANAP_MBMSSessionDuration_decode_xer;
+xer_type_encoder_f RANAP_MBMSSessionDuration_encode_xer;
+per_type_decoder_f RANAP_MBMSSessionDuration_decode_uper;
+per_type_encoder_f RANAP_MBMSSessionDuration_encode_uper;
+per_type_decoder_f RANAP_MBMSSessionDuration_decode_aper;
+per_type_encoder_f RANAP_MBMSSessionDuration_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionDuration_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionIdentity.h b/include/osmocom/ranap/RANAP_MBMSSessionIdentity.h
new file mode 100644
index 0000000..f9d7892
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionIdentity.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionIdentity_H_
+#define _RANAP_MBMSSessionIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionIdentity */
+typedef OCTET_STRING_t RANAP_MBMSSessionIdentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionIdentity;
+asn_struct_free_f RANAP_MBMSSessionIdentity_free;
+asn_struct_print_f RANAP_MBMSSessionIdentity_print;
+asn_constr_check_f RANAP_MBMSSessionIdentity_constraint;
+ber_type_decoder_f RANAP_MBMSSessionIdentity_decode_ber;
+der_type_encoder_f RANAP_MBMSSessionIdentity_encode_der;
+xer_type_decoder_f RANAP_MBMSSessionIdentity_decode_xer;
+xer_type_encoder_f RANAP_MBMSSessionIdentity_encode_xer;
+per_type_decoder_f RANAP_MBMSSessionIdentity_decode_uper;
+per_type_encoder_f RANAP_MBMSSessionIdentity_encode_uper;
+per_type_decoder_f RANAP_MBMSSessionIdentity_decode_aper;
+per_type_encoder_f RANAP_MBMSSessionIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionIdentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h b/include/osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h
new file mode 100644
index 0000000..980c186
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionRepetitionNumber_H_
+#define _RANAP_MBMSSessionRepetitionNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionRepetitionNumber */
+typedef OCTET_STRING_t RANAP_MBMSSessionRepetitionNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionRepetitionNumber;
+asn_struct_free_f RANAP_MBMSSessionRepetitionNumber_free;
+asn_struct_print_f RANAP_MBMSSessionRepetitionNumber_print;
+asn_constr_check_f RANAP_MBMSSessionRepetitionNumber_constraint;
+ber_type_decoder_f RANAP_MBMSSessionRepetitionNumber_decode_ber;
+der_type_encoder_f RANAP_MBMSSessionRepetitionNumber_encode_der;
+xer_type_decoder_f RANAP_MBMSSessionRepetitionNumber_decode_xer;
+xer_type_encoder_f RANAP_MBMSSessionRepetitionNumber_encode_xer;
+per_type_decoder_f RANAP_MBMSSessionRepetitionNumber_decode_uper;
+per_type_encoder_f RANAP_MBMSSessionRepetitionNumber_encode_uper;
+per_type_decoder_f RANAP_MBMSSessionRepetitionNumber_decode_aper;
+per_type_encoder_f RANAP_MBMSSessionRepetitionNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionRepetitionNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionStart.h b/include/osmocom/ranap/RANAP_MBMSSessionStart.h
new file mode 100644
index 0000000..de6ccd7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionStart.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionStart_H_
+#define _RANAP_MBMSSessionStart_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionStart */
+typedef struct RANAP_MBMSSessionStart {
+ struct mbmsSessionStart_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionStart_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionStart_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStart;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionStart_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionStartFailure.h b/include/osmocom/ranap/RANAP_MBMSSessionStartFailure.h
new file mode 100644
index 0000000..ebae2d2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionStartFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionStartFailure_H_
+#define _RANAP_MBMSSessionStartFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionStartFailure */
+typedef struct RANAP_MBMSSessionStartFailure {
+ struct mbmsSessionStartFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionStartFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionStartFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStartFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionStartFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionStartResponse.h b/include/osmocom/ranap/RANAP_MBMSSessionStartResponse.h
new file mode 100644
index 0000000..4171e68
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionStartResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionStartResponse_H_
+#define _RANAP_MBMSSessionStartResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionStartResponse */
+typedef struct RANAP_MBMSSessionStartResponse {
+ struct mbmsSessionStartResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionStartResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionStartResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStartResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionStartResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionStop.h b/include/osmocom/ranap/RANAP_MBMSSessionStop.h
new file mode 100644
index 0000000..b5d3119
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionStop.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionStop_H_
+#define _RANAP_MBMSSessionStop_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionStop */
+typedef struct RANAP_MBMSSessionStop {
+ struct mbmsSessionStop_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionStop_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionStop_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStop;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionStop_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionStopResponse.h b/include/osmocom/ranap/RANAP_MBMSSessionStopResponse.h
new file mode 100644
index 0000000..0c0acd1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionStopResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionStopResponse_H_
+#define _RANAP_MBMSSessionStopResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionStopResponse */
+typedef struct RANAP_MBMSSessionStopResponse {
+ struct mbmsSessionStopResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionStopResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionStopResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStopResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionStopResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionUpdate.h b/include/osmocom/ranap/RANAP_MBMSSessionUpdate.h
new file mode 100644
index 0000000..58b3a98
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionUpdate.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionUpdate_H_
+#define _RANAP_MBMSSessionUpdate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionUpdate */
+typedef struct RANAP_MBMSSessionUpdate {
+ struct mbmsSessionUpdate_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionUpdate_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionUpdate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdate;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionUpdate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h b/include/osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h
new file mode 100644
index 0000000..16829b9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionUpdateFailure_H_
+#define _RANAP_MBMSSessionUpdateFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionUpdateFailure */
+typedef struct RANAP_MBMSSessionUpdateFailure {
+ struct mbmsSessionUpdateFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionUpdateFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionUpdateFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdateFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionUpdateFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h b/include/osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h
new file mode 100644
index 0000000..7736961
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSessionUpdateResponse_H_
+#define _RANAP_MBMSSessionUpdateResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSessionUpdateResponse */
+typedef struct RANAP_MBMSSessionUpdateResponse {
+ struct mbmsSessionUpdateResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsSessionUpdateResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSessionUpdateResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdateResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSessionUpdateResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSSynchronisationInformation.h b/include/osmocom/ranap/RANAP_MBMSSynchronisationInformation.h
new file mode 100644
index 0000000..66704f6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSSynchronisationInformation.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSSynchronisationInformation_H_
+#define _RANAP_MBMSSynchronisationInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MBMSHCIndicator.h>
+#include <osmocom/ranap/RANAP_IPMulticastAddress.h>
+#include <osmocom/ranap/RANAP_GTP-TEI.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSSynchronisationInformation */
+typedef struct RANAP_MBMSSynchronisationInformation {
+ RANAP_MBMSHCIndicator_t mBMSHCIndicator;
+ RANAP_IPMulticastAddress_t iPMulticastAddress;
+ RANAP_GTP_TEI_t gTPDLTEID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSSynchronisationInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSynchronisationInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSSynchronisationInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSUELinkingRequest.h b/include/osmocom/ranap/RANAP_MBMSUELinkingRequest.h
new file mode 100644
index 0000000..f1ea76a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSUELinkingRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSUELinkingRequest_H_
+#define _RANAP_MBMSUELinkingRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSUELinkingRequest */
+typedef struct RANAP_MBMSUELinkingRequest {
+ struct mbmsueLinkingRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsueLinkingRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSUELinkingRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSUELinkingRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSUELinkingRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MBMSUELinkingResponse.h b/include/osmocom/ranap/RANAP_MBMSUELinkingResponse.h
new file mode 100644
index 0000000..61e411f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MBMSUELinkingResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_MBMSUELinkingResponse_H_
+#define _RANAP_MBMSUELinkingResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MBMSUELinkingResponse */
+typedef struct RANAP_MBMSUELinkingResponse {
+ struct mbmsueLinkingResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } mbmsueLinkingResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MBMSUELinkingResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSUELinkingResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MBMSUELinkingResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDT-Activation.h b/include/osmocom/ranap/RANAP_MDT-Activation.h
new file mode 100644
index 0000000..d74a08a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDT-Activation.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDT_Activation_H_
+#define _RANAP_MDT_Activation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MDT_Activation {
+ RANAP_MDT_Activation_immediateMDTonly = 0,
+ RANAP_MDT_Activation_loggedMDTonly = 1,
+ RANAP_MDT_Activation_immediateMDTandTrace = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MDT_Activation;
+
+/* RANAP_MDT-Activation */
+typedef long RANAP_MDT_Activation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Activation;
+asn_struct_free_f RANAP_MDT_Activation_free;
+asn_struct_print_f RANAP_MDT_Activation_print;
+asn_constr_check_f RANAP_MDT_Activation_constraint;
+ber_type_decoder_f RANAP_MDT_Activation_decode_ber;
+der_type_encoder_f RANAP_MDT_Activation_encode_der;
+xer_type_decoder_f RANAP_MDT_Activation_decode_xer;
+xer_type_encoder_f RANAP_MDT_Activation_encode_xer;
+per_type_decoder_f RANAP_MDT_Activation_decode_uper;
+per_type_encoder_f RANAP_MDT_Activation_encode_uper;
+per_type_decoder_f RANAP_MDT_Activation_decode_aper;
+per_type_encoder_f RANAP_MDT_Activation_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDT_Activation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDT-Configuration.h b/include/osmocom/ranap/RANAP_MDT-Configuration.h
new file mode 100644
index 0000000..d2c980d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDT-Configuration.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDT_Configuration_H_
+#define _RANAP_MDT_Configuration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MDT-Activation.h>
+#include <osmocom/ranap/RANAP_MDTAreaScope.h>
+#include <osmocom/ranap/RANAP_MDTMode.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MDT-Configuration */
+typedef struct RANAP_MDT_Configuration {
+ RANAP_MDT_Activation_t mdtActivation;
+ RANAP_MDTAreaScope_t mdtAreaScope;
+ RANAP_MDTMode_t mdtMode;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MDT_Configuration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Configuration;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDT_Configuration_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDT-PLMN-List.h b/include/osmocom/ranap/RANAP_MDT-PLMN-List.h
new file mode 100644
index 0000000..8e9884c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDT-PLMN-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDT_PLMN_List_H_
+#define _RANAP_MDT_PLMN_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MDT-PLMN-List */
+typedef struct RANAP_MDT_PLMN_List {
+ A_SEQUENCE_OF(RANAP_PLMNidentity_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MDT_PLMN_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_PLMN_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDT_PLMN_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDT-Report-Parameters.h b/include/osmocom/ranap/RANAP_MDT-Report-Parameters.h
new file mode 100644
index 0000000..93a98a0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDT-Report-Parameters.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDT_Report_Parameters_H_
+#define _RANAP_MDT_Report_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ReportInterval.h>
+#include <osmocom/ranap/RANAP_ReportAmount.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MDT-Report-Parameters */
+typedef struct RANAP_MDT_Report_Parameters {
+ RANAP_ReportInterval_t reportInterval;
+ RANAP_ReportAmount_t reportAmount;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MDT_Report_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Report_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDT_Report_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDTAreaScope.h b/include/osmocom/ranap/RANAP_MDTAreaScope.h
new file mode 100644
index 0000000..ad94533
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDTAreaScope.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDTAreaScope_H_
+#define _RANAP_MDTAreaScope_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CellBased.h>
+#include <osmocom/ranap/RANAP_LABased.h>
+#include <osmocom/ranap/RANAP_RABased.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MDTAreaScope_PR {
+ RANAP_MDTAreaScope_PR_NOTHING, /* No components present */
+ RANAP_MDTAreaScope_PR_cellbased,
+ RANAP_MDTAreaScope_PR_labased,
+ RANAP_MDTAreaScope_PR_rabased,
+ RANAP_MDTAreaScope_PR_plmn_area_based,
+ /* Extensions may appear below */
+
+} RANAP_MDTAreaScope_PR;
+
+/* RANAP_MDTAreaScope */
+typedef struct RANAP_MDTAreaScope {
+ RANAP_MDTAreaScope_PR present;
+ union RANAP_MDTAreaScope_u {
+ RANAP_CellBased_t cellbased;
+ RANAP_LABased_t labased;
+ RANAP_RABased_t rabased;
+ NULL_t plmn_area_based;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MDTAreaScope_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDTAreaScope;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDTAreaScope_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MDTMode.h b/include/osmocom/ranap/RANAP_MDTMode.h
new file mode 100644
index 0000000..79f39f2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MDTMode.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MDTMode_H_
+#define _RANAP_MDTMode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ImmediateMDT.h>
+#include <osmocom/ranap/RANAP_LoggedMDT.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MDTMode_PR {
+ RANAP_MDTMode_PR_NOTHING, /* No components present */
+ RANAP_MDTMode_PR_immediateMDT,
+ RANAP_MDTMode_PR_loggedMDT,
+ /* Extensions may appear below */
+
+} RANAP_MDTMode_PR;
+
+/* RANAP_MDTMode */
+typedef struct RANAP_MDTMode {
+ RANAP_MDTMode_PR present;
+ union RANAP_MDTMode_u {
+ RANAP_ImmediateMDT_t immediateMDT;
+ RANAP_LoggedMDT_t loggedMDT;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MDTMode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MDTMode;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MDTMode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MSISDN.h b/include/osmocom/ranap/RANAP_MSISDN.h
new file mode 100644
index 0000000..5b248fb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MSISDN.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MSISDN_H_
+#define _RANAP_MSISDN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MSISDN */
+typedef OCTET_STRING_t RANAP_MSISDN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MSISDN;
+asn_struct_free_f RANAP_MSISDN_free;
+asn_struct_print_f RANAP_MSISDN_print;
+asn_constr_check_f RANAP_MSISDN_constraint;
+ber_type_decoder_f RANAP_MSISDN_decode_ber;
+der_type_encoder_f RANAP_MSISDN_encode_der;
+xer_type_decoder_f RANAP_MSISDN_decode_xer;
+xer_type_encoder_f RANAP_MSISDN_encode_xer;
+per_type_decoder_f RANAP_MSISDN_decode_uper;
+per_type_encoder_f RANAP_MSISDN_encode_uper;
+per_type_decoder_f RANAP_MSISDN_decode_aper;
+per_type_encoder_f RANAP_MSISDN_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MSISDN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h b/include/osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h
new file mode 100644
index 0000000..48ad306
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Management_Based_MDT_Allowed_H_
+#define _RANAP_Management_Based_MDT_Allowed_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Management_Based_MDT_Allowed {
+ RANAP_Management_Based_MDT_Allowed_allowed = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Management_Based_MDT_Allowed;
+
+/* RANAP_Management-Based-MDT-Allowed */
+typedef long RANAP_Management_Based_MDT_Allowed_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Management_Based_MDT_Allowed;
+asn_struct_free_f RANAP_Management_Based_MDT_Allowed_free;
+asn_struct_print_f RANAP_Management_Based_MDT_Allowed_print;
+asn_constr_check_f RANAP_Management_Based_MDT_Allowed_constraint;
+ber_type_decoder_f RANAP_Management_Based_MDT_Allowed_decode_ber;
+der_type_encoder_f RANAP_Management_Based_MDT_Allowed_encode_der;
+xer_type_decoder_f RANAP_Management_Based_MDT_Allowed_decode_xer;
+xer_type_encoder_f RANAP_Management_Based_MDT_Allowed_encode_xer;
+per_type_decoder_f RANAP_Management_Based_MDT_Allowed_decode_uper;
+per_type_encoder_f RANAP_Management_Based_MDT_Allowed_encode_uper;
+per_type_decoder_f RANAP_Management_Based_MDT_Allowed_decode_aper;
+per_type_encoder_f RANAP_Management_Based_MDT_Allowed_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Management_Based_MDT_Allowed_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MaxBitrate.h b/include/osmocom/ranap/RANAP_MaxBitrate.h
new file mode 100644
index 0000000..2dad1b6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MaxBitrate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MaxBitrate_H_
+#define _RANAP_MaxBitrate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MaxBitrate */
+typedef long RANAP_MaxBitrate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MaxBitrate;
+asn_struct_free_f RANAP_MaxBitrate_free;
+asn_struct_print_f RANAP_MaxBitrate_print;
+asn_constr_check_f RANAP_MaxBitrate_constraint;
+ber_type_decoder_f RANAP_MaxBitrate_decode_ber;
+der_type_encoder_f RANAP_MaxBitrate_encode_der;
+xer_type_decoder_f RANAP_MaxBitrate_decode_xer;
+xer_type_encoder_f RANAP_MaxBitrate_encode_xer;
+per_type_decoder_f RANAP_MaxBitrate_decode_uper;
+per_type_encoder_f RANAP_MaxBitrate_encode_uper;
+per_type_decoder_f RANAP_MaxBitrate_decode_aper;
+per_type_encoder_f RANAP_MaxBitrate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MaxBitrate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MaxSDU-Size.h b/include/osmocom/ranap/RANAP_MaxSDU-Size.h
new file mode 100644
index 0000000..cf680ba
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MaxSDU-Size.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MaxSDU_Size_H_
+#define _RANAP_MaxSDU_Size_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MaxSDU-Size */
+typedef long RANAP_MaxSDU_Size_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MaxSDU_Size;
+asn_struct_free_f RANAP_MaxSDU_Size_free;
+asn_struct_print_f RANAP_MaxSDU_Size_print;
+asn_constr_check_f RANAP_MaxSDU_Size_constraint;
+ber_type_decoder_f RANAP_MaxSDU_Size_decode_ber;
+der_type_encoder_f RANAP_MaxSDU_Size_encode_der;
+xer_type_decoder_f RANAP_MaxSDU_Size_decode_xer;
+xer_type_encoder_f RANAP_MaxSDU_Size_encode_xer;
+per_type_decoder_f RANAP_MaxSDU_Size_decode_uper;
+per_type_encoder_f RANAP_MaxSDU_Size_encode_uper;
+per_type_decoder_f RANAP_MaxSDU_Size_decode_aper;
+per_type_encoder_f RANAP_MaxSDU_Size_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MaxSDU_Size_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MeasBand.h b/include/osmocom/ranap/RANAP_MeasBand.h
new file mode 100644
index 0000000..580cd33
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MeasBand.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MeasBand_H_
+#define _RANAP_MeasBand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MeasBand {
+ RANAP_MeasBand_v6 = 0,
+ RANAP_MeasBand_v15 = 1,
+ RANAP_MeasBand_v25 = 2,
+ RANAP_MeasBand_v50 = 3,
+ RANAP_MeasBand_v75 = 4,
+ RANAP_MeasBand_v100 = 5
+} e_RANAP_MeasBand;
+
+/* RANAP_MeasBand */
+typedef long RANAP_MeasBand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MeasBand;
+asn_struct_free_f RANAP_MeasBand_free;
+asn_struct_print_f RANAP_MeasBand_print;
+asn_constr_check_f RANAP_MeasBand_constraint;
+ber_type_decoder_f RANAP_MeasBand_decode_ber;
+der_type_encoder_f RANAP_MeasBand_encode_der;
+xer_type_decoder_f RANAP_MeasBand_decode_xer;
+xer_type_encoder_f RANAP_MeasBand_encode_xer;
+per_type_decoder_f RANAP_MeasBand_decode_uper;
+per_type_encoder_f RANAP_MeasBand_encode_uper;
+per_type_decoder_f RANAP_MeasBand_decode_aper;
+per_type_encoder_f RANAP_MeasBand_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MeasBand_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MeasurementQuantity.h b/include/osmocom/ranap/RANAP_MeasurementQuantity.h
new file mode 100644
index 0000000..4685528
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MeasurementQuantity.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MeasurementQuantity_H_
+#define _RANAP_MeasurementQuantity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_MeasurementQuantity {
+ RANAP_MeasurementQuantity_cpichEcNo = 0,
+ RANAP_MeasurementQuantity_cpichRSCP = 1,
+ RANAP_MeasurementQuantity_pathloss = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_MeasurementQuantity;
+
+/* RANAP_MeasurementQuantity */
+typedef long RANAP_MeasurementQuantity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MeasurementQuantity;
+asn_struct_free_f RANAP_MeasurementQuantity_free;
+asn_struct_print_f RANAP_MeasurementQuantity_print;
+asn_constr_check_f RANAP_MeasurementQuantity_constraint;
+ber_type_decoder_f RANAP_MeasurementQuantity_decode_ber;
+der_type_encoder_f RANAP_MeasurementQuantity_encode_der;
+xer_type_decoder_f RANAP_MeasurementQuantity_decode_xer;
+xer_type_encoder_f RANAP_MeasurementQuantity_encode_xer;
+per_type_decoder_f RANAP_MeasurementQuantity_decode_uper;
+per_type_encoder_f RANAP_MeasurementQuantity_encode_uper;
+per_type_decoder_f RANAP_MeasurementQuantity_decode_aper;
+per_type_encoder_f RANAP_MeasurementQuantity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MeasurementQuantity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MeasurementsToActivate.h b/include/osmocom/ranap/RANAP_MeasurementsToActivate.h
new file mode 100644
index 0000000..b0c3695
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MeasurementsToActivate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MeasurementsToActivate_H_
+#define _RANAP_MeasurementsToActivate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MeasurementsToActivate */
+typedef BIT_STRING_t RANAP_MeasurementsToActivate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MeasurementsToActivate;
+asn_struct_free_f RANAP_MeasurementsToActivate_free;
+asn_struct_print_f RANAP_MeasurementsToActivate_print;
+asn_constr_check_f RANAP_MeasurementsToActivate_constraint;
+ber_type_decoder_f RANAP_MeasurementsToActivate_decode_ber;
+der_type_encoder_f RANAP_MeasurementsToActivate_encode_der;
+xer_type_decoder_f RANAP_MeasurementsToActivate_decode_xer;
+xer_type_encoder_f RANAP_MeasurementsToActivate_encode_xer;
+per_type_decoder_f RANAP_MeasurementsToActivate_decode_uper;
+per_type_encoder_f RANAP_MeasurementsToActivate_encode_uper;
+per_type_decoder_f RANAP_MeasurementsToActivate_decode_aper;
+per_type_encoder_f RANAP_MeasurementsToActivate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MeasurementsToActivate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_MessageStructure.h b/include/osmocom/ranap/RANAP_MessageStructure.h
new file mode 100644
index 0000000..f44d0b4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_MessageStructure.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_MessageStructure_H_
+#define _RANAP_MessageStructure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_RepetitionNumber1.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_MessageStructure */
+typedef struct RANAP_MessageStructure {
+ A_SEQUENCE_OF(struct MemberL {
+ RANAP_ProtocolIE_ID_t iE_ID;
+ RANAP_RepetitionNumber1_t *repetitionNumber /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_MessageStructure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_MessageStructure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_MessageStructure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NAS-PDU.h b/include/osmocom/ranap/RANAP_NAS-PDU.h
new file mode 100644
index 0000000..52a85ee
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NAS-PDU.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NAS_PDU_H_
+#define _RANAP_NAS_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NAS-PDU */
+typedef OCTET_STRING_t RANAP_NAS_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_PDU;
+asn_struct_free_f RANAP_NAS_PDU_free;
+asn_struct_print_f RANAP_NAS_PDU_print;
+asn_constr_check_f RANAP_NAS_PDU_constraint;
+ber_type_decoder_f RANAP_NAS_PDU_decode_ber;
+der_type_encoder_f RANAP_NAS_PDU_encode_der;
+xer_type_decoder_f RANAP_NAS_PDU_decode_xer;
+xer_type_encoder_f RANAP_NAS_PDU_encode_xer;
+per_type_decoder_f RANAP_NAS_PDU_decode_uper;
+per_type_encoder_f RANAP_NAS_PDU_encode_uper;
+per_type_decoder_f RANAP_NAS_PDU_decode_aper;
+per_type_encoder_f RANAP_NAS_PDU_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NAS_PDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NAS-SequenceNumber.h b/include/osmocom/ranap/RANAP_NAS-SequenceNumber.h
new file mode 100644
index 0000000..a394e2d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NAS-SequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NAS_SequenceNumber_H_
+#define _RANAP_NAS_SequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NAS-SequenceNumber */
+typedef BIT_STRING_t RANAP_NAS_SequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_SequenceNumber;
+asn_struct_free_f RANAP_NAS_SequenceNumber_free;
+asn_struct_print_f RANAP_NAS_SequenceNumber_print;
+asn_constr_check_f RANAP_NAS_SequenceNumber_constraint;
+ber_type_decoder_f RANAP_NAS_SequenceNumber_decode_ber;
+der_type_encoder_f RANAP_NAS_SequenceNumber_encode_der;
+xer_type_decoder_f RANAP_NAS_SequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_NAS_SequenceNumber_encode_xer;
+per_type_decoder_f RANAP_NAS_SequenceNumber_decode_uper;
+per_type_encoder_f RANAP_NAS_SequenceNumber_encode_uper;
+per_type_decoder_f RANAP_NAS_SequenceNumber_decode_aper;
+per_type_encoder_f RANAP_NAS_SequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NAS_SequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h b/include/osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h
new file mode 100644
index 0000000..dcd8856
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NAS_SynchronisationIndicator_H_
+#define _RANAP_NAS_SynchronisationIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NAS-SynchronisationIndicator */
+typedef BIT_STRING_t RANAP_NAS_SynchronisationIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_SynchronisationIndicator;
+asn_struct_free_f RANAP_NAS_SynchronisationIndicator_free;
+asn_struct_print_f RANAP_NAS_SynchronisationIndicator_print;
+asn_constr_check_f RANAP_NAS_SynchronisationIndicator_constraint;
+ber_type_decoder_f RANAP_NAS_SynchronisationIndicator_decode_ber;
+der_type_encoder_f RANAP_NAS_SynchronisationIndicator_encode_der;
+xer_type_decoder_f RANAP_NAS_SynchronisationIndicator_decode_xer;
+xer_type_encoder_f RANAP_NAS_SynchronisationIndicator_encode_xer;
+per_type_decoder_f RANAP_NAS_SynchronisationIndicator_decode_uper;
+per_type_encoder_f RANAP_NAS_SynchronisationIndicator_encode_uper;
+per_type_decoder_f RANAP_NAS_SynchronisationIndicator_decode_aper;
+per_type_encoder_f RANAP_NAS_SynchronisationIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NAS_SynchronisationIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NRTLoadInformationValue.h b/include/osmocom/ranap/RANAP_NRTLoadInformationValue.h
new file mode 100644
index 0000000..33db0a0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NRTLoadInformationValue.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NRTLoadInformationValue_H_
+#define _RANAP_NRTLoadInformationValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NRTLoadInformationValue */
+typedef long RANAP_NRTLoadInformationValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NRTLoadInformationValue;
+asn_struct_free_f RANAP_NRTLoadInformationValue_free;
+asn_struct_print_f RANAP_NRTLoadInformationValue_print;
+asn_constr_check_f RANAP_NRTLoadInformationValue_constraint;
+ber_type_decoder_f RANAP_NRTLoadInformationValue_decode_ber;
+der_type_encoder_f RANAP_NRTLoadInformationValue_encode_der;
+xer_type_decoder_f RANAP_NRTLoadInformationValue_decode_xer;
+xer_type_encoder_f RANAP_NRTLoadInformationValue_encode_xer;
+per_type_decoder_f RANAP_NRTLoadInformationValue_decode_uper;
+per_type_encoder_f RANAP_NRTLoadInformationValue_encode_uper;
+per_type_decoder_f RANAP_NRTLoadInformationValue_decode_aper;
+per_type_encoder_f RANAP_NRTLoadInformationValue_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NRTLoadInformationValue_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h b/include/osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h
new file mode 100644
index 0000000..13317df
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NewBSS_To_OldBSS_Information_H_
+#define _RANAP_NewBSS_To_OldBSS_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NewBSS-To-OldBSS-Information */
+typedef OCTET_STRING_t RANAP_NewBSS_To_OldBSS_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NewBSS_To_OldBSS_Information;
+asn_struct_free_f RANAP_NewBSS_To_OldBSS_Information_free;
+asn_struct_print_f RANAP_NewBSS_To_OldBSS_Information_print;
+asn_constr_check_f RANAP_NewBSS_To_OldBSS_Information_constraint;
+ber_type_decoder_f RANAP_NewBSS_To_OldBSS_Information_decode_ber;
+der_type_encoder_f RANAP_NewBSS_To_OldBSS_Information_encode_der;
+xer_type_decoder_f RANAP_NewBSS_To_OldBSS_Information_decode_xer;
+xer_type_encoder_f RANAP_NewBSS_To_OldBSS_Information_encode_xer;
+per_type_decoder_f RANAP_NewBSS_To_OldBSS_Information_decode_uper;
+per_type_encoder_f RANAP_NewBSS_To_OldBSS_Information_encode_uper;
+per_type_decoder_f RANAP_NewBSS_To_OldBSS_Information_decode_aper;
+per_type_encoder_f RANAP_NewBSS_To_OldBSS_Information_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NewBSS_To_OldBSS_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h b/include/osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h
new file mode 100644
index 0000000..384213c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NewRAListofIdleModeUEs_H_
+#define _RANAP_NewRAListofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NewRAListofIdleModeUEs */
+typedef struct RANAP_NewRAListofIdleModeUEs {
+ A_SEQUENCE_OF(RANAP_RAC_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_NewRAListofIdleModeUEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NewRAListofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NewRAListofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NonSearchingIndication.h b/include/osmocom/ranap/RANAP_NonSearchingIndication.h
new file mode 100644
index 0000000..ea8d8bd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NonSearchingIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NonSearchingIndication_H_
+#define _RANAP_NonSearchingIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_NonSearchingIndication {
+ RANAP_NonSearchingIndication_non_searching = 0,
+ RANAP_NonSearchingIndication_searching = 1
+} e_RANAP_NonSearchingIndication;
+
+/* RANAP_NonSearchingIndication */
+typedef long RANAP_NonSearchingIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NonSearchingIndication;
+asn_struct_free_f RANAP_NonSearchingIndication_free;
+asn_struct_print_f RANAP_NonSearchingIndication_print;
+asn_constr_check_f RANAP_NonSearchingIndication_constraint;
+ber_type_decoder_f RANAP_NonSearchingIndication_decode_ber;
+der_type_encoder_f RANAP_NonSearchingIndication_encode_der;
+xer_type_decoder_f RANAP_NonSearchingIndication_decode_xer;
+xer_type_encoder_f RANAP_NonSearchingIndication_encode_xer;
+per_type_decoder_f RANAP_NonSearchingIndication_decode_uper;
+per_type_encoder_f RANAP_NonSearchingIndication_encode_uper;
+per_type_decoder_f RANAP_NonSearchingIndication_decode_aper;
+per_type_encoder_f RANAP_NonSearchingIndication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NonSearchingIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h b/include/osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h
new file mode 100644
index 0000000..70e9005
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NotEmptyRAListofIdleModeUEs_H_
+#define _RANAP_NotEmptyRAListofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NotEmptyRAListofIdleModeUEs */
+typedef struct RANAP_NotEmptyRAListofIdleModeUEs {
+ RANAP_RAofIdleModeUEs_t rAofIdleModeUEs;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_NotEmptyRAListofIdleModeUEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NotEmptyRAListofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NumberOfIuInstances.h b/include/osmocom/ranap/RANAP_NumberOfIuInstances.h
new file mode 100644
index 0000000..c6c0ea3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NumberOfIuInstances.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NumberOfIuInstances_H_
+#define _RANAP_NumberOfIuInstances_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NumberOfIuInstances */
+typedef long RANAP_NumberOfIuInstances_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NumberOfIuInstances;
+asn_struct_free_f RANAP_NumberOfIuInstances_free;
+asn_struct_print_f RANAP_NumberOfIuInstances_print;
+asn_constr_check_f RANAP_NumberOfIuInstances_constraint;
+ber_type_decoder_f RANAP_NumberOfIuInstances_decode_ber;
+der_type_encoder_f RANAP_NumberOfIuInstances_encode_der;
+xer_type_decoder_f RANAP_NumberOfIuInstances_decode_xer;
+xer_type_encoder_f RANAP_NumberOfIuInstances_encode_xer;
+per_type_decoder_f RANAP_NumberOfIuInstances_decode_uper;
+per_type_encoder_f RANAP_NumberOfIuInstances_encode_uper;
+per_type_decoder_f RANAP_NumberOfIuInstances_decode_aper;
+per_type_encoder_f RANAP_NumberOfIuInstances_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NumberOfIuInstances_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_NumberOfSteps.h b/include/osmocom/ranap/RANAP_NumberOfSteps.h
new file mode 100644
index 0000000..5509f49
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_NumberOfSteps.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_NumberOfSteps_H_
+#define _RANAP_NumberOfSteps_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_NumberOfSteps */
+typedef long RANAP_NumberOfSteps_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_NumberOfSteps;
+asn_struct_free_f RANAP_NumberOfSteps_free;
+asn_struct_print_f RANAP_NumberOfSteps_print;
+asn_constr_check_f RANAP_NumberOfSteps_constraint;
+ber_type_decoder_f RANAP_NumberOfSteps_decode_ber;
+der_type_encoder_f RANAP_NumberOfSteps_encode_der;
+xer_type_decoder_f RANAP_NumberOfSteps_decode_xer;
+xer_type_encoder_f RANAP_NumberOfSteps_encode_xer;
+per_type_decoder_f RANAP_NumberOfSteps_decode_uper;
+per_type_encoder_f RANAP_NumberOfSteps_encode_uper;
+per_type_decoder_f RANAP_NumberOfSteps_decode_aper;
+per_type_encoder_f RANAP_NumberOfSteps_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_NumberOfSteps_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_OMC-ID.h b/include/osmocom/ranap/RANAP_OMC-ID.h
new file mode 100644
index 0000000..042875a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_OMC-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_OMC_ID_H_
+#define _RANAP_OMC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_OMC-ID */
+typedef OCTET_STRING_t RANAP_OMC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_OMC_ID;
+asn_struct_free_f RANAP_OMC_ID_free;
+asn_struct_print_f RANAP_OMC_ID_print;
+asn_constr_check_f RANAP_OMC_ID_constraint;
+ber_type_decoder_f RANAP_OMC_ID_decode_ber;
+der_type_encoder_f RANAP_OMC_ID_encode_der;
+xer_type_decoder_f RANAP_OMC_ID_decode_xer;
+xer_type_encoder_f RANAP_OMC_ID_encode_xer;
+per_type_decoder_f RANAP_OMC_ID_decode_uper;
+per_type_encoder_f RANAP_OMC_ID_encode_uper;
+per_type_decoder_f RANAP_OMC_ID_decode_aper;
+per_type_encoder_f RANAP_OMC_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_OMC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h
new file mode 100644
index 0000000..ba1bb02
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Offload_RAB_Parameters_APN_H_
+#define _RANAP_Offload_RAB_Parameters_APN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Offload-RAB-Parameters-APN */
+typedef OCTET_STRING_t RANAP_Offload_RAB_Parameters_APN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters_APN;
+asn_struct_free_f RANAP_Offload_RAB_Parameters_APN_free;
+asn_struct_print_f RANAP_Offload_RAB_Parameters_APN_print;
+asn_constr_check_f RANAP_Offload_RAB_Parameters_APN_constraint;
+ber_type_decoder_f RANAP_Offload_RAB_Parameters_APN_decode_ber;
+der_type_encoder_f RANAP_Offload_RAB_Parameters_APN_encode_der;
+xer_type_decoder_f RANAP_Offload_RAB_Parameters_APN_decode_xer;
+xer_type_encoder_f RANAP_Offload_RAB_Parameters_APN_encode_xer;
+per_type_decoder_f RANAP_Offload_RAB_Parameters_APN_decode_uper;
+per_type_encoder_f RANAP_Offload_RAB_Parameters_APN_encode_uper;
+per_type_decoder_f RANAP_Offload_RAB_Parameters_APN_decode_aper;
+per_type_encoder_f RANAP_Offload_RAB_Parameters_APN_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Offload_RAB_Parameters_APN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h
new file mode 100644
index 0000000..90a89ff
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Offload_RAB_Parameters_ChargingCharacteristics_H_
+#define _RANAP_Offload_RAB_Parameters_ChargingCharacteristics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Offload-RAB-Parameters-ChargingCharacteristics */
+typedef OCTET_STRING_t RANAP_Offload_RAB_Parameters_ChargingCharacteristics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics;
+asn_struct_free_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_free;
+asn_struct_print_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_print;
+asn_constr_check_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_constraint;
+ber_type_decoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_ber;
+der_type_encoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_der;
+xer_type_decoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_xer;
+xer_type_encoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_xer;
+per_type_decoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_uper;
+per_type_encoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_uper;
+per_type_decoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_aper;
+per_type_encoder_f RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Offload_RAB_Parameters_ChargingCharacteristics_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Offload-RAB-Parameters.h b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters.h
new file mode 100644
index 0000000..825bcf2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Offload-RAB-Parameters.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Offload_RAB_Parameters_H_
+#define _RANAP_Offload_RAB_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h>
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Offload-RAB-Parameters */
+typedef struct RANAP_Offload_RAB_Parameters {
+ RANAP_Offload_RAB_Parameters_APN_t accessPointName;
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_t chargingCharacteristics;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Offload_RAB_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Offload_RAB_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h b/include/osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h
new file mode 100644
index 0000000..f44e01c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_OldBSS_ToNewBSS_Information_H_
+#define _RANAP_OldBSS_ToNewBSS_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_OldBSS-ToNewBSS-Information */
+typedef OCTET_STRING_t RANAP_OldBSS_ToNewBSS_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_OldBSS_ToNewBSS_Information;
+asn_struct_free_f RANAP_OldBSS_ToNewBSS_Information_free;
+asn_struct_print_f RANAP_OldBSS_ToNewBSS_Information_print;
+asn_constr_check_f RANAP_OldBSS_ToNewBSS_Information_constraint;
+ber_type_decoder_f RANAP_OldBSS_ToNewBSS_Information_decode_ber;
+der_type_encoder_f RANAP_OldBSS_ToNewBSS_Information_encode_der;
+xer_type_decoder_f RANAP_OldBSS_ToNewBSS_Information_decode_xer;
+xer_type_encoder_f RANAP_OldBSS_ToNewBSS_Information_encode_xer;
+per_type_decoder_f RANAP_OldBSS_ToNewBSS_Information_decode_uper;
+per_type_encoder_f RANAP_OldBSS_ToNewBSS_Information_encode_uper;
+per_type_decoder_f RANAP_OldBSS_ToNewBSS_Information_decode_aper;
+per_type_encoder_f RANAP_OldBSS_ToNewBSS_Information_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_OldBSS_ToNewBSS_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Out-Of-UTRAN.h b/include/osmocom/ranap/RANAP_Out-Of-UTRAN.h
new file mode 100644
index 0000000..fefb72d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Out-Of-UTRAN.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Out_Of_UTRAN_H_
+#define _RANAP_Out_Of_UTRAN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Out_Of_UTRAN {
+ RANAP_Out_Of_UTRAN_cell_reselection_to_EUTRAN = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Out_Of_UTRAN;
+
+/* RANAP_Out-Of-UTRAN */
+typedef long RANAP_Out_Of_UTRAN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Out_Of_UTRAN;
+asn_struct_free_f RANAP_Out_Of_UTRAN_free;
+asn_struct_print_f RANAP_Out_Of_UTRAN_print;
+asn_constr_check_f RANAP_Out_Of_UTRAN_constraint;
+ber_type_decoder_f RANAP_Out_Of_UTRAN_decode_ber;
+der_type_encoder_f RANAP_Out_Of_UTRAN_encode_der;
+xer_type_decoder_f RANAP_Out_Of_UTRAN_decode_xer;
+xer_type_encoder_f RANAP_Out_Of_UTRAN_encode_xer;
+per_type_decoder_f RANAP_Out_Of_UTRAN_decode_uper;
+per_type_encoder_f RANAP_Out_Of_UTRAN_encode_uper;
+per_type_decoder_f RANAP_Out_Of_UTRAN_decode_aper;
+per_type_encoder_f RANAP_Out_Of_UTRAN_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Out_Of_UTRAN_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Outcome.h b/include/osmocom/ranap/RANAP_Outcome.h
new file mode 100644
index 0000000..ded1fe5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Outcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Outcome_H_
+#define _RANAP_Outcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Outcome */
+typedef struct RANAP_Outcome {
+ RANAP_ProcedureCode_t procedureCode;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Outcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Outcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Outcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Overload.h b/include/osmocom/ranap/RANAP_Overload.h
new file mode 100644
index 0000000..817d44c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Overload.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Overload_H_
+#define _RANAP_Overload_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Overload */
+typedef struct RANAP_Overload {
+ struct overload_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } overload_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Overload_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Overload;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Overload_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_P-TMSI.h b/include/osmocom/ranap/RANAP_P-TMSI.h
new file mode 100644
index 0000000..800a4e2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_P-TMSI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_P_TMSI_H_
+#define _RANAP_P_TMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_P-TMSI */
+typedef OCTET_STRING_t RANAP_P_TMSI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_P_TMSI;
+asn_struct_free_f RANAP_P_TMSI_free;
+asn_struct_print_f RANAP_P_TMSI_print;
+asn_constr_check_f RANAP_P_TMSI_constraint;
+ber_type_decoder_f RANAP_P_TMSI_decode_ber;
+der_type_encoder_f RANAP_P_TMSI_encode_der;
+xer_type_decoder_f RANAP_P_TMSI_decode_xer;
+xer_type_encoder_f RANAP_P_TMSI_encode_xer;
+per_type_decoder_f RANAP_P_TMSI_decode_uper;
+per_type_encoder_f RANAP_P_TMSI_encode_uper;
+per_type_decoder_f RANAP_P_TMSI_decode_aper;
+per_type_encoder_f RANAP_P_TMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_P_TMSI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PDP-Type-extension.h b/include/osmocom/ranap/RANAP_PDP-Type-extension.h
new file mode 100644
index 0000000..7f13a18
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PDP-Type-extension.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PDP_Type_extension_H_
+#define _RANAP_PDP_Type_extension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PDP_Type_extension {
+ RANAP_PDP_Type_extension_ipv4_and_ipv6 = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_PDP_Type_extension;
+
+/* RANAP_PDP-Type-extension */
+typedef long RANAP_PDP_Type_extension_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_Type_extension;
+asn_struct_free_f RANAP_PDP_Type_extension_free;
+asn_struct_print_f RANAP_PDP_Type_extension_print;
+asn_constr_check_f RANAP_PDP_Type_extension_constraint;
+ber_type_decoder_f RANAP_PDP_Type_extension_decode_ber;
+der_type_encoder_f RANAP_PDP_Type_extension_encode_der;
+xer_type_decoder_f RANAP_PDP_Type_extension_decode_xer;
+xer_type_encoder_f RANAP_PDP_Type_extension_encode_xer;
+per_type_decoder_f RANAP_PDP_Type_extension_decode_uper;
+per_type_encoder_f RANAP_PDP_Type_extension_encode_uper;
+per_type_decoder_f RANAP_PDP_Type_extension_decode_aper;
+per_type_encoder_f RANAP_PDP_Type_extension_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PDP_Type_extension_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PDP-Type.h b/include/osmocom/ranap/RANAP_PDP-Type.h
new file mode 100644
index 0000000..b1445a2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PDP-Type.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PDP_Type_H_
+#define _RANAP_PDP_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PDP_Type {
+ RANAP_PDP_Type_empty = 0,
+ RANAP_PDP_Type_ppp = 1,
+ RANAP_PDP_Type_osp_ihoss = 2,
+ RANAP_PDP_Type_ipv4 = 3,
+ RANAP_PDP_Type_ipv6 = 4
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_PDP_Type;
+
+/* RANAP_PDP-Type */
+typedef long RANAP_PDP_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_Type;
+asn_struct_free_f RANAP_PDP_Type_free;
+asn_struct_print_f RANAP_PDP_Type_print;
+asn_constr_check_f RANAP_PDP_Type_constraint;
+ber_type_decoder_f RANAP_PDP_Type_decode_ber;
+der_type_encoder_f RANAP_PDP_Type_encode_der;
+xer_type_decoder_f RANAP_PDP_Type_decode_xer;
+xer_type_encoder_f RANAP_PDP_Type_encode_xer;
+per_type_decoder_f RANAP_PDP_Type_decode_uper;
+per_type_encoder_f RANAP_PDP_Type_encode_uper;
+per_type_decoder_f RANAP_PDP_Type_decode_aper;
+per_type_encoder_f RANAP_PDP_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PDP_Type_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PDP-TypeInformation-extension.h b/include/osmocom/ranap/RANAP_PDP-TypeInformation-extension.h
new file mode 100644
index 0000000..3b7521d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PDP-TypeInformation-extension.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PDP_TypeInformation_extension_H_
+#define _RANAP_PDP_TypeInformation_extension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PDP-Type-extension.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PDP-TypeInformation-extension */
+typedef struct RANAP_PDP_TypeInformation_extension {
+ A_SEQUENCE_OF(RANAP_PDP_Type_extension_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PDP_TypeInformation_extension_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_TypeInformation_extension;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PDP_TypeInformation_extension_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PDP-TypeInformation.h b/include/osmocom/ranap/RANAP_PDP-TypeInformation.h
new file mode 100644
index 0000000..0c81cff
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PDP-TypeInformation.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PDP_TypeInformation_H_
+#define _RANAP_PDP_TypeInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PDP-Type.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PDP-TypeInformation */
+typedef struct RANAP_PDP_TypeInformation {
+ A_SEQUENCE_OF(RANAP_PDP_Type_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PDP_TypeInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_TypeInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PDP_TypeInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h b/include/osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h
new file mode 100644
index 0000000..52c678b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PDUType14FrameSequenceNumber_H_
+#define _RANAP_PDUType14FrameSequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PDUType14FrameSequenceNumber */
+typedef long RANAP_PDUType14FrameSequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PDUType14FrameSequenceNumber;
+asn_struct_free_f RANAP_PDUType14FrameSequenceNumber_free;
+asn_struct_print_f RANAP_PDUType14FrameSequenceNumber_print;
+asn_constr_check_f RANAP_PDUType14FrameSequenceNumber_constraint;
+ber_type_decoder_f RANAP_PDUType14FrameSequenceNumber_decode_ber;
+der_type_encoder_f RANAP_PDUType14FrameSequenceNumber_encode_der;
+xer_type_decoder_f RANAP_PDUType14FrameSequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_PDUType14FrameSequenceNumber_encode_xer;
+per_type_decoder_f RANAP_PDUType14FrameSequenceNumber_decode_uper;
+per_type_encoder_f RANAP_PDUType14FrameSequenceNumber_encode_uper;
+per_type_decoder_f RANAP_PDUType14FrameSequenceNumber_decode_aper;
+per_type_encoder_f RANAP_PDUType14FrameSequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PDUType14FrameSequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PLMNidentity.h b/include/osmocom/ranap/RANAP_PLMNidentity.h
new file mode 100644
index 0000000..e503804
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PLMNidentity.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+#include <constr_CHOICE.h>
+
+#ifndef _RANAP_PLMNidentity_H_
+#define _RANAP_PLMNidentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PLMNidentity */
+typedef OCTET_STRING_t RANAP_PLMNidentity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNidentity;
+asn_struct_free_f RANAP_PLMNidentity_free;
+asn_struct_print_f RANAP_PLMNidentity_print;
+asn_constr_check_f RANAP_PLMNidentity_constraint;
+ber_type_decoder_f RANAP_PLMNidentity_decode_ber;
+der_type_encoder_f RANAP_PLMNidentity_encode_der;
+xer_type_decoder_f RANAP_PLMNidentity_decode_xer;
+xer_type_encoder_f RANAP_PLMNidentity_encode_xer;
+per_type_decoder_f RANAP_PLMNidentity_decode_uper;
+per_type_encoder_f RANAP_PLMNidentity_encode_uper;
+per_type_decoder_f RANAP_PLMNidentity_decode_aper;
+per_type_encoder_f RANAP_PLMNidentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PLMNidentity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h b/include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h
new file mode 100644
index 0000000..d335490
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PLMNs-in-shared-network.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PLMNs_in_shared_network_H_
+#define _RANAP_PLMNs_in_shared_network_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_LA-LIST.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PLMNs-in-shared-network */
+typedef struct RANAP_PLMNs_in_shared_network {
+ A_SEQUENCE_OF(struct MemberM {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_LA_LIST_t lA_LIST;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PLMNs_in_shared_network_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNs_in_shared_network;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PLMNs_in_shared_network_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Paging.h b/include/osmocom/ranap/RANAP_Paging.h
new file mode 100644
index 0000000..cf96a39
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Paging.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Paging_H_
+#define _RANAP_Paging_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Paging */
+typedef struct RANAP_Paging {
+ struct paging_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } paging_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Paging_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Paging;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Paging_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PagingAreaID.h b/include/osmocom/ranap/RANAP_PagingAreaID.h
new file mode 100644
index 0000000..40ac1cb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PagingAreaID.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PagingAreaID_H_
+#define _RANAP_PagingAreaID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <osmocom/ranap/RANAP_RAI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PagingAreaID_PR {
+ RANAP_PagingAreaID_PR_NOTHING, /* No components present */
+ RANAP_PagingAreaID_PR_lAI,
+ RANAP_PagingAreaID_PR_rAI,
+ /* Extensions may appear below */
+
+} RANAP_PagingAreaID_PR;
+
+/* RANAP_PagingAreaID */
+typedef struct RANAP_PagingAreaID {
+ RANAP_PagingAreaID_PR present;
+ union RANAP_PagingAreaID_u {
+ RANAP_LAI_t lAI;
+ RANAP_RAI_t rAI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PagingAreaID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PagingAreaID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PagingAreaID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PagingCause.h b/include/osmocom/ranap/RANAP_PagingCause.h
new file mode 100644
index 0000000..cf9167b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PagingCause.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PagingCause_H_
+#define _RANAP_PagingCause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PagingCause {
+ RANAP_PagingCause_terminating_conversational_call = 0,
+ RANAP_PagingCause_terminating_streaming_call = 1,
+ RANAP_PagingCause_terminating_interactive_call = 2,
+ RANAP_PagingCause_terminating_background_call = 3,
+ RANAP_PagingCause_terminating_low_priority_signalling = 4,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_PagingCause_terminating_high_priority_signalling = 5
+} e_RANAP_PagingCause;
+
+/* RANAP_PagingCause */
+typedef long RANAP_PagingCause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PagingCause;
+asn_struct_free_f RANAP_PagingCause_free;
+asn_struct_print_f RANAP_PagingCause_print;
+asn_constr_check_f RANAP_PagingCause_constraint;
+ber_type_decoder_f RANAP_PagingCause_decode_ber;
+der_type_encoder_f RANAP_PagingCause_encode_der;
+xer_type_decoder_f RANAP_PagingCause_decode_xer;
+xer_type_encoder_f RANAP_PagingCause_encode_xer;
+per_type_decoder_f RANAP_PagingCause_decode_uper;
+per_type_encoder_f RANAP_PagingCause_encode_uper;
+per_type_decoder_f RANAP_PagingCause_decode_aper;
+per_type_encoder_f RANAP_PagingCause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PagingCause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PeriodicLocationInfo.h b/include/osmocom/ranap/RANAP_PeriodicLocationInfo.h
new file mode 100644
index 0000000..358ee7f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PeriodicLocationInfo.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PeriodicLocationInfo_H_
+#define _RANAP_PeriodicLocationInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PeriodicLocationInfo */
+typedef struct RANAP_PeriodicLocationInfo {
+ long reportingAmount;
+ long reportingInterval;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PeriodicLocationInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PeriodicLocationInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PeriodicLocationInfo_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PeriodicReportingIndicator.h b/include/osmocom/ranap/RANAP_PeriodicReportingIndicator.h
new file mode 100644
index 0000000..6b4bf5f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PeriodicReportingIndicator.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PeriodicReportingIndicator_H_
+#define _RANAP_PeriodicReportingIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PeriodicReportingIndicator {
+ RANAP_PeriodicReportingIndicator_periodicSAI = 0,
+ RANAP_PeriodicReportingIndicator_periodicGeo = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_PeriodicReportingIndicator;
+
+/* RANAP_PeriodicReportingIndicator */
+typedef long RANAP_PeriodicReportingIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PeriodicReportingIndicator;
+asn_struct_free_f RANAP_PeriodicReportingIndicator_free;
+asn_struct_print_f RANAP_PeriodicReportingIndicator_print;
+asn_constr_check_f RANAP_PeriodicReportingIndicator_constraint;
+ber_type_decoder_f RANAP_PeriodicReportingIndicator_decode_ber;
+der_type_encoder_f RANAP_PeriodicReportingIndicator_encode_der;
+xer_type_decoder_f RANAP_PeriodicReportingIndicator_decode_xer;
+xer_type_encoder_f RANAP_PeriodicReportingIndicator_encode_xer;
+per_type_decoder_f RANAP_PeriodicReportingIndicator_decode_uper;
+per_type_encoder_f RANAP_PeriodicReportingIndicator_encode_uper;
+per_type_decoder_f RANAP_PeriodicReportingIndicator_decode_aper;
+per_type_encoder_f RANAP_PeriodicReportingIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PeriodicReportingIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PermanentNAS-UE-ID.h b/include/osmocom/ranap/RANAP_PermanentNAS-UE-ID.h
new file mode 100644
index 0000000..7292f28
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PermanentNAS-UE-ID.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PermanentNAS_UE_ID_H_
+#define _RANAP_PermanentNAS_UE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMSI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PermanentNAS_UE_ID_PR {
+ RANAP_PermanentNAS_UE_ID_PR_NOTHING, /* No components present */
+ RANAP_PermanentNAS_UE_ID_PR_iMSI,
+ /* Extensions may appear below */
+
+} RANAP_PermanentNAS_UE_ID_PR;
+
+/* RANAP_PermanentNAS-UE-ID */
+typedef struct RANAP_PermanentNAS_UE_ID {
+ RANAP_PermanentNAS_UE_ID_PR present;
+ union RANAP_PermanentNAS_UE_ID_u {
+ RANAP_IMSI_t iMSI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PermanentNAS_UE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PermanentNAS_UE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PermanentNAS_UE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h b/include/osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h
new file mode 100644
index 0000000..062182f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PermittedEncryptionAlgorithms_H_
+#define _RANAP_PermittedEncryptionAlgorithms_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_EncryptionAlgorithm.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PermittedEncryptionAlgorithms */
+typedef struct RANAP_PermittedEncryptionAlgorithms {
+ A_SEQUENCE_OF(RANAP_EncryptionAlgorithm_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PermittedEncryptionAlgorithms_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PermittedEncryptionAlgorithms;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PermittedEncryptionAlgorithms_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h b/include/osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h
new file mode 100644
index 0000000..22d87f4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PermittedIntegrityProtectionAlgorithms_H_
+#define _RANAP_PermittedIntegrityProtectionAlgorithms_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PermittedIntegrityProtectionAlgorithms */
+typedef struct RANAP_PermittedIntegrityProtectionAlgorithms {
+ A_SEQUENCE_OF(RANAP_IntegrityProtectionAlgorithm_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PermittedIntegrityProtectionAlgorithms_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PermittedIntegrityProtectionAlgorithms_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Port-Number.h b/include/osmocom/ranap/RANAP_Port-Number.h
new file mode 100644
index 0000000..3e64495
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Port-Number.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Port_Number_H_
+#define _RANAP_Port_Number_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Port-Number */
+typedef OCTET_STRING_t RANAP_Port_Number_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Port_Number;
+asn_struct_free_f RANAP_Port_Number_free;
+asn_struct_print_f RANAP_Port_Number_print;
+asn_constr_check_f RANAP_Port_Number_constraint;
+ber_type_decoder_f RANAP_Port_Number_decode_ber;
+der_type_encoder_f RANAP_Port_Number_encode_der;
+xer_type_decoder_f RANAP_Port_Number_decode_xer;
+xer_type_encoder_f RANAP_Port_Number_encode_xer;
+per_type_decoder_f RANAP_Port_Number_decode_uper;
+per_type_encoder_f RANAP_Port_Number_encode_uper;
+per_type_decoder_f RANAP_Port_Number_decode_aper;
+per_type_encoder_f RANAP_Port_Number_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Port_Number_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositionData.h b/include/osmocom/ranap/RANAP_PositionData.h
new file mode 100644
index 0000000..a1365c2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositionData.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositionData_H_
+#define _RANAP_PositionData_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PositioningDataDiscriminator.h>
+#include <osmocom/ranap/RANAP_PositioningDataSet.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PositionData */
+typedef struct RANAP_PositionData {
+ RANAP_PositioningDataDiscriminator_t positioningDataDiscriminator;
+ RANAP_PositioningDataSet_t *positioningDataSet /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PositionData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositionData;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositionData_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h b/include/osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h
new file mode 100644
index 0000000..e0692d6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositionDataSpecificToGERANIuMode_H_
+#define _RANAP_PositionDataSpecificToGERANIuMode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PositionDataSpecificToGERANIuMode */
+typedef OCTET_STRING_t RANAP_PositionDataSpecificToGERANIuMode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositionDataSpecificToGERANIuMode;
+asn_struct_free_f RANAP_PositionDataSpecificToGERANIuMode_free;
+asn_struct_print_f RANAP_PositionDataSpecificToGERANIuMode_print;
+asn_constr_check_f RANAP_PositionDataSpecificToGERANIuMode_constraint;
+ber_type_decoder_f RANAP_PositionDataSpecificToGERANIuMode_decode_ber;
+der_type_encoder_f RANAP_PositionDataSpecificToGERANIuMode_encode_der;
+xer_type_decoder_f RANAP_PositionDataSpecificToGERANIuMode_decode_xer;
+xer_type_encoder_f RANAP_PositionDataSpecificToGERANIuMode_encode_xer;
+per_type_decoder_f RANAP_PositionDataSpecificToGERANIuMode_decode_uper;
+per_type_encoder_f RANAP_PositionDataSpecificToGERANIuMode_encode_uper;
+per_type_decoder_f RANAP_PositionDataSpecificToGERANIuMode_decode_aper;
+per_type_encoder_f RANAP_PositionDataSpecificToGERANIuMode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositionDataSpecificToGERANIuMode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositioningDataDiscriminator.h b/include/osmocom/ranap/RANAP_PositioningDataDiscriminator.h
new file mode 100644
index 0000000..8e9da75
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositioningDataDiscriminator.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositioningDataDiscriminator_H_
+#define _RANAP_PositioningDataDiscriminator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PositioningDataDiscriminator */
+typedef BIT_STRING_t RANAP_PositioningDataDiscriminator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningDataDiscriminator;
+asn_struct_free_f RANAP_PositioningDataDiscriminator_free;
+asn_struct_print_f RANAP_PositioningDataDiscriminator_print;
+asn_constr_check_f RANAP_PositioningDataDiscriminator_constraint;
+ber_type_decoder_f RANAP_PositioningDataDiscriminator_decode_ber;
+der_type_encoder_f RANAP_PositioningDataDiscriminator_encode_der;
+xer_type_decoder_f RANAP_PositioningDataDiscriminator_decode_xer;
+xer_type_encoder_f RANAP_PositioningDataDiscriminator_encode_xer;
+per_type_decoder_f RANAP_PositioningDataDiscriminator_decode_uper;
+per_type_encoder_f RANAP_PositioningDataDiscriminator_encode_uper;
+per_type_decoder_f RANAP_PositioningDataDiscriminator_decode_aper;
+per_type_encoder_f RANAP_PositioningDataDiscriminator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositioningDataDiscriminator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositioningDataSet.h b/include/osmocom/ranap/RANAP_PositioningDataSet.h
new file mode 100644
index 0000000..7b6372b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositioningDataSet.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositioningDataSet_H_
+#define _RANAP_PositioningDataSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PositioningMethodAndUsage.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PositioningDataSet */
+typedef struct RANAP_PositioningDataSet {
+ A_SEQUENCE_OF(RANAP_PositioningMethodAndUsage_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PositioningDataSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningDataSet;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositioningDataSet_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositioningMethodAndUsage.h b/include/osmocom/ranap/RANAP_PositioningMethodAndUsage.h
new file mode 100644
index 0000000..f8306f9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositioningMethodAndUsage.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositioningMethodAndUsage_H_
+#define _RANAP_PositioningMethodAndUsage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PositioningMethodAndUsage */
+typedef OCTET_STRING_t RANAP_PositioningMethodAndUsage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningMethodAndUsage;
+asn_struct_free_f RANAP_PositioningMethodAndUsage_free;
+asn_struct_print_f RANAP_PositioningMethodAndUsage_print;
+asn_constr_check_f RANAP_PositioningMethodAndUsage_constraint;
+ber_type_decoder_f RANAP_PositioningMethodAndUsage_decode_ber;
+der_type_encoder_f RANAP_PositioningMethodAndUsage_encode_der;
+xer_type_decoder_f RANAP_PositioningMethodAndUsage_decode_xer;
+xer_type_encoder_f RANAP_PositioningMethodAndUsage_encode_xer;
+per_type_decoder_f RANAP_PositioningMethodAndUsage_decode_uper;
+per_type_encoder_f RANAP_PositioningMethodAndUsage_encode_uper;
+per_type_decoder_f RANAP_PositioningMethodAndUsage_decode_aper;
+per_type_encoder_f RANAP_PositioningMethodAndUsage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositioningMethodAndUsage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PositioningPriority.h b/include/osmocom/ranap/RANAP_PositioningPriority.h
new file mode 100644
index 0000000..673c475
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PositioningPriority.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PositioningPriority_H_
+#define _RANAP_PositioningPriority_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PositioningPriority {
+ RANAP_PositioningPriority_high_Priority = 0,
+ RANAP_PositioningPriority_normal_Priority = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_PositioningPriority;
+
+/* RANAP_PositioningPriority */
+typedef long RANAP_PositioningPriority_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningPriority;
+asn_struct_free_f RANAP_PositioningPriority_free;
+asn_struct_print_f RANAP_PositioningPriority_print;
+asn_constr_check_f RANAP_PositioningPriority_constraint;
+ber_type_decoder_f RANAP_PositioningPriority_decode_ber;
+der_type_encoder_f RANAP_PositioningPriority_encode_der;
+xer_type_decoder_f RANAP_PositioningPriority_decode_xer;
+xer_type_encoder_f RANAP_PositioningPriority_encode_xer;
+per_type_decoder_f RANAP_PositioningPriority_decode_uper;
+per_type_encoder_f RANAP_PositioningPriority_encode_uper;
+per_type_decoder_f RANAP_PositioningPriority_decode_aper;
+per_type_encoder_f RANAP_PositioningPriority_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PositioningPriority_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Pre-emptionCapability.h b/include/osmocom/ranap/RANAP_Pre-emptionCapability.h
new file mode 100644
index 0000000..7bcdc26
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Pre-emptionCapability.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Pre_emptionCapability_H_
+#define _RANAP_Pre_emptionCapability_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Pre_emptionCapability {
+ RANAP_Pre_emptionCapability_shall_not_trigger_pre_emption = 0,
+ RANAP_Pre_emptionCapability_may_trigger_pre_emption = 1
+} e_RANAP_Pre_emptionCapability;
+
+/* RANAP_Pre-emptionCapability */
+typedef long RANAP_Pre_emptionCapability_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Pre_emptionCapability;
+asn_struct_free_f RANAP_Pre_emptionCapability_free;
+asn_struct_print_f RANAP_Pre_emptionCapability_print;
+asn_constr_check_f RANAP_Pre_emptionCapability_constraint;
+ber_type_decoder_f RANAP_Pre_emptionCapability_decode_ber;
+der_type_encoder_f RANAP_Pre_emptionCapability_encode_der;
+xer_type_decoder_f RANAP_Pre_emptionCapability_decode_xer;
+xer_type_encoder_f RANAP_Pre_emptionCapability_encode_xer;
+per_type_decoder_f RANAP_Pre_emptionCapability_decode_uper;
+per_type_encoder_f RANAP_Pre_emptionCapability_encode_uper;
+per_type_decoder_f RANAP_Pre_emptionCapability_decode_aper;
+per_type_encoder_f RANAP_Pre_emptionCapability_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Pre_emptionCapability_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Pre-emptionVulnerability.h b/include/osmocom/ranap/RANAP_Pre-emptionVulnerability.h
new file mode 100644
index 0000000..d8ec7ee
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Pre-emptionVulnerability.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Pre_emptionVulnerability_H_
+#define _RANAP_Pre_emptionVulnerability_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Pre_emptionVulnerability {
+ RANAP_Pre_emptionVulnerability_not_pre_emptable = 0,
+ RANAP_Pre_emptionVulnerability_pre_emptable = 1
+} e_RANAP_Pre_emptionVulnerability;
+
+/* RANAP_Pre-emptionVulnerability */
+typedef long RANAP_Pre_emptionVulnerability_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Pre_emptionVulnerability;
+asn_struct_free_f RANAP_Pre_emptionVulnerability_free;
+asn_struct_print_f RANAP_Pre_emptionVulnerability_print;
+asn_constr_check_f RANAP_Pre_emptionVulnerability_constraint;
+ber_type_decoder_f RANAP_Pre_emptionVulnerability_decode_ber;
+der_type_encoder_f RANAP_Pre_emptionVulnerability_encode_der;
+xer_type_decoder_f RANAP_Pre_emptionVulnerability_decode_xer;
+xer_type_encoder_f RANAP_Pre_emptionVulnerability_encode_xer;
+per_type_decoder_f RANAP_Pre_emptionVulnerability_decode_uper;
+per_type_encoder_f RANAP_Pre_emptionVulnerability_encode_uper;
+per_type_decoder_f RANAP_Pre_emptionVulnerability_decode_aper;
+per_type_encoder_f RANAP_Pre_emptionVulnerability_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Pre_emptionVulnerability_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Presence.h b/include/osmocom/ranap/RANAP_Presence.h
new file mode 100644
index 0000000..ee14482
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Presence.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_Presence_H_
+#define _RANAP_Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Presence {
+ RANAP_Presence_optional = 0,
+ RANAP_Presence_conditional = 1,
+ RANAP_Presence_mandatory = 2
+} e_RANAP_Presence;
+
+/* RANAP_Presence */
+typedef long RANAP_Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Presence;
+asn_struct_free_f RANAP_Presence_free;
+asn_struct_print_f RANAP_Presence_print;
+asn_constr_check_f RANAP_Presence_constraint;
+ber_type_decoder_f RANAP_Presence_decode_ber;
+der_type_encoder_f RANAP_Presence_encode_der;
+xer_type_decoder_f RANAP_Presence_decode_xer;
+xer_type_encoder_f RANAP_Presence_encode_xer;
+per_type_decoder_f RANAP_Presence_decode_uper;
+per_type_encoder_f RANAP_Presence_encode_uper;
+per_type_decoder_f RANAP_Presence_decode_aper;
+per_type_encoder_f RANAP_Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Presence_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Priority-Class-Indicator.h b/include/osmocom/ranap/RANAP_Priority-Class-Indicator.h
new file mode 100644
index 0000000..932cd87
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Priority-Class-Indicator.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Priority_Class_Indicator_H_
+#define _RANAP_Priority_Class_Indicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Priority-Class-Indicator */
+typedef BIT_STRING_t RANAP_Priority_Class_Indicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Priority_Class_Indicator;
+asn_struct_free_f RANAP_Priority_Class_Indicator_free;
+asn_struct_print_f RANAP_Priority_Class_Indicator_print;
+asn_constr_check_f RANAP_Priority_Class_Indicator_constraint;
+ber_type_decoder_f RANAP_Priority_Class_Indicator_decode_ber;
+der_type_encoder_f RANAP_Priority_Class_Indicator_encode_der;
+xer_type_decoder_f RANAP_Priority_Class_Indicator_decode_xer;
+xer_type_encoder_f RANAP_Priority_Class_Indicator_encode_xer;
+per_type_decoder_f RANAP_Priority_Class_Indicator_decode_uper;
+per_type_encoder_f RANAP_Priority_Class_Indicator_encode_uper;
+per_type_decoder_f RANAP_Priority_Class_Indicator_decode_aper;
+per_type_encoder_f RANAP_Priority_Class_Indicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Priority_Class_Indicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PriorityLevel.h b/include/osmocom/ranap/RANAP_PriorityLevel.h
new file mode 100644
index 0000000..75bc5d7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PriorityLevel.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_PriorityLevel_H_
+#define _RANAP_PriorityLevel_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PriorityLevel {
+ RANAP_PriorityLevel_spare = 0,
+ RANAP_PriorityLevel_highest = 1,
+ RANAP_PriorityLevel_lowest = 14,
+ RANAP_PriorityLevel_no_priority = 15
+} e_RANAP_PriorityLevel;
+
+/* RANAP_PriorityLevel */
+typedef long RANAP_PriorityLevel_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PriorityLevel;
+asn_struct_free_f RANAP_PriorityLevel_free;
+asn_struct_print_f RANAP_PriorityLevel_print;
+asn_constr_check_f RANAP_PriorityLevel_constraint;
+ber_type_decoder_f RANAP_PriorityLevel_decode_ber;
+der_type_encoder_f RANAP_PriorityLevel_encode_der;
+xer_type_decoder_f RANAP_PriorityLevel_decode_xer;
+xer_type_encoder_f RANAP_PriorityLevel_encode_xer;
+per_type_decoder_f RANAP_PriorityLevel_decode_uper;
+per_type_encoder_f RANAP_PriorityLevel_encode_uper;
+per_type_decoder_f RANAP_PriorityLevel_decode_aper;
+per_type_encoder_f RANAP_PriorityLevel_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PriorityLevel_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PrivateIE-ID.h b/include/osmocom/ranap/RANAP_PrivateIE-ID.h
new file mode 100644
index 0000000..59a28de
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PrivateIE-ID.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_PrivateIE_ID_H_
+#define _RANAP_PrivateIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <OBJECT_IDENTIFIER.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_PrivateIE_ID_PR {
+ RANAP_PrivateIE_ID_PR_NOTHING, /* No components present */
+ RANAP_PrivateIE_ID_PR_local,
+ RANAP_PrivateIE_ID_PR_global
+} RANAP_PrivateIE_ID_PR;
+
+/* RANAP_PrivateIE-ID */
+typedef struct RANAP_PrivateIE_ID {
+ RANAP_PrivateIE_ID_PR present;
+ union RANAP_PrivateIE_ID_u {
+ long local;
+ OBJECT_IDENTIFIER_t global;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PrivateIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PrivateIE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PrivateIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_PrivateMessage.h b/include/osmocom/ranap/RANAP_PrivateMessage.h
new file mode 100644
index 0000000..a783e37
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_PrivateMessage.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_PrivateMessage_H_
+#define _RANAP_PrivateMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_PrivateMessage */
+typedef struct RANAP_PrivateMessage {
+ struct privateMessage_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } privateMessage_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_PrivateMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_PrivateMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_PrivateMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProcedureCode.h b/include/osmocom/ranap/RANAP_ProcedureCode.h
new file mode 100644
index 0000000..9a7763c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProcedureCode.h
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_ProcedureCode_H_
+#define _RANAP_ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ProcedureCode {
+ RANAP_ProcedureCode_id_RAB_Assignment = 0,
+ RANAP_ProcedureCode_id_Iu_Release = 1,
+ RANAP_ProcedureCode_id_RelocationPreparation = 2,
+ RANAP_ProcedureCode_id_RelocationResourceAllocation = 3,
+ RANAP_ProcedureCode_id_RelocationCancel = 4,
+ RANAP_ProcedureCode_id_SRNS_ContextTransfer = 5,
+ RANAP_ProcedureCode_id_SecurityModeControl = 6,
+ RANAP_ProcedureCode_id_DataVolumeReport = 7,
+ RANAP_ProcedureCode_id_Reset = 9,
+ RANAP_ProcedureCode_id_RAB_ReleaseRequest = 10,
+ RANAP_ProcedureCode_id_Iu_ReleaseRequest = 11,
+ RANAP_ProcedureCode_id_RelocationDetect = 12,
+ RANAP_ProcedureCode_id_RelocationComplete = 13,
+ RANAP_ProcedureCode_id_Paging = 14,
+ RANAP_ProcedureCode_id_CommonID = 15,
+ RANAP_ProcedureCode_id_CN_InvokeTrace = 16,
+ RANAP_ProcedureCode_id_LocationReportingControl = 17,
+ RANAP_ProcedureCode_id_LocationReport = 18,
+ RANAP_ProcedureCode_id_InitialUE_Message = 19,
+ RANAP_ProcedureCode_id_DirectTransfer = 20,
+ RANAP_ProcedureCode_id_OverloadControl = 21,
+ RANAP_ProcedureCode_id_ErrorIndication = 22,
+ RANAP_ProcedureCode_id_SRNS_DataForward = 23,
+ RANAP_ProcedureCode_id_ForwardSRNS_Context = 24,
+ RANAP_ProcedureCode_id_privateMessage = 25,
+ RANAP_ProcedureCode_id_CN_DeactivateTrace = 26,
+ RANAP_ProcedureCode_id_ResetResource = 27,
+ RANAP_ProcedureCode_id_RANAP_Relocation = 28,
+ RANAP_ProcedureCode_id_RAB_ModifyRequest = 29,
+ RANAP_ProcedureCode_id_LocationRelatedData = 30,
+ RANAP_ProcedureCode_id_InformationTransfer = 31,
+ RANAP_ProcedureCode_id_UESpecificInformation = 32,
+ RANAP_ProcedureCode_id_UplinkInformationExchange = 33,
+ RANAP_ProcedureCode_id_DirectInformationTransfer = 34,
+ RANAP_ProcedureCode_id_MBMSSessionStart = 35,
+ RANAP_ProcedureCode_id_MBMSSessionUpdate = 36,
+ RANAP_ProcedureCode_id_MBMSSessionStop = 37,
+ RANAP_ProcedureCode_id_MBMSUELinking = 38,
+ RANAP_ProcedureCode_id_MBMSRegistration = 39,
+ RANAP_ProcedureCode_id_MBMSCNDe_Registration_Procedure = 40,
+ RANAP_ProcedureCode_id_MBMSRABEstablishmentIndication = 41,
+ RANAP_ProcedureCode_id_MBMSRABRelease = 42,
+ RANAP_ProcedureCode_id_enhancedRelocationComplete = 43,
+ RANAP_ProcedureCode_id_enhancedRelocationCompleteConfirm = 44,
+ RANAP_ProcedureCode_id_RANAPenhancedRelocation = 45,
+ RANAP_ProcedureCode_id_SRVCCPreparation = 46,
+ RANAP_ProcedureCode_id_UeRadioCapabilityMatch = 47
+} e_RANAP_ProcedureCode;
+
+/* RANAP_ProcedureCode */
+typedef long RANAP_ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProcedureCode;
+asn_struct_free_f RANAP_ProcedureCode_free;
+asn_struct_print_f RANAP_ProcedureCode_print;
+asn_constr_check_f RANAP_ProcedureCode_constraint;
+ber_type_decoder_f RANAP_ProcedureCode_decode_ber;
+der_type_encoder_f RANAP_ProcedureCode_encode_der;
+xer_type_decoder_f RANAP_ProcedureCode_decode_xer;
+xer_type_encoder_f RANAP_ProcedureCode_encode_xer;
+per_type_decoder_f RANAP_ProcedureCode_decode_uper;
+per_type_encoder_f RANAP_ProcedureCode_encode_uper;
+per_type_decoder_f RANAP_ProcedureCode_decode_aper;
+per_type_encoder_f RANAP_ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h b/include/osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h
new file mode 100644
index 0000000..3090462
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolError_IE_ContainerList_H_
+#define _RANAP_ProtocolError_IE_ContainerList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolError-IE-ContainerList */
+typedef struct RANAP_ProtocolError_IE_ContainerList {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_Container_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolError_IE_ContainerList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolError_IE_ContainerList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolError_IE_ContainerList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolExtensionContainer.h b/include/osmocom/ranap/RANAP_ProtocolExtensionContainer.h
new file mode 100644
index 0000000..ce7e39a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolExtensionContainer.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolExtensionContainer_H_
+#define _RANAP_ProtocolExtensionContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolExtensionField.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolExtensionContainer */
+typedef struct RANAP_ProtocolExtensionContainer {
+ A_SEQUENCE_OF(RANAP_ProtocolExtensionField_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolExtensionContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionContainer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolExtensionContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolExtensionField.h b/include/osmocom/ranap/RANAP_ProtocolExtensionField.h
new file mode 100644
index 0000000..110eeae
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolExtensionField.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolExtensionField_H_
+#define _RANAP_ProtocolExtensionField_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolExtensionField */
+typedef struct RANAP_ProtocolExtensionField {
+ RANAP_ProtocolIE_ID_t id;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolExtensionField_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionField;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolExtensionField_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolExtensionID.h b/include/osmocom/ranap/RANAP_ProtocolExtensionID.h
new file mode 100644
index 0000000..83c5226
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolExtensionID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_ProtocolExtensionID_H_
+#define _RANAP_ProtocolExtensionID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolExtensionID */
+typedef long RANAP_ProtocolExtensionID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionID;
+asn_struct_free_f RANAP_ProtocolExtensionID_free;
+asn_struct_print_f RANAP_ProtocolExtensionID_print;
+asn_constr_check_f RANAP_ProtocolExtensionID_constraint;
+ber_type_decoder_f RANAP_ProtocolExtensionID_decode_ber;
+der_type_encoder_f RANAP_ProtocolExtensionID_encode_der;
+xer_type_decoder_f RANAP_ProtocolExtensionID_decode_xer;
+xer_type_encoder_f RANAP_ProtocolExtensionID_encode_xer;
+per_type_decoder_f RANAP_ProtocolExtensionID_decode_uper;
+per_type_encoder_f RANAP_ProtocolExtensionID_encode_uper;
+per_type_decoder_f RANAP_ProtocolExtensionID_decode_aper;
+per_type_encoder_f RANAP_ProtocolExtensionID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolExtensionID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolIE-Container.h b/include/osmocom/ranap/RANAP_ProtocolIE-Container.h
new file mode 100644
index 0000000..4987e62
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolIE-Container.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolIE_Container_H_
+#define _RANAP_ProtocolIE_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolIE-Container */
+typedef struct RANAP_ProtocolIE_Container {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolIE_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_Container;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolIE_Container_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h b/include/osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h
new file mode 100644
index 0000000..79d0676
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolIE_ContainerPair_H_
+#define _RANAP_ProtocolIE_ContainerPair_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-FieldPair.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolIE-ContainerPair */
+typedef struct RANAP_ProtocolIE_ContainerPair {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_FieldPair_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolIE_ContainerPair_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_ContainerPair;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolIE_ContainerPair_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolIE-FieldPair.h b/include/osmocom/ranap/RANAP_ProtocolIE-FieldPair.h
new file mode 100644
index 0000000..0b5e3e0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolIE-FieldPair.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ProtocolIE_FieldPair_H_
+#define _RANAP_ProtocolIE_FieldPair_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ProtocolIE-FieldPair */
+typedef struct RANAP_ProtocolIE_FieldPair {
+ RANAP_ProtocolIE_ID_t id;
+ RANAP_Criticality_t firstCriticality;
+ ANY_t firstValue;
+ RANAP_Criticality_t secondCriticality;
+ ANY_t secondValue;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProtocolIE_FieldPair_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_FieldPair;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolIE_FieldPair_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProtocolIE-ID.h b/include/osmocom/ranap/RANAP_ProtocolIE-ID.h
new file mode 100644
index 0000000..9dbbc03
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProtocolIE-ID.h
@@ -0,0 +1,318 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_ProtocolIE_ID_H_
+#define _RANAP_ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ProtocolIE_ID {
+ RANAP_ProtocolIE_ID_id_AreaIdentity = 0,
+ RANAP_ProtocolIE_ID_id_CN_DomainIndicator = 3,
+ RANAP_ProtocolIE_ID_id_Cause = 4,
+ RANAP_ProtocolIE_ID_id_ChosenEncryptionAlgorithm = 5,
+ RANAP_ProtocolIE_ID_id_ChosenIntegrityProtectionAlgorithm = 6,
+ RANAP_ProtocolIE_ID_id_ClassmarkInformation2 = 7,
+ RANAP_ProtocolIE_ID_id_ClassmarkInformation3 = 8,
+ RANAP_ProtocolIE_ID_id_CriticalityDiagnostics = 9,
+ RANAP_ProtocolIE_ID_id_DL_GTP_PDU_SequenceNumber = 10,
+ RANAP_ProtocolIE_ID_id_EncryptionInformation = 11,
+ RANAP_ProtocolIE_ID_id_IntegrityProtectionInformation = 12,
+ RANAP_ProtocolIE_ID_id_IuTransportAssociation = 13,
+ RANAP_ProtocolIE_ID_id_L3_Information = 14,
+ RANAP_ProtocolIE_ID_id_LAI = 15,
+ RANAP_ProtocolIE_ID_id_NAS_PDU = 16,
+ RANAP_ProtocolIE_ID_id_NonSearchingIndication = 17,
+ RANAP_ProtocolIE_ID_id_NumberOfSteps = 18,
+ RANAP_ProtocolIE_ID_id_OMC_ID = 19,
+ RANAP_ProtocolIE_ID_id_OldBSS_ToNewBSS_Information = 20,
+ RANAP_ProtocolIE_ID_id_PagingAreaID = 21,
+ RANAP_ProtocolIE_ID_id_PagingCause = 22,
+ RANAP_ProtocolIE_ID_id_PermanentNAS_UE_ID = 23,
+ RANAP_ProtocolIE_ID_id_RAB_ContextItem = 24,
+ RANAP_ProtocolIE_ID_id_RAB_ContextList = 25,
+ RANAP_ProtocolIE_ID_id_RAB_DataForwardingItem = 26,
+ RANAP_ProtocolIE_ID_id_RAB_DataForwardingItem_SRNS_CtxReq = 27,
+ RANAP_ProtocolIE_ID_id_RAB_DataForwardingList = 28,
+ RANAP_ProtocolIE_ID_id_RAB_DataForwardingList_SRNS_CtxReq = 29,
+ RANAP_ProtocolIE_ID_id_RAB_DataVolumeReportItem = 30,
+ RANAP_ProtocolIE_ID_id_RAB_DataVolumeReportList = 31,
+ RANAP_ProtocolIE_ID_id_RAB_DataVolumeReportRequestItem = 32,
+ RANAP_ProtocolIE_ID_id_RAB_DataVolumeReportRequestList = 33,
+ RANAP_ProtocolIE_ID_id_RAB_FailedItem = 34,
+ RANAP_ProtocolIE_ID_id_RAB_FailedList = 35,
+ RANAP_ProtocolIE_ID_id_RAB_ID = 36,
+ RANAP_ProtocolIE_ID_id_RAB_QueuedItem = 37,
+ RANAP_ProtocolIE_ID_id_RAB_QueuedList = 38,
+ RANAP_ProtocolIE_ID_id_RAB_ReleaseFailedList = 39,
+ RANAP_ProtocolIE_ID_id_RAB_ReleaseItem = 40,
+ RANAP_ProtocolIE_ID_id_RAB_ReleaseList = 41,
+ RANAP_ProtocolIE_ID_id_RAB_ReleasedItem = 42,
+ RANAP_ProtocolIE_ID_id_RAB_ReleasedList = 43,
+ RANAP_ProtocolIE_ID_id_RAB_ReleasedList_IuRelComp = 44,
+ RANAP_ProtocolIE_ID_id_RAB_RelocationReleaseItem = 45,
+ RANAP_ProtocolIE_ID_id_RAB_RelocationReleaseList = 46,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_RelocReq = 47,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_RelocReqAck = 48,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_RelocReq = 49,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_RelocReqAck = 50,
+ RANAP_ProtocolIE_ID_id_RAB_SetupOrModifiedItem = 51,
+ RANAP_ProtocolIE_ID_id_RAB_SetupOrModifiedList = 52,
+ RANAP_ProtocolIE_ID_id_RAB_SetupOrModifyItem = 53,
+ RANAP_ProtocolIE_ID_id_RAB_SetupOrModifyList = 54,
+ RANAP_ProtocolIE_ID_id_RAC = 55,
+ RANAP_ProtocolIE_ID_id_RelocationType = 56,
+ RANAP_ProtocolIE_ID_id_RequestType = 57,
+ RANAP_ProtocolIE_ID_id_SAI = 58,
+ RANAP_ProtocolIE_ID_id_SAPI = 59,
+ RANAP_ProtocolIE_ID_id_SourceID = 60,
+ RANAP_ProtocolIE_ID_id_Source_ToTarget_TransparentContainer = 61,
+ RANAP_ProtocolIE_ID_id_TargetID = 62,
+ RANAP_ProtocolIE_ID_id_Target_ToSource_TransparentContainer = 63,
+ RANAP_ProtocolIE_ID_id_TemporaryUE_ID = 64,
+ RANAP_ProtocolIE_ID_id_TraceReference = 65,
+ RANAP_ProtocolIE_ID_id_TraceType = 66,
+ RANAP_ProtocolIE_ID_id_TransportLayerAddress = 67,
+ RANAP_ProtocolIE_ID_id_TriggerID = 68,
+ RANAP_ProtocolIE_ID_id_UE_ID = 69,
+ RANAP_ProtocolIE_ID_id_UL_GTP_PDU_SequenceNumber = 70,
+ RANAP_ProtocolIE_ID_id_RAB_FailedtoReportItem = 71,
+ RANAP_ProtocolIE_ID_id_RAB_FailedtoReportList = 72,
+ RANAP_ProtocolIE_ID_id_KeyStatus = 75,
+ RANAP_ProtocolIE_ID_id_DRX_CycleLengthCoefficient = 76,
+ RANAP_ProtocolIE_ID_id_IuSigConIdList = 77,
+ RANAP_ProtocolIE_ID_id_IuSigConIdItem = 78,
+ RANAP_ProtocolIE_ID_id_IuSigConId = 79,
+ RANAP_ProtocolIE_ID_id_DirectTransferInformationItem_RANAP_RelocInf = 80,
+ RANAP_ProtocolIE_ID_id_DirectTransferInformationList_RANAP_RelocInf = 81,
+ RANAP_ProtocolIE_ID_id_RAB_ContextItem_RANAP_RelocInf = 82,
+ RANAP_ProtocolIE_ID_id_RAB_ContextList_RANAP_RelocInf = 83,
+ RANAP_ProtocolIE_ID_id_RAB_ContextFailedtoTransferItem = 84,
+ RANAP_ProtocolIE_ID_id_RAB_ContextFailedtoTransferList = 85,
+ RANAP_ProtocolIE_ID_id_GlobalRNC_ID = 86,
+ RANAP_ProtocolIE_ID_id_RAB_ReleasedItem_IuRelComp = 87,
+ RANAP_ProtocolIE_ID_id_MessageStructure = 88,
+ RANAP_ProtocolIE_ID_id_Alt_RAB_Parameters = 89,
+ RANAP_ProtocolIE_ID_id_Ass_RAB_Parameters = 90,
+ RANAP_ProtocolIE_ID_id_RAB_ModifyList = 91,
+ RANAP_ProtocolIE_ID_id_RAB_ModifyItem = 92,
+ RANAP_ProtocolIE_ID_id_TypeOfError = 93,
+ RANAP_ProtocolIE_ID_id_BroadcastAssistanceDataDecipheringKeys = 94,
+ RANAP_ProtocolIE_ID_id_LocationRelatedDataRequestType = 95,
+ RANAP_ProtocolIE_ID_id_GlobalCN_ID = 96,
+ RANAP_ProtocolIE_ID_id_LastKnownServiceArea = 97,
+ RANAP_ProtocolIE_ID_id_SRB_TrCH_Mapping = 98,
+ RANAP_ProtocolIE_ID_id_InterSystemInformation_TransparentContainer = 99,
+ RANAP_ProtocolIE_ID_id_NewBSS_To_OldBSS_Information = 100,
+ RANAP_ProtocolIE_ID_id_SourceRNC_PDCP_context_info = 103,
+ RANAP_ProtocolIE_ID_id_InformationTransferID = 104,
+ RANAP_ProtocolIE_ID_id_SNA_Access_Information = 105,
+ RANAP_ProtocolIE_ID_id_ProvidedData = 106,
+ RANAP_ProtocolIE_ID_id_GERAN_BSC_Container = 107,
+ RANAP_ProtocolIE_ID_id_GERAN_Classmark = 108,
+ RANAP_ProtocolIE_ID_id_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item = 109,
+ RANAP_ProtocolIE_ID_id_GERAN_Iumode_RAB_FailedList_RABAssgntResponse = 110,
+ RANAP_ProtocolIE_ID_id_VerticalAccuracyCode = 111,
+ RANAP_ProtocolIE_ID_id_ResponseTime = 112,
+ RANAP_ProtocolIE_ID_id_PositioningPriority = 113,
+ RANAP_ProtocolIE_ID_id_ClientType = 114,
+ RANAP_ProtocolIE_ID_id_LocationRelatedDataRequestTypeSpecificToGERANIuMode = 115,
+ RANAP_ProtocolIE_ID_id_SignallingIndication = 116,
+ RANAP_ProtocolIE_ID_id_hS_DSCH_MAC_d_Flow_ID = 117,
+ RANAP_ProtocolIE_ID_id_UESBI_Iu = 118,
+ RANAP_ProtocolIE_ID_id_PositionData = 119,
+ RANAP_ProtocolIE_ID_id_PositionDataSpecificToGERANIuMode = 120,
+ RANAP_ProtocolIE_ID_id_CellLoadInformationGroup = 121,
+ RANAP_ProtocolIE_ID_id_AccuracyFulfilmentIndicator = 122,
+ RANAP_ProtocolIE_ID_id_InformationTransferType = 123,
+ RANAP_ProtocolIE_ID_id_TraceRecordingSessionInformation = 124,
+ RANAP_ProtocolIE_ID_id_TracePropagationParameters = 125,
+ RANAP_ProtocolIE_ID_id_InterSystemInformationTransferType = 126,
+ RANAP_ProtocolIE_ID_id_SelectedPLMN_ID = 127,
+ RANAP_ProtocolIE_ID_id_RedirectionCompleted = 128,
+ RANAP_ProtocolIE_ID_id_RedirectionIndication = 129,
+ RANAP_ProtocolIE_ID_id_NAS_SequenceNumber = 130,
+ RANAP_ProtocolIE_ID_id_RejectCauseValue = 131,
+ RANAP_ProtocolIE_ID_id_APN = 132,
+ RANAP_ProtocolIE_ID_id_CNMBMSLinkingInformation = 133,
+ RANAP_ProtocolIE_ID_id_DeltaRAListofIdleModeUEs = 134,
+ RANAP_ProtocolIE_ID_id_FrequenceLayerConvergenceFlag = 135,
+ RANAP_ProtocolIE_ID_id_InformationExchangeID = 136,
+ RANAP_ProtocolIE_ID_id_InformationExchangeType = 137,
+ RANAP_ProtocolIE_ID_id_InformationRequested = 138,
+ RANAP_ProtocolIE_ID_id_InformationRequestType = 139,
+ RANAP_ProtocolIE_ID_id_IPMulticastAddress = 140,
+ RANAP_ProtocolIE_ID_id_JoinedMBMSBearerServicesList = 141,
+ RANAP_ProtocolIE_ID_id_LeftMBMSBearerServicesList = 142,
+ RANAP_ProtocolIE_ID_id_MBMSBearerServiceType = 143,
+ RANAP_ProtocolIE_ID_id_MBMSCNDe_Registration = 144,
+ RANAP_ProtocolIE_ID_id_MBMSServiceArea = 145,
+ RANAP_ProtocolIE_ID_id_MBMSSessionDuration = 146,
+ RANAP_ProtocolIE_ID_id_MBMSSessionIdentity = 147,
+ RANAP_ProtocolIE_ID_id_PDP_TypeInformation = 148,
+ RANAP_ProtocolIE_ID_id_RAB_Parameters = 149,
+ RANAP_ProtocolIE_ID_id_RAListofIdleModeUEs = 150,
+ RANAP_ProtocolIE_ID_id_MBMSRegistrationRequestType = 151,
+ RANAP_ProtocolIE_ID_id_SessionUpdateID = 152,
+ RANAP_ProtocolIE_ID_id_TMGI = 153,
+ RANAP_ProtocolIE_ID_id_TransportLayerInformation = 154,
+ RANAP_ProtocolIE_ID_id_UnsuccessfulLinkingList = 155,
+ RANAP_ProtocolIE_ID_id_MBMSLinkingInformation = 156,
+ RANAP_ProtocolIE_ID_id_MBMSSessionRepetitionNumber = 157,
+ RANAP_ProtocolIE_ID_id_AlternativeRABConfiguration = 158,
+ RANAP_ProtocolIE_ID_id_AlternativeRABConfigurationRequest = 159,
+ RANAP_ProtocolIE_ID_id_E_DCH_MAC_d_Flow_ID = 160,
+ RANAP_ProtocolIE_ID_id_SourceBSS_ToTargetBSS_TransparentContainer = 161,
+ RANAP_ProtocolIE_ID_id_TargetBSS_ToSourceBSS_TransparentContainer = 162,
+ RANAP_ProtocolIE_ID_id_TimeToMBMSDataTransfer = 163,
+ RANAP_ProtocolIE_ID_id_IncludeVelocity = 164,
+ RANAP_ProtocolIE_ID_id_VelocityEstimate = 165,
+ RANAP_ProtocolIE_ID_id_RedirectAttemptFlag = 166,
+ RANAP_ProtocolIE_ID_id_RAT_Type = 167,
+ RANAP_ProtocolIE_ID_id_PeriodicLocationInfo = 168,
+ RANAP_ProtocolIE_ID_id_MBMSCountingInformation = 169,
+ RANAP_ProtocolIE_ID_id_170_not_to_be_used_for_IE_ids = 170,
+ RANAP_ProtocolIE_ID_id_ExtendedRNC_ID = 171,
+ RANAP_ProtocolIE_ID_id_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf = 172,
+ RANAP_ProtocolIE_ID_id_Alt_RAB_Parameter_ExtendedMaxBitrateInf = 173,
+ RANAP_ProtocolIE_ID_id_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList = 174,
+ RANAP_ProtocolIE_ID_id_Ass_RAB_Parameter_ExtendedMaxBitrateList = 175,
+ RANAP_ProtocolIE_ID_id_RAB_Parameter_ExtendedGuaranteedBitrateList = 176,
+ RANAP_ProtocolIE_ID_id_RAB_Parameter_ExtendedMaxBitrateList = 177,
+ RANAP_ProtocolIE_ID_id_Requested_RAB_Parameter_ExtendedMaxBitrateList = 178,
+ RANAP_ProtocolIE_ID_id_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList = 179,
+ RANAP_ProtocolIE_ID_id_LAofIdleModeUEs = 180,
+ RANAP_ProtocolIE_ID_id_newLAListofIdleModeUEs = 181,
+ RANAP_ProtocolIE_ID_id_LAListwithNoIdleModeUEsAnyMore = 182,
+ RANAP_ProtocolIE_ID_id_183_not_to_be_used_for_IE_ids = 183,
+ RANAP_ProtocolIE_ID_id_GANSS_PositioningDataSet = 184,
+ RANAP_ProtocolIE_ID_id_RequestedGANSSAssistanceData = 185,
+ RANAP_ProtocolIE_ID_id_BroadcastGANSSAssistanceDataDecipheringKeys = 186,
+ RANAP_ProtocolIE_ID_id_d_RNTI_for_NoIuCSUP = 187,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_EnhancedRelocCompleteReq = 188,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_EnhancedRelocCompleteReq = 189,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_EnhancedRelocCompleteRes = 190,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_EnhancedRelocCompleteRes = 191,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_EnhRelocInfoReq = 192,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_EnhRelocInfoReq = 193,
+ RANAP_ProtocolIE_ID_id_RAB_SetupList_EnhRelocInfoRes = 194,
+ RANAP_ProtocolIE_ID_id_RAB_SetupItem_EnhRelocInfoRes = 195,
+ RANAP_ProtocolIE_ID_id_OldIuSigConId = 196,
+ RANAP_ProtocolIE_ID_id_RAB_FailedList_EnhRelocInfoRes = 197,
+ RANAP_ProtocolIE_ID_id_RAB_FailedItem_EnhRelocInfoRes = 198,
+ RANAP_ProtocolIE_ID_id_Global_ENB_ID = 199,
+ RANAP_ProtocolIE_ID_id_UE_History_Information = 200,
+ RANAP_ProtocolIE_ID_id_MBMSSynchronisationInformation = 201,
+ RANAP_ProtocolIE_ID_id_SubscriberProfileIDforRFP = 202,
+ RANAP_ProtocolIE_ID_id_CSG_Id = 203,
+ RANAP_ProtocolIE_ID_id_OldIuSigConIdCS = 204,
+ RANAP_ProtocolIE_ID_id_OldIuSigConIdPS = 205,
+ RANAP_ProtocolIE_ID_id_GlobalCN_IDCS = 206,
+ RANAP_ProtocolIE_ID_id_GlobalCN_IDPS = 207,
+ RANAP_ProtocolIE_ID_id_SourceExtendedRNC_ID = 208,
+ RANAP_ProtocolIE_ID_id_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes = 209,
+ RANAP_ProtocolIE_ID_id_RAB_ToBeReleasedList_EnhancedRelocCompleteRes = 210,
+ RANAP_ProtocolIE_ID_id_SourceRNC_ID = 211,
+ RANAP_ProtocolIE_ID_id_Relocation_TargetRNC_ID = 212,
+ RANAP_ProtocolIE_ID_id_Relocation_TargetExtendedRNC_ID = 213,
+ RANAP_ProtocolIE_ID_id_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf = 214,
+ RANAP_ProtocolIE_ID_id_Alt_RAB_Parameter_SupportedMaxBitrateInf = 215,
+ RANAP_ProtocolIE_ID_id_Ass_RAB_Parameter_SupportedGuaranteedBitrateList = 216,
+ RANAP_ProtocolIE_ID_id_Ass_RAB_Parameter_SupportedMaxBitrateList = 217,
+ RANAP_ProtocolIE_ID_id_RAB_Parameter_SupportedGuaranteedBitrateList = 218,
+ RANAP_ProtocolIE_ID_id_RAB_Parameter_SupportedMaxBitrateList = 219,
+ RANAP_ProtocolIE_ID_id_Requested_RAB_Parameter_SupportedMaxBitrateList = 220,
+ RANAP_ProtocolIE_ID_id_Requested_RAB_Parameter_SupportedGuaranteedBitrateList = 221,
+ RANAP_ProtocolIE_ID_id_Relocation_SourceRNC_ID = 222,
+ RANAP_ProtocolIE_ID_id_Relocation_SourceExtendedRNC_ID = 223,
+ RANAP_ProtocolIE_ID_id_EncryptionKey = 224,
+ RANAP_ProtocolIE_ID_id_IntegrityProtectionKey = 225,
+ RANAP_ProtocolIE_ID_id_SRVCC_HO_Indication = 226,
+ RANAP_ProtocolIE_ID_id_SRVCC_Information = 227,
+ RANAP_ProtocolIE_ID_id_SRVCC_Operation_Possible = 228,
+ RANAP_ProtocolIE_ID_id_CSG_Id_List = 229,
+ RANAP_ProtocolIE_ID_id_PSRABtobeReplaced = 230,
+ RANAP_ProtocolIE_ID_id_E_UTRAN_Service_Handover = 231,
+ RANAP_ProtocolIE_ID_id_UE_AggregateMaximumBitRate = 233,
+ RANAP_ProtocolIE_ID_id_CSG_Membership_Status = 234,
+ RANAP_ProtocolIE_ID_id_Cell_Access_Mode = 235,
+ RANAP_ProtocolIE_ID_id_IP_Source_Address = 236,
+ RANAP_ProtocolIE_ID_id_CSFB_Information = 237,
+ RANAP_ProtocolIE_ID_id_PDP_TypeInformation_extension = 238,
+ RANAP_ProtocolIE_ID_id_MSISDN = 239,
+ RANAP_ProtocolIE_ID_id_Offload_RAB_Parameters = 240,
+ RANAP_ProtocolIE_ID_id_LGW_TransportLayerAddress = 241,
+ RANAP_ProtocolIE_ID_id_Correlation_ID = 242,
+ RANAP_ProtocolIE_ID_id_IRAT_Measurement_Configuration = 243,
+ RANAP_ProtocolIE_ID_id_MDT_Configuration = 244,
+ RANAP_ProtocolIE_ID_id_Priority_Class_Indicator = 245,
+ RANAP_ProtocolIE_ID_id_RNSAPRelocationParameters = 247,
+ RANAP_ProtocolIE_ID_id_RABParametersList = 248,
+ RANAP_ProtocolIE_ID_id_Management_Based_MDT_Allowed = 249,
+ RANAP_ProtocolIE_ID_id_HigherBitratesThan16MbpsFlag = 250,
+ RANAP_ProtocolIE_ID_id_Trace_Collection_Entity_IP_Addess = 251,
+ RANAP_ProtocolIE_ID_id_End_Of_CSFB = 252,
+ RANAP_ProtocolIE_ID_id_Time_UE_StayedInCell_EnhancedGranularity = 253,
+ RANAP_ProtocolIE_ID_id_Out_Of_UTRAN = 254,
+ RANAP_ProtocolIE_ID_id_TraceRecordingSessionReference = 255,
+ RANAP_ProtocolIE_ID_id_IMSI = 256,
+ RANAP_ProtocolIE_ID_id_HO_Cause = 257,
+ RANAP_ProtocolIE_ID_id_VoiceSupportMatchIndicator = 258,
+ RANAP_ProtocolIE_ID_id_RSRVCC_HO_Indication = 259,
+ RANAP_ProtocolIE_ID_id_RSRVCC_Information = 260,
+ RANAP_ProtocolIE_ID_id_AnchorPLMN_ID = 261,
+ RANAP_ProtocolIE_ID_id_Tunnel_Information_for_BBF = 262,
+ RANAP_ProtocolIE_ID_id_Management_Based_MDT_PLMN_List = 263,
+ RANAP_ProtocolIE_ID_id_SignallingBasedMDTPLMNList = 264,
+ RANAP_ProtocolIE_ID_id_M4Report = 265,
+ RANAP_ProtocolIE_ID_id_M5Report = 266,
+ RANAP_ProtocolIE_ID_id_M6Report = 267,
+ RANAP_ProtocolIE_ID_id_M7Report = 268,
+ RANAP_ProtocolIE_ID_id_TimingDifferenceULDL = 269,
+ RANAP_ProtocolIE_ID_id_Serving_Cell_Identifier = 270,
+ RANAP_ProtocolIE_ID_id_EARFCN_Extended = 271,
+ RANAP_ProtocolIE_ID_id_RSRVCC_Operation_Possible = 272,
+ RANAP_ProtocolIE_ID_id_SIPTO_LGW_TransportLayerAddress = 273,
+ RANAP_ProtocolIE_ID_id_SIPTO_Correlation_ID = 274,
+ RANAP_ProtocolIE_ID_id_LHN_ID = 275,
+ RANAP_ProtocolIE_ID_id_Session_Re_establishment_Indicator = 276,
+ RANAP_ProtocolIE_ID_id_LastE_UTRANPLMNIdentity = 277,
+ RANAP_ProtocolIE_ID_id_RSRQ_Type = 278,
+ RANAP_ProtocolIE_ID_id_RSRQ_Extension = 279
+} e_RANAP_ProtocolIE_ID;
+
+/* RANAP_ProtocolIE-ID */
+typedef long RANAP_ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_ID;
+asn_struct_free_f RANAP_ProtocolIE_ID_free;
+asn_struct_print_f RANAP_ProtocolIE_ID_print;
+asn_constr_check_f RANAP_ProtocolIE_ID_constraint;
+ber_type_decoder_f RANAP_ProtocolIE_ID_decode_ber;
+der_type_encoder_f RANAP_ProtocolIE_ID_encode_der;
+xer_type_decoder_f RANAP_ProtocolIE_ID_decode_xer;
+xer_type_encoder_f RANAP_ProtocolIE_ID_encode_xer;
+per_type_decoder_f RANAP_ProtocolIE_ID_decode_uper;
+per_type_encoder_f RANAP_ProtocolIE_ID_encode_uper;
+per_type_decoder_f RANAP_ProtocolIE_ID_decode_aper;
+per_type_encoder_f RANAP_ProtocolIE_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ProvidedData.h b/include/osmocom/ranap/RANAP_ProvidedData.h
new file mode 100644
index 0000000..4d17369
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ProvidedData.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ProvidedData_H_
+#define _RANAP_ProvidedData_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Shared-Network-Information.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ProvidedData_PR {
+ RANAP_ProvidedData_PR_NOTHING, /* No components present */
+ RANAP_ProvidedData_PR_shared_network_information,
+ /* Extensions may appear below */
+
+} RANAP_ProvidedData_PR;
+
+/* RANAP_ProvidedData */
+typedef struct RANAP_ProvidedData {
+ RANAP_ProvidedData_PR present;
+ union RANAP_ProvidedData_u {
+ RANAP_Shared_Network_Information_t shared_network_information;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ProvidedData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProvidedData;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ProvidedData_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_QueuingAllowed.h b/include/osmocom/ranap/RANAP_QueuingAllowed.h
new file mode 100644
index 0000000..3cf03c8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_QueuingAllowed.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_QueuingAllowed_H_
+#define _RANAP_QueuingAllowed_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_QueuingAllowed {
+ RANAP_QueuingAllowed_queueing_not_allowed = 0,
+ RANAP_QueuingAllowed_queueing_allowed = 1
+} e_RANAP_QueuingAllowed;
+
+/* RANAP_QueuingAllowed */
+typedef long RANAP_QueuingAllowed_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_QueuingAllowed;
+asn_struct_free_f RANAP_QueuingAllowed_free;
+asn_struct_print_f RANAP_QueuingAllowed_print;
+asn_constr_check_f RANAP_QueuingAllowed_constraint;
+ber_type_decoder_f RANAP_QueuingAllowed_decode_ber;
+der_type_encoder_f RANAP_QueuingAllowed_encode_der;
+xer_type_decoder_f RANAP_QueuingAllowed_decode_xer;
+xer_type_encoder_f RANAP_QueuingAllowed_encode_xer;
+per_type_decoder_f RANAP_QueuingAllowed_decode_uper;
+per_type_encoder_f RANAP_QueuingAllowed_encode_uper;
+per_type_decoder_f RANAP_QueuingAllowed_decode_aper;
+per_type_encoder_f RANAP_QueuingAllowed_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_QueuingAllowed_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-AssignmentRequest.h b/include/osmocom/ranap/RANAP_RAB-AssignmentRequest.h
new file mode 100644
index 0000000..508b56d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-AssignmentRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_AssignmentRequest_H_
+#define _RANAP_RAB_AssignmentRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-AssignmentRequest */
+typedef struct RANAP_RAB_AssignmentRequest {
+ struct raB_AssignmentRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_AssignmentRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_AssignmentRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AssignmentRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_AssignmentRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-AssignmentResponse.h b/include/osmocom/ranap/RANAP_RAB-AssignmentResponse.h
new file mode 100644
index 0000000..181da05
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-AssignmentResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_AssignmentResponse_H_
+#define _RANAP_RAB_AssignmentResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-AssignmentResponse */
+typedef struct RANAP_RAB_AssignmentResponse {
+ struct raB_AssignmentResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_AssignmentResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_AssignmentResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AssignmentResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_AssignmentResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h b/include/osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h
new file mode 100644
index 0000000..d5f5e09
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_AsymmetryIndicator_H_
+#define _RANAP_RAB_AsymmetryIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RAB_AsymmetryIndicator {
+ RANAP_RAB_AsymmetryIndicator_symmetric_bidirectional = 0,
+ RANAP_RAB_AsymmetryIndicator_asymmetric_unidirectional_downlink = 1,
+ RANAP_RAB_AsymmetryIndicator_asymmetric_unidirectional_uplink = 2,
+ RANAP_RAB_AsymmetryIndicator_asymmetric_bidirectional = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RAB_AsymmetryIndicator;
+
+/* RANAP_RAB-AsymmetryIndicator */
+typedef long RANAP_RAB_AsymmetryIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AsymmetryIndicator;
+asn_struct_free_f RANAP_RAB_AsymmetryIndicator_free;
+asn_struct_print_f RANAP_RAB_AsymmetryIndicator_print;
+asn_constr_check_f RANAP_RAB_AsymmetryIndicator_constraint;
+ber_type_decoder_f RANAP_RAB_AsymmetryIndicator_decode_ber;
+der_type_encoder_f RANAP_RAB_AsymmetryIndicator_encode_der;
+xer_type_decoder_f RANAP_RAB_AsymmetryIndicator_decode_xer;
+xer_type_encoder_f RANAP_RAB_AsymmetryIndicator_encode_xer;
+per_type_decoder_f RANAP_RAB_AsymmetryIndicator_decode_uper;
+per_type_encoder_f RANAP_RAB_AsymmetryIndicator_encode_uper;
+per_type_decoder_f RANAP_RAB_AsymmetryIndicator_decode_aper;
+per_type_encoder_f RANAP_RAB_AsymmetryIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_AsymmetryIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h b/include/osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h
new file mode 100644
index 0000000..3bac5ec
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ContextItem_RANAP_RelocInf_H_
+#define _RANAP_RAB_ContextItem_RANAP_RelocInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ContextItem-RANAP-RelocInf */
+typedef struct RANAP_RAB_ContextItem_RANAP_RelocInf {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_DL_GTP_PDU_SequenceNumber_t *dl_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_GTP_PDU_SequenceNumber_t *ul_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_DL_N_PDU_SequenceNumber_t *dl_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_N_PDU_SequenceNumber_t *ul_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ContextItem_RANAP_RelocInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ContextItem_RANAP_RelocInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ContextItem.h b/include/osmocom/ranap/RANAP_RAB-ContextItem.h
new file mode 100644
index 0000000..ddd0265
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ContextItem.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ContextItem_H_
+#define _RANAP_RAB_ContextItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ContextItem */
+typedef struct RANAP_RAB_ContextItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_DL_GTP_PDU_SequenceNumber_t *dl_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_GTP_PDU_SequenceNumber_t *ul_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_DL_N_PDU_SequenceNumber_t *dl_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_N_PDU_SequenceNumber_t *ul_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ContextItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ContextItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h b/include/osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h
new file mode 100644
index 0000000..79f3432
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ContextList_RANAP_RelocInf_H_
+#define _RANAP_RAB_ContextList_RANAP_RelocInf_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ContextList-RANAP-RelocInf */
+typedef struct RANAP_RAB_ContextList_RANAP_RelocInf {
+ struct raB_ContextList_RANAP_RelocInf_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ContextList_RANAP_RelocInf_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ContextList_RANAP_RelocInf_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ContextList_RANAP_RelocInf_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ContextList.h b/include/osmocom/ranap/RANAP_RAB-ContextList.h
new file mode 100644
index 0000000..68bc6cd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ContextList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ContextList_H_
+#define _RANAP_RAB_ContextList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ContextList */
+typedef struct RANAP_RAB_ContextList {
+ struct raB_ContextList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ContextList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ContextList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ContextList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h b/include/osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h
new file mode 100644
index 0000000..4ebe04b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataForwardingItem_SRNS_CtxReq_H_
+#define _RANAP_RAB_DataForwardingItem_SRNS_CtxReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataForwardingItem-SRNS-CtxReq */
+typedef struct RANAP_RAB_DataForwardingItem_SRNS_CtxReq {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataForwardingItem_SRNS_CtxReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataForwardingItem_SRNS_CtxReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataForwardingItem.h b/include/osmocom/ranap/RANAP_RAB-DataForwardingItem.h
new file mode 100644
index 0000000..dd96d6e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataForwardingItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataForwardingItem_H_
+#define _RANAP_RAB_DataForwardingItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataForwardingItem */
+typedef struct RANAP_RAB_DataForwardingItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TransportLayerAddress_t transportLayerAddress;
+ RANAP_IuTransportAssociation_t iuTransportAssociation;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataForwardingItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataForwardingItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h b/include/osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h
new file mode 100644
index 0000000..4659a09
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataForwardingList_SRNS_CtxReq_H_
+#define _RANAP_RAB_DataForwardingList_SRNS_CtxReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataForwardingList-SRNS-CtxReq */
+typedef struct RANAP_RAB_DataForwardingList_SRNS_CtxReq {
+ struct raB_DataForwardingList_SRNS_CtxReq_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_DataForwardingList_SRNS_CtxReq_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataForwardingList_SRNS_CtxReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataForwardingList_SRNS_CtxReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataForwardingList.h b/include/osmocom/ranap/RANAP_RAB-DataForwardingList.h
new file mode 100644
index 0000000..79b6724
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataForwardingList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataForwardingList_H_
+#define _RANAP_RAB_DataForwardingList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataForwardingList */
+typedef struct RANAP_RAB_DataForwardingList {
+ struct raB_DataForwardingList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_DataForwardingList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataForwardingList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataForwardingList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h
new file mode 100644
index 0000000..2c500ac
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataVolumeReportItem_H_
+#define _RANAP_RAB_DataVolumeReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_DataVolumeList.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataVolumeReportItem */
+typedef struct RANAP_RAB_DataVolumeReportItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_DataVolumeList_t *dl_UnsuccessfullyTransmittedDataVolume /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataVolumeReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataVolumeReportItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataVolumeReportList.h b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportList.h
new file mode 100644
index 0000000..fd1a5a9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataVolumeReportList_H_
+#define _RANAP_RAB_DataVolumeReportList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataVolumeReportList */
+typedef struct RANAP_RAB_DataVolumeReportList {
+ struct raB_DataVolumeReportList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_DataVolumeReportList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataVolumeReportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataVolumeReportList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h
new file mode 100644
index 0000000..f928e0a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataVolumeReportRequestItem_H_
+#define _RANAP_RAB_DataVolumeReportRequestItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataVolumeReportRequestItem */
+typedef struct RANAP_RAB_DataVolumeReportRequestItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataVolumeReportRequestItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportRequestItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataVolumeReportRequestItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h
new file mode 100644
index 0000000..cda59bb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_DataVolumeReportRequestList_H_
+#define _RANAP_RAB_DataVolumeReportRequestList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-DataVolumeReportRequestList */
+typedef struct RANAP_RAB_DataVolumeReportRequestList {
+ struct raB_DataVolumeReportRequestList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_DataVolumeReportRequestList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_DataVolumeReportRequestList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportRequestList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_DataVolumeReportRequestList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h b/include/osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h
new file mode 100644
index 0000000..cfcf0f0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_FailedItem_EnhRelocInfoRes_H_
+#define _RANAP_RAB_FailedItem_EnhRelocInfoRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-FailedItem-EnhRelocInfoRes */
+typedef struct RANAP_RAB_FailedItem_EnhRelocInfoRes {
+ RANAP_CN_DomainIndicator_t cN_DomainIndicator;
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_FailedItem_EnhRelocInfoRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_FailedItem_EnhRelocInfoRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-FailedItem.h b/include/osmocom/ranap/RANAP_RAB-FailedItem.h
new file mode 100644
index 0000000..f7a6416
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-FailedItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_FailedItem_H_
+#define _RANAP_RAB_FailedItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-FailedItem */
+typedef struct RANAP_RAB_FailedItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_FailedItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_FailedItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h b/include/osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h
new file mode 100644
index 0000000..310dddb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_FailedList_EnhRelocInfoRes_H_
+#define _RANAP_RAB_FailedList_EnhRelocInfoRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-FailedList-EnhRelocInfoRes */
+typedef struct RANAP_RAB_FailedList_EnhRelocInfoRes {
+ struct raB_FailedList_EnhRelocInfoRes_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_FailedList_EnhRelocInfoRes_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_FailedList_EnhRelocInfoRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_FailedList_EnhRelocInfoRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-FailedList.h b/include/osmocom/ranap/RANAP_RAB-FailedList.h
new file mode 100644
index 0000000..333fe89
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-FailedList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_FailedList_H_
+#define _RANAP_RAB_FailedList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-FailedList */
+typedef struct RANAP_RAB_FailedList {
+ struct raB_FailedList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_FailedList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_FailedList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_FailedList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ID.h b/include/osmocom/ranap/RANAP_RAB-ID.h
new file mode 100644
index 0000000..2166574
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_ID_H_
+#define _RANAP_RAB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ID */
+typedef BIT_STRING_t RANAP_RAB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ID;
+asn_struct_free_f RANAP_RAB_ID_free;
+asn_struct_print_f RANAP_RAB_ID_print;
+asn_constr_check_f RANAP_RAB_ID_constraint;
+ber_type_decoder_f RANAP_RAB_ID_decode_ber;
+der_type_encoder_f RANAP_RAB_ID_encode_der;
+xer_type_decoder_f RANAP_RAB_ID_decode_xer;
+xer_type_encoder_f RANAP_RAB_ID_encode_xer;
+per_type_decoder_f RANAP_RAB_ID_decode_uper;
+per_type_encoder_f RANAP_RAB_ID_encode_uper;
+per_type_decoder_f RANAP_RAB_ID_decode_aper;
+per_type_encoder_f RANAP_RAB_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-IE-ContainerList.h b/include/osmocom/ranap/RANAP_RAB-IE-ContainerList.h
new file mode 100644
index 0000000..9371d29
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-IE-ContainerList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_IE_ContainerList_H_
+#define _RANAP_RAB_IE_ContainerList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-IE-ContainerList */
+typedef struct RANAP_RAB_IE_ContainerList {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_Container_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_IE_ContainerList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_IE_ContainerList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_IE_ContainerList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h b/include/osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h
new file mode 100644
index 0000000..10db90a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_IE_ContainerPairList_H_
+#define _RANAP_RAB_IE_ContainerPairList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-IE-ContainerPairList */
+typedef struct RANAP_RAB_IE_ContainerPairList {
+ A_SEQUENCE_OF(RANAP_ProtocolIE_ContainerPair_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_IE_ContainerPairList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_IE_ContainerPairList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_IE_ContainerPairList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ModifyItem.h b/include/osmocom/ranap/RANAP_RAB-ModifyItem.h
new file mode 100644
index 0000000..0b2d5da
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ModifyItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ModifyItem_H_
+#define _RANAP_RAB_ModifyItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ModifyItem */
+typedef struct RANAP_RAB_ModifyItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Requested_RAB_Parameter_Values_t requested_RAB_Parameter_Values;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ModifyItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ModifyItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ModifyList.h b/include/osmocom/ranap/RANAP_RAB-ModifyList.h
new file mode 100644
index 0000000..45c4ab9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ModifyList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ModifyList_H_
+#define _RANAP_RAB_ModifyList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ModifyList */
+typedef struct RANAP_RAB_ModifyList {
+ struct raB_ModifyList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ModifyList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ModifyList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ModifyList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ModifyRequest.h b/include/osmocom/ranap/RANAP_RAB-ModifyRequest.h
new file mode 100644
index 0000000..2a358a6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ModifyRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ModifyRequest_H_
+#define _RANAP_RAB_ModifyRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ModifyRequest */
+typedef struct RANAP_RAB_ModifyRequest {
+ struct raB_ModifyRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ModifyRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ModifyRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ModifyRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h
new file mode 100644
index 0000000..e5dd173
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+#define _RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList */
+typedef struct RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedGuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h b/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h
new file mode 100644
index 0000000..414c33a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_Parameter_ExtendedMaxBitrateList_H_
+#define _RANAP_RAB_Parameter_ExtendedMaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-Parameter-ExtendedMaxBitrateList */
+typedef struct RANAP_RAB_Parameter_ExtendedMaxBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedMaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_Parameter_ExtendedMaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_Parameter_ExtendedMaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h
new file mode 100644
index 0000000..af13305
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_Parameter_GuaranteedBitrateList_H_
+#define _RANAP_RAB_Parameter_GuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-Parameter-GuaranteedBitrateList */
+typedef struct RANAP_RAB_Parameter_GuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_GuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_Parameter_GuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_Parameter_GuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h b/include/osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h
new file mode 100644
index 0000000..5557a45
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_Parameter_MaxBitrateList_H_
+#define _RANAP_RAB_Parameter_MaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-Parameter-MaxBitrateList */
+typedef struct RANAP_RAB_Parameter_MaxBitrateList {
+ A_SEQUENCE_OF(RANAP_MaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_Parameter_MaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_MaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_Parameter_MaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-Parameters.h b/include/osmocom/ranap/RANAP_RAB-Parameters.h
new file mode 100644
index 0000000..7c37ad9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-Parameters.h
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_Parameters_H_
+#define _RANAP_RAB_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TrafficClass.h>
+#include <osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_DeliveryOrder.h>
+#include <osmocom/ranap/RANAP_MaxSDU-Size.h>
+#include <osmocom/ranap/RANAP_SDU-Parameters.h>
+#include <osmocom/ranap/RANAP_TransferDelay.h>
+#include <osmocom/ranap/RANAP_TrafficHandlingPriority.h>
+#include <osmocom/ranap/RANAP_AllocationOrRetentionPriority.h>
+#include <osmocom/ranap/RANAP_SourceStatisticsDescriptor.h>
+#include <osmocom/ranap/RANAP_RelocationRequirement.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-Parameters */
+typedef struct RANAP_RAB_Parameters {
+ RANAP_TrafficClass_t trafficClass;
+ RANAP_RAB_AsymmetryIndicator_t rAB_AsymmetryIndicator;
+ RANAP_RAB_Parameter_MaxBitrateList_t maxBitrate;
+ RANAP_RAB_Parameter_GuaranteedBitrateList_t *guaranteedBitRate /* OPTIONAL */;
+ RANAP_DeliveryOrder_t deliveryOrder;
+ RANAP_MaxSDU_Size_t maxSDU_Size;
+ RANAP_SDU_Parameters_t sDU_Parameters;
+ RANAP_TransferDelay_t *transferDelay /* OPTIONAL */;
+ RANAP_TrafficHandlingPriority_t *trafficHandlingPriority /* OPTIONAL */;
+ RANAP_AllocationOrRetentionPriority_t *allocationOrRetentionPriority /* OPTIONAL */;
+ RANAP_SourceStatisticsDescriptor_t *sourceStatisticsDescriptor /* OPTIONAL */;
+ RANAP_RelocationRequirement_t *relocationRequirement /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-QueuedItem.h b/include/osmocom/ranap/RANAP_RAB-QueuedItem.h
new file mode 100644
index 0000000..c67d6c1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-QueuedItem.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_QueuedItem_H_
+#define _RANAP_RAB_QueuedItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-QueuedItem */
+typedef struct RANAP_RAB_QueuedItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_QueuedItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_QueuedItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_QueuedItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-QueuedList.h b/include/osmocom/ranap/RANAP_RAB-QueuedList.h
new file mode 100644
index 0000000..94439ef
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-QueuedList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_QueuedList_H_
+#define _RANAP_RAB_QueuedList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-QueuedList */
+typedef struct RANAP_RAB_QueuedList {
+ struct raB_QueuedList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_QueuedList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_QueuedList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_QueuedList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_QueuedList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleaseFailedList.h b/include/osmocom/ranap/RANAP_RAB-ReleaseFailedList.h
new file mode 100644
index 0000000..808c42a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleaseFailedList.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleaseFailedList_H_
+#define _RANAP_RAB_ReleaseFailedList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-FailedList.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleaseFailedList */
+typedef RANAP_RAB_FailedList_t RANAP_RAB_ReleaseFailedList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseFailedList;
+asn_struct_free_f RANAP_RAB_ReleaseFailedList_free;
+asn_struct_print_f RANAP_RAB_ReleaseFailedList_print;
+asn_constr_check_f RANAP_RAB_ReleaseFailedList_constraint;
+ber_type_decoder_f RANAP_RAB_ReleaseFailedList_decode_ber;
+der_type_encoder_f RANAP_RAB_ReleaseFailedList_encode_der;
+xer_type_decoder_f RANAP_RAB_ReleaseFailedList_decode_xer;
+xer_type_encoder_f RANAP_RAB_ReleaseFailedList_encode_xer;
+per_type_decoder_f RANAP_RAB_ReleaseFailedList_decode_uper;
+per_type_encoder_f RANAP_RAB_ReleaseFailedList_encode_uper;
+per_type_decoder_f RANAP_RAB_ReleaseFailedList_decode_aper;
+per_type_encoder_f RANAP_RAB_ReleaseFailedList_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleaseFailedList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleaseItem.h b/include/osmocom/ranap/RANAP_RAB-ReleaseItem.h
new file mode 100644
index 0000000..28934cb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleaseItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleaseItem_H_
+#define _RANAP_RAB_ReleaseItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleaseItem */
+typedef struct RANAP_RAB_ReleaseItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleaseItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleaseItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleaseList.h b/include/osmocom/ranap/RANAP_RAB-ReleaseList.h
new file mode 100644
index 0000000..4ac68bd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleaseList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleaseList_H_
+#define _RANAP_RAB_ReleaseList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleaseList */
+typedef struct RANAP_RAB_ReleaseList {
+ struct raB_ReleaseList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ReleaseList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleaseList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleaseList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleaseRequest.h b/include/osmocom/ranap/RANAP_RAB-ReleaseRequest.h
new file mode 100644
index 0000000..0b09f38
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleaseRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleaseRequest_H_
+#define _RANAP_RAB_ReleaseRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleaseRequest */
+typedef struct RANAP_RAB_ReleaseRequest {
+ struct raB_ReleaseRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ReleaseRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleaseRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleaseRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h b/include/osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h
new file mode 100644
index 0000000..1d73866
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleasedItem_IuRelComp_H_
+#define _RANAP_RAB_ReleasedItem_IuRelComp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleasedItem-IuRelComp */
+typedef struct RANAP_RAB_ReleasedItem_IuRelComp {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_DL_GTP_PDU_SequenceNumber_t *dL_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_GTP_PDU_SequenceNumber_t *uL_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleasedItem_IuRelComp_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleasedItem_IuRelComp_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleasedItem.h b/include/osmocom/ranap/RANAP_RAB-ReleasedItem.h
new file mode 100644
index 0000000..14bd8fa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleasedItem.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleasedItem_H_
+#define _RANAP_RAB_ReleasedItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_DataVolumeList.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleasedItem */
+typedef struct RANAP_RAB_ReleasedItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_DataVolumeList_t *dl_dataVolumes /* OPTIONAL */;
+ RANAP_DL_GTP_PDU_SequenceNumber_t *dL_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_GTP_PDU_SequenceNumber_t *uL_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleasedItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleasedItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h b/include/osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h
new file mode 100644
index 0000000..98bb6c7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleasedList_IuRelComp_H_
+#define _RANAP_RAB_ReleasedList_IuRelComp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleasedList-IuRelComp */
+typedef struct RANAP_RAB_ReleasedList_IuRelComp {
+ struct raB_ReleasedList_IuRelComp_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ReleasedList_IuRelComp_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleasedList_IuRelComp_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedList_IuRelComp;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleasedList_IuRelComp_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ReleasedList.h b/include/osmocom/ranap/RANAP_RAB-ReleasedList.h
new file mode 100644
index 0000000..9f047c7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ReleasedList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ReleasedList_H_
+#define _RANAP_RAB_ReleasedList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ReleasedList */
+typedef struct RANAP_RAB_ReleasedList {
+ struct raB_ReleasedList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ReleasedList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ReleasedList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ReleasedList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h b/include/osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h
new file mode 100644
index 0000000..ab8cf40
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_RelocationReleaseItem_H_
+#define _RANAP_RAB_RelocationReleaseItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-RelocationReleaseItem */
+typedef struct RANAP_RAB_RelocationReleaseItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_RelocationReleaseItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_RelocationReleaseItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_RelocationReleaseItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-RelocationReleaseList.h b/include/osmocom/ranap/RANAP_RAB-RelocationReleaseList.h
new file mode 100644
index 0000000..f008a3b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-RelocationReleaseList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_RelocationReleaseList_H_
+#define _RANAP_RAB_RelocationReleaseList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-RelocationReleaseList */
+typedef struct RANAP_RAB_RelocationReleaseList {
+ struct raB_RelocationReleaseList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_RelocationReleaseList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_RelocationReleaseList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_RelocationReleaseList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_RelocationReleaseList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h
new file mode 100644
index 0000000..ed6cb11
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_EnhRelocInfoReq_H_
+#define _RANAP_RAB_SetupItem_EnhRelocInfoReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
+#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h>
+#include <osmocom/ranap/RANAP_Service-Handover.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-EnhRelocInfoReq */
+typedef struct RANAP_RAB_SetupItem_EnhRelocInfoReq {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_CN_DomainIndicator_t cN_DomainIndicator;
+ RANAP_RAB_Parameters_t rAB_Parameters;
+ RANAP_DataVolumeReportingIndication_t *dataVolumeReportingIndication /* OPTIONAL */;
+ RANAP_PDP_TypeInformation_t *pDP_TypeInformation /* OPTIONAL */;
+ RANAP_UserPlaneInformation_t userPlaneInformation;
+ RANAP_TNLInformationEnhRelInfoReq_t *dataForwardingInformation /* OPTIONAL */;
+ RANAP_TNLInformationEnhRelInfoReq_t *sourceSideIuULTNLInfo /* OPTIONAL */;
+ RANAP_Service_Handover_t *service_Handover /* OPTIONAL */;
+ RANAP_Alt_RAB_Parameters_t *alt_RAB_Parameters /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_EnhRelocInfoReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_EnhRelocInfoReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h
new file mode 100644
index 0000000..8de47bb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_EnhRelocInfoRes_H_
+#define _RANAP_RAB_SetupItem_EnhRelocInfoRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-EnhRelocInfoRes */
+typedef struct RANAP_RAB_SetupItem_EnhRelocInfoRes {
+ RANAP_CN_DomainIndicator_t cN_DomainIndicator;
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TNLInformationEnhRelInfoRes_t *dataForwardingInformation /* OPTIONAL */;
+ RANAP_Ass_RAB_Parameters_t *ass_RAB_Parameters /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_EnhRelocInfoRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_EnhRelocInfoRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h
new file mode 100644
index 0000000..16e4e94
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_H_
+#define _RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-EnhancedRelocCompleteReq */
+typedef struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TransportLayerAddress_t *transportLayerAddressReq1 /* OPTIONAL */;
+ RANAP_IuTransportAssociation_t *iuTransportAssociationReq1 /* OPTIONAL */;
+ RANAP_Ass_RAB_Parameters_t *ass_RAB_Parameters /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h
new file mode 100644
index 0000000..b20556f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_H_
+#define _RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-EnhancedRelocCompleteRes */
+typedef struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_RAB_Parameters_t *rAB_Parameters /* OPTIONAL */;
+ RANAP_UserPlaneInformation_t userPlaneInformation;
+ RANAP_TransportLayerAddress_t *transportLayerAddressRes1 /* OPTIONAL */;
+ RANAP_IuTransportAssociation_t *iuTransportAssociationRes1 /* OPTIONAL */;
+ RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_t *rab2beReleasedList /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h
new file mode 100644
index 0000000..fd2b921
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_RelocReq_H_
+#define _RANAP_RAB_SetupItem_RelocReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
+#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_Service-Handover.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-RelocReq */
+typedef struct RANAP_RAB_SetupItem_RelocReq {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_NAS_SynchronisationIndicator_t *nAS_SynchronisationIndicator /* OPTIONAL */;
+ RANAP_RAB_Parameters_t rAB_Parameters;
+ RANAP_DataVolumeReportingIndication_t *dataVolumeReportingIndication /* OPTIONAL */;
+ RANAP_PDP_TypeInformation_t *pDP_TypeInformation /* OPTIONAL */;
+ RANAP_UserPlaneInformation_t userPlaneInformation;
+ RANAP_TransportLayerAddress_t transportLayerAddress;
+ RANAP_IuTransportAssociation_t iuTransportAssociation;
+ RANAP_Service_Handover_t *service_Handover /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_RelocReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_RelocReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_RelocReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h b/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h
new file mode 100644
index 0000000..c520c66
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupItem_RelocReqAck_H_
+#define _RANAP_RAB_SetupItem_RelocReqAck_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupItem-RelocReqAck */
+typedef struct RANAP_RAB_SetupItem_RelocReqAck {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TransportLayerAddress_t *transportLayerAddress /* OPTIONAL */;
+ RANAP_IuTransportAssociation_t *iuTransportAssociation /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupItem_RelocReqAck_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_RelocReqAck;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupItem_RelocReqAck_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h
new file mode 100644
index 0000000..074f88b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_EnhRelocInfoReq_H_
+#define _RANAP_RAB_SetupList_EnhRelocInfoReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-EnhRelocInfoReq */
+typedef struct RANAP_RAB_SetupList_EnhRelocInfoReq {
+ struct raB_SetupList_EnhRelocInfoReq_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_EnhRelocInfoReq_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_EnhRelocInfoReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_EnhRelocInfoReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h
new file mode 100644
index 0000000..3c054bd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_EnhRelocInfoRes_H_
+#define _RANAP_RAB_SetupList_EnhRelocInfoRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-EnhRelocInfoRes */
+typedef struct RANAP_RAB_SetupList_EnhRelocInfoRes {
+ struct raB_SetupList_EnhRelocInfoRes_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_EnhRelocInfoRes_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_EnhRelocInfoRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_EnhRelocInfoRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h
new file mode 100644
index 0000000..87dc504
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_EnhancedRelocCompleteReq_H_
+#define _RANAP_RAB_SetupList_EnhancedRelocCompleteReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-EnhancedRelocCompleteReq */
+typedef struct RANAP_RAB_SetupList_EnhancedRelocCompleteReq {
+ struct raB_SetupList_EnhancedRelocCompleteReq_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_EnhancedRelocCompleteReq_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_EnhancedRelocCompleteReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_EnhancedRelocCompleteReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h
new file mode 100644
index 0000000..cc32d0c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_EnhancedRelocCompleteRes_H_
+#define _RANAP_RAB_SetupList_EnhancedRelocCompleteRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-EnhancedRelocCompleteRes */
+typedef struct RANAP_RAB_SetupList_EnhancedRelocCompleteRes {
+ struct raB_SetupList_EnhancedRelocCompleteRes_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_EnhancedRelocCompleteRes_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_EnhancedRelocCompleteRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_EnhancedRelocCompleteRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h b/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h
new file mode 100644
index 0000000..1004ed5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_RelocReq_H_
+#define _RANAP_RAB_SetupList_RelocReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-RelocReq */
+typedef struct RANAP_RAB_SetupList_RelocReq {
+ struct raB_SetupList_RelocReq_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_RelocReq_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_RelocReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_RelocReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_RelocReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h b/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h
new file mode 100644
index 0000000..8df1869
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupList_RelocReqAck_H_
+#define _RANAP_RAB_SetupList_RelocReqAck_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupList-RelocReqAck */
+typedef struct RANAP_RAB_SetupList_RelocReqAck {
+ struct raB_SetupList_RelocReqAck_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupList_RelocReqAck_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupList_RelocReqAck_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_RelocReqAck;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupList_RelocReqAck_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h b/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h
new file mode 100644
index 0000000..bebf2c7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupOrModifiedItem_H_
+#define _RANAP_RAB_SetupOrModifiedItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_DataVolumeList.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupOrModifiedItem */
+typedef struct RANAP_RAB_SetupOrModifiedItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TransportLayerAddress_t *transportLayerAddress /* OPTIONAL */;
+ RANAP_IuTransportAssociation_t *iuTransportAssociation /* OPTIONAL */;
+ RANAP_DataVolumeList_t *dl_dataVolumes /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupOrModifiedItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifiedItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupOrModifiedItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h b/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h
new file mode 100644
index 0000000..81dd128
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupOrModifiedList_H_
+#define _RANAP_RAB_SetupOrModifiedList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupOrModifiedList */
+typedef struct RANAP_RAB_SetupOrModifiedList {
+ struct raB_SetupOrModifiedList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_SetupOrModifiedList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupOrModifiedList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifiedList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupOrModifiedList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h
new file mode 100644
index 0000000..d613698
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupOrModifyItemFirst_H_
+#define _RANAP_RAB_SetupOrModifyItemFirst_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+#include <osmocom/ranap/RANAP_TransportLayerInformation.h>
+#include <osmocom/ranap/RANAP_Service-Handover.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupOrModifyItemFirst */
+typedef struct RANAP_RAB_SetupOrModifyItemFirst {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_NAS_SynchronisationIndicator_t *nAS_SynchronisationIndicator /* OPTIONAL */;
+ RANAP_RAB_Parameters_t *rAB_Parameters /* OPTIONAL */;
+ RANAP_UserPlaneInformation_t *userPlaneInformation /* OPTIONAL */;
+ RANAP_TransportLayerInformation_t *transportLayerInformation /* OPTIONAL */;
+ RANAP_Service_Handover_t *service_Handover /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupOrModifyItemFirst_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyItemFirst;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupOrModifyItemFirst_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h
new file mode 100644
index 0000000..c2270d5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupOrModifyItemSecond_H_
+#define _RANAP_RAB_SetupOrModifyItemSecond_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupOrModifyItemSecond */
+typedef struct RANAP_RAB_SetupOrModifyItemSecond {
+ RANAP_PDP_TypeInformation_t *pDP_TypeInformation /* OPTIONAL */;
+ RANAP_DataVolumeReportingIndication_t *dataVolumeReportingIndication /* OPTIONAL */;
+ RANAP_DL_GTP_PDU_SequenceNumber_t *dl_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_GTP_PDU_SequenceNumber_t *ul_GTP_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_DL_N_PDU_SequenceNumber_t *dl_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_UL_N_PDU_SequenceNumber_t *ul_N_PDU_SequenceNumber /* OPTIONAL */;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_SetupOrModifyItemSecond_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyItemSecond;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupOrModifyItemSecond_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SetupOrModifyList.h b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyList.h
new file mode 100644
index 0000000..58c1759
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SetupOrModifyList.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_SetupOrModifyList_H_
+#define _RANAP_RAB_SetupOrModifyList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SetupOrModifyList */
+typedef RANAP_RAB_IE_ContainerPairList_t RANAP_RAB_SetupOrModifyList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyList;
+asn_struct_free_f RANAP_RAB_SetupOrModifyList_free;
+asn_struct_print_f RANAP_RAB_SetupOrModifyList_print;
+asn_constr_check_f RANAP_RAB_SetupOrModifyList_constraint;
+ber_type_decoder_f RANAP_RAB_SetupOrModifyList_decode_ber;
+der_type_encoder_f RANAP_RAB_SetupOrModifyList_encode_der;
+xer_type_decoder_f RANAP_RAB_SetupOrModifyList_decode_xer;
+xer_type_encoder_f RANAP_RAB_SetupOrModifyList_encode_xer;
+per_type_decoder_f RANAP_RAB_SetupOrModifyList_decode_uper;
+per_type_encoder_f RANAP_RAB_SetupOrModifyList_encode_uper;
+per_type_decoder_f RANAP_RAB_SetupOrModifyList_decode_aper;
+per_type_encoder_f RANAP_RAB_SetupOrModifyList_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SetupOrModifyList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h b/include/osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h
new file mode 100644
index 0000000..6c3eaa4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_SubflowCombinationBitRate_H_
+#define _RANAP_RAB_SubflowCombinationBitRate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-SubflowCombinationBitRate */
+typedef long RANAP_RAB_SubflowCombinationBitRate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SubflowCombinationBitRate;
+asn_struct_free_f RANAP_RAB_SubflowCombinationBitRate_free;
+asn_struct_print_f RANAP_RAB_SubflowCombinationBitRate_print;
+asn_constr_check_f RANAP_RAB_SubflowCombinationBitRate_constraint;
+ber_type_decoder_f RANAP_RAB_SubflowCombinationBitRate_decode_ber;
+der_type_encoder_f RANAP_RAB_SubflowCombinationBitRate_encode_der;
+xer_type_decoder_f RANAP_RAB_SubflowCombinationBitRate_decode_xer;
+xer_type_encoder_f RANAP_RAB_SubflowCombinationBitRate_encode_xer;
+per_type_decoder_f RANAP_RAB_SubflowCombinationBitRate_decode_uper;
+per_type_encoder_f RANAP_RAB_SubflowCombinationBitRate_encode_uper;
+per_type_decoder_f RANAP_RAB_SubflowCombinationBitRate_decode_aper;
+per_type_encoder_f RANAP_RAB_SubflowCombinationBitRate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_SubflowCombinationBitRate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h b/include/osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h
new file mode 100644
index 0000000..7884317
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_H_
+#define _RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes */
+typedef struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h b/include/osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h
new file mode 100644
index 0000000..a9d4fd9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_H_
+#define _RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes */
+typedef struct RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes {
+ struct raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-TrCH-Mapping.h b/include/osmocom/ranap/RANAP_RAB-TrCH-Mapping.h
new file mode 100644
index 0000000..3e69734
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-TrCH-Mapping.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_TrCH_Mapping_H_
+#define _RANAP_RAB_TrCH_Mapping_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-TrCH-Mapping */
+typedef struct RANAP_RAB_TrCH_Mapping {
+ A_SEQUENCE_OF(RANAP_RAB_TrCH_MappingItem_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_TrCH_Mapping_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_TrCH_Mapping;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_TrCH_Mapping_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h b/include/osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h
new file mode 100644
index 0000000..d84a86c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAB_TrCH_MappingItem_H_
+#define _RANAP_RAB_TrCH_MappingItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_TrCH-ID-List.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAB-TrCH-MappingItem */
+typedef struct RANAP_RAB_TrCH_MappingItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_TrCH_ID_List_t trCH_ID_List;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAB_TrCH_MappingItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_TrCH_MappingItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAB_TrCH_MappingItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABDataVolumeReport.h b/include/osmocom/ranap/RANAP_RABDataVolumeReport.h
new file mode 100644
index 0000000..ab671d5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABDataVolumeReport.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RABDataVolumeReport_H_
+#define _RANAP_RABDataVolumeReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h>
+#include <osmocom/ranap/RANAP_DataVolumeReference.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABDataVolumeReport */
+typedef struct RANAP_RABDataVolumeReport {
+ A_SEQUENCE_OF(struct MemberN {
+ RANAP_UnsuccessfullyTransmittedDataVolume_t dl_UnsuccessfullyTransmittedDataVolume;
+ RANAP_DataVolumeReference_t *dataVolumeReference /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABDataVolumeReport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABDataVolumeReport;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABDataVolumeReport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABParametersList.h b/include/osmocom/ranap/RANAP_RABParametersList.h
new file mode 100644
index 0000000..f3bec06
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABParametersList.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RABParametersList_H_
+#define _RANAP_RABParametersList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_RABDataVolumeReport.h>
+#include <osmocom/ranap/RANAP_UPInformation.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABParametersList */
+typedef struct RANAP_RABParametersList {
+ A_SEQUENCE_OF(struct MemberB {
+ RANAP_RAB_ID_t rab_Id;
+ RANAP_CN_DomainIndicator_t cn_domain;
+ RANAP_RABDataVolumeReport_t *rabDataVolumeReport /* OPTIONAL */;
+ RANAP_UPInformation_t *upInformation /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABParametersList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABParametersList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABParametersList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABased.h b/include/osmocom/ranap/RANAP_RABased.h
new file mode 100644
index 0000000..5ddfaa4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABased.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RABased_H_
+#define _RANAP_RABased_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAI-List.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABased */
+typedef struct RANAP_RABased {
+ RANAP_RAI_List_t raiList;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABased_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABased;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABased_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h b/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h
new file mode 100644
index 0000000..09ba8b6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RABs_ContextFailedtoTransferItem_H_
+#define _RANAP_RABs_ContextFailedtoTransferItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABs-ContextFailedtoTransferItem */
+typedef struct RANAP_RABs_ContextFailedtoTransferItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABs_ContextFailedtoTransferItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_ContextFailedtoTransferItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABs_ContextFailedtoTransferItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h b/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h
new file mode 100644
index 0000000..6dae24e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RABs_ContextFailedtoTransferList_H_
+#define _RANAP_RABs_ContextFailedtoTransferList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABs-ContextFailedtoTransferList */
+typedef struct RANAP_RABs_ContextFailedtoTransferList {
+ struct raBs_ContextFailedtoTransferList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raBs_ContextFailedtoTransferList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABs_ContextFailedtoTransferList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_ContextFailedtoTransferList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABs_ContextFailedtoTransferList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABs-failed-to-reportItem.h b/include/osmocom/ranap/RANAP_RABs-failed-to-reportItem.h
new file mode 100644
index 0000000..c3032e5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABs-failed-to-reportItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RABs_failed_to_reportItem_H_
+#define _RANAP_RABs_failed_to_reportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABs-failed-to-reportItem */
+typedef struct RANAP_RABs_failed_to_reportItem {
+ RANAP_RAB_ID_t rAB_ID;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABs_failed_to_reportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_failed_to_reportItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABs_failed_to_reportItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RABs-failed-to-reportList.h b/include/osmocom/ranap/RANAP_RABs-failed-to-reportList.h
new file mode 100644
index 0000000..33e3943
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RABs-failed-to-reportList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RABs_failed_to_reportList_H_
+#define _RANAP_RABs_failed_to_reportList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RABs-failed-to-reportList */
+typedef struct RANAP_RABs_failed_to_reportList {
+ struct raBs_failed_to_reportList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } raBs_failed_to_reportList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RABs_failed_to_reportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_failed_to_reportList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RABs_failed_to_reportList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAC.h b/include/osmocom/ranap/RANAP_RAC.h
new file mode 100644
index 0000000..1de733a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAC.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAC_H_
+#define _RANAP_RAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAC */
+typedef OCTET_STRING_t RANAP_RAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAC;
+asn_struct_free_f RANAP_RAC_free;
+asn_struct_print_f RANAP_RAC_print;
+asn_constr_check_f RANAP_RAC_constraint;
+ber_type_decoder_f RANAP_RAC_decode_ber;
+der_type_encoder_f RANAP_RAC_encode_der;
+xer_type_decoder_f RANAP_RAC_decode_xer;
+xer_type_encoder_f RANAP_RAC_encode_xer;
+per_type_decoder_f RANAP_RAC_decode_uper;
+per_type_encoder_f RANAP_RAC_encode_uper;
+per_type_decoder_f RANAP_RAC_decode_aper;
+per_type_encoder_f RANAP_RAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAI-List.h b/include/osmocom/ranap/RANAP_RAI-List.h
new file mode 100644
index 0000000..bc4f843
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAI-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAI_List_H_
+#define _RANAP_RAI_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAI-List */
+typedef struct RANAP_RAI_List {
+ A_SEQUENCE_OF(RANAP_RAI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAI_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAI_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAI_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAI.h b/include/osmocom/ranap/RANAP_RAI.h
new file mode 100644
index 0000000..eb822d1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAI.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAI_H_
+#define _RANAP_RAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAI */
+typedef struct RANAP_RAI {
+ RANAP_LAI_t lAI;
+ RANAP_RAC_t rAC;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAListofIdleModeUEs.h b/include/osmocom/ranap/RANAP_RAListofIdleModeUEs.h
new file mode 100644
index 0000000..15dd881
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAListofIdleModeUEs.h
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAListofIdleModeUEs_H_
+#define _RANAP_RAListofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h>
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RAListofIdleModeUEs_PR {
+ RANAP_RAListofIdleModeUEs_PR_NOTHING, /* No components present */
+ RANAP_RAListofIdleModeUEs_PR_notEmptyRAListofIdleModeUEs,
+ RANAP_RAListofIdleModeUEs_PR_emptyFullRAListofIdleModeUEs,
+ /* Extensions may appear below */
+
+} RANAP_RAListofIdleModeUEs_PR;
+typedef enum emptyFullRAListofIdleModeUEs {
+ emptyFullRAListofIdleModeUEs_emptylist = 0,
+ emptyFullRAListofIdleModeUEs_fulllist = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_emptyFullRAListofIdleModeUEs;
+
+/* RANAP_RAListofIdleModeUEs */
+typedef struct RANAP_RAListofIdleModeUEs {
+ RANAP_RAListofIdleModeUEs_PR present;
+ union RANAP_RAListofIdleModeUEs_u {
+ RANAP_NotEmptyRAListofIdleModeUEs_t notEmptyRAListofIdleModeUEs;
+ long emptyFullRAListofIdleModeUEs;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAListofIdleModeUEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_emptyFullRAListofIdleModeUEs_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAListofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAListofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h b/include/osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h
new file mode 100644
index 0000000..1b144f6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAListwithNoIdleModeUEsAnyMore_H_
+#define _RANAP_RAListwithNoIdleModeUEsAnyMore_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAListwithNoIdleModeUEsAnyMore */
+typedef struct RANAP_RAListwithNoIdleModeUEsAnyMore {
+ A_SEQUENCE_OF(RANAP_RAC_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAListwithNoIdleModeUEsAnyMore_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAListwithNoIdleModeUEsAnyMore_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h b/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h
new file mode 100644
index 0000000..8a75799
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RANAP_EnhancedRelocationInformationRequest_H_
+#define _RANAP_RANAP_EnhancedRelocationInformationRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RANAP-EnhancedRelocationInformationRequest */
+typedef struct RANAP_RANAP_EnhancedRelocationInformationRequest {
+ struct ranaP_EnhancedRelocationInformationRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ranaP_EnhancedRelocationInformationRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RANAP_EnhancedRelocationInformationRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RANAP_EnhancedRelocationInformationRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h b/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h
new file mode 100644
index 0000000..3175411
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RANAP_EnhancedRelocationInformationResponse_H_
+#define _RANAP_RANAP_EnhancedRelocationInformationResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RANAP-EnhancedRelocationInformationResponse */
+typedef struct RANAP_RANAP_EnhancedRelocationInformationResponse {
+ struct ranaP_EnhancedRelocationInformationResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ranaP_EnhancedRelocationInformationResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RANAP_EnhancedRelocationInformationResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RANAP_EnhancedRelocationInformationResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RANAP-PDU.h b/include/osmocom/ranap/RANAP_RANAP-PDU.h
new file mode 100644
index 0000000..b2039bd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RANAP-PDU.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RANAP_PDU_H_
+#define _RANAP_RANAP_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_InitiatingMessage.h>
+#include <osmocom/ranap/RANAP_SuccessfulOutcome.h>
+#include <osmocom/ranap/RANAP_UnsuccessfulOutcome.h>
+#include <osmocom/ranap/RANAP_Outcome.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RANAP_PDU_PR {
+ RANAP_RANAP_PDU_PR_NOTHING, /* No components present */
+ RANAP_RANAP_PDU_PR_initiatingMessage,
+ RANAP_RANAP_PDU_PR_successfulOutcome,
+ RANAP_RANAP_PDU_PR_unsuccessfulOutcome,
+ RANAP_RANAP_PDU_PR_outcome,
+ /* Extensions may appear below */
+
+} RANAP_RANAP_PDU_PR;
+
+/* RANAP_RANAP-PDU */
+typedef struct RANAP_RANAP_PDU {
+ RANAP_RANAP_PDU_PR present;
+ union RANAP_RANAP_PDU_u {
+ RANAP_InitiatingMessage_t initiatingMessage;
+ RANAP_SuccessfulOutcome_t successfulOutcome;
+ RANAP_UnsuccessfulOutcome_t unsuccessfulOutcome;
+ RANAP_Outcome_t outcome;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RANAP_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_PDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RANAP_PDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RANAP-RelocationInformation.h b/include/osmocom/ranap/RANAP_RANAP-RelocationInformation.h
new file mode 100644
index 0000000..3d28873
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RANAP-RelocationInformation.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RANAP_RelocationInformation_H_
+#define _RANAP_RANAP_RelocationInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RANAP-RelocationInformation */
+typedef struct RANAP_RANAP_RelocationInformation {
+ struct ranaP_RelocationInformation_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ranaP_RelocationInformation_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RANAP_RelocationInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_RelocationInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RANAP_RelocationInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAT-Type.h b/include/osmocom/ranap/RANAP_RAT-Type.h
new file mode 100644
index 0000000..55c5467
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAT-Type.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAT_Type_H_
+#define _RANAP_RAT_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RAT_Type {
+ RANAP_RAT_Type_utran = 0,
+ RANAP_RAT_Type_geran = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RAT_Type;
+
+/* RANAP_RAT-Type */
+typedef long RANAP_RAT_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAT_Type;
+asn_struct_free_f RANAP_RAT_Type_free;
+asn_struct_print_f RANAP_RAT_Type_print;
+asn_constr_check_f RANAP_RAT_Type_constraint;
+ber_type_decoder_f RANAP_RAT_Type_decode_ber;
+der_type_encoder_f RANAP_RAT_Type_encode_der;
+xer_type_decoder_f RANAP_RAT_Type_decode_xer;
+xer_type_encoder_f RANAP_RAT_Type_encode_xer;
+per_type_decoder_f RANAP_RAT_Type_decode_uper;
+per_type_encoder_f RANAP_RAT_Type_encode_uper;
+per_type_decoder_f RANAP_RAT_Type_decode_aper;
+per_type_encoder_f RANAP_RAT_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAT_Type_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RAofIdleModeUEs.h b/include/osmocom/ranap/RANAP_RAofIdleModeUEs.h
new file mode 100644
index 0000000..66eb253
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RAofIdleModeUEs.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RAofIdleModeUEs_H_
+#define _RANAP_RAofIdleModeUEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RAofIdleModeUEs */
+typedef struct RANAP_RAofIdleModeUEs {
+ A_SEQUENCE_OF(RANAP_RAC_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RAofIdleModeUEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RAofIdleModeUEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RAofIdleModeUEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RIM-Transfer.h b/include/osmocom/ranap/RANAP_RIM-Transfer.h
new file mode 100644
index 0000000..12d9660
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RIM-Transfer.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RIM_Transfer_H_
+#define _RANAP_RIM_Transfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RIMInformation.h>
+#include <osmocom/ranap/RANAP_RIMRoutingAddress.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RIM-Transfer */
+typedef struct RANAP_RIM_Transfer {
+ RANAP_RIMInformation_t rIMInformation;
+ RANAP_RIMRoutingAddress_t *rIMRoutingAddress /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RIM_Transfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RIM_Transfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RIM_Transfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RIMInformation.h b/include/osmocom/ranap/RANAP_RIMInformation.h
new file mode 100644
index 0000000..47b60e9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RIMInformation.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RIMInformation_H_
+#define _RANAP_RIMInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RIMInformation */
+typedef OCTET_STRING_t RANAP_RIMInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RIMInformation;
+asn_struct_free_f RANAP_RIMInformation_free;
+asn_struct_print_f RANAP_RIMInformation_print;
+asn_constr_check_f RANAP_RIMInformation_constraint;
+ber_type_decoder_f RANAP_RIMInformation_decode_ber;
+der_type_encoder_f RANAP_RIMInformation_encode_der;
+xer_type_decoder_f RANAP_RIMInformation_decode_xer;
+xer_type_encoder_f RANAP_RIMInformation_encode_xer;
+per_type_decoder_f RANAP_RIMInformation_decode_uper;
+per_type_encoder_f RANAP_RIMInformation_encode_uper;
+per_type_decoder_f RANAP_RIMInformation_decode_aper;
+per_type_encoder_f RANAP_RIMInformation_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RIMInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RIMRoutingAddress.h b/include/osmocom/ranap/RANAP_RIMRoutingAddress.h
new file mode 100644
index 0000000..841570d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RIMRoutingAddress.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RIMRoutingAddress_H_
+#define _RANAP_RIMRoutingAddress_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TargetRNC-ID.h>
+#include <osmocom/ranap/RANAP_GERAN-Cell-ID.h>
+#include <osmocom/ranap/RANAP_TargetENB-ID.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RIMRoutingAddress_PR {
+ RANAP_RIMRoutingAddress_PR_NOTHING, /* No components present */
+ RANAP_RIMRoutingAddress_PR_targetRNC_ID,
+ RANAP_RIMRoutingAddress_PR_gERAN_Cell_ID,
+ /* Extensions may appear below */
+ RANAP_RIMRoutingAddress_PR_targeteNB_ID
+} RANAP_RIMRoutingAddress_PR;
+
+/* RANAP_RIMRoutingAddress */
+typedef struct RANAP_RIMRoutingAddress {
+ RANAP_RIMRoutingAddress_PR present;
+ union RANAP_RIMRoutingAddress_u {
+ RANAP_TargetRNC_ID_t targetRNC_ID;
+ RANAP_GERAN_Cell_ID_t gERAN_Cell_ID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_TargetENB_ID_t targeteNB_ID;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RIMRoutingAddress_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RIMRoutingAddress;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RIMRoutingAddress_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RNC-ID.h b/include/osmocom/ranap/RANAP_RNC-ID.h
new file mode 100644
index 0000000..713b3f1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RNC-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RNC_ID_H_
+#define _RANAP_RNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RNC-ID */
+typedef long RANAP_RNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RNC_ID;
+asn_struct_free_f RANAP_RNC_ID_free;
+asn_struct_print_f RANAP_RNC_ID_print;
+asn_constr_check_f RANAP_RNC_ID_constraint;
+ber_type_decoder_f RANAP_RNC_ID_decode_ber;
+der_type_encoder_f RANAP_RNC_ID_encode_der;
+xer_type_decoder_f RANAP_RNC_ID_decode_xer;
+xer_type_encoder_f RANAP_RNC_ID_encode_xer;
+per_type_decoder_f RANAP_RNC_ID_decode_uper;
+per_type_encoder_f RANAP_RNC_ID_encode_uper;
+per_type_decoder_f RANAP_RNC_ID_decode_aper;
+per_type_encoder_f RANAP_RNC_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RNCTraceInformation.h b/include/osmocom/ranap/RANAP_RNCTraceInformation.h
new file mode 100644
index 0000000..0bfbaf5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RNCTraceInformation.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RNCTraceInformation_H_
+#define _RANAP_RNCTraceInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TraceReference.h>
+#include <NativeEnumerated.h>
+#include <osmocom/ranap/RANAP_EquipmentsToBeTraced.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum traceActivationIndicato {
+ traceActivationIndicato_activated = 0,
+ traceActivationIndicato_deactivated = 1
+} e_traceActivationIndicato;
+
+/* RANAP_RNCTraceInformation */
+typedef struct RANAP_RNCTraceInformation {
+ RANAP_TraceReference_t traceReference;
+ long traceActivationIndicato;
+ RANAP_EquipmentsToBeTraced_t *equipmentsToBeTraced /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RNCTraceInformation_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_traceActivationIndicato_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RNCTraceInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RNCTraceInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RNSAPRelocationParameters.h b/include/osmocom/ranap/RANAP_RNSAPRelocationParameters.h
new file mode 100644
index 0000000..a5dfd26
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RNSAPRelocationParameters.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RNSAPRelocationParameters_H_
+#define _RANAP_RNSAPRelocationParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RABParametersList.h>
+#include <osmocom/ranap/RANAP_LocationReportingTransferInformation.h>
+#include <osmocom/ranap/RANAP_TraceInformation.h>
+#include <osmocom/ranap/RANAP_SAI.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RNSAPRelocationParameters */
+typedef struct RANAP_RNSAPRelocationParameters {
+ RANAP_RABParametersList_t *rabParmetersList /* OPTIONAL */;
+ RANAP_LocationReportingTransferInformation_t *locationReporting /* OPTIONAL */;
+ RANAP_TraceInformation_t *traceInformation /* OPTIONAL */;
+ RANAP_SAI_t *sourceSAI /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RNSAPRelocationParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RNSAPRelocationParameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RNSAPRelocationParameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RRC-Container.h b/include/osmocom/ranap/RANAP_RRC-Container.h
new file mode 100644
index 0000000..5cda4b7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RRC-Container.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RRC_Container_H_
+#define _RANAP_RRC_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RRC-Container */
+typedef OCTET_STRING_t RANAP_RRC_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RRC_Container;
+asn_struct_free_f RANAP_RRC_Container_free;
+asn_struct_print_f RANAP_RRC_Container_print;
+asn_constr_check_f RANAP_RRC_Container_constraint;
+ber_type_decoder_f RANAP_RRC_Container_decode_ber;
+der_type_encoder_f RANAP_RRC_Container_encode_der;
+xer_type_decoder_f RANAP_RRC_Container_decode_xer;
+xer_type_encoder_f RANAP_RRC_Container_encode_xer;
+per_type_decoder_f RANAP_RRC_Container_decode_uper;
+per_type_encoder_f RANAP_RRC_Container_encode_uper;
+per_type_decoder_f RANAP_RRC_Container_decode_aper;
+per_type_encoder_f RANAP_RRC_Container_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RRC_Container_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RSRQ-Extension.h b/include/osmocom/ranap/RANAP_RSRQ-Extension.h
new file mode 100644
index 0000000..6fd0231
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RSRQ-Extension.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RSRQ_Extension_H_
+#define _RANAP_RSRQ_Extension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RSRQ-Extension */
+typedef long RANAP_RSRQ_Extension_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RSRQ_Extension;
+asn_struct_free_f RANAP_RSRQ_Extension_free;
+asn_struct_print_f RANAP_RSRQ_Extension_print;
+asn_constr_check_f RANAP_RSRQ_Extension_constraint;
+ber_type_decoder_f RANAP_RSRQ_Extension_decode_ber;
+der_type_encoder_f RANAP_RSRQ_Extension_encode_der;
+xer_type_decoder_f RANAP_RSRQ_Extension_decode_xer;
+xer_type_encoder_f RANAP_RSRQ_Extension_encode_xer;
+per_type_decoder_f RANAP_RSRQ_Extension_decode_uper;
+per_type_encoder_f RANAP_RSRQ_Extension_encode_uper;
+per_type_decoder_f RANAP_RSRQ_Extension_decode_aper;
+per_type_encoder_f RANAP_RSRQ_Extension_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RSRQ_Extension_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RSRQ-Type.h b/include/osmocom/ranap/RANAP_RSRQ-Type.h
new file mode 100644
index 0000000..5846b93
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RSRQ-Type.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RSRQ_Type_H_
+#define _RANAP_RSRQ_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RSRQ-Type */
+typedef struct RANAP_RSRQ_Type {
+ BOOLEAN_t allSymbols;
+ BOOLEAN_t wideBand;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RSRQ_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RSRQ_Type;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RSRQ_Type_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RSRVCC-HO-Indication.h b/include/osmocom/ranap/RANAP_RSRVCC-HO-Indication.h
new file mode 100644
index 0000000..b775efa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RSRVCC-HO-Indication.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RSRVCC_HO_Indication_H_
+#define _RANAP_RSRVCC_HO_Indication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RSRVCC_HO_Indication {
+ RANAP_RSRVCC_HO_Indication_ps_only = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RSRVCC_HO_Indication;
+
+/* RANAP_RSRVCC-HO-Indication */
+typedef long RANAP_RSRVCC_HO_Indication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_HO_Indication;
+asn_struct_free_f RANAP_RSRVCC_HO_Indication_free;
+asn_struct_print_f RANAP_RSRVCC_HO_Indication_print;
+asn_constr_check_f RANAP_RSRVCC_HO_Indication_constraint;
+ber_type_decoder_f RANAP_RSRVCC_HO_Indication_decode_ber;
+der_type_encoder_f RANAP_RSRVCC_HO_Indication_encode_der;
+xer_type_decoder_f RANAP_RSRVCC_HO_Indication_decode_xer;
+xer_type_encoder_f RANAP_RSRVCC_HO_Indication_encode_xer;
+per_type_decoder_f RANAP_RSRVCC_HO_Indication_decode_uper;
+per_type_encoder_f RANAP_RSRVCC_HO_Indication_encode_uper;
+per_type_decoder_f RANAP_RSRVCC_HO_Indication_decode_aper;
+per_type_encoder_f RANAP_RSRVCC_HO_Indication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RSRVCC_HO_Indication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RSRVCC-Information.h b/include/osmocom/ranap/RANAP_RSRVCC-Information.h
new file mode 100644
index 0000000..d4d8e79
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RSRVCC-Information.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RSRVCC_Information_H_
+#define _RANAP_RSRVCC_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <OCTET_STRING.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RSRVCC-Information */
+typedef struct RANAP_RSRVCC_Information {
+ BIT_STRING_t nonce;
+ OCTET_STRING_t iMSInformation;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RSRVCC_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RSRVCC_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h b/include/osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h
new file mode 100644
index 0000000..0be569a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RSRVCC_Operation_Possible_H_
+#define _RANAP_RSRVCC_Operation_Possible_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RSRVCC_Operation_Possible {
+ RANAP_RSRVCC_Operation_Possible_rsrvcc_possible = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RSRVCC_Operation_Possible;
+
+/* RANAP_RSRVCC-Operation-Possible */
+typedef long RANAP_RSRVCC_Operation_Possible_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_Operation_Possible;
+asn_struct_free_f RANAP_RSRVCC_Operation_Possible_free;
+asn_struct_print_f RANAP_RSRVCC_Operation_Possible_print;
+asn_constr_check_f RANAP_RSRVCC_Operation_Possible_constraint;
+ber_type_decoder_f RANAP_RSRVCC_Operation_Possible_decode_ber;
+der_type_encoder_f RANAP_RSRVCC_Operation_Possible_encode_der;
+xer_type_decoder_f RANAP_RSRVCC_Operation_Possible_decode_xer;
+xer_type_encoder_f RANAP_RSRVCC_Operation_Possible_encode_xer;
+per_type_decoder_f RANAP_RSRVCC_Operation_Possible_decode_uper;
+per_type_encoder_f RANAP_RSRVCC_Operation_Possible_encode_uper;
+per_type_decoder_f RANAP_RSRVCC_Operation_Possible_decode_aper;
+per_type_encoder_f RANAP_RSRVCC_Operation_Possible_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RSRVCC_Operation_Possible_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RTLoadValue.h b/include/osmocom/ranap/RANAP_RTLoadValue.h
new file mode 100644
index 0000000..4e5fb5c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RTLoadValue.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RTLoadValue_H_
+#define _RANAP_RTLoadValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RTLoadValue */
+typedef long RANAP_RTLoadValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RTLoadValue;
+asn_struct_free_f RANAP_RTLoadValue_free;
+asn_struct_print_f RANAP_RTLoadValue_print;
+asn_constr_check_f RANAP_RTLoadValue_constraint;
+ber_type_decoder_f RANAP_RTLoadValue_decode_ber;
+der_type_encoder_f RANAP_RTLoadValue_encode_der;
+xer_type_decoder_f RANAP_RTLoadValue_decode_xer;
+xer_type_encoder_f RANAP_RTLoadValue_encode_xer;
+per_type_decoder_f RANAP_RTLoadValue_decode_uper;
+per_type_encoder_f RANAP_RTLoadValue_encode_uper;
+per_type_decoder_f RANAP_RTLoadValue_decode_aper;
+per_type_encoder_f RANAP_RTLoadValue_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RTLoadValue_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RateControlAllowed.h b/include/osmocom/ranap/RANAP_RateControlAllowed.h
new file mode 100644
index 0000000..a465d17
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RateControlAllowed.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RateControlAllowed_H_
+#define _RANAP_RateControlAllowed_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RateControlAllowed {
+ RANAP_RateControlAllowed_not_allowed = 0,
+ RANAP_RateControlAllowed_allowed = 1
+} e_RANAP_RateControlAllowed;
+
+/* RANAP_RateControlAllowed */
+typedef long RANAP_RateControlAllowed_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RateControlAllowed;
+asn_struct_free_f RANAP_RateControlAllowed_free;
+asn_struct_print_f RANAP_RateControlAllowed_print;
+asn_constr_check_f RANAP_RateControlAllowed_constraint;
+ber_type_decoder_f RANAP_RateControlAllowed_decode_ber;
+der_type_encoder_f RANAP_RateControlAllowed_encode_der;
+xer_type_decoder_f RANAP_RateControlAllowed_decode_xer;
+xer_type_encoder_f RANAP_RateControlAllowed_encode_xer;
+per_type_decoder_f RANAP_RateControlAllowed_decode_uper;
+per_type_encoder_f RANAP_RateControlAllowed_encode_uper;
+per_type_decoder_f RANAP_RateControlAllowed_decode_aper;
+per_type_encoder_f RANAP_RateControlAllowed_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RateControlAllowed_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RedirectAttemptFlag.h b/include/osmocom/ranap/RANAP_RedirectAttemptFlag.h
new file mode 100644
index 0000000..df1be41
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RedirectAttemptFlag.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RedirectAttemptFlag_H_
+#define _RANAP_RedirectAttemptFlag_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RedirectAttemptFlag */
+typedef NULL_t RANAP_RedirectAttemptFlag_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectAttemptFlag;
+asn_struct_free_f RANAP_RedirectAttemptFlag_free;
+asn_struct_print_f RANAP_RedirectAttemptFlag_print;
+asn_constr_check_f RANAP_RedirectAttemptFlag_constraint;
+ber_type_decoder_f RANAP_RedirectAttemptFlag_decode_ber;
+der_type_encoder_f RANAP_RedirectAttemptFlag_encode_der;
+xer_type_decoder_f RANAP_RedirectAttemptFlag_decode_xer;
+xer_type_encoder_f RANAP_RedirectAttemptFlag_encode_xer;
+per_type_decoder_f RANAP_RedirectAttemptFlag_decode_uper;
+per_type_encoder_f RANAP_RedirectAttemptFlag_encode_uper;
+per_type_decoder_f RANAP_RedirectAttemptFlag_decode_aper;
+per_type_encoder_f RANAP_RedirectAttemptFlag_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RedirectAttemptFlag_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RedirectionCompleted.h b/include/osmocom/ranap/RANAP_RedirectionCompleted.h
new file mode 100644
index 0000000..21eabeb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RedirectionCompleted.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RedirectionCompleted_H_
+#define _RANAP_RedirectionCompleted_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RedirectionCompleted {
+ RANAP_RedirectionCompleted_redirection_completed = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RedirectionCompleted;
+
+/* RANAP_RedirectionCompleted */
+typedef long RANAP_RedirectionCompleted_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectionCompleted;
+asn_struct_free_f RANAP_RedirectionCompleted_free;
+asn_struct_print_f RANAP_RedirectionCompleted_print;
+asn_constr_check_f RANAP_RedirectionCompleted_constraint;
+ber_type_decoder_f RANAP_RedirectionCompleted_decode_ber;
+der_type_encoder_f RANAP_RedirectionCompleted_encode_der;
+xer_type_decoder_f RANAP_RedirectionCompleted_decode_xer;
+xer_type_encoder_f RANAP_RedirectionCompleted_encode_xer;
+per_type_decoder_f RANAP_RedirectionCompleted_decode_uper;
+per_type_encoder_f RANAP_RedirectionCompleted_encode_uper;
+per_type_decoder_f RANAP_RedirectionCompleted_decode_aper;
+per_type_encoder_f RANAP_RedirectionCompleted_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RedirectionCompleted_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RedirectionIndication.h b/include/osmocom/ranap/RANAP_RedirectionIndication.h
new file mode 100644
index 0000000..444d707
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RedirectionIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RedirectionIndication_H_
+#define _RANAP_RedirectionIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RedirectionIndication */
+typedef struct RANAP_RedirectionIndication {
+ struct redirectionIndication_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } redirectionIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RedirectionIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectionIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RedirectionIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RejectCauseValue.h b/include/osmocom/ranap/RANAP_RejectCauseValue.h
new file mode 100644
index 0000000..0a5f26f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RejectCauseValue.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RejectCauseValue_H_
+#define _RANAP_RejectCauseValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RejectCauseValue {
+ RANAP_RejectCauseValue_pLMN_Not_Allowed = 0,
+ RANAP_RejectCauseValue_location_Area_Not_Allowed = 1,
+ RANAP_RejectCauseValue_roaming_Not_Allowed_In_This_Location_Area = 2,
+ RANAP_RejectCauseValue_no_Suitable_Cell_In_Location_Area = 3,
+ RANAP_RejectCauseValue_gPRS_Services_Not_Allowed_In_This_PLMN = 4,
+ RANAP_RejectCauseValue_cS_PS_coordination_required = 5,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_RejectCauseValue_network_failure = 6,
+ RANAP_RejectCauseValue_not_authorized_for_this_CSG = 7
+} e_RANAP_RejectCauseValue;
+
+/* RANAP_RejectCauseValue */
+typedef long RANAP_RejectCauseValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RejectCauseValue;
+asn_struct_free_f RANAP_RejectCauseValue_free;
+asn_struct_print_f RANAP_RejectCauseValue_print;
+asn_constr_check_f RANAP_RejectCauseValue_constraint;
+ber_type_decoder_f RANAP_RejectCauseValue_decode_ber;
+der_type_encoder_f RANAP_RejectCauseValue_encode_der;
+xer_type_decoder_f RANAP_RejectCauseValue_decode_xer;
+xer_type_encoder_f RANAP_RejectCauseValue_encode_xer;
+per_type_decoder_f RANAP_RejectCauseValue_decode_uper;
+per_type_encoder_f RANAP_RejectCauseValue_encode_uper;
+per_type_decoder_f RANAP_RejectCauseValue_decode_aper;
+per_type_encoder_f RANAP_RejectCauseValue_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RejectCauseValue_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationCancel.h b/include/osmocom/ranap/RANAP_RelocationCancel.h
new file mode 100644
index 0000000..bddd051
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationCancel.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationCancel_H_
+#define _RANAP_RelocationCancel_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationCancel */
+typedef struct RANAP_RelocationCancel {
+ struct relocationCancel_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationCancel_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationCancel_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCancel;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationCancel_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationCancelAcknowledge.h b/include/osmocom/ranap/RANAP_RelocationCancelAcknowledge.h
new file mode 100644
index 0000000..4bbceb9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationCancelAcknowledge.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationCancelAcknowledge_H_
+#define _RANAP_RelocationCancelAcknowledge_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationCancelAcknowledge */
+typedef struct RANAP_RelocationCancelAcknowledge {
+ struct relocationCancelAcknowledge_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationCancelAcknowledge_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationCancelAcknowledge_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCancelAcknowledge;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationCancelAcknowledge_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationCommand.h b/include/osmocom/ranap/RANAP_RelocationCommand.h
new file mode 100644
index 0000000..d17d86b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationCommand.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationCommand_H_
+#define _RANAP_RelocationCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationCommand */
+typedef struct RANAP_RelocationCommand {
+ struct relocationCommand_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationCommand_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCommand;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationCommand_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationComplete.h b/include/osmocom/ranap/RANAP_RelocationComplete.h
new file mode 100644
index 0000000..4e7b5d8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationComplete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationComplete_H_
+#define _RANAP_RelocationComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationComplete */
+typedef struct RANAP_RelocationComplete {
+ struct relocationComplete_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationComplete_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationComplete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationComplete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationDetect.h b/include/osmocom/ranap/RANAP_RelocationDetect.h
new file mode 100644
index 0000000..d06ba66
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationDetect.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationDetect_H_
+#define _RANAP_RelocationDetect_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationDetect */
+typedef struct RANAP_RelocationDetect {
+ struct relocationDetect_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationDetect_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationDetect_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationDetect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationDetect_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationFailure.h b/include/osmocom/ranap/RANAP_RelocationFailure.h
new file mode 100644
index 0000000..76d3d57
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationFailure_H_
+#define _RANAP_RelocationFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationFailure */
+typedef struct RANAP_RelocationFailure {
+ struct relocationFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationPreparationFailure.h b/include/osmocom/ranap/RANAP_RelocationPreparationFailure.h
new file mode 100644
index 0000000..8781bbe
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationPreparationFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationPreparationFailure_H_
+#define _RANAP_RelocationPreparationFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationPreparationFailure */
+typedef struct RANAP_RelocationPreparationFailure {
+ struct relocationPreparationFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationPreparationFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationPreparationFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationPreparationFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationPreparationFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationRequest.h b/include/osmocom/ranap/RANAP_RelocationRequest.h
new file mode 100644
index 0000000..06d4c07
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationRequest_H_
+#define _RANAP_RelocationRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationRequest */
+typedef struct RANAP_RelocationRequest {
+ struct relocationRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationRequestAcknowledge.h b/include/osmocom/ranap/RANAP_RelocationRequestAcknowledge.h
new file mode 100644
index 0000000..ba13e88
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationRequestAcknowledge.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationRequestAcknowledge_H_
+#define _RANAP_RelocationRequestAcknowledge_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationRequestAcknowledge */
+typedef struct RANAP_RelocationRequestAcknowledge {
+ struct relocationRequestAcknowledge_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationRequestAcknowledge_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationRequestAcknowledge_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequestAcknowledge;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationRequestAcknowledge_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationRequired.h b/include/osmocom/ranap/RANAP_RelocationRequired.h
new file mode 100644
index 0000000..1187c90
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationRequired.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_RelocationRequired_H_
+#define _RANAP_RelocationRequired_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RelocationRequired */
+typedef struct RANAP_RelocationRequired {
+ struct relocationRequired_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } relocationRequired_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RelocationRequired_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequired;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationRequired_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationRequirement.h b/include/osmocom/ranap/RANAP_RelocationRequirement.h
new file mode 100644
index 0000000..56623ed
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationRequirement.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RelocationRequirement_H_
+#define _RANAP_RelocationRequirement_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RelocationRequirement {
+ RANAP_RelocationRequirement_lossless = 0,
+ RANAP_RelocationRequirement_none = 1,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_RelocationRequirement_realtime = 2
+} e_RANAP_RelocationRequirement;
+
+/* RANAP_RelocationRequirement */
+typedef long RANAP_RelocationRequirement_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequirement;
+asn_struct_free_f RANAP_RelocationRequirement_free;
+asn_struct_print_f RANAP_RelocationRequirement_print;
+asn_constr_check_f RANAP_RelocationRequirement_constraint;
+ber_type_decoder_f RANAP_RelocationRequirement_decode_ber;
+der_type_encoder_f RANAP_RelocationRequirement_encode_der;
+xer_type_decoder_f RANAP_RelocationRequirement_decode_xer;
+xer_type_encoder_f RANAP_RelocationRequirement_encode_xer;
+per_type_decoder_f RANAP_RelocationRequirement_decode_uper;
+per_type_encoder_f RANAP_RelocationRequirement_encode_uper;
+per_type_decoder_f RANAP_RelocationRequirement_decode_aper;
+per_type_encoder_f RANAP_RelocationRequirement_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationRequirement_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RelocationType.h b/include/osmocom/ranap/RANAP_RelocationType.h
new file mode 100644
index 0000000..4ad5f58
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RelocationType.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RelocationType_H_
+#define _RANAP_RelocationType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RelocationType {
+ RANAP_RelocationType_ue_not_involved = 0,
+ RANAP_RelocationType_ue_involved = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_RelocationType;
+
+/* RANAP_RelocationType */
+typedef long RANAP_RelocationType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationType;
+asn_struct_free_f RANAP_RelocationType_free;
+asn_struct_print_f RANAP_RelocationType_print;
+asn_constr_check_f RANAP_RelocationType_constraint;
+ber_type_decoder_f RANAP_RelocationType_decode_ber;
+der_type_encoder_f RANAP_RelocationType_encode_der;
+xer_type_decoder_f RANAP_RelocationType_decode_xer;
+xer_type_encoder_f RANAP_RelocationType_encode_xer;
+per_type_decoder_f RANAP_RelocationType_decode_uper;
+per_type_encoder_f RANAP_RelocationType_encode_uper;
+per_type_decoder_f RANAP_RelocationType_decode_aper;
+per_type_encoder_f RANAP_RelocationType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RelocationType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RepetitionNumber0.h b/include/osmocom/ranap/RANAP_RepetitionNumber0.h
new file mode 100644
index 0000000..41e8950
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RepetitionNumber0.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RepetitionNumber0_H_
+#define _RANAP_RepetitionNumber0_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RepetitionNumber0 */
+typedef long RANAP_RepetitionNumber0_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RepetitionNumber0;
+asn_struct_free_f RANAP_RepetitionNumber0_free;
+asn_struct_print_f RANAP_RepetitionNumber0_print;
+asn_constr_check_f RANAP_RepetitionNumber0_constraint;
+ber_type_decoder_f RANAP_RepetitionNumber0_decode_ber;
+der_type_encoder_f RANAP_RepetitionNumber0_encode_der;
+xer_type_decoder_f RANAP_RepetitionNumber0_decode_xer;
+xer_type_encoder_f RANAP_RepetitionNumber0_encode_xer;
+per_type_decoder_f RANAP_RepetitionNumber0_decode_uper;
+per_type_encoder_f RANAP_RepetitionNumber0_encode_uper;
+per_type_decoder_f RANAP_RepetitionNumber0_decode_aper;
+per_type_encoder_f RANAP_RepetitionNumber0_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RepetitionNumber0_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RepetitionNumber1.h b/include/osmocom/ranap/RANAP_RepetitionNumber1.h
new file mode 100644
index 0000000..b151d87
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RepetitionNumber1.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RepetitionNumber1_H_
+#define _RANAP_RepetitionNumber1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RepetitionNumber1 */
+typedef long RANAP_RepetitionNumber1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RepetitionNumber1;
+asn_struct_free_f RANAP_RepetitionNumber1_free;
+asn_struct_print_f RANAP_RepetitionNumber1_print;
+asn_constr_check_f RANAP_RepetitionNumber1_constraint;
+ber_type_decoder_f RANAP_RepetitionNumber1_decode_ber;
+der_type_encoder_f RANAP_RepetitionNumber1_encode_der;
+xer_type_decoder_f RANAP_RepetitionNumber1_decode_xer;
+xer_type_encoder_f RANAP_RepetitionNumber1_encode_xer;
+per_type_decoder_f RANAP_RepetitionNumber1_decode_uper;
+per_type_encoder_f RANAP_RepetitionNumber1_encode_uper;
+per_type_decoder_f RANAP_RepetitionNumber1_decode_aper;
+per_type_encoder_f RANAP_RepetitionNumber1_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RepetitionNumber1_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ReportAmount.h b/include/osmocom/ranap/RANAP_ReportAmount.h
new file mode 100644
index 0000000..daf8dd6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ReportAmount.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ReportAmount_H_
+#define _RANAP_ReportAmount_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ReportAmount {
+ RANAP_ReportAmount_n1 = 0,
+ RANAP_ReportAmount_n2 = 1,
+ RANAP_ReportAmount_n4 = 2,
+ RANAP_ReportAmount_n8 = 3,
+ RANAP_ReportAmount_n16 = 4,
+ RANAP_ReportAmount_n32 = 5,
+ RANAP_ReportAmount_n64 = 6,
+ RANAP_ReportAmount_infinity = 7
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ReportAmount;
+
+/* RANAP_ReportAmount */
+typedef long RANAP_ReportAmount_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ReportAmount;
+asn_struct_free_f RANAP_ReportAmount_free;
+asn_struct_print_f RANAP_ReportAmount_print;
+asn_constr_check_f RANAP_ReportAmount_constraint;
+ber_type_decoder_f RANAP_ReportAmount_decode_ber;
+der_type_encoder_f RANAP_ReportAmount_encode_der;
+xer_type_decoder_f RANAP_ReportAmount_decode_xer;
+xer_type_encoder_f RANAP_ReportAmount_encode_xer;
+per_type_decoder_f RANAP_ReportAmount_decode_uper;
+per_type_encoder_f RANAP_ReportAmount_encode_uper;
+per_type_decoder_f RANAP_ReportAmount_decode_aper;
+per_type_encoder_f RANAP_ReportAmount_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ReportAmount_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ReportArea.h b/include/osmocom/ranap/RANAP_ReportArea.h
new file mode 100644
index 0000000..e5ea1c8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ReportArea.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ReportArea_H_
+#define _RANAP_ReportArea_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ReportArea {
+ RANAP_ReportArea_service_area = 0,
+ RANAP_ReportArea_geographical_area = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ReportArea;
+
+/* RANAP_ReportArea */
+typedef long RANAP_ReportArea_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ReportArea;
+asn_struct_free_f RANAP_ReportArea_free;
+asn_struct_print_f RANAP_ReportArea_print;
+asn_constr_check_f RANAP_ReportArea_constraint;
+ber_type_decoder_f RANAP_ReportArea_decode_ber;
+der_type_encoder_f RANAP_ReportArea_encode_der;
+xer_type_decoder_f RANAP_ReportArea_decode_xer;
+xer_type_encoder_f RANAP_ReportArea_encode_xer;
+per_type_decoder_f RANAP_ReportArea_decode_uper;
+per_type_encoder_f RANAP_ReportArea_encode_uper;
+per_type_decoder_f RANAP_ReportArea_decode_aper;
+per_type_encoder_f RANAP_ReportArea_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ReportArea_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ReportChangeOfSAI.h b/include/osmocom/ranap/RANAP_ReportChangeOfSAI.h
new file mode 100644
index 0000000..b6e0a05
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ReportChangeOfSAI.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ReportChangeOfSAI_H_
+#define _RANAP_ReportChangeOfSAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ReportChangeOfSAI {
+ RANAP_ReportChangeOfSAI_requested = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ReportChangeOfSAI;
+
+/* RANAP_ReportChangeOfSAI */
+typedef long RANAP_ReportChangeOfSAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ReportChangeOfSAI;
+asn_struct_free_f RANAP_ReportChangeOfSAI_free;
+asn_struct_print_f RANAP_ReportChangeOfSAI_print;
+asn_constr_check_f RANAP_ReportChangeOfSAI_constraint;
+ber_type_decoder_f RANAP_ReportChangeOfSAI_decode_ber;
+der_type_encoder_f RANAP_ReportChangeOfSAI_encode_der;
+xer_type_decoder_f RANAP_ReportChangeOfSAI_decode_xer;
+xer_type_encoder_f RANAP_ReportChangeOfSAI_encode_xer;
+per_type_decoder_f RANAP_ReportChangeOfSAI_decode_uper;
+per_type_encoder_f RANAP_ReportChangeOfSAI_encode_uper;
+per_type_decoder_f RANAP_ReportChangeOfSAI_decode_aper;
+per_type_encoder_f RANAP_ReportChangeOfSAI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ReportChangeOfSAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ReportInterval.h b/include/osmocom/ranap/RANAP_ReportInterval.h
new file mode 100644
index 0000000..6efdb1a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ReportInterval.h
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ReportInterval_H_
+#define _RANAP_ReportInterval_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ReportInterval {
+ RANAP_ReportInterval_ms250 = 0,
+ RANAP_ReportInterval_ms500 = 1,
+ RANAP_ReportInterval_ms1000 = 2,
+ RANAP_ReportInterval_ms2000 = 3,
+ RANAP_ReportInterval_ms3000 = 4,
+ RANAP_ReportInterval_ms4000 = 5,
+ RANAP_ReportInterval_ms6000 = 6,
+ RANAP_ReportInterval_ms12000 = 7,
+ RANAP_ReportInterval_ms16000 = 8,
+ RANAP_ReportInterval_ms20000 = 9,
+ RANAP_ReportInterval_ms24000 = 10,
+ RANAP_ReportInterval_ms32000 = 11,
+ RANAP_ReportInterval_ms64000 = 12,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_ReportInterval_ms8000 = 13,
+ RANAP_ReportInterval_ms28000 = 14
+} e_RANAP_ReportInterval;
+
+/* RANAP_ReportInterval */
+typedef long RANAP_ReportInterval_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ReportInterval;
+asn_struct_free_f RANAP_ReportInterval_free;
+asn_struct_print_f RANAP_ReportInterval_print;
+asn_constr_check_f RANAP_ReportInterval_constraint;
+ber_type_decoder_f RANAP_ReportInterval_decode_ber;
+der_type_encoder_f RANAP_ReportInterval_encode_der;
+xer_type_decoder_f RANAP_ReportInterval_decode_xer;
+xer_type_encoder_f RANAP_ReportInterval_encode_xer;
+per_type_decoder_f RANAP_ReportInterval_decode_uper;
+per_type_encoder_f RANAP_ReportInterval_encode_uper;
+per_type_decoder_f RANAP_ReportInterval_decode_aper;
+per_type_encoder_f RANAP_ReportInterval_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ReportInterval_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestType.h b/include/osmocom/ranap/RANAP_RequestType.h
new file mode 100644
index 0000000..86ed875
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestType.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestType_H_
+#define _RANAP_RequestType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Event.h>
+#include <osmocom/ranap/RANAP_ReportArea.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RequestType */
+typedef struct RANAP_RequestType {
+ RANAP_Event_t event;
+ RANAP_ReportArea_t reportArea;
+ long *accuracyCode /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RequestType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestType;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h
new file mode 100644
index 0000000..963d25a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+#define _RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList */
+typedef struct RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedGuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h
new file mode 100644
index 0000000..c878ec9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_H_
+#define _RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList */
+typedef struct RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList {
+ A_SEQUENCE_OF(RANAP_ExtendedMaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h
new file mode 100644
index 0000000..d2d39ad
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_H_
+#define _RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Requested-RAB-Parameter-GuaranteedBitrateList */
+typedef struct RANAP_Requested_RAB_Parameter_GuaranteedBitrateList {
+ A_SEQUENCE_OF(RANAP_GuaranteedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h
new file mode 100644
index 0000000..22047b7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Requested_RAB_Parameter_MaxBitrateList_H_
+#define _RANAP_Requested_RAB_Parameter_MaxBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Requested-RAB-Parameter-MaxBitrateList */
+typedef struct RANAP_Requested_RAB_Parameter_MaxBitrateList {
+ A_SEQUENCE_OF(RANAP_MaxBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Requested_RAB_Parameter_MaxBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Requested_RAB_Parameter_MaxBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h
new file mode 100644
index 0000000..82352fd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Requested_RAB_Parameter_Values_H_
+#define _RANAP_Requested_RAB_Parameter_Values_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Requested-RAB-Parameter-Values */
+typedef struct RANAP_Requested_RAB_Parameter_Values {
+ RANAP_Requested_RAB_Parameter_MaxBitrateList_t *requestedMaxBitrates /* OPTIONAL */;
+ RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_t *requestedGuaranteedBitrates /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Requested_RAB_Parameter_Values_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_Values;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Requested_RAB_Parameter_Values_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h b/include/osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h
new file mode 100644
index 0000000..86adfde
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestedGANSSAssistanceData_H_
+#define _RANAP_RequestedGANSSAssistanceData_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RequestedGANSSAssistanceData */
+typedef OCTET_STRING_t RANAP_RequestedGANSSAssistanceData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedGANSSAssistanceData;
+asn_struct_free_f RANAP_RequestedGANSSAssistanceData_free;
+asn_struct_print_f RANAP_RequestedGANSSAssistanceData_print;
+asn_constr_check_f RANAP_RequestedGANSSAssistanceData_constraint;
+ber_type_decoder_f RANAP_RequestedGANSSAssistanceData_decode_ber;
+der_type_encoder_f RANAP_RequestedGANSSAssistanceData_encode_der;
+xer_type_decoder_f RANAP_RequestedGANSSAssistanceData_decode_xer;
+xer_type_encoder_f RANAP_RequestedGANSSAssistanceData_encode_xer;
+per_type_decoder_f RANAP_RequestedGANSSAssistanceData_decode_uper;
+per_type_encoder_f RANAP_RequestedGANSSAssistanceData_encode_uper;
+per_type_decoder_f RANAP_RequestedGANSSAssistanceData_decode_aper;
+per_type_encoder_f RANAP_RequestedGANSSAssistanceData_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestedGANSSAssistanceData_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestedGPSAssistanceData.h b/include/osmocom/ranap/RANAP_RequestedGPSAssistanceData.h
new file mode 100644
index 0000000..0ce5a5c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestedGPSAssistanceData.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestedGPSAssistanceData_H_
+#define _RANAP_RequestedGPSAssistanceData_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RequestedGPSAssistanceData */
+typedef OCTET_STRING_t RANAP_RequestedGPSAssistanceData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedGPSAssistanceData;
+asn_struct_free_f RANAP_RequestedGPSAssistanceData_free;
+asn_struct_print_f RANAP_RequestedGPSAssistanceData_print;
+asn_constr_check_f RANAP_RequestedGPSAssistanceData_constraint;
+ber_type_decoder_f RANAP_RequestedGPSAssistanceData_decode_ber;
+der_type_encoder_f RANAP_RequestedGPSAssistanceData_encode_der;
+xer_type_decoder_f RANAP_RequestedGPSAssistanceData_decode_xer;
+xer_type_encoder_f RANAP_RequestedGPSAssistanceData_encode_xer;
+per_type_decoder_f RANAP_RequestedGPSAssistanceData_decode_uper;
+per_type_encoder_f RANAP_RequestedGPSAssistanceData_encode_uper;
+per_type_decoder_f RANAP_RequestedGPSAssistanceData_decode_aper;
+per_type_encoder_f RANAP_RequestedGPSAssistanceData_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestedGPSAssistanceData_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h b/include/osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h
new file mode 100644
index 0000000..786ea7c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestedLocationRelatedDataType_H_
+#define _RANAP_RequestedLocationRelatedDataType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_RequestedLocationRelatedDataType {
+ RANAP_RequestedLocationRelatedDataType_decipheringKeysUEBasedOTDOA = 0,
+ RANAP_RequestedLocationRelatedDataType_decipheringKeysAssistedGPS = 1,
+ RANAP_RequestedLocationRelatedDataType_dedicatedAssistanceDataUEBasedOTDOA = 2,
+ RANAP_RequestedLocationRelatedDataType_dedicatedAssistanceDataAssistedGPS = 3,
+ /*
+ * Enumeration is extensible
+ */
+ RANAP_RequestedLocationRelatedDataType_decipheringKeysAssistedGANSS = 4,
+ RANAP_RequestedLocationRelatedDataType_dedicatedAssistanceDataAssistedGANSS = 5,
+ RANAP_RequestedLocationRelatedDataType_decipheringKeysAssistedGPSandGANSS = 6,
+ RANAP_RequestedLocationRelatedDataType_dedicatedAssistanceDataAssistedGPSandGANSS = 7
+} e_RANAP_RequestedLocationRelatedDataType;
+
+/* RANAP_RequestedLocationRelatedDataType */
+typedef long RANAP_RequestedLocationRelatedDataType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedLocationRelatedDataType;
+asn_struct_free_f RANAP_RequestedLocationRelatedDataType_free;
+asn_struct_print_f RANAP_RequestedLocationRelatedDataType_print;
+asn_constr_check_f RANAP_RequestedLocationRelatedDataType_constraint;
+ber_type_decoder_f RANAP_RequestedLocationRelatedDataType_decode_ber;
+der_type_encoder_f RANAP_RequestedLocationRelatedDataType_encode_der;
+xer_type_decoder_f RANAP_RequestedLocationRelatedDataType_decode_xer;
+xer_type_encoder_f RANAP_RequestedLocationRelatedDataType_encode_xer;
+per_type_decoder_f RANAP_RequestedLocationRelatedDataType_decode_uper;
+per_type_encoder_f RANAP_RequestedLocationRelatedDataType_encode_uper;
+per_type_decoder_f RANAP_RequestedLocationRelatedDataType_decode_aper;
+per_type_encoder_f RANAP_RequestedLocationRelatedDataType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestedLocationRelatedDataType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h b/include/osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h
new file mode 100644
index 0000000..9ba0d86
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_H_
+#define _RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RequestedMBMSIPMulticastAddressandAPNRequest */
+typedef struct RANAP_RequestedMBMSIPMulticastAddressandAPNRequest {
+ A_SEQUENCE_OF(RANAP_MBMSIPMulticastAddressandAPNlist_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_RequestedMulticastServiceList.h b/include/osmocom/ranap/RANAP_RequestedMulticastServiceList.h
new file mode 100644
index 0000000..9d0923c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_RequestedMulticastServiceList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_RequestedMulticastServiceList_H_
+#define _RANAP_RequestedMulticastServiceList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_RequestedMulticastServiceList */
+typedef struct RANAP_RequestedMulticastServiceList {
+ A_SEQUENCE_OF(RANAP_TMGI_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_RequestedMulticastServiceList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedMulticastServiceList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_RequestedMulticastServiceList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Reset.h b/include/osmocom/ranap/RANAP_Reset.h
new file mode 100644
index 0000000..f02a5fb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Reset.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_Reset_H_
+#define _RANAP_Reset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Reset */
+typedef struct RANAP_Reset {
+ struct reset_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } reset_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Reset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Reset;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Reset_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetAcknowledge.h b/include/osmocom/ranap/RANAP_ResetAcknowledge.h
new file mode 100644
index 0000000..dc5c643
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetAcknowledge.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetAcknowledge_H_
+#define _RANAP_ResetAcknowledge_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetAcknowledge */
+typedef struct RANAP_ResetAcknowledge {
+ struct resetAcknowledge_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } resetAcknowledge_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetAcknowledge_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetAcknowledge;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetAcknowledge_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResource.h b/include/osmocom/ranap/RANAP_ResetResource.h
new file mode 100644
index 0000000..ba35fa6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResource.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResource_H_
+#define _RANAP_ResetResource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResource */
+typedef struct RANAP_ResetResource {
+ struct resetResource_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } resetResource_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResource;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResource_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResourceAckItem.h b/include/osmocom/ranap/RANAP_ResetResourceAckItem.h
new file mode 100644
index 0000000..94ae632
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResourceAckItem.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResourceAckItem_H_
+#define _RANAP_ResetResourceAckItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResourceAckItem */
+typedef struct RANAP_ResetResourceAckItem {
+ RANAP_IuSignallingConnectionIdentifier_t iuSigConId;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResourceAckItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAckItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResourceAckItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResourceAckList.h b/include/osmocom/ranap/RANAP_ResetResourceAckList.h
new file mode 100644
index 0000000..9d699b5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResourceAckList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResourceAckList_H_
+#define _RANAP_ResetResourceAckList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResourceAckList */
+typedef struct RANAP_ResetResourceAckList {
+ struct resetResourceAckList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } resetResourceAckList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResourceAckList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAckList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResourceAckList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResourceAcknowledge.h b/include/osmocom/ranap/RANAP_ResetResourceAcknowledge.h
new file mode 100644
index 0000000..f268623
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResourceAcknowledge.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResourceAcknowledge_H_
+#define _RANAP_ResetResourceAcknowledge_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResourceAcknowledge */
+typedef struct RANAP_ResetResourceAcknowledge {
+ struct resetResourceAcknowledge_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } resetResourceAcknowledge_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResourceAcknowledge_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAcknowledge;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResourceAcknowledge_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResourceItem.h b/include/osmocom/ranap/RANAP_ResetResourceItem.h
new file mode 100644
index 0000000..9482a16
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResourceItem.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResourceItem_H_
+#define _RANAP_ResetResourceItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResourceItem */
+typedef struct RANAP_ResetResourceItem {
+ RANAP_IuSignallingConnectionIdentifier_t iuSigConId;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResourceItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResourceItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResetResourceList.h b/include/osmocom/ranap/RANAP_ResetResourceList.h
new file mode 100644
index 0000000..b840101
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResetResourceList.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_ResetResourceList_H_
+#define _RANAP_ResetResourceList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResetResourceList */
+typedef struct RANAP_ResetResourceList {
+ struct resetResourceList_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } resetResourceList_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResetResourceList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResetResourceList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResidualBitErrorRatio.h b/include/osmocom/ranap/RANAP_ResidualBitErrorRatio.h
new file mode 100644
index 0000000..5acfc8c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResidualBitErrorRatio.h
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ResidualBitErrorRatio_H_
+#define _RANAP_ResidualBitErrorRatio_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_ResidualBitErrorRatio */
+typedef struct RANAP_ResidualBitErrorRatio {
+ long mantissa;
+ long exponent;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_ResidualBitErrorRatio_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResidualBitErrorRatio;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResidualBitErrorRatio_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_ResponseTime.h b/include/osmocom/ranap/RANAP_ResponseTime.h
new file mode 100644
index 0000000..daeda50
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_ResponseTime.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_ResponseTime_H_
+#define _RANAP_ResponseTime_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_ResponseTime {
+ RANAP_ResponseTime_lowdelay = 0,
+ RANAP_ResponseTime_delaytolerant = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_ResponseTime;
+
+/* RANAP_ResponseTime */
+typedef long RANAP_ResponseTime_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_ResponseTime;
+asn_struct_free_f RANAP_ResponseTime_free;
+asn_struct_print_f RANAP_ResponseTime_print;
+asn_constr_check_f RANAP_ResponseTime_constraint;
+ber_type_decoder_f RANAP_ResponseTime_decode_ber;
+der_type_encoder_f RANAP_ResponseTime_encode_der;
+xer_type_decoder_f RANAP_ResponseTime_decode_xer;
+xer_type_encoder_f RANAP_ResponseTime_encode_xer;
+per_type_decoder_f RANAP_ResponseTime_decode_uper;
+per_type_encoder_f RANAP_ResponseTime_encode_uper;
+per_type_decoder_f RANAP_ResponseTime_decode_aper;
+per_type_encoder_f RANAP_ResponseTime_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_ResponseTime_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SAC.h b/include/osmocom/ranap/RANAP_SAC.h
new file mode 100644
index 0000000..f7d7e80
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SAC.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SAC_H_
+#define _RANAP_SAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SAC */
+typedef OCTET_STRING_t RANAP_SAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SAC;
+asn_struct_free_f RANAP_SAC_free;
+asn_struct_print_f RANAP_SAC_print;
+asn_constr_check_f RANAP_SAC_constraint;
+ber_type_decoder_f RANAP_SAC_decode_ber;
+der_type_encoder_f RANAP_SAC_encode_der;
+xer_type_decoder_f RANAP_SAC_decode_xer;
+xer_type_encoder_f RANAP_SAC_encode_xer;
+per_type_decoder_f RANAP_SAC_decode_uper;
+per_type_encoder_f RANAP_SAC_encode_uper;
+per_type_decoder_f RANAP_SAC_decode_aper;
+per_type_encoder_f RANAP_SAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SAI.h b/include/osmocom/ranap/RANAP_SAI.h
new file mode 100644
index 0000000..1a8d622
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SAI.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SAI_H_
+#define _RANAP_SAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_LAC.h>
+#include <osmocom/ranap/RANAP_SAC.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SAI */
+typedef struct RANAP_SAI {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_LAC_t lAC;
+ RANAP_SAC_t sAC;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SAPI.h b/include/osmocom/ranap/RANAP_SAPI.h
new file mode 100644
index 0000000..51a4996
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SAPI.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SAPI_H_
+#define _RANAP_SAPI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SAPI {
+ RANAP_SAPI_sapi_0 = 0,
+ RANAP_SAPI_sapi_3 = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_SAPI;
+
+/* RANAP_SAPI */
+typedef long RANAP_SAPI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SAPI;
+asn_struct_free_f RANAP_SAPI_free;
+asn_struct_print_f RANAP_SAPI_print;
+asn_constr_check_f RANAP_SAPI_constraint;
+ber_type_decoder_f RANAP_SAPI_decode_ber;
+der_type_encoder_f RANAP_SAPI_encode_der;
+xer_type_decoder_f RANAP_SAPI_decode_xer;
+xer_type_encoder_f RANAP_SAPI_encode_xer;
+per_type_decoder_f RANAP_SAPI_decode_uper;
+per_type_encoder_f RANAP_SAPI_encode_uper;
+per_type_decoder_f RANAP_SAPI_decode_aper;
+per_type_encoder_f RANAP_SAPI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SAPI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SDU-ErrorRatio.h b/include/osmocom/ranap/RANAP_SDU-ErrorRatio.h
new file mode 100644
index 0000000..8835247
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SDU-ErrorRatio.h
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SDU_ErrorRatio_H_
+#define _RANAP_SDU_ErrorRatio_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SDU-ErrorRatio */
+typedef struct RANAP_SDU_ErrorRatio {
+ long mantissa;
+ long exponent;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SDU_ErrorRatio_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_ErrorRatio;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SDU_ErrorRatio_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h b/include/osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h
new file mode 100644
index 0000000..ed966d2
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SDU_FormatInformationParameterItem_H_
+#define _RANAP_SDU_FormatInformationParameterItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SubflowSDU-Size.h>
+#include <osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SDU-FormatInformationParameterItem */
+typedef struct RANAP_SDU_FormatInformationParameterItem {
+ RANAP_SubflowSDU_Size_t *subflowSDU_Size /* OPTIONAL */;
+ RANAP_RAB_SubflowCombinationBitRate_t *rAB_SubflowCombinationBitRate /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SDU_FormatInformationParameterItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_FormatInformationParameterItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SDU_FormatInformationParameterItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SDU-FormatInformationParameters.h b/include/osmocom/ranap/RANAP_SDU-FormatInformationParameters.h
new file mode 100644
index 0000000..6eb520c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SDU-FormatInformationParameters.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SDU_FormatInformationParameters_H_
+#define _RANAP_SDU_FormatInformationParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SDU-FormatInformationParameters */
+typedef struct RANAP_SDU_FormatInformationParameters {
+ A_SEQUENCE_OF(RANAP_SDU_FormatInformationParameterItem_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SDU_FormatInformationParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_FormatInformationParameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SDU_FormatInformationParameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SDU-ParameterItem.h b/include/osmocom/ranap/RANAP_SDU-ParameterItem.h
new file mode 100644
index 0000000..dd700b8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SDU-ParameterItem.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SDU_ParameterItem_H_
+#define _RANAP_SDU_ParameterItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SDU-ErrorRatio.h>
+#include <osmocom/ranap/RANAP_ResidualBitErrorRatio.h>
+#include <osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h>
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameters.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SDU-ParameterItem */
+typedef struct RANAP_SDU_ParameterItem {
+ RANAP_SDU_ErrorRatio_t *sDU_ErrorRatio /* OPTIONAL */;
+ RANAP_ResidualBitErrorRatio_t residualBitErrorRatio;
+ RANAP_DeliveryOfErroneousSDU_t deliveryOfErroneousSDU;
+ RANAP_SDU_FormatInformationParameters_t *sDU_FormatInformationParameters /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SDU_ParameterItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_ParameterItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SDU_ParameterItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SDU-Parameters.h b/include/osmocom/ranap/RANAP_SDU-Parameters.h
new file mode 100644
index 0000000..5fc7f8b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SDU-Parameters.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SDU_Parameters_H_
+#define _RANAP_SDU_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SDU-ParameterItem.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SDU-Parameters */
+typedef struct RANAP_SDU_Parameters {
+ A_SEQUENCE_OF(RANAP_SDU_ParameterItem_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SDU_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SDU_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SNA-Access-Information.h b/include/osmocom/ranap/RANAP_SNA-Access-Information.h
new file mode 100644
index 0000000..e98207a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SNA-Access-Information.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SNA_Access_Information_H_
+#define _RANAP_SNA_Access_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_AuthorisedPLMNs.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SNA-Access-Information */
+typedef struct RANAP_SNA_Access_Information {
+ RANAP_AuthorisedPLMNs_t authorisedPLMNs;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SNA_Access_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SNA_Access_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SNA_Access_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SNAC.h b/include/osmocom/ranap/RANAP_SNAC.h
new file mode 100644
index 0000000..e6e06f9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SNAC.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SNAC_H_
+#define _RANAP_SNAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SNAC */
+typedef long RANAP_SNAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SNAC;
+asn_struct_free_f RANAP_SNAC_free;
+asn_struct_print_f RANAP_SNAC_print;
+asn_constr_check_f RANAP_SNAC_constraint;
+ber_type_decoder_f RANAP_SNAC_decode_ber;
+der_type_encoder_f RANAP_SNAC_encode_der;
+xer_type_decoder_f RANAP_SNAC_decode_xer;
+xer_type_encoder_f RANAP_SNAC_encode_xer;
+per_type_decoder_f RANAP_SNAC_decode_uper;
+per_type_encoder_f RANAP_SNAC_encode_uper;
+per_type_decoder_f RANAP_SNAC_decode_aper;
+per_type_encoder_f RANAP_SNAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SNAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRB-ID.h b/include/osmocom/ranap/RANAP_SRB-ID.h
new file mode 100644
index 0000000..1b86a32
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRB-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRB_ID_H_
+#define _RANAP_SRB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRB-ID */
+typedef long RANAP_SRB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_ID;
+asn_struct_free_f RANAP_SRB_ID_free;
+asn_struct_print_f RANAP_SRB_ID_print;
+asn_constr_check_f RANAP_SRB_ID_constraint;
+ber_type_decoder_f RANAP_SRB_ID_decode_ber;
+der_type_encoder_f RANAP_SRB_ID_encode_der;
+xer_type_decoder_f RANAP_SRB_ID_decode_xer;
+xer_type_encoder_f RANAP_SRB_ID_encode_xer;
+per_type_decoder_f RANAP_SRB_ID_decode_uper;
+per_type_encoder_f RANAP_SRB_ID_encode_uper;
+per_type_decoder_f RANAP_SRB_ID_decode_aper;
+per_type_encoder_f RANAP_SRB_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRB-TrCH-Mapping.h b/include/osmocom/ranap/RANAP_SRB-TrCH-Mapping.h
new file mode 100644
index 0000000..7cb3959
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRB-TrCH-Mapping.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRB_TrCH_Mapping_H_
+#define _RANAP_SRB_TrCH_Mapping_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRB-TrCH-Mapping */
+typedef struct RANAP_SRB_TrCH_Mapping {
+ A_SEQUENCE_OF(RANAP_SRB_TrCH_MappingItem_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRB_TrCH_Mapping_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_TrCH_Mapping;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRB_TrCH_Mapping_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h b/include/osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h
new file mode 100644
index 0000000..36032e9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRB_TrCH_MappingItem_H_
+#define _RANAP_SRB_TrCH_MappingItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SRB-ID.h>
+#include <osmocom/ranap/RANAP_TrCH-ID.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRB-TrCH-MappingItem */
+typedef struct RANAP_SRB_TrCH_MappingItem {
+ RANAP_SRB_ID_t sRB_ID;
+ RANAP_TrCH_ID_t trCH_ID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRB_TrCH_MappingItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_TrCH_MappingItem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRB_TrCH_MappingItem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRNS-ContextRequest.h b/include/osmocom/ranap/RANAP_SRNS-ContextRequest.h
new file mode 100644
index 0000000..168b9b5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRNS-ContextRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SRNS_ContextRequest_H_
+#define _RANAP_SRNS_ContextRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRNS-ContextRequest */
+typedef struct RANAP_SRNS_ContextRequest {
+ struct srnS_ContextRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } srnS_ContextRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRNS_ContextRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_ContextRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRNS_ContextRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRNS-ContextResponse.h b/include/osmocom/ranap/RANAP_SRNS-ContextResponse.h
new file mode 100644
index 0000000..57fa412
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRNS-ContextResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SRNS_ContextResponse_H_
+#define _RANAP_SRNS_ContextResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRNS-ContextResponse */
+typedef struct RANAP_SRNS_ContextResponse {
+ struct srnS_ContextResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } srnS_ContextResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRNS_ContextResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_ContextResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRNS_ContextResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRNS-DataForwardCommand.h b/include/osmocom/ranap/RANAP_SRNS-DataForwardCommand.h
new file mode 100644
index 0000000..ab554fd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRNS-DataForwardCommand.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SRNS_DataForwardCommand_H_
+#define _RANAP_SRNS_DataForwardCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRNS-DataForwardCommand */
+typedef struct RANAP_SRNS_DataForwardCommand {
+ struct srnS_DataForwardCommand_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } srnS_DataForwardCommand_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRNS_DataForwardCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_DataForwardCommand;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRNS_DataForwardCommand_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h b/include/osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h
new file mode 100644
index 0000000..d9c9093
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SRVCC_CSKeysRequest_H_
+#define _RANAP_SRVCC_CSKeysRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRVCC-CSKeysRequest */
+typedef struct RANAP_SRVCC_CSKeysRequest {
+ struct srvcC_CSKeysRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } srvcC_CSKeysRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRVCC_CSKeysRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_CSKeysRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRVCC_CSKeysRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h b/include/osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h
new file mode 100644
index 0000000..b143eab
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SRVCC_CSKeysResponse_H_
+#define _RANAP_SRVCC_CSKeysResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRVCC-CSKeysResponse */
+typedef struct RANAP_SRVCC_CSKeysResponse {
+ struct srvcC_CSKeysResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } srvcC_CSKeysResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRVCC_CSKeysResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_CSKeysResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRVCC_CSKeysResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRVCC-HO-Indication.h b/include/osmocom/ranap/RANAP_SRVCC-HO-Indication.h
new file mode 100644
index 0000000..36caa2d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRVCC-HO-Indication.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRVCC_HO_Indication_H_
+#define _RANAP_SRVCC_HO_Indication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SRVCC_HO_Indication {
+ RANAP_SRVCC_HO_Indication_ps_and_cs = 0,
+ RANAP_SRVCC_HO_Indication_cs_only = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_SRVCC_HO_Indication;
+
+/* RANAP_SRVCC-HO-Indication */
+typedef long RANAP_SRVCC_HO_Indication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_HO_Indication;
+asn_struct_free_f RANAP_SRVCC_HO_Indication_free;
+asn_struct_print_f RANAP_SRVCC_HO_Indication_print;
+asn_constr_check_f RANAP_SRVCC_HO_Indication_constraint;
+ber_type_decoder_f RANAP_SRVCC_HO_Indication_decode_ber;
+der_type_encoder_f RANAP_SRVCC_HO_Indication_encode_der;
+xer_type_decoder_f RANAP_SRVCC_HO_Indication_decode_xer;
+xer_type_encoder_f RANAP_SRVCC_HO_Indication_encode_xer;
+per_type_decoder_f RANAP_SRVCC_HO_Indication_decode_uper;
+per_type_encoder_f RANAP_SRVCC_HO_Indication_encode_uper;
+per_type_decoder_f RANAP_SRVCC_HO_Indication_decode_aper;
+per_type_encoder_f RANAP_SRVCC_HO_Indication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRVCC_HO_Indication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRVCC-Information.h b/include/osmocom/ranap/RANAP_SRVCC-Information.h
new file mode 100644
index 0000000..ef851b1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRVCC-Information.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRVCC_Information_H_
+#define _RANAP_SRVCC_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SRVCC-Information */
+typedef struct RANAP_SRVCC_Information {
+ BIT_STRING_t nonce;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SRVCC_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRVCC_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SRVCC-Operation-Possible.h b/include/osmocom/ranap/RANAP_SRVCC-Operation-Possible.h
new file mode 100644
index 0000000..c839c8b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SRVCC-Operation-Possible.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SRVCC_Operation_Possible_H_
+#define _RANAP_SRVCC_Operation_Possible_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SRVCC_Operation_Possible {
+ RANAP_SRVCC_Operation_Possible_srvcc_possible = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_SRVCC_Operation_Possible;
+
+/* RANAP_SRVCC-Operation-Possible */
+typedef long RANAP_SRVCC_Operation_Possible_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_Operation_Possible;
+asn_struct_free_f RANAP_SRVCC_Operation_Possible_free;
+asn_struct_print_f RANAP_SRVCC_Operation_Possible_print;
+asn_constr_check_f RANAP_SRVCC_Operation_Possible_constraint;
+ber_type_decoder_f RANAP_SRVCC_Operation_Possible_decode_ber;
+der_type_encoder_f RANAP_SRVCC_Operation_Possible_encode_der;
+xer_type_decoder_f RANAP_SRVCC_Operation_Possible_decode_xer;
+xer_type_encoder_f RANAP_SRVCC_Operation_Possible_encode_xer;
+per_type_decoder_f RANAP_SRVCC_Operation_Possible_decode_uper;
+per_type_encoder_f RANAP_SRVCC_Operation_Possible_encode_uper;
+per_type_decoder_f RANAP_SRVCC_Operation_Possible_decode_aper;
+per_type_encoder_f RANAP_SRVCC_Operation_Possible_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SRVCC_Operation_Possible_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SecurityModeCommand.h b/include/osmocom/ranap/RANAP_SecurityModeCommand.h
new file mode 100644
index 0000000..482b6ea
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SecurityModeCommand.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SecurityModeCommand_H_
+#define _RANAP_SecurityModeCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SecurityModeCommand */
+typedef struct RANAP_SecurityModeCommand {
+ struct securityModeCommand_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } securityModeCommand_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SecurityModeCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeCommand;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SecurityModeCommand_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SecurityModeComplete.h b/include/osmocom/ranap/RANAP_SecurityModeComplete.h
new file mode 100644
index 0000000..5a99eb0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SecurityModeComplete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SecurityModeComplete_H_
+#define _RANAP_SecurityModeComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SecurityModeComplete */
+typedef struct RANAP_SecurityModeComplete {
+ struct securityModeComplete_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } securityModeComplete_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SecurityModeComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeComplete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SecurityModeComplete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SecurityModeReject.h b/include/osmocom/ranap/RANAP_SecurityModeReject.h
new file mode 100644
index 0000000..1aa69da
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SecurityModeReject.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SecurityModeReject_H_
+#define _RANAP_SecurityModeReject_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SecurityModeReject */
+typedef struct RANAP_SecurityModeReject {
+ struct securityModeReject_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } securityModeReject_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SecurityModeReject_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeReject;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SecurityModeReject_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Service-Handover.h b/include/osmocom/ranap/RANAP_Service-Handover.h
new file mode 100644
index 0000000..1d54b1b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Service-Handover.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Service_Handover_H_
+#define _RANAP_Service_Handover_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Service_Handover {
+ RANAP_Service_Handover_handover_to_GSM_should_be_performed = 0,
+ RANAP_Service_Handover_handover_to_GSM_should_not_be_performed = 1,
+ RANAP_Service_Handover_handover_to_GSM_shall_not_be_performed = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Service_Handover;
+
+/* RANAP_Service-Handover */
+typedef long RANAP_Service_Handover_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Service_Handover;
+asn_struct_free_f RANAP_Service_Handover_free;
+asn_struct_print_f RANAP_Service_Handover_print;
+asn_constr_check_f RANAP_Service_Handover_constraint;
+ber_type_decoder_f RANAP_Service_Handover_decode_ber;
+der_type_encoder_f RANAP_Service_Handover_encode_der;
+xer_type_decoder_f RANAP_Service_Handover_decode_xer;
+xer_type_encoder_f RANAP_Service_Handover_encode_xer;
+per_type_decoder_f RANAP_Service_Handover_decode_uper;
+per_type_encoder_f RANAP_Service_Handover_encode_uper;
+per_type_decoder_f RANAP_Service_Handover_decode_aper;
+per_type_encoder_f RANAP_Service_Handover_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Service_Handover_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h b/include/osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h
new file mode 100644
index 0000000..ea9b931
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Session_Re_establishment_Indicator_H_
+#define _RANAP_Session_Re_establishment_Indicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_Session_Re_establishment_Indicator {
+ RANAP_Session_Re_establishment_Indicator_true = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_Session_Re_establishment_Indicator;
+
+/* RANAP_Session-Re-establishment-Indicator */
+typedef long RANAP_Session_Re_establishment_Indicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Session_Re_establishment_Indicator;
+asn_struct_free_f RANAP_Session_Re_establishment_Indicator_free;
+asn_struct_print_f RANAP_Session_Re_establishment_Indicator_print;
+asn_constr_check_f RANAP_Session_Re_establishment_Indicator_constraint;
+ber_type_decoder_f RANAP_Session_Re_establishment_Indicator_decode_ber;
+der_type_encoder_f RANAP_Session_Re_establishment_Indicator_encode_der;
+xer_type_decoder_f RANAP_Session_Re_establishment_Indicator_decode_xer;
+xer_type_encoder_f RANAP_Session_Re_establishment_Indicator_encode_xer;
+per_type_decoder_f RANAP_Session_Re_establishment_Indicator_decode_uper;
+per_type_encoder_f RANAP_Session_Re_establishment_Indicator_encode_uper;
+per_type_decoder_f RANAP_Session_Re_establishment_Indicator_decode_aper;
+per_type_encoder_f RANAP_Session_Re_establishment_Indicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Session_Re_establishment_Indicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SessionUpdateID.h b/include/osmocom/ranap/RANAP_SessionUpdateID.h
new file mode 100644
index 0000000..3d9f9aa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SessionUpdateID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SessionUpdateID_H_
+#define _RANAP_SessionUpdateID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SessionUpdateID */
+typedef long RANAP_SessionUpdateID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SessionUpdateID;
+asn_struct_free_f RANAP_SessionUpdateID_free;
+asn_struct_print_f RANAP_SessionUpdateID_print;
+asn_constr_check_f RANAP_SessionUpdateID_constraint;
+ber_type_decoder_f RANAP_SessionUpdateID_decode_ber;
+der_type_encoder_f RANAP_SessionUpdateID_encode_der;
+xer_type_decoder_f RANAP_SessionUpdateID_decode_xer;
+xer_type_encoder_f RANAP_SessionUpdateID_encode_xer;
+per_type_decoder_f RANAP_SessionUpdateID_decode_uper;
+per_type_encoder_f RANAP_SessionUpdateID_encode_uper;
+per_type_decoder_f RANAP_SessionUpdateID_decode_aper;
+per_type_encoder_f RANAP_SessionUpdateID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SessionUpdateID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Shared-Network-Information.h b/include/osmocom/ranap/RANAP_Shared-Network-Information.h
new file mode 100644
index 0000000..74afbd1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Shared-Network-Information.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Shared_Network_Information_H_
+#define _RANAP_Shared_Network_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNs-in-shared-network.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Shared-Network-Information */
+typedef struct RANAP_Shared_Network_Information {
+ RANAP_PLMNs_in_shared_network_t pLMNs_in_shared_network;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_Shared_Network_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Shared_Network_Information;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Shared_Network_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SignallingIndication.h b/include/osmocom/ranap/RANAP_SignallingIndication.h
new file mode 100644
index 0000000..4c95a32
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SignallingIndication.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SignallingIndication_H_
+#define _RANAP_SignallingIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SignallingIndication {
+ RANAP_SignallingIndication_signalling = 0
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_SignallingIndication;
+
+/* RANAP_SignallingIndication */
+typedef long RANAP_SignallingIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SignallingIndication;
+asn_struct_free_f RANAP_SignallingIndication_free;
+asn_struct_print_f RANAP_SignallingIndication_print;
+asn_constr_check_f RANAP_SignallingIndication_constraint;
+ber_type_decoder_f RANAP_SignallingIndication_decode_ber;
+der_type_encoder_f RANAP_SignallingIndication_encode_der;
+xer_type_decoder_f RANAP_SignallingIndication_decode_xer;
+xer_type_encoder_f RANAP_SignallingIndication_encode_xer;
+per_type_decoder_f RANAP_SignallingIndication_decode_uper;
+per_type_encoder_f RANAP_SignallingIndication_encode_uper;
+per_type_decoder_f RANAP_SignallingIndication_decode_aper;
+per_type_encoder_f RANAP_SignallingIndication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SignallingIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h b/include/osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h
new file mode 100644
index 0000000..84b1571
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Source_ToTarget_TransparentContainer_H_
+#define _RANAP_Source_ToTarget_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Source-ToTarget-TransparentContainer */
+typedef OCTET_STRING_t RANAP_Source_ToTarget_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Source_ToTarget_TransparentContainer;
+asn_struct_free_f RANAP_Source_ToTarget_TransparentContainer_free;
+asn_struct_print_f RANAP_Source_ToTarget_TransparentContainer_print;
+asn_constr_check_f RANAP_Source_ToTarget_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_Source_ToTarget_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_Source_ToTarget_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_Source_ToTarget_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_Source_ToTarget_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_Source_ToTarget_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_Source_ToTarget_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_Source_ToTarget_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_Source_ToTarget_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Source_ToTarget_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h b/include/osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h
new file mode 100644
index 0000000..e86c070
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceBSS_ToTargetBSS_TransparentContainer_H_
+#define _RANAP_SourceBSS_ToTargetBSS_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SourceBSS-ToTargetBSS-TransparentContainer */
+typedef OCTET_STRING_t RANAP_SourceBSS_ToTargetBSS_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer;
+asn_struct_free_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_free;
+asn_struct_print_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_print;
+asn_constr_check_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceBSS_ToTargetBSS_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceCellID.h b/include/osmocom/ranap/RANAP_SourceCellID.h
new file mode 100644
index 0000000..2c4e679
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceCellID.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceCellID_H_
+#define _RANAP_SourceCellID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SourceUTRANCellID.h>
+#include <osmocom/ranap/RANAP_CGI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SourceCellID_PR {
+ RANAP_SourceCellID_PR_NOTHING, /* No components present */
+ RANAP_SourceCellID_PR_sourceUTRANCellID,
+ RANAP_SourceCellID_PR_sourceGERANCellID,
+ /* Extensions may appear below */
+
+} RANAP_SourceCellID_PR;
+
+/* RANAP_SourceCellID */
+typedef struct RANAP_SourceCellID {
+ RANAP_SourceCellID_PR present;
+ union RANAP_SourceCellID_u {
+ RANAP_SourceUTRANCellID_t sourceUTRANCellID;
+ RANAP_CGI_t sourceGERANCellID;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SourceCellID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceCellID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceCellID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceID.h b/include/osmocom/ranap/RANAP_SourceID.h
new file mode 100644
index 0000000..ef4acc0
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceID.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceID_H_
+#define _RANAP_SourceID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SourceRNC-ID.h>
+#include <osmocom/ranap/RANAP_SAI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SourceID_PR {
+ RANAP_SourceID_PR_NOTHING, /* No components present */
+ RANAP_SourceID_PR_sourceRNC_ID,
+ RANAP_SourceID_PR_sAI,
+ /* Extensions may appear below */
+
+} RANAP_SourceID_PR;
+
+/* RANAP_SourceID */
+typedef struct RANAP_SourceID {
+ RANAP_SourceID_PR present;
+ union RANAP_SourceID_u {
+ RANAP_SourceRNC_ID_t sourceRNC_ID;
+ RANAP_SAI_t sAI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SourceID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceRNC-ID.h b/include/osmocom/ranap/RANAP_SourceRNC-ID.h
new file mode 100644
index 0000000..17ed1c1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceRNC-ID.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceRNC_ID_H_
+#define _RANAP_SourceRNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_RNC-ID.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SourceRNC-ID */
+typedef struct RANAP_SourceRNC_ID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_RNC_ID_t rNC_ID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SourceRNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceRNC_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceRNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h b/include/osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h
new file mode 100644
index 0000000..8065a9a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceRNC_ToTargetRNC_TransparentContainer_H_
+#define _RANAP_SourceRNC_ToTargetRNC_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RRC-Container.h>
+#include <osmocom/ranap/RANAP_NumberOfIuInstances.h>
+#include <osmocom/ranap/RANAP_RelocationType.h>
+#include <osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h>
+#include <osmocom/ranap/RANAP_IntegrityProtectionKey.h>
+#include <osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h>
+#include <osmocom/ranap/RANAP_EncryptionKey.h>
+#include <osmocom/ranap/RANAP_D-RNTI.h>
+#include <osmocom/ranap/RANAP_TargetCellId.h>
+#include <osmocom/ranap/RANAP_RAB-TrCH-Mapping.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SourceRNC-ToTargetRNC-TransparentContainer */
+typedef struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer {
+ RANAP_RRC_Container_t rRC_Container;
+ RANAP_NumberOfIuInstances_t numberOfIuInstances;
+ RANAP_RelocationType_t relocationType;
+ RANAP_ChosenIntegrityProtectionAlgorithm_t *chosenIntegrityProtectionAlgorithm /* OPTIONAL */;
+ RANAP_IntegrityProtectionKey_t *integrityProtectionKey /* OPTIONAL */;
+ RANAP_ChosenEncryptionAlgorithm_t *chosenEncryptionAlgorithForSignalling /* OPTIONAL */;
+ RANAP_EncryptionKey_t *cipheringKey /* OPTIONAL */;
+ RANAP_ChosenEncryptionAlgorithm_t *chosenEncryptionAlgorithForCS /* OPTIONAL */;
+ RANAP_ChosenEncryptionAlgorithm_t *chosenEncryptionAlgorithForPS /* OPTIONAL */;
+ RANAP_D_RNTI_t *d_RNTI /* OPTIONAL */;
+ RANAP_TargetCellId_t *targetCellId /* OPTIONAL */;
+ RANAP_RAB_TrCH_Mapping_t *rAB_TrCH_Mapping /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SourceRNC_ToTargetRNC_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceRNC_ToTargetRNC_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceStatisticsDescriptor.h b/include/osmocom/ranap/RANAP_SourceStatisticsDescriptor.h
new file mode 100644
index 0000000..5f459eb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceStatisticsDescriptor.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceStatisticsDescriptor_H_
+#define _RANAP_SourceStatisticsDescriptor_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_SourceStatisticsDescriptor {
+ RANAP_SourceStatisticsDescriptor_speech = 0,
+ RANAP_SourceStatisticsDescriptor_unknown = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_SourceStatisticsDescriptor;
+
+/* RANAP_SourceStatisticsDescriptor */
+typedef long RANAP_SourceStatisticsDescriptor_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceStatisticsDescriptor;
+asn_struct_free_f RANAP_SourceStatisticsDescriptor_free;
+asn_struct_print_f RANAP_SourceStatisticsDescriptor_print;
+asn_constr_check_f RANAP_SourceStatisticsDescriptor_constraint;
+ber_type_decoder_f RANAP_SourceStatisticsDescriptor_decode_ber;
+der_type_encoder_f RANAP_SourceStatisticsDescriptor_encode_der;
+xer_type_decoder_f RANAP_SourceStatisticsDescriptor_decode_xer;
+xer_type_encoder_f RANAP_SourceStatisticsDescriptor_encode_xer;
+per_type_decoder_f RANAP_SourceStatisticsDescriptor_decode_uper;
+per_type_encoder_f RANAP_SourceStatisticsDescriptor_encode_uper;
+per_type_decoder_f RANAP_SourceStatisticsDescriptor_decode_aper;
+per_type_encoder_f RANAP_SourceStatisticsDescriptor_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceStatisticsDescriptor_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceUTRANCellID.h b/include/osmocom/ranap/RANAP_SourceUTRANCellID.h
new file mode 100644
index 0000000..551a7f6
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceUTRANCellID.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceUTRANCellID_H_
+#define _RANAP_SourceUTRANCellID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_TargetCellId.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SourceUTRANCellID */
+typedef struct RANAP_SourceUTRANCellID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_TargetCellId_t uTRANcellID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SourceUTRANCellID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceUTRANCellID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceUTRANCellID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h b/include/osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h
new file mode 100644
index 0000000..347fb40
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_H_
+#define _RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer */
+typedef OCTET_STRING_t RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer;
+asn_struct_free_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_free;
+asn_struct_print_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_print;
+asn_constr_check_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SubflowSDU-Size.h b/include/osmocom/ranap/RANAP_SubflowSDU-Size.h
new file mode 100644
index 0000000..daaf20b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SubflowSDU-Size.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SubflowSDU_Size_H_
+#define _RANAP_SubflowSDU_Size_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SubflowSDU-Size */
+typedef long RANAP_SubflowSDU_Size_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SubflowSDU_Size;
+asn_struct_free_f RANAP_SubflowSDU_Size_free;
+asn_struct_print_f RANAP_SubflowSDU_Size_print;
+asn_constr_check_f RANAP_SubflowSDU_Size_constraint;
+ber_type_decoder_f RANAP_SubflowSDU_Size_decode_ber;
+der_type_encoder_f RANAP_SubflowSDU_Size_encode_der;
+xer_type_decoder_f RANAP_SubflowSDU_Size_decode_xer;
+xer_type_encoder_f RANAP_SubflowSDU_Size_encode_xer;
+per_type_decoder_f RANAP_SubflowSDU_Size_decode_uper;
+per_type_encoder_f RANAP_SubflowSDU_Size_encode_uper;
+per_type_decoder_f RANAP_SubflowSDU_Size_decode_aper;
+per_type_encoder_f RANAP_SubflowSDU_Size_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SubflowSDU_Size_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h b/include/osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h
new file mode 100644
index 0000000..984957b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SubscriberProfileIDforRFP_H_
+#define _RANAP_SubscriberProfileIDforRFP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SubscriberProfileIDforRFP */
+typedef long RANAP_SubscriberProfileIDforRFP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SubscriberProfileIDforRFP;
+asn_struct_free_f RANAP_SubscriberProfileIDforRFP_free;
+asn_struct_print_f RANAP_SubscriberProfileIDforRFP_print;
+asn_constr_check_f RANAP_SubscriberProfileIDforRFP_constraint;
+ber_type_decoder_f RANAP_SubscriberProfileIDforRFP_decode_ber;
+der_type_encoder_f RANAP_SubscriberProfileIDforRFP_encode_der;
+xer_type_decoder_f RANAP_SubscriberProfileIDforRFP_decode_xer;
+xer_type_encoder_f RANAP_SubscriberProfileIDforRFP_encode_xer;
+per_type_decoder_f RANAP_SubscriberProfileIDforRFP_decode_uper;
+per_type_encoder_f RANAP_SubscriberProfileIDforRFP_encode_uper;
+per_type_decoder_f RANAP_SubscriberProfileIDforRFP_decode_aper;
+per_type_encoder_f RANAP_SubscriberProfileIDforRFP_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SubscriberProfileIDforRFP_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SuccessfulOutcome.h b/include/osmocom/ranap/RANAP_SuccessfulOutcome.h
new file mode 100644
index 0000000..bd0364c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_SuccessfulOutcome_H_
+#define _RANAP_SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SuccessfulOutcome */
+typedef struct RANAP_SuccessfulOutcome {
+ RANAP_ProcedureCode_t procedureCode;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SupportedBitrate.h b/include/osmocom/ranap/RANAP_SupportedBitrate.h
new file mode 100644
index 0000000..a65f694
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SupportedBitrate.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SupportedBitrate_H_
+#define _RANAP_SupportedBitrate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SupportedBitrate */
+typedef long RANAP_SupportedBitrate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SupportedBitrate;
+asn_struct_free_f RANAP_SupportedBitrate_free;
+asn_struct_print_f RANAP_SupportedBitrate_print;
+asn_constr_check_f RANAP_SupportedBitrate_constraint;
+ber_type_decoder_f RANAP_SupportedBitrate_decode_ber;
+der_type_encoder_f RANAP_SupportedBitrate_encode_der;
+xer_type_decoder_f RANAP_SupportedBitrate_decode_xer;
+xer_type_encoder_f RANAP_SupportedBitrate_encode_xer;
+per_type_decoder_f RANAP_SupportedBitrate_decode_uper;
+per_type_encoder_f RANAP_SupportedBitrate_encode_uper;
+per_type_decoder_f RANAP_SupportedBitrate_decode_aper;
+per_type_encoder_f RANAP_SupportedBitrate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SupportedBitrate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h b/include/osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h
new file mode 100644
index 0000000..3677899
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_SupportedRAB_ParameterBitrateList_H_
+#define _RANAP_SupportedRAB_ParameterBitrateList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_SupportedBitrate.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_SupportedRAB-ParameterBitrateList */
+typedef struct RANAP_SupportedRAB_ParameterBitrateList {
+ A_SEQUENCE_OF(RANAP_SupportedBitrate_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_SupportedRAB_ParameterBitrateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_SupportedRAB_ParameterBitrateList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_SupportedRAB_ParameterBitrateList_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TAC.h b/include/osmocom/ranap/RANAP_TAC.h
new file mode 100644
index 0000000..7b3e47b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TAC.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TAC_H_
+#define _RANAP_TAC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TAC */
+typedef OCTET_STRING_t RANAP_TAC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TAC;
+asn_struct_free_f RANAP_TAC_free;
+asn_struct_print_f RANAP_TAC_print;
+asn_constr_check_f RANAP_TAC_constraint;
+ber_type_decoder_f RANAP_TAC_decode_ber;
+der_type_encoder_f RANAP_TAC_encode_der;
+xer_type_decoder_f RANAP_TAC_decode_xer;
+xer_type_encoder_f RANAP_TAC_encode_xer;
+per_type_decoder_f RANAP_TAC_decode_uper;
+per_type_encoder_f RANAP_TAC_encode_uper;
+per_type_decoder_f RANAP_TAC_decode_aper;
+per_type_encoder_f RANAP_TAC_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TAC_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TAI.h b/include/osmocom/ranap/RANAP_TAI.h
new file mode 100644
index 0000000..8fbcb30
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TAI.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TAI_H_
+#define _RANAP_TAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_TAC.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TAI */
+typedef struct RANAP_TAI {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_TAC_t tAC;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TAI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TAI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TBCD-STRING.h b/include/osmocom/ranap/RANAP_TBCD-STRING.h
new file mode 100644
index 0000000..b3787aa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TBCD-STRING.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TBCD_STRING_H_
+#define _RANAP_TBCD_STRING_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TBCD-STRING */
+typedef OCTET_STRING_t RANAP_TBCD_STRING_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TBCD_STRING;
+asn_struct_free_f RANAP_TBCD_STRING_free;
+asn_struct_print_f RANAP_TBCD_STRING_print;
+asn_constr_check_f RANAP_TBCD_STRING_constraint;
+ber_type_decoder_f RANAP_TBCD_STRING_decode_ber;
+der_type_encoder_f RANAP_TBCD_STRING_encode_der;
+xer_type_decoder_f RANAP_TBCD_STRING_decode_xer;
+xer_type_encoder_f RANAP_TBCD_STRING_encode_xer;
+per_type_decoder_f RANAP_TBCD_STRING_decode_uper;
+per_type_encoder_f RANAP_TBCD_STRING_encode_uper;
+per_type_decoder_f RANAP_TBCD_STRING_decode_aper;
+per_type_encoder_f RANAP_TBCD_STRING_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TBCD_STRING_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TMGI.h b/include/osmocom/ranap/RANAP_TMGI.h
new file mode 100644
index 0000000..9697529
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TMGI.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TMGI_H_
+#define _RANAP_TMGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <OCTET_STRING.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TMGI */
+typedef struct RANAP_TMGI {
+ RANAP_PLMNidentity_t pLMNidentity;
+ OCTET_STRING_t serviceID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TMGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TMGI;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TMGI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TMSI.h b/include/osmocom/ranap/RANAP_TMSI.h
new file mode 100644
index 0000000..f4d4c4d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TMSI.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TMSI_H_
+#define _RANAP_TMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TMSI */
+typedef OCTET_STRING_t RANAP_TMSI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TMSI;
+asn_struct_free_f RANAP_TMSI_free;
+asn_struct_print_f RANAP_TMSI_print;
+asn_constr_check_f RANAP_TMSI_constraint;
+ber_type_decoder_f RANAP_TMSI_decode_ber;
+der_type_encoder_f RANAP_TMSI_encode_der;
+xer_type_decoder_f RANAP_TMSI_decode_xer;
+xer_type_encoder_f RANAP_TMSI_encode_xer;
+per_type_decoder_f RANAP_TMSI_decode_uper;
+per_type_encoder_f RANAP_TMSI_encode_uper;
+per_type_decoder_f RANAP_TMSI_decode_aper;
+per_type_encoder_f RANAP_TMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TMSI_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h b/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h
new file mode 100644
index 0000000..4f2e2e1
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_TNLInformationEnhRelInfoReq_H_
+#define _RANAP_TNLInformationEnhRelInfoReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TNLInformationEnhRelInfoReq */
+typedef struct RANAP_TNLInformationEnhRelInfoReq {
+ RANAP_TransportLayerAddress_t transportLayerAddress;
+ RANAP_IuTransportAssociation_t iuTransportAssociation;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TNLInformationEnhRelInfoReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TNLInformationEnhRelInfoReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TNLInformationEnhRelInfoReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h b/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h
new file mode 100644
index 0000000..6b8efbb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_TNLInformationEnhRelInfoRes_H_
+#define _RANAP_TNLInformationEnhRelInfoRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TNLInformationEnhRelInfoRes */
+typedef struct RANAP_TNLInformationEnhRelInfoRes {
+ RANAP_TransportLayerAddress_t dl_forwardingTransportLayerAddress;
+ RANAP_IuTransportAssociation_t dl_forwardingTransportAssociation;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TNLInformationEnhRelInfoRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TNLInformationEnhRelInfoRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TNLInformationEnhRelInfoRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h b/include/osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h
new file mode 100644
index 0000000..0b82065
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Target_ToSource_TransparentContainer_H_
+#define _RANAP_Target_ToSource_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Target-ToSource-TransparentContainer */
+typedef OCTET_STRING_t RANAP_Target_ToSource_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Target_ToSource_TransparentContainer;
+asn_struct_free_f RANAP_Target_ToSource_TransparentContainer_free;
+asn_struct_print_f RANAP_Target_ToSource_TransparentContainer_print;
+asn_constr_check_f RANAP_Target_ToSource_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_Target_ToSource_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_Target_ToSource_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_Target_ToSource_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_Target_ToSource_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_Target_ToSource_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_Target_ToSource_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_Target_ToSource_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_Target_ToSource_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Target_ToSource_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h b/include/osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h
new file mode 100644
index 0000000..9ee065e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetBSS_ToSourceBSS_TransparentContainer_H_
+#define _RANAP_TargetBSS_ToSourceBSS_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargetBSS-ToSourceBSS-TransparentContainer */
+typedef OCTET_STRING_t RANAP_TargetBSS_ToSourceBSS_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer;
+asn_struct_free_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_free;
+asn_struct_print_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_print;
+asn_constr_check_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetBSS_ToSourceBSS_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetCellId.h b/include/osmocom/ranap/RANAP_TargetCellId.h
new file mode 100644
index 0000000..06dcb01
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetCellId.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetCellId_H_
+#define _RANAP_TargetCellId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargetCellId */
+typedef long RANAP_TargetCellId_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetCellId;
+asn_struct_free_f RANAP_TargetCellId_free;
+asn_struct_print_f RANAP_TargetCellId_print;
+asn_constr_check_f RANAP_TargetCellId_constraint;
+ber_type_decoder_f RANAP_TargetCellId_decode_ber;
+der_type_encoder_f RANAP_TargetCellId_encode_der;
+xer_type_decoder_f RANAP_TargetCellId_decode_xer;
+xer_type_encoder_f RANAP_TargetCellId_encode_xer;
+per_type_decoder_f RANAP_TargetCellId_decode_uper;
+per_type_encoder_f RANAP_TargetCellId_encode_uper;
+per_type_decoder_f RANAP_TargetCellId_decode_aper;
+per_type_encoder_f RANAP_TargetCellId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetCellId_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetENB-ID.h b/include/osmocom/ranap/RANAP_TargetENB-ID.h
new file mode 100644
index 0000000..0566213
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetENB-ID.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetENB_ID_H_
+#define _RANAP_TargetENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_ENB-ID.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <osmocom/ranap/RANAP_TAI.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargetENB-ID */
+typedef struct RANAP_TargetENB_ID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_ENB_ID_t eNB_ID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ RANAP_TAI_t selectedTAI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TargetENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetENB_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetID.h b/include/osmocom/ranap/RANAP_TargetID.h
new file mode 100644
index 0000000..fa8a82f
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetID.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetID_H_
+#define _RANAP_TargetID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TargetRNC-ID.h>
+#include <osmocom/ranap/RANAP_CGI.h>
+#include <osmocom/ranap/RANAP_TargetENB-ID.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TargetID_PR {
+ RANAP_TargetID_PR_NOTHING, /* No components present */
+ RANAP_TargetID_PR_targetRNC_ID,
+ RANAP_TargetID_PR_cGI,
+ /* Extensions may appear below */
+ RANAP_TargetID_PR_targeteNB_ID
+} RANAP_TargetID_PR;
+
+/* RANAP_TargetID */
+typedef struct RANAP_TargetID {
+ RANAP_TargetID_PR present;
+ union RANAP_TargetID_u {
+ RANAP_TargetRNC_ID_t targetRNC_ID;
+ RANAP_CGI_t cGI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_TargetENB_ID_t targeteNB_ID;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TargetID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetRNC-ID.h b/include/osmocom/ranap/RANAP_TargetRNC-ID.h
new file mode 100644
index 0000000..0d6dc98
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetRNC-ID.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetRNC_ID_H_
+#define _RANAP_TargetRNC_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <osmocom/ranap/RANAP_RNC-ID.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargetRNC-ID */
+typedef struct RANAP_TargetRNC_ID {
+ RANAP_LAI_t lAI;
+ RANAP_RAC_t *rAC /* OPTIONAL */;
+ RANAP_RNC_ID_t rNC_ID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TargetRNC_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetRNC_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetRNC_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h b/include/osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h
new file mode 100644
index 0000000..eb1d973
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargetRNC_ToSourceRNC_TransparentContainer_H_
+#define _RANAP_TargetRNC_ToSourceRNC_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_RRC-Container.h>
+#include <osmocom/ranap/RANAP_D-RNTI.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargetRNC-ToSourceRNC-TransparentContainer */
+typedef struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer {
+ RANAP_RRC_Container_t rRC_Container;
+ RANAP_D_RNTI_t *d_RNTI /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TargetRNC_ToSourceRNC_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargetRNC_ToSourceRNC_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h b/include/osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h
new file mode 100644
index 0000000..82f02cd
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_H_
+#define _RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer */
+typedef OCTET_STRING_t RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer;
+asn_struct_free_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_free;
+asn_struct_print_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_print;
+asn_constr_check_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_constraint;
+ber_type_decoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_ber;
+der_type_encoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_der;
+xer_type_decoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_xer;
+xer_type_encoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_xer;
+per_type_decoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_uper;
+per_type_encoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_uper;
+per_type_decoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_aper;
+per_type_encoder_f RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TemporaryUE-ID.h b/include/osmocom/ranap/RANAP_TemporaryUE-ID.h
new file mode 100644
index 0000000..3d27c00
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TemporaryUE-ID.h
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TemporaryUE_ID_H_
+#define _RANAP_TemporaryUE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TMSI.h>
+#include <osmocom/ranap/RANAP_P-TMSI.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TemporaryUE_ID_PR {
+ RANAP_TemporaryUE_ID_PR_NOTHING, /* No components present */
+ RANAP_TemporaryUE_ID_PR_tMSI,
+ RANAP_TemporaryUE_ID_PR_p_TMSI,
+ /* Extensions may appear below */
+
+} RANAP_TemporaryUE_ID_PR;
+
+/* RANAP_TemporaryUE-ID */
+typedef struct RANAP_TemporaryUE_ID {
+ RANAP_TemporaryUE_ID_PR present;
+ union RANAP_TemporaryUE_ID_u {
+ RANAP_TMSI_t tMSI;
+ RANAP_P_TMSI_t p_TMSI;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TemporaryUE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TemporaryUE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TemporaryUE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h b/include/osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h
new file mode 100644
index 0000000..f525d6a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Time_UE_StayedInCell_EnhancedGranularity_H_
+#define _RANAP_Time_UE_StayedInCell_EnhancedGranularity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Time-UE-StayedInCell-EnhancedGranularity */
+typedef long RANAP_Time_UE_StayedInCell_EnhancedGranularity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity;
+asn_struct_free_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_free;
+asn_struct_print_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_print;
+asn_constr_check_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_constraint;
+ber_type_decoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_ber;
+der_type_encoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_der;
+xer_type_decoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_xer;
+xer_type_encoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_xer;
+per_type_decoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_uper;
+per_type_encoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_uper;
+per_type_decoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_aper;
+per_type_encoder_f RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Time_UE_StayedInCell_EnhancedGranularity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_Time-UE-StayedInCell.h b/include/osmocom/ranap/RANAP_Time-UE-StayedInCell.h
new file mode 100644
index 0000000..d87a899
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_Time-UE-StayedInCell.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_Time_UE_StayedInCell_H_
+#define _RANAP_Time_UE_StayedInCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_Time-UE-StayedInCell */
+typedef long RANAP_Time_UE_StayedInCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_Time_UE_StayedInCell;
+asn_struct_free_f RANAP_Time_UE_StayedInCell_free;
+asn_struct_print_f RANAP_Time_UE_StayedInCell_print;
+asn_constr_check_f RANAP_Time_UE_StayedInCell_constraint;
+ber_type_decoder_f RANAP_Time_UE_StayedInCell_decode_ber;
+der_type_encoder_f RANAP_Time_UE_StayedInCell_encode_der;
+xer_type_decoder_f RANAP_Time_UE_StayedInCell_decode_xer;
+xer_type_encoder_f RANAP_Time_UE_StayedInCell_encode_xer;
+per_type_decoder_f RANAP_Time_UE_StayedInCell_decode_uper;
+per_type_encoder_f RANAP_Time_UE_StayedInCell_encode_uper;
+per_type_decoder_f RANAP_Time_UE_StayedInCell_decode_aper;
+per_type_encoder_f RANAP_Time_UE_StayedInCell_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_Time_UE_StayedInCell_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h b/include/osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h
new file mode 100644
index 0000000..31ede6e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TimeToMBMSDataTransfer_H_
+#define _RANAP_TimeToMBMSDataTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TimeToMBMSDataTransfer */
+typedef OCTET_STRING_t RANAP_TimeToMBMSDataTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TimeToMBMSDataTransfer;
+asn_struct_free_f RANAP_TimeToMBMSDataTransfer_free;
+asn_struct_print_f RANAP_TimeToMBMSDataTransfer_print;
+asn_constr_check_f RANAP_TimeToMBMSDataTransfer_constraint;
+ber_type_decoder_f RANAP_TimeToMBMSDataTransfer_decode_ber;
+der_type_encoder_f RANAP_TimeToMBMSDataTransfer_encode_der;
+xer_type_decoder_f RANAP_TimeToMBMSDataTransfer_decode_xer;
+xer_type_encoder_f RANAP_TimeToMBMSDataTransfer_encode_xer;
+per_type_decoder_f RANAP_TimeToMBMSDataTransfer_decode_uper;
+per_type_encoder_f RANAP_TimeToMBMSDataTransfer_encode_uper;
+per_type_decoder_f RANAP_TimeToMBMSDataTransfer_decode_aper;
+per_type_encoder_f RANAP_TimeToMBMSDataTransfer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TimeToMBMSDataTransfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TimingDifferenceULDL.h b/include/osmocom/ranap/RANAP_TimingDifferenceULDL.h
new file mode 100644
index 0000000..7497493
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TimingDifferenceULDL.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TimingDifferenceULDL_H_
+#define _RANAP_TimingDifferenceULDL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TimingDifferenceULDL */
+typedef OCTET_STRING_t RANAP_TimingDifferenceULDL_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TimingDifferenceULDL;
+asn_struct_free_f RANAP_TimingDifferenceULDL_free;
+asn_struct_print_f RANAP_TimingDifferenceULDL_print;
+asn_constr_check_f RANAP_TimingDifferenceULDL_constraint;
+ber_type_decoder_f RANAP_TimingDifferenceULDL_decode_ber;
+der_type_encoder_f RANAP_TimingDifferenceULDL_encode_der;
+xer_type_decoder_f RANAP_TimingDifferenceULDL_decode_xer;
+xer_type_encoder_f RANAP_TimingDifferenceULDL_encode_xer;
+per_type_decoder_f RANAP_TimingDifferenceULDL_decode_uper;
+per_type_encoder_f RANAP_TimingDifferenceULDL_encode_uper;
+per_type_decoder_f RANAP_TimingDifferenceULDL_decode_aper;
+per_type_encoder_f RANAP_TimingDifferenceULDL_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TimingDifferenceULDL_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TrCH-ID-List.h b/include/osmocom/ranap/RANAP_TrCH-ID-List.h
new file mode 100644
index 0000000..77ca281
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TrCH-ID-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TrCH_ID_List_H_
+#define _RANAP_TrCH_ID_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TrCH-ID.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TrCH-ID-List */
+typedef struct RANAP_TrCH_ID_List {
+ A_SEQUENCE_OF(RANAP_TrCH_ID_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TrCH_ID_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TrCH_ID_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TrCH_ID_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TrCH-ID.h b/include/osmocom/ranap/RANAP_TrCH-ID.h
new file mode 100644
index 0000000..2ab369b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TrCH-ID.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TrCH_ID_H_
+#define _RANAP_TrCH_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_DCH-ID.h>
+#include <osmocom/ranap/RANAP_DSCH-ID.h>
+#include <osmocom/ranap/RANAP_USCH-ID.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TrCH-ID */
+typedef struct RANAP_TrCH_ID {
+ RANAP_DCH_ID_t *dCH_ID /* OPTIONAL */;
+ RANAP_DSCH_ID_t *dSCH_ID /* OPTIONAL */;
+ RANAP_USCH_ID_t *uSCH_ID /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TrCH_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TrCH_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TrCH_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceDepth.h b/include/osmocom/ranap/RANAP_TraceDepth.h
new file mode 100644
index 0000000..4bad74d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceDepth.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceDepth_H_
+#define _RANAP_TraceDepth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TraceDepth {
+ RANAP_TraceDepth_minimum = 0,
+ RANAP_TraceDepth_medium = 1,
+ RANAP_TraceDepth_maximum = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_TraceDepth;
+
+/* RANAP_TraceDepth */
+typedef long RANAP_TraceDepth_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceDepth;
+asn_struct_free_f RANAP_TraceDepth_free;
+asn_struct_print_f RANAP_TraceDepth_print;
+asn_constr_check_f RANAP_TraceDepth_constraint;
+ber_type_decoder_f RANAP_TraceDepth_decode_ber;
+der_type_encoder_f RANAP_TraceDepth_encode_der;
+xer_type_decoder_f RANAP_TraceDepth_decode_xer;
+xer_type_encoder_f RANAP_TraceDepth_encode_xer;
+per_type_decoder_f RANAP_TraceDepth_decode_uper;
+per_type_encoder_f RANAP_TraceDepth_encode_uper;
+per_type_decoder_f RANAP_TraceDepth_decode_aper;
+per_type_encoder_f RANAP_TraceDepth_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceDepth_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceInformation.h b/include/osmocom/ranap/RANAP_TraceInformation.h
new file mode 100644
index 0000000..6281c4e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceInformation.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceInformation_H_
+#define _RANAP_TraceInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TraceReference.h>
+#include <osmocom/ranap/RANAP_UE-ID.h>
+#include <osmocom/ranap/RANAP_TracePropagationParameters.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TraceInformation */
+typedef struct RANAP_TraceInformation {
+ RANAP_TraceReference_t traceReference;
+ RANAP_UE_ID_t ue_identity;
+ RANAP_TracePropagationParameters_t *tracePropagationParameters /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TraceInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TracePropagationParameters.h b/include/osmocom/ranap/RANAP_TracePropagationParameters.h
new file mode 100644
index 0000000..271a352
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TracePropagationParameters.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TracePropagationParameters_H_
+#define _RANAP_TracePropagationParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TraceRecordingSessionReference.h>
+#include <osmocom/ranap/RANAP_TraceDepth.h>
+#include <osmocom/ranap/RANAP_ListOfInterfacesToTrace.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TracePropagationParameters */
+typedef struct RANAP_TracePropagationParameters {
+ RANAP_TraceRecordingSessionReference_t traceRecordingSessionReference;
+ RANAP_TraceDepth_t traceDepth;
+ RANAP_ListOfInterfacesToTrace_t *listOfInterfacesToTrace /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TracePropagationParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TracePropagationParameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TracePropagationParameters_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceRecordingSessionInformation.h b/include/osmocom/ranap/RANAP_TraceRecordingSessionInformation.h
new file mode 100644
index 0000000..aac7b89
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceRecordingSessionInformation.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceRecordingSessionInformation_H_
+#define _RANAP_TraceRecordingSessionInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TraceReference.h>
+#include <osmocom/ranap/RANAP_TraceRecordingSessionReference.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TraceRecordingSessionInformation */
+typedef struct RANAP_TraceRecordingSessionInformation {
+ RANAP_TraceReference_t traceReference;
+ RANAP_TraceRecordingSessionReference_t traceRecordingSessionReference;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TraceRecordingSessionInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceRecordingSessionInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceRecordingSessionInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceRecordingSessionReference.h b/include/osmocom/ranap/RANAP_TraceRecordingSessionReference.h
new file mode 100644
index 0000000..7545987
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceRecordingSessionReference.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceRecordingSessionReference_H_
+#define _RANAP_TraceRecordingSessionReference_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TraceRecordingSessionReference */
+typedef long RANAP_TraceRecordingSessionReference_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceRecordingSessionReference;
+asn_struct_free_f RANAP_TraceRecordingSessionReference_free;
+asn_struct_print_f RANAP_TraceRecordingSessionReference_print;
+asn_constr_check_f RANAP_TraceRecordingSessionReference_constraint;
+ber_type_decoder_f RANAP_TraceRecordingSessionReference_decode_ber;
+der_type_encoder_f RANAP_TraceRecordingSessionReference_encode_der;
+xer_type_decoder_f RANAP_TraceRecordingSessionReference_decode_xer;
+xer_type_encoder_f RANAP_TraceRecordingSessionReference_encode_xer;
+per_type_decoder_f RANAP_TraceRecordingSessionReference_decode_uper;
+per_type_encoder_f RANAP_TraceRecordingSessionReference_encode_uper;
+per_type_decoder_f RANAP_TraceRecordingSessionReference_decode_aper;
+per_type_encoder_f RANAP_TraceRecordingSessionReference_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceRecordingSessionReference_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceReference.h b/include/osmocom/ranap/RANAP_TraceReference.h
new file mode 100644
index 0000000..ab3069d
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceReference.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceReference_H_
+#define _RANAP_TraceReference_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TraceReference */
+typedef OCTET_STRING_t RANAP_TraceReference_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceReference;
+asn_struct_free_f RANAP_TraceReference_free;
+asn_struct_print_f RANAP_TraceReference_print;
+asn_constr_check_f RANAP_TraceReference_constraint;
+ber_type_decoder_f RANAP_TraceReference_decode_ber;
+der_type_encoder_f RANAP_TraceReference_encode_der;
+xer_type_decoder_f RANAP_TraceReference_decode_xer;
+xer_type_encoder_f RANAP_TraceReference_encode_xer;
+per_type_decoder_f RANAP_TraceReference_decode_uper;
+per_type_encoder_f RANAP_TraceReference_encode_uper;
+per_type_decoder_f RANAP_TraceReference_decode_aper;
+per_type_encoder_f RANAP_TraceReference_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceReference_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TraceType.h b/include/osmocom/ranap/RANAP_TraceType.h
new file mode 100644
index 0000000..1f1edb4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TraceType.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TraceType_H_
+#define _RANAP_TraceType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TraceType */
+typedef OCTET_STRING_t RANAP_TraceType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TraceType;
+asn_struct_free_f RANAP_TraceType_free;
+asn_struct_print_f RANAP_TraceType_print;
+asn_constr_check_f RANAP_TraceType_constraint;
+ber_type_decoder_f RANAP_TraceType_decode_ber;
+der_type_encoder_f RANAP_TraceType_encode_der;
+xer_type_decoder_f RANAP_TraceType_decode_xer;
+xer_type_encoder_f RANAP_TraceType_encode_xer;
+per_type_decoder_f RANAP_TraceType_decode_uper;
+per_type_encoder_f RANAP_TraceType_encode_uper;
+per_type_decoder_f RANAP_TraceType_decode_aper;
+per_type_encoder_f RANAP_TraceType_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TraceType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TrafficClass.h b/include/osmocom/ranap/RANAP_TrafficClass.h
new file mode 100644
index 0000000..5d3eb28
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TrafficClass.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TrafficClass_H_
+#define _RANAP_TrafficClass_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TrafficClass {
+ RANAP_TrafficClass_conversational = 0,
+ RANAP_TrafficClass_streaming = 1,
+ RANAP_TrafficClass_interactive = 2,
+ RANAP_TrafficClass_background = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_TrafficClass;
+
+/* RANAP_TrafficClass */
+typedef long RANAP_TrafficClass_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TrafficClass;
+asn_struct_free_f RANAP_TrafficClass_free;
+asn_struct_print_f RANAP_TrafficClass_print;
+asn_constr_check_f RANAP_TrafficClass_constraint;
+ber_type_decoder_f RANAP_TrafficClass_decode_ber;
+der_type_encoder_f RANAP_TrafficClass_encode_der;
+xer_type_decoder_f RANAP_TrafficClass_decode_xer;
+xer_type_encoder_f RANAP_TrafficClass_encode_xer;
+per_type_decoder_f RANAP_TrafficClass_decode_uper;
+per_type_encoder_f RANAP_TrafficClass_encode_uper;
+per_type_decoder_f RANAP_TrafficClass_decode_aper;
+per_type_encoder_f RANAP_TrafficClass_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TrafficClass_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TrafficHandlingPriority.h b/include/osmocom/ranap/RANAP_TrafficHandlingPriority.h
new file mode 100644
index 0000000..2067c21
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TrafficHandlingPriority.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TrafficHandlingPriority_H_
+#define _RANAP_TrafficHandlingPriority_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TrafficHandlingPriority {
+ RANAP_TrafficHandlingPriority_spare = 0,
+ RANAP_TrafficHandlingPriority_highest = 1,
+ RANAP_TrafficHandlingPriority_lowest = 14,
+ RANAP_TrafficHandlingPriority_no_priority_used = 15
+} e_RANAP_TrafficHandlingPriority;
+
+/* RANAP_TrafficHandlingPriority */
+typedef long RANAP_TrafficHandlingPriority_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TrafficHandlingPriority;
+asn_struct_free_f RANAP_TrafficHandlingPriority_free;
+asn_struct_print_f RANAP_TrafficHandlingPriority_print;
+asn_constr_check_f RANAP_TrafficHandlingPriority_constraint;
+ber_type_decoder_f RANAP_TrafficHandlingPriority_decode_ber;
+der_type_encoder_f RANAP_TrafficHandlingPriority_encode_der;
+xer_type_decoder_f RANAP_TrafficHandlingPriority_decode_xer;
+xer_type_encoder_f RANAP_TrafficHandlingPriority_encode_xer;
+per_type_decoder_f RANAP_TrafficHandlingPriority_decode_uper;
+per_type_encoder_f RANAP_TrafficHandlingPriority_encode_uper;
+per_type_decoder_f RANAP_TrafficHandlingPriority_decode_aper;
+per_type_encoder_f RANAP_TrafficHandlingPriority_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TrafficHandlingPriority_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TransferDelay.h b/include/osmocom/ranap/RANAP_TransferDelay.h
new file mode 100644
index 0000000..7339967
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TransferDelay.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TransferDelay_H_
+#define _RANAP_TransferDelay_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TransferDelay */
+typedef long RANAP_TransferDelay_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TransferDelay;
+asn_struct_free_f RANAP_TransferDelay_free;
+asn_struct_print_f RANAP_TransferDelay_print;
+asn_constr_check_f RANAP_TransferDelay_constraint;
+ber_type_decoder_f RANAP_TransferDelay_decode_ber;
+der_type_encoder_f RANAP_TransferDelay_encode_der;
+xer_type_decoder_f RANAP_TransferDelay_decode_xer;
+xer_type_encoder_f RANAP_TransferDelay_encode_xer;
+per_type_decoder_f RANAP_TransferDelay_decode_uper;
+per_type_encoder_f RANAP_TransferDelay_encode_uper;
+per_type_decoder_f RANAP_TransferDelay_decode_aper;
+per_type_encoder_f RANAP_TransferDelay_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TransferDelay_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TransportLayerAddress.h b/include/osmocom/ranap/RANAP_TransportLayerAddress.h
new file mode 100644
index 0000000..fb99bac
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TransportLayerAddress.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TransportLayerAddress_H_
+#define _RANAP_TransportLayerAddress_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TransportLayerAddress */
+typedef BIT_STRING_t RANAP_TransportLayerAddress_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TransportLayerAddress;
+asn_struct_free_f RANAP_TransportLayerAddress_free;
+asn_struct_print_f RANAP_TransportLayerAddress_print;
+asn_constr_check_f RANAP_TransportLayerAddress_constraint;
+ber_type_decoder_f RANAP_TransportLayerAddress_decode_ber;
+der_type_encoder_f RANAP_TransportLayerAddress_encode_der;
+xer_type_decoder_f RANAP_TransportLayerAddress_decode_xer;
+xer_type_encoder_f RANAP_TransportLayerAddress_encode_xer;
+per_type_decoder_f RANAP_TransportLayerAddress_decode_uper;
+per_type_encoder_f RANAP_TransportLayerAddress_encode_uper;
+per_type_decoder_f RANAP_TransportLayerAddress_decode_aper;
+per_type_encoder_f RANAP_TransportLayerAddress_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TransportLayerAddress_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TransportLayerInformation.h b/include/osmocom/ranap/RANAP_TransportLayerInformation.h
new file mode 100644
index 0000000..dd443c4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TransportLayerInformation.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_TransportLayerInformation_H_
+#define _RANAP_TransportLayerInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TransportLayerInformation */
+typedef struct RANAP_TransportLayerInformation {
+ RANAP_TransportLayerAddress_t transportLayerAddress;
+ RANAP_IuTransportAssociation_t iuTransportAssociation;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TransportLayerInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TransportLayerInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TransportLayerInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TriggerID.h b/include/osmocom/ranap/RANAP_TriggerID.h
new file mode 100644
index 0000000..eba5820
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TriggerID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TriggerID_H_
+#define _RANAP_TriggerID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TriggerID */
+typedef OCTET_STRING_t RANAP_TriggerID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TriggerID;
+asn_struct_free_f RANAP_TriggerID_free;
+asn_struct_print_f RANAP_TriggerID_print;
+asn_constr_check_f RANAP_TriggerID_constraint;
+ber_type_decoder_f RANAP_TriggerID_decode_ber;
+der_type_encoder_f RANAP_TriggerID_encode_der;
+xer_type_decoder_f RANAP_TriggerID_decode_xer;
+xer_type_encoder_f RANAP_TriggerID_encode_xer;
+per_type_decoder_f RANAP_TriggerID_decode_uper;
+per_type_encoder_f RANAP_TriggerID_encode_uper;
+per_type_decoder_f RANAP_TriggerID_decode_aper;
+per_type_encoder_f RANAP_TriggerID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TriggerID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TriggeringMessage.h b/include/osmocom/ranap/RANAP_TriggeringMessage.h
new file mode 100644
index 0000000..f43f734
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TriggeringMessage.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#ifndef _RANAP_TriggeringMessage_H_
+#define _RANAP_TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TriggeringMessage {
+ RANAP_TriggeringMessage_initiating_message = 0,
+ RANAP_TriggeringMessage_successful_outcome = 1,
+ RANAP_TriggeringMessage_unsuccessfull_outcome = 2,
+ RANAP_TriggeringMessage_outcome = 3
+} e_RANAP_TriggeringMessage;
+
+/* RANAP_TriggeringMessage */
+typedef long RANAP_TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TriggeringMessage;
+asn_struct_free_f RANAP_TriggeringMessage_free;
+asn_struct_print_f RANAP_TriggeringMessage_print;
+asn_constr_check_f RANAP_TriggeringMessage_constraint;
+ber_type_decoder_f RANAP_TriggeringMessage_decode_ber;
+der_type_encoder_f RANAP_TriggeringMessage_encode_der;
+xer_type_decoder_f RANAP_TriggeringMessage_decode_xer;
+xer_type_encoder_f RANAP_TriggeringMessage_encode_xer;
+per_type_decoder_f RANAP_TriggeringMessage_decode_uper;
+per_type_encoder_f RANAP_TriggeringMessage_encode_uper;
+per_type_decoder_f RANAP_TriggeringMessage_decode_aper;
+per_type_encoder_f RANAP_TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TunnelInformation.h b/include/osmocom/ranap/RANAP_TunnelInformation.h
new file mode 100644
index 0000000..679b41a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TunnelInformation.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TunnelInformation_H_
+#define _RANAP_TunnelInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_Port-Number.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_TunnelInformation */
+typedef struct RANAP_TunnelInformation {
+ RANAP_TransportLayerAddress_t transportLayerAddress;
+ RANAP_Port_Number_t *uDP_Port_Number /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_TunnelInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TunnelInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TunnelInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_TypeOfError.h b/include/osmocom/ranap/RANAP_TypeOfError.h
new file mode 100644
index 0000000..12b0528
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_TypeOfError.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_TypeOfError_H_
+#define _RANAP_TypeOfError_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_TypeOfError {
+ RANAP_TypeOfError_not_understood = 0,
+ RANAP_TypeOfError_missing = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_TypeOfError;
+
+/* RANAP_TypeOfError */
+typedef long RANAP_TypeOfError_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_TypeOfError;
+asn_struct_free_f RANAP_TypeOfError_free;
+asn_struct_print_f RANAP_TypeOfError_print;
+asn_constr_check_f RANAP_TypeOfError_constraint;
+ber_type_decoder_f RANAP_TypeOfError_decode_ber;
+der_type_encoder_f RANAP_TypeOfError_encode_der;
+xer_type_decoder_f RANAP_TypeOfError_decode_xer;
+xer_type_encoder_f RANAP_TypeOfError_encode_xer;
+per_type_decoder_f RANAP_TypeOfError_decode_uper;
+per_type_encoder_f RANAP_TypeOfError_encode_uper;
+per_type_decoder_f RANAP_TypeOfError_decode_aper;
+per_type_encoder_f RANAP_TypeOfError_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_TypeOfError_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h
new file mode 100644
index 0000000..2029073
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UE_AggregateMaximumBitRate_H_
+#define _RANAP_UE_AggregateMaximumBitRate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h>
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UE-AggregateMaximumBitRate */
+typedef struct RANAP_UE_AggregateMaximumBitRate {
+ RANAP_UE_AggregateMaximumBitRateDownlink_t *uE_AggregateMaximumBitRateDownlink /* OPTIONAL */;
+ RANAP_UE_AggregateMaximumBitRateUplink_t *uE_AggregateMaximumBitRateUplink /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UE_AggregateMaximumBitRate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRate;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UE_AggregateMaximumBitRate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h
new file mode 100644
index 0000000..0e6c196
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UE_AggregateMaximumBitRateDownlink_H_
+#define _RANAP_UE_AggregateMaximumBitRateDownlink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UE-AggregateMaximumBitRateDownlink */
+typedef long RANAP_UE_AggregateMaximumBitRateDownlink_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink;
+asn_struct_free_f RANAP_UE_AggregateMaximumBitRateDownlink_free;
+asn_struct_print_f RANAP_UE_AggregateMaximumBitRateDownlink_print;
+asn_constr_check_f RANAP_UE_AggregateMaximumBitRateDownlink_constraint;
+ber_type_decoder_f RANAP_UE_AggregateMaximumBitRateDownlink_decode_ber;
+der_type_encoder_f RANAP_UE_AggregateMaximumBitRateDownlink_encode_der;
+xer_type_decoder_f RANAP_UE_AggregateMaximumBitRateDownlink_decode_xer;
+xer_type_encoder_f RANAP_UE_AggregateMaximumBitRateDownlink_encode_xer;
+per_type_decoder_f RANAP_UE_AggregateMaximumBitRateDownlink_decode_uper;
+per_type_encoder_f RANAP_UE_AggregateMaximumBitRateDownlink_encode_uper;
+per_type_decoder_f RANAP_UE_AggregateMaximumBitRateDownlink_decode_aper;
+per_type_encoder_f RANAP_UE_AggregateMaximumBitRateDownlink_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UE_AggregateMaximumBitRateDownlink_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h
new file mode 100644
index 0000000..fca65bf
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UE_AggregateMaximumBitRateUplink_H_
+#define _RANAP_UE_AggregateMaximumBitRateUplink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UE-AggregateMaximumBitRateUplink */
+typedef long RANAP_UE_AggregateMaximumBitRateUplink_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink;
+asn_struct_free_f RANAP_UE_AggregateMaximumBitRateUplink_free;
+asn_struct_print_f RANAP_UE_AggregateMaximumBitRateUplink_print;
+asn_constr_check_f RANAP_UE_AggregateMaximumBitRateUplink_constraint;
+ber_type_decoder_f RANAP_UE_AggregateMaximumBitRateUplink_decode_ber;
+der_type_encoder_f RANAP_UE_AggregateMaximumBitRateUplink_encode_der;
+xer_type_decoder_f RANAP_UE_AggregateMaximumBitRateUplink_decode_xer;
+xer_type_encoder_f RANAP_UE_AggregateMaximumBitRateUplink_encode_xer;
+per_type_decoder_f RANAP_UE_AggregateMaximumBitRateUplink_decode_uper;
+per_type_encoder_f RANAP_UE_AggregateMaximumBitRateUplink_encode_uper;
+per_type_decoder_f RANAP_UE_AggregateMaximumBitRateUplink_decode_aper;
+per_type_encoder_f RANAP_UE_AggregateMaximumBitRateUplink_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UE_AggregateMaximumBitRateUplink_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UE-History-Information.h b/include/osmocom/ranap/RANAP_UE-History-Information.h
new file mode 100644
index 0000000..92df8b9
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UE-History-Information.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UE_History_Information_H_
+#define _RANAP_UE_History_Information_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UE-History-Information */
+typedef OCTET_STRING_t RANAP_UE_History_Information_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UE_History_Information;
+asn_struct_free_f RANAP_UE_History_Information_free;
+asn_struct_print_f RANAP_UE_History_Information_print;
+asn_constr_check_f RANAP_UE_History_Information_constraint;
+ber_type_decoder_f RANAP_UE_History_Information_decode_ber;
+der_type_encoder_f RANAP_UE_History_Information_encode_der;
+xer_type_decoder_f RANAP_UE_History_Information_decode_xer;
+xer_type_encoder_f RANAP_UE_History_Information_encode_xer;
+per_type_decoder_f RANAP_UE_History_Information_decode_uper;
+per_type_encoder_f RANAP_UE_History_Information_encode_uper;
+per_type_decoder_f RANAP_UE_History_Information_decode_aper;
+per_type_encoder_f RANAP_UE_History_Information_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UE_History_Information_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UE-ID.h b/include/osmocom/ranap/RANAP_UE-ID.h
new file mode 100644
index 0000000..0bc2fc7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UE-ID.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UE_ID_H_
+#define _RANAP_UE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IMSI.h>
+#include <osmocom/ranap/RANAP_IMEI.h>
+#include <osmocom/ranap/RANAP_IMEISV.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_UE_ID_PR {
+ RANAP_UE_ID_PR_NOTHING, /* No components present */
+ RANAP_UE_ID_PR_imsi,
+ RANAP_UE_ID_PR_imei,
+ /* Extensions may appear below */
+ RANAP_UE_ID_PR_imeisv
+} RANAP_UE_ID_PR;
+
+/* RANAP_UE-ID */
+typedef struct RANAP_UE_ID {
+ RANAP_UE_ID_PR present;
+ union RANAP_UE_ID_u {
+ RANAP_IMSI_t imsi;
+ RANAP_IMEI_t imei;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ RANAP_IMEISV_t imeisv;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UESBI-Iu.h b/include/osmocom/ranap/RANAP_UESBI-Iu.h
new file mode 100644
index 0000000..44057fa
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UESBI-Iu.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UESBI_Iu_H_
+#define _RANAP_UESBI_Iu_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_UESBI-IuA.h>
+#include <osmocom/ranap/RANAP_UESBI-IuB.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UESBI-Iu */
+typedef struct RANAP_UESBI_Iu {
+ RANAP_UESBI_IuA_t *uESBI_IuA /* OPTIONAL */;
+ RANAP_UESBI_IuB_t *uESBI_IuB /* OPTIONAL */;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UESBI_Iu_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_Iu;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UESBI_Iu_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UESBI-IuA.h b/include/osmocom/ranap/RANAP_UESBI-IuA.h
new file mode 100644
index 0000000..c4c51bb
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UESBI-IuA.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UESBI_IuA_H_
+#define _RANAP_UESBI_IuA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UESBI-IuA */
+typedef BIT_STRING_t RANAP_UESBI_IuA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_IuA;
+asn_struct_free_f RANAP_UESBI_IuA_free;
+asn_struct_print_f RANAP_UESBI_IuA_print;
+asn_constr_check_f RANAP_UESBI_IuA_constraint;
+ber_type_decoder_f RANAP_UESBI_IuA_decode_ber;
+der_type_encoder_f RANAP_UESBI_IuA_encode_der;
+xer_type_decoder_f RANAP_UESBI_IuA_decode_xer;
+xer_type_encoder_f RANAP_UESBI_IuA_encode_xer;
+per_type_decoder_f RANAP_UESBI_IuA_decode_uper;
+per_type_encoder_f RANAP_UESBI_IuA_encode_uper;
+per_type_decoder_f RANAP_UESBI_IuA_decode_aper;
+per_type_encoder_f RANAP_UESBI_IuA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UESBI_IuA_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UESBI-IuB.h b/include/osmocom/ranap/RANAP_UESBI-IuB.h
new file mode 100644
index 0000000..4e8648b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UESBI-IuB.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UESBI_IuB_H_
+#define _RANAP_UESBI_IuB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UESBI-IuB */
+typedef BIT_STRING_t RANAP_UESBI_IuB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_IuB;
+asn_struct_free_f RANAP_UESBI_IuB_free;
+asn_struct_print_f RANAP_UESBI_IuB_print;
+asn_constr_check_f RANAP_UESBI_IuB_constraint;
+ber_type_decoder_f RANAP_UESBI_IuB_decode_ber;
+der_type_encoder_f RANAP_UESBI_IuB_encode_der;
+xer_type_decoder_f RANAP_UESBI_IuB_decode_xer;
+xer_type_encoder_f RANAP_UESBI_IuB_encode_xer;
+per_type_decoder_f RANAP_UESBI_IuB_decode_uper;
+per_type_encoder_f RANAP_UESBI_IuB_encode_uper;
+per_type_decoder_f RANAP_UESBI_IuB_decode_aper;
+per_type_encoder_f RANAP_UESBI_IuB_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UESBI_IuB_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UESpecificInformationIndication.h b/include/osmocom/ranap/RANAP_UESpecificInformationIndication.h
new file mode 100644
index 0000000..a4bad3a
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UESpecificInformationIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UESpecificInformationIndication_H_
+#define _RANAP_UESpecificInformationIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UESpecificInformationIndication */
+typedef struct RANAP_UESpecificInformationIndication {
+ struct ueSpecificInformationIndication_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueSpecificInformationIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UESpecificInformationIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UESpecificInformationIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UESpecificInformationIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h b/include/osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h
new file mode 100644
index 0000000..3a969ae
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UL_GTP_PDU_SequenceNumber_H_
+#define _RANAP_UL_GTP_PDU_SequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UL-GTP-PDU-SequenceNumber */
+typedef long RANAP_UL_GTP_PDU_SequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber;
+asn_struct_free_f RANAP_UL_GTP_PDU_SequenceNumber_free;
+asn_struct_print_f RANAP_UL_GTP_PDU_SequenceNumber_print;
+asn_constr_check_f RANAP_UL_GTP_PDU_SequenceNumber_constraint;
+ber_type_decoder_f RANAP_UL_GTP_PDU_SequenceNumber_decode_ber;
+der_type_encoder_f RANAP_UL_GTP_PDU_SequenceNumber_encode_der;
+xer_type_decoder_f RANAP_UL_GTP_PDU_SequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_UL_GTP_PDU_SequenceNumber_encode_xer;
+per_type_decoder_f RANAP_UL_GTP_PDU_SequenceNumber_decode_uper;
+per_type_encoder_f RANAP_UL_GTP_PDU_SequenceNumber_encode_uper;
+per_type_decoder_f RANAP_UL_GTP_PDU_SequenceNumber_decode_aper;
+per_type_encoder_f RANAP_UL_GTP_PDU_SequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UL_GTP_PDU_SequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h b/include/osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h
new file mode 100644
index 0000000..b7304c7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UL_N_PDU_SequenceNumber_H_
+#define _RANAP_UL_N_PDU_SequenceNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UL-N-PDU-SequenceNumber */
+typedef long RANAP_UL_N_PDU_SequenceNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UL_N_PDU_SequenceNumber;
+asn_struct_free_f RANAP_UL_N_PDU_SequenceNumber_free;
+asn_struct_print_f RANAP_UL_N_PDU_SequenceNumber_print;
+asn_constr_check_f RANAP_UL_N_PDU_SequenceNumber_constraint;
+ber_type_decoder_f RANAP_UL_N_PDU_SequenceNumber_decode_ber;
+der_type_encoder_f RANAP_UL_N_PDU_SequenceNumber_encode_der;
+xer_type_decoder_f RANAP_UL_N_PDU_SequenceNumber_decode_xer;
+xer_type_encoder_f RANAP_UL_N_PDU_SequenceNumber_encode_xer;
+per_type_decoder_f RANAP_UL_N_PDU_SequenceNumber_decode_uper;
+per_type_encoder_f RANAP_UL_N_PDU_SequenceNumber_encode_uper;
+per_type_decoder_f RANAP_UL_N_PDU_SequenceNumber_decode_aper;
+per_type_encoder_f RANAP_UL_N_PDU_SequenceNumber_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UL_N_PDU_SequenceNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UP-ModeVersions.h b/include/osmocom/ranap/RANAP_UP-ModeVersions.h
new file mode 100644
index 0000000..209bb28
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UP-ModeVersions.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UP_ModeVersions_H_
+#define _RANAP_UP_ModeVersions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UP-ModeVersions */
+typedef BIT_STRING_t RANAP_UP_ModeVersions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UP_ModeVersions;
+asn_struct_free_f RANAP_UP_ModeVersions_free;
+asn_struct_print_f RANAP_UP_ModeVersions_print;
+asn_constr_check_f RANAP_UP_ModeVersions_constraint;
+ber_type_decoder_f RANAP_UP_ModeVersions_decode_ber;
+der_type_encoder_f RANAP_UP_ModeVersions_encode_der;
+xer_type_decoder_f RANAP_UP_ModeVersions_decode_xer;
+xer_type_encoder_f RANAP_UP_ModeVersions_encode_xer;
+per_type_decoder_f RANAP_UP_ModeVersions_decode_uper;
+per_type_encoder_f RANAP_UP_ModeVersions_encode_uper;
+per_type_decoder_f RANAP_UP_ModeVersions_decode_aper;
+per_type_encoder_f RANAP_UP_ModeVersions_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UP_ModeVersions_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UPInformation.h b/include/osmocom/ranap/RANAP_UPInformation.h
new file mode 100644
index 0000000..8d0af41
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UPInformation.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UPInformation_H_
+#define _RANAP_UPInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_FrameSequenceNumber.h>
+#include <osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h>
+#include <osmocom/ranap/RANAP_DataPDUType.h>
+#include <osmocom/ranap/RANAP_UPInitialisationFrame.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UPInformation */
+typedef struct RANAP_UPInformation {
+ RANAP_FrameSequenceNumber_t frameSeqNoUL;
+ RANAP_FrameSequenceNumber_t frameSeqNoDL;
+ RANAP_PDUType14FrameSequenceNumber_t pdu14FrameSeqNoUL;
+ RANAP_PDUType14FrameSequenceNumber_t pdu14FrameSeqNoDL;
+ RANAP_DataPDUType_t dataPDUType;
+ RANAP_UPInitialisationFrame_t upinitialisationFrame;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UPInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UPInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UPInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UPInitialisationFrame.h b/include/osmocom/ranap/RANAP_UPInitialisationFrame.h
new file mode 100644
index 0000000..1118f14
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UPInitialisationFrame.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UPInitialisationFrame_H_
+#define _RANAP_UPInitialisationFrame_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UPInitialisationFrame */
+typedef OCTET_STRING_t RANAP_UPInitialisationFrame_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UPInitialisationFrame;
+asn_struct_free_f RANAP_UPInitialisationFrame_free;
+asn_struct_print_f RANAP_UPInitialisationFrame_print;
+asn_constr_check_f RANAP_UPInitialisationFrame_constraint;
+ber_type_decoder_f RANAP_UPInitialisationFrame_decode_ber;
+der_type_encoder_f RANAP_UPInitialisationFrame_encode_der;
+xer_type_decoder_f RANAP_UPInitialisationFrame_decode_xer;
+xer_type_encoder_f RANAP_UPInitialisationFrame_encode_xer;
+per_type_decoder_f RANAP_UPInitialisationFrame_decode_uper;
+per_type_encoder_f RANAP_UPInitialisationFrame_encode_uper;
+per_type_decoder_f RANAP_UPInitialisationFrame_decode_aper;
+per_type_encoder_f RANAP_UPInitialisationFrame_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UPInitialisationFrame_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_USCH-ID.h b/include/osmocom/ranap/RANAP_USCH-ID.h
new file mode 100644
index 0000000..2462e8e
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_USCH-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_USCH_ID_H_
+#define _RANAP_USCH_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_USCH-ID */
+typedef long RANAP_USCH_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_USCH_ID;
+asn_struct_free_f RANAP_USCH_ID_free;
+asn_struct_print_f RANAP_USCH_ID_print;
+asn_constr_check_f RANAP_USCH_ID_constraint;
+ber_type_decoder_f RANAP_USCH_ID_decode_ber;
+der_type_encoder_f RANAP_USCH_ID_encode_der;
+xer_type_decoder_f RANAP_USCH_ID_decode_xer;
+xer_type_encoder_f RANAP_USCH_ID_encode_xer;
+per_type_decoder_f RANAP_USCH_ID_decode_uper;
+per_type_encoder_f RANAP_USCH_ID_encode_uper;
+per_type_decoder_f RANAP_USCH_ID_decode_aper;
+per_type_encoder_f RANAP_USCH_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_USCH_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UTRAN-CellID.h b/include/osmocom/ranap/RANAP_UTRAN-CellID.h
new file mode 100644
index 0000000..f86ce05
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UTRAN-CellID.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UTRAN_CellID_H_
+#define _RANAP_UTRAN_CellID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_TargetCellId.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UTRAN-CellID */
+typedef struct RANAP_UTRAN_CellID {
+ RANAP_PLMNidentity_t pLMNidentity;
+ RANAP_TargetCellId_t cellID;
+ RANAP_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UTRAN_CellID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UTRAN_CellID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UTRAN_CellID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h b/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h
new file mode 100644
index 0000000..735951b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UeRadioCapabilityMatchRequest_H_
+#define _RANAP_UeRadioCapabilityMatchRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UeRadioCapabilityMatchRequest */
+typedef struct RANAP_UeRadioCapabilityMatchRequest {
+ struct ueRadioCapabilityMatchRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueRadioCapabilityMatchRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UeRadioCapabilityMatchRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UeRadioCapabilityMatchRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UeRadioCapabilityMatchRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h b/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h
new file mode 100644
index 0000000..a589878
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UeRadioCapabilityMatchResponse_H_
+#define _RANAP_UeRadioCapabilityMatchResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UeRadioCapabilityMatchResponse */
+typedef struct RANAP_UeRadioCapabilityMatchResponse {
+ struct ueRadioCapabilityMatchResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueRadioCapabilityMatchResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UeRadioCapabilityMatchResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UeRadioCapabilityMatchResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UeRadioCapabilityMatchResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h b/include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h
new file mode 100644
index 0000000..149db08
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UnsuccessfulLinking_IEs_H_
+#define _RANAP_UnsuccessfulLinking_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UnsuccessfulLinking-IEs */
+typedef struct RANAP_UnsuccessfulLinking_IEs {
+ A_SEQUENCE_OF(struct MemberD {
+ RANAP_TMGI_t tMGI;
+ RANAP_Cause_t cause;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UnsuccessfulLinking_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfulLinking_IEs;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UnsuccessfulLinking_IEs_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UnsuccessfulOutcome.h b/include/osmocom/ranap/RANAP_UnsuccessfulOutcome.h
new file mode 100644
index 0000000..cbd7ee8
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UnsuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UnsuccessfulOutcome_H_
+#define _RANAP_UnsuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UnsuccessfulOutcome */
+typedef struct RANAP_UnsuccessfulOutcome {
+ RANAP_ProcedureCode_t procedureCode;
+ RANAP_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UnsuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UnsuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h b/include/osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h
new file mode 100644
index 0000000..be64f7b
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UnsuccessfullyTransmittedDataVolume_H_
+#define _RANAP_UnsuccessfullyTransmittedDataVolume_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UnsuccessfullyTransmittedDataVolume */
+typedef unsigned long RANAP_UnsuccessfullyTransmittedDataVolume_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume;
+asn_struct_free_f RANAP_UnsuccessfullyTransmittedDataVolume_free;
+asn_struct_print_f RANAP_UnsuccessfullyTransmittedDataVolume_print;
+asn_constr_check_f RANAP_UnsuccessfullyTransmittedDataVolume_constraint;
+ber_type_decoder_f RANAP_UnsuccessfullyTransmittedDataVolume_decode_ber;
+der_type_encoder_f RANAP_UnsuccessfullyTransmittedDataVolume_encode_der;
+xer_type_decoder_f RANAP_UnsuccessfullyTransmittedDataVolume_decode_xer;
+xer_type_encoder_f RANAP_UnsuccessfullyTransmittedDataVolume_encode_xer;
+per_type_decoder_f RANAP_UnsuccessfullyTransmittedDataVolume_decode_uper;
+per_type_encoder_f RANAP_UnsuccessfullyTransmittedDataVolume_encode_uper;
+per_type_decoder_f RANAP_UnsuccessfullyTransmittedDataVolume_decode_aper;
+per_type_encoder_f RANAP_UnsuccessfullyTransmittedDataVolume_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UnsuccessfullyTransmittedDataVolume_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h b/include/osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h
new file mode 100644
index 0000000..817d5f5
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UplinkInformationExchangeFailure_H_
+#define _RANAP_UplinkInformationExchangeFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UplinkInformationExchangeFailure */
+typedef struct RANAP_UplinkInformationExchangeFailure {
+ struct uplinkInformationExchangeFailure_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } uplinkInformationExchangeFailure_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UplinkInformationExchangeFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeFailure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UplinkInformationExchangeFailure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h b/include/osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h
new file mode 100644
index 0000000..d07a3a7
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UplinkInformationExchangeRequest_H_
+#define _RANAP_UplinkInformationExchangeRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UplinkInformationExchangeRequest */
+typedef struct RANAP_UplinkInformationExchangeRequest {
+ struct uplinkInformationExchangeRequest_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } uplinkInformationExchangeRequest_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UplinkInformationExchangeRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeRequest;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UplinkInformationExchangeRequest_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h b/include/osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h
new file mode 100644
index 0000000..093acce
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UplinkInformationExchangeResponse_H_
+#define _RANAP_UplinkInformationExchangeResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UplinkInformationExchangeResponse */
+typedef struct RANAP_UplinkInformationExchangeResponse {
+ struct uplinkInformationExchangeResponse_ies {
+ A_SEQUENCE_OF(RANAP_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } uplinkInformationExchangeResponse_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UplinkInformationExchangeResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeResponse;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UplinkInformationExchangeResponse_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UserPlaneInformation.h b/include/osmocom/ranap/RANAP_UserPlaneInformation.h
new file mode 100644
index 0000000..3ae61ec
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UserPlaneInformation.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#ifndef _RANAP_UserPlaneInformation_H_
+#define _RANAP_UserPlaneInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_UserPlaneMode.h>
+#include <osmocom/ranap/RANAP_UP-ModeVersions.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_UserPlaneInformation */
+typedef struct RANAP_UserPlaneInformation {
+ RANAP_UserPlaneMode_t userPlaneMode;
+ RANAP_UP_ModeVersions_t uP_ModeVersions;
+ RANAP_ProtocolExtensionContainer_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_UserPlaneInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UserPlaneInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UserPlaneInformation_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_UserPlaneMode.h b/include/osmocom/ranap/RANAP_UserPlaneMode.h
new file mode 100644
index 0000000..f2d6786
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_UserPlaneMode.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_UserPlaneMode_H_
+#define _RANAP_UserPlaneMode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_UserPlaneMode {
+ RANAP_UserPlaneMode_transparent_mode = 0,
+ RANAP_UserPlaneMode_support_mode_for_predefined_SDU_sizes = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_UserPlaneMode;
+
+/* RANAP_UserPlaneMode */
+typedef long RANAP_UserPlaneMode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_UserPlaneMode;
+asn_struct_free_f RANAP_UserPlaneMode_free;
+asn_struct_print_f RANAP_UserPlaneMode_print;
+asn_constr_check_f RANAP_UserPlaneMode_constraint;
+ber_type_decoder_f RANAP_UserPlaneMode_decode_ber;
+der_type_encoder_f RANAP_UserPlaneMode_encode_der;
+xer_type_decoder_f RANAP_UserPlaneMode_decode_xer;
+xer_type_encoder_f RANAP_UserPlaneMode_encode_xer;
+per_type_decoder_f RANAP_UserPlaneMode_decode_uper;
+per_type_encoder_f RANAP_UserPlaneMode_encode_uper;
+per_type_decoder_f RANAP_UserPlaneMode_decode_aper;
+per_type_encoder_f RANAP_UserPlaneMode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_UserPlaneMode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_VelocityEstimate.h b/include/osmocom/ranap/RANAP_VelocityEstimate.h
new file mode 100644
index 0000000..69d41f4
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_VelocityEstimate.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_VelocityEstimate_H_
+#define _RANAP_VelocityEstimate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/ranap/RANAP_HorizontalVelocity.h>
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h>
+#include <osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h>
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_VelocityEstimate_PR {
+ RANAP_VelocityEstimate_PR_NOTHING, /* No components present */
+ RANAP_VelocityEstimate_PR_horizontalVelocity,
+ RANAP_VelocityEstimate_PR_horizontalWithVerticalVelocity,
+ RANAP_VelocityEstimate_PR_horizontalVelocityWithUncertainty,
+ RANAP_VelocityEstimate_PR_horizontalWithVeritcalVelocityAndUncertainty,
+ /* Extensions may appear below */
+
+} RANAP_VelocityEstimate_PR;
+
+/* RANAP_VelocityEstimate */
+typedef struct RANAP_VelocityEstimate {
+ RANAP_VelocityEstimate_PR present;
+ union RANAP_VelocityEstimate_u {
+ RANAP_HorizontalVelocity_t horizontalVelocity;
+ RANAP_HorizontalWithVerticalVelocity_t horizontalWithVerticalVelocity;
+ RANAP_HorizontalVelocityWithUncertainty_t horizontalVelocityWithUncertainty;
+ RANAP_HorizontalWithVerticalVelocityAndUncertainty_t horizontalWithVeritcalVelocityAndUncertainty;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_VelocityEstimate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_VelocityEstimate;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_VelocityEstimate_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_VerticalAccuracyCode.h b/include/osmocom/ranap/RANAP_VerticalAccuracyCode.h
new file mode 100644
index 0000000..92cb974
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_VerticalAccuracyCode.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_VerticalAccuracyCode_H_
+#define _RANAP_VerticalAccuracyCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_VerticalAccuracyCode */
+typedef long RANAP_VerticalAccuracyCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalAccuracyCode;
+asn_struct_free_f RANAP_VerticalAccuracyCode_free;
+asn_struct_print_f RANAP_VerticalAccuracyCode_print;
+asn_constr_check_f RANAP_VerticalAccuracyCode_constraint;
+ber_type_decoder_f RANAP_VerticalAccuracyCode_decode_ber;
+der_type_encoder_f RANAP_VerticalAccuracyCode_encode_der;
+xer_type_decoder_f RANAP_VerticalAccuracyCode_decode_xer;
+xer_type_encoder_f RANAP_VerticalAccuracyCode_encode_xer;
+per_type_decoder_f RANAP_VerticalAccuracyCode_decode_uper;
+per_type_encoder_f RANAP_VerticalAccuracyCode_encode_uper;
+per_type_decoder_f RANAP_VerticalAccuracyCode_decode_aper;
+per_type_encoder_f RANAP_VerticalAccuracyCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_VerticalAccuracyCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_VerticalSpeedDirection.h b/include/osmocom/ranap/RANAP_VerticalSpeedDirection.h
new file mode 100644
index 0000000..feac00c
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_VerticalSpeedDirection.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_VerticalSpeedDirection_H_
+#define _RANAP_VerticalSpeedDirection_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_VerticalSpeedDirection {
+ RANAP_VerticalSpeedDirection_upward = 0,
+ RANAP_VerticalSpeedDirection_downward = 1
+} e_RANAP_VerticalSpeedDirection;
+
+/* RANAP_VerticalSpeedDirection */
+typedef long RANAP_VerticalSpeedDirection_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalSpeedDirection;
+asn_struct_free_f RANAP_VerticalSpeedDirection_free;
+asn_struct_print_f RANAP_VerticalSpeedDirection_print;
+asn_constr_check_f RANAP_VerticalSpeedDirection_constraint;
+ber_type_decoder_f RANAP_VerticalSpeedDirection_decode_ber;
+der_type_encoder_f RANAP_VerticalSpeedDirection_encode_der;
+xer_type_decoder_f RANAP_VerticalSpeedDirection_decode_xer;
+xer_type_encoder_f RANAP_VerticalSpeedDirection_encode_xer;
+per_type_decoder_f RANAP_VerticalSpeedDirection_decode_uper;
+per_type_encoder_f RANAP_VerticalSpeedDirection_encode_uper;
+per_type_decoder_f RANAP_VerticalSpeedDirection_decode_aper;
+per_type_encoder_f RANAP_VerticalSpeedDirection_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_VerticalSpeedDirection_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_VerticalVelocity.h b/include/osmocom/ranap/RANAP_VerticalVelocity.h
new file mode 100644
index 0000000..15906f3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_VerticalVelocity.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_VerticalVelocity_H_
+#define _RANAP_VerticalVelocity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/ranap/RANAP_VerticalSpeedDirection.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANAP_VerticalVelocity */
+typedef struct RANAP_VerticalVelocity {
+ long veritcalSpeed;
+ RANAP_VerticalSpeedDirection_t veritcalSpeedDirection;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RANAP_VerticalVelocity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalVelocity;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_VerticalVelocity_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h b/include/osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h
new file mode 100644
index 0000000..f4644b3
--- /dev/null
+++ b/include/osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#ifndef _RANAP_VoiceSupportMatchIndicator_H_
+#define _RANAP_VoiceSupportMatchIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RANAP_VoiceSupportMatchIndicator {
+ RANAP_VoiceSupportMatchIndicator_supported = 0,
+ RANAP_VoiceSupportMatchIndicator_not_supported = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RANAP_VoiceSupportMatchIndicator;
+
+/* RANAP_VoiceSupportMatchIndicator */
+typedef long RANAP_VoiceSupportMatchIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANAP_VoiceSupportMatchIndicator;
+asn_struct_free_f RANAP_VoiceSupportMatchIndicator_free;
+asn_struct_print_f RANAP_VoiceSupportMatchIndicator_print;
+asn_constr_check_f RANAP_VoiceSupportMatchIndicator_constraint;
+ber_type_decoder_f RANAP_VoiceSupportMatchIndicator_decode_ber;
+der_type_encoder_f RANAP_VoiceSupportMatchIndicator_encode_der;
+xer_type_decoder_f RANAP_VoiceSupportMatchIndicator_decode_xer;
+xer_type_encoder_f RANAP_VoiceSupportMatchIndicator_encode_xer;
+per_type_decoder_f RANAP_VoiceSupportMatchIndicator_decode_uper;
+per_type_encoder_f RANAP_VoiceSupportMatchIndicator_encode_uper;
+per_type_decoder_f RANAP_VoiceSupportMatchIndicator_decode_aper;
+per_type_encoder_f RANAP_VoiceSupportMatchIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANAP_VoiceSupportMatchIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/ranap/iu_client.h b/include/osmocom/ranap/iu_client.h
new file mode 100644
index 0000000..873b2d2
--- /dev/null
+++ b/include/osmocom/ranap/iu_client.h
@@ -0,0 +1,74 @@
+#pragma once
+
+#include <stdbool.h>
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/gsm/gsm48.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+struct msgb;
+struct osmo_auth_vector;
+
+struct RANAP_RAB_SetupOrModifiedItemIEs_s;
+struct RANAP_Cause;
+
+struct ranap_iu_rnc;
+
+/* Debugging switches from asn1c and osmo-iuh */
+extern int asn_debug;
+extern int asn1_xer_print;
+
+enum ranap_nsap_addr_enc {
+ RANAP_NSAP_ADDR_ENC_X213,
+ RANAP_NSAP_ADDR_ENC_V4RAW,
+};
+
+struct ranap_ue_conn_ctx {
+ struct llist_head list;
+ struct ranap_iu_rnc *rnc;
+ uint32_t conn_id;
+ int integrity_active;
+ struct gprs_ra_id ra_id;
+ enum ranap_nsap_addr_enc rab_assign_addr_enc;
+};
+
+enum ranap_iu_event_type {
+ RANAP_IU_EVENT_RAB_ASSIGN,
+ RANAP_IU_EVENT_SECURITY_MODE_COMPLETE,
+ RANAP_IU_EVENT_IU_RELEASE, /* An actual Iu Release message was received */
+ RANAP_IU_EVENT_LINK_INVALIDATED, /* A SUA link was lost or closed down */
+};
+
+extern const struct value_string ranap_iu_event_type_names[];
+static inline const char *ranap_iu_event_type_str(enum ranap_iu_event_type e)
+{
+ return get_value_string(ranap_iu_event_type_names, e);
+}
+
+/* Implementations of iu_recv_cb_t shall find the ranap_ue_conn_ctx in msg->dst. */
+typedef int (* ranap_iu_recv_cb_t )(struct msgb *msg, struct gprs_ra_id *ra_id,
+ uint16_t *sai);
+
+typedef int (* ranap_iu_event_cb_t )(struct ranap_ue_conn_ctx *ue_ctx,
+ enum ranap_iu_event_type type, void *data);
+
+typedef int (* ranap_iu_rab_ass_resp_cb_t )(struct ranap_ue_conn_ctx *ue_ctx, uint8_t rab_id,
+ struct RANAP_RAB_SetupOrModifiedItemIEs_s *setup_ies);
+
+int ranap_iu_init(void *ctx, int log_subsystem, const char *sccp_user_name, struct osmo_sccp_instance *sccp,
+ ranap_iu_recv_cb_t iu_recv_cb, ranap_iu_event_cb_t iu_event_cb);
+
+int ranap_iu_tx(struct msgb *msg, uint8_t sapi);
+
+int ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac);
+int ranap_iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac);
+
+int ranap_iu_rab_act(struct ranap_ue_conn_ctx *ue_ctx, struct msgb *msg);
+int ranap_iu_rab_deact(struct ranap_ue_conn_ctx *ue_ctx, uint8_t rab_id);
+int ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
+ int send_ck, int new_key);
+int ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *ue_ctx, const char *imsi);
+int ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause);
+
+void ranap_iu_vty_init(int iu_parent_node, enum ranap_nsap_addr_enc *rab_assign_addr_enc);
+int ranap_iu_vty_config_write(struct vty *vty, const char *indent);
diff --git a/include/osmocom/ranap/iu_helpers.h b/include/osmocom/ranap/iu_helpers.h
new file mode 100644
index 0000000..109b6da
--- /dev/null
+++ b/include/osmocom/ranap/iu_helpers.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include <stdint.h>
+#include <sys/types.h>
+
+int ranap_bcd_decode(char *out, size_t out_len, const uint8_t *in, size_t in_len);
+int ranap_imsi_encode(uint8_t *out, size_t out_len, const char *in);
diff --git a/include/osmocom/ranap/ranap_common.h b/include/osmocom/ranap/ranap_common.h
new file mode 100644
index 0000000..8899bd5
--- /dev/null
+++ b/include/osmocom/ranap/ranap_common.h
@@ -0,0 +1,645 @@
+#pragma once
+
+#include <asn1c/asn_application.h>
+
+/* for f in ranap/RANAP_*.h; printf "#include \"$f\"\n" */
+#include <osmocom/ranap/RANAP_APN.h>
+#include <osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h>
+#include <osmocom/ranap/RANAP_AllocationOrRetentionPriority.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h>
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h>
+#include <osmocom/ranap/RANAP_AreaIdentity.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_AuthorisedPLMNs.h>
+#include <osmocom/ranap/RANAP_AuthorisedSNAs.h>
+#include <osmocom/ranap/RANAP_BindingID.h>
+#include <osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h>
+#include <osmocom/ranap/RANAP_CGI.h>
+#include <osmocom/ranap/RANAP_CI.h>
+#include <osmocom/ranap/RANAP_CN-DeactivateTrace.h>
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_CN-ID.h>
+#include <osmocom/ranap/RANAP_CN-InvokeTrace.h>
+#include <osmocom/ranap/RANAP_CNMBMSLinkingInformation.h>
+#include <osmocom/ranap/RANAP_CSFB-Information.h>
+#include <osmocom/ranap/RANAP_CSG-Id-List.h>
+#include <osmocom/ranap/RANAP_CSG-Id.h>
+#include <osmocom/ranap/RANAP_CSG-Membership-Status.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_CauseMisc.h>
+#include <osmocom/ranap/RANAP_CauseNAS.h>
+#include <osmocom/ranap/RANAP_CauseNon-Standard.h>
+#include <osmocom/ranap/RANAP_CauseProtocol.h>
+#include <osmocom/ranap/RANAP_CauseRadioNetwork.h>
+#include <osmocom/ranap/RANAP_CauseRadioNetworkExtension.h>
+#include <osmocom/ranap/RANAP_CauseTransmissionNetwork.h>
+#include <osmocom/ranap/RANAP_Cell-Access-Mode.h>
+#include <osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h>
+#include <osmocom/ranap/RANAP_Cell-Id.h>
+#include <osmocom/ranap/RANAP_CellBased.h>
+#include <osmocom/ranap/RANAP_CellIdList.h>
+#include <osmocom/ranap/RANAP_CellLoadInformation.h>
+#include <osmocom/ranap/RANAP_CellLoadInformationGroup.h>
+#include <osmocom/ranap/RANAP_CellType.h>
+#include <osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h>
+#include <osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h>
+#include <osmocom/ranap/RANAP_ClassmarkInformation2.h>
+#include <osmocom/ranap/RANAP_ClassmarkInformation3.h>
+#include <osmocom/ranap/RANAP_ClientType.h>
+#include <osmocom/ranap/RANAP_CommonID.h>
+#include <osmocom/ranap/RANAP_Correlation-ID.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/ranap/RANAP_CriticalityDiagnostics.h>
+#include <osmocom/ranap/RANAP_D-RNTI.h>
+#include <osmocom/ranap/RANAP_DCH-ID.h>
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h>
+#include <osmocom/ranap/RANAP_DSCH-ID.h>
+#include <osmocom/ranap/RANAP_DataPDUType.h>
+#include <osmocom/ranap/RANAP_DataVolumeList.h>
+#include <osmocom/ranap/RANAP_DataVolumeReference.h>
+#include <osmocom/ranap/RANAP_DataVolumeReport.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportList.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportRequest.h>
+#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
+#include <osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h>
+#include <osmocom/ranap/RANAP_DeliveryOrder.h>
+#include <osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_DirectInformationTransfer.h>
+#include <osmocom/ranap/RANAP_DirectReportingIndicator.h>
+#include <osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h>
+#include <osmocom/ranap/RANAP_DirectTransfer.h>
+#include <osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h>
+#include <osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h>
+#include <osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h>
+#include <osmocom/ranap/RANAP_EARFCN-Extended.h>
+#include <osmocom/ranap/RANAP_ENB-ID.h>
+#include <osmocom/ranap/RANAP_EUTRANFrequencies.h>
+#include <osmocom/ranap/RANAP_EncryptionAlgorithm.h>
+#include <osmocom/ranap/RANAP_EncryptionInformation.h>
+#include <osmocom/ranap/RANAP_EncryptionKey.h>
+#include <osmocom/ranap/RANAP_End-Of-CSFB.h>
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h>
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h>
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h>
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h>
+#include <osmocom/ranap/RANAP_EquipmentsToBeTraced.h>
+#include <osmocom/ranap/RANAP_ErrorIndication.h>
+#include <osmocom/ranap/RANAP_Event.h>
+#include <osmocom/ranap/RANAP_Event1F-Parameters.h>
+#include <osmocom/ranap/RANAP_Event1I-Parameters.h>
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+#include <osmocom/ranap/RANAP_ExtendedRNC-ID.h>
+#include <osmocom/ranap/RANAP_ForwardSRNS-Context.h>
+#include <osmocom/ranap/RANAP_ForwardingIndication.h>
+#include <osmocom/ranap/RANAP_FrameSequenceNumber.h>
+#include <osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h>
+#include <osmocom/ranap/RANAP_GA-AltitudeAndDirection.h>
+#include <osmocom/ranap/RANAP_GA-EllipsoidArc.h>
+#include <osmocom/ranap/RANAP_GA-Point.h>
+#include <osmocom/ranap/RANAP_GA-PointWithAltitude.h>
+#include <osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h>
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertainty.h>
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h>
+#include <osmocom/ranap/RANAP_GA-Polygon.h>
+#include <osmocom/ranap/RANAP_GA-UncertaintyEllipse.h>
+#include <osmocom/ranap/RANAP_GANSS-PositioningDataSet.h>
+#include <osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h>
+#include <osmocom/ranap/RANAP_GERAN-BSC-Container.h>
+#include <osmocom/ranap/RANAP_GERAN-Cell-ID.h>
+#include <osmocom/ranap/RANAP_GERAN-Classmark.h>
+#include <osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h>
+#include <osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h>
+#include <osmocom/ranap/RANAP_GTP-TEI.h>
+#include <osmocom/ranap/RANAP_GeographicalArea.h>
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+#include <osmocom/ranap/RANAP_GlobalCN-ID.h>
+#include <osmocom/ranap/RANAP_GlobalRNC-ID.h>
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+#include <osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h>
+#include <osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h>
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+#include <osmocom/ranap/RANAP_HorizontalVelocity.h>
+#include <osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h>
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h>
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h>
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+#include <osmocom/ranap/RANAP_IE.h>
+#include <osmocom/ranap/RANAP_IMEI.h>
+#include <osmocom/ranap/RANAP_IMEIGroup.h>
+#include <osmocom/ranap/RANAP_IMEIList.h>
+#include <osmocom/ranap/RANAP_IMEISV.h>
+#include <osmocom/ranap/RANAP_IMEISVGroup.h>
+#include <osmocom/ranap/RANAP_IMEISVList.h>
+#include <osmocom/ranap/RANAP_IMSI.h>
+#include <osmocom/ranap/RANAP_IPMulticastAddress.h>
+#include <osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h>
+#include <osmocom/ranap/RANAP_IRATmeasurementParameters.h>
+#include <osmocom/ranap/RANAP_ImmediateMDT.h>
+#include <osmocom/ranap/RANAP_IncludeVelocity.h>
+#include <osmocom/ranap/RANAP_InformationExchangeID.h>
+#include <osmocom/ranap/RANAP_InformationExchangeType.h>
+#include <osmocom/ranap/RANAP_InformationRequestType.h>
+#include <osmocom/ranap/RANAP_InformationRequested.h>
+#include <osmocom/ranap/RANAP_InformationTransferConfirmation.h>
+#include <osmocom/ranap/RANAP_InformationTransferFailure.h>
+#include <osmocom/ranap/RANAP_InformationTransferID.h>
+#include <osmocom/ranap/RANAP_InformationTransferIndication.h>
+#include <osmocom/ranap/RANAP_InformationTransferType.h>
+#include <osmocom/ranap/RANAP_InitialUE-Message.h>
+#include <osmocom/ranap/RANAP_InitiatingMessage.h>
+#include <osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h>
+#include <osmocom/ranap/RANAP_IntegrityProtectionInformation.h>
+#include <osmocom/ranap/RANAP_IntegrityProtectionKey.h>
+#include <osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_InterSystemInformationTransferType.h>
+#include <osmocom/ranap/RANAP_InterfacesToTraceItem.h>
+#include <osmocom/ranap/RANAP_Iu-ReleaseCommand.h>
+#include <osmocom/ranap/RANAP_Iu-ReleaseComplete.h>
+#include <osmocom/ranap/RANAP_Iu-ReleaseRequest.h>
+#include <osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h>
+#include <osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h>
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+#include <osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h>
+#include <osmocom/ranap/RANAP_KeyStatus.h>
+#include <osmocom/ranap/RANAP_L3-Information.h>
+#include <osmocom/ranap/RANAP_LA-LIST.h>
+#include <osmocom/ranap/RANAP_LABased.h>
+#include <osmocom/ranap/RANAP_LAC.h>
+#include <osmocom/ranap/RANAP_LAI-List.h>
+#include <osmocom/ranap/RANAP_LAI.h>
+#include <osmocom/ranap/RANAP_LAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_LHN-ID.h>
+#include <osmocom/ranap/RANAP_LastKnownServiceArea.h>
+#include <osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h>
+#include <osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h>
+#include <osmocom/ranap/RANAP_Links-to-log.h>
+#include <osmocom/ranap/RANAP_ListOF-SNAs.h>
+#include <osmocom/ranap/RANAP_ListOfInterfacesToTrace.h>
+#include <osmocom/ranap/RANAP_LoadValue.h>
+#include <osmocom/ranap/RANAP_LocationRelatedDataFailure.h>
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequest.h>
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequestType.h>
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h>
+#include <osmocom/ranap/RANAP_LocationRelatedDataResponse.h>
+#include <osmocom/ranap/RANAP_LocationReport.h>
+#include <osmocom/ranap/RANAP_LocationReportingControl.h>
+#include <osmocom/ranap/RANAP_LocationReportingTransferInformation.h>
+#include <osmocom/ranap/RANAP_LoggedMDT.h>
+#include <osmocom/ranap/RANAP_LoggingDuration.h>
+#include <osmocom/ranap/RANAP_LoggingInterval.h>
+#include <osmocom/ranap/RANAP_M1Report.h>
+#include <osmocom/ranap/RANAP_M2Report.h>
+#include <osmocom/ranap/RANAP_M4-Collection-Parameters.h>
+#include <osmocom/ranap/RANAP_M4-Period.h>
+#include <osmocom/ranap/RANAP_M4-Threshold.h>
+#include <osmocom/ranap/RANAP_M4Report.h>
+#include <osmocom/ranap/RANAP_M5-Period.h>
+#include <osmocom/ranap/RANAP_M5Report.h>
+#include <osmocom/ranap/RANAP_M6-Period.h>
+#include <osmocom/ranap/RANAP_M6Report.h>
+#include <osmocom/ranap/RANAP_M7-Period.h>
+#include <osmocom/ranap/RANAP_M7Report.h>
+#include <osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h>
+#include <osmocom/ranap/RANAP_MBMSBearerServiceType.h>
+#include <osmocom/ranap/RANAP_MBMSCNDe-Registration.h>
+#include <osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h>
+#include <osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h>
+#include <osmocom/ranap/RANAP_MBMSCountingInformation.h>
+#include <osmocom/ranap/RANAP_MBMSHCIndicator.h>
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h>
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h>
+#include <osmocom/ranap/RANAP_MBMSLinkingInformation.h>
+#include <osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h>
+#include <osmocom/ranap/RANAP_MBMSRABRelease.h>
+#include <osmocom/ranap/RANAP_MBMSRABReleaseFailure.h>
+#include <osmocom/ranap/RANAP_MBMSRABReleaseRequest.h>
+#include <osmocom/ranap/RANAP_MBMSRegistrationFailure.h>
+#include <osmocom/ranap/RANAP_MBMSRegistrationRequest.h>
+#include <osmocom/ranap/RANAP_MBMSRegistrationRequestType.h>
+#include <osmocom/ranap/RANAP_MBMSRegistrationResponse.h>
+#include <osmocom/ranap/RANAP_MBMSServiceArea.h>
+#include <osmocom/ranap/RANAP_MBMSSessionDuration.h>
+#include <osmocom/ranap/RANAP_MBMSSessionIdentity.h>
+#include <osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h>
+#include <osmocom/ranap/RANAP_MBMSSessionStart.h>
+#include <osmocom/ranap/RANAP_MBMSSessionStartFailure.h>
+#include <osmocom/ranap/RANAP_MBMSSessionStartResponse.h>
+#include <osmocom/ranap/RANAP_MBMSSessionStop.h>
+#include <osmocom/ranap/RANAP_MBMSSessionStopResponse.h>
+#include <osmocom/ranap/RANAP_MBMSSessionUpdate.h>
+#include <osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h>
+#include <osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h>
+#include <osmocom/ranap/RANAP_MBMSSynchronisationInformation.h>
+#include <osmocom/ranap/RANAP_MBMSUELinkingRequest.h>
+#include <osmocom/ranap/RANAP_MBMSUELinkingResponse.h>
+#include <osmocom/ranap/RANAP_MDT-Activation.h>
+#include <osmocom/ranap/RANAP_MDT-Configuration.h>
+#include <osmocom/ranap/RANAP_MDT-PLMN-List.h>
+#include <osmocom/ranap/RANAP_MDT-Report-Parameters.h>
+#include <osmocom/ranap/RANAP_MDTAreaScope.h>
+#include <osmocom/ranap/RANAP_MDTMode.h>
+#include <osmocom/ranap/RANAP_MSISDN.h>
+#include <osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h>
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <osmocom/ranap/RANAP_MaxSDU-Size.h>
+#include <osmocom/ranap/RANAP_MeasBand.h>
+#include <osmocom/ranap/RANAP_MeasurementQuantity.h>
+#include <osmocom/ranap/RANAP_MeasurementsToActivate.h>
+#include <osmocom/ranap/RANAP_MessageStructure.h>
+#include <osmocom/ranap/RANAP_NAS-PDU.h>
+#include <osmocom/ranap/RANAP_NAS-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h>
+#include <osmocom/ranap/RANAP_NRTLoadInformationValue.h>
+#include <osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h>
+#include <osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_NonSearchingIndication.h>
+#include <osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_NumberOfIuInstances.h>
+#include <osmocom/ranap/RANAP_NumberOfSteps.h>
+#include <osmocom/ranap/RANAP_OMC-ID.h>
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h>
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h>
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h>
+#include <osmocom/ranap/RANAP_Out-Of-UTRAN.h>
+#include <osmocom/ranap/RANAP_Outcome.h>
+#include <osmocom/ranap/RANAP_Overload.h>
+#include <osmocom/ranap/RANAP_P-TMSI.h>
+#include <osmocom/ranap/RANAP_PDP-Type-extension.h>
+#include <osmocom/ranap/RANAP_PDP-Type.h>
+#include <osmocom/ranap/RANAP_PDP-TypeInformation-extension.h>
+#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
+#include <osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h>
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+#include <osmocom/ranap/RANAP_PLMNs-in-shared-network.h>
+#include <osmocom/ranap/RANAP_Paging.h>
+#include <osmocom/ranap/RANAP_PagingAreaID.h>
+#include <osmocom/ranap/RANAP_PagingCause.h>
+#include <osmocom/ranap/RANAP_PeriodicLocationInfo.h>
+#include <osmocom/ranap/RANAP_PeriodicReportingIndicator.h>
+#include <osmocom/ranap/RANAP_PermanentNAS-UE-ID.h>
+#include <osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h>
+#include <osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h>
+#include <osmocom/ranap/RANAP_Port-Number.h>
+#include <osmocom/ranap/RANAP_PositionData.h>
+#include <osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h>
+#include <osmocom/ranap/RANAP_PositioningDataDiscriminator.h>
+#include <osmocom/ranap/RANAP_PositioningDataSet.h>
+#include <osmocom/ranap/RANAP_PositioningMethodAndUsage.h>
+#include <osmocom/ranap/RANAP_PositioningPriority.h>
+#include <osmocom/ranap/RANAP_Pre-emptionCapability.h>
+#include <osmocom/ranap/RANAP_Pre-emptionVulnerability.h>
+#include <osmocom/ranap/RANAP_Presence.h>
+#include <osmocom/ranap/RANAP_Priority-Class-Indicator.h>
+#include <osmocom/ranap/RANAP_PriorityLevel.h>
+#include <osmocom/ranap/RANAP_PrivateIE-ID.h>
+#include <osmocom/ranap/RANAP_PrivateMessage.h>
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionField.h>
+#include <osmocom/ranap/RANAP_ProtocolExtensionID.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-FieldPair.h>
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+#include <osmocom/ranap/RANAP_ProvidedData.h>
+#include <osmocom/ranap/RANAP_QueuingAllowed.h>
+#include <osmocom/ranap/RANAP_RAB-AssignmentRequest.h>
+#include <osmocom/ranap/RANAP_RAB-AssignmentResponse.h>
+#include <osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h>
+#include <osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h>
+#include <osmocom/ranap/RANAP_RAB-ContextItem.h>
+#include <osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h>
+#include <osmocom/ranap/RANAP_RAB-ContextList.h>
+#include <osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h>
+#include <osmocom/ranap/RANAP_RAB-DataForwardingItem.h>
+#include <osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h>
+#include <osmocom/ranap/RANAP_RAB-DataForwardingList.h>
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h>
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportList.h>
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h>
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h>
+#include <osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h>
+#include <osmocom/ranap/RANAP_RAB-FailedItem.h>
+#include <osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h>
+#include <osmocom/ranap/RANAP_RAB-FailedList.h>
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+#include <osmocom/ranap/RANAP_RAB-IE-ContainerList.h>
+#include <osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h>
+#include <osmocom/ranap/RANAP_RAB-ModifyItem.h>
+#include <osmocom/ranap/RANAP_RAB-ModifyList.h>
+#include <osmocom/ranap/RANAP_RAB-ModifyRequest.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+#include <osmocom/ranap/RANAP_RAB-QueuedItem.h>
+#include <osmocom/ranap/RANAP_RAB-QueuedList.h>
+#include <osmocom/ranap/RANAP_RAB-ReleaseFailedList.h>
+#include <osmocom/ranap/RANAP_RAB-ReleaseItem.h>
+#include <osmocom/ranap/RANAP_RAB-ReleaseList.h>
+#include <osmocom/ranap/RANAP_RAB-ReleaseRequest.h>
+#include <osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h>
+#include <osmocom/ranap/RANAP_RAB-ReleasedItem.h>
+#include <osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h>
+#include <osmocom/ranap/RANAP_RAB-ReleasedList.h>
+#include <osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h>
+#include <osmocom/ranap/RANAP_RAB-RelocationReleaseList.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h>
+#include <osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h>
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h>
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h>
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h>
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h>
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyList.h>
+#include <osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h>
+#include <osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h>
+#include <osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h>
+#include <osmocom/ranap/RANAP_RAB-TrCH-Mapping.h>
+#include <osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h>
+#include <osmocom/ranap/RANAP_RABDataVolumeReport.h>
+#include <osmocom/ranap/RANAP_RABParametersList.h>
+#include <osmocom/ranap/RANAP_RABased.h>
+#include <osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h>
+#include <osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h>
+#include <osmocom/ranap/RANAP_RABs-failed-to-reportItem.h>
+#include <osmocom/ranap/RANAP_RABs-failed-to-reportList.h>
+#include <osmocom/ranap/RANAP_RAC.h>
+#include <osmocom/ranap/RANAP_RAI-List.h>
+#include <osmocom/ranap/RANAP_RAI.h>
+#include <osmocom/ranap/RANAP_RAListofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h>
+#include <osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h>
+#include <osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h>
+#include <osmocom/ranap/RANAP_RANAP-PDU.h>
+#include <osmocom/ranap/RANAP_RANAP-RelocationInformation.h>
+#include <osmocom/ranap/RANAP_RAT-Type.h>
+#include <osmocom/ranap/RANAP_RAofIdleModeUEs.h>
+#include <osmocom/ranap/RANAP_RIM-Transfer.h>
+#include <osmocom/ranap/RANAP_RIMInformation.h>
+#include <osmocom/ranap/RANAP_RIMRoutingAddress.h>
+#include <osmocom/ranap/RANAP_RNC-ID.h>
+#include <osmocom/ranap/RANAP_RNCTraceInformation.h>
+#include <osmocom/ranap/RANAP_RNSAPRelocationParameters.h>
+#include <osmocom/ranap/RANAP_RRC-Container.h>
+#include <osmocom/ranap/RANAP_RSRQ-Extension.h>
+#include <osmocom/ranap/RANAP_RSRQ-Type.h>
+#include <osmocom/ranap/RANAP_RSRVCC-HO-Indication.h>
+#include <osmocom/ranap/RANAP_RSRVCC-Information.h>
+#include <osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h>
+#include <osmocom/ranap/RANAP_RTLoadValue.h>
+#include <osmocom/ranap/RANAP_RateControlAllowed.h>
+#include <osmocom/ranap/RANAP_RedirectAttemptFlag.h>
+#include <osmocom/ranap/RANAP_RedirectionCompleted.h>
+#include <osmocom/ranap/RANAP_RedirectionIndication.h>
+#include <osmocom/ranap/RANAP_RejectCauseValue.h>
+#include <osmocom/ranap/RANAP_RelocationCancel.h>
+#include <osmocom/ranap/RANAP_RelocationCancelAcknowledge.h>
+#include <osmocom/ranap/RANAP_RelocationCommand.h>
+#include <osmocom/ranap/RANAP_RelocationComplete.h>
+#include <osmocom/ranap/RANAP_RelocationDetect.h>
+#include <osmocom/ranap/RANAP_RelocationFailure.h>
+#include <osmocom/ranap/RANAP_RelocationPreparationFailure.h>
+#include <osmocom/ranap/RANAP_RelocationRequest.h>
+#include <osmocom/ranap/RANAP_RelocationRequestAcknowledge.h>
+#include <osmocom/ranap/RANAP_RelocationRequired.h>
+#include <osmocom/ranap/RANAP_RelocationRequirement.h>
+#include <osmocom/ranap/RANAP_RelocationType.h>
+#include <osmocom/ranap/RANAP_RepetitionNumber0.h>
+#include <osmocom/ranap/RANAP_RepetitionNumber1.h>
+#include <osmocom/ranap/RANAP_ReportAmount.h>
+#include <osmocom/ranap/RANAP_ReportArea.h>
+#include <osmocom/ranap/RANAP_ReportChangeOfSAI.h>
+#include <osmocom/ranap/RANAP_ReportInterval.h>
+#include <osmocom/ranap/RANAP_RequestType.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h>
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h>
+#include <osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h>
+#include <osmocom/ranap/RANAP_RequestedGPSAssistanceData.h>
+#include <osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h>
+#include <osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h>
+#include <osmocom/ranap/RANAP_RequestedMulticastServiceList.h>
+#include <osmocom/ranap/RANAP_Reset.h>
+#include <osmocom/ranap/RANAP_ResetAcknowledge.h>
+#include <osmocom/ranap/RANAP_ResetResource.h>
+#include <osmocom/ranap/RANAP_ResetResourceAckItem.h>
+#include <osmocom/ranap/RANAP_ResetResourceAckList.h>
+#include <osmocom/ranap/RANAP_ResetResourceAcknowledge.h>
+#include <osmocom/ranap/RANAP_ResetResourceItem.h>
+#include <osmocom/ranap/RANAP_ResetResourceList.h>
+#include <osmocom/ranap/RANAP_ResidualBitErrorRatio.h>
+#include <osmocom/ranap/RANAP_ResponseTime.h>
+#include <osmocom/ranap/RANAP_SAC.h>
+#include <osmocom/ranap/RANAP_SAI.h>
+#include <osmocom/ranap/RANAP_SAPI.h>
+#include <osmocom/ranap/RANAP_SDU-ErrorRatio.h>
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameters.h>
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h>
+#include <osmocom/ranap/RANAP_SDU-Parameters.h>
+#include <osmocom/ranap/RANAP_SDU-ParameterItem.h>
+#include <osmocom/ranap/RANAP_SNA-Access-Information.h>
+#include <osmocom/ranap/RANAP_SNAC.h>
+#include <osmocom/ranap/RANAP_SRB-ID.h>
+#include <osmocom/ranap/RANAP_SRB-TrCH-Mapping.h>
+#include <osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h>
+#include <osmocom/ranap/RANAP_SRNS-ContextRequest.h>
+#include <osmocom/ranap/RANAP_SRNS-ContextResponse.h>
+#include <osmocom/ranap/RANAP_SRNS-DataForwardCommand.h>
+#include <osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h>
+#include <osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h>
+#include <osmocom/ranap/RANAP_SRVCC-HO-Indication.h>
+#include <osmocom/ranap/RANAP_SRVCC-Information.h>
+#include <osmocom/ranap/RANAP_SRVCC-Operation-Possible.h>
+#include <osmocom/ranap/RANAP_SecurityModeCommand.h>
+#include <osmocom/ranap/RANAP_SecurityModeComplete.h>
+#include <osmocom/ranap/RANAP_SecurityModeReject.h>
+#include <osmocom/ranap/RANAP_Service-Handover.h>
+#include <osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h>
+#include <osmocom/ranap/RANAP_SessionUpdateID.h>
+#include <osmocom/ranap/RANAP_Shared-Network-Information.h>
+#include <osmocom/ranap/RANAP_SignallingIndication.h>
+#include <osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_SourceCellID.h>
+#include <osmocom/ranap/RANAP_SourceID.h>
+#include <osmocom/ranap/RANAP_SourceRNC-ID.h>
+#include <osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_SourceStatisticsDescriptor.h>
+#include <osmocom/ranap/RANAP_SourceUTRANCellID.h>
+#include <osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_SubflowSDU-Size.h>
+#include <osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h>
+#include <osmocom/ranap/RANAP_SuccessfulOutcome.h>
+#include <osmocom/ranap/RANAP_SupportedBitrate.h>
+#include <osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h>
+#include <osmocom/ranap/RANAP_TAC.h>
+#include <osmocom/ranap/RANAP_TAI.h>
+#include <osmocom/ranap/RANAP_TBCD-STRING.h>
+#include <osmocom/ranap/RANAP_TMGI.h>
+#include <osmocom/ranap/RANAP_TMSI.h>
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h>
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h>
+#include <osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_TargetCellId.h>
+#include <osmocom/ranap/RANAP_TargetENB-ID.h>
+#include <osmocom/ranap/RANAP_TargetID.h>
+#include <osmocom/ranap/RANAP_TargetRNC-ID.h>
+#include <osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h>
+#include <osmocom/ranap/RANAP_TemporaryUE-ID.h>
+#include <osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h>
+#include <osmocom/ranap/RANAP_Time-UE-StayedInCell.h>
+#include <osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h>
+#include <osmocom/ranap/RANAP_TimingDifferenceULDL.h>
+#include <osmocom/ranap/RANAP_TrCH-ID-List.h>
+#include <osmocom/ranap/RANAP_TrCH-ID.h>
+#include <osmocom/ranap/RANAP_TraceDepth.h>
+#include <osmocom/ranap/RANAP_TraceInformation.h>
+#include <osmocom/ranap/RANAP_TracePropagationParameters.h>
+#include <osmocom/ranap/RANAP_TraceRecordingSessionInformation.h>
+#include <osmocom/ranap/RANAP_TraceRecordingSessionReference.h>
+#include <osmocom/ranap/RANAP_TraceReference.h>
+#include <osmocom/ranap/RANAP_TraceType.h>
+#include <osmocom/ranap/RANAP_TrafficClass.h>
+#include <osmocom/ranap/RANAP_TrafficHandlingPriority.h>
+#include <osmocom/ranap/RANAP_TransferDelay.h>
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+#include <osmocom/ranap/RANAP_TransportLayerInformation.h>
+#include <osmocom/ranap/RANAP_TriggerID.h>
+#include <osmocom/ranap/RANAP_TriggeringMessage.h>
+#include <osmocom/ranap/RANAP_TunnelInformation.h>
+#include <osmocom/ranap/RANAP_TypeOfError.h>
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h>
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h>
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h>
+#include <osmocom/ranap/RANAP_UE-History-Information.h>
+#include <osmocom/ranap/RANAP_UE-ID.h>
+#include <osmocom/ranap/RANAP_UESBI-Iu.h>
+#include <osmocom/ranap/RANAP_UESBI-IuA.h>
+#include <osmocom/ranap/RANAP_UESBI-IuB.h>
+#include <osmocom/ranap/RANAP_UESpecificInformationIndication.h>
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
+#include <osmocom/ranap/RANAP_UP-ModeVersions.h>
+#include <osmocom/ranap/RANAP_UPInformation.h>
+#include <osmocom/ranap/RANAP_UPInitialisationFrame.h>
+#include <osmocom/ranap/RANAP_USCH-ID.h>
+#include <osmocom/ranap/RANAP_UTRAN-CellID.h>
+#include <osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h>
+#include <osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h>
+#include <osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h>
+#include <osmocom/ranap/RANAP_UnsuccessfulOutcome.h>
+#include <osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h>
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h>
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h>
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h>
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+#include <osmocom/ranap/RANAP_UserPlaneMode.h>
+#include <osmocom/ranap/RANAP_VelocityEstimate.h>
+#include <osmocom/ranap/RANAP_VerticalAccuracyCode.h>
+#include <osmocom/ranap/RANAP_VerticalSpeedDirection.h>
+#include <osmocom/ranap/RANAP_VerticalVelocity.h>
+#include <osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h>
+
+#if (ASN1C_ENVIRONMENT_VERSION < 924)
+# error "You are compiling with the wrong version of ASN1C"
+#endif
+
+#include <osmocom/core/logging.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+
+struct gprs_ra_id;
+
+#define RANAP_DEBUG(x, args ...) DEBUGP(_ranap_DRANAP, x, ## args)
+extern int _ranap_DRANAP;
+
+extern int asn1_xer_print;
+
+extern const struct value_string ranap_presence_vals[5];
+extern const struct value_string ranap_procedure_code_vals[48];
+
+char *ranap_cause_str(const RANAP_Cause_t *cause);
+
+struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t *td, void *sptr);
+
+struct msgb *ranap_generate_successful_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+struct msgb *ranap_generate_unsuccessful_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+struct msgb *ranap_generate_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id, RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t *type, void *sptr);
+
+RANAP_ProtocolIE_FieldPair_t *ranap_new_ie_pair(RANAP_ProtocolIE_ID_t id,
+ RANAP_Criticality_t criticality1,
+ asn_TYPE_descriptor_t *type1, void *sptr1,
+ RANAP_Criticality_t criticality2,
+ asn_TYPE_descriptor_t *type2, void *sptr2);
+
+void ranap_set_log_area(int log_area);
+
+int ranap_parse_lai(struct gprs_ra_id *ra_id, const RANAP_LAI_t *lai);
+int ranap_ip_from_transp_layer_addr(const BIT_STRING_t *in, uint32_t *ip);
+
+/* The generated version does not work, this is a custom one */
+int ranap_decode_rab_setupormodifieditemies_fromlist(
+ RANAP_RAB_SetupOrModifiedItemIEs_t *raB_SetupOrModifiedItemIEs,
+ ANY_t *any_p);
diff --git a/include/osmocom/ranap/ranap_common_cn.h b/include/osmocom/ranap/ranap_common_cn.h
new file mode 100644
index 0000000..dfce358
--- /dev/null
+++ b/include/osmocom/ranap/ranap_common_cn.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include <stdint.h>
+
+#include <osmocom/ranap/ranap_common.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+
+typedef void (*ranap_handle_cb)(void *ctx, ranap_message *ranap_msg);
+
+/* receive a connection-less RANAP message */
+int ranap_cn_rx_cl(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len);
+
+/* receive a connection-oriented RANAP message */
+int ranap_cn_rx_co(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len);
diff --git a/include/osmocom/ranap/ranap_msg_factory.h b/include/osmocom/ranap/ranap_msg_factory.h
new file mode 100644
index 0000000..120c6e6
--- /dev/null
+++ b/include/osmocom/ranap/ranap_msg_factory.h
@@ -0,0 +1,61 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <osmocom/ranap/RANAP_Cause.h>
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+#include <osmocom/ranap/RANAP_GlobalRNC-ID.h>
+#include <osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h>
+#include <osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h>
+
+/*! \brief generate RANAP DIRECT TRANSFER message */
+struct msgb *ranap_new_msg_dt(uint8_t sapi, const uint8_t *nas, unsigned int nas_len);
+
+/*! \brief generate RANAP SECURITY MODE COMMAND message */
+struct msgb *ranap_new_msg_sec_mod_cmd(const uint8_t *ik, const uint8_t *ck, enum RANAP_KeyStatus status);
+
+/*! \brief generate RANAP SECURITY MODE COMPLETE message */
+struct msgb *ranap_new_msg_sec_mod_compl(
+ RANAP_ChosenIntegrityProtectionAlgorithm_t chosen_ip_alg,
+ RANAP_ChosenEncryptionAlgorithm_t chosen_enc_alg);
+
+/*! \brief generate RANAP COMMON ID message */
+struct msgb *ranap_new_msg_common_id(const char *imsi);
+
+/*! \brief generate RANAP IU RELEASE COMMAND message */
+struct msgb *ranap_new_msg_iu_rel_cmd(const RANAP_Cause_t *cause_in);
+
+/*! \brief generate RAPAP IU RELEASE COMPLETE message */
+struct msgb *ranap_new_msg_iu_rel_compl(void);
+
+/*! \brief generate RANAP PAGING COMMAND message */
+struct msgb *ranap_new_msg_paging_cmd(const char *imsi, const uint32_t *tmsi, int is_ps, uint32_t cause);
+
+/*! \brief generate RANAP RAB ASSIGNMENT REQUEST message for CS (voice) */
+struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip,
+ uint16_t rtp_port,
+ bool use_x213_nsap);
+
+/*! \brief generate RANAP RAB ASSIGNMENT REQUEST message for PS (data) */
+struct msgb *ranap_new_msg_rab_assign_data(uint8_t rab_id, uint32_t gtp_ip,
+ uint32_t gtp_tei, bool use_x213_nsap);
+
+/*! \brief generate RANAP RESET message */
+struct msgb *ranap_new_msg_reset(RANAP_CN_DomainIndicator_t domain,
+ const RANAP_Cause_t *cause);
+
+/*! \brief generate RANAP RESET ACK message */
+struct msgb *ranap_new_msg_reset_ack(RANAP_CN_DomainIndicator_t domain,
+ RANAP_GlobalRNC_ID_t *rnc_id);
+
+
+/*! \brief generate RANAP INITIAL UE message */
+struct msgb *ranap_new_msg_initial_ue(uint32_t conn_id, int is_ps,
+ RANAP_GlobalRNC_ID_t *rnc_id,
+ uint8_t *nas_pdu, unsigned int nas_len);
+
+/*! \brief generate RANAP IU RELEASE REQUEST message */
+struct msgb *ranap_new_msg_iu_rel_req(const RANAP_Cause_t *cause);
+
+/*! \brief generate RANAP RAB RELEASE REQUEST message */
+struct msgb *ranap_new_msg_rab_rel_req(uint8_t rab_id, const RANAP_Cause_t *cause);
diff --git a/include/osmocom/rua/Makefile.am b/include/osmocom/rua/Makefile.am
new file mode 100644
index 0000000..307f123
--- /dev/null
+++ b/include/osmocom/rua/Makefile.am
@@ -0,0 +1,40 @@
+noinst_HEADERS = \
+ rua_common.h rua_ies_defs.h rua_msg_factory.h \
+ RUA_Ansi-41-IDNNS.h \
+ RUA_Cause.h \
+ RUA_CauseMisc.h \
+ RUA_CauseProtocol.h \
+ RUA_CauseRadioNetwork.h \
+ RUA_CauseTransport.h \
+ RUA_CN-DomainIndicator.h \
+ RUA_Connect.h \
+ RUA_ConnectionlessTransfer.h \
+ RUA_Context-ID.h \
+ RUA_CriticalityDiagnostics.h \
+ RUA_CriticalityDiagnostics-IE-List.h \
+ RUA_Criticality.h \
+ RUA_CSGMembershipStatus.h \
+ RUA_DirectTransfer.h \
+ RUA_Disconnect.h \
+ RUA_ErrorIndication.h \
+ RUA_Establishment-Cause.h \
+ RUA_Gsm-map-IDNNS.h \
+ RUA_IE-Extensions.h \
+ RUA_IE.h \
+ RUA_InitiatingMessage.h \
+ RUA_IntraDomainNasNodeSelector.h \
+ RUA_Presence.h \
+ RUA_PrivateIE-ID.h \
+ RUA_PrivateMessage.h \
+ RUA_ProcedureCode.h \
+ RUA_ProtocolIE-ID.h \
+ RUA_RANAP-Message.h \
+ RUA_RoutingParameter.h \
+ RUA_RUA-PDU.h \
+ RUA_SuccessfulOutcome.h \
+ RUA_TriggeringMessage.h \
+ RUA_TypeOfError.h \
+ RUA_UnsuccessfulOutcome.h
+
+DISTCLEANFILES = \
+ rua_ies_defs.h
diff --git a/include/osmocom/rua/RUA_Ansi-41-IDNNS.h b/include/osmocom/rua/RUA_Ansi-41-IDNNS.h
new file mode 100644
index 0000000..eb0dd6b
--- /dev/null
+++ b/include/osmocom/rua/RUA_Ansi-41-IDNNS.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_Ansi_41_IDNNS_H_
+#define _RUA_Ansi_41_IDNNS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Ansi-41-IDNNS */
+typedef BIT_STRING_t RUA_Ansi_41_IDNNS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Ansi_41_IDNNS;
+asn_struct_free_f RUA_Ansi_41_IDNNS_free;
+asn_struct_print_f RUA_Ansi_41_IDNNS_print;
+asn_constr_check_f RUA_Ansi_41_IDNNS_constraint;
+ber_type_decoder_f RUA_Ansi_41_IDNNS_decode_ber;
+der_type_encoder_f RUA_Ansi_41_IDNNS_encode_der;
+xer_type_decoder_f RUA_Ansi_41_IDNNS_decode_xer;
+xer_type_encoder_f RUA_Ansi_41_IDNNS_encode_xer;
+per_type_decoder_f RUA_Ansi_41_IDNNS_decode_uper;
+per_type_encoder_f RUA_Ansi_41_IDNNS_encode_uper;
+per_type_decoder_f RUA_Ansi_41_IDNNS_decode_aper;
+per_type_encoder_f RUA_Ansi_41_IDNNS_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Ansi_41_IDNNS_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CN-DomainIndicator.h b/include/osmocom/rua/RUA_CN-DomainIndicator.h
new file mode 100644
index 0000000..171a049
--- /dev/null
+++ b/include/osmocom/rua/RUA_CN-DomainIndicator.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CN_DomainIndicator_H_
+#define _RUA_CN_DomainIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CN_DomainIndicator {
+ RUA_CN_DomainIndicator_cs_domain = 0,
+ RUA_CN_DomainIndicator_ps_domain = 1
+} e_RUA_CN_DomainIndicator;
+
+/* RUA_CN-DomainIndicator */
+typedef long RUA_CN_DomainIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CN_DomainIndicator;
+asn_struct_free_f RUA_CN_DomainIndicator_free;
+asn_struct_print_f RUA_CN_DomainIndicator_print;
+asn_constr_check_f RUA_CN_DomainIndicator_constraint;
+ber_type_decoder_f RUA_CN_DomainIndicator_decode_ber;
+der_type_encoder_f RUA_CN_DomainIndicator_encode_der;
+xer_type_decoder_f RUA_CN_DomainIndicator_decode_xer;
+xer_type_encoder_f RUA_CN_DomainIndicator_encode_xer;
+per_type_decoder_f RUA_CN_DomainIndicator_decode_uper;
+per_type_encoder_f RUA_CN_DomainIndicator_encode_uper;
+per_type_decoder_f RUA_CN_DomainIndicator_decode_aper;
+per_type_encoder_f RUA_CN_DomainIndicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CN_DomainIndicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CSGMembershipStatus.h b/include/osmocom/rua/RUA_CSGMembershipStatus.h
new file mode 100644
index 0000000..2c27609
--- /dev/null
+++ b/include/osmocom/rua/RUA_CSGMembershipStatus.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CSGMembershipStatus_H_
+#define _RUA_CSGMembershipStatus_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CSGMembershipStatus {
+ RUA_CSGMembershipStatus_member = 0,
+ RUA_CSGMembershipStatus_non_member = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_CSGMembershipStatus;
+
+/* RUA_CSGMembershipStatus */
+typedef long RUA_CSGMembershipStatus_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CSGMembershipStatus;
+asn_struct_free_f RUA_CSGMembershipStatus_free;
+asn_struct_print_f RUA_CSGMembershipStatus_print;
+asn_constr_check_f RUA_CSGMembershipStatus_constraint;
+ber_type_decoder_f RUA_CSGMembershipStatus_decode_ber;
+der_type_encoder_f RUA_CSGMembershipStatus_encode_der;
+xer_type_decoder_f RUA_CSGMembershipStatus_decode_xer;
+xer_type_encoder_f RUA_CSGMembershipStatus_encode_xer;
+per_type_decoder_f RUA_CSGMembershipStatus_decode_uper;
+per_type_encoder_f RUA_CSGMembershipStatus_encode_uper;
+per_type_decoder_f RUA_CSGMembershipStatus_decode_aper;
+per_type_encoder_f RUA_CSGMembershipStatus_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CSGMembershipStatus_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Cause.h b/include/osmocom/rua/RUA_Cause.h
new file mode 100644
index 0000000..97a1c1e
--- /dev/null
+++ b/include/osmocom/rua/RUA_Cause.h
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_Cause_H_
+#define _RUA_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_CauseRadioNetwork.h>
+#include <osmocom/rua/RUA_CauseTransport.h>
+#include <osmocom/rua/RUA_CauseProtocol.h>
+#include <osmocom/rua/RUA_CauseMisc.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Cause_PR {
+ RUA_Cause_PR_NOTHING, /* No components present */
+ RUA_Cause_PR_radioNetwork,
+ RUA_Cause_PR_transport,
+ RUA_Cause_PR_protocol,
+ RUA_Cause_PR_misc,
+ /* Extensions may appear below */
+
+} RUA_Cause_PR;
+
+/* RUA_Cause */
+typedef struct RUA_Cause {
+ RUA_Cause_PR present;
+ union RUA_Cause_u {
+ RUA_CauseRadioNetwork_t radioNetwork;
+ RUA_CauseTransport_t transport;
+ RUA_CauseProtocol_t protocol;
+ RUA_CauseMisc_t misc;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Cause;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CauseMisc.h b/include/osmocom/rua/RUA_CauseMisc.h
new file mode 100644
index 0000000..d21dc99
--- /dev/null
+++ b/include/osmocom/rua/RUA_CauseMisc.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CauseMisc_H_
+#define _RUA_CauseMisc_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseMisc {
+ RUA_CauseMisc_processing_overload = 0,
+ RUA_CauseMisc_hardware_failure = 1,
+ RUA_CauseMisc_o_and_m_intervention = 2,
+ RUA_CauseMisc_unspecified = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_CauseMisc;
+
+/* RUA_CauseMisc */
+typedef long RUA_CauseMisc_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseMisc;
+asn_struct_free_f RUA_CauseMisc_free;
+asn_struct_print_f RUA_CauseMisc_print;
+asn_constr_check_f RUA_CauseMisc_constraint;
+ber_type_decoder_f RUA_CauseMisc_decode_ber;
+der_type_encoder_f RUA_CauseMisc_encode_der;
+xer_type_decoder_f RUA_CauseMisc_decode_xer;
+xer_type_encoder_f RUA_CauseMisc_encode_xer;
+per_type_decoder_f RUA_CauseMisc_decode_uper;
+per_type_encoder_f RUA_CauseMisc_encode_uper;
+per_type_decoder_f RUA_CauseMisc_decode_aper;
+per_type_encoder_f RUA_CauseMisc_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CauseMisc_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CauseProtocol.h b/include/osmocom/rua/RUA_CauseProtocol.h
new file mode 100644
index 0000000..a1d8f11
--- /dev/null
+++ b/include/osmocom/rua/RUA_CauseProtocol.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CauseProtocol_H_
+#define _RUA_CauseProtocol_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseProtocol {
+ RUA_CauseProtocol_transfer_syntax_error = 0,
+ RUA_CauseProtocol_abstract_syntax_error_reject = 1,
+ RUA_CauseProtocol_abstract_syntax_error_ignore_and_notify = 2,
+ RUA_CauseProtocol_message_not_compatible_with_receiver_state = 3,
+ RUA_CauseProtocol_semantic_error = 4,
+ RUA_CauseProtocol_unspecified = 5,
+ RUA_CauseProtocol_abstract_syntax_error_falsely_constructed_message = 6
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_CauseProtocol;
+
+/* RUA_CauseProtocol */
+typedef long RUA_CauseProtocol_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseProtocol;
+asn_struct_free_f RUA_CauseProtocol_free;
+asn_struct_print_f RUA_CauseProtocol_print;
+asn_constr_check_f RUA_CauseProtocol_constraint;
+ber_type_decoder_f RUA_CauseProtocol_decode_ber;
+der_type_encoder_f RUA_CauseProtocol_encode_der;
+xer_type_decoder_f RUA_CauseProtocol_decode_xer;
+xer_type_encoder_f RUA_CauseProtocol_encode_xer;
+per_type_decoder_f RUA_CauseProtocol_decode_uper;
+per_type_encoder_f RUA_CauseProtocol_encode_uper;
+per_type_decoder_f RUA_CauseProtocol_decode_aper;
+per_type_encoder_f RUA_CauseProtocol_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CauseProtocol_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CauseRadioNetwork.h b/include/osmocom/rua/RUA_CauseRadioNetwork.h
new file mode 100644
index 0000000..d267b69
--- /dev/null
+++ b/include/osmocom/rua/RUA_CauseRadioNetwork.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CauseRadioNetwork_H_
+#define _RUA_CauseRadioNetwork_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseRadioNetwork {
+ RUA_CauseRadioNetwork_normal = 0,
+ RUA_CauseRadioNetwork_connect_failed = 1,
+ RUA_CauseRadioNetwork_network_release = 2,
+ RUA_CauseRadioNetwork_unspecified = 3
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_CauseRadioNetwork;
+
+/* RUA_CauseRadioNetwork */
+typedef long RUA_CauseRadioNetwork_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseRadioNetwork;
+asn_struct_free_f RUA_CauseRadioNetwork_free;
+asn_struct_print_f RUA_CauseRadioNetwork_print;
+asn_constr_check_f RUA_CauseRadioNetwork_constraint;
+ber_type_decoder_f RUA_CauseRadioNetwork_decode_ber;
+der_type_encoder_f RUA_CauseRadioNetwork_encode_der;
+xer_type_decoder_f RUA_CauseRadioNetwork_decode_xer;
+xer_type_encoder_f RUA_CauseRadioNetwork_encode_xer;
+per_type_decoder_f RUA_CauseRadioNetwork_decode_uper;
+per_type_encoder_f RUA_CauseRadioNetwork_encode_uper;
+per_type_decoder_f RUA_CauseRadioNetwork_decode_aper;
+per_type_encoder_f RUA_CauseRadioNetwork_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CauseRadioNetwork_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CauseTransport.h b/include/osmocom/rua/RUA_CauseTransport.h
new file mode 100644
index 0000000..62597a7
--- /dev/null
+++ b/include/osmocom/rua/RUA_CauseTransport.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CauseTransport_H_
+#define _RUA_CauseTransport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_CauseTransport {
+ RUA_CauseTransport_transport_resource_unavailable = 0,
+ RUA_CauseTransport_unspecified = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_CauseTransport;
+
+/* RUA_CauseTransport */
+typedef long RUA_CauseTransport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CauseTransport;
+asn_struct_free_f RUA_CauseTransport_free;
+asn_struct_print_f RUA_CauseTransport_print;
+asn_constr_check_f RUA_CauseTransport_constraint;
+ber_type_decoder_f RUA_CauseTransport_decode_ber;
+der_type_encoder_f RUA_CauseTransport_encode_der;
+xer_type_decoder_f RUA_CauseTransport_decode_xer;
+xer_type_encoder_f RUA_CauseTransport_encode_xer;
+per_type_decoder_f RUA_CauseTransport_decode_uper;
+per_type_encoder_f RUA_CauseTransport_encode_uper;
+per_type_decoder_f RUA_CauseTransport_decode_aper;
+per_type_encoder_f RUA_CauseTransport_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CauseTransport_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Connect.h b/include/osmocom/rua/RUA_Connect.h
new file mode 100644
index 0000000..63c071f
--- /dev/null
+++ b/include/osmocom/rua/RUA_Connect.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_Connect_H_
+#define _RUA_Connect_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Connect */
+typedef struct RUA_Connect {
+ struct connect_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } connect_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_Connect_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Connect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Connect_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_ConnectionlessTransfer.h b/include/osmocom/rua/RUA_ConnectionlessTransfer.h
new file mode 100644
index 0000000..2e2fed6
--- /dev/null
+++ b/include/osmocom/rua/RUA_ConnectionlessTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_ConnectionlessTransfer_H_
+#define _RUA_ConnectionlessTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_ConnectionlessTransfer */
+typedef struct RUA_ConnectionlessTransfer {
+ struct connectionlessTransfer_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } connectionlessTransfer_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_ConnectionlessTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ConnectionlessTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_ConnectionlessTransfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Context-ID.h b/include/osmocom/rua/RUA_Context-ID.h
new file mode 100644
index 0000000..f4f354c
--- /dev/null
+++ b/include/osmocom/rua/RUA_Context-ID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_Context_ID_H_
+#define _RUA_Context_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Context-ID */
+typedef BIT_STRING_t RUA_Context_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Context_ID;
+asn_struct_free_f RUA_Context_ID_free;
+asn_struct_print_f RUA_Context_ID_print;
+asn_constr_check_f RUA_Context_ID_constraint;
+ber_type_decoder_f RUA_Context_ID_decode_ber;
+der_type_encoder_f RUA_Context_ID_encode_der;
+xer_type_decoder_f RUA_Context_ID_decode_xer;
+xer_type_encoder_f RUA_Context_ID_encode_xer;
+per_type_decoder_f RUA_Context_ID_decode_uper;
+per_type_encoder_f RUA_Context_ID_encode_uper;
+per_type_decoder_f RUA_Context_ID_decode_aper;
+per_type_encoder_f RUA_Context_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Context_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Criticality.h b/include/osmocom/rua/RUA_Criticality.h
new file mode 100644
index 0000000..efd11bc
--- /dev/null
+++ b/include/osmocom/rua/RUA_Criticality.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_Criticality_H_
+#define _RUA_Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Criticality {
+ RUA_Criticality_reject = 0,
+ RUA_Criticality_ignore = 1,
+ RUA_Criticality_notify = 2
+} e_RUA_Criticality;
+
+/* RUA_Criticality */
+typedef long RUA_Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Criticality;
+asn_struct_free_f RUA_Criticality_free;
+asn_struct_print_f RUA_Criticality_print;
+asn_constr_check_f RUA_Criticality_constraint;
+ber_type_decoder_f RUA_Criticality_decode_ber;
+der_type_encoder_f RUA_Criticality_encode_der;
+xer_type_decoder_f RUA_Criticality_decode_xer;
+xer_type_encoder_f RUA_Criticality_encode_xer;
+per_type_decoder_f RUA_Criticality_decode_uper;
+per_type_encoder_f RUA_Criticality_encode_uper;
+per_type_decoder_f RUA_Criticality_decode_aper;
+per_type_encoder_f RUA_Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Criticality_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h b/include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h
new file mode 100644
index 0000000..c10dc14
--- /dev/null
+++ b/include/osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CriticalityDiagnostics_IE_List_H_
+#define _RUA_CriticalityDiagnostics_IE_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <osmocom/rua/RUA_ProtocolIE-ID.h>
+#include <osmocom/rua/RUA_TypeOfError.h>
+#include <osmocom/rua/RUA_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_CriticalityDiagnostics-IE-List */
+typedef struct RUA_CriticalityDiagnostics_IE_List {
+ A_SEQUENCE_OF(struct Member {
+ RUA_Criticality_t iECriticality;
+ RUA_ProtocolIE_ID_t iE_ID;
+ RUA_TypeOfError_t typeOfError;
+ RUA_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_CriticalityDiagnostics_IE_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics_IE_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CriticalityDiagnostics_IE_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_CriticalityDiagnostics.h b/include/osmocom/rua/RUA_CriticalityDiagnostics.h
new file mode 100644
index 0000000..119893d
--- /dev/null
+++ b/include/osmocom/rua/RUA_CriticalityDiagnostics.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_CriticalityDiagnostics_H_
+#define _RUA_CriticalityDiagnostics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_ProcedureCode.h>
+#include <osmocom/rua/RUA_TriggeringMessage.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/rua/RUA_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_CriticalityDiagnostics */
+typedef struct RUA_CriticalityDiagnostics {
+ RUA_ProcedureCode_t *procedureCode /* OPTIONAL */;
+ RUA_TriggeringMessage_t *triggeringMessage /* OPTIONAL */;
+ RUA_Criticality_t *procedureCriticality /* OPTIONAL */;
+ RUA_CriticalityDiagnostics_IE_List_t *iEsCriticalityDiagnostics /* OPTIONAL */;
+ RUA_IE_Extensions_t *iE_Extensions /* OPTIONAL */;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_CriticalityDiagnostics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_CriticalityDiagnostics_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_DirectTransfer.h b/include/osmocom/rua/RUA_DirectTransfer.h
new file mode 100644
index 0000000..223bf83
--- /dev/null
+++ b/include/osmocom/rua/RUA_DirectTransfer.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_DirectTransfer_H_
+#define _RUA_DirectTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_DirectTransfer */
+typedef struct RUA_DirectTransfer {
+ struct directTransfer_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } directTransfer_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_DirectTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_DirectTransfer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_DirectTransfer_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Disconnect.h b/include/osmocom/rua/RUA_Disconnect.h
new file mode 100644
index 0000000..a20cf0d
--- /dev/null
+++ b/include/osmocom/rua/RUA_Disconnect.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_Disconnect_H_
+#define _RUA_Disconnect_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_Disconnect */
+typedef struct RUA_Disconnect {
+ struct disconnect_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } disconnect_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_Disconnect_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Disconnect;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Disconnect_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_ErrorIndication.h b/include/osmocom/rua/RUA_ErrorIndication.h
new file mode 100644
index 0000000..bdc997d
--- /dev/null
+++ b/include/osmocom/rua/RUA_ErrorIndication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_ErrorIndication_H_
+#define _RUA_ErrorIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_ErrorIndication */
+typedef struct RUA_ErrorIndication {
+ struct errorIndication_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } errorIndication_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_ErrorIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ErrorIndication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_ErrorIndication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Establishment-Cause.h b/include/osmocom/rua/RUA_Establishment-Cause.h
new file mode 100644
index 0000000..0ab1a01
--- /dev/null
+++ b/include/osmocom/rua/RUA_Establishment-Cause.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_Establishment_Cause_H_
+#define _RUA_Establishment_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Establishment_Cause {
+ RUA_Establishment_Cause_emergency_call = 0,
+ RUA_Establishment_Cause_normal_call = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_Establishment_Cause;
+
+/* RUA_Establishment-Cause */
+typedef long RUA_Establishment_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Establishment_Cause;
+asn_struct_free_f RUA_Establishment_Cause_free;
+asn_struct_print_f RUA_Establishment_Cause_print;
+asn_constr_check_f RUA_Establishment_Cause_constraint;
+ber_type_decoder_f RUA_Establishment_Cause_decode_ber;
+der_type_encoder_f RUA_Establishment_Cause_encode_der;
+xer_type_decoder_f RUA_Establishment_Cause_decode_xer;
+xer_type_encoder_f RUA_Establishment_Cause_encode_xer;
+per_type_decoder_f RUA_Establishment_Cause_decode_uper;
+per_type_encoder_f RUA_Establishment_Cause_encode_uper;
+per_type_decoder_f RUA_Establishment_Cause_decode_aper;
+per_type_encoder_f RUA_Establishment_Cause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Establishment_Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Gsm-map-IDNNS.h b/include/osmocom/rua/RUA_Gsm-map-IDNNS.h
new file mode 100644
index 0000000..4d59481
--- /dev/null
+++ b/include/osmocom/rua/RUA_Gsm-map-IDNNS.h
@@ -0,0 +1,108 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_Gsm_map_IDNNS_H_
+#define _RUA_Gsm_map_IDNNS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <osmocom/rua/RUA_RoutingParameter.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum routingbasis_PR {
+ routingbasis_PR_NOTHING, /* No components present */
+ routingbasis_PR_localPTMSI,
+ routingbasis_PR_tMSIofsamePLMN,
+ routingbasis_PR_tMSIofdifferentPLMN,
+ routingbasis_PR_iMSIresponsetopaging,
+ routingbasis_PR_iMSIcauseUEinitiatedEvent,
+ routingbasis_PR_iMEI,
+ routingbasis_PR_spare2,
+ routingbasis_PR_spare1
+} routingbasis_PR;
+
+/* RUA_Gsm-map-IDNNS */
+typedef struct RUA_Gsm_map_IDNNS {
+ struct routingbasis {
+ routingbasis_PR present;
+ union RUA_Gsm_map_IDNNS__routingbasis_u {
+ struct localPTMSI {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } localPTMSI;
+ struct tMSIofsamePLMN {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } tMSIofsamePLMN;
+ struct tMSIofdifferentPLMN {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } tMSIofdifferentPLMN;
+ struct iMSIresponsetopaging {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iMSIresponsetopaging;
+ struct iMSIcauseUEinitiatedEvent {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iMSIcauseUEinitiatedEvent;
+ struct iMEI {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } iMEI;
+ struct spare2 {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } spare2;
+ struct spare1 {
+ RUA_RoutingParameter_t routingparameter;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } spare1;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } routingbasis;
+ BOOLEAN_t dummy;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_Gsm_map_IDNNS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Gsm_map_IDNNS;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Gsm_map_IDNNS_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_IE-Extensions.h b/include/osmocom/rua/RUA_IE-Extensions.h
new file mode 100644
index 0000000..a7dee0f
--- /dev/null
+++ b/include/osmocom/rua/RUA_IE-Extensions.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_IE_Extensions_H_
+#define _RUA_IE_Extensions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_IE-Extensions */
+typedef struct RUA_IE_Extensions {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_IE_Extensions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IE_Extensions;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_IE_Extensions_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_IE.h b/include/osmocom/rua/RUA_IE.h
new file mode 100644
index 0000000..cd1266f
--- /dev/null
+++ b/include/osmocom/rua/RUA_IE.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_IE_H_
+#define _RUA_IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_ProtocolIE-ID.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_IE */
+typedef struct RUA_IE {
+ RUA_ProtocolIE_ID_t id;
+ RUA_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_IE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_IE_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_InitiatingMessage.h b/include/osmocom/rua/RUA_InitiatingMessage.h
new file mode 100644
index 0000000..a488a99
--- /dev/null
+++ b/include/osmocom/rua/RUA_InitiatingMessage.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_InitiatingMessage_H_
+#define _RUA_InitiatingMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_ProcedureCode.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_InitiatingMessage */
+typedef struct RUA_InitiatingMessage {
+ RUA_ProcedureCode_t procedureCode;
+ RUA_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_InitiatingMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_InitiatingMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_InitiatingMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_IntraDomainNasNodeSelector.h b/include/osmocom/rua/RUA_IntraDomainNasNodeSelector.h
new file mode 100644
index 0000000..a90ab26
--- /dev/null
+++ b/include/osmocom/rua/RUA_IntraDomainNasNodeSelector.h
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_IntraDomainNasNodeSelector_H_
+#define _RUA_IntraDomainNasNodeSelector_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_Gsm-map-IDNNS.h>
+#include <osmocom/rua/RUA_Ansi-41-IDNNS.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum version_PR {
+ version_PR_NOTHING, /* No components present */
+ version_PR_release99,
+ version_PR_later
+} version_PR;
+typedef enum cn_Type_PR {
+ cn_Type_PR_NOTHING, /* No components present */
+ cn_Type_PR_gsm_Map_IDNNS,
+ cn_Type_PR_ansi_41_IDNNS
+} cn_Type_PR;
+
+/* RUA_IntraDomainNasNodeSelector */
+typedef struct RUA_IntraDomainNasNodeSelector {
+ struct version {
+ version_PR present;
+ union RUA_IntraDomainNasNodeSelector__version_u {
+ struct release99 {
+ struct cn_Type {
+ cn_Type_PR present;
+ union RUA_IntraDomainNasNodeSelector__version__release99__cn_Type_u {
+ RUA_Gsm_map_IDNNS_t gsm_Map_IDNNS;
+ RUA_Ansi_41_IDNNS_t ansi_41_IDNNS;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cn_Type;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } release99;
+ struct later {
+ BIT_STRING_t futurecoding;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } later;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } version;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_IntraDomainNasNodeSelector_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_IntraDomainNasNodeSelector;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_IntraDomainNasNodeSelector_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_Presence.h b/include/osmocom/rua/RUA_Presence.h
new file mode 100644
index 0000000..90faf88
--- /dev/null
+++ b/include/osmocom/rua/RUA_Presence.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_Presence_H_
+#define _RUA_Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_Presence {
+ RUA_Presence_optional = 0,
+ RUA_Presence_conditional = 1,
+ RUA_Presence_mandatory = 2
+} e_RUA_Presence;
+
+/* RUA_Presence */
+typedef long RUA_Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_Presence;
+asn_struct_free_f RUA_Presence_free;
+asn_struct_print_f RUA_Presence_print;
+asn_constr_check_f RUA_Presence_constraint;
+ber_type_decoder_f RUA_Presence_decode_ber;
+der_type_encoder_f RUA_Presence_encode_der;
+xer_type_decoder_f RUA_Presence_decode_xer;
+xer_type_encoder_f RUA_Presence_encode_xer;
+per_type_decoder_f RUA_Presence_decode_uper;
+per_type_encoder_f RUA_Presence_encode_uper;
+per_type_decoder_f RUA_Presence_decode_aper;
+per_type_encoder_f RUA_Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_Presence_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_PrivateIE-ID.h b/include/osmocom/rua/RUA_PrivateIE-ID.h
new file mode 100644
index 0000000..cc7c310
--- /dev/null
+++ b/include/osmocom/rua/RUA_PrivateIE-ID.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_PrivateIE_ID_H_
+#define _RUA_PrivateIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <OBJECT_IDENTIFIER.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_PrivateIE_ID_PR {
+ RUA_PrivateIE_ID_PR_NOTHING, /* No components present */
+ RUA_PrivateIE_ID_PR_local,
+ RUA_PrivateIE_ID_PR_global
+} RUA_PrivateIE_ID_PR;
+
+/* RUA_PrivateIE-ID */
+typedef struct RUA_PrivateIE_ID {
+ RUA_PrivateIE_ID_PR present;
+ union RUA_PrivateIE_ID_u {
+ long local;
+ OBJECT_IDENTIFIER_t global;
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_PrivateIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_PrivateIE_ID;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_PrivateIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_PrivateMessage.h b/include/osmocom/rua/RUA_PrivateMessage.h
new file mode 100644
index 0000000..4b18bfc
--- /dev/null
+++ b/include/osmocom/rua/RUA_PrivateMessage.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_PrivateMessage_H_
+#define _RUA_PrivateMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_PrivateMessage */
+typedef struct RUA_PrivateMessage {
+ struct privateMessage_ies {
+ A_SEQUENCE_OF(RUA_IE_t) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } privateMessage_ies;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_PrivateMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_PrivateMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_PrivateMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_ProcedureCode.h b/include/osmocom/rua/RUA_ProcedureCode.h
new file mode 100644
index 0000000..959ccd1
--- /dev/null
+++ b/include/osmocom/rua/RUA_ProcedureCode.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_ProcedureCode_H_
+#define _RUA_ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_ProcedureCode {
+ RUA_ProcedureCode_id_Connect = 1,
+ RUA_ProcedureCode_id_DirectTransfer = 2,
+ RUA_ProcedureCode_id_Disconnect = 3,
+ RUA_ProcedureCode_id_ConnectionlessTransfer = 4,
+ RUA_ProcedureCode_id_ErrorIndication = 5,
+ RUA_ProcedureCode_id_privateMessage = 6
+} e_RUA_ProcedureCode;
+
+/* RUA_ProcedureCode */
+typedef long RUA_ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ProcedureCode;
+asn_struct_free_f RUA_ProcedureCode_free;
+asn_struct_print_f RUA_ProcedureCode_print;
+asn_constr_check_f RUA_ProcedureCode_constraint;
+ber_type_decoder_f RUA_ProcedureCode_decode_ber;
+der_type_encoder_f RUA_ProcedureCode_encode_der;
+xer_type_decoder_f RUA_ProcedureCode_decode_xer;
+xer_type_encoder_f RUA_ProcedureCode_encode_xer;
+per_type_decoder_f RUA_ProcedureCode_decode_uper;
+per_type_encoder_f RUA_ProcedureCode_encode_uper;
+per_type_decoder_f RUA_ProcedureCode_decode_aper;
+per_type_encoder_f RUA_ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_ProtocolIE-ID.h b/include/osmocom/rua/RUA_ProtocolIE-ID.h
new file mode 100644
index 0000000..1eecdc4
--- /dev/null
+++ b/include/osmocom/rua/RUA_ProtocolIE-ID.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_ProtocolIE_ID_H_
+#define _RUA_ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_ProtocolIE_ID {
+ RUA_ProtocolIE_ID_id_Cause = 1,
+ RUA_ProtocolIE_ID_id_CriticalityDiagnostics = 2,
+ RUA_ProtocolIE_ID_id_Context_ID = 3,
+ RUA_ProtocolIE_ID_id_RANAP_Message = 4,
+ RUA_ProtocolIE_ID_id_IntraDomainNasNodeSelector = 5,
+ RUA_ProtocolIE_ID_id_Establishment_Cause = 6,
+ RUA_ProtocolIE_ID_id_CN_DomainIndicator = 7,
+ RUA_ProtocolIE_ID_id_CSGMembershipStatus = 9
+} e_RUA_ProtocolIE_ID;
+
+/* RUA_ProtocolIE-ID */
+typedef long RUA_ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_ProtocolIE_ID;
+asn_struct_free_f RUA_ProtocolIE_ID_free;
+asn_struct_print_f RUA_ProtocolIE_ID_print;
+asn_constr_check_f RUA_ProtocolIE_ID_constraint;
+ber_type_decoder_f RUA_ProtocolIE_ID_decode_ber;
+der_type_encoder_f RUA_ProtocolIE_ID_encode_der;
+xer_type_decoder_f RUA_ProtocolIE_ID_decode_xer;
+xer_type_encoder_f RUA_ProtocolIE_ID_encode_xer;
+per_type_decoder_f RUA_ProtocolIE_ID_decode_uper;
+per_type_encoder_f RUA_ProtocolIE_ID_encode_uper;
+per_type_decoder_f RUA_ProtocolIE_ID_decode_aper;
+per_type_encoder_f RUA_ProtocolIE_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_RANAP-Message.h b/include/osmocom/rua/RUA_RANAP-Message.h
new file mode 100644
index 0000000..0dc755a
--- /dev/null
+++ b/include/osmocom/rua/RUA_RANAP-Message.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_RANAP_Message_H_
+#define _RUA_RANAP_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_RANAP-Message */
+typedef OCTET_STRING_t RUA_RANAP_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RANAP_Message;
+asn_struct_free_f RUA_RANAP_Message_free;
+asn_struct_print_f RUA_RANAP_Message_print;
+asn_constr_check_f RUA_RANAP_Message_constraint;
+ber_type_decoder_f RUA_RANAP_Message_decode_ber;
+der_type_encoder_f RUA_RANAP_Message_encode_der;
+xer_type_decoder_f RUA_RANAP_Message_decode_xer;
+xer_type_encoder_f RUA_RANAP_Message_encode_xer;
+per_type_decoder_f RUA_RANAP_Message_decode_uper;
+per_type_encoder_f RUA_RANAP_Message_encode_uper;
+per_type_decoder_f RUA_RANAP_Message_decode_aper;
+per_type_encoder_f RUA_RANAP_Message_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_RANAP_Message_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_RUA-PDU.h b/include/osmocom/rua/RUA_RUA-PDU.h
new file mode 100644
index 0000000..7f5bdb7
--- /dev/null
+++ b/include/osmocom/rua/RUA_RUA-PDU.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_RUA_PDU_H_
+#define _RUA_RUA_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_InitiatingMessage.h>
+#include <osmocom/rua/RUA_SuccessfulOutcome.h>
+#include <osmocom/rua/RUA_UnsuccessfulOutcome.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_RUA_PDU_PR {
+ RUA_RUA_PDU_PR_NOTHING, /* No components present */
+ RUA_RUA_PDU_PR_initiatingMessage,
+ RUA_RUA_PDU_PR_successfulOutcome,
+ RUA_RUA_PDU_PR_unsuccessfulOutcome,
+ /* Extensions may appear below */
+
+} RUA_RUA_PDU_PR;
+
+/* RUA_RUA-PDU */
+typedef struct RUA_RUA_PDU {
+ RUA_RUA_PDU_PR present;
+ union RUA_RUA_PDU_u {
+ RUA_InitiatingMessage_t initiatingMessage;
+ RUA_SuccessfulOutcome_t successfulOutcome;
+ RUA_UnsuccessfulOutcome_t unsuccessfulOutcome;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_RUA_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RUA_PDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_RUA_PDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_RoutingParameter.h b/include/osmocom/rua/RUA_RoutingParameter.h
new file mode 100644
index 0000000..2373f72
--- /dev/null
+++ b/include/osmocom/rua/RUA_RoutingParameter.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_RoutingParameter_H_
+#define _RUA_RoutingParameter_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_RoutingParameter */
+typedef BIT_STRING_t RUA_RoutingParameter_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_RoutingParameter;
+asn_struct_free_f RUA_RoutingParameter_free;
+asn_struct_print_f RUA_RoutingParameter_print;
+asn_constr_check_f RUA_RoutingParameter_constraint;
+ber_type_decoder_f RUA_RoutingParameter_decode_ber;
+der_type_encoder_f RUA_RoutingParameter_encode_der;
+xer_type_decoder_f RUA_RoutingParameter_decode_xer;
+xer_type_encoder_f RUA_RoutingParameter_encode_xer;
+per_type_decoder_f RUA_RoutingParameter_decode_uper;
+per_type_encoder_f RUA_RoutingParameter_encode_uper;
+per_type_decoder_f RUA_RoutingParameter_decode_aper;
+per_type_encoder_f RUA_RoutingParameter_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_RoutingParameter_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_SuccessfulOutcome.h b/include/osmocom/rua/RUA_SuccessfulOutcome.h
new file mode 100644
index 0000000..28938a3
--- /dev/null
+++ b/include/osmocom/rua/RUA_SuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_SuccessfulOutcome_H_
+#define _RUA_SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_ProcedureCode.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_SuccessfulOutcome */
+typedef struct RUA_SuccessfulOutcome {
+ RUA_ProcedureCode_t procedureCode;
+ RUA_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_SuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_SuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_TriggeringMessage.h b/include/osmocom/rua/RUA_TriggeringMessage.h
new file mode 100644
index 0000000..b094da6
--- /dev/null
+++ b/include/osmocom/rua/RUA_TriggeringMessage.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#ifndef _RUA_TriggeringMessage_H_
+#define _RUA_TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_TriggeringMessage {
+ RUA_TriggeringMessage_initiating_message = 0,
+ RUA_TriggeringMessage_successful_outcome = 1,
+ RUA_TriggeringMessage_unsuccessful_outcome = 2
+} e_RUA_TriggeringMessage;
+
+/* RUA_TriggeringMessage */
+typedef long RUA_TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_TriggeringMessage;
+asn_struct_free_f RUA_TriggeringMessage_free;
+asn_struct_print_f RUA_TriggeringMessage_print;
+asn_constr_check_f RUA_TriggeringMessage_constraint;
+ber_type_decoder_f RUA_TriggeringMessage_decode_ber;
+der_type_encoder_f RUA_TriggeringMessage_encode_der;
+xer_type_decoder_f RUA_TriggeringMessage_decode_xer;
+xer_type_encoder_f RUA_TriggeringMessage_encode_xer;
+per_type_decoder_f RUA_TriggeringMessage_decode_uper;
+per_type_encoder_f RUA_TriggeringMessage_encode_uper;
+per_type_decoder_f RUA_TriggeringMessage_decode_aper;
+per_type_encoder_f RUA_TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_TypeOfError.h b/include/osmocom/rua/RUA_TypeOfError.h
new file mode 100644
index 0000000..4a45bff
--- /dev/null
+++ b/include/osmocom/rua/RUA_TypeOfError.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#ifndef _RUA_TypeOfError_H_
+#define _RUA_TypeOfError_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RUA_TypeOfError {
+ RUA_TypeOfError_not_understood = 0,
+ RUA_TypeOfError_missing = 1
+ /*
+ * Enumeration is extensible
+ */
+} e_RUA_TypeOfError;
+
+/* RUA_TypeOfError */
+typedef long RUA_TypeOfError_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_TypeOfError;
+asn_struct_free_f RUA_TypeOfError_free;
+asn_struct_print_f RUA_TypeOfError_print;
+asn_constr_check_f RUA_TypeOfError_constraint;
+ber_type_decoder_f RUA_TypeOfError_decode_ber;
+der_type_encoder_f RUA_TypeOfError_encode_der;
+xer_type_decoder_f RUA_TypeOfError_decode_xer;
+xer_type_encoder_f RUA_TypeOfError_encode_xer;
+per_type_decoder_f RUA_TypeOfError_decode_uper;
+per_type_encoder_f RUA_TypeOfError_encode_uper;
+per_type_decoder_f RUA_TypeOfError_decode_aper;
+per_type_encoder_f RUA_TypeOfError_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_TypeOfError_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/RUA_UnsuccessfulOutcome.h b/include/osmocom/rua/RUA_UnsuccessfulOutcome.h
new file mode 100644
index 0000000..c9b6003
--- /dev/null
+++ b/include/osmocom/rua/RUA_UnsuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#ifndef _RUA_UnsuccessfulOutcome_H_
+#define _RUA_UnsuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rua/RUA_ProcedureCode.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RUA_UnsuccessfulOutcome */
+typedef struct RUA_UnsuccessfulOutcome {
+ RUA_ProcedureCode_t procedureCode;
+ RUA_Criticality_t criticality;
+ ANY_t value;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RUA_UnsuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RUA_UnsuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RUA_UnsuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rua/rua_common.h b/include/osmocom/rua/rua_common.h
new file mode 100644
index 0000000..9b3a65c
--- /dev/null
+++ b/include/osmocom/rua/rua_common.h
@@ -0,0 +1,71 @@
+#pragma once
+
+#include <asn_application.h>
+
+#include <osmocom/rua/RUA_Ansi-41-IDNNS.h>
+#include <osmocom/rua/RUA_CN-DomainIndicator.h>
+#include <osmocom/rua/RUA_CSGMembershipStatus.h>
+#include <osmocom/rua/RUA_Cause.h>
+#include <osmocom/rua/RUA_CauseMisc.h>
+#include <osmocom/rua/RUA_CauseProtocol.h>
+#include <osmocom/rua/RUA_CauseRadioNetwork.h>
+#include <osmocom/rua/RUA_CauseTransport.h>
+#include <osmocom/rua/RUA_Connect.h>
+#include <osmocom/rua/RUA_ConnectionlessTransfer.h>
+#include <osmocom/rua/RUA_Context-ID.h>
+#include <osmocom/rua/RUA_Criticality.h>
+#include <osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/rua/RUA_CriticalityDiagnostics.h>
+#include <osmocom/rua/RUA_DirectTransfer.h>
+#include <osmocom/rua/RUA_Disconnect.h>
+#include <osmocom/rua/RUA_ErrorIndication.h>
+#include <osmocom/rua/RUA_Establishment-Cause.h>
+#include <osmocom/rua/RUA_Gsm-map-IDNNS.h>
+#include <osmocom/rua/RUA_IE-Extensions.h>
+#include <osmocom/rua/RUA_IE.h>
+#include <osmocom/rua/RUA_InitiatingMessage.h>
+#include <osmocom/rua/RUA_IntraDomainNasNodeSelector.h>
+#include <osmocom/rua/RUA_Presence.h>
+#include <osmocom/rua/RUA_PrivateIE-ID.h>
+#include <osmocom/rua/RUA_PrivateMessage.h>
+#include <osmocom/rua/RUA_ProcedureCode.h>
+#include <osmocom/rua/RUA_ProtocolIE-ID.h>
+#include <osmocom/rua/RUA_RANAP-Message.h>
+#include <osmocom/rua/RUA_RUA-PDU.h>
+#include <osmocom/rua/RUA_RoutingParameter.h>
+#include <osmocom/rua/RUA_SuccessfulOutcome.h>
+#include <osmocom/rua/RUA_TriggeringMessage.h>
+#include <osmocom/rua/RUA_TypeOfError.h>
+#include <osmocom/rua/RUA_UnsuccessfulOutcome.h>
+
+#if (ASN1C_ENVIRONMENT_VERSION < 924)
+# error "You are compiling with the wrong version of ASN1C"
+#endif
+
+#include <osmocom/core/logging.h>
+
+#define RUA_DEBUG(x, args ...) DEBUGP(0, x, ## args)
+
+extern int asn1_xer_print;
+
+struct msgb *rua_generate_initiating_message(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td, void *sptr);
+
+struct msgb *rua_generate_successful_outcome(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+struct msgb *rua_generate_unsuccessful_outcome(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr);
+
+RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id, RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t *type, void *sptr);
+
+char *rua_cause_str(RUA_Cause_t *cause);
diff --git a/include/osmocom/rua/rua_msg_factory.h b/include/osmocom/rua/rua_msg_factory.h
new file mode 100644
index 0000000..ca2f4e8
--- /dev/null
+++ b/include/osmocom/rua/rua_msg_factory.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include <stdint.h>
+#include <osmocom/core/msgb.h>
+
+struct msgb *rua_new_udt(struct msgb *inmsg);
+struct msgb *rua_new_conn(int is_ps, uint32_t context_id, struct msgb *inmsg);
+struct msgb *rua_new_dt(int is_ps, uint32_t context_id, struct msgb *inmsg);
+struct msgb *rua_new_disc(int is_ps, uint32_t context_id, struct msgb *inmsg);
diff --git a/libosmo-ranap.pc.in b/libosmo-ranap.pc.in
new file mode 100644
index 0000000..3a8f5b0
--- /dev/null
+++ b/libosmo-ranap.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Osmocom RANAP protocol library
+Description: C Utility Library
+Version: @VERSION@
+Libs: -L${libdir} -losmo-ranap
+Cflags: -I${includedir}/
diff --git a/move-asn1-header-files.sh b/move-asn1-header-files.sh
new file mode 100755
index 0000000..b968323
--- /dev/null
+++ b/move-asn1-header-files.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Usage:
+# ../../move-asn1-headers.sh subdir_name File1.h File2.h ...
+# All .h and .c files in the current directory are edited to use #include <...>
+# style for the .h files given on the cmdline. The given .h files are also
+# moved to ../include/<subdir_name>/ so that #include <...> will work.
+
+set -e
+
+base_dir="$(dirname "$0")"
+
+include_subdir="$1"
+shift
+
+include_dir="$base_dir/include/$include_subdir"
+mkdir -p "$include_dir"
+echo "$PWD/*.h --> $include_dir"
+
+collect_sed_commands() {
+ while [ -n "$1" ]; do
+ fname="$1"
+ shift
+
+ echo "s,^#include \"$fname\"$,#include <$include_subdir/$fname>,"
+ done
+}
+
+move_headers() {
+ echo mv $@ "$include_dir/"
+ mv $@ "$include_dir/"
+}
+
+# Replace all `#include "foo.h"' with `#include <dir/foo.h>' locally
+# - Collect sed commands to replace all header includes, for efficiency
+cmds="$(mktemp)"
+echo "collecting sed commands..."
+collect_sed_commands $@ > "$cmds"
+# - Run commands on all h and c files
+echo "sed -i -f \"$cmds\" *.[hc]"
+sed -i -f "$cmds" *.[hc]
+rm "$cmds"
+
+# Now move sed'ed *.h files to the proper ../include/dir
+move_headers $@
diff --git a/pcap/20150911-hnbap-ue_register.pcap b/pcap/20150911-hnbap-ue_register.pcap
new file mode 100644
index 0000000..9874af9
--- /dev/null
+++ b/pcap/20150911-hnbap-ue_register.pcap
Binary files differ
diff --git a/pcap/2016-01-22_PS_data.pcapng b/pcap/2016-01-22_PS_data.pcapng
new file mode 100644
index 0000000..a636126
--- /dev/null
+++ b/pcap/2016-01-22_PS_data.pcapng
Binary files differ
diff --git a/pcap/UPP RANAP.pcap b/pcap/UPP RANAP.pcap
new file mode 100644
index 0000000..35d60ab
--- /dev/null
+++ b/pcap/UPP RANAP.pcap
Binary files differ
diff --git a/pcap/ranap/29eb1ef0-9805-012b-b2a6-0016cb8cea27.cap b/pcap/ranap/29eb1ef0-9805-012b-b2a6-0016cb8cea27.cap
new file mode 100644
index 0000000..2afa4cc
--- /dev/null
+++ b/pcap/ranap/29eb1ef0-9805-012b-b2a6-0016cb8cea27.cap
Binary files differ
diff --git a/pcap/ranap/3GDT_example.pcap b/pcap/ranap/3GDT_example.pcap
new file mode 100644
index 0000000..80f428e
--- /dev/null
+++ b/pcap/ranap/3GDT_example.pcap
Binary files differ
diff --git a/pcap/ranap/IuPS_PS_call_flow.pcap b/pcap/ranap/IuPS_PS_call_flow.pcap
new file mode 100644
index 0000000..42e99a2
--- /dev/null
+++ b/pcap/ranap/IuPS_PS_call_flow.pcap
Binary files differ
diff --git a/pcap/ranap/MobileOriginatingCall_AMR.cap b/pcap/ranap/MobileOriginatingCall_AMR.cap
new file mode 100644
index 0000000..30272c7
--- /dev/null
+++ b/pcap/ranap/MobileOriginatingCall_AMR.cap
Binary files differ
diff --git a/pcap/ranap/MobileTerminatingCall_AMR.cap b/pcap/ranap/MobileTerminatingCall_AMR.cap
new file mode 100644
index 0000000..6df859b
--- /dev/null
+++ b/pcap/ranap/MobileTerminatingCall_AMR.cap
Binary files differ
diff --git a/pcap/ranap/ranap-linkbit_ETH.pcap b/pcap/ranap/ranap-linkbit_ETH.pcap
new file mode 100644
index 0000000..933bbba
--- /dev/null
+++ b/pcap/ranap/ranap-linkbit_ETH.pcap
Binary files differ
diff --git a/pcap/ranap/ranap.pcap b/pcap/ranap/ranap.pcap
new file mode 100644
index 0000000..3b2f3ff
--- /dev/null
+++ b/pcap/ranap/ranap.pcap
Binary files differ
diff --git a/specs/by_chapter/25.401.pdf b/specs/by_chapter/25.401.pdf
new file mode 120000
index 0000000..9750ef6
--- /dev/null
+++ b/specs/by_chapter/25.401.pdf
@@ -0,0 +1 @@
+../files/ts_125401v040200p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.410.pdf b/specs/by_chapter/25.410.pdf
new file mode 120000
index 0000000..292549c
--- /dev/null
+++ b/specs/by_chapter/25.410.pdf
@@ -0,0 +1 @@
+../files/ts_125410v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.412.pdf b/specs/by_chapter/25.412.pdf
new file mode 120000
index 0000000..9acbf56
--- /dev/null
+++ b/specs/by_chapter/25.412.pdf
@@ -0,0 +1 @@
+../files/ts_125412v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.413.doc b/specs/by_chapter/25.413.doc
new file mode 120000
index 0000000..76faac1
--- /dev/null
+++ b/specs/by_chapter/25.413.doc
@@ -0,0 +1 @@
+../files/25413-c40.doc \ No newline at end of file
diff --git a/specs/by_chapter/25.413.pdf b/specs/by_chapter/25.413.pdf
new file mode 120000
index 0000000..4c0582d
--- /dev/null
+++ b/specs/by_chapter/25.413.pdf
@@ -0,0 +1 @@
+../files/ts_125413v120400p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.414.pdf b/specs/by_chapter/25.414.pdf
new file mode 120000
index 0000000..475c6bc
--- /dev/null
+++ b/specs/by_chapter/25.414.pdf
@@ -0,0 +1 @@
+../files/ts_125414v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.444.doc b/specs/by_chapter/25.444.doc
new file mode 120000
index 0000000..f81398e
--- /dev/null
+++ b/specs/by_chapter/25.444.doc
@@ -0,0 +1 @@
+../files/25444-c00.doc \ No newline at end of file
diff --git a/specs/by_chapter/25.444.pdf b/specs/by_chapter/25.444.pdf
new file mode 120000
index 0000000..f7b639f
--- /dev/null
+++ b/specs/by_chapter/25.444.pdf
@@ -0,0 +1 @@
+../files/ts_125444v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.467.doc b/specs/by_chapter/25.467.doc
new file mode 120000
index 0000000..0df8ea2
--- /dev/null
+++ b/specs/by_chapter/25.467.doc
@@ -0,0 +1 @@
+../files/25467-c30.doc \ No newline at end of file
diff --git a/specs/by_chapter/25.467.pdf b/specs/by_chapter/25.467.pdf
new file mode 120000
index 0000000..bf1233c
--- /dev/null
+++ b/specs/by_chapter/25.467.pdf
@@ -0,0 +1 @@
+../files/ts_125467v120300p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.468.doc b/specs/by_chapter/25.468.doc
new file mode 120000
index 0000000..aad3739
--- /dev/null
+++ b/specs/by_chapter/25.468.doc
@@ -0,0 +1 @@
+../files/25468-c10.doc \ No newline at end of file
diff --git a/specs/by_chapter/25.468.pdf b/specs/by_chapter/25.468.pdf
new file mode 120000
index 0000000..4a235a5
--- /dev/null
+++ b/specs/by_chapter/25.468.pdf
@@ -0,0 +1 @@
+../files/ts_125468v120100p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.469.doc b/specs/by_chapter/25.469.doc
new file mode 120000
index 0000000..3a83f48
--- /dev/null
+++ b/specs/by_chapter/25.469.doc
@@ -0,0 +1 @@
+../files/25469-c40.doc \ No newline at end of file
diff --git a/specs/by_chapter/25.469.pdf b/specs/by_chapter/25.469.pdf
new file mode 120000
index 0000000..b910b04
--- /dev/null
+++ b/specs/by_chapter/25.469.pdf
@@ -0,0 +1 @@
+../files/ts_125469v120400p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/25.931.pdf b/specs/by_chapter/25.931.pdf
new file mode 120000
index 0000000..662df77
--- /dev/null
+++ b/specs/by_chapter/25.931.pdf
@@ -0,0 +1 @@
+../files/tr_125931v130000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.571.pdf b/specs/by_chapter/32.571.pdf
new file mode 120000
index 0000000..a6839fa
--- /dev/null
+++ b/specs/by_chapter/32.571.pdf
@@ -0,0 +1 @@
+../files/ts_132571v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.572.pdf b/specs/by_chapter/32.572.pdf
new file mode 120000
index 0000000..28b7897
--- /dev/null
+++ b/specs/by_chapter/32.572.pdf
@@ -0,0 +1 @@
+../files/ts_132572v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.581.pdf b/specs/by_chapter/32.581.pdf
new file mode 120000
index 0000000..b29c780
--- /dev/null
+++ b/specs/by_chapter/32.581.pdf
@@ -0,0 +1 @@
+../files/ts_132581v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.583.pdf b/specs/by_chapter/32.583.pdf
new file mode 120000
index 0000000..81421ba
--- /dev/null
+++ b/specs/by_chapter/32.583.pdf
@@ -0,0 +1 @@
+../files/ts_132583v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.584.pdf b/specs/by_chapter/32.584.pdf
new file mode 120000
index 0000000..8507a4f
--- /dev/null
+++ b/specs/by_chapter/32.584.pdf
@@ -0,0 +1 @@
+../files/ts_132584v120000p.pdf \ No newline at end of file
diff --git a/specs/by_chapter/32.821.doc b/specs/by_chapter/32.821.doc
new file mode 120000
index 0000000..103b3f7
--- /dev/null
+++ b/specs/by_chapter/32.821.doc
@@ -0,0 +1 @@
+../files/32821-900.doc \ No newline at end of file
diff --git a/specs/by_chapter/32.821.pdf b/specs/by_chapter/32.821.pdf
new file mode 120000
index 0000000..f46dfcd
--- /dev/null
+++ b/specs/by_chapter/32.821.pdf
@@ -0,0 +1 @@
+../files/32821-900.pdf \ No newline at end of file
diff --git a/specs/by_name/examples_signalling_procedures.pdf b/specs/by_name/examples_signalling_procedures.pdf
new file mode 120000
index 0000000..5d879c3
--- /dev/null
+++ b/specs/by_name/examples_signalling_procedures.pdf
@@ -0,0 +1 @@
+../by_chapter/25.931.pdf \ No newline at end of file
diff --git a/specs/by_name/hnb_stage2.pdf b/specs/by_name/hnb_stage2.pdf
new file mode 120000
index 0000000..2c97a70
--- /dev/null
+++ b/specs/by_name/hnb_stage2.pdf
@@ -0,0 +1 @@
+../by_chapter/25.467.pdf \ No newline at end of file
diff --git a/specs/by_name/hnbap.pdf b/specs/by_name/hnbap.pdf
new file mode 120000
index 0000000..f17500d
--- /dev/null
+++ b/specs/by_name/hnbap.pdf
@@ -0,0 +1 @@
+../by_chapter/25.469.pdf \ No newline at end of file
diff --git a/specs/by_name/iu_data_transport_and_transport_signalling.pdf b/specs/by_name/iu_data_transport_and_transport_signalling.pdf
new file mode 120000
index 0000000..48c4204
--- /dev/null
+++ b/specs/by_name/iu_data_transport_and_transport_signalling.pdf
@@ -0,0 +1 @@
+../by_chapter/25.414.pdf \ No newline at end of file
diff --git a/specs/by_name/iu_general_aspects_and_principles.pdf b/specs/by_name/iu_general_aspects_and_principles.pdf
new file mode 120000
index 0000000..8299804
--- /dev/null
+++ b/specs/by_name/iu_general_aspects_and_principles.pdf
@@ -0,0 +1 @@
+../by_chapter/25.410.pdf \ No newline at end of file
diff --git a/specs/by_name/iu_signalling_transport.pdf b/specs/by_name/iu_signalling_transport.pdf
new file mode 120000
index 0000000..9acbf56
--- /dev/null
+++ b/specs/by_name/iu_signalling_transport.pdf
@@ -0,0 +1 @@
+../files/ts_125412v120000p.pdf \ No newline at end of file
diff --git a/specs/by_name/iuh_transport.pdf b/specs/by_name/iuh_transport.pdf
new file mode 120000
index 0000000..67ea58c
--- /dev/null
+++ b/specs/by_name/iuh_transport.pdf
@@ -0,0 +1 @@
+../by_chapter/25.444.pdf \ No newline at end of file
diff --git a/specs/by_name/ranap.pdf b/specs/by_name/ranap.pdf
new file mode 120000
index 0000000..0863467
--- /dev/null
+++ b/specs/by_name/ranap.pdf
@@ -0,0 +1 @@
+../by_chapter/25.413.pdf \ No newline at end of file
diff --git a/specs/by_name/rua.pdf b/specs/by_name/rua.pdf
new file mode 120000
index 0000000..62f0dd7
--- /dev/null
+++ b/specs/by_name/rua.pdf
@@ -0,0 +1 @@
+../by_chapter/25.468.pdf \ No newline at end of file
diff --git a/specs/by_name/utran_overall_description.pdf b/specs/by_name/utran_overall_description.pdf
new file mode 120000
index 0000000..59e873f
--- /dev/null
+++ b/specs/by_name/utran_overall_description.pdf
@@ -0,0 +1 @@
+../by_chapter/25.401.pdf \ No newline at end of file
diff --git a/specs/files/25413-c40.doc b/specs/files/25413-c40.doc
new file mode 100644
index 0000000..4121347
--- /dev/null
+++ b/specs/files/25413-c40.doc
Binary files differ
diff --git a/specs/files/25444-c00.doc b/specs/files/25444-c00.doc
new file mode 100644
index 0000000..e30c454
--- /dev/null
+++ b/specs/files/25444-c00.doc
Binary files differ
diff --git a/specs/files/25467-c30.doc b/specs/files/25467-c30.doc
new file mode 100644
index 0000000..160bb1a
--- /dev/null
+++ b/specs/files/25467-c30.doc
Binary files differ
diff --git a/specs/files/25468-c10.doc b/specs/files/25468-c10.doc
new file mode 100644
index 0000000..c4d90a9
--- /dev/null
+++ b/specs/files/25468-c10.doc
Binary files differ
diff --git a/specs/files/25469-c40.doc b/specs/files/25469-c40.doc
new file mode 100644
index 0000000..9272411
--- /dev/null
+++ b/specs/files/25469-c40.doc
Binary files differ
diff --git a/specs/files/32821-900.doc b/specs/files/32821-900.doc
new file mode 100644
index 0000000..9eb7a1e
--- /dev/null
+++ b/specs/files/32821-900.doc
Binary files differ
diff --git a/specs/files/32821-900.pdf b/specs/files/32821-900.pdf
new file mode 100644
index 0000000..acd6d80
--- /dev/null
+++ b/specs/files/32821-900.pdf
Binary files differ
diff --git a/specs/files/tr_125931v130000p.pdf b/specs/files/tr_125931v130000p.pdf
new file mode 100644
index 0000000..7f03f21
--- /dev/null
+++ b/specs/files/tr_125931v130000p.pdf
Binary files differ
diff --git a/specs/files/ts_125401v040200p.pdf b/specs/files/ts_125401v040200p.pdf
new file mode 100644
index 0000000..5c5926c
--- /dev/null
+++ b/specs/files/ts_125401v040200p.pdf
@@ -0,0 +1,1749 @@
+%PDF-1.2 %âãÏÓ
+143 0 obj << /Linearized 1 /O 146 /H [ 9857 1281 ] /L 310516 /E 97389 /N 40 /T 307537 >> endobj xref 143 460 0000000016 00000 n
+0000009570 00000 n
+0000009715 00000 n
+0000011138 00000 n
+0000011356 00000 n
+0000011423 00000 n
+0000011546 00000 n
+0000011649 00000 n
+0000011797 00000 n
+0000011982 00000 n
+0000012152 00000 n
+0000012262 00000 n
+0000012438 00000 n
+0000012628 00000 n
+0000012798 00000 n
+0000012924 00000 n
+0000013055 00000 n
+0000013195 00000 n
+0000013335 00000 n
+0000013475 00000 n
+0000013622 00000 n
+0000013732 00000 n
+0000013892 00000 n
+0000014026 00000 n
+0000014143 00000 n
+0000014276 00000 n
+0000014428 00000 n
+0000014557 00000 n
+0000014725 00000 n
+0000014865 00000 n
+0000014994 00000 n
+0000015107 00000 n
+0000015280 00000 n
+0000015385 00000 n
+0000015565 00000 n
+0000015685 00000 n
+0000015818 00000 n
+0000015989 00000 n
+0000016105 00000 n
+0000016267 00000 n
+0000016389 00000 n
+0000016507 00000 n
+0000016631 00000 n
+0000016897 00000 n
+0000017117 00000 n
+0000017264 00000 n
+0000017387 00000 n
+0000017538 00000 n
+0000017725 00000 n
+0000017870 00000 n
+0000018014 00000 n
+0000018191 00000 n
+0000018342 00000 n
+0000018518 00000 n
+0000018683 00000 n
+0000018825 00000 n
+0000018967 00000 n
+0000019105 00000 n
+0000019281 00000 n
+0000019423 00000 n
+0000019556 00000 n
+0000019687 00000 n
+0000019833 00000 n
+0000019982 00000 n
+0000020129 00000 n
+0000020277 00000 n
+0000020435 00000 n
+0000020598 00000 n
+0000020745 00000 n
+0000020890 00000 n
+0000021033 00000 n
+0000021188 00000 n
+0000021299 00000 n
+0000021414 00000 n
+0000021547 00000 n
+0000021680 00000 n
+0000021888 00000 n
+0000022008 00000 n
+0000022143 00000 n
+0000022279 00000 n
+0000022457 00000 n
+0000022617 00000 n
+0000022748 00000 n
+0000022882 00000 n
+0000022996 00000 n
+0000023187 00000 n
+0000023359 00000 n
+0000023501 00000 n
+0000023622 00000 n
+0000023783 00000 n
+0000023920 00000 n
+0000024022 00000 n
+0000024154 00000 n
+0000024293 00000 n
+0000024423 00000 n
+0000024559 00000 n
+0000024689 00000 n
+0000024796 00000 n
+0000024968 00000 n
+0000025079 00000 n
+0000025193 00000 n
+0000025376 00000 n
+0000025498 00000 n
+0000025608 00000 n
+0000025716 00000 n
+0000025844 00000 n
+0000025961 00000 n
+0000026079 00000 n
+0000026196 00000 n
+0000030713 00000 n
+0000030768 00000 n
+0000030823 00000 n
+0000030878 00000 n
+0000030933 00000 n
+0000030988 00000 n
+0000031043 00000 n
+0000031098 00000 n
+0000031153 00000 n
+0000031208 00000 n
+0000031263 00000 n
+0000031318 00000 n
+0000031373 00000 n
+0000031428 00000 n
+0000031483 00000 n
+0000031538 00000 n
+0000031593 00000 n
+0000031648 00000 n
+0000031703 00000 n
+0000031758 00000 n
+0000031813 00000 n
+0000031868 00000 n
+0000031923 00000 n
+0000031978 00000 n
+0000032033 00000 n
+0000032088 00000 n
+0000032143 00000 n
+0000032198 00000 n
+0000032253 00000 n
+0000032308 00000 n
+0000032363 00000 n
+0000032418 00000 n
+0000032473 00000 n
+0000032528 00000 n
+0000032583 00000 n
+0000032606 00000 n
+0000034333 00000 n
+0000034356 00000 n
+0000035965 00000 n
+0000035988 00000 n
+0000036098 00000 n
+0000036205 00000 n
+0000036310 00000 n
+0000036423 00000 n
+0000037811 00000 n
+0000037834 00000 n
+0000039269 00000 n
+0000039292 00000 n
+0000040845 00000 n
+0000040867 00000 n
+0000041763 00000 n
+0000041785 00000 n
+0000042670 00000 n
+0000042692 00000 n
+0000042796 00000 n
+0000042897 00000 n
+0000042995 00000 n
+0000043096 00000 n
+0000043198 00000 n
+0000043306 00000 n
+0000043408 00000 n
+0000043521 00000 n
+0000043626 00000 n
+0000043731 00000 n
+0000043836 00000 n
+0000043935 00000 n
+0000044043 00000 n
+0000044154 00000 n
+0000044273 00000 n
+0000044377 00000 n
+0000044484 00000 n
+0000044583 00000 n
+0000044685 00000 n
+0000044764 00000 n
+0000044869 00000 n
+0000044971 00000 n
+0000045076 00000 n
+0000045180 00000 n
+0000045290 00000 n
+0000045391 00000 n
+0000045498 00000 n
+0000045603 00000 n
+0000045708 00000 n
+0000045821 00000 n
+0000045936 00000 n
+0000046038 00000 n
+0000046151 00000 n
+0000046263 00000 n
+0000046375 00000 n
+0000047330 00000 n
+0000047541 00000 n
+0000047738 00000 n
+0000047938 00000 n
+0000048133 00000 n
+0000048337 00000 n
+0000048531 00000 n
+0000048728 00000 n
+0000048922 00000 n
+0000049120 00000 n
+0000049303 00000 n
+0000049488 00000 n
+0000049671 00000 n
+0000049865 00000 n
+0000050052 00000 n
+0000050253 00000 n
+0000050446 00000 n
+0000050640 00000 n
+0000050834 00000 n
+0000051043 00000 n
+0000051244 00000 n
+0000051436 00000 n
+0000051627 00000 n
+0000051819 00000 n
+0000052020 00000 n
+0000052216 00000 n
+0000052409 00000 n
+0000052600 00000 n
+0000052790 00000 n
+0000052986 00000 n
+0000053179 00000 n
+0000053371 00000 n
+0000053561 00000 n
+0000053750 00000 n
+0000053943 00000 n
+0000054133 00000 n
+0000054324 00000 n
+0000054515 00000 n
+0000054702 00000 n
+0000054886 00000 n
+0000055073 00000 n
+0000055265 00000 n
+0000055459 00000 n
+0000055646 00000 n
+0000055835 00000 n
+0000056024 00000 n
+0000056208 00000 n
+0000056419 00000 n
+0000056608 00000 n
+0000056793 00000 n
+0000056998 00000 n
+0000057184 00000 n
+0000057367 00000 n
+0000057561 00000 n
+0000057747 00000 n
+0000057931 00000 n
+0000058115 00000 n
+0000058301 00000 n
+0000058485 00000 n
+0000058669 00000 n
+0000058866 00000 n
+0000059051 00000 n
+0000059244 00000 n
+0000059428 00000 n
+0000059618 00000 n
+0000059824 00000 n
+0000060011 00000 n
+0000060201 00000 n
+0000060403 00000 n
+0000060590 00000 n
+0000060776 00000 n
+0000060967 00000 n
+0000061155 00000 n
+0000061339 00000 n
+0000061530 00000 n
+0000061720 00000 n
+0000061910 00000 n
+0000062100 00000 n
+0000062286 00000 n
+0000062476 00000 n
+0000062663 00000 n
+0000062850 00000 n
+0000063042 00000 n
+0000063229 00000 n
+0000063423 00000 n
+0000063612 00000 n
+0000063803 00000 n
+0000063992 00000 n
+0000064181 00000 n
+0000064372 00000 n
+0000064565 00000 n
+0000064755 00000 n
+0000064945 00000 n
+0000065134 00000 n
+0000065324 00000 n
+0000065516 00000 n
+0000065705 00000 n
+0000065894 00000 n
+0000066083 00000 n
+0000066272 00000 n
+0000066461 00000 n
+0000066652 00000 n
+0000066842 00000 n
+0000067035 00000 n
+0000067218 00000 n
+0000067407 00000 n
+0000067595 00000 n
+0000067784 00000 n
+0000067976 00000 n
+0000068160 00000 n
+0000068350 00000 n
+0000068537 00000 n
+0000068726 00000 n
+0000068922 00000 n
+0000069106 00000 n
+0000069294 00000 n
+0000069483 00000 n
+0000069673 00000 n
+0000069870 00000 n
+0000070055 00000 n
+0000070246 00000 n
+0000070435 00000 n
+0000070624 00000 n
+0000070822 00000 n
+0000071023 00000 n
+0000071214 00000 n
+0000071419 00000 n
+0000071609 00000 n
+0000071804 00000 n
+0000071992 00000 n
+0000072181 00000 n
+0000072388 00000 n
+0000072583 00000 n
+0000072774 00000 n
+0000072960 00000 n
+0000073163 00000 n
+0000073353 00000 n
+0000073544 00000 n
+0000073736 00000 n
+0000073941 00000 n
+0000074132 00000 n
+0000074321 00000 n
+0000074513 00000 n
+0000074704 00000 n
+0000074901 00000 n
+0000075087 00000 n
+0000075284 00000 n
+0000075475 00000 n
+0000075668 00000 n
+0000075854 00000 n
+0000076048 00000 n
+0000076238 00000 n
+0000076428 00000 n
+0000076618 00000 n
+0000076806 00000 n
+0000076996 00000 n
+0000077186 00000 n
+0000077374 00000 n
+0000077564 00000 n
+0000077754 00000 n
+0000077943 00000 n
+0000078128 00000 n
+0000078325 00000 n
+0000078517 00000 n
+0000078707 00000 n
+0000078897 00000 n
+0000079097 00000 n
+0000079293 00000 n
+0000079486 00000 n
+0000079677 00000 n
+0000079880 00000 n
+0000080076 00000 n
+0000080267 00000 n
+0000080458 00000 n
+0000080653 00000 n
+0000080850 00000 n
+0000081041 00000 n
+0000081231 00000 n
+0000081423 00000 n
+0000081617 00000 n
+0000081810 00000 n
+0000082000 00000 n
+0000082189 00000 n
+0000082392 00000 n
+0000082583 00000 n
+0000082780 00000 n
+0000082975 00000 n
+0000083175 00000 n
+0000083365 00000 n
+0000083571 00000 n
+0000083765 00000 n
+0000083960 00000 n
+0000084153 00000 n
+0000084342 00000 n
+0000084536 00000 n
+0000084723 00000 n
+0000084910 00000 n
+0000085097 00000 n
+0000085286 00000 n
+0000085475 00000 n
+0000085658 00000 n
+0000085849 00000 n
+0000086038 00000 n
+0000086227 00000 n
+0000086413 00000 n
+0000086608 00000 n
+0000086792 00000 n
+0000086986 00000 n
+0000087175 00000 n
+0000087359 00000 n
+0000087545 00000 n
+0000087750 00000 n
+0000087940 00000 n
+0000088124 00000 n
+0000088315 00000 n
+0000088506 00000 n
+0000088701 00000 n
+0000088888 00000 n
+0000089082 00000 n
+0000089266 00000 n
+0000089454 00000 n
+0000089646 00000 n
+0000089843 00000 n
+0000090030 00000 n
+0000090219 00000 n
+0000090416 00000 n
+0000090610 00000 n
+0000090819 00000 n
+0000091008 00000 n
+0000091196 00000 n
+0000091396 00000 n
+0000091592 00000 n
+0000091795 00000 n
+0000091998 00000 n
+0000092197 00000 n
+0000092385 00000 n
+0000092574 00000 n
+0000092775 00000 n
+0000092972 00000 n
+0000093159 00000 n
+0000093346 00000 n
+0000093539 00000 n
+0000093727 00000 n
+0000093914 00000 n
+0000094102 00000 n
+0000094290 00000 n
+0000094496 00000 n
+0000094685 00000 n
+0000094874 00000 n
+0000095075 00000 n
+0000095264 00000 n
+0000095457 00000 n
+0000095645 00000 n
+0000095835 00000 n
+0000096022 00000 n
+0000096212 00000 n
+0000096412 00000 n
+0000096612 00000 n
+0000096812 00000 n
+0000097016 00000 n
+0000009857 00000 n
+0000011115 00000 n
+trailer << /Size 603 /Info 137 0 R /Encrypt 145 0 R /Root 144 0 R /Prev 307526 /ID[<dcf448753bb5a7d4b420911e2d51d5e6><dcf448753bb5a7d4b420911e2d51d5e6>] >> startxref 0 %%EOF 144 0 obj << /Type /Catalog /Pages 139 0 R /Outlines 147 0 R /OpenAction [ 146 0 R /XYZ null null null ] /PageMode /UseOutlines >> endobj 145 0 obj << /Filter /Standard /R 2 /O (»šJnŒt<ßöþ¾³Ô~ ê’î,✮}?'W\rZ£U) /U (UŒM `Œ¡šc¾GæÍ„\)©úö>ßv£º) /P -12 /V 1 >> endobj 601 0 obj << /S 776 /O 1622 /Filter /FlateDecode /Length 602 0 R >> stream
+'u®«8.ñ[$HcÀ¸SèMØ•½ˆ’ Ãçù+fÒSEŠÌÌC ÐT_t
+U]#)C6×MÊ@sa`
+À×U]E<ò±'’8òÿF—ÿ†xF)Y|ƒŒ?¯¤Ùyªöì)¯±Äÿk*6B'<í
+IæÃ?±å> 6|¨|s¬é–àè¶o}pfjå#ã¥K‚梊ݠ-FÊ IÍ•u<Ö¾¿TŒr¨Abn Îê~ïIÎ#3«ô&iÞž]–3P% צ!;wÀzpcËA» >–Å ÛrOÀñ©ŸçfûðÄu EÁÆ6½ÒŠ À"Ôþ땉Xš ×±ÿ_rp'v‰cé¿6}j¯ÑJAo¾‡Òxåj—AÈ…ló(§ÉIâ¹<{ý7¡¢p:kUœ~û™ ²p2aÏßѱd0•­ü[*—«î({æyþqC|¢Y,Ûùž¹rR€ƒ¦~›„©í· l_µš~Òª½C‚­Aš‘â;à£?í%uµÞwT¡ÅqBŽWRMŠ)ro?<÷}5ÿ·ÊcnE‰SÙ?õg píT­O´œÝ¨cœíxÆHÇKbf <“½%3{ï°i~ ëk°ÕƒÊo§çQ°Í|eËØÝ5ýš|Õïß´õÄܺï¯×.ˆ)#;Á ÓÕŽ¯¤,ÔNš|„HôãW¬x²·1ðt›XÅ
+e4+ÎëôŒÕÝ—‡B`³7Ø~ɪ™Ó|ƒ“\Ê>ôÅO iàuA¤N€V àúÓT±më–Fë …(¢'¯lX© [acö&B‰¾dÒB- Šê
+ÿi{tÉBûùëeÉÉØL`)6Au¹ïñS;Y2Á\æ¼ÞÞþ†ô¥¦Í á^æÉöõ.í´5‘´Æg÷Ì~Vó/azX#‘ÜuqÛ .ñ‰å›æ„`"T`'3¡’Ñ©Õ] ˆ]r/åFà¶j¸€LÝIÒä’¥ˆ0VQBH'@¢ üùö
+‡Z"¤>ëœ!UsžÓJc•a<¡ƒGµ‚b^ª¯Î&‘€Ô>6žR0Ñí䆓=æïm>IMúŸÃi¤ôÛFu—Îø$WÁÿo¬'®,¦o—ÓÒUmÆýÀ;“ „b·e ‚¬–D®D)³z?§°éGõdÆ·{vœ(L §¬e„^4Ât
+ò#ŸÉ'`"Y)ð™çšj›8ÄÕÙ)Ö}?„xÕ¯hôHÔ7Çù•ÿ=+òôYÝtµ£=dÌL
+õÌ›\œ¸[Œ•@,Žšv`"Qí@W¯^_×°&òÆþ©X¥Ó¬y(iœsÃSu?Uipäðǵ÷—Hvl‰`¬ïçà ü ‰8|‚´ó¼_<¾žxøNò{{Úq@/|Y
+ZÊuèäŽ)ÅnãˆÜ.ÔÏ­l½VÄwqŸ»‚/OÝL4¿—Àn*¿„[˜Æ{²
+x°hÏUT–Ezt½ÀÊdÓJ†…iâœ1‰|À»tÕûW*Ç­OXJã¼ÓYˆKzë£Óý€N÷y±RÁ½d€íÄw\åc?³v$ÃCtÇ~—
+ïЗnÂ/
+]ä±_Äç­Q:Œ,àÖpÕ´Ôýr¹'îX‚
+AÜ)•)—é=%ê3•$:¼™VG& êXm0v@þø)Þz#˜ˆ*Wd½w‡ÿ C4Àzê‚óºÒYR!˜\m4Ê$èÏÂPêhè‚]©‹ŒEZ¢ퟷÞ4™Èà\7­±Ç]¡ ¼$¬‚ø5³
+ãÚŸ‰›gÌÀÙ}fºè
+fÊšãÅ£¹åù{Ó„H°œ«|
+ ý®Óv¹&:"•2”p¯Àßi¿Þ~à"ƒ›ˆ¦¬0Éå˜o*¥¯±;QU¥èOØÕ͇ÑÃ(Q„m…Éödc=ªölô?.ȴߟ5ŠU|ÀDÛ8ºXë†úöOáyDö†z—˜UJþÊ
+oX©|qÖ[;²*÷2­Æçgt Íò‚³f¸?;Ý¡^›ÀÈ÷èå³ Õfl‘}ÀÁä»ýOv•‘¨ÿÞ~ Äú±øïy|â},¢«…a‚B¢z#£d¹×©Tѧš B°lâ>&ë‚¢´ð¥ø^ûgþàvÿ$½ã$$~¤Æl
+¸€Ø*<ˆzï¼ÖÏùºÑ™Ô¡N“)Ñï…ú« ãOïV¿ã¼òÊ«ÒS!"±éÝæÈÞ$»‚7?ÊÑã3Ù/Ys¢Ší¢I…b3„Ño+‚3¦r=váhòŠíÎñOÕ–Ìž›ÿëot]­óãc¸`ÇŠ6!
+ÙB%ÂM®ÌTïÓÈœ 0ñ˜ÙWVMàq~uš‘ÏŽàͼް
+¢×\–‹Ö:+ûZ¢F-³¯8ÖC"æ–ÔÈ¿;ÇXX FŒãgí¾Û*£Y Ù‹ò¼a÷›$V3>8º»¨ë¬è
+O(©òÖ+·‡‹­™9^.r–`óÚg]>ʨ#š÷2Þa‘Û²¥Nˆ:’ô@c²Øý{"mð !”´æl—K‘PL/VgÙ¸R =[ï9JI›—Ø}"Ø)¯"°ß®È}áfx
+`+Qo_wLX“; ßIg°(‚A­e”³5ur’rÇ/ÿ¦1zîºï¾oAQ“–Re…pJ^êzgÄ?mPÃ÷7³ ¤ç®+éEPÌT -õŸgKÓÜN""£ü«ÀBçî—.Øà÷˜Ë8€WføHBdãR|V¾šn¼Cü DÎP.ËHˆá°uu4£¦kÀ'L.-7ÚÅäFÂáýûÃç¬Ä/:ãåªVbÈ®~É™*N®=ü­ke1‡kEfœ)6XÎ
+¸nKò],Àþú öê'iUUJdYJ3yPÑ Êm’äÀÛ¦TFÈâ`ü†@5j@k¦ÕÖ‚4BJÞ!ºjɳ0Ó‚¸OS‹íïxíüÏ‹Q=I;ÂR¢oêgÿòæXJ§ÔÒP¶9L¶>®¡¬I4¡¹úéÆ%ü:Á4O™°4ʦý€¶ùANe*ÌÔf‰^n~áæ€ønTnBúHäñ½ž•ö…yÖ)[I‰+Ž¼«g‡=·¨Ë+ç!@|Zê("-É7¥Nu˜§2ÃW®‹ì¶¬÷QTëQÖZ›½U[™„Àùsñ.­å‘A‰ ~ÀWºV6àyP€Ø©¯hé–3å‹#ž“mqyñ÷¼†ª_Û·<g{áퟋq.®ü©êw\Únêf•ü¦û«G'bÃ?È•áX”ðM·“’d]ÛÓD.nw×½«´Üm˜Lù Ñé<¯Ìá‘Ítê›»AÔæ#/V’òb±{Ï7=£g¤‰Š—^­Çå“>ôM]¥”Ãd{PŽÀuGóêô"o…6Ê_ƒn°LØø¯¡f}Qþú¢Tr7‡7äìÐmWhûU8ø›¦íìR˜Á« ™'¥–ë”l1$uÉ'éÕE³ñë}TÈ/³µnL|0«T›N2A=æ¿Æú”[»7º%Ö)S;¬hMõW'‚)Y.(šãþGÒCLÓÈ
+ÓÉo£Ÿå,«Âû·”“li§uhyN”-†CLv¿©„¢˜³Aq«¬<¨2ÒX%Áóf“qÔ ØëodšfOzñÏ ËÜp6½YK?
+Õµ“@„#Æ^÷…û·!ãÐ"ªßÛHºÂóýÀõn#Ë+“glð¾Ø?>YMÇÖ
+t!ÞSA{˜ÔDÍ!„[$C‘´ÅÃ9\õP†¿×ØÍ¡B§*®ãM”P[œ½»¦áö³&CJLy‰äiß4žµ‘Y`ümE¿ÏÊeÌr1;û-!€;õŸ;LS%€s"Õn,Ø(Ö!i+x&5ùSL<sož¹žW¡r¿¾BdôÝ74¬
+ì×Û·³Úz#ÜÕ’”/¾×??È
+Œ.BÊN/ P†BâçñˆJ‹‰Ã”ôj³ Ë8X{”ƒ*Qu<5ÓbF›µ`% tò.‡ÂŒì¢Ž/š)vRÆ&×@ŽªK¥”°‡g·È&âŸïKYlæ“–^"3“Ý•³h’T¨­OZÜTÄ«†A¶ïvƒª|¼Tð*ý¡sá¨á´oAƒ¿ZÕC3IÝ'¿¾AÌ5Dî±|¹Ó昸Ìwþ)
+,‚píH÷Z¶K¦«}é€ü
+9…{Ý‚&]~›$Á‹RÜ’ ³ ‘ŒX"r½"±²zNÏ^€}Ï×SþXß*"Œ¥ß©P;%QéðDsº È™èU][ço×CÖË÷”•_ 8VM¬Ìûr‘æ›Þë,úljûQê9R2l.²@<xâÚ^Oß¿J~»/¹‰´ÂÊßH
+MјØ fˆœJû}è-­€bs:L¢&Ö Õ†æpQ‹yMæÓÐô¨ËUÜû#5Å­~s—.*ïnij ‘zÜÖ°Ô6 *my«à(°º}fgî
+ص¢7³Z¸ß[ îuÝ£Ê6¼a3O²u`Ô½žäàì®æ±aª4§EÅŸ ‰ƒcF¾ÝÕPHË:þ³v‹¬Oèi3Ÿ§‚?ÅÄvÙà5п*ËÒÙv{döý+ª7mÚÏs‰8‘œ«ŠœÍæ2ùÕ)8¸íö[&VܱdCôJé+”¨¨ ĸ­àŽÝ#T5{øì !`ŸD:Lc¥*X» Ú‘;~ŸßGÐÐøïnny5{'Á%ÜI¦Ô+±0ý±ûú(ýÆ·D R%2»åã&«^^²<x Ä¿.+ˆN÷&i§²÷ŒrIýÜÝm%oœ¼·Tl‚$BÄ+õÚJZ›eì˜è
+&ÂKIJ Oj90aþU¥N¦zÕÓ9>zÓÚxI˜s“‘m†(ë¥Ø³§¹ßð1x
+©`ßÕ[Ùx E+µåË¢$€Ê„î”øþ¾ƒÃŒ†K¡† Ž÷d¾„ú+ïíŸÆΤ};YN¶ù„ƒÛVnIÛ--G§’VY$$ÉBI¤ÙmËT…,Ûì©Ò¢Î!¹Ê¤11y¼åu´vé­±Mî´Ý¡©‚½Õ.Åäyúe&ÇÍ É:î}ÉG²F™þ)„®´†!Qˆò8Ó(4Ñ;Dðz‰ùbó0à—P¢6îvˆô$ËɺÿÆó8ö·3Îs#üf?gà×Wã¬òéñÕjNÌžÌâHsîÆÑéÓâÜ>TZéßóá‚Í‹‡j‰8u*U£ÆM{p´+TÚÛÁ{¿Â•Ìs{¯Öi!ï ²Óð˜YkW¾Xø· NÑÀ€õ]¶Y‡>½¿&‹2§bÚ]7b} Î3ïù!OÇÒóɧ ÆŽ&os ¡rìë‚+lŒ@(mðï!ýOyõ1¡y''OåUgs¸ôO:?c}´Þ.J‡Ð%nZ«¥ÓfÑÛâ┨oí|úˆÙ²I÷E€bÖ6,Äòf-àðËĸKj%œü«|Ir¹äSQ³"t˜§¯©@Š^qëi½ÛÅLz!’¡ÅËX¥iÈÝ!WeðÅ/tÓ\ŠëQe>†s¼z•m(…RÑyŠe&IÅ
+Û:eª&|ì3Üîk7)š¹pC[^’Ù¸]ã÷{%ãTƒª|;ðÁ)"k7 ìsqbÞ²¬ÐÕÈ.‹!sºÞè‚ôk£+PöeˆkxÉ¢>:BÁ4)#›†ñ”&•Å™²DÂR‰¡f„v6ÐP;[Gÿ`J¦¥Ž,uHùÉÿ)Ü.³û¦U
+\Æ)z[Û™õ³AÀ3Kc¸‰¸¹?8šÝä^/ŠéDwÀ‹G'uD/I·
+çá=:úsyL­ð[Co8Gâ!~Ûäj oÅÒ˜Cš H¦fß´Æ¡ûãŒ_CJÉd£+ô'rb¢
+Òºv endstream endobj 300 0 obj 816 endobj 301 0 obj << /Filter /FlateDecode /Length 300 0 R >> stream
+¾CMêÖ´ü8#(u3ï öˌϡøÙD¨½õŽ£”f€·øêù¦˜gI<ó…з´ç¹=]±Ø²Ðœg»£‡ÝÓÄî7j‚ë*îà)åñP35|PrÜ}
+”5<sŸ‹&{©Ïf7ìN!_i£´Ðp&CôèÆqþÒâgW¹7ðsæ¨Ühà‰òŽÖUíû…Õ ÷ €)„A­glýµcý裫Ý$HYèØÓŠg­)>‰ìâ`Çøá'ÚÔ©Ç/ó*ã>Iaº–8‹6’T›#y¶òàÚ¹ù;G\ì~–Á»Ojº±9ÊLFÇЙS$;]{×xYŠ"UrZglPXŽ­xö>FmムÛáž^*.$féV÷ˆ9ï¦y§úfàí]û¥ÞTrM?iÇjà¥(í4€_íòXOÐö,Gôç;½¹æÑ^_7çÔ3¤Ã°ÂIý@€¿²qf=Îdû”Kš…Öʱmïš¾ÍÛ7& +d61ÿ+\f`)ndL§Ç0/l€¶×NDØÑE7¥†Ï-¢´ZÏ…1e_ºkr¿bÒKÛ@¶» ª;Úâ%,ë´ÞËÌl2}Iã·²5Ø;tøª…’a^`ûÓ}œR=›“èÕUks”w,¡÷VyJ4[úß–.w?«x44@£$³[·‚»õE^=œˆ!íWX-Ü#ç\Rï!'OnDË·Ï eèÞT¼ùG}胦!°8z2N f&[AÏG–Æ]ðvKZ‘Ö˜
+uV»
+‚)º26"ÐRÚ—"*1Õ\¿®@ôØ›3#›Ý
+·¿ú‘ å «êÀ%šk‹s—õz1ÊjLS3ší4~ªvéÄ(S·zx+ÂÜÃ+x•`GØsëº3jî•ìBs~Òí»É›M¦ŒTà`›]â-Ý*~Qk
+?>Ï‹ÂἘŠ{…Kž¹]˜÷…›o> endstream endobj 304 0 obj 875 endobj 305 0 obj << /Length 29 /Filter /FlateDecode >> stream
+†ŒÉß#Eû42;´ÛùîÍÎ1÷T_
+œ endstream endobj 306 0 obj << /Length 26 /Filter /FlateDecode >> stream
+×ÔWsÖî
+”2K3pIÙP<û[·6°ˆÑþ=ÕZ> endstream endobj 308 0 obj << /Length 26 /Filter /FlateDecode >> stream
+à×ø}4¼¾
+”-˜%aÖÙ1Šãˆ²n¸ endstream endobj 309 0 obj << /Length 27 /Filter /FlateDecode >> stream
+Bs“8:ßÖÏ‹®EK¯F©AJ³2ðŽˆ endstream endobj 310 0 obj << /Length 33 /Filter /FlateDecode >> stream
+£¥‚ìu*û*Ø‘;ôÎ…ó6èaJ ³ÿwË÷pß¾ endstream endobj 311 0 obj << /Length 27 /Filter /FlateDecode >> stream
+ÿ_òw'é@sx¬®§ÜpéMÙØðD CØl endstream endobj 312 0 obj << /Length 38 /Filter /FlateDecode >> stream
+yJÑ”¾Î÷róûÀP´SP³€ VM d7÷ nŽR&Tí endstream endobj 313 0 obj << /Length 30 /Filter /FlateDecode >> stream
+šûêf±_¬ÈDzÐÍ¿PïL÷}/ ‚‡”d„Ûµ: endstream endobj 314 0 obj << /Length 30 /Filter /FlateDecode >> stream
+v{8R§õÕ¤[F3&¥Ò¬ÓaÛçk‘½' âDúà endstream endobj 315 0 obj << /Length 30 /Filter /FlateDecode >> stream
+ÞÁõ#6%÷-ÙÓ*ûš"j’Æý­G2Ä÷¬/’j endstream endobj 316 0 obj << /Length 24 /Filter /FlateDecode >> stream
+D$3A¼ðÊNnÈà ²UkøÙ¿"Ù®v endstream endobj 317 0 obj << /Length 33 /Filter /FlateDecode >> stream
+¡ãMðS,¼:Àh´ÿ¸Ùăx§{Þ`i•)œžs {N endstream endobj 318 0 obj << /Length 36 /Filter /FlateDecode >> stream
+Ñ$´/uŠÌêŽl4§bFBÇǼÙÅ(@å '—âê_ endstream endobj 319 0 obj << /Length 44 /Filter /FlateDecode >> stream
+hxÜÉe÷Í£”3Ùc¾<Ïe={†“Ü& 9ŸÃ!1}á®ÆEÚ.8¢(ï2 endstream endobj 320 0 obj << /Length 29 /Filter /FlateDecode >> stream
+&—ÈÁ bÝŠžÀ‹Â» øCO¢ò>0;.p4 endstream endobj 321 0 obj << /Length 32 /Filter /FlateDecode >> stream
+S1cü6“Wî²Û·\îô.Žm R–_Fg8Ïw5· endstream endobj 322 0 obj << /Length 24 /Filter /FlateDecode >> stream
+“ ×jÍ©3Åßâr-~\Y
+¸»rF;Ìê{ªšÚiÝ-w¿:£±¾±âi endstream endobj 324 0 obj << /Type /ExtGState /SA false /SM 0.02 /TR /Identity >> endobj 325 0 obj << /Length 30 /Filter /FlateDecode >> stream
+Æ“µ¶E‡t?fáRÂEi@»ú£ùºûéYLls: endstream endobj 326 0 obj << /Length 27 /Filter /FlateDecode >> stream
+®¯IC$wj¨¯WIñ£R÷¥·€E×»mŠ´ endstream endobj 327 0 obj << /Length 30 /Filter /FlateDecode >> stream
+£8*²‚¾RÈw€áPFk‰£ªÊy8¡Mdh× endstream endobj 328 0 obj << /Length 29 /Filter /FlateDecode >> stream
+¡‘çäÜv]K×Ä=Öè%(n£Œ® ÉdÉ”i&¢ÎT endstream endobj 329 0 obj << /Length 35 /Filter /FlateDecode >> stream
+º1O÷þñ€ú!KSØù9¢ùf)†X)ÅÄÈš'%ÔŸØ endstream endobj 330 0 obj << /Length 26 /Filter /FlateDecode >> stream
+Õ‘,HAäÁ>8€‡†[—|§‡CÇ¿Inƒ‚ endstream endobj 331 0 obj << /Length 32 /Filter /FlateDecode >> stream
+R‹‰”L þµÊѪ³7 Fe&n•F´'ÿš—‹ endstream endobj 332 0 obj << /Length 30 /Filter /FlateDecode >> stream
+Òò8Ì&éѾá¸Ô¾}”w<CÎË÷½_ŽÁå· endstream endobj 333 0 obj << /Length 30 /Filter /FlateDecode >> stream
+çƒÊ:ѾBɬ[r}쬧ƒIàQéÁ¦õø°^X U. endstream endobj 334 0 obj << /Length 38 /Filter /FlateDecode >> stream
+®œ€§Í+,Œ/j.ÈÂù4Všõ5<ü˜X'‘¢¥óFö‘-Øÿ endstream endobj 335 0 obj << /Length 40 /Filter /FlateDecode >> stream
+wn¹¯BÑMà[{ÑÅB'¥›Š¼Î ù xž©|ÅêáÿƒYD endstream endobj 336 0 obj << /Length 27 /Filter /FlateDecode >> stream
+ÈÚë`Î4± ç¢ Iì‚K;ŠaªPê¾öû endstream endobj 337 0 obj << /Length 38 /Filter /FlateDecode >> stream
+øJÁŒÿ±Ç£Î V%5ä<Ô“xxüqYL­‚’3Ñþ­ p endstream endobj 338 0 obj << /Length 37 /Filter /FlateDecode >> stream
+ ¢ÄWÑBpé¡ÁÏŸ!Z£ ‘ôI©DU´ëRƦ\qÓ&Kz) endstream endobj 339 0 obj << /Length 37 /Filter /FlateDecode >> stream
+1ëOlü¯ªÙ,“¹Ñ'ÀÔËF¨p0>]-ï;Ï5Ú
+rÅã؆åÞ×8&xnmâßÑ|Šu¿ÿÔo^^<…iuÖÝÕ%w>©(Ó³NS"çXZrê~dúÒ·>r2!9îÞ»Šf–QÈîjË7¥r§Hçiu¬ÑrôöëœÔ¶¼sI'TT‹ç•™³v«&…à^5Ãí°Ò&|sÄþ“¬<+yêÍ}‰˜ƒþ}72Û­ïE!ê›οpÑx è(-¥adgªr X©b2Ez`ê,¯¸Ì«MßÁ*]e»pI–ñììBb¸ƒÔ¥k¹µúAä3
+ ã=ïPÌï™-§ Ðࡾ¾(…èÔp]”ö„> ȉ9—¿‰kIۀ胧,ÜÜÅb÷˜YAŒ8]ïÜZë¸Gœ a,øè?Òµ+—
+<j ˜Îšqw‘{=R‡’ÅÆíõiâî7ŸL#Ýób#MÔÕ
+´d`±j—_£¢Â{M¥H#!ÛŠ«ã]pOþjc[¢¶â·l­\þÙÛ¬‰ œóê.^< dè’Ò3*ˆkDá
+F‰16{’d‹@œ¹_>ØD¬æ×w9 K Ù¡ìv*¥>öÝâH Ì(cé±wfC endstream endobj 341 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 41 /Filter /FlateDecode >> stream
+Tn·÷y{Ýw:¯ûwê«Î¬`|ºTNI0õ.ÕŠ+r “K¥ endstream endobj 342 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+ßkáá!>â$ÌɬUùBs!ø‘)é:”x! endstream endobj 343 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 30 /Filter /FlateDecode >> stream
+³bØ}ØÏ­œs†À,E¼¶˜… q‰6ᵪM% endstream endobj 344 0 obj << /Type /XObject /Subtype /Image /Width 25 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+wS›'……ýÌÚà2{%eÇ0(«>³ endstream endobj 345 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 34 /Filter /FlateDecode >> stream
+ G>8 ŠAÚŒèÖ"eö¬yJû}iÚÉs-‚rD#™– endstream endobj 346 0 obj << /Type /XObject /Subtype /Image /Width 28 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+t•
+Y¹¤3Ù›gxÒ(cäÇ®§hW‘#»5ˆw"¨ endstream endobj 348 0 obj << /Type /XObject /Subtype /Image /Width 30 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+à;¤«sì<°Ú>ë*¹#–ÎÔãßð endstream endobj 349 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 28 /Filter /FlateDecode >> stream
+‚dn»ý„¬Ôh§´õ}ŸðúP* endstream endobj 350 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 1 /BitsPerComponent 8 /ColorSpace 273 0 R /Length 16 /Filter /FlateDecode >> stream
+ô’ƒy‡ÜÃ?=¶+ÙFB endstream endobj 351 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 1 /BitsPerComponent 8 /ColorSpace 285 0 R /Length 18 /Filter /FlateDecode >> stream
+AqS̽[Ñe‡zűÊŒ endstream endobj 352 0 obj << /Type /XObject /Subtype /Image /Width 33 /Height 1 /BitsPerComponent 8 /ColorSpace 282 0 R /Length 16 /Filter /FlateDecode >> stream
+4½ûÞM]€+¶%v7y endstream endobj 353 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 260 0 R /Length 27 /Filter /FlateDecode >> stream
+ f3¨!õ߇Þ÷-£v¥§0:ª dÐ endstream endobj 354 0 obj << /Type /XObject /Subtype /Image /Width 34 /Height 1 /BitsPerComponent 8 /ColorSpace 252 0 R /Length 20 /Filter /FlateDecode >> stream
+åÊp©r/L½¥<-š&¬“J%÷ endstream endobj 355 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+)ü°Ýù‡{Kl×(ÅÂðV]Ö;
+¯mU-ºÙr endstream endobj 356 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+¢û:U7˜ò(‹à@ê žš®òWL;â@Ç endstream endobj 357 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+¨}¢®ÖÎ˵´ÂI˜S4;Ìbp%„ endstream endobj 358 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+̋ؤ0šËe žÿ„8Y á›0‡¤0‡ endstream endobj 359 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 39 /Filter /FlateDecode >> stream
+ŽÅSCm0é$&#¯Hª×-þ§¡<¯ yXÅ>²é­å<°&ë endstream endobj 360 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+Æfšºç¥?uã–=AŒïEu¶’+lÔ•{2òÇò endstream endobj 361 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+ÜëWÞzÌxä—[]½õAJA&°¯! endstream endobj 362 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+"
+6‹þrHåa_  Þ­¶Ú]æ)å@} endstream endobj 364 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+ÈÖ#S¾‰$9tÚåÛ¹]ñoÆn·/Ä&ÆÓÓsg¶¤ endstream endobj 365 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26 /Filter /FlateDecode >> stream
+yŘ:o{ÿ˜¯rm• [š &YÔÊfX endstream endobj 366 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+•5Ì Û#»‰ôsÒ6è0ºÝ
+KpñZ endstream endobj 367 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+`Åá#¢ÙÜðŠë1*'Ô Þ¶ª Û endstream endobj 368 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+rÄ1îÆœº7säÍ0ãqK… endstream endobj 369 0 obj << /Type /XObject /Subtype /Image /Width 24 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26 /Filter /FlateDecode >> stream
+¥ü°aòÿ¶X )¿;%tŽ…ºY endstream endobj 370 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+ÖêQõá_Yé§cu¦B ò½‰ endstream endobj 371 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+±üÞ‡v'—RÏ'~’üDEÒ¸ –t endstream endobj 372 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ótA*„Ûb»Aî>ŠBz6Ø< endstream endobj 373 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+颲¸U`"^òùþ¥®Ž™;îCÜ endstream endobj 374 0 obj << /Type /XObject /Subtype /Image /Width 28 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+nßÍ"âØ6luh#ŸF£GiÅH–šÑ ç endstream endobj 375 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+îú°Ï÷™qôÕe°/÷ô0â[‹Ó endstream endobj 376 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+ö.æÂØ[5SÔ:ŽUûÚ`um’‰­- endstream endobj 377 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+ÂDÆ'+êh;¤‡aYª[ „çÄ) endstream endobj 378 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+rvˆ?F¤©Ïuèß«j`xê endstream endobj 379 0 obj << /Type /XObject /Subtype /Image /Width 32 /Height 1 /BitsPerComponent 8 /ColorSpace 261 0 R /Length 17 /Filter /FlateDecode >> stream
+~~ÕÔwÍìJ¤ò ’B¸ endstream endobj 380 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+·£@4]ý㤕jÖj endstream endobj 381 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+ŒÅ¬[ ‰ ÞÛ7…j\|Å5 n} Ÿ endstream endobj 382 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+|ÌkT·¬ ±gÄðfÂ$Ô­%œ…Û+´ endstream endobj 383 0 obj << /Type /XObject /Subtype /Image /Width 48 /Height 1 /BitsPerComponent 8 /ColorSpace 269 0 R /Length 20 /Filter /FlateDecode >> stream
+
+I,)S 6T £š“ÝSÒZHtõ endstream endobj 385 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ÚÍ6|¸¹ßà™OLßüÜY‘Í, endstream endobj 386 0 obj << /Type /XObject /Subtype /Image /Width 51 /Height 1 /BitsPerComponent 8 /ColorSpace 265 0 R /Length 17 /Filter /FlateDecode >> stream
+8˜JZæ«
+¯"ÿ{D
+°žñJ<€!Cm[–Ò=aÖ‚rµCŸ%¯H½¬gXs endstream endobj 388 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ÞQD'Õ¯®êÖN_îʪÝÙ=‚w endstream endobj 389 0 obj << /Type /XObject /Subtype /Image /Width 54 /Height 1 /BitsPerComponent 8 /ColorSpace 268 0 R /Length 18 /Filter /FlateDecode >> stream
+¥žt7{éñ[«Âÿ
+“ÿûˆ]‘ 0-É"­áNpNÌ€ßbö¿•Ñ'sâ­«`Át endstream endobj 391 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+_i
+CºF’÷bò¤u¿qn’ &l endstream endobj 393 0 obj << /Type /XObject /Subtype /Image /Width 31 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+ùjê Wƒ Dl±o$ÖOï,'^"¿Íb)A endstream endobj 394 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+žœÑ#ËB0¥ÁºÇdÞs‚ endstream endobj 395 0 obj << /Type /XObject /Subtype /Image /Width 56 /Height 1 /BitsPerComponent 8 /ColorSpace 272 0 R /Length 17 /Filter /FlateDecode >> stream
+ä‰ëÁ}—Uz¡PóQæìø endstream endobj 396 0 obj << /Type /XObject /Subtype /Image /Width 33 /Height 1 /BitsPerComponent 8 /ColorSpace 271 0 R /Length 17 /Filter /FlateDecode >> stream
+E -‰’çΑ¡”ûöO endstream endobj 397 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+ QáÝs”Å•ñ¢ {À5ˆh} endstream endobj 398 0 obj << /Type /XObject /Subtype /Image /Width 57 /Height 1 /BitsPerComponent 8 /ColorSpace 255 0 R /Length 17 /Filter /FlateDecode >> stream
+é‡+©M Tk-†»î9E– endstream endobj 399 0 obj << /Type /XObject /Subtype /Image /Width 35 /Height 1 /BitsPerComponent 8 /ColorSpace 262 0 R /Length 17 /Filter /FlateDecode >> stream
+l$Ç%t²]ØV@ºØ”±¥ endstream endobj 400 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 263 0 R /Length 30 /Filter /FlateDecode >> stream
+NŠ¸ *aÊsš_Àæƒ,f‘îóȾ"]PáŠÿÉ} endstream endobj 401 0 obj << /Type /XObject /Subtype /Image /Width 59 /Height 1 /BitsPerComponent 8 /ColorSpace 264 0 R /Length 18 /Filter /FlateDecode >> stream
+Gb&ð®5±?"ÙžfDbÉŒ endstream endobj 402 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+rÛ¾Úð·s<V:eªBÌð»²xSÍCü) endstream endobj 403 0 obj << /Type /XObject /Subtype /Image /Width 60 /Height 1 /BitsPerComponent 8 /ColorSpace 266 0 R /Length 17 /Filter /FlateDecode >> stream
+|˘‚)Þ¡udÉÛ7®Šf\ endstream endobj 404 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ˆ#y‡ºù6ò ‰ps ‘Éè92 endstream endobj 405 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 36 /Filter /FlateDecode >> stream
+n´î|¬È×j
+Ûq•ý“ýºISK#¶½Q*Q"ÏçKêw¦u endstream endobj 406 0 obj << /Type /XObject /Subtype /Image /Width 42 /Height 1 /BitsPerComponent 8 /ColorSpace 270 0 R /Length 20 /Filter /FlateDecode >> stream
+w¡HxõÂÛ=ZËÖñá/Ã $Ñ endstream endobj 407 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+>
+Â!3´JqÊ:V‘Hš„9°zˆxÙ܃V^Þ_Æ…/¸ endstream endobj 409 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+s«>æÐk/ÑÁνܷl endstream endobj 410 0 obj << /Type /XObject /Subtype /Image /Width 41 /Height 1 /BitsPerComponent 8 /ColorSpace 267 0 R /Length 19 /Filter /FlateDecode >> stream
+2‡Ð~Î\Ùqµ sëORâ” endstream endobj 411 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+ðÔ%H‚RßmŸ_þ¸pÈ/“†§ endstream endobj 412 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+§ñ‹MŠ-îP€×lfÛ[¤lý endstream endobj 413 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 15 /Filter /FlateDecode >> stream
+UÝ£$ªÙþ
+êëˆ÷(µ endstream endobj 414 0 obj << /Type /XObject /Subtype /Image /Width 44 /Height 1 /BitsPerComponent 8 /ColorSpace 254 0 R /Length 24 /Filter /FlateDecode >> stream
+ÖK뺤òN¾)†WËÒ°ñ­¾Xïh´†d endstream endobj 415 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+»šfˆôƒ„BL쌰Ub²„·Ãþ endstream endobj 416 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+–Râ=fh•ù‹à#wøkO3h´ endstream endobj 417 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+\'ÇèJjô+8Ð ŒU^0‚ endstream endobj 418 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+ÉöÁâ3u=+
+±®„(Š`d±±w]Ûy÷ßï$–Q_Ûd‘ endstream endobj 420 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+baÞe‡’]âïßµ-J• Ô endstream endobj 421 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+¼»E†jƒG™xh;ÇZI‹ endstream endobj 422 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+qve+K‘X ½©iŠ<Î’JØ…!¿$i endstream endobj 423 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+‚'¢´‹YÓ©[¥RdÎÉÇÚ endstream endobj 424 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+(ù|8j†ÀS=,V{÷Rüeð«îÕGe endstream endobj 425 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+‡è6¥/Ž!‡j_ÝmØïر endstream endobj 426 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+æ‡s˜ß<™oDSŠh«ºérF¡~\T endstream endobj 427 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+QÐ`kAWÙAuxglT t‚
+u² endstream endobj 428 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+1¼ ðïÿ!îWŠÄ´ «; endstream endobj 429 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+òæø‘Õ¼Û2ù¯ùã •ˆ;˜@Ø endstream endobj 430 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+²3m3Õç ΦgÀÁQŠ_iš³\G endstream endobj 431 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+ lG«èÏ``o­,¡_yâα£ endstream endobj 432 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+¾ÔëÐdæëN‰B~äb ÷ÿ̉Õ endstream endobj 433 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+³û3³´µyéØ8}ãû]2k\ endstream endobj 434 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+1—I´uõX@–ò£Þ=y¼¦Ç   endstream endobj 435 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+Ö…ŸLËø5F8:èØ(âKÃ
+©D endstream endobj 436 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+¢.uãù?¨>ZTg ±ÚRý endstream endobj 437 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+Dûpè·üñã$ÎܽG>aÕ endstream endobj 438 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+µ¬‰‰)ª‹öœnÝgðl®gQ endstream endobj 439 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+J|&N·ØxÕ8½Ðf‚¥ð ÷ endstream endobj 440 0 obj << /Type /XObject /Subtype /Image /Width 40 /Height 1 /BitsPerComponent 8 /ColorSpace 256 0 R /Length 22 /Filter /FlateDecode >> stream
+ÂÃɱÞR±*Üßð¢ê•0 endstream endobj 441 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+)Â WÅþ
+—ŸØw‘„¹^Ö9Ò· ±¯dh1 endstream endobj 443 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+ðÔäG5&3èTo 8ræêЯ4eT endstream endobj 444 0 obj << /Type /XObject /Subtype /Image /Width 39 /Height 1 /BitsPerComponent 8 /ColorSpace 259 0 R /Length 16 /Filter /FlateDecode >> stream
+ Îú=ÂèZ³ÆÂó5³61 endstream endobj 445 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+g®"ìÁ2>P­0¡»ùiSIALr endstream endobj 446 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+en7'kËVw“Cß–/žº endstream endobj 447 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+‘vt®Þæiõ‰†·\‹Ñ¶{#d‹ endstream endobj 448 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+¸q|ã Ê[^t#Ð/%Ÿ6g¬ò`À endstream endobj 449 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 258 0 R /Length 17 /Filter /FlateDecode >> stream
+ã°FwÄÊLUÞrÏ™%i°àW endstream endobj 450 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+òÑð„™©%ÛÝÍðìÈú\Öš
+ endstream endobj 451 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+ÿJk;A·¿ÓÿÝ>G‚™FiÂ* endstream endobj 452 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+YWÔ,ÍPÏs}hC8(ø…ŸcY´1 endstream endobj 453 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+/ªuðÂ3­^õ+ˆÐi”:šÉÑøa endstream endobj 454 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 257 0 R /Length 17 /Filter /FlateDecode >> stream
+ôe¹ôœVéörÈ›AJ1c endstream endobj 455 0 obj << /Type /XObject /Subtype /Image /Width 27 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+ù·Óæ›E[!˜:
+çEö½¸¬ËÖZmI®561Úè endstream endobj 457 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+ ThíWë,ÁvB…P‹²aň" endstream endobj 458 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+SAIÚ­™v+Ä ™ißïÇS[^~‘¸ endstream endobj 459 0 obj << /Type /XObject /Subtype /Image /Width 34 /Height 1 /BitsPerComponent 8 /ColorSpace 281 0 R /Length 18 /Filter /FlateDecode >> stream
+­#­?á Y?«I¯h™‘œ endstream endobj 460 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+%ùÊcÒäû˜Y˧èÚ̃.æ endstream endobj 461 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ÂÕ7¡òþËuÕ˜Óʳ³;
+yOŽyÔ\8m$„\ðÛÖêÈÌ endstream endobj 463 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 28 /Filter /FlateDecode >> stream
+€BvàâÕÿâÑäÁdxùà+Ì’<xXk&ÕÏ endstream endobj 464 0 obj << /Type /XObject /Subtype /Image /Width 30 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+á<.fÞ`;‰á+ÀyïÿÆØS ÁpÅÕúm²€Ÿ
+ endstream endobj 465 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+™*)’®È¼y#mä 8Iè£vå#„ü endstream endobj 466 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 35 /Filter /FlateDecode >> stream
+ª6?z¬#ž‚äcrB?"tÆÊ
+¶>ÆX¸øS·NÏ‹¸ýÝîe©¨ endstream endobj 468 0 obj << /Type /XObject /Subtype /Image /Width 24 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+e—¢Á»°´Âƒ'ö©æ¶ ,]&ˆè
+}%¹±zÍô|â²Í$Aó/ endstream endobj 470 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+A­VËÇá5Ï>nѾƒß’-›X endstream endobj 471 0 obj << /Type /XObject /Subtype /Image /Width 25 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 37 /Filter /FlateDecode >> stream
+ìtÌHƒœcuà/ûÿÒÚ^Kõá¯æ'é f’F-K endstream endobj 472 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+úËÏêŒw—ð"œÜÛ‰MLjòb» endstream endobj 473 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+î¾¼:uÚ¦E¼ƒËè]DÍâa}wÍ endstream endobj 474 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+yß›wÒóÚ’¢êòÅ÷ endstream endobj 475 0 obj << /Type /XObject /Subtype /Image /Width 23 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 33 /Filter /FlateDecode >> stream
+9‹’™:Nªð56ÿÎ-"j×Dò"I=åŽ7ìqߢ endstream endobj 476 0 obj << /Type /XObject /Subtype /Image /Width 18 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+nt—z) ?UIê8c¸.åÍ=ºÞ endstream endobj 477 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+ñí…èÙX¿< Y-|
+רäy‚éý‡Œ5Xà”„‚S»cW6Vœ endstream endobj 479 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 35 /Filter /FlateDecode >> stream
+
+u_ ~ à”±Ûþ·^1˸¶Vgž endstream endobj 481 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+á"¦F:jܪ·wžþü N endstream endobj 482 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+;ÚÅm3øÞ LÈ)d¹Ïf¸ö endstream endobj 483 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+lFÌ–*`ØÊ'vªÃqšµþè®t endstream endobj 484 0 obj << /Type /XObject /Subtype /Image /Width 28 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+ktD† l>gjP§Ð@ˆz§„þŒ­Åª­â endstream endobj 485 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+7]\P²˜/èï%ªÖ¯_v endstream endobj 486 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+°‚­m77v†•ºÍç“%ªûæúé…ýòf endstream endobj 487 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+Ë9Šú™¨½öàÕ€@«
+¹ Qø…Ìcq¼À
+Œmr› „¥û endstream endobj 489 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 16 /Filter /FlateDecode >> stream
+_ŽòÓÂ5ÖO|ã6Ò D` endstream endobj 490 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+hÒ`öÁÀ'ÓLÄx`vžŽÃ’™Ï»4 endstream endobj 491 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+Ü7M”Z×òj˜#¤6iß­Ó endstream endobj 492 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+”UNϸªçöŒRÍ…LýÄj¼ endstream endobj 493 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+_Þ5ó¸¸]r!.k1àtÃùûÊmì endstream endobj 494 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+ -ýÐá˜õ ®mê÷œÆ endstream endobj 495 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+Õ;Æ/K™‹ ]n÷Z·µ“7 endstream endobj 496 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+DÔ’‡ ¼ÊB_Ô¬é͇Í endstream endobj 497 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+Í»º œ`„òÏ#¡Æ»¶= Î8 endstream endobj 498 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+õHºÜ¯©<þ“ÿk¹Ä‰L‹ÌlØp endstream endobj 499 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+§˜’á)…’_&×ëõ~ùYF endstream endobj 500 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+f*ÂÅë,:ªå¿$¤ˆ$ì…ˆ endstream endobj 501 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 15 /Filter /FlateDecode >> stream
+§£¼B€iTúNë½Ãj endstream endobj 502 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+:r–ó6žÐb[R\À€Jp´—àA(únêxZe endstream endobj 503 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+ÿЃ9TŽ±†øš+â‚$¼V¾u6š÷Ú endstream endobj 504 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+¨Ss}›™¶ì—² ¼5˜·
+þ.’ë–ìÜc—ÿHë]– endstream endobj 506 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 30 /Filter /FlateDecode >> stream
+7ß]ÇBŸ{Iåv1ðV•XMÊž®îÛ»wæÖ\ endstream endobj 507 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26 /Filter /FlateDecode >> stream
+O0.µ¨Ë°ïLä%q½× Ëê´(« endstream endobj 508 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+}( ðÉyI€”q‚†;`Á»èüs endstream endobj 509 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+TM€HU1U'J`?Ï7*­íZ/N¦ endstream endobj 510 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 33 /Filter /FlateDecode >> stream
+ãwøM<À.
+øÅVXivŸkŽŸÛ%z——ÌÞ…86{Îĸ! endstream endobj 512 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+?ƒ—n›NÍ×5_(©ˆ¬p…`l endstream endobj 513 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+·)âDúHÓÂø¿ùåÆŸr^™d endstream endobj 514 0 obj << /Type /XObject /Subtype /Image /Width 37 /Height 1 /BitsPerComponent 8 /ColorSpace 280 0 R /Length 28 /Filter /FlateDecode >> stream
+ksegCaTwB‡$¯„ ^j<ôÀÝ%^·®Û endstream endobj 515 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 28 /Filter /FlateDecode >> stream
+«ýüî\úwZè)—ẩôü»Y¼|‹1âÇ endstream endobj 516 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+6ÆfëˆÒ~¼ia¬nc¦ÎÈ‚ Ú^ý endstream endobj 517 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+
+Óm9m/VÓ¢,e6©þñßt endstream endobj 518 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 284 0 R /Length 25 /Filter /FlateDecode >> stream
+,à·맱D
+®ãéáaâ¥#©‰ endstream endobj 519 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+Ý Mn«é9)íÛ]67}H†æ‹!…{Þ¬ endstream endobj 520 0 obj << /Type /XObject /Subtype /Image /Width 21 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 23 /Filter /FlateDecode >> stream
+¹CñÇ›“™OŠ© N•XÚuú N
+2U endstream endobj 521 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+Š÷ÍÙH©>ÝÁ A"ùK& endstream endobj 522 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+bÁ
+×¾ƒÒ¬Ƽû
+003fê<ÎR­ØÂvÛ3+¤•cF¦… endstream endobj 525 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+°A&ä<@¶Lq'ÖÇ—ûÇIâ¾J?
+²„tRõ#ÂíÙÍ Pæ»™í°Úý½³ ç endstream endobj 527 0 obj << /Type /XObject /Subtype /Image /Width 20 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 30 /Filter /FlateDecode >> stream
+}´îLË…\%È…ÓßY­×á!Uf&·Xå&å endstream endobj 528 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+`ýHB‰ƒíªSU»7¸n¯Øã{eà endstream endobj 529 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 36 /Filter /FlateDecode >> stream
+ä~æVæóeèæKeÛ_Ë›þ° ŽS@Pk‹CÖ‡_ »»à# endstream endobj 530 0 obj << /Type /XObject /Subtype /Image /Width 17 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+Q¿JGæm™‰¶´ºU*–zƒ‚²`€ÆB endstream endobj 531 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+©½O“Cô«3ó„·Pn B£¶!ü2 endstream endobj 532 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+¿?Â>ÊWÌåÏÀ]Ouãw ìnK]n— endstream endobj 533 0 obj << /Type /XObject /Subtype /Image /Width 9 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+w kâYðß^m%ý3¸À›ôu%ø endstream endobj 534 0 obj << /Type /XObject /Subtype /Image /Width 53 /Height 1 /BitsPerComponent 8 /ColorSpace 274 0 R /Length 27 /Filter /FlateDecode >> stream
+Üú=£ 9,¡.¤©ÃûÚè‘íu.*¤åÏT— endstream endobj 535 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+™÷ùêÂÀ˜líH½2Q5ìˆç¿ endstream endobj 536 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+ië|CÏâá+/1³ìÚ© endstream endobj 537 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+QL”ÊèS®:[‡VÔHÜÛ4 endstream endobj 538 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+pø{iAÙ«|ë×àê–(£Ò¾~ endstream endobj 539 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+hM•Ï ÇÁZq@á>ÝÍÕì endstream endobj 540 0 obj << /Type /XObject /Subtype /Image /Width 41 /Height 1 /BitsPerComponent 8 /ColorSpace 279 0 R /Length 16 /Filter /FlateDecode >> stream
+c¯íä‡óoƒ(ý¡Ghú endstream endobj 541 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+RÔ–Å^1±v"ER™å!Ê=(´ endstream endobj 542 0 obj << /Type /XObject /Subtype /Image /Width 8 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+½)68q|K•x]GÚlú]LX
+4ÀtgG0+'=EitqóB:qo endstream endobj 544 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+¼ÒŽgÔ¾rGûH%†Ñ endstream endobj 545 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 25 /Filter /FlateDecode >> stream
+Ç'߸3ÅT=Oî#{©½Àezú6Ë4¼£ endstream endobj 546 0 obj << /Type /XObject /Subtype /Image /Width 40 /Height 1 /BitsPerComponent 8 /ColorSpace 275 0 R /Length 17 /Filter /FlateDecode >> stream
+ñJBà?r{w¥ãUÑäªUöp endstream endobj 547 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+yG¡¥P¦”zL¶cK¢ð%Gáo^’€ endstream endobj 548 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+Àð nfïÁÛDÀ>(&´v3;µl endstream endobj 549 0 obj << /Type /XObject /Subtype /Image /Width 38 /Height 1 /BitsPerComponent 8 /ColorSpace 278 0 R /Length 17 /Filter /FlateDecode >> stream
+ñl(#4¼šÐ]°³ˆw§þ"Þ endstream endobj 550 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 17 /Filter /FlateDecode >> stream
+qí|ì]ò`¡÷‚\àëù§£ endstream endobj 551 0 obj << /Type /XObject /Subtype /Image /Width 29 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 35 /Filter /FlateDecode >> stream
+ŽƒŸs¯žÿÿV, A;R¯!Ø7Ëž Û`sKMìŠô endstream endobj 552 0 obj << /Type /XObject /Subtype /Image /Width 7 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+Z*¡ ì–Kò Ž5Pnñ™a=p¯ endstream endobj 553 0 obj << /Type /XObject /Subtype /Image /Width 36 /Height 1 /BitsPerComponent 8 /ColorSpace 277 0 R /Length 17 /Filter /FlateDecode >> stream
+*Γ®1ÁêÇ…S\xÜ endstream endobj 554 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+ýo(̃©¥z"Æ©ÆŒ0äù÷6J4å endstream endobj 555 0 obj << /Type /XObject /Subtype /Image /Width 27 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+,ªä2ø|í&ì³½g°¹… endstream endobj 556 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26 /Filter /FlateDecode >> stream
+›çFbÎcW_—ÛÍtÒ—xVÄ•¥ÓH endstream endobj 557 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+@ªOÍ ùøæ ðÛöÚ»òôö endstream endobj 558 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+#õ…Aò3”q·Æ6ÿ½>‘d´ÇW¾- endstream endobj 559 0 obj << /Type /XObject /Subtype /Image /Width 33 /Height 1 /BitsPerComponent 8 /ColorSpace 276 0 R /Length 17 /Filter /FlateDecode >> stream
+ÐTÙ"!Oð*`p)ÛÂU endstream endobj 560 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+‘ ³ÏûBb×GýîF%Äq endstream endobj 561 0 obj << /Type /XObject /Subtype /Image /Width 23 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 22 /Filter /FlateDecode >> stream
+Û>ÁÏý²iàO@™gE¨” l# endstream endobj 562 0 obj << /Type /XObject /Subtype /Image /Width 30 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+U­yd(ãø Ju(# ;cJ¤îCô$Ȉëhà endstream endobj 563 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+|µ ô§˜ïy8Fð2Ðx—†æ endstream endobj 564 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+T©GÜçá¡“àŽpÐBnQ¡¼D endstream endobj 565 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+¢»@é$’!Å5#å•O(—ÜÚŸ~J¤ endstream endobj 566 0 obj << /Type /XObject /Subtype /Image /Width 26 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+GþL¿šC{wÐáK*^¶ÿfPˆ¹}Ncc endstream endobj 567 0 obj << /Type /XObject /Subtype /Image /Width 13 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 39 /Filter /FlateDecode >> stream
+Ã<ÐßÄ
+§©ªÈîrݼ’\k_#Z&ᨦÝ#a|Eãmž7- endstream endobj 568 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+ˆ±—MÉrªâLó>ìWâ‡W é endstream endobj 569 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+g?‘  ‘S ¯oñ}ž¢_² endstream endobj 570 0 obj << /Type /XObject /Subtype /Image /Width 22 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 30 /Filter /FlateDecode >> stream
+l{<–() ™.M·& n¶ Nª=Õ9°1€ðh§.Ì endstream endobj 571 0 obj << /Type /XObject /Subtype /Image /Width 19 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26 /Filter /FlateDecode >> stream
+ 5Q'%W%»ô¼¿Õïc ½x~ûgÿÅ endstream endobj 572 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 33 /Filter /FlateDecode >> stream
+ÏnW¦þæ
+ÐäplÖ¤´5úøÞ…"Á’c›z’ݧÌ8ŸÔ¾@# endstream endobj 574 0 obj << /Type /XObject /Subtype /Image /Width 16 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 29 /Filter /FlateDecode >> stream
+F!€QA_ZY8Ž¯5žÓ—ä" Tÿg¡Í(ز endstream endobj 575 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+„ÍqÚêÅïk¼;4’ò–›ÌÍ8 endstream endobj 576 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+q<‰ô–œ¡8Ž¬ž #£à“ endstream endobj 577 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+:'¢}€DEWADç2ç¿]H#E3m)I–ô¨={ª endstream endobj 578 0 obj << /Type /XObject /Subtype /Image /Width 10 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 27 /Filter /FlateDecode >> stream
+âŸTÞÉ-*r*ZÍD +öí®‰t`!O endstream endobj 579 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+¹g2yPí4ºhÑ!^Æn endstream endobj 580 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+ÌIlê®­à¶í«¿™?06 endstream endobj 581 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+ Œ§ÍÿžêßÒ¡sVòÑ ¾
+ÛË€Â|4Æ%QC ÜÒ%
+'M endstream endobj 583 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+,t½)86µ&š§‹1{ endstream endobj 584 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+LQpA÷
+u“£Ñ3ïIíu8º¾ãç–þ endstream endobj 586 0 obj << /Type /XObject /Subtype /Image /Width 14 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 36 /Filter /FlateDecode >> stream
+ …2p’óc_õDÔüq>,ïê–Ë]\:QÂjùÜ endstream endobj 587 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+9{XÀÃÊCœ•|½®Í6Ôpãg endstream endobj 588 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+­±¨fA¸úSEè|qšŽâÙ‚j endstream endobj 589 0 obj << /Type /XObject /Subtype /Image /Width 11 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+S~ö‚’ì—qtl6k~"VÉ›if¦³Õ¬+Æ(¿N endstream endobj 590 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 20 /Filter /FlateDecode >> stream
+iïr±ºËÉ5‡¸e#¹5Ö\Þª endstream endobj 591 0 obj << /Type /XObject /Subtype /Image /Width 4 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 24 /Filter /FlateDecode >> stream
+œÔÈYY;²œ‚S€„_‡Ih5S1„7 endstream endobj 592 0 obj << /Type /XObject /Subtype /Image /Width 5 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 19 /Filter /FlateDecode >> stream
+PƒŸ©/fñð§{ÃýE€. endstream endobj 593 0 obj << /Type /XObject /Subtype /Image /Width 3 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+?””çúúpË5ý¦yˆºf]8
+ endstream endobj 594 0 obj << /Type /XObject /Subtype /Image /Width 2 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 18 /Filter /FlateDecode >> stream
+qµâÌøÞÇóU ;ý endstream endobj 595 0 obj << /Type /XObject /Subtype /Image /Width 3 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+ÂÏ•ìÜ÷º'-¯°ŠÅ˜ $<¥M endstream endobj 596 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+¿Ñ&á-­“₈¦r E1º™):#T%—ŸµÖÙQS endstream endobj 597 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 31 /Filter /FlateDecode >> stream
+µlC‘³N{µ° U<C?mêí‡7Né endstream endobj 598 0 obj << /Type /XObject /Subtype /Image /Width 15 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 30 /Filter /FlateDecode >> stream
+[«(I¤±ËŽ4jü*¢ä†Ám™ßº´ê—Q·¼Ø endstream endobj 599 0 obj << /Type /XObject /Subtype /Image /Width 12 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 34 /Filter /FlateDecode >> stream
+@ýÞ ïÄÖ¨0d²·®Ã0:©7?¬ôðN<ð`ÉÚàS’Ô, endstream endobj 600 0 obj << /Type /XObject /Subtype /Image /Width 6 /Height 1 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 21 /Filter /FlateDecode >> stream
+û¬Ï 'Í/Ôÿü´ühÉœð(åÓ endstream endobj 1 0 obj << /Type /Page /Parent 138 0 R /Resources 5 0 R /Contents 6 0 R /Annots [ 2 0 R 3 0 R 4 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 2 0 obj << /A << /URI (ϤG%ÐÊÈùÕ³ÀÅD–ƒ[V\n)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 259 291 334 302 ] /Border [ 0 0 0 ] >> endobj 3 0 obj << /A << /URI (ìŠ'\nÌK¤ÖêØGg7fZ7l°¦òƒÿ&M¼ºØŒ¶2¹ø¾¯)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 218 195 376 206 ] /Border [ 0 0 0 ] >> endobj 4 0 obj << /A << /URI (1“l–ÈÑËh¢9 \(sJûcü‡)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 270 162 324 173 ] /Border [ 0 0 0 ] >> endobj 5 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 6 0 obj << /Length 2822 /Filter /FlateDecode >> stream
+X£„Ø—Ëè̉X3‡lBv€M¨%+À7\€i›ËÇÆe¹õí¿B)¢ O*Ó;Ú+“Ú¸z]ÀϵVP‰:.‡Ä‘¸¢ n<žSaBMYÌ_FcwãÆ1ßne¢ë<OÈ!ð[E/NÂ<u'ä\ÞR[Gi[)NíÈғŪÀ sÊHÎÏñzØèä; ×àg"ãlÍ×G€b÷ä˜
+QÈë™K%ÑÖXàä5þâ@7yÏÏOÉ WN ˆýÒÃÙQîºð #ÊPiI¡v› ¹â¹emîÐkônû \Eä-N«Ýèºô³ÅÛ_zâ,eYt8t»)”7ö‚úO¾ðØBy6œ%$BvÿeSMÖŠsR­1tTieƒÅ·ú^D–3s?¿ÚcȸˆžÞÁs£;è2áÏBÕ¿ÝüÙD®Qð1ˆ¸N!{¥º.p´55A0*>”zé)‡f$lh hðó\¶M>+лwÂØ;}6n"9Šp&Ÿç5_Ò?…¿ê¹ <ô™þ$6زôê×!ÂëR-°¦êç·Ã–ï^–øÉïŒFÜ ¯äŒù«œ¡(ä§TË ±úÃÅ¥ ­¬¨eU™yË|2Ïê¸]øþÊߜņñJÔÃœFdœ71ºLX'“€¦£z¨©©†ŸD#„ÒÂ(Ô~“¯ÐMWåL‹pŠž”¯\|UゞɗÎŒRy˜ã‘°-7î__Bû ^Ãû…î„òX‹}Ú]KxH»¾¡9§Î8?8
+M&c]‚~ÅÕX¯k³Ðñ»lešËTô¾ð¢ÙºÙ°„¹â>Ç¥\9*2·?Fªl´²Ð“Çá·°|®hß“® ÷<½ó‡£K€ÑО{ -rÇþÀ/l«z6¾$$£æ鯯äæC¸[ñ6SH¹a7mÊÉ~åäÏïEB§hòƒïWòˤW’U œûœénè'ðØTkâû‰óå$½.9$vJ¦»0µ·ï„³¹¨ns ö’rðÜÁ\ª°ûÎS%MïøÖÞóÁO‰˜?HÇ9KÊmvªÆ{K­O…lÛR_§Ô1
+¬ÕB%¦+w¿®’ËšQø+“ø'OãÕ@ YÏŒFZÅÒLEj(l­‡q|ËahGÛ£Ÿ¤a ÑÞ°@v`C^ºT¾’–ÄW^Cg–x†¾Ž&Íî–Z¿ÔH3wàH>ü löÂ
+ ™‹#*Z ´:çèŸeóu;-:S idÑ­Qâ³™“¦Ž<áÈt>¹z›Ä¿ˆôa0èõâ)v˶‹ÇþÙÕ^²+3í@ªìú*^é'v^Å<Ìy±óÑj²¬ÐÉ3YnrÝL'á ¨ý‹`?ò)Z¶eœûêi=\òž;'—¿ Ô}ÎqqïgšTqäæœàõuy2“¿.˜gÖ(wpg­ì" ¡ðPؽipà üÛZ§tOu-huA…œ|½5ƒe¦£SO ¶ÿϯôõ¼×%"á1r&=È6Òâðc4ã{<ò}Þ=ÁGsM IU&;Óèl…À:—¹å£Ã†?a‡ˆU½™³8 ãJ²'Vìb¬%$<9³Hñ r´9lQ qb¢ƒ(>)àýµÛ'-˜Ô”~.[Ýe®÷èéóv´v 1«KÉ~1k~O`ºñÙ¢y]€˜ÛüR.È8¥ÅÝæ²ûe‹ƒ«3k<¬
+†—B€„9 7¬_O0€Ý.?8±I ‘G>¬«?q'Ÿ|LË2M¶Ô"·aê¡sW= "¿v#㎈ ´O3ò%ïë>Îà×Ê”)ÚÉPm8åÒ+íΪ¾&Å9Ö®+×]2RÊ57Ãæxs€^,miÐY©h‰ÖlHºÑ™êã‘í —Æ|‹XþæH~üç¢G&øË;œlÖîãqIìÅt8~ƒt¼Ún¬k嘲žÍScâ.Ûk‹u07Ú+odªÛi<® Ïú#üá|ðQʸ<Oîf×J IÁI`ˆ,ù©NØŸûÊ4V°d"y9xR´¡K@1qãV
+ï:‚KHî/$õýz#¢Wˆ”ƒ _2’M ¡"‚`3ÿ¢ú{,’¾ìŒríšÄTÂÖ̈ò4Èà ÑãêÞV;%ZíøfÞpð}Jo+”:EçøxœJ” 
+ç¢éCˆ!ùŸñ¤:”Xk…d·ñ#f ]÷•>¶º±y®$Cú g¿xßÍ`e¸lµÆu@™*lŠÖ¹¨¤ØÔ¾íÑ“×ö*¦y>p§qáö×½›)ËM¦¢ðl/’„ðæ4Zì²va…½'e>)Qã›\m^ÒÁCPúBáI$|¢/ekŒFBw¡ÁwZ€‰ *È:„Å0Ì@C˜ZâÇqq-—r›v2w°Tô»ñk½gi¢Ûv½ }¹ç,m¹]èEOÎS±°˜µl
+&¶7qhƼz²È¸£”œÓå,^ºþÞIY"Ýéx—Vâv¦}ÔlUÜõ$ã
+Í„XØ k_Us¿¾q¨Xõ¬÷ÑÈT«ËÄ endstream endobj 7 0 obj << /Type /Page /Parent 138 0 R /Resources 10 0 R /Contents 11 0 R /Annots [ 8 0 R 9 0 R ] /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 8 0 obj << /A << /URI (N§f4ð©´¬5n3ûaÜÏL`ênØŒßÊ%~‘)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 87 667 230 679 ] /Border [ 0 0 0 ] >> endobj 9 0 obj << /A << /URI (If¼²þ*S’ÀfU ñvð4ä?{øLÎ)/S /URI >> /Type /Annot /Subtype /Link /Rect [ 418 505 489 517 ] /Border [ 0 0 0 ] >> endobj 10 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F8 124 0 R /F9 125 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 11 0 obj << /Length 2648 /Filter /FlateDecode >> stream
+(ˆîƯ#³P1¼ *cýRì6œÿö|Xž³å÷x˜µŒq<l-Mš2ç³ÙVˆÒV\HŽFæŒÍ
+©™2\~¦B­Á°E˜¤\]™,ýbÎM&OƤ‹x˜:>.‰Dýv?T
+WK†êò£ωŒ¶™¼3¤õè_ ³„`Í>_
+X? ñ_%MÑŸBд‹ÅÇ™PáG"δ—óãÔ6WÓ/7ä÷qöÝ¢ç2 V–o•@+Ê]5׬‘Þ¢)
+7Ñ{Wßö¦ýâ}ï¹ÿzŠý-Œh¿xæv°ñ–¿Údlõ̃†f 3(¡ˆ?ŸYxiÀÞ_†ÁrQõ^ñZ©êï¡C\eÉ¢À«Ä¯é×»fpþÚ£sÅšs¯ÖK~S÷÷?ñÔ÷*ö
+Õá\6Íd8Yœ.EªIÅ®Ì;‚j£ºZªn]â somD&_•‚zØPµFJ …IÐg"ÝúéK.Ómsï¶4Ôß:®ûLufJñAû“› çؾóLûNfÝä’/°ÁÅ[=¸r/ñ£þÇ{:@Y­Å¹ÝiØ£|Št%Æÿ²ÎZ4¢~ûxÐH]Íÿõ¬ñ§:‰éä'¦‚@æÂöø°î{M—KŒÍm©\7Ü%X­Ð+^*úˆö[¬A@ 쨵ç/cÑ%ÁuѹîñøÉûÐ$~=ªò5TÙ²¬O<Ë©ê׬;³©­^¸ðÍ:´âJ˜\OûÍ×Ñì ¾©Ö§›D@Ÿ-ê&–µ$kòîsqžèRƒ¿˜,—ÙóŠ6¬·{½FotYˆ}ÊŒo-å/¤D ØðMcÇþÍVyŒ½G[×÷%FÙBˆ»ëzÌ–­®²&|¶Zx #j,>h¹Åî¼­• *å
+ôÍà5÷»”;ØvÕsû';?Ÿár%,¶˜­€+£'I^²6þªP’’a²¢ø ToÚ"Ón”;+–a†t“r4cSx $„«ü•o½ñ*í`¬†cëÛh¬‡0$>ä=^$œÄˆ­Òoé:¬¢®
+.ñš~‘ŠÏzê÷°lÀ–æ·e¼•û§¢Ì*Oõø©˜Fý
+n—Ë’½Œ_Ö¶hžuøÇq2»í–ƒèäcißËÒ•=x|qÝÖ„Q@göp·¥W¨øbzfD}TiÏ–èÈÄw:_¡Ö?Ù… Ö€ùÓZH¨©ðêvÏj°^þ™"*m#ëù°¶1ñ
+èÅAž³¼¸;D
+óˆ«Ï=ìOPå¢á›!ÌoÞýòö/$|{,•ÿ¼ÉÔ‰WŠü™Iû<ŠŽÌ@Ñ"5g¦ÏòPɳ%žÓL,Xªq—•9zš\@¸Bcš4º«>
+W-ÿ_͇ƒ)¸tgCŸuò²;ÇÇõ¯ÅçUß/êÿ¼+Á0Ùù“´øÆy—¢v¥QšÞçÏpúÎi¦ÚûWs·–&ç¥4hûsÔÞ4‹dm¡¶<OØjK¼š“-;RsúŒ0%›ƒ¿;
+ÅÙÝïI+*£yÀ–<Â{ÇÞ(Õ&âC³ Ú>¥è%NYIGžàÒcˆ^ÿ”ª”¡®‚
+
+–;IJ 0ž‘Õ„ vÀÏœ{•¡d0îb8
+söVJöÌ3äuŠ¢0‘>ÜhÁ"¿¶K²\Ù}8 ¬|ÁX«Z¹1‰>ƃRïOÁI6{_)é-Ľ²ÞY&~%_!hž.ë¤kþÙï->)YPR†„Ç ÷tÞÒp9%nÎî‰êeK"Xðø77ò£(”rùËõ+øòÐ¥Ô"þ‰%¿î–JP“Žþ(oÀ+éxþ…ÛicŸ£cÄ*þå#q˜Kg5efU}$Zب3’ hz’.oñƒP^Už‹˜Åípô|Á 4¯p(»•;­¯b`ÇÌ“íe0+R’‘´öSÚmÿöËE
+ejч-z¥U_xFsÅK „Qù~Ytt¼årÇhWÊý¤V¬øB©;P¸-ÚÕ*ðp>ÒÏ m«2
+}%,Q-²_“z«%Á²7ÙËH´Ï…½ž€°dQà5`D$vblˆz®¯áÔm­Á ¸õS¥B¯'Úd¾|Oƒg‹kɬXžku
+Tp4ä¯jòšT}Ð!J×(9ÎÂhÐçêâë•}RŸÖÿÉÝï4¢ÃQÌ6<E.(8Í„>(§Â³Ä\¹°Ô5‚à+*â\ˆóš´oo€x¼™ýk× øÍc;ò×Î t 0²,NÊÝS©áCN` 4¤èÑñALú¹¥¦CŠ~w¡©Í“½áç9r¨O$>§© ä^êýÁ9ü‚3¼‡MuY~òOËíøvÛ Z˜%ÿ¢³ÒG[s zˆøàÊèKŠ¬ûø[xërålÈãÁjV)wô·XÌ™èÓÁ7¯^P[
+’3C(mÓÆ&ž7WòDÒRÆãÿÙ³;‘5fËäòs©áâP¹“ržíæÆ<7Óîy›cÃ@@ÅžZ(¼»º9v"‡oÒ:Ý„«
+Õ@¹TýŒ\c1Ìh8çfÚîï¨b÷ñB§FÜ ¥íÜ)]3©8¦ÿ,çɨ K%–ã… ³¼ŠK%øH]Ëì¥a(±s©À‡;ܘm~¸ñtc“ ›ÌgèÁ ö^o#¢ª“ ]d›ÌePí¡–t>W7|ŠöÐ#I ¼½½Õ@ÝGm-Où‰r¶3é­¥]°ƒŽ}䦒Þ
+ ³ö¹£¢'ß™ð‘pò-,úLøœt<ºúk^ÆÍÔÞ²¥Bg¥¼»[Óüà /þDØ¢)Ÿ\ž»‰G{¥-¶å>µn­€« Âíž0½…FB DrGúù0uIî¬Ì3`Ã˨ŠC Tô2"{–AÍ°èÊ29¥)Fm×hâñä?8ôyÙÿ_øGÖU·ésPÓÒV‰B³IÎtŠý¨”•êÇYÿ˜
+º\fE8ŸL­l|9ÆVŸú2iJbqüQÍgï@ e'rxäê³l+ñDOL³|‹[ÿå®:.t ”#sÜâÌ&\Õƒu9×ÀhDŽíïìäêú¯±  Ûï#þ¥û“¿à(ê?,ô?
+¸S´™m/qhš³tíO6ñæ{ú¤ÒIà=ý0¦)BÛ*zñ«ú61Ÿ{àRqäqÏsÄïTÞˈõÜHEǵ:v]MúùÌÕÎÀ·¹ÿÎ1g«WlŽÓôL@³À2gùwW–‰;Žh
+úÌV зú›_|Cüù>¼wѵpæ¨Ò°° J¢ä®* ór¾ºÐ"š£_õ ÝœSåè‘fØ*œ¥àXß(
+ì}ÌdvS£ õíô“Í"&˜WÄ<€tF F»·—œ)ˆçM¢!ûúcKÿK-Çdš(UÆ÷[
+ CÐúÇÇì!æZ' Ë R4g¢{V´Ô,pÏÕ²Ñ2dÿÚTä˜'ƇKšU²Ô;)Ʊ
+É…cíµ‡°õ,sÑ'gÎA ›Æ¢V÷[•lÇ ašUX%cx­9°/B¹òîl¬·«o¹„ϳ`ÎÞ¤cÕ¦_ÏK[K¾©§ý*e˜cLêLUyRDPÝVä©isÃs£Õ G‡žYȇ‚tßÑxµì a(ª)óÛ*Â6xH¡¾Í‹ˆ01³ÛX’£â*@w3÷Mî)r Y³–áì€9q·«œÀÎ?#SCÕ5Cr[¤ñå!Ö@WTpº4ë½ëìà¾#j!RÿŠS%Ý\  ×TvÈQ( }†ëovHªØŽþZÂÜ뀎‡Ó‡Yí9VÝÔ
+N`ö_¦.Ñ
+ëö8ì5­
+ÂÒw5
+ç9 [^eÐ(xrrt–xÙ-çw‚N§-úæmý8‚Éî¬Åz#›Ë$Éz[ôŸæÊN̸˜è¯¨$ÍØÑ‚YlúÛCù‚Ã7%½
+E0Щ,l¥ÿL$õáÿ¡È]ÈBÃý¿‚ÖÉš¿U‹b¿žFdm®ƒïG¼to§ Ï_½çA S‰};T/ÉH®õha'\wdþ²E”iÊý@ ÎÖ³ÖéÖXtœ<"<ìóƒwf–þr;T€ú²é”ÔŽÊ‘Y Í›ËjíÛÿîÛƧÒ:ÔDý*r{R×kÁ—¯t“›³š…Ì)Ý#H[°‡¤Ó|d NœöØà§ÎB"“[näКkOEðÓW…ÓwPž¬­Gûâ­d¯ßlàu©³«Á>kstz7N÷üð̤Èîym8!9Ž±Ü÷95þ£2/úçå…ŪŽ$g:xo?"yÞÝç`)Z O4¤_*³¹l8q—>SÏ}$0;§ÔÅåͬ Uz ÞM#¼ÝY+ì«€Hl$i#JÃ}0`”„ Š‰áýëô+€êVž^ã|½Yoôä±b®žKêL0ÞÜ@u6x‚Û›Ïdœû–—ÎÔWfÂâTþY‡œÚ!4‡éyÜÌ“úáUvéL „só8aÜ_}ì"ŽH<´ºoAh¼˜*°„‹ Bª'$!¼’­ÌÀ“îAØfJüÇñ¤@ “Ïör‹¾¶õQé~ ¤µ·D  XB¾Ó¸ÊåA§Õ‘&ß@lžš$ÞI)pÌ  ßm‚;›á«ãHZ—ZûÜÆ(G
+µ•¼É@÷pÂúh‹ŧ“PÂ}v`þÃbü%mÜmF#Ø*^#ÆQ4¹$<ҀūBïIO3|w× ÚFƹ Öl»'ûÙ8[½«Ìѳ,xìã_/¦Âä«ç?FV·@! ã¡
+-ö˜«™‚I0¹ }fË!ãeî\ÐMF °ä³Y–¾¨*Ý£9^éʶBŽj1plÄl¬û‹¶ºYÃëhhØ.ùW÷™È2jWHW_!@nÕ²â7#«®—ªq1Aܽû4Ó_àª)œwcú‰´3*
+Uò)EqîmÓ6®!õMiåIÛŠÉ™ +2Ô¬O¶Ïiüâðݱ¶„N™öŽVùs`TcW*Œm^ÎÅœp£w¨;›Ö9Ù`Oè’»ðPœÉæ×tì7?çÀüvãàÞ¡§”·žÿÉü<—·ÐBR"{þ„·ôä0S¯…Ö''¡k…ZZ}hFàèŒê9ÚÁÅ>ìÕ%:͆ˆU‰:|•žÚÐ丬¯öÙ‹Ža·ù§t½€ÈÍÆÞgXXF-XêÔ¬ë {cBW¥D;pZ ®Œ‰YšìÈGú¡½Ä8NFt°ƒdþ)ƒN=·^QpÁ7Xð[ð$p8ìKÞñ{eiRQ0ÿXAÖ–ñPö.¦Ý¸pö¦|6{¡Ä}„pã«Õ4ÞdŠÅkY^…J÷.-cDf±˜
+(.’Éê=ñžI”÷+ÌÀ[¥ÂÙ.w½TlM Ÿ3×FØÙO¬êÓâçâc…ÇÌ‚Ýæ1µØµ@»[i Nã²­Ç0`¥Tnºá€øÿÀ,™„Œw‚‰šÍgB-Ã2¤ä…☢«ÉzC¹˜|<hÙ–O¡±"œÁf_æ¥FHVú«·*^ÙS‰ 9VO>y£é=ä~‡!1âðÓw~³À¡¦qÛ§"nÊv—’~n9¬ÙÇügštB£½òRøcª®p@NAf÷^kw,Þ«gcq–¼×¢jÑéu\ÜÀÊÌ«ˆùi/vl‚¶ål5'ôÔôXnÖ·uü{MôrO©Žº3ÇFiçfLI= :ýª-Êu\.2âýX-Úȴ塘ïG¢ÍG 7{ Îጘ v 0‡zP¨'²ÜÂQÜÍã袱 {V*3.(ìï, ÀÅÝ
+
+„*²¯¡”=xåÒ©ÓÑÚéE ²HÁÝÿ â/2‰>4ÝÑ0¯¡p|!¸áfW4Ši îè­~t®’
+)•H¸—P˜êg:„+#
+¹”…
+M¦Ýšiø¹5Í•¹Ä`n®ÍÓÆ
+³dƒ ¶@ÁóóäÛÊšöúgMON~ùw,±ˆÌ©Œ³HV¼!˜Ë[Psúβq¬Õ%{k¦QƒK#H~WÕhÙU´Ç0Æ槜ÓM•§ ™´=+£tÉ7e çÞvNƒ I·€utùö¿T ºéjA>ÌPhI^Ëúg.ÔÛîòº­–òÊymŽ-WêXé|»Û‘ ¸ê]VÀ£fu«™×3-)wB”£ÊmûDLnŸý®,s‘ö¤…Ý´2b€¹«Ì»ÇÔ#«õoA%/³¦KÓÃbÞV¢ÂA8†Ÿ¸ mô
+ÝØÀâ ( ¦Õ³Óóùâ1…07?²ÆÊd?Un˜¾‡ø†¨„Ц%ä5á¿ÆãñÙ'J7Žu:]å¥p¡P?~˜¹žÚáß~ZžŠc)ãU©jD÷ÄЛ¾µòì7&9î(¤qÁ£÷çXÓ¼hÎk<Ýï¬VKÛûæ0eóö²
+kYÅ rYµ;35¬2ýÊ\ј¡¯ –§ÙÐî§=“x…ïøyÓÞwâÓö¨š­È³¶Y‚Ê ¨ò–xÞZ&H&Jçì-dw›`«$.ÕÊÁ×=ß”a_XU„ú 9ª_ñ 7ì²/¬Ô¦½î‡ú,=ÛrºªGJü¶,´ˆ¿¹ÙyEP*CNsÓnã¸+’ ™éKPÆà0Ëïçšã]ŠqK¤Óu¦s”¾%âJ‹5úé/LÈKÚ(9bÿh‹•ŸvÍU,…ý”{*øRÂ`‹>ÓL#ª.7ZÌiH¡ _šBfÔŠÎdßÔ¹€Ö ¿K °¥Âyã¤|
+Óœ5o«÷ 6ù^aa<y6°1Í ±Š@¤úx?p)Ê2©5QX·Ô;âÒFGµLÝ~ &êæw n_a>ˆ¨©ûëçÛR·Ê9.;PØöÞÎb‚˜ ÓT1—çß@ôªÿéÐKË?©y¹ØÊ_»’Iø׊KŒƒXßµ9@¯VCÚë®ÑÅ̸z çn0='n‚L¤«žˆÝÕ£æ=è®Ò­8?ª´Ægƒ€°D­
+"‹YÈȯ[öã#£Ymà -Z¾ìì$QÖ;õ!Ág ÌÿÕB k`ÚÅôfúåézšZï¾QB:ƽ~€™‰Ø>¿.#‚3–N?Ì/ÞÿÝÕɸö;}vˆLæ½ ý¨%0y´ïWÿ=f¤;Ú¡ž€ Ax=šål£"è¨ÃFûÌö®.©åáöiT&HX´Ñ5øæÓ½ägÌŠ.â6O|—±Ùõ =Tš6X¦ÓÆ»J}zÈ݆"kXµsß(ä]˜„ËHt½Cí¢ÆⶖS”׺zã"?¨¬´Y±žm”¢™’˜IXs@׆_lS B§G¼[ü†AÔi5êÞ¶=³_f–ÐÊ£P:^(g$ÍY#ô[v}«ßå>±y¥ÊßåGq䃷Hû jœ«6GK¡>;N¿uUYf {ˆZŒ—¸9Ò$^'†ç¹SÙ}ã{Á
+'ac¢@íso{¬1×Í›ó¡rö±À1ƈá¸2¿þød{g9#èóê¼°WìF‰¦®¢F¢£Rȧ&HÚ~Dñ±
+ô’0ýÆ…&{óÐඹù*jUÂ*úI¢kŽuÅv[õTìfË(Óÿ¡qîï.\&£¼
+pÏÂȵŒ5ûm²ÔœÄ5
+AíT{ý39$ºŒHM%î1ÿ;¢Ö ‘®û´ }Üܾá
+ˆ›{Hõ÷¦®ÿ_l²Þúˆ+VÅ‹z`×
+B­‰7YjÁE¾À+æÁão´¸®œá@$þLl•}×ùI.3BB>Å#Dn£"òïF¢¯-¼7ŽhíÏ‚i<4,Ïkä…ý
+³:št¶Ä±T4Çbç¨+V-kàÕ!ÉÁmÂÅþ—Þ*'®»ÁÚ)2ÞN§ÔÒñ‡åÑ•¦óG%•¥ey«XêY$‰)qrqƒÞW ¶U™±rt…qg`ÏqÔX^ëß;‘Zg7ô”E%ê#‰
+äCêú$”ÄÑšC“#S¯´˜û'–¡ôôàWà®HgWþïâR=é§&zcçV¾ÝK˜¤j~Ȧd0Õ+æî\ºë)_¢ˆËi)(¬ç+{~†´‘ z,pó D,.`œl4N¯ž¾°ÝÛ 3@%[Ž+ÝŽA<â0Õ‘ººËM?¹wàƒ·Ýy¸…A@B—\  hàä^šdSƒ½“ –¬ö6‚¡ÐàxuòYœËÊ|äýã ¤ÏD®wÕlt[ò/+b<óBÔ¸Àø¡¹ çÓú9Í
+²—ACÙ_G ÕLf_lÀ[Ë ‘ßoÆÓQÿýäŽmOŠÞ~Ÿó(;ÛOÅøº F‚Tbd·ÓiµZ#h-ëY"½Ù¶ÌÂ/8=MÐéýFüL~-¼èrmµ[pƒü#ht7„×æ4“øËE¹.¶ÅÝIg­c“üYn@…J#ðtŠÍ;ê”OôÕ  :gÇ©aw´¼ƒã #ë¯_ľéD¼{•B‚(\£¦Yú’Ýë‚™þu ¡ÿÏöÓ¨àk“y9r /8+~™à: ^×.Xšáðõˆæ»ŽŸÜeýÁÚ ŸÐ©KyY<&Oœäáð—ÍÂn0˜ê–Òš†îÔ‡ F€1 ÎpldÏ»Ÿ‰õPô{áÿ.à¨x
+ÔùÕ.»”|ÂÍtÔsƒ—Âd|‚髼°# C™çP?åõàüæKªËÉíX¢D(øyZÜ¡“”Ã/º×BÜ—›¼¸SÜt)Wîì[+V;Na•mE¥".m«Únª!&ß›ײéˆ7â)ZÇj Ó¦ŽõY@· äïðs$
+t•ÅøMÓ®ýt¯»\á ææH·À’Ú×ÈÃû8…S?¤)K ¿$Ê'¥JˆzRä—5 ÄÄÚ!ï<Û¹açAÆè:õ°l=·oäÿS;JXSÊNV…|nLj´oM/€ì˜]·:¥ýá9“)1ÂZE.ï\ËàË9ð»Sµð¨ƒ®ú,Þ‰-æÏ=E¿ûž:š‚Z†ƒúÛo<çœI8"iPðSzvW\b|ë¿2¬ÀNÁ—[ÈF•.B‚©oâ:jVd`ˆaòÁ:YVËL`S} TX¸S€•º®%ùÄ›cj§k¿ë/z˜+å±\Lk/eô;°‡5óüÏ 03(ª¹_ê”S™–œãcÑÑb»Îª ))óŒd&Ìk!PÀëÕaÉ4¤G£cþtµ&‘à\ìRö3‘«’fô†‘ˆ<†ÖY ‡=—]˨ºn*´aÐFÿM¦œ® ðO±JÃÖ(%A(¿¡Ó‰ÕÞw:|Ðß¡k_Ä‹ ߌ—ò÷pK»¦z<I£Ú¯Z ׬vp++à–Ôà}÷”w(Ð×£ªŠ
+ÄœSJ ¡7Í@ôK¿
+ÜÉÊùpGÀ­#?¾§ñu² g
+žc ñfJ‘ÒRW³_=~;)½ Ø”NV%À0 5Ô–œæØ×Ô…Á3ÈùãJ˜!–O9l=ór¨õæœÌ Ñ®ÔAå4
+ƒü|uJs_‚5×;S¿X ©èóI`1–ÿåèOc“—jߨø%¼™Ûu#\Ù…ZýG¾ìÚmYª˜C¦US‘ÐC8=j\ã”ÐUA|Hðº(ù[ äÃu%÷”†Ö7q‚«VôÁsK£¯è¾³ß_!÷¿:[}@Ó!æÔ©wÁ`ã0£È¸RßDŸ£<× ô,ƒmcÉÎFv1ž@ŸX?¬“óžÎëÙE)7á¬çi¨=îñºx[0j#ÖÜOCÞšÞÞ4a`µ'ŸlK‘Å[§¡«Ù:øç´TCáj
+`!Oà‚¢„ ðž»õA-ŒëÀÇxÔrÖÀÀÚ.¼J x'çiÍwP>¢êƒ{v>®Ñï
+Z±Ïdw+o§ÐÉŒŠuÞÈ r8è¦öëÅ[…Èe;¹§.—•g.3{’V¸‘hžtw—W™_/p¤)§®é+s2§®_i Y1w²šÊ>d¼Í§Á‡¸,=öÄÌ ±õ“S܃Àe…‰j¶?j‘A§¹7N)â¼Ñ–7nyTV,ä¹~};%›0~gŒ6«„XûBÆb`ßØ4Ø•4·m O–§ýhïå1}lMJ'1…
+ß ²¸¢l×÷ô鉕dŒÌf!êêº- "hé8@`ðûÈ¿¤<×Z =CŒp¾šêKé[Çõ.Ȳæmí_°ÆChª¿qBåzZ®ÛEDKEÿðýø–¯™øð¼Y §ê“øßppS¡ô?½º¶Ë;+€¨6.l­ÆiÏ­Ò¥(êKi½Ôºøòð¼=>‡óuGY4tÔ°ÍD¿;î’“ biȱpvãSø¼ª„b$P`:ã6E^$ÔX,]Õ9¡(!Â!=ê‘xfäâ›ùÜʬåââ¤_™A‘/ga¼j½rî°X»[?Ì£“[Õ’1
+P0CÀ Sh Ä,Wĺcb>~Ù"¿¾ –`𠨕y®ï½0Ø^ævyCèig–?¤v³‰
+Ùš—ÈÏò$¼0!¹~PÞdzÁ¤d­V=+m£p9ŽŠìA9Ã_ ßÓnª÷Ê# ÷õ?M1¢Å*‹; §¿iö¯²;e¾]†1åG\æžÏ‡»Jœ&F¦Ô˜9uq²*G¾€<¯Ê>T„ Ž`cÈ”i(®$²xîé§õ’wÐЂK oCþjRRp9Wp}oô«åÒUS²? ª+ø¥RcìŽdD’·\`­iÓ½Zˆ¦±\[X’/VÐ
+LVã.¨ö|îB¸8ŠnEÅ’P…lVæ·ÔÑÜ#Ö?ê­ý÷rÙænê±Ñ+òЯ›}¨¸žok"X¯ß.QŒ…ÎÁ±kãa®ýckc}^·±¦5½-´ç;÷¦ûÊ—Â,R÷†à0¸ÙËYrvdivb‚ ñH>LÑ0¥œ—ûbé—‘EJCªb;ЊDg“4Ï…ÒýÅFî½ôk.Kpd®¯ŠU›&8ŽÙG¼‰:ÂK´Õ‰-]‘-x@›Ñ?àdN§­9Ê÷@–¥1FT¯º
+ÃÈâŠð
+>.E9„¨eýªÙÏ…_Ê<<ìÆt~etv””ø´â9ˆ1?¬¦`Άå±†í<\Idhñ±/<¹o§*Üœ&ÕäÓØ^µ1çQ6Cèeœ–ÚƒK|)HÔÓIÎÀ µBköÆ…k²cï l±ò–\Ì‘L¢ëyϹC ÈLy°E£sZÖ¦*(ã¯Ä Ð0æm Â}!¤îåó¿‰F¡³Q]àBÅ$´cË(Øþ¿‰ný²¼Â endstream endobj 24 0 obj << /Type /Page /Parent 138 0 R /Resources 25 0 R /Contents 26 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 25 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F6 291 0 R /F7 123 0 R /F8 124 0 R /F9 125 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 26 0 obj << /Length 6322 /Filter /FlateDecode >> stream
+4°PE”¼qvæú–ûMü€NØcS ³À‚U¿*æz¨.ÙÅ;ª㟳ÿz­`GëK±1ã·dÙªÊ[€Bû&£@$.j?@._ íÏÍœ ÝDÕ™i4 4[ Ƀî}ª‹Õ¾Y.ç¹2(nÛ}g É8»OùÅÇwŦ¦_Ž÷½EzqښЊ4O® §oû 0%ŒíõŽF¦
+‰Áù¡tö,tÓa¢!ñÍ UŸ†\Þ•¢D³×v&S{vìŸ[{ù—rS€å/¼){ô.ÎXÅ•‡Û¥â!AÖ’ÐêÓ )éd6:JôJ;,©ëk”Y£Ä®|÷qÔÈàjzÏb“ò|'YqÔJ=à(Ô¾ÿN¼gŒõÛÜ=k´òçq‡s¬
+)1ªÞ½Íu >¤@ý©É×°¢¿ƒEÏË>²A[È`µì”(ZòKf´ˆè\QÏðí 0ok2̯T›cÉLÔrZ×Ï°„Üw§«—ò0ÕŶ´NHŽga`8©ø2±Z~qî ¤ÕÍ9UžßW•™ ø‘Í­hô+§tjæ[ä¼ß3ï,Îy‡Æ\2Õ §Ä€Ú`ŒnvWŸ¬¾$tK
+³¼ž)øŸØîê–¯¬N´JéhN«—rôz¢>õùO·À€Y›Á…ÔÓ…ü_GúIîF4PŒ)Ìt·p¤q#‡¡m":]uùÆýKŠ²mœNJ‘M˜sxùj*ß’Ÿ9²,8bq<¬a¬:]`<ÚÜõ{ôXÛ :·ýˆsOR>ˆfþ4•êysuý]{ÖöÂ8Ëbþ”*¿rnÕòïïç0Å´Q>aF{
+ô›F´}6¦¥ÔŽvUGlèÝ;w³ÍZ­ÃÄÎÑ맆î'®J%dÌ*Î.Úg‘ødœq㙫Qo²Æ7³üÏúàÍkHU’®Eùvl&ÙŸ3¾›ætJ’$ùÖô6Eÿ£\ î4N yøýœ–7zEÚâapÏ…@¦„mìûÓvC¸v Ié_•wÄ‚<)z><àx W:>yFjÁ[ûŸÛÝ—
+ NzäVL{ÅàY­+ÔÌÐîTòÓ#·ºD…×Ä°»š57“˜ªÜpõÊ9nú.Bf7ÂôQ¯³…'“D£R\®Ô/v?ÁäØb­Ìë#,‰÷,
+¤Î¥‚7ÉA cî_2ô3skêJë}ô‡ xO^ˆþ à¢& —Š•1œñÿŠÿs$VGÜL¶©8\!¿ Åáñó
+“2ÿŽ™¯±ä2”¡†Cå€Î‚|C’¢âGœ^ÈÖ?àÇÃ>°*Qgò9'Ò_ô½N“Kx¨÷»”¥ÿ´Ðˆ¿…ûF/EÎÞ,aÝbzœÝÅÉ5¹)‡ê·¼R½ÓÖ_3ÀÞ:D6‚j[dôÌM©uË£hLŒ…rJ¯ÀÔ+…=JK åÏß°r*dŸuuO2;*µ†’ã>GÊÎgöµ˜5•u;–Ѭ£=
+sø[ÏA¬,¹è¨ÔªU­×3#H[XÃ/X={j†rDß©"‹–ïê’u°bæF$-k†Â¾††±Pj‚L^¶\4·tæÙèÄ/{“PyÐ~—SRõ$xò=Լ̦ÛFÚî”Ô×sNÁ{ÁÇõó)½9kß%¾ÄVî–Fc¾Ï…;»&lßò=ÄÁ·ÔÈú²4Ÿ5€¡ÌCJ/`BÖ~K{zX#}çÀ ƒ¨$üâšòú“÷Ù·%ÖÔ¥šJï§åQVpÄËnQ<{âEÝ"X,wKOM4z¨Ú–|ŒCÎ6U¶"s“L Ù4FW²T,d
+ȶÀú‹¦‘Ñü)-Îõ+Íi[—mµ«¼€"@#5{]6æ‹7+Ëáä0Møó£'‡+GAçãŸÚíW‹˜úaØ:ÈîÐE _âK1pägAÅdÂãJ‘âÂÇo#Ìz»–&²úzBoœ»tc9›tò‹a:ÐØ­=Weù¾,Ì%7Y2‚²P`ÈÏ÷6¯t0Š„o ×\æ² ó\vL“M÷y|`óÖJ8g9Šƒ¬÷kÿý8#¤R®H˜_R¼³6˜«-ðA¯ ÏkŽ2é¦ð€˜•raìÿÅÅ-ÖWÎ?!ŽË¨5=qo/9(Òk¶ð/LBºmCá‹ÐF¹UøìžædÎÍ“
+2õAKU¨œR\±–J›”0òÇ·XW°ú=¯A'£ê"j!ª‚3¤8ص
+ߣÅ~@ƒŠŒñ‰CFšÙñÓjŠç]ýÒvt—4جI'³î6Éí P“í46_D~ìŽDYÖnÆÔùñ4ƒuGDaû­z[¸h¤7ôÓYú8ê©ÚûCoµÁ‡Z²—"tQÿ¾f%/EÞK¦Fµ——+ù¸$xÉûøÆÐngu‰zžÒK.æ5Õªês™®i3ÅòÀ*Al‰Ý ŽíO1Lj^iê›ÛyºÔ‹áñã´Z¶HW@àã2„}(Ö…ãbÓeübL~ßiÌú­OìÚ«®PªÓ7¥¡)Âêk×iÇ{Í⥒jU“O±–]ç_OíšCcAºX#
+F@HmEì )ƨ*Ù©a…UíBŽ5sÂù–ôØv3àôS|ÊÚÁŽ)ha•Ûg¬«– µ ¨’Úe£ÿðË­²W2áÏ]&HâÃ0 AÝp_¸¬{e,™"3BÞš€>
+ÕQª¹†œùaãŒË–ß)7^ž/ñž’•‹(Ýú&0CßÚpiî–»h9¿¶ðÆN¶Lˆæ(ß7¥£ô‡Gæ[«ƒ”lÂ
+“rÆö}™[˜¡ÊïUfIqíä¦
+§ö³=[ãp”9÷'Ýñf¬ê`ô^ôœnù›TÁ1gý ÜùƒBa[;¦qCH›SéѺâŽ[ëRÊÈ唶&wßø°â<Ì“ˆ|
+´ÎÔq:¬Ì)µä›—GêzþWµœ , Ø°ÕΨqEƒBñ• R•4NkrWа°$gF“Õ^Àh9ãH€RPA€Oèsáü#oyG9 ø…ÊÔ÷-"ýûº¹2²qif8Å“ÐÆ :[ï’èšm¿5y爹o­(³„XQ ¤dŠnï}K¸<åù/“e·>›:ñؽnkm°.BgšsŸEÇxâgCBFå™O•º%wÀ?\¾*šóoÐJâ^Í`réÈçp@«¿«s…§K3¿‘eÃå ê“åµ"ü}³¢…hÞnÓ4þW+ÝØ0ˬßÅv xkÞS?¶ô¾h›T[VÌ2Ì\áK0hÐõQ®Qê@7Ûc–¿”WÐÂË(dÏ»ÇÉ Ç*Y²¢®‹‘é)K»ŠQy(¨™Å£hÏØÔ?¼å £ÄöÝo}›®fü9À úÆÌ(µÏ7õäñ3FpVžëœmÒÙ­;
+æ2Õ Qvœ´ :ôØ|逺Íerôó<¹åAì‘ z‡…‡+ñ[>y0--
+'bÅ­õ¦ì·ôy¬ØT沓¢ôM‚¡Ö ßÖ6 I½ Øe‰e?tµª)wíËOsÓƶ¹\˜¦—KhÃÜ
+,ë…Ìvаg=tUƒ ™O8»€FÐq¤SzNI‚Ò¾ÜÏKÚø.D¸~®ØOK*±ÖÌ'ogíð/A
+qúfÍF±\ª_¬Õä0¾ðB ²µÐf‡ó“W²§¯öÍ—ùÿã?>:¶IB D8NE­éúÑ¡¢î•ù©÷7«ÜÎ ÚÍÛ8uU—Xdüa§ØdC¢·¤N²P^)i~ÑBñ jv©ï»vƒ'û.Ø29Ç W÷M{Úð-ñUî-#aun/Â"·§†\ó•õÜ›™Ùø|+özAÙt,H=œX=Š|~ Â%pd–L¬RéE
+AÀÒ‹l·ð¼î0× ™œF<‘dÈå.ë!À?ì³!bV¯ÙÆ’
+Ÿ-½Ú7Â"Dªx¦GË•I~Úû•7¾Šâ†^xˆ;îa:é»Õ_Í1gQsïeÐÓ%}ð}νyvÀýˆ/àÖQŽråneƒéIÊ7€‰
+ÊÓ<‘ézu°âà1@á7-éÆQœ6p%m«÷—'d¾ùV#Ü…xÕÉÿ–É#8é[e~
+[vwˆë*˜€D
+šóFÇæŸ)…P¦@ Aa»«CvÕ7~ ÃCICw€¼D8å$µ~÷‚bË;„}JK{ñ‘p'8›_/ÑÈÌ°ÆŠS‹ ñtJy¾¹ïíÉÿ©ô»ó>AÎGm=e®ÆÐ8˜Hž.§äÑî~œÐ2™bÍÿ¼RŸ2CÍÑl[K†¢ï{”«¦ºGX˜ÿvq>±3ûBØê±B¨žGRÎNÄl¥ÕT36«Ã*5]*|8u!žÆ£Òw“@oT*{W‰>g08Ü
+/D«š-ø¯Ç£¨ÏPéb!¼ºÚ#M¡l_£Bº*v`Ínú·JÇMá–¤¥½ps°æ_3–èp?ïÒNkÎ᳜ÏL,t¿­¦âà:#ïù§ H{Ê©‹ <Õÿ¿c'4¸êD5Ù~–¹´Þæ1Ÿ
+ ¢Í.¯ã¢?í•ÊŽÛíô÷½»¯bý0{¥7²nQª¯pŠO}‚+ÑêkN¹Ý¿Ïh¼+OT7¢~É¡.'Ř¹¿åÅeä?ójQ;4dž¿ˆ3=|Ȧ‘±ZÙ yZ{÷?µ~Pò^¬ó*WÇw!°ñ¾ìƒ³qRäã£R=Pož¤z2õN¶T:Ú¬¥ÙØ?wÿ¬T õ£—þ$
+d’vGjVp$ŽƒßPû[¶ü6f†‰Gé\T34'ZdÌrÓHGA.¦$ËRQå˵(¹X=€ÔÑ´êgX”k@Ó‚A~1ç=B5 …pzÎäðß%ø…Š2˜ ^ Üüûqü˜ “€ËÑ)"/ÄÁUO¦¾Îß;™‡:zü°Œ:1ñ…óôþbTˆ¯|”g µ« ‰ì|ÖYKQ½G^wÆa[xðlËÄu!}û‰ÈÍP ¤–²FRÄ—–ì@ÌÅu 4YÄC:«i}^Ø톭›á{¦©ù«ˆ…y"_Y`«‰¨2†bž¤þ,š¾*]œ–É] =–]çE‹0›'¾äHŒ© iÔȵÔZ|µšÝ«ÃÓO’ÿ4››¶\/+:¤²ˆj‚"?£ —â‹de“ÑÞq°T‚™¬&<±¯ns QYßÓa.h¦× 3ü:™ûôEž)´á@²Áh¢6ÂëÈ‹¿ãn>ë Åqâˆ0°x#Ä ðdɶ¦·¼ÃD¹àÊ-»í– ¸t ãåvr. ƒqÙÄ)µÀC…KaX¢¾b†&u\»emâæ€Êg9³« ÿ`|<Gþá ÓüëÞ¯¦Cû¶Dv?!ŠÍY{°PRïXž°«²òÉ€³“(5Ñ:!÷Î!„A¡•¤®8›±¯fq&>_ èûó,›3h £fäÝ1£%UC;}¹<š…„¶.}©­Q‡¯îqD
+ëó„u4dL5II9º ²Vóøs®´VËôHª Y «†UÉع Ûhßãg„8¤:Ë[ › H©ãˆ¢Éf´sŸÔ81P&aÁݼ"äï¶oY+“Ý<µÙŸ *·$¡s ˜wÍá90;ñ¢ú¶óÁ
+<Âðôƒu\é^N :
+WBvþÓb„ }÷žè¸᎕×ÔbÑaîߪ¦
+Âff˜˜ÝeaÂ^2A9€µŒ½ ¾¿oìý0‡À™Žëi”´½„·‰.U }ö«®.ƒ8-é=.ËËGš–– à.ã
+z„i Ág,„ƒ‘©á&)c–Ö„WBA‚XXTü@— ”’¾NnEÔLË
+!e1j:6Òl hÛV|EÚ÷DJ6¤pÎ(v¡gÉk¸1’†«²¥{Ý=ˆ&t—òÞ-ä5¸Rçr€>[Ñ @÷ßd¿#ðe¼´‹¼.›2øR_‚4á¡Êx\Þ\¼f#ØnDÒ®I6“´ZåÈÜ:ÇÄŒÌòï£CQaGÃ%âLö8ðwZC—(s“þ¾Ý?«´ˆ-öeâ/Ó°Ê—ë3¡´B¸þã×å‚Š°x£]I'g+œnðóÈY\‡ÕÒ=H^?NõØ<[ sŽ¨R"‰ wñyûTŠSó{ ­
+úûÅ´­
+¿èרO UïQæHçÄ>³î@eíIŸˆ\[¹õ÷§üL‚g‹@ÿ;"vüÛÒØ®ñÍü;šd®¿ì¹ìõ¡„ †âÎÊ–âtˆ.¡ö<@›wi0òÛi’ˆ~œ<qrJ5[ ªëÆnÂB‹ZŸñ ^’ôØPNhbÓeä¥p3…rÿ¦ÚR’Óƒ.»"¼u#Ûj´­\N–VØ雄½,/&œî[À®CMfˆ”Á|b¬!ú@|‹bäš´jmß¼“U¥+ŠÂ˜À9¢²ü4…×ÃY ¹Ñ„ªÊ"´-K ,©Qz²´Yâ±1®jË1A@u*pÄ8¦—­fF\i±v˜,œá5z
+ñt¢k(Adñ˜)0!t²HdCyI "+¸zŽ§¦´A>•`èúJÃylAsж®Å•ÝÉ:2,‘KríkÓckîÍ‘0ïµ>÷žÎž´l ŒC/Õ&¾–LºEq BÌeˆïÖIûÃI>*ªáåH(n9¹žÖCr~Ü8¹÷sÌ+ÊH(]=I Ü¡<‚3ì ÇZ=×qÉ<LÁ.¨é<}&bÔOôdDfa{.¦§n¤iÏTöØØn]dMÆþ{oqL÷‘1¡q’Ù@¨XPä|ò"N•æJ«þÝFÍË ´¯>ÓéÒ*l'÷N!¼ô9š’ßqw‚e·Àwa¨0v°½¨Á--
+'ååoh}cž`èA5êÎÚçþÒ[>öv$Æår±Öjî#¶–à•B•=W¦Rú<nÞ¡7à|BÇQ›azBÍË/‰m
+Z¶yüýÝ-k/É^ûIrâEUö'ç4¿W¹ -i/Öà æXÉ& N¬G£*Ž;òÁÅ>Æü8HïÌ1 ?I¿ã”®¶J×ióL{M½Î`õý? ›¼N[?–‹3U´°Cƒ5Ú³ž]˜zC#ïEŒøãEZ7ö8ü\ˆó @~©Mqn«µö•é¡ø³/,^¬1(—ø&>c!Åó±ÖÛÕbáÔ¹¯<–ŠÜèyT¦“ÈcVYuÒú†Y­‚(gŠú²pâ½-7AÜcÇ_.¶Ø!ì@¯ú ̪Iý¢¼ÊƒüìLˆy(/Ç¡`#a8Vµ·8Ùè•L¬sÆë–C&;i£¬ˆÎÉ«­?÷Â^]+á²;Fù±Ž¬kr‚ø²L,Èí
+H6+Ø·ÇI»`°9òÝñ]kTì«´í€V:DO€‚Ÿ·òÏŠVÕÜw&s}f92
+‹%^ÄãåQ_쉮mD—òz"Œ¤j/’À@Ͼt0GÆþè()í µåµARÝÇlòȶu·A] :íÑ-óøH| œÖݾ/ïàLÊ*ù
+»”ÂøÊP°§*!¾›"ˆå/Iê®8`õC7w0õ7a~OD d
+RæQ¶i/f±¨qìL+ ÅúûTuM«#udn©
+Rn¢XVîÇÿÓÄ¢¿Ä
+ájsÁöëÛ_h'~ŸyN;x}‡©XMXÊØÚ;ñ+ó2Q~Ä–íןY òæÛ,¸3ëYúÆ
+ÚÒlc=ðØ–vŸBiXrj›¸Cæ\},‘0ö6Ò|EŠ©ˆ–}ÔG…q Ö‰NbÍjÚÕïc¨Ç{kîVUЌ㢟³ÈÃù‰æ`WùX¥ÄchŠÝfHÕ‡ÛçÅéÖõû™Íu%Bß;©Tÿ‡3ê;uR%,0Lþ¡¥yXR×:¶$˧Õ1M´…f”;[-"Q&MÊêm•–^¨Jhó®Ôu;¶U_“
+(~ÿ²Ý°ODl>t«)Õ{¸›V5JÔÙ䀦¯l¨î‘¶¶Yøe4“u6Ÿ _¨ŒL./g£Î‘8·‹£ŠgÉ5Э¤#Qp*B·\<¤§"ó­=ŒÏÁ±ï©´WKÈó>ê$Ý"ˬ§éGšÔÞ|k~{ñš“O?éö¦{oL-¢X 1z tlÔ5Üð0ÑìÐêÿB?îÓÔˆ{؉^€á³÷
+åÔš³„Ö“òÖœ8¯Gú ®©¢È®®÷IX  ñvjí1ÂbïêLÕ†¸÷¿³•¿–€{·õüuOW»B.HSþG é’eÊN6/=׿äËp;×µÙÿj¨Ëp <Ì6żn›­*¶dÈ—áWÒߒ㓸Q‹Í??ê‹ ­Æ†MÖ\Å»ÇqIkب—Ƶ0Å2íAMþœ,ÑŽÅ3˜ÅþM¶^h9D ¾ïrRy¿Z99§Í‡{9,QVÔ÷Ɉ¸üÆ »$ÅÉÚÊ…d‘6mFY{ã{‡å¬ÞDK{^P¡Å ¹³?%ñ¥E¾\ƒ;=ß1„ ŒZnó6â%tLˆ®0 0ñžͤ>ä@sµ<ëÝ›}à"Mã5á¬íШì®ñ©d½jU>üI8^ÆÒÌ$Ê‘ã·i¦&G¦¡Ÿk°õêïGé™ü“o­6Ã#Ñ1ü$05¥â°úîÇB"ó9P] ̧jp÷£½Ü«Ú‰Œº-«lV×î¨qFqz«Õñø¿^þ–ÿ¼Ç“Ø|hð¯%)»jå•j Ç¨ä€­V¹ÝƒäB„ DDÚ$1; ËŠŠ>ïÛÁ÷±[É#‰f¤ñ0DLJ´høšm™jø¥€sϸü¡=ØŸ›Šž©›U9I¶õœrs©0’ÿd4gÀfçÔ MÏÿdšIèý,Ò`èÄ|WÏ È˜§¥¸c-ÁôòøåÞ9ÄvÀ4‚ˆK ׺=¢ÖH¥¹©SÍ2ùÕîì!ÇѼTÍÛã:E»²Â9 Ók"n7÷Ýäë»|}‚[–ùÊ4<¬ì0@÷jR&]uhú5hþÜ¢m¨S>á0p¸5 ‰²Ö,ýÈÇ)s»è=„ð%s§iç$ú¯»_n‹l­•b,¯I‚@ÍÆ$µõ.0p3Æ8@ée¾±‹˜ŒR¨‚jŽ“ ò8œÁyU:Ñép*Ó¼m·°„À1!š9&Cf&µh¶Uán/<2î¹°éà‡Y>«ÂeX`ø1GÃÜ…\˜E+yŸÛ¼æt¹^æà¶h KS0ÅØN™êõsÚßöãð;†_lŸ›ÜT€æ¦ôüË„Íì_» ['_³¦= oÚgHY‘»“Á®]ÖNAŠd)ùj" #š¢î„ŸýHíT@É
+?o…ü„ ‘¯G©á4»ÏJ²?ûÅ)Í*À V²Žá¯ѤÕCfÇv”ƒSeø3 §ËíЛRˆòmt€e•¢ù7ïE¹0ã"µ²mÛu–BÁQ ùáQZ׉œ…çvçÜ(ò¨šÃ^ã!Ž'ýóÈè‚ýfš|np¶ÿ¹Y*qý¶cBPjUðÆ(ÚBΘ‰ÊÖfÑŸS}–9Ð5,(ôÙýù?oÂÿPç÷ªUEn)²“B‰Š,¢äÜ?jŒÿ0 ð„¤3ƒ0xÛ<“"aرB„DØ;âA™æÌód.¥£'€ÁåÛ}&˜ºÍ<Ý\3f|oû¯Õ^6Ð*mšÞ¸R‘SÈúlÜ,pn•ç \¿NCfÒÒ(haï¡2{»1òsœìH%J¶,5?0‘’e»ë…’ÂÀ[ít‰CC¶Ùlcñê©Þ,þ Ót5`g¥\âu(.ê¡Â-ÔÑ*F¢ÇÐjÑBšG5ݶ±”ffMØ"fdÒL3nyv¯A0@ËBðîï |©Ê:°¢cw¦Öt¹ç¹^lÂ.¼T^¤}ô3$Tz#äß5‚ž¦/Îà¸,?ŸWc‘MX'À1.Àlœxwæ¤hÅHLÁPŒÇŸàé¥E€¬©‚‚\¡´)ÓõxQPA+çCø ÛW2éÉÌÍgôRœ…åCŒ\Ž¡BÍÈh§x[bïaUÐÑnd…Ñw\}zµ– žB¨ÿMEÝN¹O=÷-|E
+@.°R1y‰z%}Öd9‰ÝŒ\ÂÉ/
+ÿºÓàL ÓXÛjAE…R-›kåžlùAÂ=L@Sª.á¡Ô(¹ÚýiÇ؃_¸Ø–œ˜Wx…Ž¶Õô¡øg¡¢ =?å9¿«a­€ßÚ½nÉœ-©ôˆi{ónè*"Þˆr¡+w%Ð8‰=­dËGe@¶ódùÈçÈØ endstream endobj 33 0 obj << /Type /Page /Parent 140 0 R /Resources 34 0 R /Contents 35 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 34 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F8 124 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 35 0 obj << /Length 5071 /Filter /FlateDecode >> stream
+‚“’é:ç¤Êbh¨&pæïxn“ÁÛ¢W­0³‚™)¦gw—Œ× ¥[W'×D½†ãØP–é4µ6IÁþSçK©¹*qCx3ÿ=ÅwÓ°C¯ø’dÁeoy’³ô_89ñ‚Eèðù›_ 𸠹ÃîGµF[‘±ö^JÚç4ãqÊ(ÃS­† 4§uÈ N«èTBúšÇ7gëù%¡r¨]” Õµ]”h$ %$$ åáýÒú1 *žîáɯ3dAtt é5R(e•HIK—ƒåx3$s1@vÉŽ"OœD!w×€Þ¿ƒ6Lø=@k¶NVS›Ç™b’hž’J#w¦1|âŸs·mžüÄ«¥¼þûÅñ¿º?Ï·Ù Nëœ4èÆšü†é¶ZÿÈP \=E*3`—æcS(~ãF¶5ogÌsÌýQò†ˆÜO î{6îHƒaÑeO²:̱—Y‹ôÙI µk‚“óÎ,ê/˱é§é”û”Š„Êü•Ô€»‡•£‡FÖûk75=+g=ÍT° Tßô?€°Ì¥Ä”µáÂe —Å©§e´wt‰ltO…Ke¨Ü»¬÷í5Ì úÀPÚ©¢dn†ðùyu«ƒÊH7ðÛ.€“Çïzì6²8;]Î èП«IÈ‘õ“¨pú M[[©¨qÖj–ŽišD¡NþF)¡Þàÿ›”®)¶†J³É—šéKá}=}žUŸG uÏ3Þ`ˆ’Z?™¨û¬gزýÁÌ1ï;ËôÌ<—Ÿ¦¤× +UÎÌ;‘ÌúHÆ…'{충» v‡i· Žü «¬êL“R¶ý÷)ä ê ·;}¦Q|Q¦Æ"âè;îŠZÞ{ñ!7‘6òq< EZÖuOa{<¤JÏpfÁÓG…B’ “Ã;eÕ#ÍÂïÏÌíäæŠ#00ÚFÀ$îöŽí¡›ŒyáP¦ÒÇðçÊ“µ'gÃ7<jÄ/  §ÑƒðÿBaô—–O
+[ÊôHÃFþd‡ç/¥n¡gŽ­JéÏ‘Æ{»Åz¤¾^q±;MÚ°âÏrÂ4OB®áè‰DÑk·jñ‡bBh(ÜCä ÄÅ­kqá–—v„’„&.Y¿ie²Wû—5ôí¤ØÕ WÈýºí@é-šLUÁ9ñ”Š¾mï²àULÅ!í¼ˆÿn=ö øU7>~5"¦VéÛêý ·kƒã)Ò´šYƒ–¢4«AîÕB1Бò¤­¸aiý˜|ºµ„Jkº©H(‡
+¦ü?]Ÿ—ËvX"":pœË+–°ïÄÁzimØ\ƒÎ(ÞyœD"“N@§¹sÏU­x¦ôÚ1™h·¬³|íO%†š¦¬Þ3 ¬¼‹´ëÌEî§Ø2†ݽj‚ÊóM•Ö;Fxó‡zñýØŠ¹:ô„@ò¤QX ­.Fïâ paêå°Š
+‡ XËÄÉ$þŠ„€½crL‰XQiÇõ=þu
+ìoÁ==䜷~ö*ÂU<€ØåÅ œ¯,oNͨ eœBcQÙmã]1Ê@ïà Kj‹¥ê1-ØœåA1RÄuµÙ¬³«&M7ÊY`î®xA'DkJP+1§¼¶ËÌ"¿&~ øÆY1tÓ3ç ¨sÄKø - ³ÊH‚‹@㺈Ð ¤œÒŸäõ/¸g•R/§¦)ò`¨2À¹¹Ëҭdž¶¶[7؆ެÝê¦x¾Ÿ.Ááå¯zÍ.O<¼°æ0˜€Øó¾"Zjób­‚^PdPÁ*‚õJwS€”¡óïŒ$}Q¯%þ™÷÷°ZËXF—Þ~ Á+®*s›Þ—¹§Ô ‹÷û$ð¨<C;¥• (í¦aÚ'Ünq.%yáS&Ðì=Ùúsa2pVä/ûÍ¡k…eñOõÃ
+Í)L^¥*àgò†ý·Ù|ÇX#°Kºž¾Š60ú0Ψµn+9ùU-yº¡dÜÒÇŒ%vYØØÕphŽ:ÈDôÆ¿|¡
+ah,ØÕ :¾>ä&µwúfE…¹ûMTÁ%1Ô9þµ6ã­[;^»Léˆ5ï—®…
+çv◭ƒø ^¸$,™8ÞŠ¼~_ðÄ,˼Û9wªšÙ[1ðŸ"!’îK
+¯X3Å3`å_£¸óqp­3ªÛ‹±
+ ÝŒ~ÍAôŒb)¤ÚµX¦ÒVRQ)ºœhõá|´òròäŒÂÑaшÕÿ³?ÓÎ ñufÝíÞÊÝžElTWÁ ¬ä¹h|º\-Ýö£ÝÂvµ›‹6Ò-JW¼¾Óq"’{[ùçRÄTÔµr]¶a£Gì¿¿<‚ð†”†2MÙ›•ºU¸œY`Œ]ÞºÙÔu˜Ÿßs‚,ã¬qkøXR–ƒí¯_ìJMø±±«Øéù:èÙi0h‚N%[¸«ÄÈÙe2/9®®BV;úoÄL}y<rø}Ð ­ƒ@$lCåò‹æ$÷ÖK†¶« œL§ˆþZ­½é¶àÌ./Ý»¹­¥XüÆ<LΠ +ìJ1¬²­æ”l¥¾gÒ&6GGƒ‰1}±¾ª?p©F_y ×ì×B=á ç Á¬‡2š´U6`÷d[%Vìf¹õ÷ ¹Œª &x8aïõ˜2´‚ÜÛCØ?QŒgÈ_Ž¹ÕXלñvEeœ<¨^!¿{l~9úêh>#‰|öSÅÄ\ó$hQAЦq×~ð-_UŽ×¶{S;’
+ÍÉpôºf´ñS-[_¶×á‡'—Š·ÑŽÕJ5%}
+f 0õŠh¨b N°G—SÌ•>'
+­Ô&Áys‰§ú˜ÉŸŸÿ<}—Be$XÁ3Ì^>ùyMŠ…¿v„s™¤d‡Î·{6ŠJçl¡<Ø
+ ÔA–ðugIÿ24ÕbaìP3•Î\ ¯?ì7œƒs^|³ŒÐ‡Îø«C™ÜgÜâx*ŠóI‰­Ž{¹ró@üXîÄ‹¡#_y–6Ò4'EN=Äâhö¨2./
+=Ñ,¢îÁe¸²Fò¯² ž©!Ebž—U\ˆ¥µ1UnE×ÿœƾ(£LÍÖÕ‡áté|ACˆ¥ü͆ß'_à7€X/ƒ <!{®™Èú¢z\[Çøám¦/2Ws n\ÂÃ=@mŸÈwH#×ûkD3>Br,~[ ª½@¸ìRoÑœ„:Ù…„y¢Ñ@0ëqÒf1Uêí¶ÜÅŠx[én›W7 œ¦]®§³ÃìDåÍjÜÀ¥10}µ,,ó "CO4;o†w²Ì ¾U2¬~…›a¾ÄT†’n3¼«ÉiEói‚I¼øÒû­æ-¹F“èd@¼f 2™c>säC®øo%òUQàPÅc×Jâ¡$"³©¼±Z”ªëîmìP^ ÇÝÔÃT5ò+ï2»—¶¦¿µF³¬øŸÄ¦“A‡/3—Õ}¡ÔmJì5™#‡Ù幺‹°²Ôü×a…ÙùáD-m´8ë
+ÂÇaùÄ‹½þ\vñ‚
+yýCçcå‹E*]‚
+˜U³‘´ª'vœjsH îÁu>ìFÖ‹qå3 endstream endobj 36 0 obj << /Type /Page /Parent 140 0 R /Resources 37 0 R /Contents 38 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 37 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 38 0 obj << /Length 4905 /Filter /FlateDecode >> stream
+²y%ñ©èÎd
+6è7¯×ÎQ‰ÆºÅþZyîàŸœ˜ Gq7Ïãi3lr¼t¸Ú©¯¶ÿäi"Q8¦²™ÕYŠW‡˜6…O ¹®DŽÓh)ò(éFæ=ÕÁkpk¼{›£K0 ëêÍo¼
+o¹Ç¾0íŘÜ<½Š¬ÝQµ²ßµ´‡øA^dÙõ€›P/ã¤ÍIÎÔí}€k¸,‹Ç'±Â_ÖÞp»†Ž)PPgqo.oø×MØÝ’ü|ë¤Îpõí}ýë)j!¤¶%ôe/üq؉¥côȯSðlc”+ÖŸþd¦Wk¿d»€—›SÄsûšÖµpalá¹PûýR_óª¾]·³ô –2Ë ÅWå
+xÆ#+ꘗ>J…9ÂÔjãáî=ÂØ9PÙ£¸E÷5vS\,-0´úˆcºáàŠÐ Õõoâpê:Z=ÖsEÊš¯ÜáòÝœ:Ïé—n£÷åHÏ–Ì"¯"hªµ$ýTš?R-Í‚zföxÿ:Pkƒ1Ÿ_ÈßàðËÑöò½–OÞ˜nè7×qóK[¢ï÷Ú<(´iÃ-ûûòÌñÇ7.ü°eÎr¯µu‚<,¶èî¾:ÅÛÑÒµ)§‚]M‘¾ŒÏpçvõ_ L÷%á·Në
+¢!#|~Ÿ
+2—´üå%+«¹›fœ©¼$a )—Àeú¾ÿ¼QEÏSðRèa%?Ä‚ÌÆÉ“ß”aI¡î©B$/R
+`ü½žáØuÙغ#¤ÎÙAËV¸Þòx»ÏžG
+ #0¸“ÿ˜Mk3Z=Vì·ŒªÍÁ)ô Î߅ܬ©â¸¸d4žw®Ðïíò:~l}èû˜Ð–C~­&lãfç&VV£ð؆á&ÔDþUkêsŒœôê„ì£xâo­û
+5M¦Ú%_§
+Þ©"Aí³Š^ˆ'Òˤ›4LÒ„ãÂá$Õš^Ï©Î
+ÐÚ’aBŠ=Ç¥c?öò¢ÕG¢}¨­žG"‡q OôüŽ4¶ƒÐw ðvó‡ øÀçú—> ·Co ­é ànð]…›Îžœ\—Œ„Ô46½£eFD¼BC°\Ò綩¹Ç¥ÄZX¤–7×ð2KÁ‚°ý_S2üJªS¸Z8Àw°nÉèZ9¡lÍ®W;$:LbF»›ƒçŸÝ úÍ‘`* ¦ûRk­ —19v:^€g–  ¤oWT«—{n™.³¬v}Ø€ÔɇaQ{ev)\5^ »=§ÑNˆû¬£Ã„»Úàåå8…­§Ÿ”>ž¬å—†?_lj×BôI¿Å]ß1t³¸/¾I–n2¾£âê†UñSÔ$zeg°`¸ýj N.í¤0¿~@ê‡;̾Eê¢fhòx¹åµ¡ Ÿ=Uš£E fßRÌCƒC—lhdÅn• V›ù5'“1¢sí%ËÒ´YxÕXÆZŸÌí7Áõþ-|ýµ™ä\t÷ƹSªYG/9
+õj h—©eÔ™w˜åÑLZjèßÐ…™˜ÙÙåâjÍÎ}3÷@·aÔ€­WõeZÞ2wSŒ?FNˆpxSy$tõpµoä]]oÜ~ÒsNMžºúk;Ÿm£ þnM\²|z»áNó>çVO¨©Ú€${dŠ|!èx^VÚ?{âg‘@9~FxÀ§Üt˜Lc*²
+W>6«Óm»Uyœä]ß\ê`¡(ÙæÔE•_Ï~+IµÞé$mÄ£´YŠÉ$lL¢DªÙm\ÈiÃ
+gËSó¶µÆ©9E€„^ÙÂðhâgBò¹öýo0g}É>œt ©âlèó"âÇñsÏA½–äY k È¡Ê
+i£”òÓ¶¿Qd×4cÓÒ–
+¦O:q ÓSñõÙd7Ù‹Ê¢$}Ž®ÿÔWªb›ÜÃüþ
+L×ê\cIb=_ti_Ì1?lV1&Ý(¿Mæ_ P…”›ð$øµ¼y&.ŽÉ… (`n]¾Æ?ÖZí4sø¾‰»ï¢aK£Ñ|µ£õÍÍ68æ·Æu„ct¶ªˆ¨àíÙ.3ñâTúÛá+[ÿ¢H³FgüÔïm{€mȯg3jé–egñ•@è^+
+úfÝ<œ½·6“t8©“^3ж÷³‡ªu¨'»ž>òõ:Ôc_>Éy+m ´’ë>%$0Dd¦bÖ[¦ ‹gç ÄMZ`4{)ëù©ªÛ¾¡ÐÖ¢£†ØÀI׳ÇfƒT€xÏ3Y½WÿàøêŒhþÂÒ`Dç/³ñ$ƒŸ!úßØ~ψ*:S=ƒã›¶Y÷4ì
+ÉêbB$ø1+•×NÍ^›ØÅêL(üž²ŠGdØ-Ù|†¶!ÑBì^®[tR½îÐÚnÜ–¿_SDL?öüõOtÞdÞ.åPÞhÞd\¸Àl³bœ™˜ÙÜØB$B@(òQͺïëAöm9&Çe{£ß^EcuÞ•Ç· Åoˆ†_¥A¢ÐWr24f‚“ Elâ.ü£¨óF’n:¬"|l
+Öè¾ËÄôvÎ ͱŸm.­ãqŒ€)áÀ±€ôÇq6™¼Ûé¼–k'{ä’¾Iw¸g¡§ÿUÕdhuñOM>ïš`R“àêÖÓr§ÛüÂ㯋­!;nrÆøŒO¿? —ë«÷ìíãèyÖÝs›ÿ¼±7
+–˜ ä]Íüñ½Nõü€ ¼bêE»˜›þânçß°m¬€ûRH1õÆDô¼®HÒ'£œ•¿ëì/%ñ¸1]%ßQ”£°O°.àüá½úØßÆ;lk·o7¤Ò°Ž¥ÁPš×ÇÓ¬Ðû§áx$½]Óê^ XKˆWwà©,#u €XŸÍ:tóâÙ?c¢}Ƙ€>¾CP àž„(~e`Ñ÷çØi\ðd¡¾rTÄÖùÐ?´W–|NJÛ€e &ÖÂn b ô܆V5_Š^š¡I‰†)‚LIZTßÐÅßôIº5¦Ž™`ÍûÒ—2A4I§¹ýG­±ËN µÝ÷ dPh»£¾øÛÊ/„ò„ûêUj™b!$ûDžžýuå÷~ÛõjNh.„ìO3x/‡lÖ
+‡~:¡¦¿Ö3à! S
+½ê ŽQß¹äDÂa)æu †Ôéu9 Mé×Ý‚Ü/a7&á·c|ä7³DtP§¬ƒa4p(N›Øè¨05¶ÀèÌÝ°&3”ë@±ÛQ­F;Ü;QQ¦fÔì‹2m ‡hÔŸ£U²-¢IØlË@՘ЊÁG€3Ò=X‡™elÃeÝtð#FÔb·ƒ£™ ³
+`׎øÌ_†g/mÓ5i^3]ÈOÛ%ÅΕu‘œâIômš}
+7vzÁõûêÝÑí œ X-‚{FöžÑâœ(×N
+»²qd®«$RõoÒ¦æS—+º¤A‹£‡—Îl›ÂÎ,'8ü6‡ÓS¦scz?Íø¼'Yâ35"vÑjU 2èov¾äó”_×Ç‹ãqÖ»±cÆÍòíÖ¹.7F‹ïÙÇÁç¥Á•n®¸ógY™Šf
+ŽÅ™¡QS)p>¹kÓ‚ BMêh(e‹ž²95ÕÀÚlA´¼nD
+Z'ö„®§$0'j”4@y0µùÁo| ˆ„ŒH¸ #á{Pp<Ô%¢ÓGn\6üi.ÄLAÈ/À »Ï©9ЊÙ9ä·Vl™†Ü;ÿ7sˆýö¿p8 ­ÿ+W’Ë#6aÿX8üÁ¼v>=__ôó¿ÛW½ÂØÒþ)í–´;Q¾
+U¢QÔžŸÞnvW›§bŠ1Ôæ [d/aƒe¶õÃSXˆ“ÁÃñÓzU‘$šX5^{Nýµ
+ýàÇ.hJE±
+æé£ ”ËÁØщóK4 ˆ‡<ž–Í!„Ï0vU AÍUµ¢iòeùРÇàzbTpvP¿x§e­è¼"£™
+ïêåÿàUõ%‹vוּÀé½âÞèâη}i ÷Õ™5åÞïL¡Üˆ…GÓ/ƒy-¨éaéäRa¯Qƒe Jè§rë—å>@ãÂ"Á•
+uOXV{Ïyã´‚íȲŔç_ð<wô X¦<óµùà‰In=Ê#!OüùïÓËzž„¿t3ãz÷ÀHõ»½úTj¢]MBox(h¸,„ùˆR°k|Tßœ¢„ÐF"^\;ðw,âχr„ãnç<`Fè«ž)ª×Ÿêý/G.¢ƒ
+ÒV„A‰f>>ij—²6|^™¡nxš„±Æ^mÖ Çj°** ‘3’À\gL;øDXöÑ8k$‰Áû¶’[D@õƒI5ï*ôè5<؃ãìØ)”ø •J¸n?L ÞC·4âŽòÎV$äK2y;V•0º¸öÆ6ÏŠÇ(ÊÎæAÌÝØwe‹xýã4 –‘É û^Ô)4½ô³âåR‹±Ÿ$<]ÜöÅ,È1’æõ.rX{Bæ ­’‰¸]àÕïs28øÊ\ù.—p§’•pC»£ ·³× E3?~Ðóµ[훧i…pŠŒ¬<*‡Lqh»æã8OÔÝ«'p¹»„Cwáh=‘½í·äw± .yþà§{ñ|Ìa Z´œnÆÕã‹ðwo:ùÿvV\½'ju|Q"ò
+CjqÌU¿$"¼r0ekq€´Ø›Ï|#Ey>jbâ³ñ9Óq´|Û ^.w|—rÙëÙô¡6ó¨©7—êÛIÊR2â8Ââ§ç'+µ§Ø/àÐ-Ye‰©äN,;kã2’7+¨qÊÙ2ýГuÞúë
+p~ÍZ>.êº<¡ƒ¥H³+õU³s ¼Î‘eü½tÍ<X=g¹C÷¶È'Â|–Ë^M–O‰ÛïOõøI-_Sí[l´2-3¯»TK(âÒõÑû‘¬_ð†
+•é”b‚´§¯,m)xvcÊoïW¥Rùõ>c‰zºx)8¢Á`e”hp8iD
+†ÐìA§ÑëÈÞÍly€þ¦-T
+œ©Ç²Nî 
+§P("ǨOäó(zù¬}‚™‘bæÕü^/¼¹p'ýô¢>Tq–Ôõ0Jü$¸GùçJ?Ã$7ˆ5wÒ2Õy:rÌÆñPàÍM¾+Þ ‘òÊ)B×­.±e:lY†6mÖY‹ë`jGÇ]ê37N¯×›«Z÷Fü¨PMWÐò•"S“§eC®Å½³7›óYÜk™-ζ ÈÜ4>ôQˆ¦È_Ɇ/aX¡×9Q›cŠ0µZÜF´7*1—æL
+”¾X Ó¿z’ø⿧|Xü¨»6n¬¡óåþç«‘¢ ‰üÕt#º™•EA)&~}Ó†ù~ÚÿQt-Ÿƒº$ _³KkÔ±SÑÀç%Ëcðxg[ÀÝŽ9Û>…8K2qϯ€Uþ3nV¨Ô:ä29_QÔ…•¢’°f+]ùŸÂOðA6¸ š
+:­¬E£Iø­÷z'Ðùeþ"žÖÚ øcã¨50ô™-b7›|1¶ØÊ0Ò–ð\4T®a›ÈA(—*mŽÈüœN
+(FÔ?ÑL ’v}péLŠé¤ñ ¿~ºqá£HÂçýøf²JXŽÕÛˆx?Ï­|E­FUU“
+Ë\>ὡEµò•&˜eðÈ~b.×2EÃgï3äsÞ<ÿµÜ£¤L]l !–ü’MøCëìw³¯È1¹@Únñ'ÔÄ»·+æ®cªé>ÊèA÷‚¯†ýÌýy{é
+ÖJ¥ÏŒZ'åͨµÛ€ó²ÆÊmÜn£Ks]ÈêdÌ¡OE ´J£ôKìk®^Ù"teBŒÝlœ°rò4uõV:|aÌq«Fè£~ûM¼ÝaÍ92D†agPOëyñ†|\„*º~â$
+ÞZÑ©@:Ã˸Å
+qœVgà]¥Ž„)ÍÖ^Ä]˜;Ò°Ùvé¦"X>üa‚…c.Òîp¼}ŽŸç»w31³Ù®sB&ƒ˜Ûÿ²–Ô X9?>yâb§5-©HÕ‹5¤!­] '`—–ò*U7èšÕ¢MÝa¡±¥ÕЃ[ÎfÐ{ÍUb9q§êÔ&ا¨Eé{’‹5’©£û^#Áb“$ƒÃoH\7¡*'EZ^nQÌ=ž¹þó~¤¡ãY#µMdÒiyª+áZ<9‡âº€®;
+w729Ð+ô^FY¾:ú…öÙð!C¸Wy·J±M™u ·t8È÷Tþ ùPÊï1ªÚMT †{ÒSa06‰§"„uÍú©$c,wÇ…öílݸ|Uªá
+•á¼çœ”d)8¯Ô=¸!Ù·¦ËÔ&v¨z/æK…·Øû±…X.ðÌeuê= 9Ãï9€ó·ƒþë ü_°+pßVL›1$;Y¿›]Ð…àL*%½±îà骥þhºÓ*Õy Vš5%ñææÑ&øâˆ×ÝÊvþÛÎ~ÝKtêv1 IÐaÌU†ó¬Îõ|‡t2ýÅG”“½rvœ 8™–†ýkÑDB‘³ìÚ¡©Å¿b8q•çT¼)pÌ!Þî¥|¼[`ÛÅ1Mh©4gP[€ÑýBv×þS±xF´h@"`èˆÁ'æÄð]>—Qa¹à` 0ŠȎe¿ÆähÈÿ6¹[ü\£ [ _xöž [ôyÅ}C5Nµ”±¬œ£G)<ŽìW€vtçø Ó}0QÛCT„ˆÆ(Ôq@IµµpàæŸEÿ¥Ž¼ Û?›¶.àáþ¨:Ʊ ‹˜5ìcý¯pýˆ~Ó½¬¿[Ź˜àT—
+ñꉭµˆxŽq¥ýùx[¦ÄìPªÅTö냃41 †Z\¬'¹æj¤K€çf’£Dvp–ÓÅâvƒ
+¦ëZó%¡I:î6áu;yeÀªÿîq¦<CÜ/ÂI oý=e» s°ø¸@C;”iÐù”­\‚n‹íûùrL÷Êþ
+¦uÏ4¹°¢GX§Ô±<Æ~0Â<"xiM:¸Œf"ÖÏÅ£
+™uÖ‡·`fŠéõÒÀPzÙU³V2ò7wÌ‚—0ÂN"‹F9ùkìA®H}·%ákRç[áˆÈßׄe ÈÙ`|ûž-3×Þ³°dµ5³q²ºŸjeŠ¿aU¤Ÿ50.veR¯ý½µmÈJz¨Á}<4ü…ä•è܈½è¹pÿ´èS’Ê¥RÏEšPÞ4õ2['~¶Ýs¸möþ‰\x©2†Z“šáë¡» èmñ_Á+›d’ä£õZiEI°}‹.ø4|®Ë&µwiP8°\¨wGØUÚÎÑË`©d™  ÄXôv7n%7 TSŠj6¹*k‘è%ò˜T‚ø}ŽH‰Ý#eî‰ëFõùØþ3ãióÂŒz4i …«yšeN;²´Q=>¯U<KyV¶ú×IH“‰.9ÝZ¬÷žÖ‘
+~)º®4¹g@’Žütƒ™´-3~†Dó’I ^íºò'm^·n»&¼C þß«Ï9q‡n«9>ñ>柶Û™Xl9hOë… "?d
+Aùlæ=˜8-ï
+ˆW
+?è/ñþ±Q‹VU&?À0ìè[주̰^Çå¾5?0J]õLÌÂ÷KéjýhÙ
+9¿Ü bzQ€Áo5<Œ‰™>Èíß÷GÑÕ]"£Aâ5Tišƒ ŒÈãýÒR´&¼)Ú`go÷_¢åïOt€Ľ.+^‡L†¥huP9+£ÓäF ˃!Ý©wX™;×#avØRÊ9f²‹æÄßûÔ•Ig›R©‚aÕO¹ÈРYƒR=• üîS(§¬×¬êjQ´@cY|Š±I³Ê{%ðÑ£žf î2î!ÂÕ'?=:#/ð[ ]ßz$:çÈê·ø
+æÉWæh­(¾†«M
+cŸudP‡Jq#4:Œ¦·«­”£d¹}HÛõî
+ÇêWRß'ÖžúÃãÇl2ý0° qBoM »wŽ»#ŸõŠ UyA‡ç·77bŒv·‚5÷kzðÓmomuºÁ« øŠAT endstream endobj 42 0 obj << /Type /Page /Parent 140 0 R /Resources 43 0 R /Contents 44 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 43 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 44 0 obj << /Length 7780 /Filter /FlateDecode >> stream
+¥¹®?‚$ª^7–høÈç @£}9ü¥Psš> j0ò÷…nѧк§'#6 ¾Y2$w¬´¿TÀH,õÿSq”L¶Æœ©Ø³©>w3ñ¡^|‹@/2³-¨õ®#¹³Ôk+Ë´£2áQ%¯…4GCZ .ÝàSˆÑ}J_€l{õ]V }õG
+
+®LÖš‚I[Ò >wÞ¦ASìš}êÊÁ˜F¥ºSŒæÊþy"§&!ɪƒ»iJ',/5¿½pMtms3½œ
+µ}wÓp×»ï'qø=a7ÄÒ‚ÌU–x3Àj$Õ¥¤ u“-„º´#¥{ä^=ÅÀŒIBÂm‡èŽ—û£gÝÚ¼†‰™³èœ4˜ƒ']"sU¿ˆÜ…ìA‹T³±ÝuŸxjs¬Eª2 »þ¶g s‰›
+ÜCcªEÞw ‘{Ö!ë.ùÞƒ5˜G@4¤i½[P¯íÙú¤‰op­2
+áÃÔ °“#6±Ýù/uLWñeïÀ„·-öЮŒ÷ñ Ìv Žps ]7µ,†±åˆo]y¡~,¡õÑj%|qh?/* ‰žÍ€Æ
+bÁî–‡ÃZ›¡[ IÒîBù•^-²Ømß] >²(;G8†v èÏz¶J,^³Ýæ8ò}^"ðGÄ_8
+Ü7|eˆèÿœ¦~ƒŸDÒ±bäÃü5 -õÒÒJ‡û_™îÈíÁ@Ób=àqÿ<|•D ”ÔÂ/.¥,{^ È ú›QZ¡ð''M'Ê ÷z[Ðf ââB=}ú¡‰ÏNÔrã­ºkËÂÇu vaño¢…Ùkà$;zðs=
+f`Ç#F¨xS L+Rª×U7†‰QµL*5!W„A—`wÑË!yö¶óþ=J{•nâC”Á›mZŠÜŽ hÁ€¯ˆxó„ŽY2c$_ÕwÈËüµñrVk$ÅÀJ¾T´"VW3 ÂU)Êé}É|7ÐK“„¶Ì<Ri(>î*ÙoéøF}š¹›ÌxÓÐz©âb²¦±„¿ÞÎ î‡ö’/í]5àÚ%ëäi;Ü´;‚­ˆ
+6}†/¯ìÊÆšp\ˆv¤Ü(¬J¿cPz ­ÿU¶âÿa냊«+øáwõ-ÅcçÀ¦pu‡Ç‹‹"V´Ë˜ù˜ÎƽÓh©:–u „Êúîýd,#ŽrôqÇ€6”e*0sêÎ4”€“5ÌÐUçßCˆo¸?Z¹Þ
+®†AÜ¥jÍIÎåEíãÁv´-2r¯¡©ÍLÈb®¸g(Dà
+éÕ,tU"ß—ô?œ£ »}e¹ª©<vM_úïç÷Ñ‹€ÊùóÒô·»®Až—Š•eb¦cÞ"ÝTŽ[77rºèÆÒìcs©ßY³ýo[#:ëy_¢`4neßœÉóI3Ñ|Ž÷Ö²+Àø`mR¬ÓBØÙ‹=ÈÚT>½ÚôK×4à9;¸7u7zX+uˆÐªâeQñ3m¨ã7™÷-×÷æ&žK’œ{iÀÉo€=Zˆ³µf&kž°cþÊT
+V¡Ì1›_<òiC¢¯àðÀžg=¿šŽzmk¾wVRw1:Áì­~‰²æÜî#ÞÂré8•¬µRVk¯§¾Lvdƒø"æz&}þDü þœÞ
+).*-£V?cððŸEÈ«ë»îp—»Ëã™å°¬Às„ùz0H´¿cÖþØ\LSÖ>.¬¸„h¨âU: ÔÐpT8uÛ<Ä­äŒI™úp+ëùƒŸRõv­Ãâ¡@fBÝcðogò $v¸S ÜŒ;vÇXÒ˜lPM£Ü&+ÝIT<‘ƒ1ÁòóïAØßæ;Á‹Ô_²Ý¨ü”JÃûgšð<GöÌ0çÂp×ó¨ÄEI‡}EDíéÊd•¤«Ÿdû¨À:&5~2j¡Ë!&— ³À¼ìª
+ÀÑ.]¡«¢ÙÃx,¼Õ-³ý%½p û´
+«1º`v„ÀkîN™û^:[~õô ¬J ×à¤c¶Ï2z4ÎcKê*ÑYþ*¿ZϯiŸ,WõF”xZúYh„ÐÆ1²úPt‘8n·¬ÛZ%öv•!¯zÿ=()µ§1Ñ˲‡_m‘"$E_å¥^pÀI’‚m…”©[“™†pvÍgäܪâR«ê,‡½îæ¢ÛƒB[Ãv}êÅð…÷žøà`šÙtÝc¦7i+¯$‡ƒ±’ zJĽHÅ óÆéNªP×Ã~Nj!ˆ½©ßjLñûUª³ƒ«tHügØ÷RÝïÔèè;^à*f¾ì ÝAL=wEý¥9‹É¾0·$™“’
+­ïØê•n´£¢¦Ì¡- 9ësÀpH(§ ÜùþÖ·f¿Ýù–ù¹D@f§Uo9ãQ+Ââ
+N¦ B ÷R‚‚»´õtüÜ"‘5ZJ:ñ
+±Ï&‹Ïß®Á¢FDæ
+wTË8ŸX)6§ÅWQðW‚†|ÆEæáÅÇ
+^íuÅ ¯¸ÀŽÇŽú\}¨ÜGšåÚð0ƒ$ú±Æ8ù½p“œ Ùè÷3H*0Þ[spä¨yk©È…3ÏÂï`­ ºÂq™»Wîrp)K„4–EJHˆ÷hx¶‡¶wîªNˆðò"
+Öì´mCp/¨-˜5åBõÜ×Å/©Ÿçœtñ"׳OÐ5ggÛr:ý]Ö`ÔþÂò|ÈÁ9»ÂRéÙC3À+’áÓUÿ¦óH~VV,Sê½$ìCÕ¸8Åî1qÁ‚@×÷?ÿ¦¢§K¤Ã<[¨£±—èÅ©  \öÄ”ôêÛ~sCoe\ÀHû²+oÛD¿§œ×[˜C •9*˜µ5ML#®hý4k䈆T[¥“ôÞglò’׃<%q®mLK­bص0~Yøè(ÿ·ËïvãÚ‘×¾Hdû§íiĚܿçybdUÉìÁñ‡¹ð2‡ç*S<7çƒgMõÑ›Yùñè#QjÚ‘²¿h~`7á¦Ñ›ØÜÕ7ÝvÓ[_lÃ\‰ëÿY<§@RQÞµaÇÃAÑZëD_æ”<cBdÙ¤TQߺ¬>îõåÓDSþÉhÊ©an†Âçnt÷F³”c]Ãm$g (Ú‘Ðz ÀÞÓ ½3Ö$[°ÃšNáìÚ«F^%bNp£˜þìy6K·¨ Ȧšyf}U?h…ô¶Ï.Aëõ†%¼€»û°gª…¤Óü`OÒ{iûÛ÷Râ
+T ×.8MyûŸ+Ö 0(R«št8 »~ůÉ(¯”ýÉäX¯FZMR,ᢥE÷NÌVµì <ŽIëÃÞ¶_ñ¿n(\À}W94TíÀ}%LÛºÓØi¹€ÛÖÌÞ¿€£2ÿ¿ú=_Dì7Ÿ¨€4­{.ÍÇ·5"“À0ׄ‰7ÚÓ°ßB,'dSÈ×±;ÓO"é×pˆFò ûû[Ø·Dñl]˜¯£Eƒ8Wg+ÒŒz&‰”vðÍkE•Ç$û‡ÕS=O59½Áÿu5wyR
+
+G´5WEo}5PHÀFÊPŒ`,Ž3Ò–=í÷¼T)cÝ5V4n,‹´sT÷Âà)¿E],9Stçj›Ãÿ ± ¹ˆ²!‡úMÅOuI!;‚@í\Œ1Y–êWmU×ûÀÉsGJà.Å\ŸXÛòÌ‹L€&1É@l±¸‰d±+êI„mwAd¸Nžë­Œ5
+[Ý^þàÕ·ã­:—“_hžfÉÁ_nU¢µÇ(-“þº 3œ»]ÁA·Zç³üüµ£ãEÉQÕéàß
+[ý× l{î4w²á)}3?¤-‡fžE×8Ø7¬SË—ûac‚a=†¢V†§ãL-Z8EÛUmTé:åQüf²f¥"¿Z_1jÁ¯nO+&{"³,!uGÈNjÑÿy³ÙVHƒØMüB—žb¦7ê£,qyæïÁ–pÄû‚ýTXÁ÷´ ¾ß©ÓÚ½'²®,̓‰cO-´-?Kï7äeÁ¹LZ\¹ã³‘YÔG›KG?5ûéÙtÂ@1(–rîRúYRþSÔ³6²…Ä*<¹Nƒiý6‰„Ð9öÍþoÿ5½bA–pC.SzÙm Š#­R¡™RÒ’UØo2RIe©hš{W¿cÜܼåTšfœͤ! 7OÑ<w
+&D”œÔ†G¿y‘)À¶^TŒJmªTX_ãnÚµaHÚÒYº J“ÂSÈ÷qÍù·à¥Žsø.ä¦9É3‰`Ó°™¤Ï d»Šd£?SOËf}ÍغŽ=^ pJÊjç
+þ„ð ›ã«„û»fÕå!xǹ¡§–]pª{u¶”R‹xž©4»g ¸Õ_Ts)x# 9Wöø_í=|ö¾uƒ`ÓˆgB/ôåF6³¢Âõøû”þõœNBmèôn£ý(¸Ü‘R¯çwú.†¤Jòˆ—¿HÝü×¢¸Œ{¼% •z$ÿ_ç(óœhEñô„¡»ÆT‰‰ü Äã9—_ÛçøÆ×+¹ÎÎTfë<©†—cÛÇ61.9ƒ¸·ÇhMK™ðôˆŽ sÍ;#P æwÆg0l–FÜ€ Y|Õpšy1bŸ‡Ýþ3zÓª2éèÌ°¿í‘eèò|ŒX¯Ò–xõ­EÁ
+-;Ø{´ìø6—í¸{Tù9¶á©9BUxçâ1‹á«ÞOì %&Œu@o~û
+B¾`àiv·[.?éä°Ø¯%iùl%)q…Ž»ßæ³åçˆ-n.¢ÁKae{A‚zÁkF=YZ‘9èF×f•óñŪ¸‹™rp²™fžÓçfOl°YÁg™.ödº¸èÛ€lÛrÑQäoéGéD›ÎHÌ Œ±v„Zò$½|^ tcPè8e4Tõ<ñ…5!탮k“bi
+©sb0ýb¹Û%—4NBbqÝùz§ßº—ÔÖ(r1_Q¦oÄñl ÜBv I’Î"Ê•d\®š¡¬×ç+o÷à/ßgmŠÛ;'f&C½N8´3P¨©þ˜Ó”èï7…ŽgëõCÉÞÿ^þzzpÚÌMK2°¯!9$˜H½Ð¨WŽïÐÔíƪ£°V²ˆ—^ Š ÇZ’P<…n”Í¥NrÃv Ô*qC%å Tv˘‹KÒœ_nÍ!$ŒÈú*Ã¥Õdc»@A%¶± ÏÌ‹9Í­þ N활ž'Å2^íÉ寡V„Õ›ÏU·’Ä
+³Ú¤ïGÒ¿àX“Ò¢LÙ)úìHÇ,¿‰íÄ í2gI´X…9ˆç„Ѓ*V¨§™š}dà|¡,P( p5SNüµ¸z`$„6Aõª½J ëÕ9ÎTNz O¼Y» ß‘ ê:{–9M—WÈk™k=W!}Î^»}:ÄûȲM‰Z„jFãnË~Äya]PÔ¦í=€
+~ž8VW¡O"u±.H0ËñÉ·,ÇØÚ †`s­à¡m™ÍüíX7~Iù4Ev)¹ÌA`ýʱðĩe8Z+¼h;žÖ¿YðÞÏ"~Ÿ<íJ¦‚/ÕþéQE]Û}3°Ëöv„¿ÓI1À•úò®1øÝ¡×FKãפh}ß UE”–zZ-%ó[[½#Ž(oCþÃýøÕSª”±÷|·Ìg}–½~îuO8PÛhÆ­L~0‘”‚Þÿâ%i~º8‘†Ž^T(ëòLÝE¤Ú8ð­³Í»ÛÉÇgB5J}‚J€ªJÆ‘É5ò¸¿„A©
+bÞ1í¢·Ú»î™fW×GD˽†´Ä«çJÇ‘î $Õȱye¿—µªZö€Ï?~«•à(C“Šf§Æ.¡…rgÑó̓Y]ÎZgb‰ bÎ=s”´3ÌÁÙ®-ä„êì«òB$¨"ÓŸðÕ$­‰xP;å(+n3“}—KÁôØRB& f¿:í›ÿ
+ ù“L’ÒÙ ’Yy@[ˆs'Û‰¢ËB"ë6ª¨ö«R³Jiý9ð¶`6-:äØ‘Ïm%DúAžˆN$ mÚÕò ‡U“­1êU¨{-Æ.à4ÿ×àÝ
+[µØͼ®r™^(À•wE0àDB|ÖñäCª§¹gô{œzK™
+Áè–{ÔŽpwÒ¹5ïV©q»¿OUD³J1­
+ó">ƒHöAëPßñàã'9cþseÃItüÎçÐÑƉÕqö]Gôꕺ$±v]€m[-‡ ÏKϼ–Q0Ñ£­’Wu†„-ܤÏè
+ãoüRêøn1Á¶²e1§ð¶ñA<ä…•^ñ
+×Ö}Y
+4«`¢!a/á[Þô€gc\;´ 4:­ÝÊñ"”7P·c(ÕAÞÇ-ŽJOAÐ¥;FÿC©;ÄŽ Ž1>¦Ù¦ K=t¿eì™™
+¼21÷è+¢rj„ËW
+òÇ›X~c¾tïSÁbp¦$-,Ç&PÙ§%æVi“À½ÞX¸Øá§pø½Œ5²:Ui®_€[ Æz cùlÂ,+¡,µå‘ÈÓ)¦ÉvÍ ý7ÑØ–ê×w«Å*§OY=|Jh# •ËIPÖ‡AûÆÓ»^ÿ~F—+(x|ê½N$}ÙËf~ivŠÔLÛüØîïþ*©«¬Á&\ÿA—ÞKã°»C‡Ãª@{é}•É'1 ¨zx| N1’‡Ó¿ÔÙØœÏ]j²–¹œ& ü]N¯n výOꊦÊ黲K Aʧ³§~4ÞŽü§º>{þ&ÊsØC¼^•ÀyÍIé$ü¡KÜ ö á¼C•¹C¶f)9å?TY{’DíüxqAf©cYÉ®9ÁLžþct”nÄ¡œiAðà™ôÎyæƒ endstream endobj 48 0 obj << /Type /Page /Parent 140 0 R /Resources 49 0 R /Contents 50 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 49 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F8 124 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 50 0 obj << /Length 4219 /Filter /FlateDecode >> stream
+¤ó[.i_SŒ]r\:ÂÖ’À̯—ýæSp"þŽÀvŽ-·¬ˆÂ -p#áãªäUsr¶#9V9³‡–ZnÜ8»Éó¤TÖŠ˜H(ZiÍ~É ‰{DfŠÏš7Û9‡ƒu¯”Î…– ˜˜)>K+šÛþyZ2Ð1RöÜ“!öúŽ?¹âòe
+}bs]𥠗¥¨‹/L97ÂóÙ¾å—Q ¡ÙûžB%tHá#L¿$¾GÞIw.0{›´ÆGÛpŽèQ"é+YÌ°WÔ™˜
+…‹å;‡>(TЪ Â'=´©d:MÄIOã¤HWË« M»ýoÃË9çž’ÐõÐr ø3Aõj–å¿_š¡a6hŠ8K<ݹ,‰v” ¯ŸéSR0æçä¡!/¯¹ïSÖ©ÂÕ~  åLn %îÞpñ¼r¨”ê†5È8ki¸ª]¯isžØ£YŠÞà­^sÍo„+ —M÷”È}RÕXàíО¼9›X¹ðäÝ…ž¬£&ÖvíâdðòáЙÚÁ—ž‘—b´0•Y\˜:btÀá»»Iµ"z%
+Š÷y
+¶ ŽyŸ8 7@›h½¬vXþì#¼_Ád>ÎÔ+½ ŠÚIع &æõ*õ~…’Ãú­BÐ:Éõ#•ý%Ê´s–Ø#PK!ï+Úò9±œO‘äÉ00Ü¡ä òà+3@ìêßÈ%‹ “šÂM‹ª˜sfÓæZ´£•‘ÇÁâ×hn
+Ì­ñhÃVëv›–2¼˜8J—
+ŒìKºg¸Sd©bŒîP|,«øƒg®º¦KٹĨC.Ü×ØŒ©Ø>ù¿lã¶gˆ7I-!»¦]µ!'M1»“ ¨ÒN‚K
+ŒµÈï² ª2‡5
+ãh¿­ÅrhMbÆ›Ï@À”õ¦ËO:ôCàpóð©Aúƒñ­ì>‰ûQŽ;xä!×ßÅOl;&9ŒÿÕ®S¾•ñ¾É eÈ`:Jü²ŠtX¥áB”Æ}±Þ)EÓš J6‰"cjª$‰N†` n•
+G-gRºäz!Ú~¬ÂÔfUd¸ó@ðcðXîÝ…égDsîÊöÀÍbŸâ‡B¬¢-PŠj#Åæ ǶŸfBí”aò£­ñüÖùVΑ>¬Î¬ú÷Ï!O·¥Á×Ú‡¡AÉe
+¤õSW×D«ÙhôÛK;àÛˆ3-3AX7x[]wV0Ý+í ü\¹™a¸
+ß;z~óÃjMÊÈ jzF¨öÍ­÷|gÊ–Vê6z°ÊªŽ!nUYßÉJ±£R ÒïÎÛÁAڭΤé:FOŠJço”òoÂÿ²KTbˉÎ8ÏsºN?Ja‡(Í óy‡®fPõ%rq³IB;%îÀ„_˜†77¹1—>OÛÔ!·÷<à:"Žå¯ÑYJlϬY* è¯Ä+'ß#e©5{o¡ç}b¾-pê
+oö̵›¹üZó¸QùZ ÄÔsæ…*–ù°:ð;:^ÎiQ¨Cñ(.T ±ø¹ôqRx4ü‹<tqÒÕz ·[!‹Œ¼{Áv;Y”FXp§c›䌎3ßN¢gEò„˜À†oi½ÐM¼Æ*QïàÃbF½2r‰ÛŸ½»dÚèM¡Å‘]Y³‡T…‚俆1ÐÆ…Ù·n¡ì~HV]_'ñ¿3Üžex Þ×ò«kÓ[¹`á{”Ü:>Ö]F[á{ö8[æ½ed÷³@Bñ 7±Èh9Qô²àͪ&*µ —O Œjƒë–ɸP0‹ÕÃñ¬Ó.¨61­%Ïà¥bZiøšjw¡á‰ç‡úG[½8 D‰ï¯ò›b™
+;qâ¾Ù^ç¹ù‚Z¦hÚÀ®lˆÅUYžŠz£¥ÃY&éU%~â_0»Õò…Í7Ð*ÈúG\¯¡Ñ/ÙHb©ëA²È’N11HÇV¨¹ƒã
+Å=Zh Ë¡ª±¾ÚsÁˆ ñÉKçç- "ÁID’Á®”×
+UÍ™ÀñáòA†ãkÁÙ¤·÷ÑA…'ŹœÏŠ
+{$“œÈ³x\?ŒQ=Öty÷Ò1 ¼KiH~¤½ú§•r@Õ$¤ÂŠÅý9Ü'‹&x; Ö_˜Yæ<ßs•™L¾†U¸éé¹´28^©¥p
+Ë»³åªŠóÃ_CÞºí„euÂìP^€O†t~íñã®_
+ÉVkr„Y *vÄ÷˜š7Ï·MEÊM?³¥;ß·,Ë["6#BiÑÊP¥ÕæÅ
+ƒc<Fï¦| R9`cMájžùÇ Ò KC5!ÜI¨í{†Ürý,Rã$w¥Oñao Ò™5Y¶e·Véµúµq„†×Øû7Ì‘"0FÔóµ¸(3+ùZ%˜œ];òrö¡,ÐóùHÕFÜ.½óç‘ø¥K K_^ž,›ÿ‚xõnþ%Õà  ìñA‰ÀXñ%ìÌrÅðtÐ(;}….p Jî‹Å)í¾êøÃ(âø…ËÝð•Ë¦Ú—×3:)1îÄî<W.+žÊÙdœ©QŠ¹~àÚSœ-`r¢®Ï@?‰ÝªpVwB;¬-©4¯-ò…ÙJÉJ7ž9¡k@[æ1:sqxS×8æ§ó4IÖÏÐ(lXüÝY…"ªf˜sTÅ&~j  àÅwX÷þr‡ÓÊó‘<6­‰sÓœNi`ýÆÝ I“‚ïu¦TPœ¹Å®rêæ0œ?‡ÙÉÔ´Zƒµ‘Ý×,LªncŠòû…hé’Ì7·[ÏxPA!G(Ø[ý Ê;Ǽ}"¨¹Œd“ÿ’ôÙó‹Á„k3"~†t«-§ºä‰ëIoñµÙIVª‰a-«Ì2 ]!6—¯‰ª–Ãðí“!êSëvJÀec)v/±jb˜¥œHPÅËrŒe-ù l÷6Pß» áznv+¯)‰`®6`þ­žÙí~’Ê ö÷x€6€FJÎì»±‚— –½ÞÇ%/¯ÖMvç# ‚dV¹K”朾 ªðôîú‚ãBèøáfÞƒ€®ã*V<*‚EW0ÌF¾d«í¦ Ÿ’vÄ"¾L‰¼¦ê'·CJþ:-T¼G¶tû‰
+µy3"³êÉï ‹Î¥
+üµÿŒ`¦Æ"O:ýÊægœ£¸MM 7=Ú´:.¶(#v‰ï–3ÌÆ•,Á¼~2¡W$§2ñë»Y´î._%vÉ!I¦¡Û˜§Þm€e,*ˆ7õRúm7&ñ…§òp„É¡QÕ¬½vÙxS°ù)p0ŽkNÕŽG`h÷ćùýjñ•¾ÇÄŒç{ªí¯0¯†ž$}™ƒ`a>'$ã˲Øõ9”š·õúLjR`Б
+¿'S›}Ðø€ºÿ`4v–¦,—ÇCNã”t3’níh׉žÁêá ϯûÿ’JøjM1pÚ¢PÉ{ìº#8' Îl‘d[/¡ö­)þp—›;Ò\âwyà
+wc@L¤L'QV_Áψë Õë5Þu@ýpjC+Wº¡Ü`@mäŒe€öUsðhQR4Ž”zÄ"¾è7Pî.ÈP, endstream endobj 51 0 obj << /Type /Page /Parent 140 0 R /Resources 52 0 R /Contents 53 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 52 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 53 0 obj << /Length 4628 /Filter /FlateDecode >> stream
+¿6ñcûºo0 ¢ï}Î÷Ò…—+“Ù‰¢WÁò ³–‡Ó¾úHS؆’ê „3õ)rÕĘ!D—5ñp{£%Cîµ3`ÍÔ›óÖ«éM’Näë\‡“0Ó†nݣƙ)ùSdŸú
+âsÖã¿Kîšÿ÷Òͧ@“ç
+‚,é3Çò'».2[Ͼ2&•÷ö‹²ÞE-åAЗ'áê¾Lð56ú¬M <™Òõ%N­@(Õ'‘~QÍ3¹°_x„?S«Ÿ|§H´áÕÉxŽ€R 9ê}tB‰n‡°%%“ü¯€or<rF®!ínGÃÜŽ#øƒ°Ù=C†W¨FqïßêCöËíh€^øéÒ%°‹ä êÒ ºŸ}‡gÆêØ>ß @l_‘å5ÝtÏ5”Å
+€PÀ†_ÿß¾4©ŠëZ +7…ÈÌ×N]—6 ·;ÐmŽ-¡ÐôŽ æË~›³a'Ó˜ž¢8­
+ÿ6¡²ÍÔoì^2.]s8_»OZ'Xœ>î²âh—h¨×¿ˆÊ³ñNÔk±ÆüfjP"ÿ7Ð=%­ž.Lvn)|vÔýÁä¹ø‚jožÑ9£fªúäîõd ¿õ™GéM˜Š÷XÕ*†Du‰ó}wËÁdKÌž¢öÜNO¶´sÌìö‡1–u-Z%Û]ìóºÑ¬JVèl€¥éB„e<#éà2„½K€j@6ÍWì ÀšªÒ} ¬ñeºUœm¯™h¿“~i².
+b—ž,ÔœÍ îzàSä!U1T+r¥õd[Rî`®–jÁ‰`Œbáw¼ÿ£þšì
+ÄaNˆ½³ætxÔ–MIÑ_aYƒ¸Ì
+˜HÏßìGõ„¦õk褉äù‘:MZ_Á…SÊ(å²lˆdÚºÅþÊUݤl•é)qíÏN3|S!/Ò_Õ2RE:aOà†q ¾IÁâÄbOš[žr¨xÊJÔÉôâ–Nš}¬Í‰ pYþJµÎû°®ÍXÊæµáèÑ;úÑiè_ÍÙò†Ž CÛ2JVgP^E ÝzwéágÔ”6
+ÓÊ ‘¬åEë
+·­Ì¡®-ÍÕÿϽ'x±äk¿‹q”úõ§ŒPS9À2¶pã²£J íPbØ.XŽ‰[æŠã‚¨[\ñ'F^ ¼Éá\LjX™4Ù3¯|1Ɖ²¶Ñ ¥[3“)¼}¼>:¿
+Çå05°/B”n…:.öB6AuÓ­ M^[Û”Žç!]á;ôÎ ÐŽÆÖufÒ õJ„OÌ!D`þö-»IkÝÈ-]¹V7g²éÖë4á&•ú.çRXœg"‰Èpét.ÜVÅÁ4âœ(;Ï5Óæp˨𛻠©iå“çµ+Yu^=Ã9S6“òåáNµ¬ÇO8Ö.#¼·w´éHsÎ3T¾&5¸sÔrŸ7ÁqxUk†(–,
++w‰ gÇ”Ú÷ÚÒ¿ÉM¹Eýš#hüJ4l¿JZC¢2i AÒÜÍA–ò…¨¸êc —Û–ûÔÄ/º…n&@ö-¨4tRfç±BUŽPµ›Ö§0v˜
+ÔSÜíÈŸ(ÞºaÓwwŸ¶Ný ›MC(i |Ã5váÜqB\Öü✕%4hNƒáIxö KtªCI
+4¼ÓÂüõj²M†˜ÛKM¨«»ì£öÓÉ­z]’a°uüaÇêË™;sVQcRÛ\D܉EÿÀ™9iQÿØeÍ hò,§äÓJ6_ w@>UpñŒ-NœÉ€~N„)Œ•Å­Á‰å0—2çÆ®’6)=ܼj€¹© ÷¡±yΓb·É.²34ëÈå ahþ•Iqåÿv³fß{‹9
+R÷úH"‰E€¥äÝ—#h„³U(')±ï.M(æfWdÑ
+üð$Â:d'>ðùPó»f¼Ô–cžÎ•nžUÐ=Ã"™þ82L
+öWl‚0ˆQtz91}ÉG¨Éòñ“MÒ5áÆ0¹£Ä®>ügº¨DS±iXÓ”):›ªÅÛ1ŧP)ÐèÙËõ#ñ»¨'`¾W¯Õ“ H0¸u€^ÏKèFúà9jÒ»|jdQÛfÌ ˆí¸)µ…ï3”4 ©ËEùaƒ…Å#C±U K4—8óC_|Sýþ i²‹”Ú¿§ÍŸ#K®¢¨É˜¸3ZŽNÆâ}Š\t–É—4½ð¢BË æúL¯êNÍê‚×u?á³dΰäßô׌KHç0[ê !lÄä@¯°e½V㈆Ý1àËài 4€
+7NðзãÌX๠åü®·¬gO¿¤¿(̪1@Â|“¥NûbWø`F½5~cñÚÿd3ÀaTåOÇìo¤ê ø°&NÃgÑ3oórw>H*Â+òr±&_ÐiþèÒ*`Ê 0¯Sð¦Ü:ÍÝ·mXo6p› \ÌH)=.7» ΙÂ33ñëÛߦä,ÊGÝ.%N<?qk_Ñ~ऩ¾Yä1#b÷ò‘ùÀ®–Ä%ù½$‚úá½È
+±n2ýräKlŽãDL¥ê=‚U“X•©ëOÅûîñÅO£™Rà\$B0Ûàb½ "¦, ‹ÉbÉñБvƪ7~6Ý\:¸#Ü"!ýÄÜbÙûTGgÚÕ¬7|‰'"@ ‰<óp§Ñ⪾ÝÏcdîôwJ+EæÏœh'XK`ÃfpØ3Ê ws®|Õ—X,6Î1=‡~I„¨T¯‚.°ðØþ>yÞsòI(9¾œIyëÔ­‚i£W e2ôõÔSÍá½8!nï·M Ñ{ãÂÐàSy3… ü(²©Œ5#Ê[BzMP˜ÞZ´¤lÝIgtè•V0“”¬`€—LÃ6Õi¹‰¸#Ý­òþiõê°Úñ³H$3Ú­šé©F¶§cBck­£æ‡sü¿ÓÖ@õ;•Ø§DFñGŠË0Ä|ðkA¾±¤N­§cuѺ ¤[,Œ}sxD}µœeÄû]J§ÕÙ~å<BZ
+„êJ¨Õ½*™méäüV’“0ºÝ@UÎ,Ê®’©Î$Ê©Y(ÿf
+z!˜PZ`…ö
+f(’=©äƒYG-¼A ôèiAµ?c³$Ž²òë×ïºÇ¯p¸´fczgbY‘5k«ÇdU”Ú©îŒjîä 5–¯¨ÁkneÞe±pvŽÿA€1Û? ]ær¤—ClFÖ?ëjƒ ý2y_mЮÏåjÛL±zóÆ—(fΰs}L™åˆí¹$Ímªý±íñÔ9í6ë݃¥€9%®´]çoOr<^¨ˆpÁyT"†ñ‹‡Ÿa]eR\äe±”IëQ}ø¬0‡F€cÖ%ö¦6e~èÓÎ-®ÆÀÐ{é0$ÙÁl€íyøŽúªLoïÅ©žB¢BÓ­ëN÷ìg–
+<´%­áˆ­®£jf Ù×]Çg‡ùîðAßM×&V¼’‚éRF$xŸÜ‘qáóœGÓÜ4áÏÝL-å±Y"´'i¥¢6ÅESAÞ&|ðÊ—£H^¨K=‘ª#i;¿{×ôæXhÃíÃè‡ËÂïI
+üf¨.™>>0Ï…Kc³`éÌÍ_Êà ×ø §Ýc†½öÁ׎&¥Ú àQ×=Å8Žv
+ŸüŸ‡”Ueoû„Á!è^Öc¥‰£hð€¡G»¢ü{|:Ì{HZQ‚i¾±k±dT©‹f¸?pà‚o½‰K‰®%Ð)Í,¢õ€kü¶íÿi¼­Ê£íê/ê$/êÔŠ¼õ¼’/ëv~ïQ78T²†òt¢mYŠBßÓ¥Q¶ºSÝý¤¢L^‡paaÒóên”ä™u-z‰ivøStÚŠ°
+*¶Cq•Ü¹?µaø#ã1ÜgÑ  §Äß Á’?º 1^Ÿ÷QVsB’âº@.‚KDºüÖ?—Tä…¥KÀ#w#A˜y}Ž¸+L+ˆ GîŸÉa³†7ß¾œ^‚œSˆ vM•®qŠÑ<ªxôK“SZ8ÂD"¹Øx½§v‰NX J‘Òyê²ûr ~ÁÉÊ”^#T½U£,½ñ èÀn¦Ð¢ÀeÅLøf/U^ãA02NbêÙq„5
+ÎÞÔ˜@…xŒç¼±‘̃§‚MÓrì±R#ZCÀÒJZqXqyÆ –/zzVÊÆ¡hUqºúiçØüPZ…Ø—’¦öMÎರGDä`$ÝÒÿäò¦€’½Æs¾øe|ï.G)™ü9ð¬Õ©ñ}ŒÓò@yy0å;ÚAáO
+g1ôKõU¤\4ÔQ É.e·C+/`×ØÞ™Wh*L¡<[ùŽ¨c–¤i .IÝXy›ë=[
+¯Ðűz0_Ñs!å±rx©%äV§Ï¥Ÿ‹5pÌ™˜¦`åuš•hì{¢‹Ð¬hˆB\—
+& CËfúqøýCý¬•âÅø<{_=‡!Ú#‚6ŸÈ“Ý8F÷‡ÿY68”1 [×já[°\Ž¿$é ø@‡æ ù7†–¡ó…þ̇–ñ@;§1õmGOª—·hÌ™‘— M¡)¿eE³*Ä®T•Ë­O'+:ñgÆ®ÈI™S×k£ ¸)…iàÄž”í3re»ÿože4yõ ô aÀpVh<´+t¸û»ÆÃÂ{ÔcÚÃ!(*KínÁ2ÌPuÓí¼!ãê1°k-ÝÛÙÈ„·á¿ÎPæL?ASÔA†$źJsã™pÒ)Ó¤ ™ã
+‡^
+ñ¥m²ˆ,`EþãÄFÚ§$Öúꤣ6éùâv¹ Sˆ;ƒ{vÀ¾ÊiªüHÔ
+²µ…ÂU¼¯fDÁP³œ/Nɨ*}¡€<²úBE‚ݘ–vê9;px’9©³t3¦p/lm5÷;K )N?5ÄAâZÓŸÌ¿†Ly0÷Ê´Qlî7Åîé
+5ÇØòè%³¢õI"‘)ŠŸ$èûŸŽÿ|kÀ´è¢ï…UL÷ýžë÷k ’$¥\Ë9W2iФïñF(±‡†iÚ*ܨ„}&YD0 ‘;ví.“ŸÇþ=JÛtÛ˜/¢3<7Yi—ßß÷ÔŽ'zç+å”D_C o¬-èù)†5øêZ#YQQ#ƒÂ
+—À81pÜt?‰‡¼ÛÅÄ?—\OL×#‹}C-"™™ŸHÆTÎŒðÝ2JR„ /yŪض8¦È;¦^{OØ¥^””ÅBFÿl–“ ì²ÕÊDž¼3©•ïmS¤‡5¬v70úç^Ü'ÖóQ!ë,øÁ¡Èõµ”Ì'M’‡ÂF+¦¥ã*ú½Z»x}©óØô¸[ΰbµ½Ïïc“W&cÏ?œcËÍx¯âœq+ÆâYáV£.íf¯_„°Ï¡™@;­µšY®gí5•lï 7šÝêÖ\¡Œ“èO˜.9fSB6xã7#,‘-Xh®ÜoZt: Ǥ÷_ÛÈö]ëÇÆ<(zZÎÿï÷IeË0ÿg£«n¥–m#Fe`ÍÛ”8NÄÜ,î™'ÚôÈ×j䲈Øƽ
+kðcgE ôXã@ëîË'ØU5Kê Pãâ„|1Vg!­Û£dÜý7mBAg‹¢Nzð Ë}@ìšÆnµ‘¯×¬?àa@²×ˆD¨”ƽbŒ•{Ü®3hb,(;4µêÞîR“…ÉÉ’TT:>sÙÛB{ÒáŒÎŽ!z±tá},Ĩ.B,îî&J|žuqY·óÓÏ”C/C<¨±x©q±ùøû*SãÙëœÓL zA¸T‘ÏQ´ Áß½;ºÇÖfs%;w›‘låSKMå²õX`+žf9*zÔÁy¤¿<ynkjáQòÛøÿ˜$Ëû9éͤÝsxFH ¹)¦ˆPDUŽØ±µ˜
+àC1!ÓËÎAÊb¥ü’]¶Sd/^À5P'S¨ù'w-ŒJùMNU*ÇÂYr™ôãz:#Þ:§@±p=äÝØෳĶcדm¡‚+º* ít˜Àþ”÷`ÈÀË]¶:~huv#î(ž,iáü&‚8§‘~³„½'¼#Ûêqõ{$iùˆ¿@¿ Lmgl#A’«ëð"ó¡uŸçYxõ”°ÏÙÇD‹~ÆO¦sÍ FáŸb' š¸AøgJ£ê;J^uŒD… ü<v‘8À†âÈÛ!|g%0># È0ˆÒ@ TÒ\c_Œý/~®ýͺÖëâ¿…p%¤Îkzë:–xíÞ£·WËàSÀ“˜ŠPŠ6›1´Â¼ýG0°ð…³ …f]mÎþ7âŽþpt@H ¼×w ­2ŒÅ xÉGKcÒ9§@š—Öµ¤Ù±Zû$ПÇgZteËCÇýeŠÞT¼NN‹è\ru7Ø‘Z`A7fno€È&–Š®QðáôÒHŠã~6ñ¿eœçm±|I5*CÓD¹Çj7(;ó}òüÚ8IH=c8 ö_UA&üÐÀ” ÍùSçc_X~<¬Ô!ª
+¯[1ùKæß1Ãò0d-ã’§l¦êšÂ\>ïAƒ¤/LÑšåZpjäjÒÅo'“kd™7¸hùc*8,•ÔkÔÓÉç瑃Ëd£w;ÍL<ìt‘0Ëm·€zÔJq– à©Ë.äÓ‡
+¶Ñ©ˆº^%b•/Aâ.˜Êë D~!^Á
+ì±X&Îß-ªÂ×à‡€ˆ
+ïtwŠ<x â~¦{„$ŸÎ7^¤u¾°µÍáçT›j-8ⲆQoÑ؇üàìmõruÔhyÄáþtàÚ½{äE!d WbÉ
+hTåEÇ’ ƒ%€Ë¯ªSÁOfm¯L`
+øu8h
+Ùþ%#J]ûú~ë=›êI®©€_fþ{P—³
++±ê‡ Œ; âú¶R€ƒÉõYŠ"¥m^2eœœâ‰=ñÆt˜Ês$Ìòs\‰i‚Ä$XÔ“xå,˜GÊžžÙO€Pt­×ÚÝÉ–*5!1þ“®Q–ùs>à>¬ðriÉ·Ñ£ÏL
+Þ!eý ÿ&H_Lx†ÄØm¾ëÐv¹‡X¢| óO®cj-‚†”"gÎdûŽÔbúnm±Ç˘:߶éÎÏ)‰¨(èÁè^Ÿ-zMOÛ›v{‡\í÷= Rš\»±Dtz‘¡€I[<wÃcM°6máÿÖÅoY5uÃOC4+Þ³«ÔsFvÁǦH–ÈÓo¨Ô¡äd¸?Se=ŠšUê”5‘ òô­7>±%ÓQ¯{ÅUëç6ê&@ÅŠá‹Ò³ !P8×Hù³Ü]˜[Q`¤Ò'A¤sb Xâ_Û"ÓˆMB¢Ó·§y‡¿L±¼è´çd몓9k¥<bšó8!F´á‚Ex¼¯9YXˆÉz»Fðe.(«ÓA¿õT²;³w:t`uRñ ŽcÁ˜þ‘}¯:9«S:C䆶eÕÍ
+ z˜*Âþ¨Äz«ŽtJ$e÷Œö´I¸±§R·‡T’ï…l“!Ê{®†}ô>ž·~N»Õ`êrÁtážñnî/§²Î„ÈÚqTÚÖ¥é¨92UaëøÊ _MÇaåÌVë¹ý,`Â:FF×  27¥¿-ÿkˆÁ”¤ZËB%Ø[ÀÃÉš× Ç{òƒ]œIu¤Aïaw³'I S«jò¨Ü’¦ÑdPttîlR¿`ç]bàÅÉfsquæ¡i×'†dT]ùÏ"Ñ‘‹û¯‰¤Ø0BB×Ð9†qóÐ
+ˆ~\LÙ›b´¯Ïb£´Ò<ì#ÔÝŠb¿0Fâ0q^3Dµ]2G”»ÌSÓÿV/|tQ©àZ¨hÈš¢ìrÏW!'í6o*snÒs¯ O·®ËTS1R^ïÕ‰@ЖŽ–Y#Ôlº÷ͳaËÉGðâvÁV&’Eo`.69 ’J*@†ÄɼƒJKD„ø˜¡¸ò§Â\4h“œß怜Ç
+ÌNÄæ€é49P±ì®}´ä/&ÜöD쳡ay̳Æù*dœÌÏ Ü™¦›‹ã8¹-Xäþ4sýÖC˾ñ[Ïòºw`V  2•?ˆ5´™Ã&•%5Jb>Êp$BxAÜxáÍJ»wAùŒOµ ÎEÚ__ˆÿ]Ë»†½2ö4ÀA̤¢¬-^dX]â0Ëwo¼ ‹¤§°pŸ11
+ô†ƒ’‡±k>ÝøW±Åßzÿ¸ÞÞ‰sÇkŽÞntsŒÀñ<ÏL {ê5nÉ:;%‹Ùlá(†³’r[zX,ÔøWq£ñE¾Ü8¼Œâk…ùºÕ²=lÐW×ô'®âÔÉàÂõ K¡0Rá?«V¨_y*QÕ«¥lâÆÙÖë€ø«J34IéOÐ2bë"ëoòOû¬V¢å¸¯<?³áÈu‚
+ÿD£éŽE}%æ.„ŒDruR2k¬ñì?øÓŽÛTKêãUÿ6æË©!rÏÐÛþÑU«¤Ä‰Øg†@ðÆø3Û Ùöo@?çɃÈâÇ'=I69þ¥'JÀãZv¦œ"iÕ€ãÚÊwV'~É®ìIŠ`Ö4iØ=D+Ê’Ù|ÕHêªÔ8;ÌÊðOÓRÂ9ù’¨m%é„0)?6YŠ˜Ü
+]ß°Ú2€™ýœ™-ò‚i&~kY—N·2ˆ#ÝOèïDžbpÒ7ÜÛuѳץ›ÆìÊø2¨6RÿâJŸ+ƒ´·þ×.f˜ÏU®èR4ZmÀÉʇ߀¸•vL¥="3|Ò$“ùÂc.¿Ð mVUK†ÿ¿–Ÿ3´Ã®ñÀ#^æ.Fl¨$Ê‚’÷æÅDU7 æï>š1ánˆãèH™/ÿÓhÁýµw¢;óáïH÷οq}¢Öô?=¯5F3ÈMWÏô§~ 9x·qèùlúl½pC߬âa®LÝóe µ-c?ÿ™X©$öØÌÆÄ3xéĽb€Å3ˆ¶†ñ®±vóçƒPÊH´=@½ž´ò•{\i3£~²ÛæzP8Áï-_ˆ¸¢ZaóF/WÔ"#Á©†¥‚?Ï͇Ê!U«f°ÈÂ4NÆÅÀ•2¾Ö©kœ'ÒÒù\ì¯ìȺU)x ­Àø =RÌ\OИ#±oœÉi8GÀèªÃIyñfIüñÎ('´™×r‹á¬à’pÀ£µç½âŸ{†îFC…šQÝ澪{•ç%Ô`+Ñ¡^'7ÆÛ'­s €&è@J†îs­¾ŽÃ»QK\µYšWlL\K¤-Ÿ™>jÍHÜýCüvÔÞ¼ê/J:
+ª¼ÙÏ[¥£@ÍËŠw=“/a¡§—3šŸYÃ÷Rº’—†.Q$ó7m%'ŸJ0¸}óD
+«ôhˆ ”‚UßÕ ¿yN|H«8n8Õè6M.]Ê2P
+³yx(=n(ò fßú­IT?x19ºŸËŒ˜a,rÜØá¦Mh…íóLò¾ÏkÆ®BwÐ×9#´O˜6‰¯ë¥¢wU`Ñú?et€"íËñÒàôˆm ¿}0Ùÿs/ É;¹Óä ;²é|·!Qc1ésó†S›Ói>‡(Ãø刑?3[Vè6 5+š2Ì݈õ>iƒ®:àqió…1Î.ÅÜ%×RãQÉŠäâdïÿ.S»×PøôgGg%1 fªÊGh5ØëU°–F— l´”*;xØ]Ø=¯þ}ÿÜš•EQFýfn®0}Éi)Cü3@÷tâèü-hëþ:B?«;]×ÁS¨8¿VàÛtP”]×ÿß,Zƒê`7D*6*ÙžÚZ:¹‡X 9™^û{Ù2¤w‰kW¹·ÏÅd^±ÈQ˜„¨;¬™v¸Ú4Ή°£œðÞ#À/ÍSGß]åÕ¥ð HÊ­H:+Ô­ùý±?h£,¿,mÃo7iVŽoûètò³Š¿‹´Âm|MÔVŸƒ¹÷zSh€öfÛ ¶î†‰OW>F%#úÌêÆ*ÐLÜÅØ ‚_t¸.±ªy1_5_nŸ‘ʵ ÀCþÀñÛAÙŽ_]†ê0ÿTLM.·q)Õxø¬¢­à_Ç…´Ý÷Hø'75ÎK³óíó!ˆ5èQ@áñ¼Mß”7ÄøÝûaI&êé^‘þÈÏÏ„è(·¯M-‡Šz!–Óo€Ã|–ȧþ[&¡d–šÂ5)‡`³5n»9¡6Ìmª,lJöÑëǸ؇lµô†‹T; ‚ƒ ü¤B¾;i°)‹ï]»´§K-«À ?ôqßê¯xÁÎÇæ Ó0–6UÃ]žü omÇ¡Z:7Çeš#{{¤Ž‰+>TGˆZ3êC¯wQ
+OIŠ~Á*ÍY‚K_Э>
+ö€q)j«NÓÜ÷…Püñ.meÒFâ
+¡jU‚§;ÕiAd7¦°Ç ybV]G5Pã7Rì„‹ì븾ˆ:…9îAø)§¥êéæPlv¢®[Ö
+ÕÛ°Éœ<^NßQòÙÉ7óò [!pE8ú AÚEpé6áß®‡ˆîô­=–Í%ÄðFs¬NÒ™vNÝ¿$¯]‚wV+ź19-œ…ÞyÔ®E“|âñ%åÓ×ú¨ªUgÅ¢†IÁû6kwy_
+ÙC¬èÌ¿Ón ›¼¼oC×1X|#øËŠ}‹Øº.{SR¦Í` ’˜aUFߺ‹œœ;fŒdóúŒ•ppLk¼}Ñ
+O]Ïÿhn[DÒ8:°Ò*[¼.}› ѳ4§
+sD‰T—àépè%×øT¦@³Vr¢[^ì;ŒIÊ‹€ú_4[Þ í𢀢v)l]ˆÙÓѦBvL¿…Ìa,i|é›ÙV LìPÚñÌ[¼ùÝŒx¶ÍçÂP».Ëý(C]A³Ü¼L?¤qA¹BjXCç‡?x»‹ž –tú¥æ!Zì`udü$¢ÄE‚JîÛà‘/udœ<_cÊk
+{Š‡ÝíX]¹Qüɽ÷%âѯ¯¤jà8št´pà0—ÓeSÂlWîª1òùôƒ2ÛIú;¤"mPëª[%é—}#òòZ n ëÌ­ká¶L^ï^gºq„¦G­ž¯¶Hí?SwsŠÀ!ƒOùè…>@uÈ» ‰Ï32¢QaÈeþ©/‡*Ч­ÝÈ6M$U,ž»PŠAؼs³Ö‚ÜR…7ö¸RÁ; ^sí2ô܉Ï$ØÝ ð®C“u@Ž`ö[qD§1TT;©ö Ù¢—¾‚¾‹·s4ûë'Ò­\._ÝK-¸dÉsþwáfÚ£¨Qzàb:OÊËõã9rü3ä×Gg1hg­žÊÏÚË/Ñ’µ$ ²K$0Ÿ!„`½’zÚ U"´­×cfW±"‰Lxp;0rÂ|÷²:Ö¬þS„a“GB0ÜÔeˆ˜‚æø7Ê~o³.˜Õ¸¬Âšp¶7z}•<½yó~no¯ÒÞˆ„"Ù)j¶2B’ óÿèðÇ·æ=ï¬Óªó)ß±÷[‹/Ͳ³È)s¯‚rEå0—EÉ]YîUxÂ"+ïV<ÏÍ úrßV;j†LÒH‘t­t˜ÜbË1~éèóFR`‹Â¬ŸÞ<z‘‹GAÒνòÿ­P\✸!è>Òt}Rù¬´2㟘… ‡‘+}Ñ첺±ÃÎü—14@u¯Æ "Éâž%£ß&!uë¥Æàn°¥žÎ ËÓŸ*ÙV§ÂGY?‚œ²ßÄöN})Eê›­ ÊákJS)ö™+6m]‡1Ü.îj4ÌÓ05 ÚËJHÛ¾z>}ù…®=†ÓÛÙ„æá=út !ráe®.O:ÐÕV%ßóÕy?þQÆ÷%°D‹ý“Xëͧ¨@ü-Š+hs»ôÜŠï“©7Ærk‚ï(_šG+ïù°\·*à°-ð7éq蔲C¿J
+š‘…P*á¹ÎöJŠ4nŒ/êjMuìZ¹õ¨ Ø$g‡©A$”}GE=/š†zÆP™ ¹mÝ ¶Í¤%îa;a¹Ê¦¼Îç`µ¬”$÷q‚EÔ õÖJ;nE/ <qÚ€–×õ;òÖ@NÂ2ùL@E^üØiتPWå›&Å”ëÇÓè–•ÉÞF8BÑqc¬©kJpW`á?‡C
+!êµ9 ¬/ ×bàe£Í{` A¿ÀˆAð_ÑPêM
+UÃI±ô£ý j{؉EÉê-¥+Éém$ üJ7)°¡Eç¦èÏN-#úâ
+ªË=ç
+Ü$Ès$Üüª¹z:­8ß,Ö 6piÌÏɺW©yÜÿ¼çN(–¿CàšcŽô—ØN.§jŸsTøPŠÉ.¯ þâ ÊqrùO(|H2Ei«
+ qÏB? /Þz/>ƒåÂÓ˜6ËY–c6Û¨gãK sYÍÍÁÀ\™‹ˆL÷]
+íÔ!ŠqZÒxÅÍê‚kýÙk¡¯ãPÞ\|fìC¡ÇÆ¢º'@É).ú ¥ílaêy¨ò¼ü~Ú˳1Ö;©*(ó&yÉ0"CØAì1Ë#Ñ…ù#‹xÛ³RPi—¾@ØS"Zò¬WnZÿ˜S c,6ö"ÿ;íq6 šüg÷d¶%6aÈ2é ÙV_ïœååØÊÍŒ/m™´ Øù®Ïà$¿k¢NÝŸQ½£áPjj5‰åøž>¥â-1—D74
+Xõ¸p!¾E^ç~Ó7FÂüw±Ëk
+P´i"Þ„WªÀ¯+¬ãep)å
+¿\÷œÝØ–? \}“
+>'‡­êÂÔÚ*R£Ë¼¿éõ­>ìæBsöQþûP&õç4b’õ†o6HL¨ÿÀ-†ç‘}Nqþ[ilLºÕZÀ5yÓ½ÂûÈSÜäX
+ÅR|•ÅÆ3cñ©¨&$Z©™q IÖœ­ÇÀPß{Ê‚òw?Ë,º‚–ðÂJ
+®Æ¹ ó|ºÄ"´éJµÀΰµ@Îõeˆ:UEºíÇ×3ü?K8Õô~UUûqº¤xƒái^ Û6ÈgÔÚwKב’/Þ4ÒH cèSÆŒ“´Ç g&¡E“]K‘M{Àsi”£÷»àhc‰eï Èä©ÿ8UèíR•É ›ôýY\yC¡YÌv”†êìWQ³Ïî endstream endobj 63 0 obj << /Type /Page /Parent 141 0 R /Resources 64 0 R /Contents 65 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 64 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F9 125 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 65 0 obj << /Length 3374 /Filter /FlateDecode >> stream
+`¤ÏŒûØ©¦³Ø')à@^â°4«
+7•—rÍÏQ«*D­é;Ï×jö”t¢€éˆ‰ñ.Sm?ëöˆyÔÓõN¾Ð؈áÞbm7&‘½ CßíuO¿ƒg)Ä:}—TžÁK9PƒÀé·¨E›ˆr *ÆÐO£?iŸ’à„8Mq+~ºf1D¨Bvv©Ò­ ¨õ ¹=0ŸÃ3Üùͦ evÐá¢üÛ×bÖ‚¹w3ÎP¤˜]ŠµÊÝõÖÃùJZ_k“EïûWâ¦TÊTiq ÞnNCÝ+$h|Ý\®ÞîÆIä¤olð Àƒª¿)»æÓD½ù p¼“°[È%ëÎ;«©3‘XÅô…•¢@É›9ÿe¤Nhè”%󱞎‹²ÞDxÖ>Ç"°æ‡oåˆ*
+?+@áâI“æ]óÖ¾Îâd ó¤yA*ÅAÁ‰£@‹ë<ÿ¶ºu¼¿¹^$Æ:O¢’Ñm¤ÍÁE ~ ò¦~ÎPÄtÃ×ð%{·s°\?l|×× ÕC*ÝÖÏzOU5Ò¾þVÉçÛÿº=âJ5y2®Ux)>!ò´š&ål{{ärzÞý|*Л¡N‘¾àá uýOùŒ¶¬½épË
+é^¤âô À
+0„U•óè8oô³’˜€éôU_áq†PX€¾0Ù·½Z¢i}ƒÏϪ7tœò,‡&t³ƒp½ìˆ‰67¾×€–LàÊ‹÷ò”ŸyÓ [푼žÊ|óÚé¯H *'XXa–øæ¥åZ5›Ó ÀÖì=ë.ÜÁ¥¥.Î’Ô©îw‡òM=Cáò“]šåi—D¾<|Á½  \ ðÞ²èìÞ7 ˆJ¿…'ï‘-,¤Žðƒ¹‰Y^üI­*i­‹)ä©]`ÑD‹x:íýÑv{µ) ±HÃ#ˆìv®)¨ð«PÇ®@IOg•t…•±=“‘õ®¶Ú®³¿Ö~ÛßE7YWyt6õÃÄ QžóämÒßÈ3mùô
+±-)nÝÈuôK[ËPx•‚u<x'ÛTð Ñþþ·²·Û…öœ}ȾÎTÊÀˆ¸KʈFûæjņ[ûyT¢A,Wä&5˜95:QŒ= §R¿œ—„„ø}õËrt³ós¥Ÿf%÷“,òfE±^>Y¾lýtØ@kÖ¡ØŠÄ°ýa‚ohh½é:'êÿÎ&“ÿ)ÑLGµ4Ѻܜەéwª¯—Àçü¶Î_ôÏ>¦Ð“UÎ3cÐÓ¼ÇX·#³ÝVÑ îò ÷g­¹I`¯=`!é/jXĸ_C*‹Ý‹¼§Ôäx¬Ùp-³-þ<Æ;ôƒ`çé“¡KÜÉê¾Gqr^((!¶ÒP]‘›ÚÇ«Ý°Ì󛞡Ž=“ŒÉJ°ïl/9"i. Ò
+¬ÛÉÆçnïÑ`t¢ÌþÔ@àèâxÍFÚº øÑ1š ¦ÓìÍÌIÙæ’º‰‚Þµ}|w>)iØo¹ÓkÙ1+¢æã×~yžËJ$1$j6
+‘ÙßÄd&ÐÝLŒ ±;Ô°~¨†`§@¢éäbB8b.*'þZ”ÊÝãôÃ’uG³SLf~B´ÄÀK 'bºV)! ô¢ÿ²DüVSùDþDÂõúVi³( ÂèÉ Qqÿñ Cr*àaåR7.†~Ú5·1áx¹±”–º9Y;“ר§:ÿUl½˜¬¯°~81èã¶Èâ3˺2‚TIKY„“´-Œf×Ë#wo­À{Ë©%é µc½kyçÆ­X”ŸA_žÎš¬fYšh£ ÖLªc|‡7^Üh³ò˸O¥øf"a› ‡µR¢Lç‘>X‰÷ÕüRRbjÈ®PºìHs;y'Ó¨yöQX¶~ù+ù}‹úlü³Èáwëâþçìc T¯l6ɨ¹§Ê;Ç=eàQ:ød
+ÒvLº¯@M³Ä­&áÆÇî¦/µ…ÐϨ„k”iÊu`85?D$£Aó$Ü
+ò{â6/˜ q•SÆ=BÞ¸}{pƒã†™ºó‡psÔ(‹¤bÌ;\ÕGã÷Ì›îç¾v “d­@ÌìKTúÊR&™­‘™®ÁLtØC™˜š¸’ …F[45heèñ˜*µwþ¦>¶zDUpýÓyPݘ?me§®ƒl@YضÖ’wÒ2áÛî)qcM”9¬<jÔø×·ÖÏ}Ï1]b@|
+1§wOëNßÒÑÀŸ€Ùu—^Eæä[γ¤@ôœˆò÷«”=õ¯ÂCM˜j©’6J•ÒuË_ÜfBÝÆÆ{hÿ@;ªÕœ ½4NùøTž@ÁCªÊ"ÓëÒéØâ˜Tl²Íïtˆ‘ypYî›Ì0×.ýJ§e‹—¥€ÿÙD9auZØÞÚttî± ¾*Äáç^h,ѤøÉÝ3Üç¥u¤üóW¼å#BÚ:³‹Ë®ÝÚ”eÿdRHã¥Sª Nç_ïu…Ë÷ãÞÜDwz‚‘9^ž £Zû•GqUV/‹=ç;z%ŒaîÛêŸãzšUzÝRôO’`ÑîpSÈÁÒeÎ_ñûª@Ç+ýk‹  ™'ó¥X¼X Çe%~XB1O™w,Ôí8¯]ë|SÃC|ëÞ;¿Ö ^Êhù¿’Ñ#xF&ÝÔåöÕb%)ó÷×öا; »ï8›ÖÝ°rÆåÙ¸ng²[¬ð—Ų‡¨wØCrTzónJCü÷f¬Š"C ¯ª¹¤ÛÙš0Ø/–b~ÃøÆ
+B¥Ì pE
+¿&Á›ÉõH6Î û¯pÕü:†Ç¨3j]¬ˆ99‚q†æ•µoɪfŒžúgŠAp²ðê›û®ò4F !A-¿œWÔ˧æAŽöÜ£ú~YVMž¡“½ˆ£ÒJyõ}³†xE íÔáuåããC ¥I8¯te1T%;™7IœŸÁöEúûßs86ÐæujÍÍÞýz»Iã8„g±±+³n)@ë¿JJÎ~Ô(å¾×™Ó ƒT¨t n¤AÅ-KknWRjà5 ‡4%ýY­¨‚ec‡4)ò,שÑcÍ.Î+CÁЫ–â`«¼ÛÖSç‘tëv„g™¬®Y..K>ÓãÇ¥Ý
+òvøP¢ÚGêá»K*Iè`9pñÙX/þŸ´èÝœJ,¡
+bŠ_¬%¤Lwhc=ö,"¡´ ©ú1ã¦Z)͘¿N9#,.ý‚›Õ+W¼ðç“ö{Npi’´(y÷öttDPCA,Œ3{²Éî²'ì’ õ®'ùáþ¾u1½Éå©—Vl4Æ€ŸíÒûæ «²sÑôéÒ´ü<ýùE•Ñ5}Nõ:-±ÂãMïûˆ¢\5Fj@ç.™£\±WÙ :§%g¸‘hÈ)uK:š“¥à9ê
+ö´ŒdwÕÜE})Ñ-P¯ÿoùÖÔÄÄ>`*°ÐÃKZ¸(‹ß®$”½½3¨Ëj¢=¹#“A=}@<w)"8Ö(aH4·z\Ã*®÷^ÿ\ÌYDõæûq†?,0¨$%g
+wd°àw¯L–¿ˆSÚ›îªï41ä²/é‰CH­‹ð|
+7 endstream endobj 66 0 obj << /Type /Page /Parent 141 0 R /Resources 67 0 R /Contents 68 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 67 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F9 125 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 68 0 obj << /Length 4906 /Filter /FlateDecode >> stream
+ØÐK ¹2$ƒ^>bÙë$/H`vv7E'º5pÒï¯_ +uðСa2ÐîÄmv
+‹Çõx15Hîm\]j‚^Wcê_@¿حƒâ[àr#4ºÖî(_ÖÑ>²ùÐiD sbÕþ—çªõMXy“ðM
+ßhW`ÙæÆjyqᇥ¶Åeö €muÑPŽ.òÒmGéDa{ÆUæMçC)`é~­þ³6^h”B„gýÔë‘–ÞÍ[]°L¶ë9³XA ÚJÜî+~®œ?9ã\¯M…÷~|È>Šá_Eh|ÝàÜÿCb «Ø~ÓUTs@¦½õR(ºŠö©›Üã?#^ÒÉ(
+öôÉþ/î51|>+V<¸`3§'Ý—ñ¶¢°Ì!ûûž[I&S[R;
+BÂS§*&™õÓãŸëïN‚Ê_LZIPBlçîy¶wæH
+më¯ug5¬þùýY‹Aö”Q×[:
+°oá— ·dô‘Í”2ë,­Õ
+ 62ß^(²“{iÀÍ 3ú=&y©Û ªuS?Et8Of\vsG°ŒÀj“b@ÝBÙNhöînWÚ©(p'í´‹€íú„<n³%ËM®TéŸrÌ
+E7/På6ƒ'ß9æ ‡&/µà_-» (.±–Åi&­7ÂIÍÄ}” ²i,j4'" wDÚ­’x­ÌJªš–ðü h
+Uí‡@ïrWºú§ß
+ÀßÙ~P“ä z÷ ¬C<íu¾JÞCŠ¯ú ˆsQŽ›±]è?›¿w %ep¡¾†øá*ä¦Å>%)z[;?xÌÈàov­û¢íõ%õÖdx¡èÛgï8H®fÂ^±s2‰~·¾Ø¥ˆ`ZÀ-²¼7;T3%Q¬X¨É)ù%Zs†ÝBK(ak—LRœ~±Â|ÐUQD8“Ë‘jGºóOŽÉ]QãÙ«%-üQ­–ŠÌ¦¤ßÀ£äæ\½Í7VÃ0Ðç—=Î]Hnÿ›QuiÁö-þmºOŽe(þD¬*Š•HãîÐ,ÀVMËP®ÑÇ—à ôÒG~š|׈¤ }ÛJ£ûÏ ¤œ9ÏX:±uЀlº›ÞZÃ"ÖäátB{›tï6$0Qà‘ ©–$³b÷"©JÎê~øS¤E9wæÜØI{ñ-ïFñaÒÝÂ4·Õå
+Êe‹…#ųláCfðJy¾3nq‰aé×¾su§rÁP“¹mÅXnÿ­à‚Å–`w¥°E -gé‰ÀÅ/`3ûŠtâêôÑÍ©ëÕq!·¿­Â¹<êS ¾P¶lÍ”6`^ÏJS„•õ’9µÔø5LÄA4 ËZÞͽÅí¾X0ÿ¢7O4kòa™;—uêŸq£%AÚ®—hYò ÄË~y¸…Z
+'f£Ì:I݈xD1Úß—£7ùÿó¯d+åÆå|DÔ1}øþð[™ûq`í¶'=³Žñçh€½/ò¸Ð ”ûLOËE̬yüÀxúëÆ£ºï:œÞo]?4Kÿ8Û 2h‰•ñQ.åuª”)ÞLÛT˜ 85»ˆ‰Ã qé&ñæ4*#‹È<Ñ 8û´‘<9Ph8Ýœ3{dVªyBZl¢–ôÔGF$¯ ÂPó†2(ËÈ'DÅ”›«z¨c4ªC–«ÁO÷¦«g=™»äÆ¿•¹+7rŽ¦Í_þ“k¥`¸Qå}ÛCÆA™.OM®ç°ÿÒµb„$ñ™§FŸ‹óüÎ_mJ‡žf‡¶ûw1ö[E”a¨Þ;óÉCnw°wSùµ@œªãìW|ƒ?Œ£è@Ùo$= ërN¾™@z“–<à&3eC)¢ÛÐÈ—ã¥æ?æ€n磄oÁ‡BH‡ûà®H›}-P
+«ÈÔåÐúÕI Y¾x’dlMç¢*¾÷±»ñ‡ËÔ8öüë)EA=\ 2<ñæùÆ‘ uú=‹Î6jÁ©dÂ…ãHj,’8†?͵Šo+çÊgpÊ>Âg wk5Ûé3ò½…ÕÃu,lï?§á©«òšü›sp¹É>ÑÕî\]Nv
+ïY 1V¼p§ÿ$ >qù&2¼ô“
+‹TÝÁµÄé wŒ·
+Ø*z|†`ÐÝËbÔRk}×¼ÜSêû7óžL`‚ž£\Ž8Ti îÚO¿½þO.^\5ŠÜµ®¬WÌ4õÉ\[g™¾Ÿ­7Q×WC‰ÆäÁV—ç½­ßR¿`ÂGœâÉ·J-Jp¼úàXtˆõëÊ»à ){ªäZEUžNøõ¾¹‘–¨Œ¢Ž—j£¥èÀ0ÝúA—œöYf ¢M!€r¦ë—¸Ñ×±VÌ –€sѱߔ"(ãÞ÷‘ê„j/þ6›­Î}ë ¤¢H-%ž-ËâžêòyyäÉÍUtœë!YãT±k¾Ësé|ì ’ Xòª"=£QCKUèªksŠ$)€ãÛ”õ@üc+®Â!ÅliWGüç©AÝ‹ãîOVÂÃZzÄ%+xåžLF âªØ_ÀŒà€,[ë„L)E'õº±Gò\dªâ)‰gLíí‰îÉo
+äý5P1ç“òùQ‹’pcä'*t‡‚<n~§"ÈÀ@! 9íGëö´üŠ:âäŠÀ·Æ.7 ³‚ÛØÙ>^»nl÷M¬³óäo9X_m6ŽÃ k÷À&W{dÏ“˜Ù³Ÿÿæn¥Q¥¯
+迹æå®\ZþpzÎ=È~¢YGÄéUT¾pÛOÛ×+5ʯ™•zÔmº?ë†ã'DÓÁ±øê2i(ª~o¬ëálà˜Rhô| $ä]¾^ÕƬ$ZóÅ0 sµPN§¸+ÈKÑrÞL¦ÆуsÓ©µÔéÔ}èoíÆŒÔ-oóÓá¸Mâ'M‚¯s[¤Uά΢œ¢3†QîY#›ƒ‹µ•¸‰vP9ù³n î óÖøØ^:3“¤£p1á®=­ /-$½?©šRÞþÐN!pmåÎ)áî7æ%î?]"o˜ñá[ÑnF5û!ägy([Æ…’=ß?.öñãK í{†í2É@”Þ³ðD/
+ø]@^z£å@y¥¹)V»Œ@ôý›—1úž6®Ùù¦’óÏ*sŒ•
+1>‹*j؆>5<™&ÉóžÉ|ÛÃýï£0\³„g<9+Qº™óXºŠ›€Ç覙?±³ÈÿQEÌ™©zIϨ€ Wá?…¹ÕÇy¢ëóÍc¤@|£Jvó!°¬qÄZ›3²†ö¾Å‹Gy!ˆC÷êË}èÒRµÃ¹™<õ&åëéÈLOaà°äˆµ¿¹«›òA—!_x‡ˆ?°¸Q\´Íæ/ H‡Þ©Úæ $ã#ë‘l.iNæ=uÂ×R2rˆ_´èªT6€Î04@VèÚ³'^¨çæ²¢âË%Ë:G–J=ÊGTc»Ür±¾˜íÀ Y“ôáo‹GUƒ°x]¥Àù„¦¤š1$ÌÜóè. ¦ Ë<"yFiÛ¾öCÿI"#†H ŒµPµfî1ÙMß.„ ΄§•Ö¿‚=fQUc­}ôx—ˆÄ–ì°#€z&?m‡Ñ¥8mØ-Yïëï¬ú¿¸Y5 ±WÅÀ‚=/ÁÖE<¢ýiÀ§z/þ"ùÙ7žÑÑL‘ƒmPßwçH?LËÿÍ¸Ý ?^}VE3¯w£œgN´Ä(»UêGà´?¸˜Ë%Š2—PöÚ–­ý[ëBË<ÑWŠglr¥@šÑ£¦úSÄE9ö`NÑ%¯õKèÁRÞéÁÑgH1›OÐâs²x³™—õlN¼¦æBP1ÅÄž ,‡hPŠs§6.•‡{‡†Zz<|QAÈûAƒªdx
+m)N»®ñš\
+óÚU{£ƒÊ~rãÜte BûL.ÏO®j±X¹Ô¤=hˆ*©ŸJ#,Ùyõ³„k×I Q«·Ya[õ€Wu¾f<O]¤2~! q€hÄ »s© ËÞ=š%[Nu¸Lbs6~ወ
+×gBV‚\äߺò½¡yŽDü3h&÷$æ°ÉÒ}†â”ö¸²¸ZU?ϘáÆ
+ŒR+¾/Ã>R”פ1ùpjïîÔã…°X='ÌÀiWlŸ}nɘ,§€ì¶,ý1i±­}ùëTl£;–Ïq±æoÀ
+'„z‹je˱5Ú*ð¨²Hº§pR'/.üæôoµ£=ÌâCZz|uÊâ ž5©âÍ‹¾UšTÛ«c:MÓF2KK¡•zE4N™Ÿ!n²{+ß&P0‚¨h*0íi?KÌ… ¼ä«r² ˆ\uŽ[R¬¡O’¶J2-Ë0PŸ$¢×Ûjdi\ªi»šˆìÓ›
+ŸÒ@½Nœ?Ó ɤ“÷__­éîk0î\ØÈkµ”aèu0ø`’E{îÜ­¯o«súÄ¥4­Îmw½ª'w5<#<ñ©#b§:Ùα÷’ß6Îó3×F:Ö  K0ÇÏ ·qX-3Æy¼² hð›Á:»È¹Ž/Ñ j[êÙëÚˆ°/´µh`!v ¾_ˆÁA(ª$6†  `^“ƒçìÎ×v6J¾ÊÏy­›#
+²D ¬t Q'AkS¶—[§¦£ÖhŸ@Ž^çÔ|'¾µ•,$iÌíÜŠG‹N›Ä!-uí ø+ zêÍgñz?Rfå;©¹õÜ*¹jQ‘³ %wë#G‹/i ¦sÊ\}édVÚ¶lòl]wyT÷Ág²ä·Âð ,± 5nÆ»_má¹U2uLO…ü¸™EÁðah!Õ!Aû8΢Ps„ «^Õ)\¬Ü_ÔRHTŽße—‹sEƒ¡ÈÂËMžuéÛµwK¥k»ù]`[3`‚Y`.€DêbcÁz“´·E`€ù¼ÛâlŠ)“çw3¼=`¢ŽÂDʲ,rCÔ+1Që±¹K ÅÿtØåøC†ðÓëýP6»yD!WšÙ"Î’H'œ Ìªš/ Püel~º°9â*«—6qÜ@Û"¦Â%ì endstream endobj 69 0 obj << /Type /Page /Parent 141 0 R /Resources 70 0 R /Contents 71 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 70 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F10 126 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 71 0 obj << /Length 4294 /Filter /FlateDecode >> stream
+N}ÇØ‘º»Wßly½,/¿à›¸·š:UJÜ­Ø…ø•NLÿo û7oIѾ©¬eV++õ×ù®9¼mÊðH„BÆf¤qx¹é”÷[®çCýÊPa÷Õå[Kº9~e.·:Wó£5¹T,
+i(#Ri>!3Åå>‰ìºÂW©ˆ¯ rŒÊعaú£O:à v>eŽg6lü@/ôªµß<NF¶Ù†ÏTr®3ø“´\Ä£DݽφBíÀ €ÍŸ›!h¤0øT6pèù–¬ MI2ú÷=ÚØ1,ÜMÞX¼AŸê
+®ašAB,{é£O+liÝAY€NŸû%ˆéŠ‹!ÖÔ7oxÌ õ>LƒS_ÞBÌÈó@<¯> ø”!-ˆéÜY J
+ÖÊÜ«K-Õ'ቊú4mâiûû\‹W"ty‹àsP+š÷¦Êß_ÉR/¦Ì~¸x`dÁU¾ûîºB‘H¯È[ù:Îß2ƒÊ²Ï–¨‹ü™¡³WŠmèB?ïm˜;›ô¬ëÍÙB\Ô÷”
+#¼ l½ Ò!SéîWÌD]„6–i4êÐÖ®O\È¡+£Æ» n¨LÒ·l.º®ÅS–_wRØð¼z²ŒgÁ¿œñï õÍqL×ò½¸:L.fPò~ûûsÁx¡mf(ÎMÎ#Wåî»M™Uÿ"*;Ñ¢c_5ÕÁjÚ…Í—y4¦8ü LEÊ÷:XÒùn]Þç¤Ê¡”’æÇ­†™ž9¤xzÛLÄi/‘¼:ŠRÔþñèñÌêäÝBŒÒâ°˜Ä&Û™ïXЮ>Â5!¯Á ½¥ _™9ÉT¯ÙnO9ý dŠÓ…gA
+@wÇ3íj3Âä׌wôKñ4w pzí,}©Š ôÚ6<¶Ê0œÄ•çG-srÅÇPuâRG@ù$6¦´d·Z+ÿ
+”: ‡ø–sΦø“ Ø3EÍ¡ñkpSébB¼ñÂeßá`i;‘e- iIl~wKƼºðÊìêÔ×Ö&¶Î¦(Ãò¿°¸‰ÔDÛÚ}·fÙœ,pf”,O²hDL7¥%±EMAîÉöN¯2Þåܸüª•[ÉïW‡¨;¿u:G³|"ÿ¬ôëž„[‹†pÿ²eíã•äª÷"ýéÖ7I‘Ÿ«† ˜
+î)õR3ÿZ[Ö‡Õ×E˜œÐk­2[ÊIk•GÅë¿ì~kwW)í±ï4láù×Ê9<ð’3*óTÜçQN^ÒÛs 8Ñ,[ÿú`Ö þpOðöŽnåDViüå SRVÚ÷íÁv%Ò5ÜýŠAŽ ì…“§àYrˆü
+&j»7?MœQÆÉ«“ëÊ™,JB^{çWs•á)õ¤Œ«ùêí =?Í0Ìû²k^²ðן4 MêrÝ5€€`À_ ‘fiÆ¥ØÓë(À'_úfHÖ`¸­G‚åÍQž¬¿!^ÎVŽ~í¬ÇÛHN«Áá¸yÒÕÜ91¡~óMîèb
+Ÿ4àXþ™W¢\ Ì‚¤º#'£Ø¬“þ,XÑÆò[˜©=“œŠÌ ·ã¼þ#|”))™ÖxAqƒì?j»Ú›@lÄ'Ö*·ãG‡á³:©ú:1îx²
+²<•5WädZu4Ù<‚[¯ìC4 àOUEÅ]Á[7PM:ÔÛ˜4
+Þ‡3é°^2[ÚâÑ 4PØ#Þè ÷4ગ.1tcŒ aòÌAª>à¢2Œ”R­a.%YS©¿í‡„t†Ä›Œ®“'iº ¥;ÉSjµbØ5IÝ[òT´«åW;y®Ê¨i†'õX‰Ñ»—› Ä7_¨À&ß Ì™`§^€ÛðL§Æ±L?Ö8šáô‰ †„ÉYå0‡ãª(sö‚qŠmˆ¼câÆ¥ð½•ÍÁgOÌäÅj@ïíÓu·\&&f 2ˆÌ/ëßûMøùü.½cc ºk†R˜…ᥩn­9¥Ù÷¾Ê%\4UVy0âP*§Åƒºlƒ`¶(Hlád‚%Õ‰xßkÇÑB$ÜÛˆ¶àÎ…âYÞiñ˜
+þŽÑó§ à8 ±€¾hS 0œê–ß‘ëîŠ9w{ŒO¤Œ½xq ÐK«)ô(âhŸ“%"L…¸k—Ž'âÍ‹«å,GÊ­ÔÛ„›ãDÙ„ðk˨ӡµ<‡µºýÍ‘9ÎÅž
+UΙªPÜÜ+¦ïê!øÀÞ‚™dÔoœTÜûžoMM~&oSíï;úI(û¢óÒ`Ǩ1ynN׆Áê ðû åãÒÆ‹ÉýIHÏ¥ýXƒv§­RIT~û‚¨"ÁéÂ#tTÙNõîkÉZãRNΫ“í¯ªÚÇWˆé~¿û/Ô¢Å/ÐhtR{F`ùòYb”T¥!6 qMd"çma¢’cO/ò9i±Žïʺ¯pY”© Чã,ÏL®Òo'‡û&S“žÿá_=7¨ƒ?­ "t†!òÓYÐyay¶Òœñ‰œ9]F§ú¼FDòrš×ëOiø
+w±´Ç´©¡äɨþåÀ”IÿS8E³hV™üßÕ²>›˜îÀè °¯¡AÓZË°ÐÝØ1ÕØ ÉI> (T!–F«-µC‚yÌ+ÍØ(¯Ù9¥Ø.7.˜ý|2®ôG=“•nô(!ôQb8ESÏ»|ZæøŠSq.f®Œe"’ª—øxÍÖǃ¯ÁV,Η 2¬t ×qà“8kƒ)
+ô÷žÌK_’ ÃüÚµW?±CvùYÉ0Ñ PCeÕý¶ú—Ha†Û·Ñ
+ä;èCvÀϵ™ìQÄøêß y¯öàožø™(õR„ð!Ž•5Yé¦zfÆU³È†_Ì>^‘Î
+9¸Ôbüh|ƒ\é2ï‚›¡»½géçõY¹U63lÈUE i¨f„YîÏÆeórö³‹ã&+Ñ7Ëò£mS/ endstream endobj 72 0 obj << /Type /Page /Parent 141 0 R /Resources 73 0 R /Contents 74 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 73 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 74 0 obj << /Length 4999 /Filter /FlateDecode >> stream
+MkÙ. ¤©&1Qhc¸è%-ªÏåbQ’
+FiinNÅó§HÝïfy¾{²_:ÞIkBPo‰.“·ý„z(yü:OåX¸ß£•Xm@×J8
+U
+vŸÒ¦±Q>}:i‚œtÃ8€–WÝÏ"§é¡W¡anï U`erÁj©U˜T`sÿéƒ
+­“_W‹Ž·¥ÅåOAoÿÐG¥lä&Ë mF«…‚‹›š7.ô+?KrϨôNk ƒµ;ˆ AΖ|Ö«5?]”1¥"Õ'ïuˆil%ì|ðº÷·¶ÜS¤þï:°õ’$ùï:¶ç‹4Á…ÎŽ<3—L.òתöT ¼P%(úr¶HD—Î~)›jÖ€²y~ù‡PÄ$â·Öêl)€Ã1$—“ïæi¯Ýê<õÂœòÅ;;l™à× ±L;æQúOÌrQü^#Êòst¥¯Ýv±ìTGg\âg‘lêI0È<ÒÌË ‹üèÈ;- å{Úi0”é¾y‘¾\“T™6”Önªe^uºqó€b ý7fîêÄsór}•)¯Æmlÿ–|Æ.¨±P®Â½qj1eB;A0l¶&„›6£Wâdñ ‰6S8M=Q¿!Ûªþÿül…î ÐAt [ÅTù y¶ÐOÝØÙxãjmò O°ÇËT`vȉÝC„w´m6æ)gdwäÄ\¢çÒvÁ fŠ‹š8èv凮E%•BØig„»o›òß~€v¶•´ZUÈÇ]^¼VF:[]ùoñù8+Û’èü‰*BÓA
+ö„<´žÔåuÏÇ,šÒ`¢»b]Š°ìKA’àA¡Ø=÷>œtª=CŸþ: &jÈ8_߇¹TîjpbbôômL[³( ý dO%¼À6úÕáäßt%uȽ둜ÇíÊ®ªnvŽ=D#àö£5èÓ|,ÌÍÉéíÏÐßuÄÜ1ÞI‡Í06¡¤Qêp>*? y
+øêû…7x;¬h•ÁN‚ ù¥¡±«¯…'CÌ+Iï&ÚÛ¦»üÝü F´u‰õú9ÝÙ‹MÌ¥:îµ*øHK
+>ë3è.vˆplêX&×ésËz#ŸJ÷ßyí¯ÆâŠMXöÖ„ÇBáJ[
+*uO4ÜRyxÿ€P Î±ª™QÜÁFI@¸ ÊÓ3ZúU¸
+yæ%иˆ¦0P:Þ©¾CÍØŸ$àYÿ¹ú‚s÷ðÌ<‹ (%mPYµöÓŒVM¤X‚Ñ$¢´cñòÛŽôQ,YÇ:Ô™€¿ÔbzœÝ`—.ÜŽ¦s½i H«*PôdÔkðœ©)OÔ×»³‰µØI¯¾:Sƃ:?Ü“W6ulí¸JcóسÜK"ÀHvR&yGÿ$f"†yZ6B,WK{«Ðâ2ëôrSDÇ?;}ª€óªsENʈðØúȵMÀ¢Ö69)¤
+ñEûê‰à}%û߃õ Õe`ð`Ä¡S€¨ûØ Aúû<f6³×K.´†KÒå‘׶Œîä)»ºFùN/ úŠ”ÑX!¦~>ߤñ²;öø´žˆÝ
+
+Z'®VÏB¬PÇ?WŠýp ÷IÍÒž%Ì“ƒuŒZD×yÐeN]z D†Ûj°™”R€áJùreªD.Î{e@om
+±¼O9¡å%t’U2ÅK£î÷:Í”™F.TíÇRP­¢`Ï%)³2¹RÓ_׃- 0 Ãæ9Týó¼mð¼Öà|Ö®« åç0ÄŠã~ÔD‡C`Ä8FršÛÌ–“Ø}íäaƒ>C‰³õ1¿#Þâ(pc7”ÖÇúŠéØë†F¦¸ ÄZR£SÌËÕd“s¬w -–˜Ùv8¾ á4;õÚ ÊG;¢’jWhÃZI¾ìßدÁ5Κr°ëhäF-¼ ÷ñLÜ
+KÃøw¿yuO!ß–q·ÍÓÜ;›¦œwÑTIæ¬\2DÀ}96êë\inÜeþp'í(
+ yn+c̹FØÅ©6š…sLTíI
+ ˜lÛ*G¸ylYóœòo–¹ß<¦¾ÛzlÍqÞpÜOß² •I° 75óg§åí5t@ü€›Z%åqýõ7î°=ç; OwôI‡˜‡:µ^Øù[4;Ý+v“kŠ––+&g]šYpÛÒ¯…à‚,›ÆRñóÒZ.÷@ZYxØðÑR®lþ&&½ÔÿS0jƒN±^M&'«5}õˆ7.£ïì…¥KWÒ±úJw•UÒ¦vꘙˆWþè”A¹Àp5D–Ÿ
+Š2 #WnOÛßlÎ)B/.ÿü"7ocè¼÷„§–C]]ß=Í¥, Œº¢‘ÓÏž3-‰ZÈÒœ)HµÁ
+µ¾p^"©ä÷ö5ê µ#Bˆ
+OÖ´kµQp%w÷¾gO³AdSÞ^Ú¡ ê ç1é?pB)õ\R©¢Æx·ê,OrQÛ,¿Z9ðu0%ƒjmi½j˜ãpû*‰µPŠ§ïàÄâ€ìŒAqYðü`ìÂ/¬æÓîõh‹œD¥ÃŸ}*N ÔÙ²
+8vœY3󉌯E-$,ðZðDÿvFΕ¹ZºlVHbë#lOZpÀëïÆ §7ÁBXsyŒõ%]HÂï{•’o¥öËK¨
+‡7ÐÈ%¢s$û³Tà)œâ
+Qjwªå‡ºÇi)¨–ñ•¬f²Ì³}çe;éÑÈ:¨N€Ãt©†þÀÍ’'ò‘»ª:}Ð=°„Ûò(©
+dH_ÅB¼ñ+/ö)2\ó²Ñ…îºÍ@1rö@³Æ…×7¦UÈ"W!ú/Í¥eîÑ1rA¹wþû-Õ719ó ñµ €Îjî¦Ãî“´ÝŽ“5ÜI%‹÷^î9„§a’»¼ÁaöÙÒš1g®3Ê´¿»‡_y¥Ëò0‰ª8“x¤¼åˆúxŒ­ˆS[•Q°Y¤?´ÿ‡vp÷â|@0€gáK/S’šG¿JŸ=Y㫳±[´ã‰$œOÝgWi¬” <W·ª'\—á› ²r 5PF©}ß©<¿Fï<…ñspl5÷!l î·%ô¯·DÓþ`Ï«Ô¦„ážßàîÓo! ±\À{IWؘÀ.áíÜß%óÚÄ&—«5Ê@êdq|ë,ÚRgë«ÇŽ!5ôV
+XeòlóDuæñ×oÌ’¸¡ O Âå©[‹›O%ôžWEl,»~š$B‰ ­Ž¬Ž¯d¿ëï.E  á®º«Áiæ\Ê°Þ5fû‹ì49‰¾Î U®.¦ÙÙâ±ê ÀL`&B (ýÿ×îòñ-ô—ðc4®Æ<“Ý(˜švä"ÁΨ¬u&ÚãÇûòz©­_
+>dŃ—ÚÂVÑŸÚ®Ó¬ôöcU¿“µ
+^Chut¿åô­*LXéVí'púH…¢`F±Í*þ€)õðaÜîVçeËS XWbÌ!
+w~zUMw¸Sj‡!¹8™¨ î“X]ò$ü¯J~‰¾!O,jáY2UÐ×
+.éB²qªk4'ço×™X"Ø°…I¯?ÓþÒÇÈ ¿f’Mòì‡!`(*N%aN‚#¶8l!9`‰Óg_òe? ®ÜÄõp¤Ü@Î=(<,FºÒÉù Œóc–ÒÃÝMX0á_sTeçDÄDh±azÀ³ÌWúêïn u’»Š‚g3 ]Xô÷…J&â¬zœ ìz§n³œðiC[”Búø J®9à¹2a­:P­«6@–[>Î.#°Yoá>§oŽ–|3Ùè(FœíŸ˜š§mÒ —. (î¡=˜ÉOcÁTçW-Æ‹mìy¬UÀ5aŠóXTµÚ
+r~´ù¥ª=U¼G{Vò¥ŽìB?'ÐV@éC2C`ü¡ór‹¤õÄ
+ÍsôF~tP“Îy©ò0ëÍw1íé>lÝ7\ò"¤ËžÊÉ'¤ZÔêE²jxŠp°p`N÷½îS8Zšd)5³L“^ ûÈ"„dà5‰Ë`
+ü@òlBˆpM
+Šê«]ANνb7×]UûE4Ì3š¶¼½œ¤×ʆ*!Ðvsú7Îj}[ÍìßÕ(Ìås·PçÁ_ˆIfÑ8T‚­Ó]æ]VÊÂR1q´O,2̳YbUuÚ%}–ÝØpÛÏÛÅ‚9p¯Yà\M±þ¨:»Ö«Oà*V&-Ì.ë)~ó#à,ê"Xz3Ò06ôa¬ô Â5÷‚^]àbÜà%Œ¢8lЯ‡`¡&'úøh Âi‚ÀˆÃ$XF[[Ý4è%åqj¨—4‰Pm™Pò8>sIT†ç[ö2»ý¯!gpH}´RI½_Øü‘9Šèík¶¹Ö÷¤•CgÔ ††ÖÏ•Åùµo®%€Y}¹äùàfbÇ2œÓê¼kY…y»ä{$
+å>¡ž>a2»‡Ó&G+£@h
+ÌZòƒÙmÚˆa¨Ì_Bˆð-BÏ­¬78­
+—Þ
+Ùç8ïE0¹¦?
+ š ´Íx!Y⢯V•ƒ^ø¹+{É¥(åÄĈÆ4T&Y½ÝGðÞª‘ëv§WXÓ46ÞOí*ï¨÷b®Ö/‚‡IiÌ™éX¿Uk7ê>±p„0`åÛwÕ„­Àþ¸.g¸Äg)<²óöý­‘4¡ÞÇLÍÙé#Ž&Ž™ÅR+¿èÛå-P,tŽK‘ñ抛)ÚYÇPâä—Α%Í1¼’\÷*°ÍxS:
+eŒÊ3ºô#$u'Ù‚NE/Y:¤r´/W? :N芆ë|y½,­‘°s»ÛG%÷TPh@òr¾hXÝA
+DüUK¨ÄØ™Aú•dSCƵ)êgByÉ”;kËð𥊈l—#zäO?7ÅO¦‚ÞJŠ2@d2mê∈°gª¶’Á~i…hM¶È££|<¹ÛPë=qÚ;çÅy~«Åé•Lú¯ Pb°düòYœ~Ú}
+¡µÔŸ>FÏQpªîÅs¬se¨žÂ¹š¸:tiŸwüÉŸJŒÓ{d©R_jè¯Z]H|uÁe0{|£íAµQ"[O‚ýèf•ü¸˜ž×Åøqš‹SJ³»u¸kÎÛg Ž$l6€ º8bü|B¾´z;#^æ(Ss#ÛÉÆ Ã¡ÔÏ©Ùëó5 ÉQZ®OEúdO"'ØCb@BžÐbq*›‡‡¼Á÷6^4Gäm¯„ ËÿcVLÒAÒv§ æJC°>ø¼Ý Ãï„ÀSï„蘖‡T&X;¾h)rïr_ÆNºD±³;]£I†¦™>µ‰Áªô½©¾"Äû¿7hà}3 endstream endobj 78 0 obj << /Type /Page /Parent 141 0 R /Resources 79 0 R /Contents 80 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 79 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 80 0 obj << /Length 5005 /Filter /FlateDecode >> stream
+‰:Qü¤BdLW–si`Öå•ø/¬.1Ûžð
+Wõ¼=¯ñÜãFÙaúVX`Žæˆ$JHl’ö™ï»¿ÊO_(º«ÌÞJXÊOËÜ‘Ù Ë .˜ª$Šè]ëÔ'šÜC³òØÞÞ|~÷†œP„¬3ö„xpDãNPý=1ò*âe6Z†“qCJ±¸_iÌ1A–¨±¼÷J°¬¸°eÀ-*=zxÌk¯üUl„˜µÎEU¼jÒAQmscÌœ}…—V<
+WÐç´Å
+
+XE#Bw[<>-töqµ«—4\<r8[ +½°5Õ!±,–ŸÀ%„Í£E}ˆ [„lì7¨ea®˜¤£ßXù ŸÌ<´¶¿ÙŒçLK–ú‹²Ç“Ê•Úhª=éñ«Usï¹ÿx&m¯úþðèk]YÁçÁðoŠ Ý:Sãg.!ö+
+,œ_ab‚Ìñ)vàqFÛ°¬>¨—Ö]ʨGU% Ÿ@‘ËR–FOýsÉqóSy=¬_XþlÝ6.DV‘ÿÓ©òP=){>Fºèú:atÁq”eüÍDîdÄ¥AX}d®Îg¨Ò/L%(i8Ï)6ŸöÒôÅ+Ì€ Œ9‰ÎûßÌ—÷´­Ð!‡Òµ×äë¢4V{ªõXŸ*ºž‹ùôsû\äÙÞZ¤:uÔ)@| 0#ÙÌ|!>¦¨‰¯Âg.EŒ‡ÂK£1˜÷WäÄ#œåZë£lç÷ÿ:½œ(<7
+’]X’“*d%•R;
+Âu§«ù¤¯±IU€iß÷µ¢¡‚èPv™@LÞÌá¢[³ã6hR€úsWVÓËZÀaqÊŸÔX¼"q#¸ÑöM1sïA+ÁÖQ˼Ný¡¥ô¿h>IŸtÏnI·©aàÎK<þ‹4]gd·e†‚èUAÿ ÿ<6õžæò¨Í:Ìl¦×#çQ1‘#h<È&yÄi=o0Ö
+ïb懲!žjá5|SlÔzÈÃg”V8XÊÔÉ®¹ÌmIDuM•ƒµÖƒbÞOÎ+ó*ï3Z’øx´°Ükz=þÙʆLo ²©Ç ¶¬ xƒqS?NO9`Ù{¹^i‘ŒÍƒQFDnâéh5¼é
+pÈ4<¯4T¼#Ý*¿TËû.1~9™kzD_D7ß×sYÛ°¡i
+ºwú¹ÿt,!‰ÙvLѹl£-Үʚ_–t€¥‡Ìrí\pï,Hbûì×—È ð~¼ 3 Þ )YˆÁD"Ô­‘kxÓ\„E¡Îœe Ex¡Í^F@iÄ”TBRšÏÖ'r#4[v*?0]á€W–ò|k
+–öñØ}fxcшñI&TIDPåÇJãh3Av ×|8”p6—wTw«ôbùö‹Â@­öÂ!°IúÀêMKsÛÒûé͹B÷ÍV}þyXÅÁ¬_qêYÄ¡¼ û©m·¡aÿB¡üôº#•½k³bR.ïþè4£ý¨Î¯‰Ýæ-Ö\›¨éŠpœ£i³î±x)&õáÃŽ°†9 ÅQ°®FŒÁÔ£¾ÐãÙ vtÑ.h¿Ž®„‹…]$¶{€à'«$;äBhŠ›¦h¬p8é§/,É ÜJ'û´ôiã3½{Ÿì¾Oß½`»Œ âÿoBo‰ðø‡£ÀÈWBú2Ë¡:Lе].¾9oÖ.Þì5Tšˆ¦˜îü;÷;ƒëÁâ/]Çx¢Ãá›í<Ì«3â}ºBŠRb·X‡—GR¢z{ØÌ缸ïèî4u_Êk H«Ó¿d¾98, ¬^Ç›×½®üO$+“ö€ ¡·âŽã‹U†ÎEPV¹ûcp~Ê»eÑ…qEž7Œ®ÖÄ&ÿÚµAý÷NØlú*Þoo’¸³Èñ$´6õ0”²ÚÀzˆI©±õœ:Tõ ¹¡Ð$80ù±/q2ïp,YÉ…Ÿ‡B»XX¯R‚ ¡_ÅÛq_èo£=(µô®8©˜qrù¼ÆÒ Uh çFx”›'и>¯ñš¦lÉqƒlÎD²o*XðþïKÇK˜²g«Ðñõ‘uϤÊû  »äÜÆ#·g;Ö,ƃUábÂàе¿J÷˜ï§”]Ú®F<q7Eˆ?È÷ŸL¿s\0cS¯q€Ëyüý­E
+
+ySÏÚÉp2D>§Ø0ìIF$§HÜÞåËODu«·FÐ
+V‘CÔABÎÑ:z‹ÓŽ³0TóxVZ„1îßDrv˜x8Nö¦Ž‘hWs™0Æ\DÒÃñ0Y'?F{õ0+„¸ø®·‹Éöw­ I®Eºmr*Tž³¼›Bˆ’4jH Q0Ÿ<‰ÉÂ÷¨»+»"„é’|jKÖ™[ûœ¤T«I~¦»ðø"¤zÚ2+X#‡gòeZy¼¯þó/QGÆŽ6Bjœ’ç„oYH3|&bvo ÔÊ ½°t‚EÏh’ƒDÍ€ež8nÛê/Îk¸‘îUêgW]^dØ ½Ÿ(8¿fLK­h-.^T¯||Ð>½³=ÛÂÚ¦¦ö-i8ͬܧQ!KàÏ„ðLâóÝ&¯¾±žÅñUÖÔ‚Pæ¾À_¸NO¶ìn=UÍ•ãQ·¨cô·nóúfrýÑÅ|†3Õ´•£×Xzbàѽ⇠™@5|cp-س П\Ä…!o6¶Í¡úé0Q0úó©&}»$ ½´»sÓ˜ #¦±ÖtÕ£ªätJ‰ÙRŒ¶ûÁ˜i
++»îœï¥Ø˜ ýšŽƒ²Ø¿ñä
+ ðŠTò ,ÆP61o¾?_–†O˜ël½!)Þiíë¦Ó*£Š ðw¬Ù†>¶Jèw<$‡7DûáH[bIkŒkwÕyxäûO-2 Z¸QúB×—x›å
+§™ÌrˆwQŽýµ^ FÂõ¨ÊÍ°kjƒ¦ ‰WS?\E1Rg
+ ½Ù~°Ïœé…¿†»È<&%¦TõÑæ „ˆíuÝQ<x<ÖKK“SHxfòÇ×¢ñùû,®C¬»Ïž*ƒÎ;×k6æþÖ·U’ôsƒtæ/×põ²Š®–øÞ£>+™;þ
+d˹‘°G­
+
+ÓZ[²g/ÁÛ&~Âp cŠÄÕ.‘úá?§L\ççsfZc øqïÙÛ€*™© ¼'ÓÛÎËRmüz€M€mÒMѤ뫶„L¡S/ñè¿Uõ졘§VŒ«¦ú“³/U‘cG~PÐ)Qz@Ç<–°±~Uħh$ÿ''¥ÀrÇé†CwE¹0Æ)˜d˜SÊ]m E¤Œ\•-øt'rÝvñ>T²©˜ ðñ|íøã}6$µâü^]´ˆAÊŠ­$£ ¦ýkÖåŸUd@ˆ0’™ƒ+°ÅEœ¸šjV?ÕWàc®ÚAÔ¤Ù`L¶ØtÖØáœÜâ@Ù^Â6û¼g±¦ {°F`»Ep&îl6>óÐO¶Ÿ k§¬[u-/5iWN
+.MÁ‚WÕWâ«ó®œ[¥/Ã×7§þÞ€5q°L†¯«Ñ;eê±:[Ë[ ­åù ñ—\;ß XGÕ»´àzOƒ«ÌìSEʦ(#²ô:OøÿÁÕpÄnÁ`ιäS{^îswQ>Gkâ{ eáCTm ø§ëRÝ C—w%IéV<¨ÂgÚ÷+õÈZ‰¾aœ¬N žR+¬³62{ÖŠÅ\‘\?P¿ÿ­fòž˜ ²çõÀ†GÅÚ–»çýi=èe}“÷pqŒCL€†‰¾U §ŽÝ4Jzå¾GŽÙ¹Æ½AD"å¯fÞ|ŒÓ7ð:Goî· ê˜¥ýïqúp`¢3bÿ£;._g£¸Ýj^1IòœnW¥ó™óbº¥:
+ôàø¬;˜¯~"åg–÷w«¯åÀ³ˆcÚ"¹ò¼ØÙ&úyIãˆõÍ0'OoÇI4í>ßÀ•|üÚ+ß“¦²Æò,·+EЇb˜1I*Ñ]¸|ü+¼ÞúW ξ#ÍÔ84ÿ|(I+ƉzõË|Á멘UœìÃ"ž˜$âRý½8Ös„¼Ûø4glè·ö-Ô=ÕºaŒó@ g,ðœ„gárWïáÖK+Aüü|Q›MD±É&„öîŸè÷ÌÄ]+2¥uèj[Z‘ÅÄÇiÇ·Â¥!2ÊPaÅ”pÜ È$GY+ˆP‰…æªJèwÀßÝR‹6/bŽ]×±Ÿ —îI׆\¢g?°b›ºñÞÈv VúÍŠ³°Émd¦s©¹¬»B‹Ekxæ³ï.ÈoK<±j«ÌïÌ™–¬q3àÓ<@BØnù Ï“HÜx–ÖáGLŽg7>î>ïeZëâA›|¬ü|¢)s/}˜üO¤}·M©õ“T4IÀgØ …ÆyÂØA$±×£2ûB' ó&#ÿrÚžN»Õ5?¡¤s~¤ˆ+ù‹þrÆZO‘kÌ5³.yêçʶ)ö‘a±}‚çš]úH|þP¬ÝWùfMô³j[ÿŽÆ AÆlÁ¯Û2»ÖjޢؗWŽzôÂR ]K 6›Gl¦µ}ìÕe›<“¿`SÞØ šÐ—cÔà­9V÷kI£¦æ„Vj‡¶ŠËyõ'¬HRO²pµV‹¥-­‘ åAúÀv´Ô+<4»Ë‡Úaá‚­O]Ù²AfaVPàmf M+#{ÜÞ”Ÿ§C%½bÖÉÐî@©$VJWc“tT#é¸@d(•ÅIžªeâ%”EÒNOôÕ'nèþ?*c÷œg<À…gòUÜ—µ ^TÈ\`~ ¡eB²ÅÒG˪"uFÅù¶Y
+1ù ç‘?ýÁd<5uŸÛÞ¥x{M-32ÉÜ· ÙùZ‰±­{â¯ý‹·¾‰öÛià"‚R£“Úù†<Ë© ñ‚2+K¤Ú—#¼Ó©Š¤`Í”OÎ?+ng8Ò¿%85‰:ËÙÏùÏ(ÀëXÀ69vúQœ Ãr'ÿªŸ¶­˜é
+Våi¸Øï¢DY2@KÌ.TRøå‡Âd_IÉ]MåOX~Ÿ«R½D÷Üp[¡Ô]φø‡Õ÷ HËî³4ïÛ“RÄ‹¾ã*DÔZ³
+Ðb€¥È€³,‹V«_ÄY÷í0…ósÖ?䢲ˆuÊQFKÝŠÊøÃ9?å?0²ýÎ\_ǼßÊT½ÖäŽ7kO+ˆM‰K„]øç]Bž§ òÞÜá±üÄ_÷±{,ûä*?dõ¾jw«þèðÛé*p‘qZ.CP5í5ÿ»‘쟼<çÆc)¦’yøÆq³m¼´øþ¦¸ítÞúÿ†rÉ,»äBˆöbl~‡KÞ£4BÊ¥àã 5‡ o#hä} Fµuµd×(—ð¼©ó3€sÇøš$žùB]ª{'ký*zµÇøi Ž,(/)2Ò´¾MÐœüMõP•¢ç…ž(Ý<ýè™eóù#Ÿâ5úÓ9 ÛÿÊGÚÞ¹)¢·¨€èöÍ…<ë9o1l„F.¨=¹:@êI"~tþG`CÄûÕ r¥²¿8Ñ2úP­ lBÌW]Œ‘²áF÷ÊñüárkK. Љ±Å•>òǪó—W|Šï[Kô'KíïW”ÓH×ÕÏŒ³w~ñP0I³8íNmz`õªjÈ+6!mÒ—³£ÃäŸTêL«=ŠÄ¢?˯°˜|æËÍçæ‡á
+Œ¾R’Æû]?ÚÓ{>•·4¬–¨\¤¹‡ÑÇ;.~˜¸~ºxÑß;RåqÄÀzA(1ìǺÞ+ï;.ƒÙÍÜP¶‹!yYÔQ7}Ù³H,!X`ì}d;ÓG9Ø'tÎ'jÔ½rIREÔ\\ìjÓ¨“ä'R½‚´Dµ"yä(Iþ+%¸,Ë­Ÿ‘°Â)?… in.Æ€.,±ãë\÷’ƒ"vB.º2GûœìMBKÉC§¡ž9ù8Â+lÓÒ•ÿ?Q A(ƒ(ßœ ÛÖ4⩶+î–xuÚpÍEËú÷þÌæVáY~OÄÜ›‡YHH•>§hÎHö\-·„Þ(_ÂZ[Ÿ/,¦}Ú…ô_±AÁÇþ~ù Œ†n®ÙÇüC 9"ûÅ®
+Íè‘¡yIüجávZ#<19àóÍ.ÇXÐc]âðÑu“ù×Æ€âŤAÛ$‹"6À>¡,U?.ßÁ ìÏ/†¢÷À#yª£M樬ëYmž<¢u¨ö`Ñ[¹?¥CÂ@jKEy*¹@ }£'î‡Y,5ã—ì ‘…Áô^P€Ãäû²ŸÑÇÚÞƒÂ!,(%q2Dq`Ä/D±C*EáͶäcȼ ÕðŠ#xߣñ0Ÿ³ší8÷cº/ÌË?kÿªËgÞ鎦xÚ‹ª™@w6ðuê
+o=ùâý0„Ú–§õId~¹ób‘Zå-ÝÚö"(Kw­ 0ª•ðâ´Ze¹NNŒ ´E¡^íñ¹WÓ«îß6—Aè<HÒâgààÉH¾ ŒŸhÅ“|Z¿U´-90ŽzØ¥‡n,ñMîÞ9pèÎY–E1#UЬˆ_¬É!©Oí¦ óÑŠ7b6Ñù:«R„,ÑC¾ìÁûüÀ¿ù%ÿBv¨¾§FKÒÃ.
+‹u–ƵŒ°kð_¤íÔzgìã§ÍÍX&5¹Ní;ªP&ÓÆÔEéœyJ¨†Š‚ªT¥V™8 ½¼C_ͪ
+¯ýÌ›ûd
+´j,½–( ¦\@ #ƒ]
+»>2Ëj”DY1 Êk±›AmQn‘=yÿõ%0œ¬ÏÃ~g#5ÄÞ¬Vö˜£zKªÞynëâ.:HÏ—ŠGÄ^3:èlBèìj'Eq«¢rÖ`•Ž±HÐÍõH…ÍãÒðGÄrtL7Ê‚@ñ$+ñvZÈ\ÿ9àúûm
+z-™ðø™Ñ«§gžg\ׇ<¢O‹\pi ^¥ÀùuUø7&7‰&µe¯BEe GÅP0 db†É$Ëä+µ&“Yq“"atömÈߪ3ûDTÎÿFúd±)¨ýœ?^ Z&°¿É}I"ÓÞü¸#sjŸdúøÝÈìZ¥tMk…VEÒL•2‚/ ú=½Qdgû†NðTx­”$~%Ù\ýRö
+³ù¸ø¡â˜X;’k‡— ý„nŽ7±kÁ¥lákŒ®èi@ _ežR¹.´ÕE^¼ß”k
+e¹ÖpÞø-òL.‡WKBö3kkX‹äùo‚¤ÎH(ÿñ>w²É1Üëíçð÷ŽÊ¡uÐÍyqO .4ÐÏNBXHáâزÒ
+Z<“ÚAf4ÁL±X’ÇCÚ嵫ÛiK²V+E¦<ºŽˆ£¯zý7ÃMÂWôôx4§eÑÁcpÑCµ›Iwž1öc¼§+Ü)«œsw5Ó˜#Ò“™ïë
+>‡«¢—¶ ^“
+ùßÉ¢D êP*>]ÄšÎMNœ>ŒàÛS (ŠHa$ ßßü3Pèm/ß\»àýY¹NŸ ~nÄ› Þ|èé…äÑÑê‚(©Ðuy¹Ë~1Çnñ”„IiÖ2¹Ub¤žA*‹Æ×/‹$8®P%À‚G‡+g1åÄÏOéí&nvHrbŒ1åÆ<…°"ªûn@íó¶õ«:¦;°f °=iŸxèY~wú
+^¸Q{8`k·Å!öÏš@éå›)F©Êô›_ÁíÒ\Âvá³ïâMJâ®aƒhêBK}~¤®CQúx[‚4C”oüŸr—„Ü×f%ØÁoYÚXJ˜^Üó¡YÑ‚l=/[dNl¹1„ga9‚ªcf¾\b"Å17Fo,¼?Znœƒ¥ª§°¢ƒëS/kI}äß—Ž¿å2<´œ­£å¿Ìg
+Œlܱ[ÌšŽì`T×ñè;±±…ÿLÄJú¡qYIde]ÃxŸ¾Ùj[©
+y.ŒnK£ËÌ1­©×Œ¬¿!>,´jù¿K«¯ÑÚ$mÕxËEw·µ[…Ùœ¬ òÄ}ê-}L ©æ:¶ˆ ÝŒ
+"Ê~xÇ•Š™>»Ýåß"ºmài$)ÐPŠ>ï>©Ç×ÑmÓaRYhΦ°RRðqƒY¾š™òÏü·øÃŒkè%ÈYPa­2°K
+¥½Ví“âÇ~Ÿ(IUÒî7É|¹`Æêxd&ÉøAD^: Yœ¥9ç†yÑ«T•àyo5§É2Ž}8å©D]õu¢&Ÿv0½1õ~IJBû×He/2ðÏ– Ñʪý¼J'Ñë.¡ë<óq…Ý.(}kz2I Ù|ø¡êúÖ\ñêšfÈzãj¢ÓkçÞ7ò*³ÅÃŒ¹¶)—8tHR–‚ñLE‰w² ø´D?´º¼vNÆ•#ºíÍO¤që¿a5ÿFa>pÿO?ÊTzX^Ö4ˆM˜X4ĉy²=ïm#|Ê&©Œ ¢ë–IöÊ /K´ôÞvx¹þO#
+;Ž»ÏÆØJá6J\˜Rþ ñЋ™£*vÌ{ÞVí<NxE
+SOaMŒh«˜wR-¼sRwÌLãçS!¼.»‰Ã=S!©Ž–g¹Ž•g><¨D2ÛÇ~Ôõh)ÿ(Õx>%KÄaŠb^[ƒáξ0 ýš"–hx„# âc‡Ñf“©vTVò» V¼š6’$“Äï“ØTéxÕ,ÙPp׳U×Gñ²C›Q?CúÉç«Ë É»¨­ihK'¢Ý5YbA hAô›møsðM?B4q0Þ0,3ˆàÍÇ~"Ê%PKfü¿ÚíýÆÈpzúu´$ìLÒ$5v 7Á€m§E­ ˜« à9¼d[¶JªÙ““\à¤/1¢t5ð]‡Â9M€W{²[|þ¹Â1ÉøqœÞ/l¢„ <
+hA•Ô85€C‹ŠUü4Ðæ¤"7Ü,Ú»æQ­¤ÌM£ž04Ò%X³Šp¡é$ª€Éñ¬á
+ä¯"Öט5ø–/“èÿ%EW1GÅ©]¾*Áe»5+ágnýÅ晟MZ§íÇ®@´â-í­ ¢3ê·—_q$Xèþ¶'QÉú”GvbuŽÌ㤑jp“5µhïZèF'YÒÜB§­óü_ô’^”
+~Ò6z›^+
+)¹Ñ5ŒXFTî»}›Å˜£ ¢‡Rf§íØ;·–n²‡G{5ÁÉÂd\‹å¦QG<pu7"K#¹ ûÙÙE<£hå»c"1?Ÿ1´ØH3Ùs'.ùxm+­bAìJBÇDÕ šNþŸ­â_>ñM'¶.DÚS@º 6%B¥Wfp²!m!3œs'¨äœåɫחBšŸ#q܉ÙÒä ¯Ž7û«õ•ƒ¨Š|f“ÅÍqŠƒ°Èj 7äò5V(U%›©AñÚ¦;ùünP͹4mñ Úßäbþ;é6ERô®rÒ ¥ÇE&J—‘X Ù0É6â‚×Mû±zŠÛ#þ<BLÊ@äo6·A }MÅh6¿ÿì^i$\#W¹þd‰KÚø
+øišVPäb€L5ì~•µ…gè…¯ùžÊü©Z& :<@þ§¹Õýj“ÐøYcÌf†÷twªV€Oé~pç}(wƒ`.öPŸuïh{‰µž»Û$0uN¯¨hÖ åZTw!ΫÔØ=¹jftaŠ·Æ Ð…¿h;Σ¾/¥c ïÏk{Wή—[½bYb5H"A7UëÔ]x‡™ <XŽÄœLû%ôÎ8$¿¨‡@‚›ßW§ö…µx­Ãž6ìÍ=¡ÌÜW· éÙêÚk›š‹p½êhm‚ÃìVÊ]º¡¶ž:£Ü(ß \¤2õŠ­©÷ϼNìthOú¢üÝnViµêd•v:ÐRIWPUÒ¥S!¦Ö9E•"úÄ3=÷ËÆåò
+žpƒv?×FµIÊ'»XÎ'æ^ÂôNÝ“˜v…Þþ2úŒ¢'ó~ž3,ñ¶š–,ðE˶µ'†½³íûhŽ‚iÙüà 9艀½}ùð «hœV´‡^Ö«7ã3²{êi£³<„I¨q¨ 1ÿm)R†4žbh ‚9Ô$SҹܑÃ5…Þ/c 1Y@èç2ØA2‰à~Ô£n# ‰üz­ÁºpþÕƒ éoTŠrÉi~t×Ez‹¼OõJqQ»X¹çÊú“:Xý*A fí¤OBÞ.\
+&±>ˆ“Þäíy3IÔCm{uœZs0Ĩ œÑ*EsõS,NWêлOIr¿<•)‹~Æ}jó£Xüº4MÕÈE¨!‘ð×ϱ°\xÍîøËrÓNu*h$uN‰Zì*ÿ>ÿƒÞ^Š6fŒë$Plá3«©y$Ô‡/æGÓqODg¦ô´½öºM¨_îêgÿÒwYêl•Œ·°<%“òÏ£CÒák“HÈ(3õÍ–š¶+³ÔîA.ÒŸ7ÁLh‰α’psÂÛxÖèèûnm
+S’†r…ÙЄ[^FÂ5Ø+у¤Œ,œžrŒ@ûµ]4áw—¡÷làèW8¾O¿]Õ[þ oœ…Ü5»U¯ÞúÚFÃVñÕÏ%Ox·"Ù•J Ñ'Hí»k¸²—èœ]x¥–aÁ›âPyÑœ
+&º€Ø0!I(Q‰½ Í{ nÔ þÃðÅÌÔ1m¿ˆî`ƒ©ÏÙ5ĥЧô‰Øä9•"ÿ™âãH'ÎvŽßÉ<aÁH·UZ”ÒÖƒÁ–švLJ} ÍN!þöTy@ãÅ´[ü õÜ@ŒV:v†Gr
+÷êvMÐήé2Že‚ ‹u'àÚoÆ_‡åʾ“v½CŽ{Ñiœµevfœ¡éD¸¡7+Ê$øœ–¥‰Êèó?â(ÞdÖ
+$ä¹ÍÞ—1]ß“ ï½7ôÕáZÎxZÛŠì‚ At ŒXÖb¹C—$&4Š„%«¥³yYŸ‡íÖ_fCœ÷'Jîƒ äÜ4:›LxË£`i&—ž²>O¬mÅÀ-Сy x¥­¤néòˆPàÞ?­©êR/ѯaPܾž©ßŸ1 µ:¢0' UÚO/0,ëˆn ƒM| YÒÓÉ“¦I*Ø›T9$™õ*âÀHGªm©èä[ÒYqÍÉ”ì<Î&aŸê¶”ØC\Ìg?+I¥ýÊ<ŠI~õz²Ú$íºÒ¢wªüàÊ2DªÙÐuÁ£’·O[æ=_lÑãèIá=PFB~ôš` $Ä£–4ƒ:M÷ì’›û‰}2kQ˜ß9ºpÛå¿!à–G\5ñÇY/[ònköÜ´
+æ$r*“<3Ó(š>+‹k§ìæ£u,V_
+óêèƒI•Ñ?(Ù²­õûYn^⣶¯a!¡Î¾fÉFC—/†?k’ïQ/
+ñ£ Œ!®]‡VÙ;ã¨lz‘º£KÜFûødT@ì`:rg iUpT!vħѽ{YÏè#åäw妲%žÞn‘øòGN“q½ÍÆõ°hB´ ÚÊ*¸ŽÜ_ñ¥À@É®µš,*§Å\˜0íúE¹` %0Y5–¤Ä±>çºÁZTInëËe’–Y:3­,íÍ^2œ)XJ…«—)‡ºÜ¿È×ÍùB5À Y>D¸KiC0nbáa^u¦V*ÜJ—ç*ÝkI{ŸØ×
+=¼µÐ6;§ß o×YTÔAG¶¨–ˆÒ:ñ $š¹õê÷ F
+Ì_j×ÕG—ÓÏœ*ùèz<W¶ÁBö糖õë‚áB¨§ ƒÿ ïu^qál6àœ «JáûîÜ3ÐæêZfæ^öÂÎ<­Ú¾Šä¼“¿0!×»îõ̺&ºÕ%l§™8
+Ÿ——ædÆ=úÂÿ±é‰#G²Q'2Hqê<@US§õ¶'²4p10ƒërbOÁjg°eÝàO´¾õYë4Fè Öœ6î +wëÇÕÿõ ¹ã(÷]JØÊ_?wYÓ‚'í #ô\ßË­ÈJ!Ðý, k‡êÛ^, ƒ"¯
+œž%~g¦
+H';üÅ’:•ËOAPZ8iÀ+ú]93…äs³4Wœˆò˜¶à~$ßhv§tÒÔdÁE7«ytH‹7¤³ÜžÚÄÐë)š9XZq„Ü¡èfŠt´vˆŽ¼°¦lüf²wmTfâÐœ³2µ¿í(94l8 _7çSYª•çB’ŒcÓÕö>±~Ž‚¥u Rr–²¾1XF Gy™ï¿Ñê&³Â¼€ÿCÇE/èâªæyáîÿ%gKø
+¿”(YÚ`©¬ëe<<ž
++¢Þp›fú:y{gó,æô”x×Uý9#ŸÚâžåŸh¬O³užq`‘L!á“-AÔÍ!㈪ÅÊ÷-K-²³‰Àüæ+p>Ó0wÒ—Ëï<Ê£ìÁ8
+ó(ó‹>ýè‹»¶Ü“=ñDÂd&äEßôeJô #ek ØÄY¬“/Ñ¥Îs¸äZœ08ŸêÓ"~ßÌ‚ýžG‚v¶*˜S!¨T²õ\–Ûi˜|nJÊAÑ…¸='\qŽÇø Œ h§yч?xñš£^å;vkÙ³æqjdu3¸ÏªªEnxÎjؾçª'° ׊ ŽÊç!tS(=Šip"JY>f¨Ë2›;LËb «þ–F_/Ã}5òóªkzDP¬̆¤‘
+ðýN'e¾Ûc﮾/¯û3Ô9‘}{ƒ™æM ´pËçøh-XIÊF©Ç"ÈÑ—=­­ï²ê·Ä܇áA;byûd¿‡x\釟Fìc å%ôZGRêK›Mþ*q
+ˆµ¬ R;^.2ÉËŒ[‚Γ‡hùuyWý*%[jÄ)_[˜¯g‡É°éçË\KÂxw„XZ÷¼Ê!wH¤‡FG™ÕO½a2dÃÚ^ÒyËTvÐ@´wéSKÈr2ƒ£¦xÓäQåÄDõœ#@º˜ÐÊ©±øÙ!¹îÚ~s§
+;Œ™-!ccÁm” *ToéáÏZÛŒ@ÚU¤ÇOqÄÇv:¥ÂÛ—)ÏP¡Ïƾ±›¶jE®“ËOYE§€ECc,ù±i£7¸‡®fÜ<ßAÍ"žLw¹ýÆElÛÏñ ?ýþä5ûß
+#ú“S£_gâÖl>ÿ¾W›S¼Ïú`eaÇù x.…Íš*hDÔ‡HÌŒèå'¨ü½šd^b>÷xä§|²Ïu´·I¼9?¡äªj£ŒØšŠ,ÇqsYÕÂãH{÷Dy´7£
+Wö \ìÙ31þ/ÅÒåeѯBÁ\Š—ëƒE4Ð;
+1»…áÿO|N%'7SÔ50kɢׂÏðrƒ|¹#
+‘Öun1+òR}“Víõj=¹Ýõ{È¿û4>D¦_ï‘è–@ $¬I*\yµ&ºL3 E%Àloíà6ü^{Vžš@èŒ`÷Ï0×@㱨áÞ
+iWóÓÎ'Bͺ}?„b(øCßç%‘¹‚†¾—ÆKxãÏiEŽÌ"rÆÇpßà4¾Uh çÞ¦´9ï.Ü*IWÒ©ùË ""––¦q/ž×Fð@
+;yš¸
+Ž®\Fã…èZŒ'â'_…®5…Då·Eu$ù<Êé;ç‰o4€ûŸ{¯!;<—g{¬Ьã[“ðlÕIQJ£›n¶HF&¬±éÚiŦUK«$ ÒDP´ )^}èig°^ ó1&ý‰QâÐò Üè&
+×IO
+ËÎØÆinbH.£ŠŠ®É»X³fßf¹ëh4ÒÃvÈÚn×~Ðû·àצ½EMÚü‘p¿ÞUsȯ>=ö¹|@ü°vMŽ|îÑŒ
+d(3ƒf“û]{Ë3ͶŽÎ µŠÎ•¯²”…
+¢ràrˆµ|H™gCç§cíC×eo†Vnÿ×Á>‰s‰M ¾€®;ƒyªˆ6±¯â9½3od½¨~š”iœ†„/¾)<ªµ­þÄE÷’iÁ¨þ>øö¡yé}›À/ØAÏ)'×õ³¬X`wi¯E^k¡nŽ–ä+vêV¨bΟ‘ƒmùÅ°»‚]é‹tšUü[d‚³Ž¼íÈv"o)¤½G†”ºªs™æžwH¬pži_ñk¶˜=7^n"1Õ¢„N]äÛ.6|ÖD2%jòóTÇdsHaT¶ýsu˜ŽÐ:`Ï“L™:mníGý¬CÃ;ÉRPèꘘŒXpÚ~¥ËT©>câ8Q8eJ ùÊ2¦¸~’‰Œ([ƒàämÛ™L¤¾:*h"VÐo¦<ðW§j¤ç&|ÅÎ(Qg#i^yd?÷úF)ÙàQí œ &)ع—Cù²7ÔNo ÿÅTÒøå‡|fZ&š‹†CJ ¨©Øª÷ºx¦ê×ÁÀvoRÏËÙ~ìü[Y›u;m® ^kµm´N?ˆšxÅžA-ψX¹!±‚q:0D¶yÚŒ©@¦î#ʼ
+ .k(,ïÃyâ…î”pžÇlšQF~•7¶4 >õq·
+[h}þýÞy|@§a^ D»¿ýä8ÙUfEAÙiÌ@AIßžð‰Í¢Ô¾½MÌ£dÞ3\”îlÀyƒm“ i3ØLgûj¹[
+5WþÉèxá=³•nAÔ1}ÿAË×>Æ
+‹0£p‚°ác#ø$Ý:ÅGúe'Ô«{$  î›J°[7ð¥X e•£©O&â-vÒKKnÈ»Rœ÷#yùý=7uןÔaa *Äkç~Í(Ä Kú括³dVâåHí…€Jo..Í}Œ†ž¥"†f)>šÛ!d¢=^ÁùŒÉé*8 œƒŸ~õÞ”‚L¾7ðzcŸ¤†kHÙ¶¼Ræz³<ÇüL:‡–Õƒ-†ÿ/É‚8ÖbE ŽbV+:…ˆá°†ÏܧGóU«6œq¡ ÆE¾²n¤ì }} fN,:í·Û¨mï8N%z©%
+ô*[ý~4Ïã2ÕIø¿¢Ü4–‘ÛÐÈæ £m§À¤óÐÍÚ5ÒB„“¶œÚVäK?|À1™WåõÛ˜oìOüÔ™@}L(;tàß
+ªGçáçs¹˜‹{Í'#±û&+¯T÷‰kc_ÒÝJ C‘‚yt²G€š4r帷!b …>ñq1/O…wr-|ögvo]péVu1™|[K˜¥ÑKíÆÓŒú^%„½_ø®àð`½ò³/ªBËYk:3|
+%‹r¹‘²aÇÖsÇ ;CºÄ£býä¾Z Lk ®.~¢¡¶¬ˆ@+õn§@0™@ôzÌÄ›ùf Ô ¸=ËçKøMÆÄöôœ9„uªƒÓíuJˆ,™x)á®ÒÖ‚ÄÅTX5_ã!<’LU%šN‘„/Ø’jçZ^‰¬c¾8Õ‚<ãµÃÌNrËQ¸QÇ6Û?,ô;Ó§>µ«z^1|
+гÉÓË$'Þ´ØY ,Ç}9GE—Ÿ^ýwç3&¼nFá3 Ó­—«ÝÚIZ*:ôé&gÄ™
+“ñþß*=Z`§u3•°OCÁC*‹T~gh¨y>?þë1vn
+耸=ÁhPŠ!\óïEtar˜<“ÿûòàZ8,>¶sý°RY’à·šžîtÚMzE'ûûËÍ"ëåp@%öãJ( Ü\ï"³®ÑÝŸ¹=b–ã#Ÿì|oÚ‹ÒÖé2çQî¿m ÞΓ*Àö,¾…Of ®¾jI”ß\ðTNy’sØ·Abî‰C¬³Ü[¾‡ ×ͤ˜c 5Aoi‡Ä¹Ž8f÷`Â]2¬n¢i:­ŽèÓlˆÖº _2ué……D ×O-'Ê—S¦m{‰ƒÀ/ßG뙆qÓî=üQ À÷jYpRkÀ–,²K)¦?J³ZQ´÷'Ó Þ Y-Ÿ×uöa²Ã0w( CÀˆˆ&tŽçåçL‡Ð NF3o]` \°`¢€¸³œ~æ`æÏ2Ez‡J•Ibÿ_8‚®¶H(Œf·¤cr cÜ Üm—…ÂIàRá _Þ¹ÙÀXR:•«p¯ÐÏØ"|„õìãzl ¦‹ØÉ®ÓäÂ~j±ö±ú?.ÃLìûd,8‚EæÌ# zŠr¼äK¶èLæ%»š­^1ðÄK*Å–ƒ"«…øJuîćŠnøûde”þš™úxÀƒ=·Úœ€1§ä!Kíh
+Àn /Ÿá]
+w¡Ÿ¶i3Ý÷Þ·À:c#Ā䪻F‘då©UÎÁÓr]'UËvý è¡ÀøŒ@)Òù1—<tÊL.¾äl¿”ùŒnGnAq“™²¡®ÏÎÖ59åP†.ø«Ø/Í9–òyÞ4²™§Üµgö(§<½s_GÈ‘Ã æ·½ïþìŸ09R7ÿÁxåmð‹šBð?«/¼+œVR)€ÝZõŒhÉE@úf ¢¦¼÷æÚ¦MeD²qÚÏãAàµÑ´;;ê3ªÍh'»t uæÉ'œL³Òò²ÁÔ]]»®¯ñª¨ÝsUà%Z'ÛiÁk£öXr°ˆiŸ-A†ñÕÜD_!âaí ÊÇ
+°ýñÜÀñÛ/ ,cSTI®QKÝP:¼6žÅw«Ù+6­‹ú˜nÐÖ<Àóò—ÅJ@IOù-b®WC›u㉀5Âq¿Æ>¦“âÙ– ×ÓDðÇز^Ϲ~æoóî/xoG ~¯2Eý
+¼'ÎegyiYSÇþ-pN³’[íäHî]ýJÐ2Û¾tö ;h²EL¬÷=¸“# ñ¦në~n€.‡©…J¦Ér:'ôX¡¯ÛB ^Å
+d|C²èòPl¬vH°Ø#î3N‹aI(T G{‡}±<¶­l¡ÀE¸ãq&óÑI§É ,©êBžÐO¼ØÆŠ@¾/ä£"Ï‚Ôëùuì¨m©änH
+Ð4¶Ó$óÕõè(÷¤ü™fß&­DòÍÞ@Nº†u‹Öíå³*¾i„ÿ¸óô/Ì›½S耓sAŸÃ±jÏé¥~ã1jž)óqîA¡‚T½Õ®É€qÌÕ0÷ƒ¡õ3uö-vZ=]Uù̺dQΦ†š˜3Ð ˜ãAiðlBâ7½–ÜöM§ˆL¼êËŸåzB¥y¹äL;ˆ.³§¬ÿÕFåÿ*ÏC”ïð6ÍùiW¼ Õ\Gt0ã·Tm\Ÿtª ˆqц™«çðBü›ÈÁ÷?
+†n"GQ^%ÚèMÉuTÐE Â:^±k@î ü§#Ïv{fÊã׫•Þ]j‘0±Q¸®¡tZZllÊ!°‡†ŽÅ®H
+¥b8ñ6Ê6|e“¶~ÕýÞ ìH!.Âãš%ëÈ^øíe‡'*ÓãÄ`¼‚Ï>fV<ÞJ3@b‡ø× ÿ›¯:™Xû´¥úÖ—­½ó@zEiŸzì‡îçÄlkò#ˆªCž(ñŒ5!§Ýà°J‡åˆH–—%w)d¤IžäAjÆkÚÇ¡‰x\ËZ"fÞ¤µg)ÎSDúÚ¤v2ò R*SæòòÈÛ+,«±þWÖ²éN,Ÿ^;csw3eK½Áž©Kfdr ^õ`¡36˜M&…é ëap)oŸ-µ-HQírüز(Œ-œè5H
+ Âô9ÿ[õH¿Ë2²_·àD£A—‘Y«%r-
+:®Óf¿3ìÓ¸+WÜ’ïZø’\Üš.›|]!M͉ïGûÛ¶ÌZô–cO‚‘œMÐì^Lanö¼ùj‰—¯£-ÿYÃÄ‘!»S‘‡­÷ÞB»ÊwÔ)z練o -þ%›­Œ²éÎûj‹°MâE›_¢ƒóR~Œ+>:p'Ò6wÞ3#ý݇óðñ«4ò^w§«Ž¸ÔÆ6Ó¢tíõ Ævé?4¶l!jo®ÒôÃ<!IPËíª–·`vQ Çšµd²ÓþñÂÐWŽa–¥rœ‚'W–̧äO#ÎrôŠMÌTŸ³ri§b ˜ZMI˵‚q°¨bU>ê¼õHÝÆnãevC1NI¾þâaþiAæ Ãä­â4 /¢Ü
+mùaipkôŸ-ôzkÀ IÔoÓÇ‹…4ïõÿ¯L¾¾ª©÷¦ÊBÚcד à%}êoŸjJ"°«ÿz3¿-p¦_(B!í—3
+é¯)Ñ:ýKhÅ M*.ú¶<1¦
+ËËl¤|p)Fè(vÅë@ªê1úIÆÛâ(¿¾T=y£¬l‘Žêôòø¾«9!¯ö™ÎÕ²±èD`í'ÅêÇÓÃÿÑ•šàC€ÕOO “<,|Kº³½µ™†6r~Å¥¢½žxç¥le`w!á`Ia)X–¥à¯_÷¦Ó¨&ÉÏÕ´Žr ÒX†î^!Ü7h„gî`ºfW¢ïÎø(³T£ÕKÚÊ+ïL
+óW×eP^ GMÌ·‹¾Ž‘wlµ˜d¾Á¡fÉêùC‹‘° >ÆSc
+ºŸZy–s ?Áºu•ðLÎüyzO’)øÑ’“äýD”}-!a©`HšRô{‚t[0þ@WÒ¼j&€ŒvðYÊÃ,G¹@ñ­il—Ï»bKÝMºdÛ`Ë䣜`–{°±OBðW3°\ws4m.kê¢Ñ
+8x ëØΆúPsŠ¦Ù8 &²êÏ ³Æ¦{|»
+Jº¿³Q­Ó%ƉJDèÁjÐáÆøۖè—c¦¹5vþsà1—©ÎpàÁ)”Í“¾ê„+kµÐ†),;Za+Xý3Ô) ™Q­½ö´±ùRXâ¸PÃêÉ¢Yü/cþEªàì]GqLÁ6öÒmA]…á#ñF5–Ùú¬YW·¬ìDì౲ǘ4”!VÙx28™Î7X—»ƒœµý–+ˆYq_&>ÅÍ£ˆÕ´j')üü‡¦´†Ô"Ãê&´Ž‹Õm^ö_Bt@îa¨÷zMpãA¿Päz@Ò·ñj\/,l)¤õ,Z;Z•¼²Üøõ²N‚,u°GS,“\Ý:{¾ÖJ’‚‡¾rá¨Eþû^}_ÕÉú²&|l|¢v¥æ½x‹Ÿ:¼ØÈqŠ1‹ ë;tM±Ìy×]1Ž±(…¾0Cš#b¯ªvuÿ2ñ<LB3ñA |´¦†š§MtÄÉ‹P0¸TžÓñæ â”åUÚâ'Am¼ªŒ›¯¬¹Í?rèË“Ž¸ó­ó1êÉ%/û€“›HuÛcsüû”ìy’·Eðe¤ÿmâñ„ÌňoÉ\îjãt¯8’ (ñ-‰ÃPàß’Mâ8_ï „€Øiñ> <®X:Hî[ÁªZ,™ž~c;V«‚Œ6§PK%‘0ê@¼]WÈ¢þw8ÝðWAå<»¥Í"Ñ|±-Ö˜?´©œSŠƒ‡·”W%Xtr>pmA׬:b¸=gÁ–ˆ£ÙR %Ç“td­€‰õÿÌåqz¼µrx Kl?AVÊÞq¼q¾_
+f‚²\RvÁmÏñ'cðßÜέïK 1" dÝ3Á‹@¹X—áËܘi“/•gŒ‰gÃãԙ‹(êÙc‰ô«‘¦xÕÛmhó!ÿ"õ*k¥…R|EŽ#Cþã¿‘Œ#a:›ìi]茘„;”9 Ÿtæ ÀªÛ¾
+Ôƒ€®öÔ`ë̹™¿JÇïåÏJà½BÑ1LÂ×2¨h*ö}ZCÃŽ±°Å§:Îî[··tïoÂ…bª¿Rè#Œ/DÊ/_zÏÈ—U³•ýZÁTA³ÚÆle+Êï\éýæFñ ×W¥B¨L»ß³y6·dÁzÞ™ê'<Êôæê`!z Èh7-²ì+9k¡˜Ô½ã>ë+2zâgN>Qc[Maþš‡B†cq ï!?ÍPÀGÔ‹ Ù¯>ÿäú øÐTt’¼òdËSêÌ9½?zÎk­.
+Ó¨¬®¤Ëo@ïÎdõžjNï,ìh¯&ß2W;—´(m6ÈÆár+š,‚¼YÞ\³’qãmìÝq=÷<EB2F”Fܦ£‡u°Ôsvâ˜Ì+ ù¿¨”•Çª˜Ùÿ¤þþúwú$‹*Löùþ²Öð9¯b¹]
+’Ì÷‡ÚŸÿg’kÀÌw9ÝNº¢à, ÐÓ°nÕò£ŒËÏîÔü±  x&뇈Ov Ž{kW—°Î·
+ІØWÁðe²«‹ BÛ÷ú,Ð5ÞmûÝc.adÝ;fÛüȬ4¾¶|`Â#œýcCh󸎖ÕO)‹>´ÆÖn*EþêKÜ'gqtB–1@ 4+ñH®½j/nøÛ˜žîé!ŠÉÒñäÇ>]ÖÉä¨v˜Ö­ÕCB¯Séfphz­cñ…ÿ7Öý««qš3@•n|R;9‡ú÷\éŒhá>ÓÓK nÀš¯$_ vüÇ~²´VžÐ ·OÖƒ2è གw•*
+5Y­hYs"° NÞuª¶2Ù¬Ã%@©bEÖ€ƒEȃkkgÜXC‚ɹZá=Í„æÃÍ6eçµ;øÊ»#Ø^F0ŠÊ<ýªÊZ3âNȼEà¥D¡QÛh¹`²É¸}.¨7'Ê[ì_ó@ð¾ÉS ä,Ô+Am&¤ÌN¾^°¡Vš™“Þ ¡Dî>ú¶³_)ãÓѼXÿsHD<ÀߢjF ©÷Ñ•>ÁÌDÕÖJåoÇdφA«G{4d¨12#§zÙ€( iö§ƞÀüGuß!.ãôúàl”ôbR¥|jÃÌ$l «þÌ@äßOÙ‹âƒ1±pW§¡´«òöÄæÖpƒò9»ŠÕšßWÈñgC-u5Ÿ{šÄw)~ýäSå­¸6T&ˆE@ª3$:d‹äR2Þ{BlZ*{Tµ]ViÉKLàhw-ñåì£rïöŽ[×ðS¦™Ù_Ñ?ýYñœÎ´‡<¯Ö
+冱ˆ‰œ‰ø®¨¯E›Šþ\ö¨‹Gwäõ°þ8Éýë² žrC
+MWk¤³añ2>M¥h ÚZ"ŽV‚¥{ͽ#ž
+XP8Âÿ‘,l÷`!: Ô¬­È‰P°{Êü«¤ýRà䵞TiÖdã_b†ü_Ì] ßÀµ8Íü5u{kˆRLìê±[‘×húK· ›ô+¡ÁÉA3©%þ"ÆoGñÆãñQY©¡·É à%Í—xÙ oè#Ü +ì(ö<þ.ñ€žÁ¶nqBlùw(¢èÀ("åLÚ.žFvÃ-­@¶jŠÍãü3%ÛÙþ‘îÒ/Á~á¿Íâ[/ËcMËïjeCáøÉá"š(|ÑÝèì°Ncè¶\8\_´ ÙÚJè£Ðø÷—CÕ*¯ÒptÛlpVUË`{8â\E(ÅGñ#&ÜAv¿e³øÐ7_'¹¢2gÛ­â)£¸Ÿñ/û»8>¡<¨£RØɉ?õýÞ|y£/v´©˜a˜WAuË; ÿƒI©u»D–ÇuQ©c”'qž>^s).î²0%ÉL
+*ð0ŠR>´šÊ°°©u(G)5=‹²·ŸÝèâˆZߌ'åiÕÍ£\Œ—ý²Ó›ó€ÉhQDYŒ"¨öcCkGû<&sþBAK …b¬.Za=æÒ¦ÒJ皌»í¿Ð-JÅ°·Šèãyoı/Ü€·~!ÇUYB)kÙ€—DôBwýLŠã¬ü‡»pX^çq¤á€òrG± tÌßw¥s;JøY“5àæÐ áÕC-³4Mµ²x~ÓO•ö*ž]3º1*Å7Óœ&Qº“ß» DÀHê˜1K‘ˆKŒè(K
+ª9òžd²&Æ󺡿 (ÔºL+[Õö Ñ:qG\¡ýé–úˆd'X‡tV’5Á# âŸOª#UO7grÀ\XzZ
+ªèsA[dÙ¾cU>(-¶ûŽyD×!ráÀl…."=õðs3 †3H{–†ÃËÝQ×*>‘Þf`-ÜœÌ`"È&]Ø "Å7¨•ˆC˜÷b)><xh‘zÜ‹Š˜Æ
+ÿ
+Ê0 ¯x3xß« ×ð†SØFÉ4.È×¼g‰d@#´Å„pAäΫ䌲`ÉØBÍ/‘ÝN±$:Ž 1Êž¢ðú9 )Ț»0ºàò?쬑% b.y«"ÈÏŸõÑ8(syvA‹? EçÖ5%“°dK`¡Y¡±=§Fà$Ÿ7¼¡ßwð†ñNÈ;GØz˜Ü;”hŽhz"Ü¥LDbBÍMaAƒc­‡²”ˆ(xÈ©^ý
+¤qàKù´åXy ªšØ3š6É1Å «Øƒ6yŠ´ÝÚ¯vYÈZÊ2Ûé
+ŽsW‰#7T­puÅ¢öýðŽ6²ó™ØÁ¯q±Ë‰Û“÷îíUhç‡ÛöÁy­Q¶ÕÈyYËì¨ð0iu¢—èþáH,x™™Ä›$^œ-õmÔ|-¾2zË`]_yN¨æÞ¿í:—‚tõWß¹jœè¢]~±C3½ÈÙÂôÆ4›ó©óö¢霾ÿáàzùä¸þšó*LÁL/=ÕQyd64›@Lžç›¬¸O%ï¬[ÉæÑe®á¿í§GÖ£¸}äžÖ¢­‡ÞþüãpÊ.@¦L{lmÖãJ Nù/Ó^ª~þB™.
+«/!ŠùdRh¿`{Ódo>Ü_»=µJ8CvW•ˆY÷¾cóúÁš8Äí'–ÒÝѺ[!F0ðU/ëÁ=N+ΦŒ¼×á:˜XCåw°í–Hßû:ðG`ˆ<Ó’¿Z!<›
+Æ~VÇ^è1Å°S+'ˆ..êšÜ'mcVY‚Y4#΋‡#GÊ„Œ’ìîŽ'sL<VïÁR!F½œ%dœðèøÐ-ý‘MOVIÖ·?›³]QΓÁOŸèÚcs®¸—úÞH@ÔÍs}“ ¶}PÌ&õ4'ç/ „I¸…»Ò6¥c._Sl¸Ä?í§™-ÉS.$h$œ‘²¯ýJw¾Ry¿lä»^ÙH$ò„œsÔ†»»Lñ5f?Þ³>¿^Єà„h2¯Rñh\ö›ˆŸ6ïù)ºíèR¥ã¨Ùwnui÷‡€„6UJ)œÌr¾HH.ŸýuÚÏÕÎäÝç9³/zm²Êæóy5 ÙÙç±K"'ùå½ç‡çGÚÒWqœV^»ŽÑôYí°…N~»ùAß Ö­TO_XZïZÓ±¸Ü݇|Îð6u» H» éÃË1Ò¸¾ï)‹(
+WaOùÌÀo£E =4`àèLè,|lõ±ëé8‘QѸ|­ï3Ï\‚nG 'Ž+Jÿ+ OÂT´õÂÞðÌ©gœÙ4ø‰QÒy[Œ3ÁD Eú­Ç¼a#fÇ¢ó6Çs许lM9@…$­QB©'®:ó†g3²ó•*<ou¬˜#¸<Âÿâš3<þ,ŠØfîAÎË„JET6:àÉôÑÞøó]d&)|o$€jÔžŽi„ÈÈ·‘i%«âH»½¨ÊôT)°ÄømÆݦ¥‚ áNïBR%R‚µy[\æ¾V^„X£àbF|Â7˜Ÿ˜9ÐüÎV¹ƒ§"*Ü>)<R%±IÕêZn9”r’ì—l˜§Üâu,yÑ$s«2m]Í~çR·
+°SÔ4@æ2tˆÁ™ìY^Aÿ‡ƒik 1Q:ÈPvR{¹ Zw¤ŸŽ)ñZ1›‘ø˜PåC€œÈ€4•½â€’Eq@!7‹û Ûí‰:nk”ÎǬ½i¦Ku"£3þF¨Ð”udç…êyߎç&7Ö~0Õ‰j~–ì¿YàÝw:Ø Ü9¿†¥<¢r–¡J§ë—¨;]VÇ\å\ngÉ,ið®(˜°yBðM45R2—ÇY€Éå ¹>UÆ@a‡uržR±\IÂê¼ùA¶"=yT™®&x6 ÷ÑŸŽÕÖ'Œ&IÚƒ­„óÉàÌÇWæhž0$¡çY~W~Âx ¾°([ÊÜT|ðH“’ÅûA×tW ô+âOD>Æ(*·ø«†ˆI òŽ2²xœ"Ú»>}êÅ©æ!L6EŠVÛÓíüHúŲÒìØðaY:WV[MÉôßïw?`b3¬²¯†þ­5?p% Îrn 58´¶½A†¢,¯?…)7Î7É
+çYQ*°\e£ÂÃÌx-Œ.ƒ–f†b'$9! õR{?b=ª­*,ÁeÔ{Dn
+¸7ç¡»$kAèlWÅmÌT‹}ŸðgÀësžÀröøð.²i±Ñ¦'G[9±®Mø&Y͇Ï[ÍıxûÑÇ$Æ+ÀÁª€Ù!Òªu{"ØÐ}…"©€qçÞ>lþˆÃ‹!ï»H± -\\ þ§Ê9ŸÿH#ri|,xؽ4gå{ ËGM<®Œ/«±CÚ$
+ªl|á„ÓðBI‰É£Èæ!ÎlçÝ)¦|GƒFS#?«ÿ[n‰}‰׿Ž©Š‘¹çF•0 ÆÁ3q‡^Ï+°lÙ¥Á¹y:ׯÆdì¶èé-ñ¶¡žÊ Ô¿ÕÇexçÉÀxÁæu­ @@’wÖ'üau*ï WÛ_±WhNÖ²–rl)Á1²äÌb– ½c7µ‚V¡›U»X’£ï@:äàT·M’tÖË×[1íoî®´‡Šô„„ö³³k.(Õ9ܼ¡e2z–Þ$‰jç,µÀ²é© ˆd²F ÇäQ\Æ_A"«âšˆ:av1ì<ÄìDìórS7‚3{´¢5!%ïDœÞ9¥—9êø“V³’•F=3®O(‰Fe£=œ°.˜åý“µ3 \<òX¼¥kâ¤d8rö$öÞ­OvêõåµÅÌÃv¾àPÛ‡¼ÂQN§©Ï¬CÕXÎà˶Ó'ñQ‡Ój H®>T²SqÇĶæÏOc ð”Û·(;̤žåê­¸ßàfn<iž¹t«Ù¨¡!ÇÈÁâÉXˆIèhg„¶i57mÛ¹OÕy¶L ‰¤u»ÑÁ¹“«€ß­Žè™òü•¿ne-Ÿí–Y•%%²xìYÐ?O®Æ{KǦ°6]^.g -j)hvϪ^¸¨tÀQtÒa9!BõÝ+qœ]À7DÐéY@›â†(€»gì.÷ê
+CÑæòlO¿äv’àƒ¤"Ùp‡Pvä9Z¤†`Y·&aìØ8FtÑUÝ!«ç&‹û-"7ø`Ð*µ™Ýî±Ä–Ú•/Ê=¼Ö´éüÈ\Ʊ¥ÿUJ'øŽ2ª©(è:§i*Å“ZÆmÓãÏå\1'K šÑkAR Ti"õ}Ö‚Ëb}j³móAλ׬¥0$¡K>-æM$7ÜçlŽ#Ñ5–`Vg4¼=˜Aš"@Ü%†þºµ÷£SQŒ©‚§D¢y£ßÊg
+מài è~AQ8?áPY‰mðŒ&!ß[åÝd~ ª‰¥Ž/÷–Ô.åêc¶EXHé¡ò 3HìöÝ'Õû<ùÚŽøóN=³„‘®7Ây¬+h‰G—ÀL»µ£—KËÚºƒÎ^ÿk1áÛhG?‹XC "žköªŸÊ›ªOØ+ºUàb7”9Ï=înܽØ"ŒüœTª¶õ|樰{\ºfýI–x ê¸+ö–¬dŠ¥ˆÀ‘™”\‰’
+>˜Lõ0“Áº…Ò¼òqÜ;ýJ"g'1Kü2í8µÁÔñ{Ë1 rv ùäfÁ2Á%]ÌÁ©PŒY—++ö†…ÏXµÖˆÒm6Í"Cÿ%!úºÓ‰&5ðEkWïè¡?þ‘°}š½¤ÞL•;l_džäÜqÅhè¨éJÄuXMˆdk>Àd¢gš(X5é` …§´M(»|3öŽÀÄãë[ö¬Êh
+Ìý íäzsù~nû¥ÞëdšûVœ¯…(œè­%ŽæÊâVW3:—(¡†¿Nh4mÕ\¸º >2õ‚dÂæeÐ#9¶Ø®Ó„Õè¦w}}œvTÑÀ†üB\„ñ&yGg†D{¡ö¡¯˜Ëm` /ü‰>ÏäÅ×c_ÈÚvŸ®„–¶™åIâ˜;OÉvK ÃA¥—â•sdhFé<\\}Òá¨õH¸­;áóXÈÎìä/
+÷šµ½ÉT¯'øzg·pš‚#Km5‰1Ô˜à2 ¬À=™NÉ‚y®“Tla^UiÆ=ÕB²ÆeN¿F 8jž9¹‚ Å1àO’²‘ÒÓÂ@ -=i—ï„œ|e*¶½<Øâ-Wé˘ຸ„m{ -¥U2b9Ó®‹lîå÷LÏÌЩDô¥Ír£ê«Ésµ²kíÜëÜ*¤9¾F †ŠÅÄæç7ÑìŸqó8y¹‘\ŒÇ¸L¥%ÅvÖW§Ê-¿Ýtx3·š-…ù›ÊÏ.ÀÔÁÇ9¥±8ÒiÖ±¦{›Òw1Z\‹OÃ-m=.°|»?î Õ˜ÿgËSîmÇÐÔ´fjÑ:¾ŠfµEaF°30Ti×.q`•?·SuckÐxÄ >Xù}‚ij4¾•ƒ˜¨3y¸×&((2ÊÄã<×ó‘*láB±ã™È9ßG†³V6·üÝ2ÝY1ªÉk·›Â—ˆ¥[ƒ0Ë3…)ÇÔîœâÀúrûa*‘Ê¥ .ÎuùUÿQÈ~:AÑé®\t÷àºÝAHP.<=£ÂÓ{`;^|c¶ú@ÏÃõê…®>t1 èKxén1Ôæ¤þTn†ÌŠËW̤ògã;ü
+Í0Ÿñg©¿Þpµàk¢`áäìÀ›·5€`ù—/gäU59oœÖ7 òåËÁ—þ`¡ÍKPäÙ¤â%a…C=@Q§f[ºªÐOÍ1Fu›Xé[-º^4ÆPKÖ„q*C±_*=#iÍ*Š±$l†ñ#¦Zåè¯~G¡ýªn*€"ŒDÏ™•{­ûyÍß
+qT‡øy ²ŽðÓ;iAàW?~Sè[Ìk’G\6¶ñº]TJý‚ú,#ëþÀ:ºF}ÎÃ
+¶t¯äöïduÇW³bT²­{³O4:z¹GŠ’'Ø^c]ʽ­•{ÿ%= ¯^¦5ÈÑ–É–„1)]óïß²Qʦ»5p$J^ÉâT¯"ÈŽòã,4Š1À—Ÿ×P®f†}¤ ùÖýNˆ.Klûegñ 4ˆ¯QÑD{s«¼þ"@ÐXœÙíÀk$OÈßý|Aö{jZžf¬[¬3Ñ$Lxþ׸ߔ;]êÍ”gÊçÛ 1Å#GrilSû•Ù
+À-ùêÊöN™ûp¨«nÕ¯(±?”_²Ç1;¨®Ò/—x—xë>rÇ–ª>ƒ[•`vf2°¦ûɆŸ% )CŽªldžTy…°Šs~7ô C# jF¬Ä¸eLrfroK xªÅ­ª¹ÛÚQ*Yë)ª0ÉmԼлz…zp„\¤à³ÓÊíôF áwk÷ §´\5¨¬tf¹ð%WîZ¢RïïT¬r Í8;_™~¬›w=:¶xW%oL®)Ñ%Mß“y¡3‹ìÝÀ0¾‡u@úñM˜ÐÁàš‰•D.i”‰ñ²«’‰EûAýf¬31¼Ô¥×`ìU\tÊs“øˆ-~sˆ8¹Áƒ¨åFÞŠ2*T¾£1Š‰*xZ¸ÐAÖµüƒ¡ÔÐq‚±¨\~¡?‡Í®\4¿t sŒWsYØ)•=Ì"·Úl:eë“Kð´I À endstream endobj 90 0 obj << /Type /Page /Parent 141 0 R /Resources 91 0 R /Contents 92 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 91 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 92 0 obj << /Length 7049 /Filter /FlateDecode >> stream
+ìÇ ó»–5w·ùbdÉÒ×}GH¶7ÚöO›×9LÉ4Ûk}Ë€e,Œ‡m¦>Ó)œòÄ0ññÇÜhØ›` }žwÜf>"tC;ËêØK§KÔ³‡¿"Ö؈·
+mŸPìÌ¿Etår
+Éôþ’[L“¹/QÓô½+ˆ.‰”°jfv-¿3çì üÊÊú¾ÈˆísDàu(¬‰»*صy]¿ÃªM]°N bO€ªE°¦%;Ú)€Åb/Z¹ê,»q²¥¤*Ý Ë÷@÷¸°¨5¬$ÕǼs›ì þuÆ\Ň ü–;¬dv äC€"3)ß‹‹g;Ze=+ÈÒ7`ðs­>9À8BѨË{çÂŽÕÒ¾¤±tIù„ÿËE÷ÖOür’ˆ–ú¦å8:™òé5À{\<˜Ô“Œ-ê••œ´úwX&~Õ{TG,SŒ”3ï9Ìm˜åù<'lÃé6W!Gå$q B õj_=»y†fýÑ‚ËÁ‘q·šŸ${\16„k"¡|´¢Ê5.º&Ú«ÔNÃePó<!ÁÛ
+5Þ:&ÁUÂ3î1tÓƒCÝ#L4û&WâVί zëb‘¡z½ÿnIßlöüùÝñ©Õ}VWGuxØ€o¸½^ð÷·ur“Ñþ 9KãªÖ‡Uwª=r-‡ñÌŸ³T
+ÏÍá°ÐæGãžXP~ljmU›§©Ke ôÒ>¦ÍF¾5…k¬ÌÓÏTŒšÖê©÷OÉ {f³Ñ×shy Vñýƒµ›ŠÞtøÑœI_ÄÞM»f-–²—‘’ú?„Θ^Æ ŒyAhHÊpåTÐL³ºÃÁ²ºf A|¯GBÉð÷?ü‡;˜.ŠN‡êÀ —N×/·ðí hnéû´J0•¬7®¾Ó—úÚÂ?‘'…ÖØó‘ößåµÐ§ôÝ} =&S°höUyÖgQ´q&™#ÎÇønªãɨæàU¿…eÄä³u‹îŠJE.t¼–"“êÓ—¢_z¡é=õÆ _"ž
+©ˆœR„PØ¢xY¯ÈÚDi´ô‰àå}Xcƒ@ ±½ÆÞ¨ûà9L5‘µ
+÷ºVþŸMÍ;¥ª«´Lå绺½›j²éöïuˆ,0pÈT÷»Ë„+Ô+&#{2Žcf­sÝ€ýÃý#·Æ•¬^¶
+iÄ ”+š~Yn–Ö‚¿UØÐÿŵjr‹„ÃYjûm2{Í^ra¦8@ ­RŒÍ<:”áˆj«¸uÔ r
+ý™Ü<ÈwyÿìN "5ŠÌdÅá)ÀK.«¢&¾ªŸ6þ "óK.«îw<K} R¯\$Ôýƒõ¨çp¸’úÝ·n#GàÝ«AFù—®¡]j¨1TFÁ3™c¨W^VrwŒe›ª‹‡¦ŠÒž¸\WlÌ÷hSJFÞJË:A^ÄFøSî `Ô[6LþbO6b¸³hÖ²c&­:ED!2è²!·Ê4¨FÞ®ª"[Êg@¹Ú…*
+K
+t7—U9lÄ㶫¬¸î¶M0TÝÏôè!Qp9—JË‚W¹³çmPâ¾*+Q‹ñ+zÑDŒ~»›"[89Lu-ñ¦þ©Ì²h‡•M's…Á"±ÆÛ'í5´—ÛÈ΂_#E‹¿4
+oKa¹C@ô“ÜÞößñƒèÒO)È¡ÖgÏ{Qh¥W$¸Zæ u!"ow}w»¤ÚJÕ lï¡9»
+{»#9e±
+Žƒùd»WÃØ–»«eZ D¯cW ”zqQ™jØÅóOÞšB•«K+Á=¾Qªômý¡>óV›”ÏF04‡JÀú¾ËyÁúgH)†|"tGN©‹½êÿƒb–ïT‚.àËÑÑ­ÙKpk,âž–Ì·•tûÉÕ¸„ñ´þH4U¾ ´Ë®¼¾5›t\F ã&X3ÿl–2ÇŸbÄh3Eqxt,°¬Î>]ߧ×;î6{|% ƒÖÊ0ï|U·-Ü0MÒÈ‹žmì»Ý!?›d‡`“­–"™r5ÆJ…1ÚÙ韄–?Ä°IL„&í«á>–¶Õ^Ñ⟣Œyà…Y9@tV7$¹¯G‰`}œ®ílÓ¤½vv¾´–a&_y¡»XXÚÞœðf³Ÿ`F§Ù‰Ø¯>ÅR‘L•Rx€=8ƒ¥=R#ˆÃÚÿâþ¯(çJI˶LûÍè‡
+ÁÈŸ3LBW´žÀnFA‚óy§yÕMR–§-ùÙ“žJ0›ÉÓ¸Ÿa\ÇøŽír„éSÖI·}Mò¹ýü¿^€P’ÕFxŽÈ7<»º5Y
+Ù÷v•·:,I§=s\~î±—§tÐBkN2ï_l¶ïw\$®Õ×2 £jó­Á ­Üýê/7Ïx*y¤ÆyNíº;/ÄdJœ`¢têƒýnÙ{)†l ÷QY$…CÀÂsí@Õ…9`h`Ƥ'e¥¶ÁþPŠÍ¡p=õý7PH%8‹ž×1Õžèê-|b#c‡íª’™WÓëBØYò~Qm+ª¿9%©5ühÇà2¼³[;ÂЂmWõg'(©Nš‚{M_ö‰1Õ‡FâÚNé> Í?˜'0×#Ù…ð9níiðÎ[Ñ Àõ¦jÝi°ïØ£¬]\;,ëÙ€ó} È”sû“@üÔÝÙڵł1ÅâHY¬/Vf‚ÐÕÉS}LýÜ‹®N ¿êOp=VËö!€Ÿ¦C3Š‚z/7rT‘ÇþøÑC¬CC¶ìÏ7¥¡î‡,
+ÇÓ¬š\ÄòÄâr5óÓXü4T:Y6 ÍröûSRw’ó_—ù=zÑžë ™ÏÝrµ*¬ÂŒ5ýyTØt‡’rKñ=Ç~ÿÝäj”bÛËâ d¢¼ÓPGÓÉÂof! þ€›„ýmÍ@__ó¶ùý󽈑fsž EÝÌ
+˜=ô)I…BêÜq…×ÞrjÉ0\¯ð² ­†IæãqÀ4ÍÃ&G)ͲäžêA1†>J7„¾@eéIºìÓ­µ¿6 &Ükkx·Å¬\«{ F’´—fj}!°JV â¯p8ëíìÊ<¥Ï^õØ'º2®LÝvô¥ËnxAÇöu"Òƒ”‰ÓSØyGH`÷󚯥¦)†‚fi'AïÆ(*
+_zgüçØiÿñì¬h-½ÒVaéµ®/m UÀïX}um Ùyž¹†r*B7xÍÞ7C{}óÕë3YQ6L9mR±šd,ðÔ\ƒ\HŠØ*d£²6s´X~ãòÑ”®oïÌ®òsý{lìÖYèfRK…±BòG!žR1ÖVJA—»"âM‚Ë@»=-˜Xa­Œ¾™OÌe)af/Æ ¾W¶'$ôU:¸]YÏTÁÅ#µÛYê1ŸÐwèSzy$¦´ÈœÝ¬ +, ƒýïk×Ñ!šP˜¦ò»³¯æ¾»|•®:QuDÁgü’ìî7¬ëÒD@r%ÙЋ>’2¨3èC¹²f:`ðx¶p½”^BÄY;E1©ss:n¥nO€‚ß
+Ê(QÎ?2'+`œñW7nÔû4á°ë×sm­N¨/ï.ƒã^—ü¯Yº¾8Ú‘q"WæÔÃGÓìÈjK!>b»Þ­öòÒ±ÇÂÌ|xzFì¥P€=ˆïîþÓWî™Àñ„}Îë>ò“ÿÃýXÅ…“]çÁØ¿Þmk÷Wg?ÕRò>þÐj³ƒÇõà!œ;Õ>SaêÂHº;€¤‹¸¶\Y~²Í:%>³aa,’bå(•­®rX+&¶ÐÁ¿/MÙmªñåløÎãÙqš»lÙì§hPøhmµ2az²]ó¡Î
+²gvÓB|öÎKzàÞÌ!Mx^¬z.}ó ðÅ…:«Êìз[þa7s-£ß÷2ncZ³€ØoÃgN²ñ6Ê®U‹2˜¨ŸW£#³DÚš§&qö‡M·1ÅIåͼ…„½Ï£}¹ž! Ü#ëuß”ñ³A€Ãß^ÿ.YP¬bM’s ©sªÀ3£èr‚^¤É:Ƙö<P3å¨H ±u¨«~ÞmŠÜóà<,(«u"·,Nè?Ó’þM8)RcYÌ;çG]»Fu“Ú¾bV6Ðâ |$ÚÌ‹“Î<ühÎßêNE_¡pT©"I&åü­”7IbØEoÀÌy‘GXªÉ9Öœ‘Z>ûIïÖh †'e‚'áß©]ѱa<ùáÚ`o£µ5&JFî_òå~6kw ä_EÂû‹ÑìÿhAµH“>«“l©GL,Hy§°ã-BDó
+eú©‰LX*ï•AJê¢ú4Ч`Q<3ë€ì3ãi¾¼% þGMMzŸj&Ò¢®ËÞîãöB°^ú‡­&Ë"ckÛ~¶ÿgÜaÖ„š.6Þ2†ôìΘòk>Cz3Bó‚é‡Ax
+%ÈßVIÞÂØEþ? ìæÄ»@W[­ sy‰LzuÐs!Ä ÿG¥6-—œuÔ³@ . ±LFE
+O±Ú½ÇÞóK[–jnÃg¥f‰n\ù=1>¤¿u#w˜9¹w‘ †<jÂ-+°‰Üg®Sa2ëN®ÑY;¶Òø͇–€8±Ê5û …¯ÈñO×±Óâ;õšœÛ=O*†Â¹þ79ÔöËVµ)FÜ¿¿2%:°Œ·k8U2€• y„2<ùغ:Åê,èÍB[á!—µ£¼ÕÐ’ ”}ï,Àˆ>çkk~œ½Tüp%¾÷¹2’µþ¿ù3úfªN9b¦ Å×Ï4„^pa“9
+~°¶]ç'ŠËWƒü‰Ÿ½~;?[ÛÛ 8ðqå¡*µg§¬¯ó;JéËǃl„)qݽMüN*ðªa™¢|àÔ?“Í*ÑCÔ°w¯ Ú  `qfç þ¤¸–CÉ=¢ÑXÀi{)ÁýãØ:-ëÆ8aƒ} Š¼êÕ¬Ù…q…MÖÿJ3Ë‘Ì1> ¡od±ùÔl³Ì¹­‰ìŽ˜”YoÚþÍäu8%R-P¬ñ¯²‡Ý}ÿgM o²@xé°ØøphMŸã”YÈHÉZ¤OÈsy¨ò;Ÿõ™¡)o/`ÊÄ8¯ ¤¤úK4O'ÒC4Fñ¡òsµÜ[íÅÛ}FéG÷èƒãSW‹ëÕv”1¹­WæÑÓð
+E¹µ~Æ R:î¸QΓ\ÈÑñø?ð jaÍ þZ–=„Æ8q¦·w9*w\e\víO“
+ÇF‚ùíšÊ¤U™–WnsrN$ü]þÁ¬p#/²…uÜçh(¥ËÝ?
+B’A2ê¹+ZV+}#ƯGÖÕµVºWî
+ˆq㊅4 pOÇ--VýÆ/55¢;Î~ô|H$0füt+À]‚Zݧª8o: æn·—éÁ—cäC?@Æ“¢éu]À.Þ°EtrÖåS¯ú—ŒèçÅUã‹fµ¹ˆ^vÊÅR]ZÐû6-clü…&IzD·€î]‹Ï v*w]N¯éNÇ„©sê)O ±Å(šäVçÕaµjboöwÀeÝø9íÚ/h¹aMv˜ÊW¹¤AÚ)e×Ñdçï•EáøKo9r?®lûz²Ü‚ˆ– â0’” kcÆÞШFxÐqQÏ\gð9XßkêçUšYžp6U!À†õG3þá6êpä3¶P.y¨ï1Ïfvp…Ûœx?ÑáãNNœÿÿ^±¶pzžúö«L¾4Þ÷"Œ=Bs«ntÎmû÷ŒÔØãZ «¡r;6
+“mk›ºPZò+t‹èa ùÕ'º`¹‹Ý®b9ãû!uë²ä1ðÒÉ$À°"| ¢ÁHÜ”^p³E«Ü }MÝ_™Ÿˆð8OB=ûo´­ŽTϽmŽM»Á7×ü:ŒôG
+o‰hþ#ê-Âiö×fÍA¤ ¨ûq1 Exâ´±7¾ýÀj0Ê/–ƒèŒc‰FÛð\cë¶QAŽ´ÒjuÂDì÷«I¶¹ŸW´Œ»%hÉþÐ8XÑçåÓÞàWy(  C$Üí!7“¿2;sÁh¢ª
+Æ>àE(ªwÄüƒPRR4Êœ­rHò8qupÿÀÃXÁÍ7›§(ÜR1)´¢Ÿb\˜ŒS Á>Aj‹ƒr•¢£oÿ/'E XYìµdRKÂDJéJÓ úµ.¾'¨•ˆNêùk†Çä[¶2T=Žwµ6pÎ%Ž-Ù]½µv´ è̆k—HN7›fL3†6D´™VÔNnûšgw#Ø–¦.(za1X9ó®“l8ªkïšš® 3ˆ>æà`"DßB•ÓNO^å_a^Ó‚z a]»ÌSèÒq@>¶h/T!$ˆ’Sš™ãxd˜N‚3šê±b$)ó²Žuåô{ܿ컄ô‹ %
+³jW¥`6¢\ñÄèy”ƒ.€smÄ·7i½’ƒ‚¾FáHó¢â›¶ðÚE<Wþ4 qÒ¢ûPáêÚïR<Ûol¦Íp˜~Ë·¥7h®€Ý³K³À!ª²=W:cK*œŠÊ‰º¹ÎÿbR<£vP•G¶âx¦¦IK­3}ž ÿ ‹šÓÔóqi™1‹'d§|C}¾ ¯¡~ëµdÕëÁwŴئ5AÜGqÍF›ÉAëeÈ6o*%A‰(±,(‡æj~먶Ûàç5Ñ?¢+Pi+¢Ðø³©„,þa{:wœ;V1Ž¯ ¯¬¨M–´, °6&®«ÿ]R¦íhnÕ
+fÿ~™ŠQŸŠ”VbŒ ‘¨ðEWáKÉõ’Pux‚½ƒZP tÄ' &lJ—7ËÈ0WèüÚ-ìûðìe,×Ü´@%¯jD†‰4ñŸßk•X6P¢zI‚²øí¶ÙÕ#yb&ýÒNWteùð8Œ™"Gg} 38=@É åˆ5¢i?VqÈŠ‚e=ïלõ ï,[^†“‘T²ðqnæ 7ŸÈá_íÈ!Ç$RqïW–Ø(›‹(èç­à€"ÉÔeúH̳¡Gw9Lg2¥ª_ݳ›ç—°­ÅP'Ð->‚º8 WtæfÇ=âëÂ#Y¦;<„Å|¬ƒ¸;^Ë?8,Gfúòñš.G5ÜŒœØ©â‘¼n–rÃÛÉ|@f^¤À –”™b]É'ÁâDZ®^ýÒAsÜQ3Î
+³Î¹ 8ÀS±i9&¼ò™éb:^e[’º±S²}[§XÎDŸÞÖ9œÝ„ ›o”(\¥Ð1s•[×lƒÐ—mýŒíy3ÐA¢JÇæÛì<²@Ã*£ûó©Îàk«Ü¸+ÇÈ¡N#d@;láHæžÅŸ‡¹pÕ7+æŠAÕš«Xˆ9déÌpÉ^Çòééšh+à)7d}2Œ9¶”fÍétÝlØÆx¼×Õ~ûÂ6B/]cÀ‰þâ7zøMÆ(r :ém¸õN&«Òp4äá'!³8JFÇÎÐÐ|®Ýlfä@iýa–ubÅÒ“ÔÒ endstream endobj 96 0 obj << /Type /Page /Parent 142 0 R /Resources 97 0 R /Contents 98 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 97 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 98 0 obj << /Length 4368 /Filter /FlateDecode >> stream
+™É;tT—í¯>¥§U:OëŒsªÛ„ÛƒÆvªu;ëSzdDi#[¸7¯ëWꂧ{1Ú~N/S~®OZG6·ÈFõóß´E¡'Þ²v_ÒMÕ_z¦02+ð ò)U«þëmá9N0§*Ãe7ÌkÍ©xócÙÝw@†L:ó`V\&ÄE<©½-\Œ¤kÎ}øÊâ„? ¥•`Â…ª›eû€Õ‘uñÓ£‰á%\/íÈQù˜²¸ËjZ· *àF
+µ]Ç‘ï
+q¡@-s¯„u?Ìà¿ئx?™)h×4w™WZGÏô¥:KDt4D²Ñkì:9@»o¤ý‹ää’³ã_‚æAŽZOLÜü†ËõÔòŒ¢Ó··.G’a–b2n7Ûé™F¨
+\eŽ’õ§ˆ·xWÒ_ߟÇÉÓí£"=ž’JFÊ0ŽÉqWÌÎ_ÿƬÌ%
+xë'.èH”Ö^3S`¦6Šüqå‚c眅 œ…gó›mƒ”ÕÜìNÖRƒþ$ü„RÄf®D
+«œ*rl8–Œ ×Ú!Iÿç|/Œ,bî¯áUMXºÄŒÂ7"ÅjûÐÛÄ3‚<ä7l;tÞ¾[eÔí§ãŽ v®ûÔfWû…&z–oj #ÙcG彘_\ù>hØsLÒ”(é**í–ON)KߥˆTTõÎ¥ .H8Û¸ëiÒ0–0L»\ì“«é°¶ óq(RøšmˆƒVnJÌlªM°…f"Rᥥr~–\‘â¼
+ðh!
+ô+ª±ÏÌ G˜â$Ñšò|¢åY0¢½á”MŠ3ËS¥ª“\»Ÿá$àl’asär•‘αèd€åÉ‘â. Ñõ†v*BŠ²Oxót!‘pWðízâY´¬4ô‘B*åtŽ(–’•Ãó°7S—ßßgÔñÞåæÖä­g蘟U|äo÷6b[ôO ~È»õ¦Ö¼`Nð›åÓsÕÏÓópѶÀS€E8*T¸ø*+<܈°'ßM$Bînõ»Í˜”‰Ïx-­^Ø7Ø\«jÀY:Ó–îÞÅ9˜;Á0ÓØpÁáh\­Ú ZcºÍPc5ø²VàÔØÔ{ËSþfI2¹i¦(™æÚþ÷vV0[dYÄÕñU²·x,t·'‰3y\½³§K/z>¥ 7Aꟙ³¦ƒaô/†Ë£*¡XÏVV‘>'ƒ¡Ï¹¯5
+Uødc´ƒ9¼`QW™âÉQ–î7al¬ßŸÑ 4rÚ8þŽö<qŽg~Ac×ÒÎà"‡íX4bfŸ"’¢È›:
+y9Ònœ Jît0Hc|vZ˜X8h†‘wWöÚúßãϾù݆-'´ûs°à_–@"-ù.YMÔ7ó¨!4aU ·úEãÎã»5f…8Ì¿:m°ö×­¥‡†Åâ³Ì—dfR.ÎTîMsÝh2«¾‘3Ô•™êÃÊXð‘àr«ò6”›™2³CîÛ¥ºÉµ3p%oüÍöš”elF‹e/»œ{º‰ÍuÀƒŸeôÒèp—O› GgŠèÐGÔèáLE·|°ß?@'ZZ\ìýî'=É6‰ÑiUM®PÐ’Ý:¡×ù£&Aº3 )Â/]ä°†’øÓfàÿbÚfÒÇ^MÜQ}=p㈠­1E‡-¥¿”)]鳯èð!V¢„Ò˜M˜Ï³l‡ÿ¥’†2ä-…ê¾Çh@ƒnå7¯%6=WZÞèã˲ë#ú¿”‚ÏÕÛÚàá¨Ó²&¢TÿŒ "rºýnÔÎrj¢°Åçs.\G
+V­0ÔÞ]óÌ·ÝCÄ ¼4Ó«ìE”ÝOv €’Å+l'ÙƒÌÁ˜õ\&?¡è`eQ–o²0ð&«}’ÊÊ öà÷ºh©ÐnA
+Ï÷ë‡rˆj¬f)KB.ÆyÛAö5Ü9Üï#µ’ÙçÉ‘£©Òúˆð¨bÒ~ú’š‹ øVâôþó
+ߎˆöõëÄÐ%ü5£ÍÜ'Ô,ÐNóQ(çðæìpÀ‡ +"vQJdÕæ°ÑJ<rB€Ö‘KÀwX¡Îóé¼í<;ÐÂh€Ã@Z£‘ã|NúvÍšêfö[D ØAr“$ù÷ÇZo©`"h2jÂw^~£P3¨ôe∙Ò.OLð
+{
+š?‹.\®ø ¤ÇIÓ»¢êHአRYGý¼å/.‹*_Lþ†7J Ó›Ó[Ò_Y€Ìšõ
+‰t×Kíü€tœÞn1ÿ¬ÏC(Z®é$7 'ß<+ËB”Ì$×ã9úc^Ù,ƒ-3º›þÁ±¤°ñS«Ï=¹‰îÉ©@ùï (ÉfûÝ'êZו‘P’z ‚ZüûÓœÞ~YßNˆžó~#„cOÿO¼>ÐçÒ
+­{
+'UëèTÐC´Ã<“s¶¢/Á“×v­‰h»räÐKp¡q$ˆ°¾ýM‹b²HL3õò@€Úãhë<‡¢Ÿ—&(”T±`òšÑQRY{˜âÆ”Ž~ãו˜bã¨nŠ<D€uÿmÚ¶ÛüìÓ¨óÝñÑÃ"yÚ&e•£®(ªÏRP#c\Ì(ñed!"Þ°®Þÿû²!4WâHÆ=÷
+U +qNÕ¹^
+‘{Tç$2nÏž‰ >šÞ(ŒëK¢
+CµE+€ÐÆ´õû´5L Êå'öÔ)bW(M°â_<l›Ò Ã»£`yÁW†©W®piTÓ•§õHBtÇ%ƒÞ½HèF<g²§¬Í’ƒnŒ„dוƒ-¼_æf* Xò§ÜÍ
+ÚϲuÔÒ‡‹HMjm¹Ñ­cI…3DÄiH˜Šû¼‹J¼HÝ!í“æ@²;_Õ`ˆ¿Å"Gôh<ufDUˆ”*ífiê5ÐÚEÎÁa.é2°P‰0ï¥ö†ˆ k:!õ‰Ø+Èsx©êâÙ«˜çP~ “þ.å
+¶ÿÕItÅÊu  1úÞÖáÝÖ·—’u×=–‡¬ÚpMwD¥)ñÁxùùJz€ 6 Diô‰F÷ tn¢*̲Gw—@á¡|€›œØ΄1t3åÅݺWßöQÌ y¬®ŸºZT]sX ÇåÜÞ $Èæv²§DMú¨¦Ï³©®2(¿¹ÞLj¼¾Š–=›bA*v(>é2 ì£0Ƴ̗N/IúTl<D•3­ïÄ!RèÙÿÁŒ½à²@¨¯r†Þ7Ðq/Q{0ªéj†3iZ¸!œò~I,;·Éß*c)¶u§¡©ko¤=¸…Gäñ[-˜½•u”=•æ3u ý)¥UÆàHGÊáÈþé]ûÂókUI*»ÍœãŠåY¦Gï¡ûÔ(º•1Ésœº q¡Î3Xé2§.ÀÂÚ­7²ß
+·ÏÚ`±©Oes2Ä k1æbŒŒ{xB=¼é]+¶ÎH…TÆÚÂuP;‘JóÌ|#(\»jºHªõüÙ´0g“Ïá2ݯ܃yüíR=HÀÐ/Ü…bJýøÛé°ˆ?ú÷ª/µ8§·ë QMïâÒI“!×ÆAB9Iœ~ºò,ðC"—ú ’Ø.(|FüȂΛÒ3{ 9ÍsuLJô VBä)rÀŠêrŽªK[3çXTy”ŽêwXÆ3ªHùî=
+ä€`‹ò=Ó…ÅÔ3ñd\Sž]lIôAlÇâò°­I€væÅä
+4Œ;úšW@ñÂPÝѨY;àj¦0 :\ŸPÉýÓ€ll¦ Šçû}ƃð+î°È×ÚÔg‡Ð㯌->q¶M—*#úм~Üá«s“8ÿŽ²Ï:›JC¯Ô:¢øg¬ai娎>Ém+';j5tàss4ն߃霤›Ù—›n˜ÕDSrÊf‚‘". CÑçEuX¸©ÉýtΟz—/øD’ƒ‰9ô½Á¢lÿç<•©´ æ™_«Ãº:pcRIé‹WTп!þGÏÚä{â™õ~
+DÂKÞ<W¯¨€ƒ
+gžRÝ[#3ù,0é>ƒ®²ÜîQÌpæÄŸº„ÀÇÒ”L3žk$•=‚Í×<ØøHá±—² ׫Ï.uî”ô#Œ\«˜A1·V”» V¢e5bWv†í—ÐIÏO9Ùáé©»çá˜8p!‰a4}Тo,àS&yŽ»zÖá¥5Uo©êÊR‘zsQ´$‘‚Dþ4‰Ñ6»¼nõ ¹›0]qî[¨ùOìUë2y#Ùãÿ•ÈMã6¯ïøjQ›2Ûãïöý½$í½M@Û¦6Ó‹¢§õ{faõÓ–µ‡¡š÷=©‚‡ÖPô œñIÃn€7'l_j¦ç׈Oª1Ò¾üÖí=«Fê¤(pý»f!"(s6«’¼‚:¤Tü¡t¡ f–Åâ_é¯Ä“ƒäPîÀO%—lð&2KK â{gÁCà·ôÞP|Ô¤©.`CÑBsnËE Ì=‡ÔÙ:rMÉ-aoŒW‰}Șôziº®;ÅÛÞ ù’^Yè„Sú&A·ˆÛV¨Ç­ƒJ[d ÅX\…?L÷t½‚©A¬›Ÿ{o/Ü
+ÍìmJô{òK$AŸiþS.>–/kmדּ‘Ö—‹Ÿ½=ü ðq­Æ
+ lv¥hTÙ¼VOå&r8¾G;çëÛ±¨{Éó»ÛæöŒßʹ÷ÂBÙž¡q&Gt¼ w;Å{¡Åö=›|´ÖZÖƒ['KßV×J =Ÿ: á®
+­p‰øtY¥¼]sÞ¤åWòýo :ìWû­¢­y5ç21Lw,=“D^§øóêµ¾š¹î>ÝeçøO³¶÷ŽL¥Eh¥ãZ»„ñ7MSX<áüÖH’òòA}•›/_4æßå/jaå;ƒ“gýº$6‚–j`[±ìsåua+{C„Ö´R£sªó }jªÑ+fë¤R. Gò︄¢ìáp5ÈœŽš¼aä”ðÛ›ø8h+$UéOU[€~2yu†ýúÆÒEmî^csËGŽœ;‹iJ:8óѺ6³H$
+ endstream endobj 102 0 obj << /Type /Page /Parent 142 0 R /Resources 103 0 R /Contents 104 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 103 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 104 0 obj << /Length 3912 /Filter /FlateDecode >> stream
+å`‚ •öÔjᬚðoåwëQ}f€» ¿®t33­ë´ë)Rð A†€Gô:ΫdÛÕXD<tëHZ’n±ã«ÊlŽ¨{Ô
+ØD#}ÁíZÔð¡ª|(÷ÿᶱÇk`á KÇ8_FÚjÚ¦ŠzЇOv¬Sל'wU4U¼¼ºýLÁ÷>ê¿í ¢Ì?’>" ¢SeƒêkSóºÒ´Ô…Z¾qiŒâPûcšä«33wõÛ9æ¹ÍFMý1’¨>µ5÷›v†íñ\в¤ó½ÑŠ9cœš.44-A!À²3D%‰™h›FÝõâ_å“D€äû¯æ±ÌHJ`³\§a”@Ë,¦š5KY‡k @4öº3v(®Ÿ±±0•«qÀMjˆoOEŸ„¤ÆôÖ±½E´Z²žuyì±;«ÍߦÛ4ju´ˆøA#QœÉÎSðg´ý—˜ÑcΟ-åt›PÎ &cwý³nqß‚u÷ƒq
+ç1Å8EŒ«Ò/–G‘™+ܼ‘fÇøƒK¼µ±Ó“§>Ï/cðþ@Së)€'îS<}7b‘k>áx!·Ù<5è‰ÄmÌÛAg2ʽ†ù²ã·cû¨“<‰”#Ý*‰ó«ÿyƒÎžGUzJ¨¨ÎïìÌú©©‹Ñ yØÈ°8;6ѵ¹Êi+VÌ¢þ_ÈȽ~
+‰›Û&›Qñtƒ‰|Cƒ)ÇC6(Ɇ͘ØXd2¿Õµ­@Y‚m¸B(v‹+8>îŸ,jZ5àïÎ ‰èµ€å¯lÌu}¡‘ Þ<QšbP+Fã´Jgy]uã¾¾Kc ÌÜßÀøÏÙç¥ÏÁÉò`Ähêg?3]µ=[<EÈDƒó*ŒáE1¡QDsy¬íçâNõ²ñ¤¢a9ˆ¨IÉÐk;$û7€Ž-Eªù%´·E›\æ3¼W– ºÇ´¹D~²¦0ÝƵvSZ²ßÙ‹’rÆwL[ÉŽÄ{‚X¸LO8^ CQ ‚4a(z^)â´»—gæVµÛ+*h.†¨õH ÔÔSu=2&
+<‘ž1–…I×~L`pq±së}e«^jÓ¢žbUPæ55ÛåÜ÷iµRîî€v°Ò›9éë6¹xQÞ’© §#5û/¾§“c*²}°IÑ
+‡Ë Ñ…ö¢@#úLuãò{º§è"ÔUÅÌó,ÁÏiø)ègGHR3’ƒgò‰‘~é ,¾½×QÏl £Ö›‚8Û‰oÞ¦6á˜|‚m¯1Ž·×%螯‹OúR
+N/ ùÚŒ±RF¬¶Lþ«còjÂg79rMó/7b]w.~@AòTKb £t•ü!ù÷ÙÅÅÖ†pG×W–á÷Àæì»õÒê¼Æ \TAv¥Ìa»AÔzeÕñ®u*0ÿ¢,WËö­i¤©ýÕ÷ÅÒÛ2šs9Óçÿ/6›áþøV„­•›¡Ý¶j½Ká¡Å°[¿u'ÐãÂQ%£5ZÎIhTÝ܇¦Mƒ&¥ý²¬ßI/ÍÖ9Ø2ïÒMó€ÕY¹z–™ùS äâî³âòV©ú“_K¹.ŠƒiJãët°ìcii4q:TÞUœbø¹Ä2ÿ(µ:_î,D^`GßÍ´4þ~GIìsí¼ÖÇ@¶¾d ÈV)_ôG§Ìöîå9|·ÛYòÀèÀœ—PÙ·lHóLŒ'´V’ƒèIJÇt¯GõWÄñ¿ã +‹
+ä˜c‡þ¤ëþÌ«_Û¿Ž’ö7(®ïìsˆEð“ïší8ù¸Ð-a² ÞÝç¼âÄÿQŠ Š«°ë,ŒœÁòë;7’^Ê9P¢±©ýèÇ ;³P]˜¬‰ç£ˆðO<|mé'PçÞøkÆQ®2éeÊ`t·ß+dȵä‘窘€kN5MLf6F8& Pï¦öèe=ûM#÷ÛU¢;/D2
+y0¢Ð# J¸/ůÐ*½HD§°ð€ø`„·S±àŸ7;»(£µßiEñ$©
+Þóâ+V‡W’ÇsžUƒKO¾DY¾Ê‰>R)¹ühs·»‘^h^2ÉmR`f)†o¶xJ22]×ùùåDÕƒÙ¼ª:¿A4žÀ/.Ôcd/Ót¹µÐö=Dz­Fç¯tègÕFŸ¡ÂR%d
+8£P4B¦Ý*"’ýjûÂùo­ÂI
+žVÎ×- »©¬SîÄýuè褒=8‡€µ9YøzM7öÐG·ÂÅÐílT”¿'PèqwD}m€ŽW,vZ~•àŽüéÅCUƒtîýõ v+ØŸóC·)Íó‡-Cþ,ErhX"´;ÔÎÿ7P‡ÍKñÔ)Ÿ;˜DÁ˜Y!úh3†*x°H{ú«˜h¼¤Ÿ",¢Þ`[øÁüøEþ›Ÿ·/DL§öf`l­RiÔ%ïuª…ç\0yv•?Mß*€¿®»ÒÅ|«™'‚á¹G ô€NY¿BM±í|‰’ó=KŠzÏVØжwÉŒ²Ús(
+äÒPSÜ°Ó¥\£QWMΨ÷£´¼üf°æª°îÖ‹Tf%î¾&Œ'"+ò?Ò¸oÔoMëOÕ4ÿam| <#Í<F+_öQËXhšÚzçÎbEœâ‰¡Q¯§³xÂi¢©î÷³ÇÇ©ð*'GKŽ³>\d‹‚ááMÉ„
+Æ”Z¯nY!
+B;0S\I¤S Š—Kÿ
+{–6çæDcåª_E]C>yÓþþEàÏ:b)&th
+/Õ¹Ôþ3)4EíS-yÍ›;t`OCÁ<­âjŽÉ<a)tPjrèpÕúí¢µðãÒ+[-×oµˆ¶dgС²n”¸p‘Åöœ/`%’ß¼Ÿ×d)Æ}IÝ }Ò²§wcf·±6w‡C
+¦dé‹}ýKÁª/—·õ†r¾3¢’øÚ]‰iCR\}Îg‰aƒ‰p© TM2éÛ¾°2 Ú
+ $Í2"hü¾¯Î†”‘XšŒ€'Ï[_(µÇiöÂeAf:N?ñPwìá¨}Öµ=ñ°<)×P]jTìµi½½–K@ëïÕÛãŽãìy™½r«fÁ}èÕCHðg‚ŒáßýË0>B½‡Ä|ÐKÃpp.ìE)Á#Uû÷ Èb@įmlùIC´'ìšw¥}ž4 ¿ñèÛ¤ßÐR<>¬<&礕ÒOaÉ#+N¯  Ý=„”<'yoˆx/Ó„-°´éäw„6¾—qß¹q5æ7wM‘[ÅË2Îô›µ:ÐÕ^ï?ï‚Cd§ÝþØùefOêy§¹JzQ;QÄ‚rá«d[”z¡é‰È•ÙuÚ©wâ†ÅI¤¡o–·¡ÁÉ𸼫|a,™#W·Ó8ÙRÏ`×,Äç¥xuR
+×fÔÓïF> ¿{¥A È°ä@e XëwÁ¨ÊSXi]k`JirÝÚCŒ~³K<
+Z0›Ëä
+¶10BÍarÝfrK»ÿˆL^¿`Ðàó=Žƒ?kÁÉú¢ÎÃü“p€ÕëþÇi8ã"¡ë柼Òü:úI€'œû<uàlgYœ˜ur„€öìÞóàºã£J3ù‡ÀOiœðOP„áÝô¬ž{ˆÖ/ˆà»¿45æÃ÷ endstream endobj 105 0 obj << /Type /Page /Parent 142 0 R /Resources 106 0 R /Contents 107 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 106 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 107 0 obj << /Length 4393 /Filter /FlateDecode >> stream
+'D³%E#òJæDZiÓ3vÕ¨qû, wV mÖêTyîV
+„¨ãçUè·
+¡¿vÏ_õ¾e-©w]ÎÀ™ßÇoD-p%T›6}7C¥¤¹Íz)ª.‰žº$v™úò'âq·N¦<BV½n¼$AoTo¹iDCá‚ìu±‰–LKsç¨6Ø:‘Íïfešg\TDJçTc¯ÆQsìlF¹TÖ`Ÿ$%öf§z›&ú4ÈW‹4;ŒsÔû2½õU›g;šÅÐ#ö¶`7
+'GÿKCFwó±DØ‘ØóÓ[ À)ôÄçï
+¢á„Ñgb°ú¾Éž`ÛÉð8ÚìÛkáÖßÇ€zÀˆ›;¼(jÇÄņ˻"§…ñk*¥“>‘»IÙæúqÔzÚ¡R­ÃGQø0š«\òÿ—@Lا'a"{¹ûOùû)”=£ øØ—ÈÊÑiªRn±Ï¥Ü5nD†äS‡_Y·$íEâÎqòU¼›ÂŒLT_ÆuVº÷dcQÃT¦ïunÂ
+êÅQ|; x2PJIÿI…,ût°½ÿ'Ùê¢à] âæa=˯ÂÌÙæx?Q©:ð`wŽ½×ܲÞ™£ß×Õ’pGù—Kc¶°Ü¨È#¤9^ö7rȧ[1p‚i ˜`Dál «`õ¯Rm Á²zT $!.LÑ™ò‚ù¾ÿ¦þèbT³ ÌòcÅŒÚÂäyö(ŸE
+ç.áU>Þêæ¾Ý.J>A¬nZÈÕJמÁ‡ûjTüL ŵƀ¬‡¼‰FD‘¤Öj÷ƒú{
+ÂvJñóš„°å/n*ÀÙþ—çKÏïl!¥U͵y#ÒèŽDpwÛš»U†TÎò‚ˆîÕd÷óJrÑ1Ãl©b5n\TÃk[êS3·)UeÒ¥ÿ:Wi>•Y…&ô;^:¿BO®Ñ»¼‚ŸOö@¿÷('²‚oqŸQ…É/t<nP’Ôi³@7<Ê1,*/Éþ2é
+7“n^L]l°îõ¶6êœÔ“dIª³ pApŒ•dèm$¥„ºÈF(^ñEÀÆ­AdO‚ÑÀ;¤Lj–¸‚×´þãxš‡Cdþ…û²Ï‹ :Ê:hQý_5ÌÑ÷n˜
+i‡[à
+t‚C]ü!šÝ2mœ?»Sb´ÀùÜ^c\‚3¯ÐbL·hœ%àÆc¯‘¥ûÀDùŒ3ŒHÓAã½#¼õ``Ö™ÈÞ4Þô‡”KžÓ~ >›éŠKn’¼#ë€o?sþ<ÒÆ{xEß½ãÄA¤44‘¹çç€Ah9nç
+Œrù ~*L¼ÈCCß²AÒqàU(“dF:Ô…E=0eè#µ¸’ãyü 5Š´œçàW\)ï:ï­È£ÓÛs3þ–B¸(1Ò}Ïà= : ¼ b›’FÂÈjîíá2Þ™&œ;¦½Ü÷ºeП6taøF\j÷¬Xš_ fšïø-æí7ÓùRýÙZ{ÁlìܱŠ?¡gðê‘h5f®–'ÀÄ5!åL¸ [Õ’Ììµîå8ãìÉ œú-M(©­ùêÇÄ4# 1çÑáH+ £¥%y цðJ UŸj–Öè…QréuX .îÁ›'¥ÑŸ²?: t±
+¬â•Z`QÁÜÐAÚ›jxnbËñPxÕ“©nQùqøg_iÉ%¿ï"œÙÏûuЖkÏ`Pw‰âÛ©]A´ oHîrê<Ê?—›Bí–|ŒÆícAÇ[Go³ÎͱO^¶ö«FY¢dÐû=ˆe)™n* N2táªìÄ{&Ô¥_”ÅtPIȹ¶æ’’Œep¦ü©ÞÈ(a
+U” í%ù‚˜¼°o¯h7f 3Ùé–ck —0”lëP7ÿ«½¬)ŽâqÊx»òY‹ž¼_‘Nõ:’±Ë"Ë?¡­ž‚Ch ù…ì~‹ZÍM )}¥wtïñºâx]½µÆÃˉ SÛ®ÄÆq%†2F#³ÌÞ8Xk½ î„G±ÕQÜJ6•€ÞgYì3Ó$gÆÕç•·W —%¤Td7s%3£¿Rª ÿËÔt?ÁG…ØÞ³@y9"¿^‘6ñk¢©›{Nbð*ç2E÷f…O8:FqQ1 ¸
+²ü/ö×ó‡Š` è}ªIìˆh>G÷_¼àæOäÙÖ„ªŸ§È¯bÈx-î¡èù-žþªÑ[
+è ·åg­óQË’6ý<„ˆõ`Ž™„¹> È0ó‚®7kE2Æ·¥€Zn ”[&î!ø
+Ñ‚v‰ÁXãðõÝþ¨]<Š5mBt_ÿZ·Mì-ºjôUçÇ^<Ç•‹”¡€.9¥q¦ÉÊ€f~;¡ŠœwàPlဴz tóñ¾î1ÏòŠ!ë<ôy#
+§®ªQ:9³DÐ2è\r6uÈ-
+çÌ?bàþûtçÃ.&ôÂî9=¶*ñ‰^“DŸêqÞ}4è¥áX"x+"yÏž ­8r±ÛÁêØKI'Ö^·î äµqá!.žÅhtõ"ß¡ñäúëØ¿)¾»„ ­AþUSÌô%ó’\³›zéf!׉®Ž^À\0lѪÔ9PŠÆš_œ&õÔ³$¨J1ùvjUçp²†Ú½e^”'þÐAG}a¼áw¤¸6~v>± #ÛîèYõ“su‘‡94Èzþñ ìMK²¤!BíÇÚDáÍ\p Ü€Ó¦¸QO©~² »<¤TØF#¶ ê)®†«±hã 3^ShĦ em ñsB=2ÿtêšeŒ¹é½VLÇnÍœÓzPfz/]æîÇ!8*q4 endstream endobj 108 0 obj << /Type /Page /Parent 142 0 R /Resources 109 0 R /Contents 110 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 109 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 110 0 obj << /Length 3845 /Filter /FlateDecode >> stream
+–I2Ý8ã lá{f–YÓÊ7¬¾–†g0­¶úZ kuŠ€{
+âÖò‚ÁÁ?·ª8y‡öSš$’š“ÍÉú×.r,TB·ç_2c{ Læ*‹ñ•x¸üÄ'-ÝëG7v¼òWŒƒ—ªŽ¶RÆ]Dôë­SM­âÎp*$M ÝO"ôê÷LiY*q üþ»€6ÅÑ¿Œœç±¶u֜DžUPú zCý8„ýi…BmÀ’¡»ÛÒœ!=Áßu}^æÆ'—c#r°rÑ£³pì"M.$üBQáÂ͹ÿ×èÓ&vûö¬îìÊj0[ð—|ƶQfñpÞmc
+­õÕpi?Ö4.¥#ªÀlryíϽñvåLz  ïMû¹­ÌÈ,ÃuûÌÏä0 ¾rŽ¸S[u±aM—º±¢ð"¢VØeåhÖvÀ£]’Äëö‘Ý*¯Ð‡)À_ü–äc“•¸5º÷3‰*x¤…‚:„¨î¿Íñ÷Øá3´€)ÃÃЉÛz»UöتAhEœ~Á7¿ð¯^$KM¨{Ìå2:¹Ñ»¨^å,°ùv×ñÛ~„[××ïljD•âØÆ¥•$MsÊà!/‚Ygˆç—oyÐÆ5*$oTs×k³ wnÅãiiK.†àÇNÔ!$vC÷‘6H„‚¼l"¯Ãða‰ä…R)rëïOŸ¶.—Ù¬’ËYšB2»íA;¯Tõ®úÛ‚@…o|œJõˆ2%”«²†g<œ¨Ô‘¡[ý’!¥>V
+g{ç FÍÀzDBJÓ¸BaÒ3ÇŸdVÖ1µ×[®åw—¥Ú<ÑløÅk9Z›Œ<œÈõXëÚ + ­©‡ˆ¯ÔUˆmöØ%n¢fûòéW}áÛT—k©a{Íå‘{,Å}:°.£ñó-(d°Üö, ê$çe Õä³ì´â‰9¹í6šù•õ¢÷L’þ¾ñÆøú‹:äTCP"…±ítæ%ä2ø ®”Õ>F\7Ú.þí»ïHƒ=“3víd+¹ózÏž‡Åˆ"²¶ßÜNL8€·ÕtΛ]t¨k\N
+J¸ ίŸ®ªúo†pÁáDŒ¶ÙèÒ2@3Ç
+éaEîúõO˜p”d‰4J¯
+p;Z뢮¸c©åâ02I6y|[Ф«–¦çGGu‹žÆ‚CgaµŒ/Ó]¥9ÅXCö#ñw‰æ˾—N£#ÔðûäQ8‰<<˜×9â³Ît1.Mž#Œ¶
+±?=s5A…¶„ÞG³µ1P%Koî÷ùì¾±¨ÜFc^©„k°
+;¯C.°ŸíŠˆã7VFH\?jX3ƒ³Ù^r.®ã|ó*Ùƒ\«î-oŠo9HhÏ4åE1îþmñõ:žö÷ÆñÅŽÔâÜù%É_&ƒ¥TT›È»ø\3€S×
+ȼó&žýA×õ™L© û5Þ{(}[¨ÌžfaO;5wëw¼VëIb¾–ÌËÍâ¡gÅO¶Ë_¹{{Û*Ù7íN‚M·oS#Ÿ¥%Þyò"ßXíLÕsF̲ž¬DÂp«óŒhÎJ Êó̆wÉ-ZhÍFÍŸ!–‚|]¢õ)ä5Õ-ð\DS+°2B§6^¼Š±ø#û–;X+:ì_€å³^À¸ç‹éBA ÆZëskW>Üß3Ý–"p1œK©±JúýAÈ1ÑG²Šv/ÈqÕÙŒð†òög›èéY•?GÈ©êᬬ½ápf!Ó'9ïK(' m¦ô(Éý´þC–·ÌŸr5ñ‡å"ÆLXù@áËCfz|„tV£cÖîb£â)«_Ö/òCÑ.VD³{ÀÃ{›×Nçz¢Çø>þ;ÿ›d:5¾?ÇŠn;ëô]”«Zû×ùIJ
+`…k%ôŽœ’^Yí”]­!äi½\<ýÙªJ
+Ù‘–y¸€Ës endstream endobj 111 0 obj << /Type /Page /Parent 142 0 R /Resources 112 0 R /Contents 113 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 112 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F9 125 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 113 0 obj << /Length 4311 /Filter /FlateDecode >> stream
+}¾iápÉ §§vÆ<^u%ÿNoè§çÑ™É
+d)¾¦]XÞa¡4ª÷ˆÉ Ó¥L•s+Ù@Ä-†¶\Y`õ}aÆ
+LК©âÇW]­½L—tý5vùk; ê!Âô¿Dp’žßÒ,Èž£—Ògmò‡»ª"ÐðÑÀÔ) ˜S}2=#pf…IU¹l›Àw¬7œ»Ý8À/")~šo¡ã-<8d4ïªrDÌ1×g_Ùž <¯IÂ|Ýž}¿®N|OäêæBùÀ‘÷¼¨¤ùÜ JØl‰6‘`&´X½È&غ—–¼À­
+ŠW±ã|Jh$«NêªfÙBI´R°dXÅ©ÂÀ8}ùÒ•sò]ƒ=ÝÂìɱFvºßÄþì$°_»3aŠ¦}ñÈ“¨H1*x¼²Õµ“ºšŽ—ßz¶‹+sú”^$)»é¸ÿ gÁjR3JØÛ³ó4@Ü+¶I|îu¥B,ÖÈcÂ
+KK"†­|õÙS%*"w"ioaÆTê‡ã?,]3Û‰öLʹSR­{U‰íÍòìÚwÁ9`/º/Û›ä!Þ
+ÓšEZwwWöŸ9j×RÄ5T'µz‚ÐûÇĆ£7”‘ SPdS;\¡Wíü‰n°æò;ýXQä“ŽJíØÚ²ol—Ýáȃ52Ï×qÿõzå
+k2”ªc8qf!Ô9´ÉAñmÖûGFR¿
+dö­°^%–”d¹£ÌŸY¾svøˆ;PØý¾²FkMÚQĽï~'+ùDž¯¾gA™×8Ÿj=’_Šž`L‰z‡*z ^sä©Û%ÃÅÜ8]™~›E2#iN‡£ˆ”š
+È ¼þ<!‡ˆ›qî³%L–·“î¶ïÈî{÷ÏNšÅÁÛ !þzâ§Õ´¿¹»½Ïˆòž¶p¢/rÔ#ã0ªÖ4Ç)в+ª¿ 1:%AÅŽ;õnè“f€ ½ÓÝlîîÇD¸³ ×~Yx:;GOÍðù;WÐ ˜äš£<8ÕX‚ñNm|"Nç†]kkî¨r­KU»ÖþSï÷Ýý,ÏÀâŸÖË•f¯!×S¬2z^ÄCŽ•tÆ’ÜœC‚|Ÿ–©È,Áë`ÿ[ _gÉ]”Ò×A•êú"cÖ·¦‡T7jÞÁ»;”ú4ì»IßÝC…#˜ [ö¢çR÷r—„ÎBÕø©ÂƒP—ÇÜŠ–:¾?Ã}Ña9ø˾g
+æ¢V;Oþ­û#¯tR‘ÔQÒl¸Xl ÔZI¾O|`0¶:S?»Ï½61ôØ,fùµ©Ò¦ÎXô
+ò¹ˆ_¢ŒÄ8Y­l3aÃëætâÔÕÿäg7B¹O6GðŠ9Ú¨G}ÀæNP¯XWCör¶qtö](¯ôÕ¡ÞkÖX:‹¥H™8¥!¥«C.hƒV–ÊÝD‘£”€c|ÄÔÏ
+ ]ÕBÒ¢eÞ/¾|Ä;ò•ÍÃM”çnKÈõêå{ LoQÁ¾qK•Ñ2àIéš ">Øœšfmþsã+÷lœˆ
+ãžÖjg'¶a}ì â u-Á.óð·´­lée¿K.ÔrÉ''´æ+{iQ²²‹Vq£·%…™åUŠ>"Lt õ¼ñ~`¿Û·±FΠ®Q#=0÷gT÷ÚŽXÆ¿ˆ{¨]85
+ÏqwÄß”!vÍáÎ…PúÂJa¥ƒÌ¯_I&[aõ5.ê PZ#˜¥6s+›ÁµÝ—…b4XÍ·[
+±ûÒˆÄ=‚º2„ûäfðþ•ëE…áåmw\ÂÒYIö0
+º«•^«>8ƒc5@ÅeócZ KÉùˆ@1ü(é‰r!Bù§Ïé!&ýÈxÂ9£#&|¿1¥)ØÎ%:»Zßp€¡`€Tþ/‡-ÿªèiLs5SM›¦jHm.çXà?
+}Á4¨+ì÷bU‘ž
+ä"ó®eÁÙìÝÔ4ÁHk‹ã‡ãöîhL¥°A3úJý´‰·ìbèMЗU’ûc˜ðº›& b½?EoëkâXäÜêâHR”±—sËßâ¼Ø/–rgTn}l[gÝ ±´‰H#˜ý.ËTz¶šd}ý
+ðÔ7”ƒñ5pÂqˆEÞIX˜˜W·¡¢–·KWic“¡¤¿ÖÒ‡^`ìq;!ßHmi _.T€¢V2œ¥6;)²DË$ʘzuÇ|±Šˆ8>æö„xb5Õl5Œ~§ø~éPJПr‚‚ö])çÜ–Kaý s¹7v\k®~GãÍ!Ã~s
+j
+¡­×C-+3¤Ö×'(ä  |E"”gËß j ™^Ê‚R:#3cïº6?¶LVÛâ¯ò¦¼ &WÐß¿˜ÀåPôr¯ûî1¶‚Ô9s[hü‹’nòË+${g{;T®LW±HŸ|À
+{pœÖéâ
+Vs‹†!PyÊ‘Yõ\ò]Á& 4³Ø/ Eê¢Bl'±BÎSæœJ ä¿†@|¤‚s}ïÎ2‰i’ÝSVSÕW%:‘¸pvh`š[Fõ'{«&í¤b[uó[òÌêP¨tÇ2´FÒ+…'õ¯©bБ OÂ9ˆòõÜ—bC÷åqA%;Ô.§ih|óùë\@Å ½«î½ðj*:SŸU=f€Ñ#°¿Â7öƒSǑ״ܮ0ˆÞ­0ï ºló¥¢K­nñœyeÏ*·¸•UBÍàñkƒå/ÂôÚ]õ€°q鄈ТP:Óá#E¶|CD=ˆïQøµBüRG
+¼ðzߘ,Ϲ…;rÆý›HŠ;Ë endstream endobj 114 0 obj << /Type /Page /Parent 142 0 R /Resources 115 0 R /Contents 116 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 115 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 116 0 obj << /Length 585 /Filter /FlateDecode >> stream
+ÿIÇ’x|Bœñ@ÀbŠ¨ïdP”!1G€âèBôþýÜ” Ø,XU K  a(ônèv-„_k
+Ú=£ôSµTfš¤ÑK£NÔ¥¸ºì‰e­&¾HìÐ(èèå
+û“ Ä¶Ì‘ºŸ&ć©„ W£z1ÃVùª‡SÍþÎiÍÇÕK )øIuÊ¥´VT
+ªûf<AÕP{%¯¤¸@ªŠT/w8O/ê)Æ+Ôm(‹Ÿ:T½ö9/Ò‡žYcJL»~šEÔÜ–PÂ~Ypi™ Û“:ÕùŠ^;yÅ…°¹›dk ´Bv˜ègDe /Ú|é`p™*Ì1‹— wßå¢yÚ ¬²ÚúlEÃì;u@”!oæËÑ ÑÄçÿÂÓmC endstream endobj 117 0 obj << /Type /Page /Parent 142 0 R /Resources 118 0 R /Contents 119 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 118 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 119 0 obj << /Length 5486 /Filter /FlateDecode >> stream
+&Mx‹ÈÜ툺˫Ú$‹\"qÁÀá"Õûl‘œdH+
+ÓÍš9Ù‚ÒR.«ik=Š*]àÚ¢%wÃo˜V4R7 :ë–PrÈü¼yÃÅùzŠ¥JÅçhS4Ê"õÁÇýS£WKˆÕ|FVѺ«ØÏ¡3ãσònçB'zU­ —˜_%\ÒÖ9}, Þ[ko{ëÁ“UKVí5;˜£ ²ÞžDžÿ·M ‹]V%^êóÏT7ÛBÕ‚HÝÇHW‹ýÀ)ºx•”R+ôUõ°q(f(Çç ìsdVÔ¸×OFbÝÎRÊš\NN… –[BæýÌž$1£òJñƒÃ­I°sþ¸ØÑÔ„×X´÷壿XÞ=ˆiý9n˜¦‰ÓülªÓÄ÷•=‰Q+q.Ã’Zù`LÄ”vÊKÃSÉѤ º ™³I§Ã_ÂK bl
+„΢ÿe`1i§=ØÏQÀe“7dÑú¿;‹L¦VCCŽÖѶE¬úô§ p>n2Ö-Vø›³”¨/Gn¹–‚ã[\]}­æº4ÙAë„ÌÿCÙ'­·n·Ë }‰Ô}ãiÕÐ/ì婲+×wúŠóhçå]Ià#7ÿôÄfÊB÷’
+ùíT²¿qyþÞŠ~c1¢óÓ´fˆõ»|Ú–ü‘¡pÈß´$iñ´p!’«ã¯ š=¯ëi|î$q—{AÑ®èITUbq™A ®|Ÿ˜kzw“í£™SÐs &`N¨t}7ý¸SæCìX~ ›úèÀŸô`nÊÆc„‚`U6¼"nW¢.óa0˜K Ÿ3¿ó'0­¬
+?« f>–hÐÙ4¿ÚA:"ÿÆί g;¹œ°÷KUd¥+¥ÎrÞ0Víñ¨6¼Jí{8†9ˆ\Xo»AÂ-+€jg<_ôË}ÆWŠ@Õ-sn§Z3>uÞ Ù6w'ã¯'¡ý% ¾c:}$^:í-•ž©·îª&}¥·2¼³[ê,õ,0¯ÖpЙŽG6°’yWÅMåàSW—#1«_âvÎïn#äÆ¢¦šÕÚQª#}Ã0†½[ 2~8o5 Îx-ÂL.ÿ}YÔÏÉñ ´pžâºÉH¬<T/8+”}þ7˲Œ¸‚ðöTéñŸÐwý¥XÊN”µS­|X¥ò&†Å†žcð«Å«wRH_•<5žsfm›d•£ï\l1™>0ñùL2ŠŒ.xþ-ú"„÷ Zþ7χÂr
+HUôåàæS¾Å`¥–‡[_*`Él'ä[ã
+ÎJ~LÍŽ<3Ôà›bïÙx]ìýI†ÍvPÊíXü8|¨êÊÍÒ@Ï¿áÂç$æK,[Æ íæýäÙñ¥ÆŠ`Ͻ¶cÙó©§q¤œ½¾Rý
+‘{
+¶ŽËAE+‡ ©x`VUÐØ©ùNe†~ú Öľ”øšdˆ(ažüEÜo.ƪþ^µs 4§ÝÞ”²¸pO·× ëKª‚ѯ`3â°nšVû|Îwpˆ4œWǤØChGˆº[ÐOV)•„9˜sŸ/µ¸èbÓJg¡ú4>+[*X0d7T`ÏÍ|""#Ï׋µÃéa.BsA8òI„6Yê~~ýþ2ÞþÑ÷'?Ü©Ò0U×¾i4 È:½œŽ :î°œÃ0¼fs~\ TOFüòÜL@@ ©ÑjÁÛ¼ûƒ.h§w™ÜÈ3°¢Éò/¯F¥ì>V^óøžDPªüºé9òØ ct,â–µ&ŽýLÃô“®BïªSšÐj&\Ï’ÝøH _ü ŽæÚs
+rس¤1wb/Ý,œad ÎK?$ X|NbÞ?YsZ4[üofDíú*Ìâæ+v]ñòòþ©Ìšy†y„n&Œ]T¦IÛáØ +^˜ãp2H¿.ö/:¿#N%€}/âRNÓ•ÁËã”Y›@ê„c†ýü‹jÀmkÆáÈʺñ[…®KAº»Ëv«¤OX Ll+nŠ8Î’tˆ)¢•ëj÷x'u­ïƒª¨"œ1H ž×Û^€Pi؆7àé!Á¿Œ¦O
+"ÆXÜ7ÜøÊ\ö:8éA¬”Êo¡^™Ϋi¯6¤•r"­ç ¥)Ùâ3´@Kv¡ ç #¾¸:Ã;iLt]Çü–žsD;YVÏ#Í3ö´L<OëåÅm¬G=õ$ÝE"átß*_ÇøÛ1&9û*
+A0,;ŸUÉúU矪3š¡ÕWB0ÅR¨Š;ùÌY¨âÅ®øjv ÅOß<˜Ò W ÷C–êñðyÌ2›Ÿ bÌô=¬Â{ãåé=F¦¼šZÐ4P—a}Ù;XŸ´0FÃ\/‘ûT¹ âˆñùÁØìИzË‘°zÙšÓ&’$bÐ=!©xp}ÒQüÁ\¯o­s7¯È8é°yÀûF*|fíˆú¡1‰s'
+Îãv¬ãÏ|ÍŽ9Ÿ*kraÍô”ýÏv’8e¶¿”‚î8ñH%• ƒ‹œ^†üž…6*!„§«NsR¬Öä܇Û^ ‰IÔgËkRs©=-b¸¡ù]©‰h4Âpdùi­µNˆkomŠDœ>Xú#“:{ ºà‰°Ò·nÂïswI¸.µËC…
+MŠ6gnë½` 
+kŠ÷ÇudÊJ¦:øŽL+Êf½r°6Y«Nõž=èO:6k€‡¯æs<uHc&¼A"ë9ùusçà‚Qc1qþŸCAƒê`šE¤ ‹þˆ&gó©7V„ÌRòn汇l ï$‹²¾ÃÄÈ ¦3vöW >ŸdÜ; nàôÂÛ4QÉ+-BÙSâ4iKÙñ©ˆÚ¸Ä‰_mï”…F«p‚dH|Šô4½·©ðu(Ê_Þ€€èó!pÕ@šk=Å{X•F,U9!dA½¸æ”ŽêVœS;0ýfíHÎ`áý¤Ä»íù«ÏèeP¶¯ý>ÞQšÆÂ@þçÄqè£"@¨áU–IaºÉÂœ Y“§ÑY=uÝ8e6:E®±¾b¸fŽv3Ø1wú½Ù{Uê²t–:+CƒI+ «8Yï—÷N­#Zvy°5}]ÁŠE—/û_Ó]ý•geßv9äq)­íÓiž7»…áí÷=܇å\%5ef €¶@LŠC× {p’{±Èº¦ ±ñ
+ (]Dq£ œíðË%àÓQ„‘UqÖÙ<æÓÀ¶`ÚÆ7"ÒðÄžUp<ZB'UÙô*‚æéÒàPI²ós“ÌxEèJŽ+¶áΓìUS“\|¢ꟗŒ2ß A¬·•©¨foÍTäü7s›ÞWÌúÝ‘Ç»%¼ÝêEõ=zÐj‘«Î«f¥ý7¢Ÿ¹Ô@¬(~I©Þ@Yi5I¨‹æ÷À¯Ýd˜a}g}iMqÿ´Ýf °¼?'ó·«ß>ñfÂÕ` ¯aD5X8U—èNÁšGíèøŸ‰`±QI(ÝáZE0μ³’×í<xi±Èt­°ÒÍ•.oÒ'•F¨49ñ÷1™¹?®â<•^›ÃáD”ùܳšv«³=À=O‰Yv^ÿXCÑbü‘Ùb¬U8Y•åk±@Ö6édfbð1m¥~ý áÞCî*:|—^4r f:Ê…õ$UÑ¡-V{' ¯ýÿ_2ŸxÈçb¦/¬‡=!l“W\­oAËO9ºú œ[ÙñšÉ^ /šÊI^P‘¦ƒ~•Æ?~Éz:ǃYYªŠ€#zS~Ž(ÒØ{’DÌ
+MW¨:²„»(èÏ£pË]o¾½øg¯­Ý¾kH%"€ÓüXV£8ÄU!5€ŽØÄTü\a}‹MÉšY©)œ‹1HX}½M³!Ö̓Tyk)G!ËäL¾ù·ÀO‘\µ.ÞV«c7·´S’¨pà±íÌÚïñ•Ð,¶ðg¥;¹€=D( ¢sfô/S)Є)¯¶õ´,s¬=†Ñç+Á~®Ð†×”­C;e½]Š›v‘~Y cªóNá>‘6ÉÖ(e ¦õƒÜÿk{ï
+•ßS¡°íá“õº5ÙH/&QB¦Ä&º0#Øú´¯/”(!:nÔãCÃH–t9'‘¨Ü)A?>¡Ãq ÓaU
+Eºuϵ‚ÌebÚɱ1ËÚßÇsí‚/Ÿ<bñþ4‰ÂÄ“€öÇ\<xkņV–j“j:¯<,_
+•P›8’·øêÄtôŒÛÙ4ä}‰#JŽ¯QÂ3œü®šÈÅ¿Òåüº¸mýÎ -uRcƒ_È”f§ ƒ'·að]Ï“¶ ¤» ]õëVØ&„üÂ5Ô
+®™º™t¹š¡´8'¨ZÖˆŽï{@RÄÚ¹ÙS{;†o`¦oUr4V!®Ã/FÁ¥”Íüž3rȃ³-Ä|)¯Nk¶5Ñ3 endstream endobj 120 0 obj << /Type /Page /Parent 142 0 R /Resources 121 0 R /Contents 122 0 R /MediaBox [ 0 0 595 842 ] /CropBox [ 0 0 595 842 ] /Rotate 0 >> endobj 121 0 obj << /ProcSet [ /PDF /Text ] /Font << /F2 292 0 R /F4 293 0 R /F6 291 0 R /F7 123 0 R /F8 124 0 R >> /ExtGState << /GS1 324 0 R >> >> endobj 122 0 obj << /Length 1030 /Filter /FlateDecode >> stream
+įüî™mhŸÂ‚Í­,„µõºòã''“äöÐ>š@]Iþ´PKzù8¬*Ž¦ÑÖ{RF«;úF‘£¿%6Ö7YcÇèéN™Pìàæ +1 ŠÊ…ïíر…’¾,CjJò6ZJêf;mÕšÿ›T>#k+»pîY /§’ɨf/ÈF†SBt^Èe½› @¥kkù‡
+ïEeÐ6Þdðgm'(êŸ0ÌæÒ>hºˆÂhüo¢¸y*5œŠ5JwKúgìt-wîb“µ+Úðüÿ0†­ä‚ ìªéæ—Lb
+ôïÈö%qRs¾Çº`gƒkTï=•“Î>%
+hd§8hˆïOb–‰ i\Ag%ãà]³­Éc¾@·ZÊ'Q2ªŸGÍú<e¾  ¸‹Žã¸ïŒ1­8bÏrqŒ(§PÊÏL¯ÏÈøT, ÛR
+b²cJ±îX¶ƒÒCÌÑýüêI³WÐÐð¼LNFˆÐH©¥z'®$ÕŠEsý.±E4O¸Oñ“
+Yò‡À\sdÅmå1œG`:|ûWz|cÜõ-Ê‚Ç
+ź‘9Z2h¦uÎëg}{€,¶*$“*,Ô$ ßä$qÈtDÚaFÿ¯$š DÖ[HÏ@Ž(½`T9`3ûF I^G¢c-[±uí[Rš1ô]]~•Z¾£YL-¢7Ý Œ‹*:¦m€à¼!¹ƒ‘HÌE#M'ç;ªžCþDÁz³í² ™ªµN¾±E€ÆÜ=ÝØ°üù{}Õ÷_îûš‘‘à`]Úò‹,~HN©½ìÿë¬Ož¾Ó"2(y/Ö×ÉùÌ-6®¢µÞwƒä‰56q°©¦¦º‚{vþÿ™JT!ùºótâX\Î`SyæÓžýÊL>R~âF“å3W‰–“qzbfks9šçà" endstream endobj 123 0 obj << /Type /Font /Subtype /Type1 /Encoding /WinAnsiEncoding /BaseFont /Helvetica-BoldOblique >> endobj 124 0 obj << /Type /Font /Subtype /Type1 /Encoding /WinAnsiEncoding /BaseFont /Times-Bold >> endobj 125 0 obj << /Type /Font /Subtype /Type1 /Encoding /WinAnsiEncoding /BaseFont /Times-Italic >> endobj 126 0 obj << /Type /Font /Subtype /Type1 /Encoding 135 0 R /BaseFont /Symbol /ToUnicode 136 0 R >> endobj 127 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 277 295 309 554 554 775 757 198 369 369 425 606 277 332 277 437 554 554 554 554 554 554 554 554 554 554 277 277 606 606 606 591 867 740 574 813 744 536 485 872 683 226 482 591 462 919 740 869 592 871 607 498 426 655 702 960 609 592 480 351 605 351 606 500 378 683 682 647 685 650 314 673 610 200 203 502 200 938 610 655 682 682 301 388 339 608 554 831 480 536 425 351 672 351 606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 554 554 0 0 0 0 0 747 0 0 0 0 0 0 0 606 0 0 0 608 ] /Encoding /WinAnsiEncoding /BaseFont /AvantGarde-Book /FontDescriptor 131 0 R >> endobj 128 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 228 228 291 456 456 729 547 157 273 273 319 479 228 273 228 228 456 456 456 456 456 456 456 456 456 456 228 228 479 479 479 456 832 547 547 592 592 547 501 638 592 228 410 547 456 683 592 638 547 638 592 547 501 592 547 774 547 547 501 228 228 228 385 456 273 456 456 410 456 456 228 456 456 182 182 410 182 683 456 456 456 456 273 410 228 456 410 592 410 410 410 274 213 274 479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 456 456 0 0 0 0 0 604 0 0 0 0 0 0 0 479 0 0 0 456 ] /Encoding /WinAnsiEncoding /BaseFont /Helvetica-Narrow-Oblique /FontDescriptor 132 0 R >> endobj 129 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 277 295 309 554 554 775 757 198 369 369 425 606 277 332 277 437 554 554 554 554 554 554 554 554 554 554 277 277 606 606 606 591 867 740 574 813 744 536 485 872 683 226 482 591 462 919 740 869 592 871 607 498 426 655 702 960 609 592 480 351 605 351 606 500 378 683 682 647 685 650 314 673 610 200 203 502 200 938 610 655 682 682 301 388 339 608 554 831 480 536 425 351 672 351 606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 554 554 0 0 0 0 0 747 0 0 0 0 0 0 0 606 0 0 0 608 ] /Encoding /WinAnsiEncoding /BaseFont /AvantGarde-BookOblique /FontDescriptor 133 0 R >> endobj 130 0 obj << /Type /Font /Subtype /Type1 /FirstChar 32 /LastChar 181 /Widths [ 228 228 291 456 456 729 547 157 273 273 319 479 228 273 228 228 456 456 456 456 456 456 456 456 456 456 228 228 479 479 479 456 832 547 547 592 592 547 501 638 592 228 410 547 456 683 592 638 547 638 592 547 501 592 547 774 547 547 501 228 228 228 385 456 273 456 456 410 456 456 228 456 456 182 182 410 182 683 456 456 456 456 273 410 228 456 410 592 410 410 410 274 213 274 479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 456 456 0 0 0 0 0 604 0 0 0 0 0 0 0 479 0 0 0 456 ] /Encoding /WinAnsiEncoding /BaseFont /Helvetica-Narrow /FontDescriptor 134 0 R >> endobj 131 0 obj << /Type /FontDescriptor /Ascent 740 /CapHeight 740 /Descent -192 /Flags 32 /FontBBox [ -113 -222 1148 955 ] /FontName /AvantGarde-Book /ItalicAngle 0 /StemV 70 /XHeight 547 >> endobj 132 0 obj << /Type /FontDescriptor /Ascent 718 /CapHeight 718 /Descent -207 /Flags 96 /FontBBox [ -139 -225 915 931 ] /FontName /Helvetica-Narrow-Oblique /ItalicAngle -12 /StemV 88 /XHeight 523 >> endobj 133 0 obj << /Type /FontDescriptor /Ascent 740 /CapHeight 740 /Descent -192 /Flags 96 /FontBBox [ -113 -222 1279 955 ] /FontName /AvantGarde-BookOblique /ItalicAngle -10.5 /StemV 70 /XHeight 547 >> endobj 134 0 obj << /Type /FontDescriptor /Ascent 718 /CapHeight 718 /Descent -207 /Flags 32 /FontBBox [ -136 -225 820 931 ] /FontName /Helvetica-Narrow /ItalicAngle 0 /StemV 88 /XHeight 523 >> endobj 135 0 obj << /Type /Encoding /Differences [ 1 /bullet /space ] >> endobj 136 0 obj << /Filter /FlateDecode /Length 218 >> stream
+v‡Ž©wsF¦ìª~öc ÌUU˜—±ß’ãaê*»Åê7mËSÖ¡ŽÛÑh^–xÅ«¹T%(L`3\‘_6)èýytÏñ|?Ý'ÍUžHKo
+¾¨<(®†æ
+0000097206 00000 n
+0000097389 00000 n
+0000097534 00000 n
+0000097702 00000 n
+0000097848 00000 n
+0000097988 00000 n
+0000100885 00000 n
+0000101064 00000 n
+0000101221 00000 n
+0000101368 00000 n
+0000101533 00000 n
+0000104257 00000 n
+0000104412 00000 n
+0000104553 00000 n
+0000108317 00000 n
+0000108472 00000 n
+0000108613 00000 n
+0000112939 00000 n
+0000113094 00000 n
+0000113235 00000 n
+0000114959 00000 n
+0000115114 00000 n
+0000115293 00000 n
+0000119332 00000 n
+0000119487 00000 n
+0000119640 00000 n
+0000126038 00000 n
+0000126193 00000 n
+0000126346 00000 n
+0000130757 00000 n
+0000130912 00000 n
+0000131065 00000 n
+0000134498 00000 n
+0000134653 00000 n
+0000134806 00000 n
+0000139953 00000 n
+0000140108 00000 n
+0000140249 00000 n
+0000145230 00000 n
+0000145385 00000 n
+0000145526 00000 n
+0000153276 00000 n
+0000153431 00000 n
+0000153572 00000 n
+0000161428 00000 n
+0000161583 00000 n
+0000161736 00000 n
+0000165837 00000 n
+0000165992 00000 n
+0000166145 00000 n
+0000170440 00000 n
+0000170595 00000 n
+0000170736 00000 n
+0000175440 00000 n
+0000175595 00000 n
+0000175800 00000 n
+0000183593 00000 n
+0000183748 00000 n
+0000183889 00000 n
+0000187668 00000 n
+0000187823 00000 n
+0000187964 00000 n
+0000191583 00000 n
+0000191738 00000 n
+0000191891 00000 n
+0000195341 00000 n
+0000195496 00000 n
+0000195649 00000 n
+0000200631 00000 n
+0000200786 00000 n
+0000200940 00000 n
+0000205310 00000 n
+0000205465 00000 n
+0000205606 00000 n
+0000210681 00000 n
+0000210836 00000 n
+0000210977 00000 n
+0000215099 00000 n
+0000215254 00000 n
+0000215395 00000 n
+0000220476 00000 n
+0000220631 00000 n
+0000220784 00000 n
+0000225621 00000 n
+0000225776 00000 n
+0000225942 00000 n
+0000246815 00000 n
+0000246970 00000 n
+0000247123 00000 n
+0000255071 00000 n
+0000255226 00000 n
+0000255367 00000 n
+0000262492 00000 n
+0000262647 00000 n
+0000262788 00000 n
+0000266585 00000 n
+0000266740 00000 n
+0000266881 00000 n
+0000271325 00000 n
+0000271482 00000 n
+0000271624 00000 n
+0000275801 00000 n
+0000275959 00000 n
+0000276101 00000 n
+0000280090 00000 n
+0000280248 00000 n
+0000280390 00000 n
+0000284860 00000 n
+0000285018 00000 n
+0000285160 00000 n
+0000289082 00000 n
+0000289240 00000 n
+0000289394 00000 n
+0000293782 00000 n
+0000293940 00000 n
+0000294082 00000 n
+0000294743 00000 n
+0000294901 00000 n
+0000295043 00000 n
+0000300606 00000 n
+0000300764 00000 n
+0000300918 00000 n
+0000302025 00000 n
+0000302142 00000 n
+0000302248 00000 n
+0000302356 00000 n
+0000302469 00000 n
+0000303155 00000 n
+0000303850 00000 n
+0000304543 00000 n
+0000305230 00000 n
+0000305436 00000 n
+0000305652 00000 n
+0000305869 00000 n
+0000306075 00000 n
+0000306152 00000 n
+0000306446 00000 n
+0000306831 00000 n
+0000306979 00000 n
+0000307072 00000 n
+0000307221 00000 n
+0000307370 00000 n
+trailer << /Size 143 /ID[<dcf448753bb5a7d4b420911e2d51d5e6><dcf448753bb5a7d4b420911e2d51d5e6>] >> startxref 173 %%EOF \ No newline at end of file
diff --git a/specs/files/ts_125410v120000p.pdf b/specs/files/ts_125410v120000p.pdf
new file mode 100644
index 0000000..348170a
--- /dev/null
+++ b/specs/files/ts_125410v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_125412v120000p.pdf b/specs/files/ts_125412v120000p.pdf
new file mode 100644
index 0000000..8e38af6
--- /dev/null
+++ b/specs/files/ts_125412v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_125413v120400p.pdf b/specs/files/ts_125413v120400p.pdf
new file mode 100644
index 0000000..8b68bb9
--- /dev/null
+++ b/specs/files/ts_125413v120400p.pdf
@@ -0,0 +1,9891 @@
+%PDF-1.7 %âãÏÓ
+1544 0 obj <</Linearized 1/L 1845526/O 1546/E 237877/N 432/T 1814524/H [ 22336 3692]>> endobj
+xref
+1544 1102
+0000000016 00000 n
+0000026028 00000 n
+0000026196 00000 n
+0000033651 00000 n
+0000034401 00000 n
+0000035365 00000 n
+0000035883 00000 n
+0000036249 00000 n
+0000036770 00000 n
+0000036821 00000 n
+0000036871 00000 n
+0000036921 00000 n
+0000036971 00000 n
+0000037022 00000 n
+0000037074 00000 n
+0000037129 00000 n
+0000037322 00000 n
+0000037524 00000 n
+0000037708 00000 n
+0000037890 00000 n
+0000039426 00000 n
+0000040545 00000 n
+0000041112 00000 n
+0000041304 00000 n
+0000042528 00000 n
+0000043779 00000 n
+0000044828 00000 n
+0000045795 00000 n
+0000046732 00000 n
+0000047771 00000 n
+0000048055 00000 n
+0000048109 00000 n
+0000048182 00000 n
+0000048261 00000 n
+0000048550 00000 n
+0000049395 00000 n
+0000049590 00000 n
+0000051561 00000 n
+0000053873 00000 n
+0000055206 00000 n
+0000055387 00000 n
+0000055565 00000 n
+0000055743 00000 n
+0000055921 00000 n
+0000056102 00000 n
+0000056277 00000 n
+0000056452 00000 n
+0000056627 00000 n
+0000056803 00000 n
+0000056985 00000 n
+0000059077 00000 n
+0000059252 00000 n
+0000059427 00000 n
+0000059602 00000 n
+0000059777 00000 n
+0000059952 00000 n
+0000060127 00000 n
+0000060302 00000 n
+0000060477 00000 n
+0000060652 00000 n
+0000060827 00000 n
+0000061026 00000 n
+0000061205 00000 n
+0000061385 00000 n
+0000061564 00000 n
+0000061742 00000 n
+0000061920 00000 n
+0000062093 00000 n
+0000062271 00000 n
+0000062459 00000 n
+0000062643 00000 n
+0000062824 00000 n
+0000063025 00000 n
+0000063209 00000 n
+0000063396 00000 n
+0000063583 00000 n
+0000063769 00000 n
+0000063953 00000 n
+0000064134 00000 n
+0000064315 00000 n
+0000064490 00000 n
+0000064678 00000 n
+0000064862 00000 n
+0000065049 00000 n
+0000065239 00000 n
+0000065465 00000 n
+0000065746 00000 n
+0000066765 00000 n
+0000066909 00000 n
+0000067050 00000 n
+0000067207 00000 n
+0000067367 00000 n
+0000067518 00000 n
+0000067705 00000 n
+0000067949 00000 n
+0000068134 00000 n
+0000069877 00000 n
+0000071170 00000 n
+0000071483 00000 n
+0000072084 00000 n
+0000072271 00000 n
+0000072464 00000 n
+0000072657 00000 n
+0000072846 00000 n
+0000073030 00000 n
+0000073219 00000 n
+0000073404 00000 n
+0000073591 00000 n
+0000073775 00000 n
+0000073971 00000 n
+0000074186 00000 n
+0000074381 00000 n
+0000074568 00000 n
+0000074763 00000 n
+0000074950 00000 n
+0000075138 00000 n
+0000075325 00000 n
+0000075514 00000 n
+0000075662 00000 n
+0000075854 00000 n
+0000076037 00000 n
+0000076242 00000 n
+0000076438 00000 n
+0000076621 00000 n
+0000076811 00000 n
+0000076994 00000 n
+0000077178 00000 n
+0000077367 00000 n
+0000077545 00000 n
+0000077737 00000 n
+0000077900 00000 n
+0000078089 00000 n
+0000078273 00000 n
+0000078453 00000 n
+0000078643 00000 n
+0000078824 00000 n
+0000078987 00000 n
+0000079174 00000 n
+0000079357 00000 n
+0000079538 00000 n
+0000079715 00000 n
+0000079905 00000 n
+0000080085 00000 n
+0000080258 00000 n
+0000080445 00000 n
+0000080623 00000 n
+0000080799 00000 n
+0000080987 00000 n
+0000081168 00000 n
+0000081345 00000 n
+0000083642 00000 n
+0000083828 00000 n
+0000084009 00000 n
+0000084184 00000 n
+0000084361 00000 n
+0000084538 00000 n
+0000084716 00000 n
+0000084890 00000 n
+0000085034 00000 n
+0000085211 00000 n
+0000085385 00000 n
+0000085605 00000 n
+0000085783 00000 n
+0000085957 00000 n
+0000086164 00000 n
+0000086338 00000 n
+0000086532 00000 n
+0000086706 00000 n
+0000086893 00000 n
+0000087070 00000 n
+0000087251 00000 n
+0000087425 00000 n
+0000087606 00000 n
+0000087790 00000 n
+0000087964 00000 n
+0000088145 00000 n
+0000088319 00000 n
+0000088497 00000 n
+0000088671 00000 n
+0000088876 00000 n
+0000089050 00000 n
+0000089246 00000 n
+0000089437 00000 n
+0000089611 00000 n
+0000089789 00000 n
+0000089976 00000 n
+0000090159 00000 n
+0000090333 00000 n
+0000090508 00000 n
+0000090692 00000 n
+0000090866 00000 n
+0000091071 00000 n
+0000091247 00000 n
+0000091446 00000 n
+0000091624 00000 n
+0000091803 00000 n
+0000091979 00000 n
+0000092155 00000 n
+0000092334 00000 n
+0000092515 00000 n
+0000092693 00000 n
+0000092837 00000 n
+0000093013 00000 n
+0000093185 00000 n
+0000093368 00000 n
+0000093542 00000 n
+0000093723 00000 n
+0000093895 00000 n
+0000094070 00000 n
+0000094250 00000 n
+0000094425 00000 n
+0000094597 00000 n
+0000094772 00000 n
+0000094953 00000 n
+0000095128 00000 n
+0000095300 00000 n
+0000095475 00000 n
+0000095667 00000 n
+0000095850 00000 n
+0000096025 00000 n
+0000096197 00000 n
+0000096372 00000 n
+0000096553 00000 n
+0000096731 00000 n
+0000096905 00000 n
+0000097080 00000 n
+0000097258 00000 n
+0000097432 00000 n
+0000097613 00000 n
+0000097788 00000 n
+0000097968 00000 n
+0000098146 00000 n
+0000098320 00000 n
+0000098498 00000 n
+0000098678 00000 n
+0000098856 00000 n
+0000099030 00000 n
+0000099206 00000 n
+0000099387 00000 n
+0000099572 00000 n
+0000099750 00000 n
+0000099924 00000 n
+0000100101 00000 n
+0000100279 00000 n
+0000100460 00000 n
+0000100634 00000 n
+0000100808 00000 n
+0000100982 00000 n
+0000101161 00000 n
+0000101335 00000 n
+0000101513 00000 n
+0000101687 00000 n
+0000101864 00000 n
+0000102042 00000 n
+0000102216 00000 n
+0000102396 00000 n
+0000102576 00000 n
+0000102751 00000 n
+0000102925 00000 n
+0000103099 00000 n
+0000103278 00000 n
+0000105105 00000 n
+0000105293 00000 n
+0000105467 00000 n
+0000105644 00000 n
+0000105818 00000 n
+0000105996 00000 n
+0000106170 00000 n
+0000106350 00000 n
+0000106524 00000 n
+0000106702 00000 n
+0000106874 00000 n
+0000107048 00000 n
+0000107223 00000 n
+0000107397 00000 n
+0000107580 00000 n
+0000107762 00000 n
+0000107936 00000 n
+0000108115 00000 n
+0000108289 00000 n
+0000108475 00000 n
+0000108653 00000 n
+0000108827 00000 n
+0000109000 00000 n
+0000109175 00000 n
+0000109347 00000 n
+0000109530 00000 n
+0000109712 00000 n
+0000109886 00000 n
+0000110059 00000 n
+0000110233 00000 n
+0000110419 00000 n
+0000110600 00000 n
+0000110771 00000 n
+0000110946 00000 n
+0000111127 00000 n
+0000111301 00000 n
+0000111489 00000 n
+0000111668 00000 n
+0000111839 00000 n
+0000112016 00000 n
+0000112190 00000 n
+0000112379 00000 n
+0000112554 00000 n
+0000112725 00000 n
+0000112903 00000 n
+0000113082 00000 n
+0000113256 00000 n
+0000113453 00000 n
+0000113632 00000 n
+0000113803 00000 n
+0000113977 00000 n
+0000114170 00000 n
+0000114345 00000 n
+0000114516 00000 n
+0000114719 00000 n
+0000114894 00000 n
+0000115072 00000 n
+0000115243 00000 n
+0000115444 00000 n
+0000115617 00000 n
+0000115788 00000 n
+0000115986 00000 n
+0000116162 00000 n
+0000116333 00000 n
+0000116528 00000 n
+0000116704 00000 n
+0000116875 00000 n
+0000117057 00000 n
+0000117281 00000 n
+0000117453 00000 n
+0000117624 00000 n
+0000117799 00000 n
+0000117973 00000 n
+0000118155 00000 n
+0000118326 00000 n
+0000118501 00000 n
+0000118672 00000 n
+0000118857 00000 n
+0000119030 00000 n
+0000119199 00000 n
+0000119374 00000 n
+0000119548 00000 n
+0000119732 00000 n
+0000119904 00000 n
+0000120079 00000 n
+0000120253 00000 n
+0000120438 00000 n
+0000120610 00000 n
+0000120788 00000 n
+0000120966 00000 n
+0000121144 00000 n
+0000121329 00000 n
+0000121502 00000 n
+0000121677 00000 n
+0000121848 00000 n
+0000122027 00000 n
+0000122200 00000 n
+0000122382 00000 n
+0000122557 00000 n
+0000122730 00000 n
+0000122910 00000 n
+0000123090 00000 n
+0000123266 00000 n
+0000123439 00000 n
+0000123614 00000 n
+0000123789 00000 n
+0000123962 00000 n
+0000124137 00000 n
+0000124312 00000 n
+0000124485 00000 n
+0000124665 00000 n
+0000126605 00000 n
+0000126783 00000 n
+0000126958 00000 n
+0000127142 00000 n
+0000127320 00000 n
+0000127490 00000 n
+0000127667 00000 n
+0000127845 00000 n
+0000128018 00000 n
+0000128209 00000 n
+0000128390 00000 n
+0000128563 00000 n
+0000128741 00000 n
+0000128932 00000 n
+0000129113 00000 n
+0000129289 00000 n
+0000129481 00000 n
+0000129666 00000 n
+0000129841 00000 n
+0000130025 00000 n
+0000130206 00000 n
+0000130381 00000 n
+0000130571 00000 n
+0000130747 00000 n
+0000130928 00000 n
+0000131103 00000 n
+0000131291 00000 n
+0000131479 00000 n
+0000131654 00000 n
+0000131886 00000 n
+0000132061 00000 n
+0000132236 00000 n
+0000132423 00000 n
+0000132606 00000 n
+0000132781 00000 n
+0000132959 00000 n
+0000133134 00000 n
+0000133328 00000 n
+0000133503 00000 n
+0000133678 00000 n
+0000133853 00000 n
+0000134052 00000 n
+0000134230 00000 n
+0000134405 00000 n
+0000134580 00000 n
+0000134755 00000 n
+0000134958 00000 n
+0000135133 00000 n
+0000135327 00000 n
+0000135500 00000 n
+0000135657 00000 n
+0000135832 00000 n
+0000136010 00000 n
+0000136188 00000 n
+0000136363 00000 n
+0000136544 00000 n
+0000136727 00000 n
+0000136905 00000 n
+0000137080 00000 n
+0000137255 00000 n
+0000137434 00000 n
+0000137609 00000 n
+0000137784 00000 n
+0000137959 00000 n
+0000138136 00000 n
+0000138581 00000 n
+0000141582 00000 n
+0000141730 00000 n
+0000141905 00000 n
+0000142043 00000 n
+0000142181 00000 n
+0000142341 00000 n
+0000142489 00000 n
+0000142633 00000 n
+0000142771 00000 n
+0000142915 00000 n
+0000143063 00000 n
+0000143207 00000 n
+0000143348 00000 n
+0000143534 00000 n
+0000143678 00000 n
+0000143819 00000 n
+0000143957 00000 n
+0000144114 00000 n
+0000144289 00000 n
+0000144446 00000 n
+0000146106 00000 n
+0000146281 00000 n
+0000146472 00000 n
+0000146664 00000 n
+0000146861 00000 n
+0000147042 00000 n
+0000147226 00000 n
+0000147413 00000 n
+0000147594 00000 n
+0000147775 00000 n
+0000147962 00000 n
+0000149231 00000 n
+0000149415 00000 n
+0000149605 00000 n
+0000149789 00000 n
+0000149985 00000 n
+0000150184 00000 n
+0000150379 00000 n
+0000150573 00000 n
+0000150775 00000 n
+0000150982 00000 n
+0000151190 00000 n
+0000152544 00000 n
+0000152729 00000 n
+0000152911 00000 n
+0000153095 00000 n
+0000153273 00000 n
+0000153459 00000 n
+0000153641 00000 n
+0000153828 00000 n
+0000154006 00000 n
+0000154184 00000 n
+0000154369 00000 n
+0000156861 00000 n
+0000157042 00000 n
+0000157221 00000 n
+0000157399 00000 n
+0000157577 00000 n
+0000157759 00000 n
+0000157934 00000 n
+0000158116 00000 n
+0000158294 00000 n
+0000158476 00000 n
+0000158651 00000 n
+0000160359 00000 n
+0000160549 00000 n
+0000160731 00000 n
+0000160912 00000 n
+0000161091 00000 n
+0000161273 00000 n
+0000161460 00000 n
+0000161644 00000 n
+0000161839 00000 n
+0000162026 00000 n
+0000162208 00000 n
+0000162269 00000 n
+0000162379 00000 n
+0000162471 00000 n
+0000162609 00000 n
+0000162781 00000 n
+0000162941 00000 n
+0000163119 00000 n
+0000163278 00000 n
+0000163458 00000 n
+0000163644 00000 n
+0000163741 00000 n
+0000163906 00000 n
+0000164104 00000 n
+0000164201 00000 n
+0000164301 00000 n
+0000164470 00000 n
+0000164638 00000 n
+0000164733 00000 n
+0000164887 00000 n
+0000164996 00000 n
+0000165148 00000 n
+0000165266 00000 n
+0000165409 00000 n
+0000165523 00000 n
+0000165667 00000 n
+0000165789 00000 n
+0000165900 00000 n
+0000166075 00000 n
+0000166174 00000 n
+0000166275 00000 n
+0000166385 00000 n
+0000166490 00000 n
+0000166596 00000 n
+0000166715 00000 n
+0000166819 00000 n
+0000166928 00000 n
+0000167066 00000 n
+0000167164 00000 n
+0000167274 00000 n
+0000167432 00000 n
+0000167530 00000 n
+0000167640 00000 n
+0000167817 00000 n
+0000167915 00000 n
+0000168026 00000 n
+0000168195 00000 n
+0000168293 00000 n
+0000168406 00000 n
+0000168563 00000 n
+0000168661 00000 n
+0000168771 00000 n
+0000168945 00000 n
+0000169043 00000 n
+0000169153 00000 n
+0000169317 00000 n
+0000169415 00000 n
+0000169525 00000 n
+0000169683 00000 n
+0000169781 00000 n
+0000169891 00000 n
+0000170047 00000 n
+0000170145 00000 n
+0000170255 00000 n
+0000170413 00000 n
+0000170511 00000 n
+0000170621 00000 n
+0000170781 00000 n
+0000170879 00000 n
+0000170989 00000 n
+0000171148 00000 n
+0000171246 00000 n
+0000171356 00000 n
+0000171524 00000 n
+0000171622 00000 n
+0000171732 00000 n
+0000171900 00000 n
+0000171998 00000 n
+0000172108 00000 n
+0000172272 00000 n
+0000172370 00000 n
+0000172481 00000 n
+0000172642 00000 n
+0000172740 00000 n
+0000172850 00000 n
+0000173012 00000 n
+0000173110 00000 n
+0000173258 00000 n
+0000173423 00000 n
+0000173521 00000 n
+0000173631 00000 n
+0000173786 00000 n
+0000173922 00000 n
+0000174071 00000 n
+0000174231 00000 n
+0000174329 00000 n
+0000174439 00000 n
+0000174596 00000 n
+0000174694 00000 n
+0000174804 00000 n
+0000174950 00000 n
+0000175048 00000 n
+0000175196 00000 n
+0000175353 00000 n
+0000175451 00000 n
+0000175561 00000 n
+0000175668 00000 n
+0000175824 00000 n
+0000175922 00000 n
+0000176032 00000 n
+0000176191 00000 n
+0000176289 00000 n
+0000176438 00000 n
+0000176597 00000 n
+0000176695 00000 n
+0000176805 00000 n
+0000176961 00000 n
+0000177059 00000 n
+0000177169 00000 n
+0000177336 00000 n
+0000177434 00000 n
+0000177544 00000 n
+0000177706 00000 n
+0000177804 00000 n
+0000177914 00000 n
+0000178070 00000 n
+0000178168 00000 n
+0000178316 00000 n
+0000178466 00000 n
+0000178564 00000 n
+0000178674 00000 n
+0000178821 00000 n
+0000178919 00000 n
+0000179029 00000 n
+0000179215 00000 n
+0000179313 00000 n
+0000179423 00000 n
+0000179609 00000 n
+0000179707 00000 n
+0000179817 00000 n
+0000179989 00000 n
+0000180087 00000 n
+0000180197 00000 n
+0000180359 00000 n
+0000180457 00000 n
+0000180567 00000 n
+0000180725 00000 n
+0000180823 00000 n
+0000180960 00000 n
+0000181119 00000 n
+0000181216 00000 n
+0000181352 00000 n
+0000181509 00000 n
+0000181606 00000 n
+0000181742 00000 n
+0000181912 00000 n
+0000182009 00000 n
+0000182145 00000 n
+0000182307 00000 n
+0000182404 00000 n
+0000182540 00000 n
+0000182690 00000 n
+0000182787 00000 n
+0000182896 00000 n
+0000183054 00000 n
+0000183151 00000 n
+0000183260 00000 n
+0000183419 00000 n
+0000183516 00000 n
+0000183625 00000 n
+0000183779 00000 n
+0000183876 00000 n
+0000183985 00000 n
+0000184111 00000 n
+0000184273 00000 n
+0000184389 00000 n
+0000184513 00000 n
+0000184637 00000 n
+0000184761 00000 n
+0000184884 00000 n
+0000185010 00000 n
+0000185172 00000 n
+0000185288 00000 n
+0000185411 00000 n
+0000185575 00000 n
+0000185693 00000 n
+0000185855 00000 n
+0000185971 00000 n
+0000186094 00000 n
+0000186218 00000 n
+0000186341 00000 n
+0000186465 00000 n
+0000186589 00000 n
+0000186716 00000 n
+0000186841 00000 n
+0000186968 00000 n
+0000187093 00000 n
+0000187218 00000 n
+0000187343 00000 n
+0000187468 00000 n
+0000187593 00000 n
+0000187718 00000 n
+0000187834 00000 n
+0000187997 00000 n
+0000188114 00000 n
+0000188241 00000 n
+0000188366 00000 n
+0000188491 00000 n
+0000188616 00000 n
+0000188743 00000 n
+0000188868 00000 n
+0000188985 00000 n
+0000189148 00000 n
+0000189270 00000 n
+0000189395 00000 n
+0000189558 00000 n
+0000189669 00000 n
+0000189783 00000 n
+0000189898 00000 n
+0000190019 00000 n
+0000190138 00000 n
+0000190301 00000 n
+0000190431 00000 n
+0000190564 00000 n
+0000190702 00000 n
+0000190827 00000 n
+0000190990 00000 n
+0000191107 00000 n
+0000191247 00000 n
+0000191386 00000 n
+0000191526 00000 n
+0000191665 00000 n
+0000191790 00000 n
+0000191906 00000 n
+0000192033 00000 n
+0000192196 00000 n
+0000192313 00000 n
+0000192440 00000 n
+0000192565 00000 n
+0000192728 00000 n
+0000192909 00000 n
+0000193051 00000 n
+0000193170 00000 n
+0000193297 00000 n
+0000193422 00000 n
+0000193549 00000 n
+0000193674 00000 n
+0000193801 00000 n
+0000193926 00000 n
+0000194051 00000 n
+0000194178 00000 n
+0000194303 00000 n
+0000194430 00000 n
+0000194555 00000 n
+0000194682 00000 n
+0000194807 00000 n
+0000194932 00000 n
+0000195059 00000 n
+0000195184 00000 n
+0000195309 00000 n
+0000195434 00000 n
+0000195561 00000 n
+0000195686 00000 n
+0000195812 00000 n
+0000196015 00000 n
+0000196113 00000 n
+0000196225 00000 n
+0000196396 00000 n
+0000196493 00000 n
+0000196638 00000 n
+0000196756 00000 n
+0000196863 00000 n
+0000197041 00000 n
+0000197157 00000 n
+0000197268 00000 n
+0000197443 00000 n
+0000197547 00000 n
+0000197676 00000 n
+0000197791 00000 n
+0000197921 00000 n
+0000198055 00000 n
+0000198173 00000 n
+0000198291 00000 n
+0000198409 00000 n
+0000198527 00000 n
+0000198649 00000 n
+0000198776 00000 n
+0000198905 00000 n
+0000199043 00000 n
+0000199164 00000 n
+0000199284 00000 n
+0000199421 00000 n
+0000199554 00000 n
+0000199696 00000 n
+0000199826 00000 n
+0000199952 00000 n
+0000200100 00000 n
+0000200223 00000 n
+0000200354 00000 n
+0000200482 00000 n
+0000200618 00000 n
+0000200748 00000 n
+0000200865 00000 n
+0000200982 00000 n
+0000201107 00000 n
+0000201245 00000 n
+0000201359 00000 n
+0000201489 00000 n
+0000201613 00000 n
+0000201742 00000 n
+0000201879 00000 n
+0000202011 00000 n
+0000202136 00000 n
+0000202263 00000 n
+0000202395 00000 n
+0000202551 00000 n
+0000202665 00000 n
+0000202790 00000 n
+0000202933 00000 n
+0000203063 00000 n
+0000203187 00000 n
+0000203341 00000 n
+0000203495 00000 n
+0000203644 00000 n
+0000203769 00000 n
+0000203909 00000 n
+0000204027 00000 n
+0000204155 00000 n
+0000204287 00000 n
+0000204420 00000 n
+0000204551 00000 n
+0000204686 00000 n
+0000204805 00000 n
+0000204941 00000 n
+0000205082 00000 n
+0000205225 00000 n
+0000205356 00000 n
+0000205493 00000 n
+0000205626 00000 n
+0000205772 00000 n
+0000205902 00000 n
+0000206037 00000 n
+0000206153 00000 n
+0000206279 00000 n
+0000206402 00000 n
+0000206523 00000 n
+0000206654 00000 n
+0000206790 00000 n
+0000206924 00000 n
+0000207045 00000 n
+0000207163 00000 n
+0000207296 00000 n
+0000207425 00000 n
+0000207579 00000 n
+0000207717 00000 n
+0000207837 00000 n
+0000207966 00000 n
+0000208088 00000 n
+0000208219 00000 n
+0000208339 00000 n
+0000208477 00000 n
+0000208613 00000 n
+0000208752 00000 n
+0000208876 00000 n
+0000208999 00000 n
+0000209137 00000 n
+0000209264 00000 n
+0000209387 00000 n
+0000209507 00000 n
+0000209649 00000 n
+0000209784 00000 n
+0000209901 00000 n
+0000210031 00000 n
+0000210162 00000 n
+0000210293 00000 n
+0000210415 00000 n
+0000210536 00000 n
+0000210647 00000 n
+0000210793 00000 n
+0000210939 00000 n
+0000211092 00000 n
+0000211229 00000 n
+0000211382 00000 n
+0000211503 00000 n
+0000211624 00000 n
+0000211740 00000 n
+0000211856 00000 n
+0000211978 00000 n
+0000212109 00000 n
+0000212230 00000 n
+0000212354 00000 n
+0000212477 00000 n
+0000212599 00000 n
+0000212738 00000 n
+0000212857 00000 n
+0000212989 00000 n
+0000213123 00000 n
+0000213267 00000 n
+0000213396 00000 n
+0000213535 00000 n
+0000213648 00000 n
+0000213765 00000 n
+0000213886 00000 n
+0000214002 00000 n
+0000214118 00000 n
+0000214243 00000 n
+0000214354 00000 n
+0000214474 00000 n
+0000214586 00000 n
+0000214707 00000 n
+0000214840 00000 n
+0000214973 00000 n
+0000215104 00000 n
+0000215245 00000 n
+0000215384 00000 n
+0000215500 00000 n
+0000215625 00000 n
+0000215754 00000 n
+0000215888 00000 n
+0000216026 00000 n
+0000216166 00000 n
+0000216317 00000 n
+0000216455 00000 n
+0000216586 00000 n
+0000216724 00000 n
+0000216856 00000 n
+0000216981 00000 n
+0000217110 00000 n
+0000217244 00000 n
+0000217376 00000 n
+0000217505 00000 n
+0000217616 00000 n
+0000217746 00000 n
+0000217875 00000 n
+0000218002 00000 n
+0000218132 00000 n
+0000218259 00000 n
+0000218382 00000 n
+0000218502 00000 n
+0000218639 00000 n
+0000218786 00000 n
+0000218907 00000 n
+0000219075 00000 n
+0000219187 00000 n
+0000219317 00000 n
+0000219451 00000 n
+0000219582 00000 n
+0000219719 00000 n
+0000219869 00000 n
+0000220011 00000 n
+0000220148 00000 n
+0000220273 00000 n
+0000220400 00000 n
+0000220528 00000 n
+0000220656 00000 n
+0000220785 00000 n
+0000220931 00000 n
+0000221056 00000 n
+0000221177 00000 n
+0000221287 00000 n
+0000221398 00000 n
+0000221508 00000 n
+0000221618 00000 n
+0000221732 00000 n
+0000221864 00000 n
+0000221983 00000 n
+0000222105 00000 n
+0000222230 00000 n
+0000222353 00000 n
+0000222489 00000 n
+0000222609 00000 n
+0000222745 00000 n
+0000222905 00000 n
+0000223002 00000 n
+0000223127 00000 n
+0000223265 00000 n
+0000223392 00000 n
+0000223518 00000 n
+0000223669 00000 n
+0000223819 00000 n
+0000223960 00000 n
+0000224101 00000 n
+0000224243 00000 n
+0000224384 00000 n
+0000224513 00000 n
+0000224634 00000 n
+0000224763 00000 n
+0000224901 00000 n
+0000225038 00000 n
+0000225174 00000 n
+0000225304 00000 n
+0000225435 00000 n
+0000225565 00000 n
+0000225694 00000 n
+0000225822 00000 n
+0000225953 00000 n
+0000226075 00000 n
+0000226207 00000 n
+0000226340 00000 n
+0000226464 00000 n
+0000226595 00000 n
+0000226727 00000 n
+0000226850 00000 n
+0000226990 00000 n
+0000227131 00000 n
+0000227271 00000 n
+0000227403 00000 n
+0000227542 00000 n
+0000227675 00000 n
+0000227813 00000 n
+0000227949 00000 n
+0000228083 00000 n
+0000228218 00000 n
+0000228352 00000 n
+0000228475 00000 n
+0000228606 00000 n
+0000228725 00000 n
+0000228858 00000 n
+0000228982 00000 n
+0000229103 00000 n
+0000229225 00000 n
+0000229335 00000 n
+0000229448 00000 n
+0000229584 00000 n
+0000229721 00000 n
+0000229858 00000 n
+0000229978 00000 n
+0000230101 00000 n
+0000230224 00000 n
+0000230355 00000 n
+0000230475 00000 n
+0000230606 00000 n
+0000230731 00000 n
+0000230857 00000 n
+0000230983 00000 n
+0000231103 00000 n
+0000231217 00000 n
+0000231328 00000 n
+0000231453 00000 n
+0000231583 00000 n
+0000231709 00000 n
+0000231834 00000 n
+0000231968 00000 n
+0000232090 00000 n
+0000232213 00000 n
+0000232348 00000 n
+0000232472 00000 n
+0000232594 00000 n
+0000232717 00000 n
+0000232852 00000 n
+0000232975 00000 n
+0000233098 00000 n
+0000233221 00000 n
+0000233343 00000 n
+0000233465 00000 n
+0000233588 00000 n
+0000233715 00000 n
+0000233841 00000 n
+0000233999 00000 n
+0000234099 00000 n
+0000234211 00000 n
+0000234322 00000 n
+0000234439 00000 n
+0000234556 00000 n
+0000234719 00000 n
+0000234818 00000 n
+0000235002 00000 n
+0000235127 00000 n
+0000235255 00000 n
+0000235427 00000 n
+0000235535 00000 n
+0000235682 00000 n
+0000235808 00000 n
+0000235937 00000 n
+0000236061 00000 n
+0000236160 00000 n
+0000236261 00000 n
+0000236431 00000 n
+0000236530 00000 n
+0000236631 00000 n
+0000236744 00000 n
+0000236859 00000 n
+0000237036 00000 n
+0000237138 00000 n
+0000237240 00000 n
+0000237382 00000 n
+0000237498 00000 n
+0000237614 00000 n
+0000237730 00000 n
+0000022336 00000 n
+trailer
+<</Size 2646/Root 1545 0 R/Info 1543 0 R/ID[<6B7738D9D7F3DB68CEAAFF4290B41148><55F590983A53D3469ED7D4C490EB8A97>]/Prev 1814511>>
+startxref
+0
+%%EOF
+
+2645 0 obj <</Filter/FlateDecode/I 11421/L 11405/Length 3587/O 11389/S 10422>>stream
+hÞìZ påÿöÛ½ã6—ävïŽy¹Ü]„ƒ Àwñ!¼I †Së1j ÐN£26VG÷N¢'¯Fõ´Äb5ÓS kíÞh+* R¦Öpêãúâ‹öÛÝÛ½Ý{%P´3v2»û}ÿ×ïÿøþßÞf
+
+æõ˜ýä)áë@kØö¤án᯾y5–‰äð·¬×ú®aaL´&¬Â)Â{‰©õ…Èåüq05`©"j°êyë³ä8ðÆàœÂ‘5äRáK03ÂŒ'Ï019j±Àóü‹¾ÝÖ¿“.á3ÅdÞOƒ0wõæÑð)b~Â×ÃüŠ\îâœ'éwàü3>w“ÉßõÐÈC™üÌ®ªpñçpMlTxþ¹‚;I+ÿ±0×]ì%_öÌáö1êS¢2áJ=AÍ_vMíf}px•­-~žÜ„^ŒÎ8È®¦– ³YƒÌ$b·ðã]fß@­ŽuÍ;Ç,‚¯ò‡Uí ð¶Ø¬ÁIö’fr ºTµÓ/àט½¿%,àmží4 `øEœî¡pø3°Ù­Ó #‚Óø‰BÑ&ê:ðvdÞõì—ÔpS´n-m&ú*:ëÓd²üÕßcü|'¸,zÍͼÔ&Üû-fÒß@ów›o§üïÇ‘â:r/ÿ1S¿ßúy­p–›¶»ØM¾Âææøå?œÿósòYðy´3;à3|”™^gŸ¼É3%î¨4?C&øƒñò8}~âå®=WÔD™Ñ‡áÚÍæid0HDªQñ p0–3•BžÈ°‡¨+ø1Èèƒ{Áˆh^Ö¡7ÝŸûùy¾â›ÉÁi¡%Q\JÖ‚§‘3l>{Àvà
+¬'øÙ‘‚^¸¼€fDD‚0_;XÐoê>j
+Ø"”9ð{äŠÒ¯c„wW˜ŽŸ€_ÇDá[à
+·‚¡ÊG»IŽãy“öƒ0ªJ˜\Ä_0sMØsÀ  ™ò¸ŸŸØUœ Î(r2…axø ¨
+ÂÄg ¸Ýf79û5'^t’lqœ‘Ãx¸-ZÛnAd{¬4/cî#·z쉩'­WBÀŸg£†3Á†ÄŠÞ’Ná,j<
+¥Ò°Ê,(aŒ´[IžjH’÷ÕÁxg ÅÇ9E} {´!ÈÕ™Òð0ËP6*@ƒÉTIaÔ×çYJQÊ ÉR ð\=!3ã9M4°D*Bô¿ïSã0)”1Ç
+n©è`èõÑP‡DÐŽmˆ„t}%jY©üEºšy  è2­f5¤”
+ɶXoʶTÊÔBqt(“²Q£&Ãm5ÓÕ¢~Âê؈‘Ëe>åªåg;´!L+4²Æ+]¡SÒÇ–tˆ
+ÖîõzU)‚µIl+ë'¬åI6…Ý&ÁïĨˆâ)4XʧI‹##WŠ”q¨ŒíbàÌx½rP¥8±
+~e ±w°=V&"DcÀ¡Ä­­­M®rÖªþÓžZ  Pª¿R
+d¤^‚
+VrksT·)sÉ €xmëoXùRݦ¼CJœ[­D£º$’ëS®©¤$çÌ€®wHɵ:853ÒdYÙ3^ÒiQ¼¼C'Îz;üÕ^ªÐ5k…•HªÝ$ïd´R}%Wœ\ǯї„¨´IΚA‰rˆÍ‚õ¶u¨ýF^zÄHѶ:µ~%‡Åˆ°Õj‡P©)Ça«–Õ9ä²à´ëTv–K«Âáàt‡U\`%ó„]rG2êòzµHæVZåºL§]¼Ã`õê†ùõ ëRZ”ö9” ›22bÖÙ¼³Ê²ò–ÓüPجÜPDeS”V«†»ZãB²:²9œºˆ
+ëH“ÖûæÐe4Õc”žìNõ'™Mmr¿×T°¸åÊ{cJ›¼D’­B´©%^m@_Óú½Rˆ]Æᨾü}Ëåï[.ßòÿñ} nûÀ˜ö›p38ûÀhi;AÑéø‹o4Œw÷mìÀºI#˜Ømï¤ýaS÷´tÛŽòì8îÔÆã–0Í÷øóWø*-Ü–ÖM°‰o¥º]ÁR“°
+Ž}8°8ÔÄò[¨.g¬Ä8¸NÅm¥Ú'%t¢1`…mT»+XeÂ
+&³ñ‡ >G¬Cõ¢¶v')m°ÆÎo¥x§g4 Áú¢ÈÃTSVÀyCn+·™jr.“€¶È*àð”ÒÜÂÐdË`Õ¥4#âPÝŽØhš[ ëÙÀ1ˆ%¦h#U
+i¨ˆÙG`êYL —aÔ¸Ä\b÷×Ô…Ü…ñ[É3cÑ c×ÌàëE‘ÕÔþ1舱k.t[¬À
+ˆÙ¸Þ–ÙÀ6*\NïÆåZfçv@Eli°|G¯UØNíqƦÐîÑή\.œèi ËoÇù‰•v†—„Z¬(Lõ”U ¶Ì‰<f”»,<Åã­¶ƒÜßè Ænú§]ˆáƇjÀ 7Ø‹„­æx9º4šL
+endstream endobj 1545 0 obj <</Metadata 1542 0 R/OpenAction[1546 0 R/XYZ null null null]/Outlines 2056 0 R/PageLabels 1490 0 R/PageMode/UseOutlines/Pages 1492 0 R/Type/Catalog>> endobj 1546 0 obj <</Contents[1563 0 R 1564 0 R 1567 0 R 1568 0 R 1569 0 R 1570 0 R 1571 0 R 1572 0 R]/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ColorSpace<</CS0 1552 0 R/CS1 1553 0 R/CS2 1554 0 R/CS3 1555 0 R/CS4 1556 0 R/CS5 1557 0 R>>/ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1547 0 R/T1_1 1548 0 R/T1_2 1549 0 R/T1_3 1550 0 R/T1_4 1551 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text/ImageC/ImageI]/XObject<</Im0 1580 0 R/Im1 1581 0 R/Im10 1582 0 R/Im100 1583 0 R/Im101 1584 0 R/Im102 1585 0 R/Im103 1586 0 R/Im104 1587 0 R/Im105 1588 0 R/Im106 1589 0 R/Im107 1590 0 R/Im108 1591 0 R/Im109 1592 0 R/Im11 1593 0 R/Im110 1594 0 R/Im111 1595 0 R/Im112 1596 0 R/Im113 1597 0 R/Im114 1598 0 R/Im115 1599 0 R/Im116 1600 0 R/Im117 1601 0 R/Im118 1602 0 R/Im119 1603 0 R/Im12 1604 0 R/Im120 1605 0 R/Im121 1606 0 R/Im122 1607 0 R/Im123 1608 0 R/Im124 1609 0 R/Im125 1610 0 R/Im126 1611 0 R/Im127 1612 0 R/Im128 1613 0 R/Im129 1614 0 R/Im13 1615 0 R/Im130 1616 0 R/Im131 1617 0 R/Im132 1618 0 R/Im133 1619 0 R/Im134 1620 0 R/Im135 1621 0 R/Im136 1622 0 R/Im137 1623 0 R/Im138 1624 0 R/Im139 1625 0 R/Im14 1626 0 R/Im140 1627 0 R/Im141 1628 0 R/Im142 1630 0 R/Im143 1631 0 R/Im144 1632 0 R/Im145 1633 0 R/Im146 1634 0 R/Im147 1635 0 R/Im148 1636 0 R/Im149 1637 0 R/Im15 1638 0 R/Im150 1639 0 R/Im151 1640 0 R/Im152 1641 0 R/Im153 1642 0 R/Im154 1643 0 R/Im155 1644 0 R/Im156 1645 0 R/Im157 1646 0 R/Im158 1647 0 R/Im159 1648 0 R/Im16 1649 0 R/Im160 1650 0 R/Im161 1651 0 R/Im162 1652 0 R/Im163 1653 0 R/Im164 1654 0 R/Im165 1655 0 R/Im166 1656 0 R/Im167 1657 0 R/Im168 1658 0 R/Im169 1659 0 R/Im17 1660 0 R/Im170 1661 0 R/Im171 1662 0 R/Im172 1663 0 R/Im173 1664 0 R/Im174 1665 0 R/Im175 1666 0 R/Im176 1667 0 R/Im177 1668 0 R/Im178 1669 0 R/Im179 1670 0 R/Im18 1671 0 R/Im180 1672 0 R/Im181 1673 0 R/Im182 1674 0 R/Im183 1675 0 R/Im184 1676 0 R/Im185 1677 0 R/Im186 1678 0 R/Im187 1679 0 R/Im188 1680 0 R/Im189 1681 0 R/Im19 1682 0 R/Im190 1683 0 R/Im191 1684 0 R/Im192 1685 0 R/Im193 1686 0 R/Im194 1687 0 R/Im195 1688 0 R/Im196 1689 0 R/Im197 1690 0 R/Im198 1691 0 R/Im199 1692 0 R/Im2 1693 0 R/Im20 1694 0 R/Im200 1695 0 R/Im201 1696 0 R/Im202 1697 0 R/Im203 1698 0 R/Im204 1699 0 R/Im205 1700 0 R/Im206 1701 0 R/Im207 1702 0 R/Im208 1703 0 R/Im209 1704 0 R/Im21 1705 0 R/Im210 1706 0 R/Im211 1707 0 R/Im212 1708 0 R/Im213 1709 0 R/Im214 1710 0 R/Im215 1711 0 R/Im216 1712 0 R/Im217 1713 0 R/Im218 1714 0 R/Im219 1715 0 R/Im22 1716 0 R/Im220 1717 0 R/Im221 1718 0 R/Im222 1719 0 R/Im223 1720 0 R/Im224 1721 0 R/Im225 1722 0 R/Im226 1723 0 R/Im227 1724 0 R/Im228 1725 0 R/Im229 1726 0 R/Im23 1727 0 R/Im230 1728 0 R/Im231 1729 0 R/Im232 1730 0 R/Im233 1731 0 R/Im234 1732 0 R/Im235 1733 0 R/Im236 1734 0 R/Im237 1735 0 R/Im238 1736 0 R/Im239 1737 0 R/Im24 1738 0 R/Im240 1739 0 R/Im241 1740 0 R/Im242 1741 0 R/Im243 1742 0 R/Im244 1743 0 R/Im245 1744 0 R/Im246 1745 0 R/Im247 1746 0 R/Im248 1747 0 R/Im249 1748 0 R/Im25 1749 0 R/Im250 1750 0 R/Im251 1751 0 R/Im252 1752 0 R/Im253 1753 0 R/Im254 1754 0 R/Im255 1755 0 R/Im256 1756 0 R/Im257 1757 0 R/Im258 1758 0 R/Im259 1759 0 R/Im26 1760 0 R/Im260 1761 0 R/Im261 1762 0 R/Im262 1763 0 R/Im263 1764 0 R/Im264 1765 0 R/Im265 1766 0 R/Im266 1767 0 R/Im267 1768 0 R/Im268 1769 0 R/Im269 1770 0 R/Im27 1771 0 R/Im270 1772 0 R/Im271 1773 0 R/Im272 1774 0 R/Im273 1775 0 R/Im274 1776 0 R/Im275 1777 0 R/Im276 1778 0 R/Im277 1779 0 R/Im278 1780 0 R/Im279 1781 0 R/Im28 1782 0 R/Im280 1783 0 R/Im281 1784 0 R/Im282 1785 0 R/Im283 1786 0 R/Im284 1787 0 R/Im285 1788 0 R/Im286 1789 0 R/Im287 1790 0 R/Im288 1791 0 R/Im289 1792 0 R/Im29 1793 0 R/Im290 1794 0 R/Im291 1795 0 R/Im292 1796 0 R/Im293 1797 0 R/Im294 1798 0 R/Im295 1799 0 R/Im296 1800 0 R/Im297 1801 0 R/Im298 1802 0 R/Im299 1803 0 R/Im3 1804 0 R/Im30 1805 0 R/Im300 1806 0 R/Im301 1807 0 R/Im302 1808 0 R/Im303 1809 0 R/Im304 1810 0 R/Im305 1811 0 R/Im306 1812 0 R/Im307 1813 0 R/Im308 1814 0 R/Im309 1815 0 R/Im31 1816 0 R/Im310 1817 0 R/Im311 1818 0 R/Im312 1819 0 R/Im313 1820 0 R/Im314 1821 0 R/Im315 1822 0 R/Im316 1823 0 R/Im317 1824 0 R/Im318 1825 0 R/Im319 1826 0 R/Im32 1827 0 R/Im320 1828 0 R/Im321 1829 0 R/Im322 1830 0 R/Im323 1831 0 R/Im324 1832 0 R/Im325 1833 0 R/Im326 1834 0 R/Im327 1835 0 R/Im328 1836 0 R/Im329 1837 0 R/Im33 1838 0 R/Im330 1839 0 R/Im331 1840 0 R/Im332 1841 0 R/Im333 1842 0 R/Im334 1843 0 R/Im335 1844 0 R/Im336 1845 0 R/Im337 1846 0 R/Im338 1847 0 R/Im339 1848 0 R/Im34 1849 0 R/Im340 1850 0 R/Im341 1851 0 R/Im342 1852 0 R/Im343 1853 0 R/Im344 1854 0 R/Im345 1855 0 R/Im346 1856 0 R/Im347 1857 0 R/Im348 1858 0 R/Im349 1859 0 R/Im35 1860 0 R/Im350 1861 0 R/Im351 1862 0 R/Im352 1863 0 R/Im353 1864 0 R/Im354 1865 0 R/Im355 1866 0 R/Im356 1867 0 R/Im357 1868 0 R/Im358 1869 0 R/Im359 1870 0 R/Im36 1871 0 R/Im360 1872 0 R/Im361 1873 0 R/Im362 1874 0 R/Im363 1875 0 R/Im364 1876 0 R/Im365 1877 0 R/Im366 1878 0 R/Im367 1879 0 R/Im368 1880 0 R/Im369 1881 0 R/Im37 1882 0 R/Im370 1883 0 R/Im371 1884 0 R/Im372 1885 0 R/Im373 1886 0 R/Im374 1887 0 R/Im375 1888 0 R/Im376 1889 0 R/Im377 1890 0 R/Im378 1891 0 R/Im379 1892 0 R/Im38 1893 0 R/Im380 1894 0 R/Im381 1895 0 R/Im382 1896 0 R/Im383 1897 0 R/Im384 1898 0 R/Im385 1899 0 R/Im386 1900 0 R/Im387 1901 0 R/Im388 1902 0 R/Im389 1903 0 R/Im39 1904 0 R/Im390 1905 0 R/Im391 1906 0 R/Im392 1907 0 R/Im393 1908 0 R/Im394 1909 0 R/Im395 1910 0 R/Im396 1911 0 R/Im397 1912 0 R/Im398 1913 0 R/Im399 1914 0 R/Im4 1915 0 R/Im40 1916 0 R/Im400 1917 0 R/Im401 1918 0 R/Im402 1919 0 R/Im403 1920 0 R/Im404 1921 0 R/Im405 1922 0 R/Im406 1923 0 R/Im407 1924 0 R/Im408 1925 0 R/Im409 1926 0 R/Im41 1927 0 R/Im410 1928 0 R/Im411 1929 0 R/Im412 1930 0 R/Im413 1931 0 R/Im414 1932 0 R/Im415 1933 0 R/Im416 1934 0 R/Im417 1935 0 R/Im418 1936 0 R/Im419 1937 0 R/Im42 1938 0 R/Im420 1939 0 R/Im421 1940 0 R/Im422 1941 0 R/Im423 1942 0 R/Im424 1943 0 R/Im425 1944 0 R/Im426 1945 0 R/Im427 1946 0 R/Im428 1947 0 R/Im429 1948 0 R/Im43 1949 0 R/Im430 1950 0 R/Im431 1951 0 R/Im432 1952 0 R/Im433 1953 0 R/Im434 1954 0 R/Im435 1955 0 R/Im436 1956 0 R/Im437 1957 0 R/Im438 1958 0 R/Im439 1959 0 R/Im44 1960 0 R/Im440 1961 0 R/Im441 1962 0 R/Im442 1963 0 R/Im443 1964 0 R/Im444 1965 0 R/Im445 1966 0 R/Im446 1967 0 R/Im447 1968 0 R/Im448 1969 0 R/Im449 1970 0 R/Im45 1971 0 R/Im450 1972 0 R/Im451 1973 0 R/Im452 1974 0 R/Im453 1975 0 R/Im454 1976 0 R/Im455 1977 0 R/Im456 1978 0 R/Im457 1979 0 R/Im458 1981 0 R/Im459 1982 0 R/Im46 1983 0 R/Im460 1984 0 R/Im461 1985 0 R/Im462 1986 0 R/Im463 1987 0 R/Im464 1988 0 R/Im465 1989 0 R/Im466 1990 0 R/Im467 1991 0 R/Im468 1992 0 R/Im469 1993 0 R/Im47 1994 0 R/Im470 1995 0 R/Im471 1996 0 R/Im472 1997 0 R/Im473 1998 0 R/Im48 1999 0 R/Im49 2000 0 R/Im5 2001 0 R/Im50 2002 0 R/Im51 2003 0 R/Im52 2004 0 R/Im53 2005 0 R/Im54 2006 0 R/Im55 2007 0 R/Im56 2008 0 R/Im57 2009 0 R/Im58 2010 0 R/Im59 2011 0 R/Im6 2012 0 R/Im60 2013 0 R/Im61 2014 0 R/Im62 2015 0 R/Im63 2016 0 R/Im64 2017 0 R/Im65 2018 0 R/Im66 2019 0 R/Im67 2020 0 R/Im68 2021 0 R/Im69 2022 0 R/Im7 2023 0 R/Im70 2024 0 R/Im71 2025 0 R/Im72 2026 0 R/Im73 2027 0 R/Im74 2028 0 R/Im75 2029 0 R/Im76 2030 0 R/Im77 2031 0 R/Im78 2032 0 R/Im79 2033 0 R/Im8 2034 0 R/Im80 2035 0 R/Im81 2036 0 R/Im82 2037 0 R/Im83 2038 0 R/Im84 2039 0 R/Im85 2040 0 R/Im86 2041 0 R/Im87 2042 0 R/Im88 2043 0 R/Im89 2044 0 R/Im9 2045 0 R/Im90 2046 0 R/Im91 2047 0 R/Im92 2048 0 R/Im93 2049 0 R/Im94 2050 0 R/Im95 2051 0 R/Im96 2052 0 R/Im97 2053 0 R/Im98 2054 0 R/Im99 2055 0 R>>>>/Rotate 0/Type/Page>> endobj 1547 0 obj <</BaseFont/Times-Roman/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1561 0 R/LastChar 180/Subtype/Type1/Type/Font/Widths[250 333 408 500 500 833 778 180 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 350 500 350 333 500 444 1000 500 500 333 1000 556 333 889 350 611 350 350 333 333 444 444 350 500 1000 333 980 389 333 722 350 444 722 250 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333]>> endobj 1548 0 obj <</BaseFont/Helvetica/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1562 0 R/LastChar 233/Subtype/Type1/Type/Font/Widths[278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 350 556 350 222 556 333 1000 556 556 333 1000 667 333 1000 350 611 350 350 222 222 333 333 350 556 1000 333 1000 500 333 944 350 500 667 278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 333 400 584 333 333 333 556 537 278 333 333 365 556 834 834 834 611 667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 556 556 556 556 556 556 889 500 556 556]>> endobj 1549 0 obj <</BaseFont/Helvetica-Bold/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1559 0 R/LastChar 122/Subtype/Type1/Type/Font/Widths[278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500]>> endobj 1550 0 obj <</BaseFont/AvantGarde-Demi/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1579 0 R/LastChar 84/Subtype/Type1/Type/Font/Widths[280 280 360 560 560 860 680 220 380 380 440 600 280 420 280 460 560 560 560 560 560 560 560 560 560 560 280 280 600 600 600 560 740 740 580 780 700 520 480 840 680 280 480 620 440 900 740 840 560 840 580 520 420]>> endobj 1551 0 obj <</BaseFont/Helvetica-BoldOblique/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1560 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556]>> endobj 1552 0 obj [/Indexed/DeviceRGB 65 1573 0 R] endobj 1553 0 obj [/Indexed/DeviceRGB 0 1574 0 R] endobj 1554 0 obj [/Indexed/DeviceRGB 6 1575 0 R] endobj 1555 0 obj [/Indexed/DeviceRGB 8 1576 0 R] endobj 1556 0 obj [/Indexed/DeviceRGB 84 1577 0 R] endobj 1557 0 obj [/Indexed/DeviceRGB 252 1578 0 R] endobj 1558 0 obj <</SA false/SM 0.02/Type/ExtGState>> endobj 1559 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 262176/FontBBox[-170 -228 1003 962]/FontName/Helvetica-Bold/ItalicAngle 0/StemH 140/StemV 140/Type/FontDescriptor/XHeight 532>> endobj 1560 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 262240/FontBBox[-174 -228 1114 962]/FontName/Helvetica-BoldOblique/ItalicAngle -12/StemH 140/StemV 140/Type/FontDescriptor/XHeight 532>> endobj 1561 0 obj <</Ascent 699/CapHeight 662/Descent -217/Flags 34/FontBBox[-168 -218 1000 898]/FontName/Times-Roman/ItalicAngle 0/StemH 84/StemV 84/Type/FontDescriptor/XHeight 450>> endobj 1562 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 32/FontBBox[-166 -225 1000 931]/FontName/Helvetica/ItalicAngle 0/StemH 88/StemV 88/Type/FontDescriptor/XHeight 523>> endobj 1563 0 obj <</Filter/FlateDecode/Length 1463>>stream
+H‰”—ßsä4 Çÿ?:̬ϲ;y,½r”RÚ
+ÑŒG€Ù'®%9•óî<H–þ :¢“qŽëD«V· 7ȘÂJüøäð\ÐPm·÷柑E™kfP–ÞÙÿõvû¥RÀû‡ýzÇ~ºûk»ëY×ïª?º†(ÀjQ+fL#´¼‡7(ä…XБj}âäÒÎǨP­„’c@]Õò‹#ŠéŒV–?M¡Ì¤,à ÃÖÜjkÒ¢òg
+‹Ù`é5¾ì ¦öRN0î±YØã€-Ü^ñ³þ±Ç¿V+¥ù]åøC¥ù¿ì¨‚–þ¼Ûn–Rœó`PÀ]ûÈ“ÌZ¼îFb]RbÒ
+õ\^á>è©zÔRfˆ•¥_ýáüœî†ª…Ë6¿
+î+a¹Ø‚,hƒÜ-—ÛçevàeR É´¢Zr ¡ˆ ]‡÷+©¡I‹±˜LÙ;³;äYTAxÉ<¸C±|¢òt3Ú—yËô×Lúk—Ñ©AT5vÞä9'Ï)­6šò)À>±1  N8h¡ëÑ3%‡Í®)í~£Ý2Žh8×ãâUÌ “6M‰sÿ5P<8lµ‹sE Î<«pvÅUµr\BJ9ß0QPñ=3Q„™Z£ZÐq:4m‹~×oînnžªšßn7ëÇíÝíž]þ‡ÝrÿØß0ÜŠ2¬8^@Û`¼¬Y“k³™&…)' FûrúĶ·ýçõ¦gë¿·H~ç?¡,7|³¡Ç~¿½4mBõ¦îeóIÆ#îý³B=íýR‚vnÜØm«UÍÞ³ój¥ùºZxÄ]¿¨V†2”ü ß=:î×|¬Ø~{}»Þ¡yy4qšhIŽ_<˜f˜üŒ^
+»@:K\q!,;T yï#ÞSi4ZѼ=N78”<;µ•GÃ|D{0ÝÄk~¥¼Þ÷è­h„£rK
+ ”î¹i#ÑðyùnË!#“ïê ÊZ”¨©-M𾉊xóP”†D™!þ€½§ôŒIW“(ÉTô¸TÓN$KP~±Vãb3,6†f<¬ðèî|°Åß5™ëÌ"ëI iñß­ôD[i‹sà´>òlÊJˆИÖ8DêZ)1³ˆH—#¢¨4I;–#ÛbÃ3‹ˆlR¤ô‡®è!–tŽD9ƒ,ÊÌ""Û¾ƒõÄ ˆ‚7-8%q.üÚz-.,ŸÇ© <4°!Ï•S”V91±ˆÈdŠ2øk¤iüÒc<U(OÚ«I‚Ì-"RÍ -ÊÂ"rŽ "QçDº¨Ê¥lü5ΉÆ{I‘‰EDšY¤oeoBÊétü%dÿ 0
+endstream endobj 1564 0 obj <</Filter/FlateDecode/Length 1046>>stream
+H‰”—;’! †¯Ò'À<Ä£s'7ò\×.ûþ%ЂòÎLm°U#éûiZ‚¿ß®·ëÏév9^1fW \¡9h—w©\^߯_˜¡ÿFôûVñãýúòí=–ëëoòv5êôPzzl3½ŽtÔÏÁy˜áâî²É‡Ø›<]À¼&åS1äÁÝq¦ßK>ºg8»¶?=ÊGòª`ð’_ò —eÊç2ÓÃ’Oøû ãFÃ.ïÄé|ÆÅ'Ô£ŸéIªßq†Áùãáu‘Ï8Xê•Â§zrm6JÊKh±áÔ»fWµõª€yEÊG£MvïÌ®R½À §Þ4»ºoZ]0¯=VñSu
+¿¤.xÕ£««MDÓçK›î6¼"sP@´z9Î…Öz:Ì‹Rì9QAžq1"<'¥ûÙ :<SÖG8ÒîÒê´ÐùŒ©îA«Svpe¶äC|„ŸW8ÑßI„(~ô4[ª¡NáWÔNtX¤–ê´JL§EÌô­ÅFì™·-)Y´ØG´]³­~æ1%H
+O5‹9n©Úã6
+˜5‘΢@=o^©Ñáw^\ÀÄdsüQ½]ÀDÄqY:†ÍË'V-Qå30k ž*èZ¿.öÛq÷Æ[éŒ+›é€‹x/ôßè*ÇKÞª€‰Ué®_†ipSÔDQÀÄ&‰ÁA§Bfg_!}¾¨tÆÝçûb‚Ç-®}1;PñTþ
+Ý÷O›¶I"—IrJ
+˜Ø bêÎãbVEÇe‰ d+h
+™Î°ðXÜ _Ó¢˜áÐG摼(`Þg}7õ— j`èSØÖ×>M0/«±×¹uÝ^˜¦V¤>/¡×>ÒÌ“}W»“ßõý-\Vk»>‡-}¯RÏ8i9x¿1lzŃ›öÒºb oo"ɇ½†\ÎÍD¶nÄ^A6aÝî ‘#N^ ‰°Ç'3,Z0òa¬loYæ3Oš>ý|í6Œ,÷ºÞ®
+endstream endobj 1565 0 obj <</BaseFont/Helvetica-Oblique/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1566 0 R/LastChar 133/Subtype/Type1/Type/Font/Widths[278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 350 556 350 222 556 333 1000]>> endobj 1566 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 96/FontBBox[-170 -225 1116 931]/FontName/Helvetica-Oblique/ItalicAngle -12/StemH 88/StemV 88/Type/FontDescriptor/XHeight 523>> endobj 1567 0 obj <</Filter/FlateDecode/Length 1151>>stream
+H‰”—M$5 †ÿJŽ3‡©ï+‚ÜZÚ +X i@»ÿÿ€í*wÙI-t«¥Q÷äõ“ĉ?ò1ü¾,ÛÀù³¥rÔ€±m5Cøô>üø>røþŸð3}¾ˆ w`‡
+ðÂX‘È×UÌg$Ú{Ed/…‰ øtð”+¯z^«¢¨‘¸88Á8¢1P¤¿‚|ãXäêÂÙdBF~^¯Ä~Ab=CÜõJžØ³(
+2fGŽ­¡'ýA„xI„úΣ‡%m¼ Ú9:oóžÿ2<«V^ár~—Ï3t…‹ý\<òŒƒÁNz§êÿÄ¥ú .™£(W¸øðQ¨ZquÅu©Ù⺩ð
+
+y½÷¥ù„,½€­ûu¡õÿŸÜt W“ï]ÇÓ[š™œÐÏžXŸmC㜽óeÑñ±vò½ž18€ÉÄÐÆȯÑ›ö#]
+?ÜhÎo0ßJÙüZ­m‚þòòóëÛxùõõõ·ÛO$&[J¿±À~Óù{™<…}^P8Ö³{€ùÜ6WÎÒ”ÕØ‹ä‚ð¯
+endstream endobj 1568 0 obj <</Filter/FlateDecode/Length 1178>>stream
+H‰”WM$5 ý+9v6;Η¸!8€ÄQh â°ÚY´\øûä«S¶«J3£‘FÝÒ‹ŸŸc¿¸?˜Ïæëͼßà74`¶?Ì;gsÙlÇGLfûÏ@²ŽJ6®þõφXrÎJ`StÑlÏæ—›yºý|G·¶Ÿžî÷|ûêþëö½ùv3?š/& X¬Gc²ÁKÙ@ýOæßß͇C*GÒÀ¡ ½™ûö÷ƒ‚B6„ÙfÆ“ ±Ä|NÐ4­'©ì=ÚH“ëÓ§¿>ÿ¹¾”0¬9è ó3]—k%Á€k•x1]ܯÆ_\ QÕßH[¹&)àEÚ=XÁ‹2Äšé`O÷]CdR(CC—
+²f¯5ª½ºð5wÚݨä80£ÆžZ1ö^;…E³Cí ²r°Š;.ô…ŽQËB…Ñ3ÑIêÔmïµÔýzjŽ?¡®wiºá*nìÀÉ‘ÖÉ;ûx";*x«€"w¹‘—ƒp/š—|Í;Lrdä؆‘‡1ç%{´©
+ó‘ýŒ|à'¹gä¾ÏËNNÝ8¢×Ü>6î¨Ç|8” ¸Lrº6ðÃ8â²ÖdYðàçKpЩÖÇëm©º½?ƒH5pöþ.)<Äå‡AVÕûq¥­ü«e æÐÊÔ–c¢=åÆíÔ Á1ï‰
+£õdà¢óÄ|̳„?“mSs´Ð3On²Ò“SìöÀÑÖ¸WQN4J}è}>ÅðߧD£Õ<Q_c¦´.n p\å80¢yfdÉ^†ä‡{s8¤5P¥Î™ÔåòM×ÂÚ&¢ÐA ñ\X«!Óå[âüÔ…—}Õvá‚
+)îÂøƒ\y”£×
+endstream endobj 1569 0 obj <</Filter/FlateDecode/Length 977>>stream
+H‰”—Ar! E¯Ò' $öÙd™•ÊÒI9÷_$nOÍÂUã'úëÔoÇŸããHæ„Öñá@¢ÀšÜñëýøöãìñýïñ3> ÃÙ@ÆF…ƒõ•ÿ8|þzÐd¯'ioLŒŒöÉ„ ¦FªÏ ÖÞ׿·+#æ|
+Øòq#Wô3…dΠp°á1NŸƒ\åÃá¨ó,ù\¿ˆLéJ‘Ðì-1`‰yDfVÁ`ÓÞø4í¬PêRŽÉJÑ j¥Ñ¸ •ÂˆhJ=Sz–LŸÂõœÛ»šf´X‚Klœµ,µ–€¦Yù[É'2Î?jå4j­.×»§ËD)¶Óê …дÓê>¤=JåtR£‰v+5)­ÐšÔÀ¤BÑ6kå<¸sS¯hWtÔZ_ÔŠøšVÄW´rzÒjãº\µÔ|:ö€¦õdZ}¹J+­–]–´©¡•Ñ úÀ™[ÕºÔp!ÖAhb#‹åÿ³XÎìúÀ-VÒ Åú°›oBä ö€¦5 ­—Z°ëC+§QkµöÒju`ÑƤÚÒéï€zZØì!uà
+íŸ,ã°ê·¥£gËÂ< Š’Í–u¼ùÅÖùB1U¤Ïý’ðºÄº_>w~u±•ô®5Þ†I:iÃ0w—lêÔ@&ð´õ;¢yvòª7†¨p u‘ƒ¬a7l°¢ÛÄòGÓ°-›™õÚ—‘»^Æ&D«ñuU«̓ø„OpxtEù&˜wz;½©²îgOéAY2_ò |ÙŽ?z á'$ý¹’<ÀÒpýµ¿ÈÝÊm½[5¢™¾`ÂÀ6³!› ×VìãÅDM‡Í5ëpÖilé ×;‰ô 'ß[ÎÚ»jD=ît_ð`à6·¶{ÀY¿÷`>xSaÙ‚VaV»G~x¼<@½
+_ºf j@³À?ZÀq»ÑP-èìñ_€
+endstream endobj 1570 0 obj <</Filter/FlateDecode/Length 895>>stream
+H‰”—A’) E¯’'ÀH{o¼ôÊp̲gb|ÿ…!“J$‘ÝÑ‹Žªz"áÕGPß~| ‡ãûÇÏãÿ#¸tøöçB:"zñ@@—ŽßÇ·
+§<à"éÀŽy¢ùES¼> €Ëé*ûóÏñëø·~^?BÃQ̯‡·Šk¸¯Ñ®§+¼ÄúXƒc*Ï «Tº³_Zàiä¼P6$Hµ¨O?%u
+· —µH–fo- U µç0T‰ZÁ5Ã', _ï° i\‡!Mð3:—2,äiÚȤ%´G9õíÝ]BØJ8rÜHÐtZK8÷¦óÚÂ4qd¶ê¨UÃHâÝdxß%Ž\V¨mHC¿Ø>ØÝDÃjGd秙´ 5 øЭ?
+º†}w”8–°Õ ée{¼5H:®ÂÚ?Këöè‹ãÚ5ÎãÄh¨š-t¾[ØvG…cYvGªg”AdAnΈáTf†æ¥„ -Ö
+~µÍ» ǵ…N+ äj´t¶Bíí<5²0ؾ~ëלJº¾*‰ÏëvÓD—
+C
+endstream endobj 1571 0 obj <</Filter/FlateDecode/Length 865>>stream
+H‰”—MvÝ F·âP„Äß¼“;Êz:L{Òý
+!€$ãw2ÈIsE|¿' õíøs|[¿ †ƒ(Îz“Ž_ïÇ·ï9ßÿ?Ë×GùÀàèŒKŠGr­ à&ñ£s0–N4v£I{¨Ø‰¦Nƒ5Äq‡&êGGò'ßž“¡•üû}¼5ÿ`²ãDc'ÝŽkŸÄ0 °¹‹ÓqˆÅzØUOZ ÞÒnõ7Ü-ïFAwƒ'n³
+ÞÕ¼^ ³‰N¦hð_)
+/ñ¤Ý‹Åë€2ÖJÓtï%a¯½Üjn\\_ïbé‰Ø, VbT×Mǵé‡!›¤Y,ë™2;þ 0
+¡0ï
+endstream endobj 1572 0 obj <</Filter/FlateDecode/Length 967>>stream
+H‰”—;²Ü8 E·ÂÐ$þr''ò¦ÚSoö˜Ÿ&yAI-uuÕ ^@¸W
+Þ–¥ZK1 ©Òƒ(žËúêÕ†|ëòÌçÝZ-h;¦„g»’Ø
+endstream endobj 1573 0 obj <</Filter/FlateDecode/Length 212>>stream
+hÞ
+
+
+xxx>>>œœœ¤¤¤„„„~~~eee<<<
+endstream endobj 1574 0 obj <</Length 3>>stream
+ÿÿÿ
+endstream endobj 1575 0 obj <</Length 21>>stream
+ÿÿÿÿþÿÿþþýÿþþÿÿÿÿýÿÿþ
+endstream endobj 1576 0 obj <</Length 27>>stream
+þÿÿýÿþÿÿÿþÿþþþþüþýýÿÿýþþüÿÿ
+endstream endobj 1577 0 obj <</Filter/FlateDecode/Length 217>>stream
+hÞ$ˆÑmƒ0EóĨ%Œ
+'Ì È!|ívQ;"w(ãö„‚XB¬`OÖð¡~
+endstream endobj 1578 0 obj <</Filter/FlateDecode/Length 773>>stream
+hÞ
+
+
+MMM)))IIIQQQ\\\ˆˆˆ iii@@@˜˜˜YYY>>>%%%|||eee©©©DDD蚪Èj|µF]©3KŸ#=›7¡"=§-FÃ]sáŠËSl·-GÛg~µKa­/²H_æ—ªÌZq­:¯/½0Á 0Æ 1Ç
+0Æ
+.Ä .µ .¢9è‹žÞ—¥©6¨:µ4Ê 1È 1Ì 1È
+.À3®2°6O—I\¹5¼3¸0­4¤;©'Cª)E­+E¦!< 5¥3ª2µ3´.µ1´6¨8¥p€Ít†ž1F¦7µ#AÆ@[àk…÷‘§î„˜ám‚ÍMd½4N¥5™2 8|9JŸ_m•"9—8œ(?ºYjã“ Ó‰–¶jwCR®Š–ŽVc„%:¥<RÜ{Ò¢°’qzO]Ó–¥Í›¦ïˆì‚˜ó‹¢Àcv¥3J9¥.J¼VnÚ†™êŽÁIb𕧷9Q«4¯ >Ê”¢ÒzªN]½5½4²4›H\— 4§5³6²<­>«>¯=¯9±8°3…L]ᯠcs’&=¦@VÅiç–§¾i~©Ul}5I¦¦¦Š`jˆ,C¬D]Ý~’´ž¡kwè‚—ÇQk»9U®'G±(F³*HÂ@ZÍSlæz‘±]m–;M¹u„“#;š]l666–)@œ5¬4­6†5HÀ¡§‹BU•$@š;›#>˜&?ž2I¥;Q›/F'=Û¤Š,D±E_Ûo‰ù—®Ú ®Œaj“³³µVVV
+endstream endobj 1579 0 obj <</Ascent 740/CapHeight 740/Descent -185/Flags 262176/FontBBox[-123 -251 1222 1021]/FontName/AvantGarde-Demi/ItalicAngle 0/StemH 133/StemV 133/Type/FontDescriptor/XHeight 555>> endobj 1580 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1813/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ÊΞ F1õxôi]ë3ÓÆFÖµ½‚Âêݘ̡.VÆ„Ÿ? ºê½-â5=ÐOâ¸þ­ö϶YöÍÛ·³ôyüÔ²pÕ€OZ>n{+ý^ßä–Ÿ¾R ¿kþƒÆ×ü’Øèbõnû^ÂÈnßSAº]êVmÛ}gÏï8粋†=Ãfå{ ³ãûÍ0|ÿ
+endstream endobj 1581 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2154/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+žN8i1ÁÔ"”eÑŠbõqo£agÑ?D÷ÀªÖ0<»ó›ãæ«Ø-wÐw>^j…Õ:§ÇqÁ
+PXŽð«ä?u‘Ù¨ó
+™è¸Ná9tħQ))§B¨Þõnã¡YÙåðjÚä\
+Cìw$ÃGå*»sƒG%Zc lö˜s»ù$²ÎUîØõ^n6€M>Ù ÉQv[¬s²®­®e ó>;†ººÇWè7Scµ%5Á¥Áú­óñ?2ÁшNµCé⻇>³ü¡¿ñ‰Öµì¦4
+xßMÑôö;gÆRꮊ…¹õs¥bå—ß’âÑV­Ç+ Þ•Ûgt7‰ãv©¹1 ñN2¬‹zŒ&åô¬ºY§Ïs± žšG˜\›h¹Ï55Žu‚e Ñwx®Ïû _e®ˆôÆÂçºf<6B­Ð† ÌÊÕç¨Oë hÿ
+endstream endobj 1582 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1175/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+Æ-r}CÀá Œ/t}å\Ð
+«Ü|»«Mhá ÑUÚZZøÐr¢, (êcÁM­LЈÐ)v„@
+A0
+@&”…
+m
+-óDl&á“ZˆÐ™°¦ØL+à ÀLÕ0šW
+endstream endobj 1583 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 47>>stream
+hÞš8q¢!°°°0 (¨©©0
+endstream endobj 1584 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 42>>stream
+hÞòôôdbbb ((`
+endstream endobj 1585 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 40>>stream
+hÞòõõeccc /ˆ‹‹0
+endstream endobj 1586 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 37>>stream
+hÞ244dbbb  `cc0
+endstream endobj 1587 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 36>>stream
+hÞª¨¨àââbbbb 10440
+endstream endobj 1588 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 34>>stream
+hÞ’““c 1¨©©0
+endstream endobj 1589 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 32>>stream
+hÞÒÔÔdbbb 
+endstream endobj 1590 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 31>>stream
+hÞ’’’b  ’’0
+endstream endobj 1591 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 30>>stream
+hÞâà
+endstream endobj 1592 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ*-666ê&&¦©S§
+endstream endobj 1593 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 44/Length 1934/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+?Í ÿ
+õï©ßY[׺vëa¹´{r;ø<yK˜åŽ?TuäÜÁÌ{ž™i/ÍèI%Y°¤’L’—I$’KóâKÕ¿ñ³ú»ÿ
+—þ9ŸX?vŸóW&í³í˜íº'ðL—ôOê«úWõž·ÿ
+endstream endobj 1594 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞRTTd `aa0
+endstream endobj 1595 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêèè` 0
+endstream endobj 1596 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâàà` PTT0
+endstream endobj 1597 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÒÔÔd 0330
+endstream endobj 1598 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞrqqa ðõõ0
+endstream endobj 1599 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞòôôd HJJ0
+endstream endobj 1600 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞ233c HMM0
+endstream endobj 1601 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâååe HMM0
+endstream endobj 1602 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêëëc ðõõ0
+endstream endobj 1603 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞRTTd ÐÔÔ0
+endstream endobj 1604 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 18>>stream
+H‰Z¶lYEEEHHˆ‰‰‰”” ##cee•””Ô××`
+endstream endobj 1605 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 29>>stream
+hÞŠŒêAAA€
+endstream endobj 1606 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêééa‚ê i .0
+endstream endobj 1607 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 32>>stream
+hÞš8q"m€››@€
+endstream endobj 1608 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 33>>stream
+hÞjlldccc `aa0
+endstream endobj 1609 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 35>>stream
+hÞJMMebbb 1HMM0
+endstream endobj 1610 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 36/Subtype/Image/Type/XObject/Width 12>>stream
+qqq888
+
+
+666YYYYYYŽŽŽ
+endstream endobj 1611 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 36>>stream
+hÞ²²²bbbb =àââ0
+endstream endobj 1612 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 20>>stream
+hÞš:455YXXˆbbbqqq7n0
+endstream endobj 1613 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 39>>stream
+hÞêëëdÚ&&&+++€
+endstream endobj 1614 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 23>>stream
+hÞ244d 011éêêN: À
+endstream endobj 1615 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 45/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš5kVUUU\\œppp0‰€……EDDÄÉÉ©¥¥ À
+endstream endobj 1616 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 42>>stream
+hÞš7ož®®.}ÐÆÆÆF€
+endstream endobj 1617 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 27>>stream
+hÞjlläââbbbb 
+endstream endobj 1618 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 44>>stream
+hÞêêêÒÕÕeccc```bbb ;àââ0
+endstream endobj 1619 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 29>>stream
+hÞÊÌÌdÊ
+endstream endobj 1620 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 49>>stream
+hÞZ»vmLL /0 (`EEE€
+endstream endobj 1621 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêééaaaa *`€
+endstream endobj 1622 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 52>>stream
+hÞJJJ’`bbbdÀÐÐ À
+endstream endobj 1623 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 33>>stream
+hÞc P€
+endstream endobj 1624 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 57>>stream
+hÞš:uj`` „„Ã`,,,†††
+endstream endobj 1625 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 36>>stream
+hÞªªªbÚ
+endstream endobj 1626 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 38>>stream
+hÞêééqss“‘‘a %`aa1ƒ¶¶6€
+endstream endobj 1627 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 63>>stream
+hÞêé°°0 &&&†A Ždaa1440
+endstream endobj 1628 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 69/Subtype/Image/Type/XObject/Width 109>>stream
+hÞ²°°`  `ccsqq©©©éëëkllÌÍÍõõõUUUabbb #€['===ššš2 ú À
+endstream endobj 1629 0 obj <</BitsPerComponent 1/DecodeParms<</Columns 91/K -1>>/Filter/CCITTFaxDecode/Height 88/ImageMask true/Length 95/Subtype/Image/Type/XObject/Width 91>>stream
+°V2
+`L2 ¢¡‚†C4·ƒ!¡Lÿÿÿÿÿ4ˆÞFΘLœÂ…®šéô¹(Ó@´º&;¯чý ÿ_}8äOO?ZwÚôDDx
+endstream endobj 1630 0 obj <</BitsPerComponent 8/ColorSpace 1552 0 R/Filter/FlateDecode/Height 88/Length 848/Mask 1629 0 R/Subtype/Image/Type/XObject/Width 91>>stream
+hÞìÙmW¢@pZED|WÇ;#-=€¥»ÕÚ÷ÿR{‰°0-ÝÃÿM6~ —aÆ3*Ê7Íx …áa|‘ÊÿƒNìÕj'Ž«mèççg~R˜Y®¦%Ñ4ít,ÞoYÖFFÚ4OX‹n¿ÕÊFˆyZºû*+³ÙìTÅ6}¤•<Mé)ŠL©oú~wë™N§'¨Dißó:N§axdŸŸb·Ñ þûW= ‹cʽ žâ¸Q<,ž÷Uwe#Ä;§(Ï ÃðóBXÙö2øhúCùööã»áI?Øû¦V” ¹<¼ >A:@úy›²^»°‘gHš ‚ƒ×”×¾o~Trj­×iéÏ-8(ûšæ°¢âºÎùßyBÏøÊj†òGô\Ò_])%ýøèû‹'!Ü(r…è{^ÇVSú¨UXÓ‹h5¡^ã‹èïú}¥L™2eÊ”)S¦L™2eÊ”)“e8î;äînßµZµõP ï±;wwy[×Þìaĵ„~¸Øjíõz”~Ô«z§Ó1áÏŸWYÒyûwÇBnÒ™[öjµbl³Á_,×ër»k:Í5lÓ¿1„åE
+³åR¿ßªPžVUÿ•§¥àºiû|>FÈí-°ÂA2™;›á¨ðôôfã>)¨L3m÷<. Áëåî$Î9„¡o^v[…´-7…c Ħùææ†uM“á£`O“Òäš“ÉäõÒ…±,Ei·ÛƒM3žÂMÇÎ}ʲ[Ù~ŠœÛ¶¤//s‘sϳF)-ç´Z5®q„°f3i5 ƒ³aBÛ6ç¿~½£ !.çN½î¾éµ#éÑËëÌð®gÆ>MéÁ`@Íá±m|^?ÑdÂ’­öŒÆ÷^þøÇa<NéJ¥"¸|Ñû½—ávvö£RI>V«Uµ€–v­¦Õõ†‘vGQšÍ¦ÚÒ0/åJ»ÝètÕ~¯§Ò…›§(ï£)'´ÚËΓtúé3ñ†Î2:wІþÞëÖ?
+endstream endobj 1631 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ñññ˜˜˜|||
+endstream endobj 1632 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+ŠŠŠ‘‘‘
+endstream endobj 1633 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+­­­uuuYYYIII\\\qqq©©©
+endstream endobj 1634 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 24/Subtype/Image/Type/XObject/Width 8>>stream
+©©©‘‘‘†††uuuuuuuuuuuuqqq
+endstream endobj 1635 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 15/Subtype/Image/Type/XObject/Width 5>>stream
+ŒŒŒ\\\MMMbbb‘‘‘
+endstream endobj 1636 0 obj <</BitsPerComponent 8/ColorSpace 1553 0 R/Filter/FlateDecode/Height 45/Length 30/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìÁ1
+endstream endobj 1637 0 obj <</BitsPerComponent 8/ColorSpace 1554 0 R/Filter/FlateDecode/Height 45/Length 87/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìÒ1€ DQFïd©€‚D‰d1ð_AûÃfB
+endstream endobj 1638 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 44>>stream
+hÞÚ¸<==ÙØØèXXXBBB
+endstream endobj 1639 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1585/Subtype/Image/Type/XObject/Width 116>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+aÙù6å¿ÀI€ù6¸?{ŠÑ«Šš­¬í-
+endstream endobj 1640 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1135/Subtype/Image/Type/XObject/Width 116>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+I$’R’I$”¤“._ë?Ö‡Òÿ
+qýÕ‚+iºß¤åHä}’£ÑúLäçdi•Í°Ãá溫½.RèvUƒÞîͺ™Ç‡ _ã¼’á_ÏO» hcÑÃ@䤒J‹}I$’Jq°ú–KZò2Ø4ÜѲÑýjÏ?%£Vn5º5û\9c½¤|Šˆé¸€Èo&ª™Ã ˆswÀv±ó:§ÈÄìÇ 56$b²³5¹ÍñLýòŒ˜½J†w]é¸"-·}©¨oy?Õj>Fy:\ç–~àqhÿ
+endstream endobj 1641 0 obj <</BitsPerComponent 8/ColorSpace 1555 0 R/Filter/FlateDecode/Height 45/Length 155/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìØK€ ÐQôþ'Vð³Ôši
+ÃÃÄý.ª°[19’)ÞC¿Yg¾Í¦'³Ïõäõ!£6éP[¹ 0
+endstream endobj 1642 0 obj <</BitsPerComponent 8/ColorSpace 1556 0 R/Filter/FlateDecode/Height 44/Length 443/Subtype/Image/Type/XObject/Width 116>>stream
+hÞì— S‚@Ç]<P<²<¡¬ìÒî !j)²ïÿYÚeY¦ÆD'emÊÿÌvñ½y?öí¢
+QФÜt
+,ÆL¤Op‡ïÜ`À伊`Üš§ekÌñ{;{&ÞZj L¼§€-“ {nGœ#æ½EÝåÂaÖL·¿s`æLú=ÌÉ>» æ‚ù›™ÌŸÏÄ\œÛ?Ï$·Ñ¯ÎËF"~LÈ:ý™þ½Fƒè-À¯0±˜÷ÜKÒÛ`˜Žxž.ŽÇò<LY9>© :‰O©D ©£n×½„dRRiAÈ q)M,8ó rÒKÈ.¯äò…âªX(æE±T*‰bqx9_ʹA’ b#m¤6³‚”Ï–%I*K²ìŽ[ÄÒv¹‚ÆŠ,K^ÂÎî^uÿà°zt츦¨'ª¢ÖU¥qÚ¨a+gç4ˆ\'ÁšR»¸¼º®È72-«5ïZZ«9ì{bÝKд¶a>tŒnϵÙ1ë=ÝÀöÄ$ht So·µþcß-ýô ­ BËÏ4áÚhjÛÐ3üb~Ä‚X´ÜÛàÝš\К…ìÁÀb-ÛfÏ´¬3@æ‡
+endstream endobj 1643 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š3gNÔÔÔäææ"¶¶¶Y³f
+endstream endobj 1644 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 25>>stream
+hÞš:ujff¦˜˜‰€ƒƒÃ
+ 7nÜ`
+endstream endobj 1645 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 33>>stream
+hÞZ¶lY.Šˆˆ°°°0P0„„Ddd$@€
+»
+endstream endobj 1646 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 39>>stream
+hÞ*,,444äàà`À˜˜˜¨€v-\¸ À
+endstream endobj 1647 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 44>>stream
+hÞš7o^``    ݘ˜˜
+endstream endobj 1648 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 49>>stream
+hÞš3gŽ§§§   À&&& ÉËË[WW`
+endstream endobj 1649 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 47>>stream
+hÞòõõe&0`
+endstream endobj 1650 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 54>>stream
+hÞZ¹reXX˜ 0111 À
+endstream endobj 1651 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 59>>stream
+hÞ*,,cbbbÜ@ V®\ `
+endstream endobj 1652 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 63>>stream
+hÞZ¸p¡ ÀTT1™ xyy
+endstream endobj 1653 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 59/Subtype/Image/Type/XObject/Width 66>>stream
+hÞ*,,”““c€&&&j ™"""ª``hhèààà&&&ššš‚‚‚d˜ q*LMM0
+endstream endobj 1654 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 33>>stream
+hÞ
+ ãàà` 
+endstream endobj 1655 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 20>>stream
+hÞZ¸pa!ØÙÙ‰ˆˆ0˜˜˜
+endstream endobj 1656 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 32>>stream
+hÞÚ¸q£““0111P€&
+
+j‚Ajjê¬Y³
+endstream endobj 1657 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 16>>stream
+H‰Ú¸qcRR’ŒŒ nÀ¾¾¾
+endstream endobj 1658 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 29>>stream
+hÞZ¹r¥¡¡!5€  `HHȬY³
+endstream endobj 1659 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 14>>stream
+H‰š7ož••6ÀÂÂÂ!!!
+endstream endobj 1660 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 51>>stream
+hÞjiidbbbhÀ@ K`` @€
+endstream endobj 1661 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+©©©­­­­­­­­­
+endstream endobj 1662 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 28>>stream
+hÞZ¸p¡®®. Y€‰‰ NÊÈÈ$$$lܸ À
+
+endstream endobj 1663 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰²±±aaaabbbÀ€R‘‘‘
+endstream endobj 1664 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 21>>stream
+H‰š3gNnn®¢¢¢ˆˆÀÂÂ"(((%%¥««Ö
+endstream endobj 1665 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 27>>stream
+hÞZ»v­…… Y
+endstream endobj 1666 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰š1c†””0 ˆ`ii)@€
+endstream endobj 1667 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš3gNXX˜¢¢"Å€——×Êʪ®® À
+endstream endobj 1668 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÚ¸q£ 0 4Á ££ À
+endstream endobj 1669 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 11>>stream
+H‰òô&&&$ÀsæÌ0
+endstream endobj 1670 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 36>>stream
+hÞš5k–ppp0111Ð
+endstream endobj 1671 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 54>>stream
+hÞòõõe¬€……¥®® À
+endstream endobj 1672 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 25>>stream
+hÞZ¶  YXXˆLLLp6P#//o`` @€
+endstream endobj 1673 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 27/Subtype/Image/Type/XObject/Width 9>>stream
+uuu
+endstream endobj 1674 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 41>>stream
+hÞŠ‰‰c  `bb’lll†††
+endstream endobj 1675 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 23>>stream
+hÞRT0` 011‰‰‰eff
+endstream endobj 1676 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êééáàà`@,,,ººº
+endstream endobj 1677 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 47>>stream
+hÞZ»v­›› 0 4.í
+endstream endobj 1678 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 21>>stream
+hÞªª&0` HHH466
+endstream endobj 1679 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 27/Subtype/Image/Type/XObject/Width 9>>stream
+ŒŒŒ
+endstream endobj 1680 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 52>>stream
+hÞZ»v­‰‰ à@Ç888¬\¹ À
+endstream endobj 1681 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 17>>stream
+hÞâååeÀ˜˜˜0åää
+endstream endobj 1682 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 56>>stream
+hÞ²³³cbbbÄ€ÍÐÐ À
+endstream endobj 1683 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jlldbbbÀ
+endstream endobj 1684 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 55>>stream
+hÞrqqáàà`bbbL€ €311Y¸p!@€
+endstream endobj 1685 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 15>>stream
+hÞ
+ dÀ ˜À@FF¦®® À
+endstream endobj 1686 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰
+ dÀ
+endstream endobj 1687 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 59>>stream
+hÞÊÌÌäååe¬€‰‰ Î611Y²d @€
+endstream endobj 1688 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰Ú¸q#n !!Ñ
+endstream endobj 1689 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RTTd@L`™™ `
+endstream endobj 1690 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 64>>stream
+hÞZ¶l™0111 À¢««»råJ€
+endstream endobj 1691 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÕÕe```bbbÀ
+endstream endobj 1692 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¹r%àåå0
+endstream endobj 1693 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2139/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+¿œ÷oÅgä¹HÕÈ7
+o¨é¶ë¸†šî蛣‚}Ã÷B¡×2¬ÇéwÛH‡€
+¥_Òͬƒå>I­l’æñ0|“W¥V»¹
+`¥lzš(§˜Žåté“„Pº‹¸R오†­ãEDi{œ- ¢u¿LG3¢+â™üŸŠNþeƒÄ”¬úE'ÿ
+endstream endobj 1694 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 60>>stream
+hÞ²±±abbbaaaÄ
+endstream endobj 1695 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 66>>stream
+hÞŠŒŒdccc²€……ÅÆÆ À
+endstream endobj 1696 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰êèè`Àxyy
+endstream endobj 1697 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ
+endstream endobj 1698 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 70>>stream
+hÞRUUe†¡BÀ
+endstream endobj 1699 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰âââbÀ˜˜˜æ@€
+endstream endobj 1700 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âââbÀ
+endstream endobj 1701 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+­­­±±±±±±
+endstream endobj 1702 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ cbbbÀÜÀ
+endstream endobj 1703 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰
+ cÀÂÂÂ
+endstream endobj 1704 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 64/Subtype/Image/Type/XObject/Width 38>>stream
+hÞš3gNcccfffHHˆ¦¦¦¢¢¢”””ˆˆ///0n
+endstream endobj 1705 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 62>>stream
+hÞJMMeR€ ’’’
+endstream endobj 1706 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰bbbbÀ
+endstream endobj 1707 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 51/Subtype/Image/Type/XObject/Width 49>>stream
+hÞZ»vmOOORR’ƒƒƒªª*ÀÄÄ„Æ @´àÑÈ...S§N0
+endstream endobj 1708 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RUUeÀ&Nœ`
+endstream endobj 1709 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 57>>stream
+hÞòõõUTTäââbccc|€……EPPÐ××wêÔ©
+endstream endobj 1710 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÊÍÍeÀììì
+endstream endobj 1711 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 60>>stream
+hÞcbbbÄ
+endstream endobj 1712 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Ú¼y+0
+endstream endobj 1713 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 62>>stream
+hÞ’““cR€‰‰‰——××× À
+endstream endobj 1714 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰dÀ
+endstream endobj 1715 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 66>>stream
+hÞÒÔÔdš€ ÌÌÌ.\`
+endstream endobj 1716 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 64>>stream
+hÞZ¹r%ÃL`
+endstream endobj 1717 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’““cÀúúú
+endstream endobj 1718 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 67>>stream
+hÞ244dš€ ØØØlll
+endstream endobj 1719 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰244dÀ233
+endstream endobj 1720 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 69>>stream
+hÞrpp`€ƒƒ#)) À
+endstream endobj 1721 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²²²bÀ
+endstream endobj 1722 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 70>>stream
+hÞ
+ d àâ┑‘QEŠŠŠ@q10àååebbb 
+endstream endobj 1723 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²°°`À<==
+endstream endobj 1724 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 22>>stream
+hÞJHH` °±±ñòòJHHXXXDFFæææöôô,[¶ À
+endstream endobj 1725 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 31>>stream
+hÞZ²dIGGGff¦‰‰ •
+endstream endobj 1726 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀ<==
+endstream endobj 1727 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 65>>stream
+hÞÒÔÔdš€ RSS
+endstream endobj 1728 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 14>>stream
+H‰ÊÍÍeÀØØØlllRÁ ­­måÊ•
+endstream endobj 1729 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 28>>stream
+hÞâââb `bb’,,,555
+endstream endobj 1730 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’‘‘aÀ<==
+Y0
+endstream endobj 1731 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jkkcÀ6nÜ`
+endstream endobj 1732 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 29>>stream
+hÞòõõeÀ ¸¸¸H,,,UUU
+endstream endobj 1733 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ"##
+endstream endobj 1734 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 26>>stream
+hÞZ¸páĉsssÃÂÂlllTUUEDDxÁ€ƒƒƒ………8™™ `
+o
+endstream endobj 1735 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š8q"°lÙ2€
+endstream endobj 1736 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 30>>stream
+hÞZ¹r%n””4cÆ ;;;&&&"
+endstream endobj 1737 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¹r%6PZZ
+`
+endstream endobj 1738 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 67>>stream
+hÞš8q"ÃLLLS§N0
+endstream endobj 1739 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 39/Subtype/Image/Type/XObject/Width 13>>stream
+©©©ŒŒŒqqqQQQ@@@)))
+endstream endobj 1740 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š7o°lÙ2€
+endstream endobj 1741 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰’““cÀ
+endstream endobj 1742 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 16>>stream
+hÞÊÌÌd 011ñòò
+endstream endobj 1743 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÊÌÌdbbbÀæÍ›`
+endstream endobj 1744 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+©©©©©©ŽŽŽ
+endstream endobj 1745 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Ú¸q#0oÞ<€
+endstream endobj 1746 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ª««cÀ
+endstream endobj 1747 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 16>>stream
+hÞjll&&&Ü@
+endstream endobj 1748 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’‘‘aÀØØØ
+endstream endobj 1749 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 67>>stream
+hÞ244d `bbb #0
+endstream endobj 1750 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àúúú
+endstream endobj 1751 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰dÀRSS
+endstream endobj 1752 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 14>>stream
+H‰JMMåââbÀ ˜À 22 À
+endstream endobj 1753 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z»v- ''`
+endstream endobj 1754 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`À&Nœ`
+endstream endobj 1755 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰
+ dÀ$$$
+endstream endobj 1756 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 13>>stream
+H‰244dbbbÀ ØØØ–-[`
+endstream endobj 1757 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰rqqaÀÂÂÂ
+endstream endobj 1758 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àººº
+endstream endobj 1759 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰bbbbÀ.\`
+endstream endobj 1760 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 68>>stream
+hÞbbbb *àààa `cc’111
+endstream endobj 1761 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰*--åàà```` ''`
+endstream endobj 1762 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰baaaÀV®\ `
+endstream endobj 1763 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àªªª
+endstream endobj 1764 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÔÔdÀÜÜÜ
+endstream endobj 1765 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Z¶l™   ›› `
+endstream endobj 1766 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰233cbbbÀ
+endstream endobj 1767 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ***
+endstream endobj 1768 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RTTdÀxyy
+endstream endobj 1769 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰êèè`bbbÀêêê
+endstream endobj 1770 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’`ÀJKK
+)¨
+endstream endobj 1771 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 27>>stream
+hÞš8q"Å€ ØØØ
+endstream endobj 1772 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âål ­­ À
+endstream endobj 1773 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RUUebbbÀ
+endstream endobj 1774 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âââbÀXXX
+endstream endobj 1775 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀRSS
+endstream endobj 1776 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ŠŒ&&& `hh`
+endstream endobj 1777 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’````bbb@
+endstream endobj 1778 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰244dÀ˜˜˜êêê
+endstream endobj 1779 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²±±aÀâââ
+endstream endobj 1780 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âàà`aaa@@€
+endstream endobj 1781 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Ú¸q#///`bb²²²0
+endstream endobj 1782 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 36>>stream
+hÞš8qbXX˜””000@HZ
+endstream endobj 1783 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰òõõebbbÀtuu
+endstream endobj 1784 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀâââ
+endstream endobj 1785 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰233cbbbÀ
+endstream endobj 1786 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êêêbccc€&&&8 À
+endstream endobj 1787 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Š‹‹cbbbÀ8À`ãÆ
+endstream endobj 1788 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Š‹‹cÀ
+endstream endobj 1789 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰š5k6 ¨¨`
+endstream endobj 1790 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ"##
+endstream endobj 1791 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 12>>stream
+H‰ÊÌÌdbbbÀ€â¥`
+endstream endobj 1792 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰*,,dÀ<==
+endstream endobj 1793 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÊÌÌd ð‚ÁŒ3
+endstream endobj 1794 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’’’bÀÖ®] `
+endstream endobj 1795 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 8>>stream
+H‰&&&$ÀËË `
+endstream endobj 1796 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ aaaaÀœœœ
+endstream endobj 1797 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ª©©aÀ<==
+endstream endobj 1798 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÊÍÍe```bbb@
+endstream endobj 1799 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ªª&&&$ÀÂÂÒØØ`
+endstream endobj 1800 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰²³Ü@WW À
+endstream endobj 1801 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êëëcÀlll
+endstream endobj 1802 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰’““c@ººº
+endstream endobj 1803 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 12>>stream
+H‰RUUel
+endstream endobj 1804 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1669/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+;ØýðQޛž$¥Ê%èeêzpŠ ’=ÿ
+76[=Â@êÉ1alwrÕ`*lvÒ
+¶Ó"Gt¤ÀèÉÂZB®€ƒ`‡ŸªASV
+AD' Ë铤†.
+­ìVʈAr­f×Hì†}¦?5ãErêÕW7M§â>(‘Ù0º(7«8¹ṁ¶xv¼éʤòA$p¢Ûv¸;Àƒ÷!Äeà¢ô##Õ:™,{ yÑj°OÐ{]ø~UÆœ›1òÝef ÏÄ;ÝüWGFCm­¶4ÈpHì²bŽ¡Ô`±¤Ó5D{áî5TqhH*Õ™ ]½“6€E&1b®2\yƒò
+C ~ãïM1=’$;¶XýýUQB»Ûö7èùÿ
+Q"ëÝ´oå ÌÕsv¸·îG¡úm?%º~òs¸G)Ý5bÚZjÜ ­l¶|ŽöÕ4/; Ói:pœ'±2N¢¤B”\$)¦Ñ ‚Ö²¹Tí©i:kv'……ÅÉ©ÕÍáVÞÇsí>=–½ÞœÜwX·ú~¡ô§oš‡ ­boÀ6ðL‘Ã8‘Ø‘¢k·CȈ$k¨FÁêVb<¥Q>æÿ
+endstream endobj 1805 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 34>>stream
+hÞZ¶ œœœØØؘ˜˜¨ 233
+endstream endobj 1806 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¸p!6`hh`
+endstream endobj 1807 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²±±aÀ
+endstream endobj 1808 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰*--e@lll
+endstream endobj 1809 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰ªªªâââbÀ 455
+endstream endobj 1810 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z»v-6`hh`
+endstream endobj 1811 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¸p! *`bb²²²0
+endstream endobj 1812 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰âååe@¹¹¹
+endstream endobj 1813 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰²²²bÀ ˜˜˜,,,
+endstream endobj 1814 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 8>>stream
+H‰b`ÀTUU
+endstream endobj 1815 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰RTTdÀ
+endstream endobj 1816 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 23>>stream
+hÞrqqa  °±±
+endstream endobj 1817 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰rrrb@ššš
+endstream endobj 1818 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 14>>stream
+H‰JMMåååebbbÀ˜` ,, À
+endstream endobj 1819 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 51>>stream
+hÞ*,, AhÜ™™™
+endstream endobj 1820 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âàà`À
+endstream endobj 1821 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰*--e@LLL@²
+endstream endobj 1822 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰êééa@LLL
+endstream endobj 1823 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 15>>stream
+H‰jll”’’baaa@PP°«« À
+endstream endobj 1824 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 52>>stream
+hÞrsscccc|€‰‰ À
+endstream endobj 1825 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âååeÀ
+endstream endobj 1826 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âââbÀ
+endstream endobj 1827 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ244d ““0
+endstream endobj 1828 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 7>>stream
+H‰b`@³fÍ0
+endstream endobj 1829 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 15>>stream
+H‰š8q¢¢¢"n
+endstream endobj 1830 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 54>>stream
+hÞ²°°`aaabbb”`ãÆ
+endstream endobj 1831 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰dÀ
+endstream endobj 1832 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ
+endstream endobj 1833 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰d@111
+endstream endobj 1834 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 17>>stream
+hÞ*-999&0`À ²bbbmmm
+endstream endobj 1835 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 55>>stream
+hÞ
+ a
+
+endstream endobj 1836 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰’`À
+endstream endobj 1837 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z»v-
+endstream endobj 1838 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 23>>stream
+hÞrpp` 011±±±Mœ8 À
+endstream endobj 1839 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰rrrb@†††
+endstream endobj 1840 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 18>>stream
+hÞZ²d‰¯¯////`bbB*Ë€
+endstream endobj 1841 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 56>>stream
+hÞêèè`bbbÜ`ãÆ
+endstream endobj 1842 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰’““cÀ
+endstream endobj 1843 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’““cbbbÀ
+Y
+endstream endobj 1844 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰JMMe@‚‚‚
+endstream endobj 1845 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 18>>stream
+hÞZ¸paXX˜””n
+endstream endobj 1846 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 55>>stream
+hÞRUUeaaaÜ
+endstream endobj 1847 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ÒÔÔdÀ
+endstream endobj 1848 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jlldÀ˜˜˜.\`
+endstream endobj 1849 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ*--åàà` 6ظq#@€
+endstream endobj 1850 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰jiia@LLL
+endstream endobj 1851 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 41/Subtype/Image/Type/XObject/Width 20>>stream
+H‰š1cFBB‚‰‰ ///°°°0`pq ÃÐÐpâĉ
+endstream endobj 1852 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 56>>stream
+hÞš3gÃà,,,
+endstream endobj 1853 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰233cÀ
+endstream endobj 1854 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰dÀ<==
+endstream endobj 1855 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 29>>stream
+hÞª©©abbb@@®®®®ªª*é
+endstream endobj 1856 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 56>>stream
+hÞòõõeô@LL À
+endstream endobj 1857 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰òôôdÀ
+endstream endobj 1858 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 47/Subtype/Image/Type/XObject/Width 48>>stream
+hÞ
+ aÀXXXt1€ Â
+ <==»ºº
+endstream endobj 1859 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 56>>stream
+hÞâååeô@WW À
+endstream endobj 1860 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 22>>stream
+hÞÊÌÌd 011ùúú
+endstream endobj 1861 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ŠŒŒdÀ
+endstream endobj 1862 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 45/Subtype/Image/Type/XObject/Width 44>>stream
+hÞZ¶l™¦¦&‰€ H@],,,ŠŠŠ‘‘‘'N0
+endstream endobj 1863 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 56>>stream
+hÞb`À×× À
+endstream endobj 1864 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ÊÌÌdÀ
+endstream endobj 1865 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 42/Subtype/Image/Type/XObject/Width 41>>stream
+hÞZ¶l™‰‰ „¤àààPUUurrJMM8q"@€
+endstream endobj 1866 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 57>>stream
+hÞš:u*ÃP
+endstream endobj 1867 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ª©©aÀ
+endstream endobj 1868 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 36>>stream
+hÞZ¹r¥¡¡!0À
+endstream endobj 1869 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 57>>stream
+hÞ*,,d
+`É’%
+endstream endobj 1870 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰êééaÀ
+endstream endobj 1871 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš3gõ@nn.@€
+endstream endobj 1872 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 68/Subtype/Image/Type/XObject/Width 35>>stream
+hÞZ¸paOOOEEEjjj`` ®®®„„ ^ %%åææ™  .
+bªìêê0
+endstream endobj 1873 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 56>>stream
+hÞòôôd
+
+endstream endobj 1874 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰š5k6
+endstream endobj 1875 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰
+ aÀ <==
+endstream endobj 1876 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰bcccÀ
+endstream endobj 1877 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 56>>stream
+hÞš8q¢®®.Ã ¼¼¼
+endstream endobj 1878 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰Z¹r%6
+endstream endobj 1879 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ba€ƒƒ À
+endstream endobj 1880 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰Z²d 6
+endstream endobj 1881 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 53>>stream
+hÞ*--UTTd9H€‹‹ @€
+endstream endobj 1882 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 20>>stream
+hÞb` 
+
+
+endstream endobj 1883 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 14/Subtype/Image/Type/XObject/Width 7>>stream
+H‰b`À
+endstream endobj 1884 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰
+ Ü 33 À
+endstream endobj 1885 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰
+ dÀ
+endstream endobj 1886 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 50>>stream
+hÞÊÌÌTTTdbbb
+endstream endobj 1887 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`À–@€
+endstream endobj 1888 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âååeÀÄÄÄ
+endstream endobj 1889 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âååeÀ
+endstream endobj 1890 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 48>>stream
+hÞÚ¸qcdd¤0111 (ظq#@€
+endstream endobj 1891 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àæ@€
+endstream endobj 1892 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰JHH`aaaÀÚÚÚ
+endstream endobj 1893 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 28>>stream
+hÞª««c*+++€
+endstream endobj 1894 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 9>>stream
+H‰JHH`@LLL@277 À
+endstream endobj 1895 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 43>>stream
+hÞZ²dI`` Ý   @€
+endstream endobj 1896 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ
+endstream endobj 1897 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âååeÀ
+endstream endobj 1898 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âââbÀ
+endstream endobj 1899 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 40>>stream
+hÞš8q"}¡¡!@€
+endstream endobj 1900 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’`À
+endstream endobj 1901 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 20>>stream
+hÞÊÌÌdÀ ¤À€‰‰ SJUU À
+endstream endobj 1902 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 39>>stream
+hÞbaaa /ÈÍÍ0
+endstream endobj 1903 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RTTdÀ
+endstream endobj 1904 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 20>>stream
+hÞrrrbR
+endstream endobj 1905 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 19>>stream
+hÞâååeÀ˜À
+endstream endobj 1906 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 39>>stream
+hÞd /X»v-@€
+endstream endobj 1907 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀ
+endstream endobj 1908 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 18>>stream
+hÞÊÌÌd ÈÉÉ
+endstream endobj 1909 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞâååe #àåå0
+endstream endobj 1910 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²°°`À
+endstream endobj 1911 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 17>>stream
+hÞa ttt
+endstream endobj 1912 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞâååe #°°°
+endstream endobj 1913 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰rqqaÀ
+endstream endobj 1914 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ*--e ˜˜˜ CCC€
+endstream endobj 1915 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1782/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+·tûÏb¶$:¸ð—BÍ
+ªæ–¸´öVÔ.¯x‘ô‚)œl1¢ÏÍ?$p©Að*ÕVˆüà‰ bzZßÎ5
+AD)嬂xLÔˆµ õ«{F©ìˆ+Hrí§ÁRÉÅe¬-xøán>%ZÜcà`Š,gŠ&Æ„<ŽN-ØÎ’70þr¬] ¬·A ¬œ¾Š×K¨;îž|œ¹ÃQÙ»‡‰ôäÐ÷r›{Ûô\GÍí–Fèyk¿8N‡ýª½øÙæ-¬´~ðÔ!µâåUI#B)½¸›lý¥‡éTÓð—Ú)ÿ
+÷Õùíù„¸ƒ#­Ê µG¹¼w ТqêÕ`xóîœÀár¤×™«uZ<ણ+Т ´Áå8F{ǘá0yNÖJ4ͨÌ@j; h>ôŠ´i®Šb²D§‰Ð)c´l/Î#Uî'[?4>äÃ$Ó_Ñ$jcàÝŒÒ$“óW k·=ù»¸%^Æ>}ó>h‚P@iYHðüª­•Uà®ÜÓ*6¶Å >+ Aè‚Êk ˆxŸ‘Ñ°n2k qîÍç‹|ˆ»Á J'æ
+¾ÑØ ±â?£^MˆäÎ?H0åcôŽ§hµ†²æñ&BÖ©™Noé€k»í2'+Á;~ÓÜ`! ­÷'óp¦î<¹˜ÌäëñAo¯àQ/ðR{ƒ³Å/ÞmWK`¬W[<¦Áw‚³Smîãµ¾Õ7+®¿e•Õã^–»º´ÖOš¨
+«Cü‚0*ƒftå[¯|{ 2Äž¡›ëñ@!Ì0t*À”¬Ù·ßòñH©
+ûLë¹ûç]ß>®ëƒÿÙ
+endstream endobj 1916 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 27>>stream
+hÞ²±±abbb ‘‘0
+endstream endobj 1917 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞbaaa #(--0
+endstream endobj 1918 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Z¹reKKKRR’””È€
+endstream endobj 1919 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 14>>stream
+hÞ’` ˜˜˜¸¸¸
+endstream endobj 1920 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 14/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` +
+endstream endobj 1921 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 16>>stream
+hÞJHHà
+endstream endobj 1922 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 14>>stream
+hÞJMMe XXXZZZ
+endstream endobj 1923 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` àåå0
+endstream endobj 1924 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 16>>stream
+H‰ÊÌÌ”`
+endstream endobj 1925 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 14>>stream
+H‰*,,dÀ ˜˜˜âââ
+endstream endobj 1926 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` ðõõ0
+endstream endobj 1927 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 18>>stream
+hÞ’‘‘a °°°øúú
+endstream endobj 1928 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 17>>stream
+H‰êëëÓÕÕebbb``€¸€„„D``àÊ•+
+endstream endobj 1929 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 15>>stream
+hÞêëë“““cbbb 
+endstream endobj 1930 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 38>>stream
+hÞZ²d Áœ9s
+endstream endobj 1931 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 17>>stream
+H‰òõõåââbbbb€&0`À
+endstream endobj 1932 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 18>>stream
+hÞª¨
+endstream endobj 1933 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞêèè` àåå0
+endstream endobj 1934 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 21>>stream
+hÞ*,,d ppp(**¦‚ÁÊ•+
+endstream endobj 1935 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 22>>stream
+hÞš:uª››///Y 22 À
+endstream endobj 1936 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞÊÍÍe 0440
+endstream endobj 1937 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 25>>stream
+hÞš7o‰€‰‰ Îæåå511ÉÌÌ\¸p!@€
+endstream endobj 1938 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 27>>stream
+hÞZ¶lõ€ˆˆ@€
+endstream endobj 1939 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 25>>stream
+hÞª©©qppàååe  
+
+
+endstream endobj 1940 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞrssc ¨««0
+endstream endobj 1941 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 29>>stream
+hÞb` 011áW ((èää”™™9qâD€
+endstream endobj 1942 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 33>>stream
+hÞZ²###555YXX¨
+***
+endstream endobj 1943 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 36>>stream
+hÞ’““c =`€
+endstream endobj 1944 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 76/Subtype/Image/Type/XObject/Width 76>>stream
+hÞdÀ ÚÚÚ===¥¤¤ØØØH` (((&&&''§@¶„„„ˆˆ///e
+endstream endobj 1945 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 36>>stream
+hÞâååe =Ѐ
+endstream endobj 1946 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ÒÕÕeÀ –,Y`
+endstream endobj 1947 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 50>>stream
+hÞš8qbXX˜0111 4’’jll0
+endstream endobj 1948 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š8q" *€ˆÌš5 À
+endstream endobj 1949 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ’` DFF
+endstream endobj 1950 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 37>>stream
+hÞZ»v-íA.
+endstream endobj 1951 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ dÀ ¦N
+`
+endstream endobj 1952 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 43>>stream
+hÞZ»vmii©§§§¢¢"½
+endstream endobj 1953 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÔÔdÀLLL
+endstream endobj 1954 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÊÍÍe =`bb0
+endstream endobj 1955 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ª©©aÀ ZZZ
+endstream endobj 1956 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 35>>stream
+hÞZ¹reMM§§§¢¢¢   0P011 ‚™™Ycc#@€
+endstream endobj 1957 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š5k6ÀÆÆ`
+endstream endobj 1958 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÒÔÔd =‘‘0
+endstream endobj 1959 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š7onPZZ
+`
+endstream endobj 1960 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâàà` 0
+endstream endobj 1961 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 47/Subtype/Image/Type/XObject/Width 24>>stream
+hÞZ¸pa]]]XX˜•••œœq€MUU500°ªªjãÆ
+c
+endstream endobj 1962 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰244dÀBBB
+endstream endobj 1963 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 35>>stream
+hÞbbbb 011éêêæææÖÔÔ
+endstream endobj 1964 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 10>>stream
+H‰b`À ’’’
+endstream endobj 1965 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+±±±¡¡¡œœœœœœœœœœœœ©©©
+endstream endobj 1966 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¸p!ÀËË `
+endstream endobj 1967 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ*--e ðòòVTT
+endstream endobj 1968 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 15>>stream
+hÞš:u*€ À
+endstream endobj 1969 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰baaaÀÂÂÂ
+endstream endobj 1970 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÕ666TÀÄÄ”›› `
+endstream endobj 1971 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 14>>stream
+H‰ÒÕÕe
+endstream endobj 1972 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 15>>stream
+hÞ’““c 011utt
+endstream endobj 1973 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 14>>stream
+hÞâââb hjj
+endstream endobj 1974 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RUUeÀÜÜÜ
+endstream endobj 1975 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¶ XXX0€ˆˆ@€
+endstream endobj 1976 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 15>>stream
+hÞêëëc ¤¦¦
+endstream endobj 1977 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 14>>stream
+hÞÒÔÔd ÔÔÔ
+endstream endobj 1978 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰
+ dÀ 
+endstream endobj 1979 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰233cbbbÀ
+endstream endobj 1980 0 obj <</BitsPerComponent 1/DecodeParms<</Columns 244/K -1>>/Filter/CCITTFaxDecode/Height 89/ImageMask true/Length 256/Subtype/Image/Type/XObject/Width 244>>stream
+ä0|¨
+R‚L€¿í}¼4ÞÃZîÁ„½ê¿ûÛÚ»´.÷û[v¿†¤PÌ¢Ü0ƒÚiÛ†ƒ ì`·†ÿî "¼PÃ܉
+ÈË™]âÈCîìBÃÁ¯>!ŠÂÞÖ ×ÎÐ{‡h~V¡ÿøa(FÈ‚6CX… (0¡‚†
+?ÿÿùÊÔwùßÌK:2 ìáš30C6™89ó3g ø›Oïÿûÿÿ_ÿÿþÿÓý~Ÿß’ÈeüŸÿÇú~ÚPzOÿáÿûDÇþ¾Å~?DÇþŸÂòÞýÿýà±ò Îÿ§õ"F‰`‡þNþþþÿÓû^`½ß÷ ÓTòº¨o€
+endstream endobj 1981 0 obj <</BitsPerComponent 8/ColorSpace 1557 0 R/Filter/FlateDecode/Height 89/Length 2828/Mask 1980 0 R/Subtype/Image/Type/XObject/Width 244>>stream
+hÞì›y|GÇ×’-Ëò!Ù^Û’kFÒ*²¬µìx-ËWœPŽÒ4¡IÚÐ$4R ¥%\  ´IiCIs†„#i€¤•HJB9š†˜†¶\ålèIÿàÍž³’VQVr›»¿üÙñÌ›÷Ý™y3«Ï<†±dÉ@‡‘¦”\ZVFFŒÚ–—Ë50W€GŽð’¿¹ö‘M H°Ù ê—riÌ)YÇ1BÖ˜¹Uf¿9d#æìÐ¥ ªÞÙ³/¿,–×ÖÖRÅ Ù{Rª´µÀÜß/¿9l¦½ÃáfÆϘ1˜Y½¾¾žç©z§2G"ZqS“³ZËœ»’d„ SÌÉd¶&c=8èL«]SS£^
+ž9sFþ—ßïWƱFÌL[[›Úœ)Z¦3Í“Ép8;3ÂÝNgœò~zGGO½ ³x\cöz½ê|÷zz …BÅa–—$N&Í´‡ÕʤŽÅµ!›>}º€05³±0>® 3v»].þkÌÜ××W fp:\È@S³2;s{Üéôµ$Y˜©if–y™Ýæ˜C!Œ Å*Ì\0ý¸\43„z–¼‘ÿ¾ô’a_>Ÿ¯HÌAÉìv›‚…P.á´Wòâ‹bé8ÍÌ
+-yHdÆ©ñq‚,2×09˜Ï¹ŸåË,ï™ ™²
+Òî“·0ûüóv$æ\=M›6M6`nNª‚=Dœ~‡Ãæ,‰DæÎ¥Xmæs«µµU6PRR ³ ÈžÄLšH$’Éd0d›bçžúÏsçÑOgg§lÁxCËOÚ!¸¬Ì¤ @îímËs y¶REæçþõïguÆNŸþ‡A7px•môõÊ,8çMн½½Êò¢æØÊJFa~úéó³ùë3Ϭ[÷·Ã‡ÿý40@766Ê6L•³´ÏgÚ ;Bák
+ÇU*
+0ãt:£Qñ¹ˆY¶Dïîèèèñã¿bßÈ©S§Fþ°ï‰ß=~âÉ“'ºˆ
+øö¥CiVby¡™„ŽF=žvÄF‡>Ìi?òÈ/~ù裿úõo~û0Ÿ0DfÆA…ŽÌ̲E™3§ºÚoôyÙÁ'læ&ÈócŸÈ¸;éX
+‘Ëå’  3È9˜; "ÅœÛüÉÌf8å°éÜ8•f­Þؘë] 9.¹»›ìœ…o|
+’‘MAÀ˜£eè¦&„ì´5½‘ÜMU2?z¨
+Ñ4dZ¾û-%< Ê…N'BêÕ¡Š
+VºÙÜÜìSk`»È\K!+Ì:ÆT*¦!^5DfšdšˆéØM"³2 ätbsVAקÛí¦2Lºỗ2aîRÙ/!sŸRƒt†1•ß̨½b`
+òåIÀD¨¥E>LRny’VèõzÉ-Øh‚ºå=Ñ̈¹ ™qGÅ
+Æ"<¸…Õ8–¹·WcöûQ0ˆÊÊ¢T$„5”…¹ƒã8%Üø@<j ùÃñBº¸
+…|ç`O"‘HWWSËSy@Y™Ó Ô½
+ \¨5‘
+”ãus³Ç#¡Á´q¸if›CÇ Ï43Éà‚ãÍ MêNj¾KÌv¶A›¥¥òa¤ $#çÏLr¨df2õÌ1“L1ÓFlº#qú3a®Ó9gËdfDf=ƒzþ¢ë©ÌY·È¬>fu½ÑÜž4g2
+´o;`Vãƒ[WÉ‘†¤fÒE³"3céµ¢ÿ 0
+endstream endobj 1982 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+zzzzzzŽŽŽ±±±
+endstream endobj 1983 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞd 0
+endstream endobj 1984 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+^^^
+endstream endobj 1985 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+```
+endstream endobj 1986 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 24/Subtype/Image/Type/XObject/Width 8>>stream
+ŽŽŽ‘‘‘~~~uuuuuuxxxqqq¤¤¤
+endstream endobj 1987 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+•••ŽŽŽŽŽŽššš
+endstream endobj 1988 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŠŠŠŠŠŠzzz
+endstream endobj 1989 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+ŒŒŒ
+endstream endobj 1990 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŽŽŽŒŒŒžžž
+endstream endobj 1991 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+ŽŽŽŽŽŽŒŒŒžžž
+endstream endobj 1992 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŽŽŽŽŽŽ¡¡¡
+endstream endobj 1993 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+žžžuuu
+endstream endobj 1994 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ª¨¨c
+endstream endobj 1995 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+‘‘‘‘‘‘ŒŒŒ
+endstream endobj 1996 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+ŽŽŽ‘‘‘
+endstream endobj 1997 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+bbb
+endstream endobj 1998 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+ŽŽŽŽŽŽ†††uuuxxxuuu```
+endstream endobj 1999 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞbaaa PTT0
+endstream endobj 2000 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+•••TTT111111111QQQŠŠŠ
+endstream endobj 2001 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 44/Length 1502/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ŠIPSsö¶wúOÀ%û_?ý'à4’U7Ç\êCü/à=o¨žlü ’Tßs©,üúÁÕþg$•*1õ“«Ž.ÿ
+endstream endobj 2002 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêëëc ðôô0
+endstream endobj 2003 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 100>>stream
+hÞÒÕÕe `bbRUUåââbv€——755 À
+endstream endobj 2004 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 103>>stream
+hÞ*--eaaabbb  ®iƒ
+endstream endobj 2005 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 106>>stream
+hÞÚ¸q# •
+endstream endobj 2006 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 107>>stream
+hÞadŽÀÀ@€
+endstream endobj 2007 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 110>>stream
+hÞÚ¸q£””Ã( 0¦¦&@€
+endstream endobj 2008 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 111>>stream
+hÞš5k///Ã( 
+endstream endobj 2009 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 111>>stream
+hÞJMMeaaa777€
+endstream endobj 2010 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 112>>stream
+hÞ24&&&†Q@1àåå0
+endstream endobj 2011 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 114>>stream
+hÞ*,,äââb9
+(™™™
+endstream endobj 2012 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1111/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+® © „2MÆ¢4­]ž*ÃJŒ†@S4¢´ 7É¥FBðS4©‚„Òˆ
+i Ã0T”R5+§L.’I$¥$’I%I$’JRI$’Ÿ0m’¦×ª ºxVgu±n)‹h PZéE%¬ÒL¢¤•Ù;„bÐF¼*¨ÕY×qئ‘Ô/Œº.aiòNÇ™G€D_^ÝG  Úâ+P® Vc‹L…a®"—DÚÐZa«#CÂm‚¢AiMÝpѸҊÒ:ì
+Ë\™ ËZXGµ¼‚§ÂŒ¯¶ÇH”Qª§[áYcLd(((@ʘ*2¼%H6•0šWiÔBA+§L’
+]$’IJI$’J’I$”øµWvñW*±eUºÚwéⵃ—0;ºu¾QÚí*·Jµ\§0”à©!¶TÂ+WN™$ئÍÃiäpŠuЪ™yì­‰yî™!Ù–$Ö¨ͧN
+v?iòE|m3Â
+Fú7ZäV¹V¯tjŒÙQË›Ì"ÖøAl÷RlΉ…xn1Ú"‚«W¹²£, ¤L0¦ÔÒ¸$I@)ÕÌ‚p™8MRé$’JRI$’”’I$—ÿÙ
+endstream endobj 2013 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 115>>stream
+hÞZ¹r¥ªª*Ã( ““0
+endstream endobj 2014 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 116>>stream
+hÞòôôdccc```bbbT,,,3fÌ
+endstream endobj 2015 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 117>>stream
+hÞJJJâàà`bbbÔ666
+endstream endobj 2016 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 118>>stream
+hÞJMMda€………°±±¥˜˜˜¨h@€
+endstream endobj 2017 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 83>>stream
+hÞŠ‹‹d
+endstream endobj 2018 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 82>>stream
+hÞÚ¸qc`` 0000111 G
+endstream endobj 2019 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 79>>stream
+hÞjkkÓÔÔdaaa %`bb‚“ôlllººº
+endstream endobj 2020 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 46/Subtype/Image/Type/XObject/Width 79>>stream
+hÞš7ož››///m
+endstream endobj 2021 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 51/Subtype/Image/Type/XObject/Width 80>>stream
+hÞjll´³³ãàà`
+endstream endobj 2022 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 52/Subtype/Image/Type/XObject/Width 86>>stream
+hÞª««sppÐ .0`bbb =€Ûb .üøñc`` }¬†ø4.. À
+endstream endobj 2023 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1196/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+(Uªt« Na,’L$)‡þaù 'ƒ#²Zèš-Ä;ùÃæ¦×nhpîGtÌuâ …e¤!W{vŸ.Êu:ßHµ±4i8)|S1¨„ÆEët쬴ªcCõ;²l‚è–Ó\‹È•]¥ŽQÌ
+V9Yc¤*ƒB[ ¦H/‰m4©„”V•d R@)¸3Ná®0N‚”’I$¥$’I%ñë7‡ï™w‰Uò+k†ŸEüy£—X‘cDë¸T¢e‡‡qäVÏG  B²Zè<…{â©{!Ü‹Žä)±|Q·b‡J¶Ã¢ÏÇr½YÑ %N˜'Ij’I$ŸÜ°üB:§[¶¼u2CVXHìl·Ì!4«€áµÄ}ÉÊêØa
+˜A¥Ü„dÒ¾%NÓ´÷O!@x –Û ÁFiU©=‘ÚTr ±)Æ¡M… …LhTe6«vˆÍ*­nÕXiQÈ2D¦H6•0S
+ð'Q
+I«™“è)t’I%)$’I/—ØÍÍ}}þ“>#‘ó 2Æ­k?nߥ¸*vú[ßèjé0]¡þÈáláÑÉg³_¤ñ¨ð!U¤Á…ißAÓã§ÅUoó†8”Yq §Œå£QÐ,¼iZt̘æØjI5:KT’dé)JíGum?%L+XßÍ™âtLžÌ˜÷H‡stðEÑBÈØe0nÉ-‘0ÃV‚¦¶Ì å" ‹´wÅH&oÕå•n‚¦•MªÓ&l—Á3
+/iAo(£‚¢,¡#
+²Ã¢ªÅb¹„É2E;J˜(mSjŒ²L!…0šW2 Â`œ&©t’I%)2I$§ÿÙ
+endstream endobj 2024 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 46>>stream
+hÞ*--d8ÀÂÂbff¶páB€
+endstream endobj 2025 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 36>>stream
+hÞZ»v- “™™@€
+endstream endobj 2026 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 44>>stream
+hÞ244dbbb
+endstream endobj 2027 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÒÕÕe 1ìèè
+endstream endobj 2028 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 43>>stream
+hÞRUUe```bbb €Û%%%UXX`
+endstream endobj 2029 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 34>>stream
+hÞjkkcbbb *@6ȶ³³0
+endstream endobj 2030 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 42>>stream
+hÞÒÕÕebbb #
+endstream endobj 2031 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 33>>stream
+hÞ’’’b `ccËÍÍ0
+endstream endobj 2032 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 40>>stream
+hÞ
+ a #`€
+endstream endobj 2033 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 34>>stream
+hÞ*-0` 6`bb\²d @€
+endstream endobj 2034 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2334/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+A0® ‚QN)d’¯—‰…Q»*ÖÔÁÝÆ'à°îú×eìsúu¸íÑÙ™'Ó¨Träè㜶wY<°†ç^Ý^‘2ä«Íê9Í7\üq«²,ý_TÒ;ï
+?nÂÿ
+‹µs›ûÍ |Q¾ØÛ¬²¨-s
+L&P‹¹F¤ê…ùů¤‘ÙQÝ©õ9ø=û«vË] ­ÃçÇàf}kêÆ×ÝéÆý§‰Zß_2¢¼\0~‘6¸ykVGIé¿YÝöŽ–Û[E§é1Á»‹T
+íÒ¨_2>#ò«‘½;4Jü㿬*…ÚØÑàóŽþ±üª.þ|Ï”|å°N=Ës¼-ÆŠ–,h¯²!1RÝ I ’KT2p‚”‹Ž&æüP‘±¿žjbº;†áLœ¨¨›¿Î)SôÁFÏç
+H§tX>dáH(…0˜Y.寤û¢Õ’;(nòYz7[ê=U÷QŠçÐƵ•¸Á
+‘_CØßð–{¾õÒ>ßûßµzž§Ú§êÌÆÝy쵫û
+endstream endobj 2035 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 41>>stream
+hÞZ¸XXX˜˜˜è$À
+endstream endobj 2036 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 32>>stream
+hÞ
+endstream endobj 2037 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 41>>stream
+hÞRT&&&:^0
+endstream endobj 2038 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 32>>stream
+hÞªªªb
+endstream endobj 2039 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 43>>stream
+hÞb`
+endstream endobj 2040 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 31>>stream
+hÞ’’’b  ÐÕÕ0
+endstream endobj 2041 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 47>>stream
+hÞêèè`hÀÆÆfff¶páB€
+endstream endobj 2042 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêëëcbbb ÐÕÕ0
+endstream endobj 2043 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 49>>stream
+hÞš:u*Ãà
+endstream endobj 2044 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 30>>stream
+hÞÒÕÕe 6P€
+endstream endobj 2045 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1550/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ãB¯CtVZšV²I$éªRA $© ~Ÿ
+ÀR ¶A±¸\b$;‹èø¡Ù]2á³í=­gÑûÑz>N÷dôŒŸc¯6t‹Ùt]G¦ŒëÒ
+È Hª@$þÁH«“W®Ð­VÝ
+[
+µ;{+•Âqa ˜ŠØŠÕd ¤$ÕÊ„’N"uãºI ¼Jö´¼òî>
+ÂfíÚ6ñ'PÛ1
+Xû[æ¢ÐžÎG‚vDë Ꞗ@Ÿv…ÆŠØQÈ–X€É­N5)ÿ
+à¸R ‚p\ºtÁ:
+]$“ ¥$’I)ÿÙ
+endstream endobj 2046 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 78>>stream
+hÞb`,€‰‰ H***¦¦¦²±±Q×X111€
+endstream endobj 2047 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 78>>stream
+hÞ²°
+endstream endobj 2048 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 75>>stream
+hÞâååebbbŽ
+endstream endobj 2049 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 74>>stream
+hÞZ»v-///Ãp¾¾¾
+endstream endobj 2050 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 72>>stream
+hÞÚ¸q£ŒŒ Ã0LLLrrr
+endstream endobj 2051 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 70>>stream
+hÞÊÌÌäååe
+endstream endobj 2052 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 67>>stream
+hÞjll´±±áååe²€‰‰É×× À
+endstream endobj 2053 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 61>>stream
+hÞš8qb!¸¸¸¨ªªòòò2111À
+endstream endobj 2054 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 55>>stream
+hÞZ»vmii©®®.0 2PXX`
+endstream endobj 2055 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 50>>stream
+hÞš1c†§§'///à"""
+endstream endobj 2056 0 obj <</Count 86/First 2057 0 R/Last 2058 0 R>> endobj 2057 0 obj <</Dest[6 0 R/FitH 759]/Next 2090 0 R/Parent 2056 0 R/Title(Intellectual Property Rights)>> endobj 2058 0 obj <</Dest[1460 0 R/FitH 772]/Parent 2056 0 R/Prev 2059 0 R/Title(History)>> endobj 2059 0 obj <</Dest[1442 0 R/FitH 759]/Next 2058 0 R/Parent 2056 0 R/Prev 2060 0 R/Title(Annex D \(informative\): Change History)>> endobj 2060 0 obj <</Dest[1440 0 R/FitH 759]/Next 2059 0 R/Parent 2056 0 R/Prev 2061 0 R/Title(Annex C \(informative\): Processing of Transparent Containers at the SGSN)>> endobj 2061 0 obj <</Dest[1438 0 R/FitH 759]/Next 2060 0 R/Parent 2056 0 R/Prev 2062 0 R/Title(Annex B \(informative\): RANAP Transparent containers content)>> endobj 2062 0 obj <</Count -7/Dest[1418 0 R/FitH 759]/First 2063 0 R/Last 2064 0 R/Next 2061 0 R/Parent 2056 0 R/Prev 2065 0 R/Title(Annex A \(informative\): RANAP guidelines)>> endobj 2063 0 obj <</Count 1/Dest[1418 0 R/FitH 692]/First 2644 0 R/Last 2644 0 R/Next 2064 0 R/Parent 2062 0 R/Title(A.1 Rules for building RANAP messages)>> endobj 2064 0 obj <</Count 4/Dest[1418 0 R/FitH 468]/First 2635 0 R/Last 2636 0 R/Parent 2062 0 R/Prev 2063 0 R/Title(A.2 Guidelines for Usage of the Criticality Diagnostics IE)>> endobj 2065 0 obj <</Count 3/Dest[1406 0 R/FitH 432]/First 2066 0 R/Last 2067 0 R/Next 2062 0 R/Parent 2056 0 R/Prev 2068 0 R/Title(11 Special Procedures for RNC to RNC Communication)>> endobj 2066 0 obj <</Dest[1406 0 R/FitH 389]/Next 2632 0 R/Parent 2065 0 R/Title(11.1 General)>> endobj 2067 0 obj <</Count -2/Dest[1408 0 R/FitH 268]/First 2630 0 R/Last 2631 0 R/Parent 2065 0 R/Prev 2632 0 R/Title(11.3 RANAP Enhanced Relocation Information)>> endobj 2068 0 obj <</Count 5/Dest[1394 0 R/FitH 686]/First 2069 0 R/Last 2070 0 R/Next 2065 0 R/Parent 2056 0 R/Prev 2071 0 R/Title(10 Handling of Unknown, Unforeseen and Erroneous Protocol Data)>> endobj 2069 0 obj <</Dest[1394 0 R/FitH 623]/Next 2622 0 R/Parent 2068 0 R/Title(10.1 General)>> endobj 2070 0 obj <</Dest[1406 0 R/FitH 634]/Parent 2068 0 R/Prev 2618 0 R/Title(10.5 Exceptions)>> endobj 2071 0 obj <</Count 5/Dest[804 0 R/FitH 713]/First 2072 0 R/Last 2073 0 R/Next 2068 0 R/Parent 2056 0 R/Prev 2074 0 R/Title(9 Elements for RANAP Communication)>> endobj 2072 0 obj <</Count -86/Dest[804 0 R/FitH 671]/First 2528 0 R/Last 2529 0 R/Next 2322 0 R/Parent 2071 0 R/Title(9.1 Message Functional Definition and Content)>> endobj 2073 0 obj <</Dest[1392 0 R/FitH 694]/Parent 2071 0 R/Prev 2318 0 R/Title(9.5 Timers)>> endobj 2074 0 obj <</Count 47/Dest[641 0 R/FitH 695]/First 2075 0 R/Last 2076 0 R/Next 2071 0 R/Parent 2056 0 R/Prev 2077 0 R/Title(8 RANAP Procedures)>> endobj 2075 0 obj <</Dest[641 0 R/FitH 652]/Next 2225 0 R/Parent 2074 0 R/Title(8.1 Elementary Procedures)>> endobj 2076 0 obj <</Count -4/Dest[802 0 R/FitH 464]/First 2093 0 R/Last 2094 0 R/Parent 2074 0 R/Prev 2095 0 R/Title(8.47 UE Radio Capability Match)>> endobj 2077 0 obj <</Dest[637 0 R/FitH 264]/Next 2074 0 R/Parent 2056 0 R/Prev 2078 0 R/Title(7 Functions of RANAP)>> endobj 2078 0 obj <</Dest[637 0 R/FitH 429]/Next 2077 0 R/Parent 2056 0 R/Prev 2079 0 R/Title(6 Services Expected from Signalling Transport)>> endobj 2079 0 obj <</Dest[637 0 R/FitH 716]/Next 2078 0 R/Parent 2056 0 R/Prev 2080 0 R/Title(5 RANAP Services)>> endobj 2080 0 obj <</Count 3/Dest[635 0 R/FitH 681]/First 2081 0 R/Last 2082 0 R/Next 2079 0 R/Parent 2056 0 R/Prev 2083 0 R/Title(4 General)>> endobj 2081 0 obj <</Dest[635 0 R/FitH 638]/Next 2092 0 R/Parent 2080 0 R/Title(4.1 Procedure Specification Principles)>> endobj 2082 0 obj <</Dest[635 0 R/FitH 231]/Parent 2080 0 R/Prev 2092 0 R/Title(4.3 Specification Notations)>> endobj 2083 0 obj <</Count 3/Dest[625 0 R/FitH 191]/First 2084 0 R/Last 2085 0 R/Next 2080 0 R/Parent 2056 0 R/Prev 2086 0 R/Title(3 Definitions, symbols and abbreviations)>> endobj 2084 0 obj <</Dest[625 0 R/FitH 147]/Next 2091 0 R/Parent 2083 0 R/Title(3.1 Definitions)>> endobj 2085 0 obj <</Dest[631 0 R/FitH 455]/Parent 2083 0 R/Prev 2091 0 R/Title(3.3 Abbreviations)>> endobj 2086 0 obj <</Dest[621 0 R/FitH 658]/Next 2083 0 R/Parent 2056 0 R/Prev 2087 0 R/Title(2 References)>> endobj 2087 0 obj <</Dest[621 0 R/FitH 759]/Next 2086 0 R/Parent 2056 0 R/Prev 2088 0 R/Title(1 Scope)>> endobj 2088 0 obj <</Dest[619 0 R/FitH 759]/Next 2087 0 R/Parent 2056 0 R/Prev 2089 0 R/Title(Foreword)>> endobj 2089 0 obj <</Dest[6 0 R/FitH 472]/Next 2088 0 R/Parent 2056 0 R/Prev 2090 0 R/Title(Modal verbs terminology)>> endobj 2090 0 obj <</Dest[6 0 R/FitH 603]/Next 2089 0 R/Parent 2056 0 R/Prev 2057 0 R/Title(Foreword)>> endobj 2091 0 obj <</Dest[631 0 R/FitH 511]/Next 2085 0 R/Parent 2083 0 R/Prev 2084 0 R/Title(3.2 Symbols)>> endobj 2092 0 obj <</Dest[635 0 R/FitH 311]/Next 2082 0 R/Parent 2080 0 R/Prev 2081 0 R/Title(4.2 Forwards and Backwards Compatibility)>> endobj 2093 0 obj <</Dest[802 0 R/FitH 431]/Next 2317 0 R/Parent 2076 0 R/Title(8.47.1 General)>> endobj 2094 0 obj <</Dest[804 0 R/FitH 772]/Parent 2076 0 R/Prev 2316 0 R/Title(8.47.4 Abnormal Conditions)>> endobj 2095 0 obj <</Count -3/Dest[800 0 R/FitH 152]/First 2096 0 R/Last 2097 0 R/Next 2076 0 R/Parent 2074 0 R/Prev 2098 0 R/Title(8.46 SRVCC Preparation)>> endobj 2096 0 obj <</Dest[800 0 R/FitH 119]/Next 2315 0 R/Parent 2095 0 R/Title(8.46.1 General)>> endobj 2097 0 obj <</Dest[802 0 R/FitH 519]/Parent 2095 0 R/Prev 2315 0 R/Title(8.46.3 Abnormal Conditions)>> endobj 2098 0 obj <</Count -2/Dest[800 0 R/FitH 495]/First 2099 0 R/Last 2100 0 R/Next 2095 0 R/Parent 2074 0 R/Prev 2101 0 R/Title(8.45 Enhanced Relocation Complete Confirm)>> endobj 2099 0 obj <</Dest[800 0 R/FitH 462]/Next 2100 0 R/Parent 2098 0 R/Title(8.45.1 General)>> endobj 2100 0 obj <</Dest[800 0 R/FitH 399]/Parent 2098 0 R/Prev 2099 0 R/Title(8.45.2 Successful Operation)>> endobj 2101 0 obj <</Count -3/Dest[796 0 R/FitH 771]/First 2102 0 R/Last 2103 0 R/Next 2098 0 R/Parent 2074 0 R/Prev 2104 0 R/Title(8.44 Enhanced Relocation Complete)>> endobj 2102 0 obj <</Dest[796 0 R/FitH 738]/Next 2314 0 R/Parent 2101 0 R/Title(8.44.1 General)>> endobj 2103 0 obj <</Dest[800 0 R/FitH 772]/Parent 2101 0 R/Prev 2314 0 R/Title(8.44.3 Unsuccessful Operation)>> endobj 2104 0 obj <</Count -4/Dest[792 0 R/FitH 347]/First 2105 0 R/Last 2106 0 R/Next 2101 0 R/Parent 2074 0 R/Prev 2107 0 R/Title(8.43 MBMS RAB Release)>> endobj 2105 0 obj <</Dest[792 0 R/FitH 314]/Next 2313 0 R/Parent 2104 0 R/Title(8.43.1 General)>> endobj 2106 0 obj <</Dest[794 0 R/FitH 141]/Parent 2104 0 R/Prev 2312 0 R/Title(8.43.4 Abnormal Conditions)>> endobj 2107 0 obj <</Count -3/Dest[792 0 R/FitH 771]/First 2108 0 R/Last 2109 0 R/Next 2104 0 R/Parent 2074 0 R/Prev 2110 0 R/Title(8.42 MBMS RAB Establishment Indication)>> endobj 2108 0 obj <</Dest[792 0 R/FitH 738]/Next 2311 0 R/Parent 2107 0 R/Title(8.42.1 General)>> endobj 2109 0 obj <</Dest[792 0 R/FitH 401]/Parent 2107 0 R/Prev 2311 0 R/Title(8.42.3 Abnormal Conditions)>> endobj 2110 0 obj <</Count -4/Dest[788 0 R/FitH 254]/First 2111 0 R/Last 2112 0 R/Next 2107 0 R/Parent 2074 0 R/Prev 2113 0 R/Title(8.41 MBMS CN De-Registration)>> endobj 2111 0 obj <</Dest[788 0 R/FitH 220]/Next 2310 0 R/Parent 2110 0 R/Title(8.41.1 General)>> endobj 2112 0 obj <</Dest[790 0 R/FitH 202]/Parent 2110 0 R/Prev 2309 0 R/Title(8.41.4 Abnormal Conditions)>> endobj 2113 0 obj <</Count -4/Dest[786 0 R/FitH 771]/First 2114 0 R/Last 2115 0 R/Next 2110 0 R/Parent 2074 0 R/Prev 2116 0 R/Title(8.40 MBMS Registration)>> endobj 2114 0 obj <</Dest[786 0 R/FitH 738]/Next 2308 0 R/Parent 2113 0 R/Title(8.40.1 General)>> endobj 2115 0 obj <</Dest[788 0 R/FitH 309]/Parent 2113 0 R/Prev 2307 0 R/Title(8.40.4 Abnormal Conditions)>> endobj 2116 0 obj <</Count -4/Dest[782 0 R/FitH 283]/First 2117 0 R/Last 2118 0 R/Next 2113 0 R/Parent 2074 0 R/Prev 2119 0 R/Title(8.39 MBMS UE Linking)>> endobj 2117 0 obj <</Dest[782 0 R/FitH 250]/Next 2306 0 R/Parent 2116 0 R/Title(8.39.1 General)>> endobj 2118 0 obj <</Dest[784 0 R/FitH 213]/Parent 2116 0 R/Prev 2305 0 R/Title(8.39.4 Abnormal Conditions)>> endobj 2119 0 obj <</Count -3/Dest[780 0 R/FitH 411]/First 2120 0 R/Last 2121 0 R/Next 2116 0 R/Parent 2074 0 R/Prev 2122 0 R/Title(8.38 MBMS Session Stop)>> endobj 2120 0 obj <</Dest[780 0 R/FitH 378]/Next 2304 0 R/Parent 2119 0 R/Title(8.38.1 General)>> endobj 2121 0 obj <</Dest[782 0 R/FitH 338]/Parent 2119 0 R/Prev 2304 0 R/Title(8.38.3 Abnormal Conditions)>> endobj 2122 0 obj <</Count -4/Dest[778 0 R/FitH 771]/First 2123 0 R/Last 2124 0 R/Next 2119 0 R/Parent 2074 0 R/Prev 2125 0 R/Title(8.37 MBMS Session Update)>> endobj 2123 0 obj <</Dest[778 0 R/FitH 738]/Next 2303 0 R/Parent 2122 0 R/Title(8.37.1 General)>> endobj 2124 0 obj <</Dest[780 0 R/FitH 466]/Parent 2122 0 R/Prev 2302 0 R/Title(8.37.4 Abnormal Conditions)>> endobj 2125 0 obj <</Count -4/Dest[768 0 R/FitH 284]/First 2126 0 R/Last 2127 0 R/Next 2122 0 R/Parent 2074 0 R/Prev 2128 0 R/Title(8.36 MBMS Session Start)>> endobj 2126 0 obj <</Dest[768 0 R/FitH 250]/Next 2301 0 R/Parent 2125 0 R/Title(8.36.1 General)>> endobj 2127 0 obj <</Dest[776 0 R/FitH 278]/Parent 2125 0 R/Prev 2300 0 R/Title(8.36.4 Abnormal Conditions)>> endobj 2128 0 obj <</Count -4/Dest[764 0 R/FitH 271]/First 2129 0 R/Last 2130 0 R/Next 2125 0 R/Parent 2074 0 R/Prev 2131 0 R/Title(8.35 Uplink Information Exchange)>> endobj 2129 0 obj <</Dest[764 0 R/FitH 237]/Next 2299 0 R/Parent 2128 0 R/Title(8.35.1 General)>> endobj 2130 0 obj <</Dest[768 0 R/FitH 338]/Parent 2128 0 R/Prev 2298 0 R/Title(8.35.4 Abnormal Conditions)>> endobj 2131 0 obj <</Count -3/Dest[762 0 R/FitH 771]/First 2132 0 R/Last 2133 0 R/Next 2128 0 R/Parent 2074 0 R/Prev 2134 0 R/Title(8.34 Direct Information Transfer)>> endobj 2132 0 obj <</Dest[762 0 R/FitH 738]/Next 2294 0 R/Parent 2131 0 R/Title(8.34.1 General)>> endobj 2133 0 obj <</Dest[764 0 R/FitH 326]/Parent 2131 0 R/Prev 2294 0 R/Title(8.34.3 Abnormal Conditions)>> endobj 2134 0 obj <</Count -2/Dest[760 0 R/FitH 400]/First 2135 0 R/Last 2136 0 R/Next 2131 0 R/Parent 2074 0 R/Prev 2137 0 R/Title(8.33 UE Specific Information)>> endobj 2135 0 obj <</Dest[760 0 R/FitH 367]/Next 2136 0 R/Parent 2134 0 R/Title(8.33.1 General)>> endobj 2136 0 obj <</Dest[760 0 R/FitH 283]/Parent 2134 0 R/Prev 2135 0 R/Title(8.33.2 Successful Operation)>> endobj 2137 0 obj <</Count -4/Dest[758 0 R/FitH 771]/First 2138 0 R/Last 2139 0 R/Next 2134 0 R/Parent 2074 0 R/Prev 2140 0 R/Title(8.32 Information Transfer)>> endobj 2138 0 obj <</Dest[758 0 R/FitH 738]/Next 2293 0 R/Parent 2137 0 R/Title(8.32.1 General)>> endobj 2139 0 obj <</Dest[760 0 R/FitH 455]/Parent 2137 0 R/Prev 2292 0 R/Title(8.32.4 Abnormal Conditions)>> endobj 2140 0 obj <</Count -4/Dest[754 0 R/FitH 571]/First 2141 0 R/Last 2142 0 R/Next 2137 0 R/Parent 2074 0 R/Prev 2143 0 R/Title(8.31 Location Related Data)>> endobj 2141 0 obj <</Dest[754 0 R/FitH 538]/Next 2290 0 R/Parent 2140 0 R/Title(8.31.1 General)>> endobj 2142 0 obj <</Count -1/Dest[756 0 R/FitH 237]/First 2288 0 R/Last 2288 0 R/Parent 2140 0 R/Prev 2289 0 R/Title(8.31.4 Abnormal Conditions)>> endobj 2143 0 obj <</Count -3/Dest[752 0 R/FitH 531]/First 2144 0 R/Last 2145 0 R/Next 2140 0 R/Parent 2074 0 R/Prev 2146 0 R/Title(8.30 RAB Modification Request)>> endobj 2144 0 obj <</Dest[752 0 R/FitH 497]/Next 2287 0 R/Parent 2143 0 R/Title(8.30.1 General)>> endobj 2145 0 obj <</Dest[754 0 R/FitH 626]/Parent 2143 0 R/Prev 2287 0 R/Title(8.30.3 Abnormal Conditions)>> endobj 2146 0 obj <</Count -2/Dest[748 0 R/FitH 177]/First 2147 0 R/Last 2148 0 R/Next 2143 0 R/Parent 2074 0 R/Prev 2149 0 R/Title(8.29 Reset Resource)>> endobj 2147 0 obj <</Count -2/Dest[748 0 R/FitH 143]/First 2285 0 R/Last 2286 0 R/Next 2148 0 R/Parent 2146 0 R/Title(8.29.1 General)>> endobj 2148 0 obj <</Count -2/Dest[750 0 R/FitH 673]/First 2283 0 R/Last 2284 0 R/Parent 2146 0 R/Prev 2147 0 R/Title(8.29.2 Successful Operation)>> endobj 2149 0 obj <</Count -3/Dest[748 0 R/FitH 638]/First 2150 0 R/Last 2151 0 R/Next 2146 0 R/Parent 2074 0 R/Prev 2152 0 R/Title(8.28 CN Deactivate Trace)>> endobj 2150 0 obj <</Dest[748 0 R/FitH 604]/Next 2281 0 R/Parent 2149 0 R/Title(8.28.1 General)>> endobj 2151 0 obj <</Dest[748 0 R/FitH 232]/Parent 2149 0 R/Prev 2281 0 R/Title(8.28.3 Abnormal Conditions)>> endobj 2152 0 obj <</Count -3/Dest[746 0 R/FitH 612]/First 2153 0 R/Last 2154 0 R/Next 2149 0 R/Parent 2074 0 R/Prev 2155 0 R/Title(8.27 Error Indication)>> endobj 2153 0 obj <</Dest[746 0 R/FitH 579]/Next 2280 0 R/Parent 2152 0 R/Title(8.27.1 General)>> endobj 2154 0 obj <</Dest[748 0 R/FitH 692]/Parent 2152 0 R/Prev 2280 0 R/Title(8.27.3 Abnormal Conditions)>> endobj 2155 0 obj <</Count -3/Dest[742 0 R/FitH 421]/First 2156 0 R/Last 2157 0 R/Next 2152 0 R/Parent 2074 0 R/Prev 2158 0 R/Title(8.26 Reset)>> endobj 2156 0 obj <</Dest[742 0 R/FitH 388]/Next 2276 0 R/Parent 2155 0 R/Title(8.26.1 General)>> endobj 2157 0 obj <</Count -3/Dest[744 0 R/FitH 159]/First 2274 0 R/Last 2275 0 R/Parent 2155 0 R/Prev 2276 0 R/Title(8.26.3 Abnormal Conditions)>> endobj 2158 0 obj <</Count -4/Dest[738 0 R/FitH 175]/First 2159 0 R/Last 2160 0 R/Next 2155 0 R/Parent 2074 0 R/Prev 2161 0 R/Title(8.25 Overload Control)>> endobj 2159 0 obj <</Dest[738 0 R/FitH 142]/Next 2273 0 R/Parent 2158 0 R/Title(8.25.1 General)>> endobj 2160 0 obj <</Dest[742 0 R/FitH 475]/Parent 2158 0 R/Prev 2270 0 R/Title(8.25.4 Abnormal Conditions)>> endobj 2161 0 obj <</Dest[738 0 R/FitH 212]/Next 2158 0 R/Parent 2074 0 R/Prev 2162 0 R/Title(8.24 Void)>> endobj 2162 0 obj <</Count -3/Dest[734 0 R/FitH 295]/First 2163 0 R/Last 2164 0 R/Next 2161 0 R/Parent 2074 0 R/Prev 2165 0 R/Title(8.23 Direct Transfer)>> endobj 2163 0 obj <</Dest[734 0 R/FitH 261]/Next 2267 0 R/Parent 2162 0 R/Title(8.23.1 General)>> endobj 2164 0 obj <</Dest[738 0 R/FitH 418]/Parent 2162 0 R/Prev 2267 0 R/Title(8.23.3 Abnormal Conditions)>> endobj 2165 0 obj <</Count -2/Dest[732 0 R/FitH 771]/First 2166 0 R/Last 2167 0 R/Next 2162 0 R/Parent 2074 0 R/Prev 2168 0 R/Title(8.22 Initial UE Message)>> endobj 2166 0 obj <</Dest[732 0 R/FitH 738]/Next 2167 0 R/Parent 2165 0 R/Title(8.22.1 General)>> endobj 2167 0 obj <</Count -1/Dest[732 0 R/FitH 652]/First 2266 0 R/Last 2266 0 R/Parent 2165 0 R/Prev 2166 0 R/Title(8.22.2 Successful Operation)>> endobj 2168 0 obj <</Count -4/Dest[730 0 R/FitH 716]/First 2169 0 R/Last 2170 0 R/Next 2165 0 R/Parent 2074 0 R/Prev 2171 0 R/Title(8.21 Data Volume Report)>> endobj 2169 0 obj <</Dest[730 0 R/FitH 683]/Next 2265 0 R/Parent 2168 0 R/Title(8.21.1 General)>> endobj 2170 0 obj <</Dest[730 0 R/FitH 119]/Parent 2168 0 R/Prev 2264 0 R/Title(8.21.4 Abnormal Conditions)>> endobj 2171 0 obj <</Count -3/Dest[726 0 R/FitH 603]/First 2172 0 R/Last 2173 0 R/Next 2168 0 R/Parent 2074 0 R/Prev 2174 0 R/Title(8.20 Location Report)>> endobj 2172 0 obj <</Dest[726 0 R/FitH 570]/Next 2263 0 R/Parent 2171 0 R/Title(8.20.1 General)>> endobj 2173 0 obj <</Dest[730 0 R/FitH 772]/Parent 2171 0 R/Prev 2263 0 R/Title(8.20.3 Abnormal Conditions)>> endobj 2174 0 obj <</Count -3/Dest[722 0 R/FitH 239]/First 2175 0 R/Last 2176 0 R/Next 2171 0 R/Parent 2074 0 R/Prev 2177 0 R/Title(8.19 Location Reporting Control)>> endobj 2175 0 obj <</Dest[722 0 R/FitH 205]/Next 2262 0 R/Parent 2174 0 R/Title(8.19.1 General)>> endobj 2176 0 obj <</Dest[726 0 R/FitH 658]/Parent 2174 0 R/Prev 2262 0 R/Title(8.19.3 Abnormal Conditions)>> endobj 2177 0 obj <</Count -4/Dest[718 0 R/FitH 400]/First 2178 0 R/Last 2179 0 R/Next 2174 0 R/Parent 2074 0 R/Prev 2180 0 R/Title(8.18 Security Mode Control)>> endobj 2178 0 obj <</Dest[718 0 R/FitH 366]/Next 2261 0 R/Parent 2177 0 R/Title(8.18.1 General)>> endobj 2179 0 obj <</Dest[722 0 R/FitH 460]/Parent 2177 0 R/Prev 2260 0 R/Title(8.18.4 Abnormal Conditions)>> endobj 2180 0 obj <</Count -3/Dest[714 0 R/FitH 304]/First 2181 0 R/Last 2182 0 R/Next 2177 0 R/Parent 2074 0 R/Prev 2183 0 R/Title(8.17 CN Invoke Trace)>> endobj 2181 0 obj <</Dest[714 0 R/FitH 270]/Next 2258 0 R/Parent 2180 0 R/Title(8.17.1 General)>> endobj 2182 0 obj <</Count -1/Dest[718 0 R/FitH 515]/First 2257 0 R/Last 2257 0 R/Parent 2180 0 R/Prev 2258 0 R/Title(8.17.3 Abnormal Conditions)>> endobj 2183 0 obj <</Count -3/Dest[712 0 R/FitH 463]/First 2184 0 R/Last 2185 0 R/Next 2180 0 R/Parent 2074 0 R/Prev 2186 0 R/Title(8.16 Common ID)>> endobj 2184 0 obj <</Dest[712 0 R/FitH 430]/Next 2256 0 R/Parent 2183 0 R/Title(8.16.1 General)>> endobj 2185 0 obj <</Dest[714 0 R/FitH 358]/Parent 2183 0 R/Prev 2256 0 R/Title(8.16.3 Abnormal Conditions)>> endobj 2186 0 obj <</Count -3/Dest[710 0 R/FitH 716]/First 2187 0 R/Last 2188 0 R/Next 2183 0 R/Parent 2074 0 R/Prev 2189 0 R/Title(8.15 Paging)>> endobj 2187 0 obj <</Dest[710 0 R/FitH 683]/Next 2255 0 R/Parent 2186 0 R/Title(8.15.1 General)>> endobj 2188 0 obj <</Dest[712 0 R/FitH 518]/Parent 2186 0 R/Prev 2255 0 R/Title(8.15.3 Abnormal Conditions)>> endobj 2189 0 obj <</Count -3/Dest[708 0 R/FitH 592]/First 2190 0 R/Last 2191 0 R/Next 2186 0 R/Parent 2074 0 R/Prev 2192 0 R/Title(8.14 SRNS Context Forwarding to Target RNC from CN)>> endobj 2190 0 obj <</Dest[708 0 R/FitH 558]/Next 2254 0 R/Parent 2189 0 R/Title(8.14.1 General)>> endobj 2191 0 obj <</Dest[710 0 R/FitH 772]/Parent 2189 0 R/Prev 2254 0 R/Title(8.14.3 Abnormal Conditions)>> endobj 2192 0 obj <</Count -3/Dest[706 0 R/FitH 480]/First 2193 0 R/Last 2194 0 R/Next 2189 0 R/Parent 2074 0 R/Prev 2195 0 R/Title(8.13 SRNS Context Forwarding from Source RNC to CN)>> endobj 2193 0 obj <</Dest[706 0 R/FitH 447]/Next 2253 0 R/Parent 2192 0 R/Title(8.13.1 General)>> endobj 2194 0 obj <</Dest[708 0 R/FitH 646]/Parent 2192 0 R/Prev 2253 0 R/Title(8.13.3 Abnormal Conditions)>> endobj 2195 0 obj <</Count -3/Dest[704 0 R/FitH 201]/First 2196 0 R/Last 2197 0 R/Next 2192 0 R/Parent 2074 0 R/Prev 2198 0 R/Title(8.12 SRNS Data Forwarding Initiation)>> endobj 2196 0 obj <</Dest[704 0 R/FitH 168]/Next 2252 0 R/Parent 2195 0 R/Title(8.12.1 General)>> endobj 2197 0 obj <</Dest[706 0 R/FitH 534]/Parent 2195 0 R/Prev 2252 0 R/Title(8.12.3 Abnormal Conditions)>> endobj 2198 0 obj <</Count -4/Dest[702 0 R/FitH 170]/First 2199 0 R/Last 2200 0 R/Next 2195 0 R/Parent 2074 0 R/Prev 2201 0 R/Title(8.11 SRNS Context Transfer)>> endobj 2199 0 obj <</Dest[702 0 R/FitH 137]/Next 2251 0 R/Parent 2198 0 R/Title(8.11.1 General)>> endobj 2200 0 obj <</Dest[704 0 R/FitH 256]/Parent 2198 0 R/Prev 2250 0 R/Title(8.11.4 Abnormal Conditions)>> endobj 2201 0 obj <</Count -5/Dest[700 0 R/FitH 258]/First 2202 0 R/Last 2203 0 R/Next 2198 0 R/Parent 2074 0 R/Prev 2204 0 R/Title(8.10 Relocation Cancel)>> endobj 2202 0 obj <</Dest[700 0 R/FitH 224]/Next 2249 0 R/Parent 2201 0 R/Title(8.10.1 General)>> endobj 2203 0 obj <</Dest[702 0 R/FitH 248]/Parent 2201 0 R/Prev 2247 0 R/Title(8.10.5 Co-ordination of Two Iu Signalling Connections)>> endobj 2204 0 obj <</Count -4/Dest[698 0 R/FitH 279]/First 2205 0 R/Last 2206 0 R/Next 2201 0 R/Parent 2074 0 R/Prev 2207 0 R/Title(8.9 Relocation Complete)>> endobj 2205 0 obj <</Dest[698 0 R/FitH 246]/Next 2246 0 R/Parent 2204 0 R/Title(8.9.1 General)>> endobj 2206 0 obj <</Dest[700 0 R/FitH 335]/Parent 2204 0 R/Prev 2245 0 R/Title(8.9.4 Co-ordination of Two Iu Signalling Connections)>> endobj 2207 0 obj <</Count -4/Dest[696 0 R/FitH 186]/First 2208 0 R/Last 2209 0 R/Next 2204 0 R/Parent 2074 0 R/Prev 2210 0 R/Title(8.8 Relocation Detect)>> endobj 2208 0 obj <</Dest[696 0 R/FitH 153]/Next 2244 0 R/Parent 2207 0 R/Title(8.8.1 General)>> endobj 2209 0 obj <</Dest[698 0 R/FitH 345]/Parent 2207 0 R/Prev 2243 0 R/Title(8.8.4 Co-ordination of Two Iu Signalling Connections)>> endobj 2210 0 obj <</Count -5/Dest[680 0 R/FitH 355]/First 2211 0 R/Last 2212 0 R/Next 2207 0 R/Parent 2074 0 R/Prev 2213 0 R/Title(8.7 Relocation Resource Allocation)>> endobj 2211 0 obj <</Dest[680 0 R/FitH 322]/Next 2241 0 R/Parent 2210 0 R/Title(8.7.1 General)>> endobj 2212 0 obj <</Dest[696 0 R/FitH 655]/Parent 2210 0 R/Prev 2238 0 R/Title(8.7.5 Co-ordination of Two Iu Signalling Connections)>> endobj 2213 0 obj <</Count -5/Dest[668 0 R/FitH 429]/First 2214 0 R/Last 2215 0 R/Next 2210 0 R/Parent 2074 0 R/Prev 2216 0 R/Title(8.6 Relocation Preparation)>> endobj 2214 0 obj <</Dest[668 0 R/FitH 396]/Next 2236 0 R/Parent 2213 0 R/Title(8.6.1 General)>> endobj 2215 0 obj <</Dest[680 0 R/FitH 621]/Parent 2213 0 R/Prev 2234 0 R/Title(8.6.5 Co-ordination of Two Iu Signalling Connections)>> endobj 2216 0 obj <</Count -3/Dest[666 0 R/FitH 771]/First 2217 0 R/Last 2218 0 R/Next 2213 0 R/Parent 2074 0 R/Prev 2219 0 R/Title(8.5 Iu Release)>> endobj 2217 0 obj <</Dest[666 0 R/FitH 738]/Next 2233 0 R/Parent 2216 0 R/Title(8.5.1 General)>> endobj 2218 0 obj <</Dest[668 0 R/FitH 507]/Parent 2216 0 R/Prev 2233 0 R/Title(8.5.3 Abnormal Conditions)>> endobj 2219 0 obj <</Count -3/Dest[664 0 R/FitH 562]/First 2220 0 R/Last 2221 0 R/Next 2216 0 R/Parent 2074 0 R/Prev 2222 0 R/Title(8.4 Iu Release Request)>> endobj 2220 0 obj <</Dest[664 0 R/FitH 529]/Next 2232 0 R/Parent 2219 0 R/Title(8.4.1 General)>> endobj 2221 0 obj <</Dest[664 0 R/FitH 141]/Parent 2219 0 R/Prev 2232 0 R/Title(8.4.3 Abnormal Conditions)>> endobj 2222 0 obj <</Count -3/Dest[662 0 R/FitH 376]/First 2223 0 R/Last 2224 0 R/Next 2219 0 R/Parent 2074 0 R/Prev 2225 0 R/Title(8.3 RAB Release Request)>> endobj 2223 0 obj <</Dest[662 0 R/FitH 342]/Next 2231 0 R/Parent 2222 0 R/Title(8.3.1 General)>> endobj 2224 0 obj <</Dest[664 0 R/FitH 617]/Parent 2222 0 R/Prev 2231 0 R/Title(8.3.3 Abnormal Conditions)>> endobj 2225 0 obj <</Count -4/Dest[643 0 R/FitH 284]/First 2226 0 R/Last 2227 0 R/Next 2222 0 R/Parent 2074 0 R/Prev 2075 0 R/Title(8.2 RAB Assignment)>> endobj 2226 0 obj <</Dest[643 0 R/FitH 250]/Next 2229 0 R/Parent 2225 0 R/Title(8.2.1 General)>> endobj 2227 0 obj <</Dest[660 0 R/FitH 499]/Parent 2225 0 R/Prev 2228 0 R/Title(8.2.4 Abnormal Conditions)>> endobj 2228 0 obj <</Dest[660 0 R/FitH 551]/Next 2227 0 R/Parent 2225 0 R/Prev 2229 0 R/Title(8.2.3 Unsuccessful Operation)>> endobj 2229 0 obj <</Count -1/Dest[645 0 R/FitH 772]/First 2230 0 R/Last 2230 0 R/Next 2228 0 R/Parent 2225 0 R/Prev 2226 0 R/Title(8.2.2 Successful Operation)>> endobj 2230 0 obj <</Dest[660 0 R/FitH 722]/Parent 2229 0 R/Title(8.2.2.1 Successful Operation for GERAN Iu-mode)>> endobj 2231 0 obj <</Dest[662 0 R/FitH 279]/Next 2224 0 R/Parent 2222 0 R/Prev 2223 0 R/Title(8.3.2 Successful Operation)>> endobj 2232 0 obj <</Dest[664 0 R/FitH 431]/Next 2221 0 R/Parent 2219 0 R/Prev 2220 0 R/Title(8.4.2 Successful Operation)>> endobj 2233 0 obj <</Dest[666 0 R/FitH 531]/Next 2218 0 R/Parent 2216 0 R/Prev 2217 0 R/Title(8.5.2 Successful Operation)>> endobj 2234 0 obj <</Dest[678 0 R/FitH 194]/Next 2215 0 R/Parent 2213 0 R/Prev 2235 0 R/Title(8.6.4 Abnormal Conditions)>> endobj 2235 0 obj <</Dest[678 0 R/FitH 772]/Next 2234 0 R/Parent 2213 0 R/Prev 2236 0 R/Title(8.6.3 Unsuccessful Operation)>> endobj 2236 0 obj <</Count -1/Dest[668 0 R/FitH 278]/First 2237 0 R/Last 2237 0 R/Next 2235 0 R/Parent 2213 0 R/Prev 2214 0 R/Title(8.6.2 Successful Operation)>> endobj 2237 0 obj <</Dest[676 0 R/FitH 346]/Parent 2236 0 R/Title(8.6.2.1 Successful Operation for GERAN Iu-mode)>> endobj 2238 0 obj <</Dest[694 0 R/FitH 228]/Next 2212 0 R/Parent 2210 0 R/Prev 2239 0 R/Title(8.7.4 Abnormal Conditions)>> endobj 2239 0 obj <</Count -1/Dest[692 0 R/FitH 359]/First 2240 0 R/Last 2240 0 R/Next 2238 0 R/Parent 2210 0 R/Prev 2241 0 R/Title(8.7.3 Unsuccessful Operation)>> endobj 2240 0 obj <</Dest[694 0 R/FitH 344]/Parent 2239 0 R/Title(8.7.3.1 Unsuccessful Operation for GERAN Iu-mode)>> endobj 2241 0 obj <</Count -1/Dest[682 0 R/FitH 772]/First 2242 0 R/Last 2242 0 R/Next 2239 0 R/Parent 2210 0 R/Prev 2211 0 R/Title(8.7.2 Successful Operation)>> endobj 2242 0 obj <</Dest[692 0 R/FitH 495]/Parent 2241 0 R/Title(8.7.2.1 Successful Operation for GERAN Iu-mode)>> endobj 2243 0 obj <</Dest[698 0 R/FitH 429]/Next 2209 0 R/Parent 2207 0 R/Prev 2244 0 R/Title(8.8.3 Abnormal Conditions)>> endobj 2244 0 obj <</Dest[698 0 R/FitH 772]/Next 2243 0 R/Parent 2207 0 R/Prev 2208 0 R/Title(8.8.2 Successful Operation)>> endobj 2245 0 obj <</Dest[700 0 R/FitH 472]/Next 2206 0 R/Parent 2204 0 R/Prev 2246 0 R/Title(8.9.3 Abnormal Conditions)>> endobj 2246 0 obj <</Dest[700 0 R/FitH 772]/Next 2245 0 R/Parent 2204 0 R/Prev 2205 0 R/Title(8.9.2 Successful Operation)>> endobj 2247 0 obj <</Dest[702 0 R/FitH 299]/Next 2203 0 R/Parent 2201 0 R/Prev 2248 0 R/Title(8.10.4 Abnormal Conditions)>> endobj 2248 0 obj <</Dest[702 0 R/FitH 351]/Next 2247 0 R/Parent 2201 0 R/Prev 2249 0 R/Title(8.10.3 Unsuccessful Operation)>> endobj 2249 0 obj <</Dest[702 0 R/FitH 772]/Next 2248 0 R/Parent 2201 0 R/Prev 2202 0 R/Title(8.10.2 Successful Operation)>> endobj 2250 0 obj <</Dest[704 0 R/FitH 331]/Next 2200 0 R/Parent 2198 0 R/Prev 2251 0 R/Title(8.11.3 Unsuccessful Operation)>> endobj 2251 0 obj <</Dest[704 0 R/FitH 772]/Next 2250 0 R/Parent 2198 0 R/Prev 2199 0 R/Title(8.11.2 Successful Operation)>> endobj 2252 0 obj <</Dest[706 0 R/FitH 772]/Next 2197 0 R/Parent 2195 0 R/Prev 2196 0 R/Title(8.12.2 Successful Operation)>> endobj 2253 0 obj <</Dest[706 0 R/FitH 337]/Next 2194 0 R/Parent 2192 0 R/Prev 2193 0 R/Title(8.13.2 Successful Operation)>> endobj 2254 0 obj <</Dest[708 0 R/FitH 449]/Next 2191 0 R/Parent 2189 0 R/Prev 2190 0 R/Title(8.14.2 Successful Operation)>> endobj 2255 0 obj <</Dest[710 0 R/FitH 620]/Next 2188 0 R/Parent 2186 0 R/Prev 2187 0 R/Title(8.15.2 Successful Operation)>> endobj 2256 0 obj <</Dest[712 0 R/FitH 312]/Next 2185 0 R/Parent 2183 0 R/Prev 2184 0 R/Title(8.16.2 Successful Operation)>> endobj 2257 0 obj <</Dest[718 0 R/FitH 452]/Parent 2182 0 R/Title(8.17.3.1 Abnormal Conditions for GERAN Iu mode)>> endobj 2258 0 obj <</Count -1/Dest[716 0 R/FitH 772]/First 2259 0 R/Last 2259 0 R/Next 2182 0 R/Parent 2180 0 R/Prev 2181 0 R/Title(8.17.2 Successful Operation)>> endobj 2259 0 obj <</Dest[718 0 R/FitH 690]/Parent 2258 0 R/Title(8.17.2.1 Successful Operation for GERAN Iu mode)>> endobj 2260 0 obj <</Dest[722 0 R/FitH 772]/Next 2179 0 R/Parent 2177 0 R/Prev 2261 0 R/Title(8.18.3 Unsuccessful Operation)>> endobj 2261 0 obj <</Dest[720 0 R/FitH 772]/Next 2260 0 R/Parent 2177 0 R/Prev 2178 0 R/Title(8.18.2 Successful Operation)>> endobj 2262 0 obj <</Dest[724 0 R/FitH 772]/Next 2176 0 R/Parent 2174 0 R/Prev 2175 0 R/Title(8.19.2 Successful Operation)>> endobj 2263 0 obj <</Dest[726 0 R/FitH 507]/Next 2173 0 R/Parent 2171 0 R/Prev 2172 0 R/Title(8.20.2 Successful Operation)>> endobj 2264 0 obj <</Dest[730 0 R/FitH 182]/Next 2170 0 R/Parent 2168 0 R/Prev 2265 0 R/Title(8.21.3 Unsuccessful Operation)>> endobj 2265 0 obj <</Dest[730 0 R/FitH 588]/Next 2264 0 R/Parent 2168 0 R/Prev 2169 0 R/Title(8.21.2 Successful Operation)>> endobj 2266 0 obj <</Dest[734 0 R/FitH 402]/Parent 2167 0 R/Title(8.22.2.1 Successful Operation for GERAN Iu-mode)>> endobj 2267 0 obj <</Count -2/Dest[736 0 R/FitH 772]/First 2268 0 R/Last 2269 0 R/Next 2164 0 R/Parent 2162 0 R/Prev 2163 0 R/Title(8.23.2 Successful Operation)>> endobj 2268 0 obj <</Dest[736 0 R/FitH 740]/Next 2269 0 R/Parent 2267 0 R/Title(8.23.2.1 CN Originated Direct Transfer)>> endobj 2269 0 obj <</Dest[738 0 R/FitH 772]/Parent 2267 0 R/Prev 2268 0 R/Title(8.23.2.2 UTRAN Originated Direct Transfer)>> endobj 2270 0 obj <</Count -2/Dest[740 0 R/FitH 286]/First 2271 0 R/Last 2272 0 R/Next 2160 0 R/Parent 2158 0 R/Prev 2273 0 R/Title(8.25.3 Successful Operation)>> endobj 2271 0 obj <</Dest[740 0 R/FitH 255]/Next 2272 0 R/Parent 2270 0 R/Title(8.25.3.1 Overload at the CN)>> endobj 2272 0 obj <</Dest[742 0 R/FitH 678]/Parent 2270 0 R/Prev 2271 0 R/Title(8.25.3.2 Overload at the UTRAN)>> endobj 2273 0 obj <</Dest[740 0 R/FitH 338]/Next 2270 0 R/Parent 2158 0 R/Prev 2159 0 R/Title(8.25.2 Philosophy)>> endobj 2274 0 obj <</Dest[744 0 R/FitH 128]/Next 2279 0 R/Parent 2157 0 R/Title(8.26.3.1 Abnormal Condition at the CN)>> endobj 2275 0 obj <</Dest[746 0 R/FitH 687]/Parent 2157 0 R/Prev 2279 0 R/Title(8.26.3.3 Crossing of Reset Messages)>> endobj 2276 0 obj <</Count -2/Dest[742 0 R/FitH 324]/First 2277 0 R/Last 2278 0 R/Next 2157 0 R/Parent 2155 0 R/Prev 2156 0 R/Title(8.26.2 Successful Operation)>> endobj 2277 0 obj <</Dest[742 0 R/FitH 293]/Next 2278 0 R/Parent 2276 0 R/Title(8.26.2.1 Reset Procedure Initiated from the CN)>> endobj 2278 0 obj <</Dest[744 0 R/FitH 571]/Parent 2276 0 R/Prev 2277 0 R/Title(8.26.2.2 Reset Procedure Initiated from the UTRAN)>> endobj 2279 0 obj <</Dest[746 0 R/FitH 772]/Next 2275 0 R/Parent 2157 0 R/Prev 2274 0 R/Title(8.26.3.2 Abnormal Condition at the UTRAN)>> endobj 2280 0 obj <</Dest[746 0 R/FitH 484]/Next 2154 0 R/Parent 2152 0 R/Prev 2153 0 R/Title(8.27.2 Successful Operation)>> endobj 2281 0 obj <</Count -1/Dest[748 0 R/FitH 530]/First 2282 0 R/Last 2282 0 R/Next 2151 0 R/Parent 2149 0 R/Prev 2150 0 R/Title(8.28.2 Successful Operation)>> endobj 2282 0 obj <</Dest[748 0 R/FitH 292]/Parent 2281 0 R/Title(8.28.2.1 Successful Operation for GERAN Iu mode)>> endobj 2283 0 obj <</Dest[750 0 R/FitH 642]/Next 2284 0 R/Parent 2148 0 R/Title(8.29.2.1 Reset Resource procedure initiated from the RNC)>> endobj 2284 0 obj <</Dest[750 0 R/FitH 249]/Parent 2148 0 R/Prev 2283 0 R/Title(8.29.2.2 Reset Resource procedure initiated from the CN)>> endobj 2285 0 obj <</Dest[750 0 R/FitH 772]/Next 2286 0 R/Parent 2147 0 R/Title(8.29.1.1 Reset Resource procedure initiated from the RNC)>> endobj 2286 0 obj <</Dest[750 0 R/FitH 722]/Parent 2147 0 R/Prev 2285 0 R/Title(8.29.1.2 Reset Resource procedure initiated from the CN)>> endobj 2287 0 obj <</Dest[752 0 R/FitH 434]/Next 2145 0 R/Parent 2143 0 R/Prev 2144 0 R/Title(8.30.2 Successful Operation)>> endobj 2288 0 obj <</Dest[756 0 R/FitH 206]/Parent 2142 0 R/Title(8.31.4.1 Abnormal Conditions for GERAN Iu mode)>> endobj 2289 0 obj <</Dest[756 0 R/FitH 533]/Next 2142 0 R/Parent 2140 0 R/Prev 2290 0 R/Title(8.31.3 Unsuccessful Operation)>> endobj 2290 0 obj <</Count -1/Dest[754 0 R/FitH 451]/First 2291 0 R/Last 2291 0 R/Next 2289 0 R/Parent 2140 0 R/Prev 2141 0 R/Title(8.31.2 Successful Operation)>> endobj 2291 0 obj <</Dest[756 0 R/FitH 722]/Parent 2290 0 R/Title(8.31.2.1 Successful Operation for GERAN Iu mode)>> endobj 2292 0 obj <</Dest[760 0 R/FitH 772]/Next 2139 0 R/Parent 2137 0 R/Prev 2293 0 R/Title(8.32.3 Unsuccessful Operation)>> endobj 2293 0 obj <</Dest[758 0 R/FitH 665]/Next 2292 0 R/Parent 2137 0 R/Prev 2138 0 R/Title(8.32.2 Successful Operation)>> endobj 2294 0 obj <</Count -2/Dest[762 0 R/FitH 654]/First 2295 0 R/Last 2296 0 R/Next 2133 0 R/Parent 2131 0 R/Prev 2132 0 R/Title(8.34.2 Successful Operation)>> endobj 2295 0 obj <</Count -1/Dest[762 0 R/FitH 623]/First 2297 0 R/Last 2297 0 R/Next 2296 0 R/Parent 2294 0 R/Title(8.34.2.1 Direct Information Transfer initiated from the RNC)>> endobj 2296 0 obj <</Dest[764 0 R/FitH 772]/Parent 2294 0 R/Prev 2295 0 R/Title(8.34.2.2 Direct Information Transfer initiated from the CN)>> endobj 2297 0 obj <</Dest[762 0 R/FitH 207]/Parent 2295 0 R/Title(8.34.2.1.1 Successful Operation for GERAN Iu mode)>> endobj 2298 0 obj <</Dest[768 0 R/FitH 678]/Next 2130 0 R/Parent 2128 0 R/Prev 2299 0 R/Title(8.35.3 Unsuccessful Operation)>> endobj 2299 0 obj <</Dest[766 0 R/FitH 772]/Next 2298 0 R/Parent 2128 0 R/Prev 2129 0 R/Title(8.35.2 Successful Operation)>> endobj 2300 0 obj <</Dest[776 0 R/FitH 772]/Next 2127 0 R/Parent 2125 0 R/Prev 2301 0 R/Title(8.36.3 Unsuccessful Operation)>> endobj 2301 0 obj <</Dest[770 0 R/FitH 772]/Next 2300 0 R/Parent 2125 0 R/Prev 2126 0 R/Title(8.36.2 Successful Operation)>> endobj 2302 0 obj <</Dest[780 0 R/FitH 772]/Next 2124 0 R/Parent 2122 0 R/Prev 2303 0 R/Title(8.37.3 Unsuccessful Operation)>> endobj 2303 0 obj <</Dest[778 0 R/FitH 643]/Next 2302 0 R/Parent 2122 0 R/Prev 2123 0 R/Title(8.37.2 Successful Operation)>> endobj 2304 0 obj <</Dest[782 0 R/FitH 772]/Next 2121 0 R/Parent 2119 0 R/Prev 2120 0 R/Title(8.38.2 Successful Operation)>> endobj 2305 0 obj <</Dest[784 0 R/FitH 265]/Next 2118 0 R/Parent 2116 0 R/Prev 2306 0 R/Title(8.39.3 Unsuccessful Operation)>> endobj 2306 0 obj <</Dest[784 0 R/FitH 772]/Next 2305 0 R/Parent 2116 0 R/Prev 2117 0 R/Title(8.39.2 Successful Operation)>> endobj 2307 0 obj <</Dest[788 0 R/FitH 733]/Next 2115 0 R/Parent 2113 0 R/Prev 2308 0 R/Title(8.40.3 Unsuccessful Operation)>> endobj 2308 0 obj <</Dest[786 0 R/FitH 631]/Next 2307 0 R/Parent 2113 0 R/Prev 2114 0 R/Title(8.40.2 Successful Operation)>> endobj 2309 0 obj <</Dest[790 0 R/FitH 253]/Next 2112 0 R/Parent 2110 0 R/Prev 2310 0 R/Title(8.41.3 Unsuccessful Operation)>> endobj 2310 0 obj <</Dest[790 0 R/FitH 772]/Next 2309 0 R/Parent 2110 0 R/Prev 2111 0 R/Title(8.41.2 Successful Operation)>> endobj 2311 0 obj <</Dest[792 0 R/FitH 654]/Next 2109 0 R/Parent 2107 0 R/Prev 2108 0 R/Title(8.42.2 Successful Operation)>> endobj 2312 0 obj <</Dest[794 0 R/FitH 399]/Next 2106 0 R/Parent 2104 0 R/Prev 2313 0 R/Title(8.43.3 Unsuccessful Operation)>> endobj 2313 0 obj <</Dest[794 0 R/FitH 772]/Next 2312 0 R/Parent 2104 0 R/Prev 2105 0 R/Title(8.43.2 Successful Operation)>> endobj 2314 0 obj <</Dest[796 0 R/FitH 643]/Next 2103 0 R/Parent 2101 0 R/Prev 2102 0 R/Title(8.44.2 Successful Operation)>> endobj 2315 0 obj <</Dest[802 0 R/FitH 745]/Next 2097 0 R/Parent 2095 0 R/Prev 2096 0 R/Title(8.46.2 Successful Operation)>> endobj 2316 0 obj <</Dest[802 0 R/FitH 145]/Next 2094 0 R/Parent 2076 0 R/Prev 2317 0 R/Title(8.47.3 Unsuccessful Operation)>> endobj 2317 0 obj <</Dest[802 0 R/FitH 356]/Next 2316 0 R/Parent 2076 0 R/Prev 2093 0 R/Title(8.47.2 Successful Operation)>> endobj 2318 0 obj <</Dest[1392 0 R/FitH 762]/Next 2073 0 R/Parent 2071 0 R/Prev 2319 0 R/Title(9.4 Message Transfer Syntax)>> endobj 2319 0 obj <</Count -8/Dest[1108 0 R/FitH 529]/First 2320 0 R/Last 2321 0 R/Next 2318 0 R/Parent 2071 0 R/Prev 2322 0 R/Title(9.3 Message and Information Element Abstract Syntax \(with ASN.1\))>> endobj 2320 0 obj <</Dest[1108 0 R/FitH 496]/Next 2527 0 R/Parent 2319 0 R/Title(9.3.0 General)>> endobj 2321 0 obj <</Dest[1382 0 R/FitH 179]/Parent 2319 0 R/Prev 2522 0 R/Title(9.3.7 Container Definitions)>> endobj 2322 0 obj <</Count -4/Dest[910 0 R/FitH 452]/First 2323 0 R/Last 2324 0 R/Next 2319 0 R/Parent 2071 0 R/Prev 2072 0 R/Title(9.2 Information Element Definitions)>> endobj 2323 0 obj <</Dest[910 0 R/FitH 418]/Next 2330 0 R/Parent 2322 0 R/Title(9.2.0 General)>> endobj 2324 0 obj <</Count -56/Dest[1060 0 R/FitH 423]/First 2325 0 R/Last 2326 0 R/Parent 2322 0 R/Prev 2327 0 R/Title(9.2.3 NAS Related IEs)>> endobj 2325 0 obj <</Dest[1060 0 R/FitH 392]/Next 2521 0 R/Parent 2324 0 R/Title(9.2.3.1 Permanent NAS UE Identity)>> endobj 2326 0 obj <</Dest[1106 0 R/FitH 360]/Parent 2324 0 R/Prev 2468 0 R/Title(9.2.3.55 PLMN Identity)>> endobj 2327 0 obj <</Count -6/Dest[1058 0 R/FitH 772]/First 2328 0 R/Last 2329 0 R/Next 2324 0 R/Parent 2322 0 R/Prev 2330 0 R/Title(9.2.2 Transport Network Layer Related IEs)>> endobj 2328 0 obj <</Dest[1058 0 R/FitH 740]/Next 2467 0 R/Parent 2327 0 R/Title(9.2.2.1 Transport Layer Address)>> endobj 2329 0 obj <</Dest[1060 0 R/FitH 567]/Parent 2327 0 R/Prev 2464 0 R/Title(9.2.2.6 Tunnel Information)>> endobj 2330 0 obj <</Count -133/Dest[910 0 R/FitH 216]/First 2331 0 R/Last 2332 0 R/Next 2327 0 R/Parent 2322 0 R/Prev 2323 0 R/Title(9.2.1 Radio Network Layer Related IEs)>> endobj 2331 0 obj <</Dest[910 0 R/FitH 185]/Next 2463 0 R/Parent 2330 0 R/Title(9.2.1.1 Message Type)>> endobj 2332 0 obj <</Dest[1056 0 R/FitH 185]/Parent 2330 0 R/Prev 2333 0 R/Title(9.2.1.124 Session Re-establishment Indicator)>> endobj 2333 0 obj <</Dest[1056 0 R/FitH 308]/Next 2332 0 R/Parent 2330 0 R/Prev 2334 0 R/Title(9.2.1.123 LHN ID)>> endobj 2334 0 obj <</Dest[1056 0 R/FitH 452]/Next 2333 0 R/Parent 2330 0 R/Prev 2335 0 R/Title(9.2.1.122 UTRAN Cell Identifier)>> endobj 2335 0 obj <</Dest[1056 0 R/FitH 555]/Next 2334 0 R/Parent 2330 0 R/Prev 2336 0 R/Title(9.2.1.121 rSRVCC operation possible)>> endobj 2336 0 obj <</Dest[1056 0 R/FitH 772]/Next 2335 0 R/Parent 2330 0 R/Prev 2337 0 R/Title(9.2.1.120 M7 Report)>> endobj 2337 0 obj <</Dest[1054 0 R/FitH 306]/Next 2336 0 R/Parent 2330 0 R/Prev 2338 0 R/Title(9.2.1.119 M6 Report)>> endobj 2338 0 obj <</Dest[1054 0 R/FitH 503]/Next 2337 0 R/Parent 2330 0 R/Prev 2339 0 R/Title(9.2.1.118 M5 Report)>> endobj 2339 0 obj <</Dest[1052 0 R/FitH 107]/Next 2338 0 R/Parent 2330 0 R/Prev 2340 0 R/Title(9.2.1.117 M4 Report)>> endobj 2340 0 obj <</Dest[1052 0 R/FitH 268]/Next 2339 0 R/Parent 2330 0 R/Prev 2341 0 R/Title(9.2.1.116 MDT PLMN List)>> endobj 2341 0 obj <</Dest[1052 0 R/FitH 433]/Next 2340 0 R/Parent 2330 0 R/Prev 2342 0 R/Title(9.2.1.115 rSRVCC Information)>> endobj 2342 0 obj <</Dest[1052 0 R/FitH 557]/Next 2341 0 R/Parent 2330 0 R/Prev 2343 0 R/Title(9.2.1.114 rSRVCC HO Indication)>> endobj 2343 0 obj <</Dest[1052 0 R/FitH 691]/Next 2342 0 R/Parent 2330 0 R/Prev 2344 0 R/Title(9.2.1.113 Voice Support Match Indicator)>> endobj 2344 0 obj <</Dest[1050 0 R/FitH 111]/Next 2343 0 R/Parent 2330 0 R/Prev 2345 0 R/Title(9.2.1.112 Out Of UTRAN)>> endobj 2345 0 obj <</Dest[1050 0 R/FitH 235]/Next 2344 0 R/Parent 2330 0 R/Prev 2346 0 R/Title(9.2.1.111 End Of CSFB)>> endobj 2346 0 obj <</Dest[1050 0 R/FitH 347]/Next 2345 0 R/Parent 2330 0 R/Prev 2347 0 R/Title(9.2.1.110 Management Based MDT Allowed)>> endobj 2347 0 obj <</Dest[1050 0 R/FitH 523]/Next 2346 0 R/Parent 2330 0 R/Prev 2348 0 R/Title(9.2.1.109 Priority Class Indicator)>> endobj 2348 0 obj <</Dest[1050 0 R/FitH 647]/Next 2347 0 R/Parent 2330 0 R/Prev 2349 0 R/Title(9.2.1.108 PDU Type 14 Frame Sequence Number)>> endobj 2349 0 obj <</Dest[1050 0 R/FitH 772]/Next 2348 0 R/Parent 2330 0 R/Prev 2350 0 R/Title(9.2.1.107 Frame Sequence Number)>> endobj 2350 0 obj <</Dest[1048 0 R/FitH 218]/Next 2349 0 R/Parent 2330 0 R/Prev 2351 0 R/Title(9.2.1.106 Trace Information)>> endobj 2351 0 obj <</Dest[1046 0 R/FitH 221]/Next 2350 0 R/Parent 2330 0 R/Prev 2352 0 R/Title(9.2.1.105 Location Reporting Transfer Information)>> endobj 2352 0 obj <</Dest[1044 0 R/FitH 197]/Next 2351 0 R/Parent 2330 0 R/Prev 2353 0 R/Title(9.2.1.104 UP Information)>> endobj 2353 0 obj <</Dest[1044 0 R/FitH 438]/Next 2352 0 R/Parent 2330 0 R/Prev 2354 0 R/Title(9.2.1.103 RAB Data Volume Report)>> endobj 2354 0 obj <</Dest[1044 0 R/FitH 604]/Next 2353 0 R/Parent 2330 0 R/Prev 2355 0 R/Title(9.2.1.102 RAB Parameters List)>> endobj 2355 0 obj <</Dest[1042 0 R/FitH 180]/Next 2354 0 R/Parent 2330 0 R/Prev 2356 0 R/Title(9.2.1.101 RNSAP Relocation Parameters)>> endobj 2356 0 obj <</Dest[1042 0 R/FitH 409]/Next 2355 0 R/Parent 2330 0 R/Prev 2357 0 R/Title(9.2.1.100 MDT Report parameters)>> endobj 2357 0 obj <</Dest[1042 0 R/FitH 564]/Next 2356 0 R/Parent 2330 0 R/Prev 2358 0 R/Title(9.2.1.99 M2 Report)>> endobj 2358 0 obj <</Dest[1040 0 R/FitH 122]/Next 2357 0 R/Parent 2330 0 R/Prev 2359 0 R/Title(9.2.1.98 M1 Report)>> endobj 2359 0 obj <</Dest[1036 0 R/FitH 136]/Next 2358 0 R/Parent 2330 0 R/Prev 2360 0 R/Title(9.2.1.97 MDT Configuration)>> endobj 2360 0 obj <</Dest[1034 0 R/FitH 647]/Next 2359 0 R/Parent 2330 0 R/Prev 2361 0 R/Title(9.2.1.96 IRAT Measurement Configuration)>> endobj 2361 0 obj <</Dest[1034 0 R/FitH 772]/Next 2360 0 R/Parent 2330 0 R/Prev 2362 0 R/Title(9.2.1.95 MSISDN)>> endobj 2362 0 obj <</Dest[1032 0 R/FitH 245]/Next 2361 0 R/Parent 2330 0 R/Prev 2363 0 R/Title(9.2.1.94 Offload RAB Parameters)>> endobj 2363 0 obj <</Dest[1032 0 R/FitH 360]/Next 2362 0 R/Parent 2330 0 R/Prev 2364 0 R/Title(9.2.1.93 Cell Access Mode)>> endobj 2364 0 obj <</Dest[1032 0 R/FitH 484]/Next 2363 0 R/Parent 2330 0 R/Prev 2365 0 R/Title(9.2.1.92 CSG Membership Status)>> endobj 2365 0 obj <</Dest[1030 0 R/FitH 214]/Next 2364 0 R/Parent 2330 0 R/Prev 2366 0 R/Title(9.2.1.91 UE Aggregate Maximum Bit Rate)>> endobj 2366 0 obj <</Dest[1030 0 R/FitH 390]/Next 2365 0 R/Parent 2330 0 R/Prev 2367 0 R/Title(9.2.1.90 E-UTRAN Service Handover)>> endobj 2367 0 obj <</Dest[1030 0 R/FitH 514]/Next 2366 0 R/Parent 2330 0 R/Prev 2368 0 R/Title(9.2.1.89 SRVCC Information)>> endobj 2368 0 obj <</Dest[1030 0 R/FitH 648]/Next 2367 0 R/Parent 2330 0 R/Prev 2369 0 R/Title(9.2.1.88 SRVCC HO Indication)>> endobj 2369 0 obj <</Dest[1030 0 R/FitH 772]/Next 2368 0 R/Parent 2330 0 R/Prev 2370 0 R/Title(9.2.1.87 SRVCC operation possible)>> endobj 2370 0 obj <</Dest[1028 0 R/FitH 167]/Next 2369 0 R/Parent 2330 0 R/Prev 2371 0 R/Title(9.2.1.86 Subscriber Profile ID for RAT/Frequency priority)>> endobj 2371 0 obj <</Dest[1028 0 R/FitH 281]/Next 2370 0 R/Parent 2330 0 R/Prev 2372 0 R/Title(9.2.1.85 CSG Id)>> endobj 2372 0 obj <</Dest[1028 0 R/FitH 436]/Next 2371 0 R/Parent 2330 0 R/Prev 2373 0 R/Title(9.2.1.84 MBMS HC Indicator)>> endobj 2373 0 obj <</Dest[1028 0 R/FitH 772]/Next 2372 0 R/Parent 2330 0 R/Prev 2374 0 R/Title(9.2.1.83 Last Visited UTRAN Cell Information)>> endobj 2374 0 obj <</Dest[1026 0 R/FitH 227]/Next 2373 0 R/Parent 2330 0 R/Prev 2375 0 R/Title(9.2.1.82 Periodic Location Info)>> endobj 2375 0 obj <</Dest[1026 0 R/FitH 340]/Next 2374 0 R/Parent 2330 0 R/Prev 2376 0 R/Title(9.2.1.81 Include Velocity)>> endobj 2376 0 obj <</Dest[1026 0 R/FitH 473]/Next 2375 0 R/Parent 2330 0 R/Prev 2377 0 R/Title(9.2.1.80 Target BSS to Source BSS Transparent Container)>> endobj 2377 0 obj <</Dest[1026 0 R/FitH 607]/Next 2376 0 R/Parent 2330 0 R/Prev 2378 0 R/Title(9.2.1.79 Source BSS to Target BSS Transparent Container)>> endobj 2378 0 obj <</Dest[1024 0 R/FitH 172]/Next 2377 0 R/Parent 2330 0 R/Prev 2379 0 R/Title(9.2.1.78 MBMS IP Multicast Address and APN Request)>> endobj 2379 0 obj <</Dest[1024 0 R/FitH 285]/Next 2378 0 R/Parent 2330 0 R/Prev 2380 0 R/Title(9.2.1.77 Session Update ID)>> endobj 2380 0 obj <</Dest[1024 0 R/FitH 418]/Next 2379 0 R/Parent 2330 0 R/Prev 2381 0 R/Title(9.2.1.76 Frequency Layer Convergence Flag)>> endobj 2381 0 obj <</Dest[1024 0 R/FitH 606]/Next 2380 0 R/Parent 2330 0 R/Prev 2382 0 R/Title(9.2.1.75 PTP RAB ID)>> endobj 2382 0 obj <</Dest[1022 0 R/FitH 99]/Next 2381 0 R/Parent 2330 0 R/Prev 2383 0 R/Title(9.2.1.74 Information Requested)>> endobj 2383 0 obj <</Dest[1022 0 R/FitH 296]/Next 2382 0 R/Parent 2330 0 R/Prev 2384 0 R/Title(9.2.1.73 Information Request Type)>> endobj 2384 0 obj <</Dest[1022 0 R/FitH 420]/Next 2383 0 R/Parent 2330 0 R/Prev 2385 0 R/Title(9.2.1.72 Information Exchange Type)>> endobj 2385 0 obj <</Dest[1022 0 R/FitH 532]/Next 2384 0 R/Parent 2330 0 R/Prev 2386 0 R/Title(9.2.1.71 Information Exchange ID)>> endobj 2386 0 obj <</Dest[1022 0 R/FitH 772]/Next 2385 0 R/Parent 2330 0 R/Prev 2387 0 R/Title(9.2.1.70 List Of Interfaces To Trace)>> endobj 2387 0 obj <</Dest[1020 0 R/FitH 212]/Next 2386 0 R/Parent 2330 0 R/Prev 2388 0 R/Title(9.2.1.69 Trace Depth)>> endobj 2388 0 obj <</Dest[1020 0 R/FitH 346]/Next 2387 0 R/Parent 2330 0 R/Prev 2389 0 R/Title(9.2.1.68 Trace Propagation Parameters)>> endobj 2389 0 obj <</Dest[1020 0 R/FitH 460]/Next 2388 0 R/Parent 2330 0 R/Prev 2390 0 R/Title(9.2.1.67 Trace Recording Session Reference)>> endobj 2390 0 obj <</Dest[1020 0 R/FitH 583]/Next 2389 0 R/Parent 2330 0 R/Prev 2391 0 R/Title(9.2.1.66 Trace Recording Session Information)>> endobj 2391 0 obj <</Dest[1016 0 R/FitH 209]/Next 2390 0 R/Parent 2330 0 R/Prev 2392 0 R/Title(9.2.1.65 Equipments To Be Traced)>> endobj 2392 0 obj <</Dest[1016 0 R/FitH 772]/Next 2391 0 R/Parent 2330 0 R/Prev 2393 0 R/Title(9.2.1.64 RNC Trace Session Information)>> endobj 2393 0 obj <</Dest[1014 0 R/FitH 209]/Next 2392 0 R/Parent 2330 0 R/Prev 2394 0 R/Title(9.2.1.63 Information Transfer Type)>> endobj 2394 0 obj <</Dest[1014 0 R/FitH 343]/Next 2393 0 R/Parent 2330 0 R/Prev 2395 0 R/Title(9.2.1.62 Inter-system Information Transfer Type)>> endobj 2395 0 obj <</Dest[1014 0 R/FitH 628]/Next 2394 0 R/Parent 2330 0 R/Prev 2396 0 R/Title(9.2.1.61 Source Cell Identifier)>> endobj 2396 0 obj <</Dest[1012 0 R/FitH 226]/Next 2395 0 R/Parent 2330 0 R/Prev 2397 0 R/Title(9.2.1.60 Cell Load Information Group)>> endobj 2397 0 obj <</Dest[1012 0 R/FitH 702]/Next 2396 0 R/Parent 2330 0 R/Prev 2398 0 R/Title(9.2.1.59 UESBI-Iu)>> endobj 2398 0 obj <</Dest[1010 0 R/FitH 94]/Next 2397 0 R/Parent 2330 0 R/Prev 2399 0 R/Title(9.2.1.58 GERAN BSC Container)>> endobj 2399 0 obj <</Dest[1010 0 R/FitH 207]/Next 2398 0 R/Parent 2330 0 R/Prev 2400 0 R/Title(9.2.1.57 GERAN Classmark)>> endobj 2400 0 obj <</Dest[1010 0 R/FitH 341]/Next 2399 0 R/Parent 2330 0 R/Prev 2401 0 R/Title(9.2.1.56 Provided Data)>> endobj 2401 0 obj <</Dest[1010 0 R/FitH 453]/Next 2400 0 R/Parent 2330 0 R/Prev 2402 0 R/Title(9.2.1.55 Information Transfer ID)>> endobj 2402 0 obj <</Dest[1010 0 R/FitH 588]/Next 2401 0 R/Parent 2330 0 R/Prev 2403 0 R/Title(9.2.1.54 Source RNC PDCP context info)>> endobj 2403 0 obj <</Dest[1008 0 R/FitH 224]/Next 2402 0 R/Parent 2330 0 R/Prev 2404 0 R/Title(9.2.1.53 NRT Load Information Value)>> endobj 2404 0 obj <</Dest[1008 0 R/FitH 348]/Next 2403 0 R/Parent 2330 0 R/Prev 2405 0 R/Title(9.2.1.52 RT Load Value)>> endobj 2405 0 obj <</Dest[1008 0 R/FitH 503]/Next 2404 0 R/Parent 2330 0 R/Prev 2406 0 R/Title(9.2.1.51 Load Value)>> endobj 2406 0 obj <</Dest[1008 0 R/FitH 680]/Next 2405 0 R/Parent 2330 0 R/Prev 2407 0 R/Title(9.2.1.50 Cell Capacity Class Value)>> endobj 2407 0 obj <</Dest[1006 0 R/FitH 204]/Next 2406 0 R/Parent 2330 0 R/Prev 2408 0 R/Title(9.2.1.49 Cell Load Information)>> endobj 2408 0 obj <</Dest[1006 0 R/FitH 370]/Next 2407 0 R/Parent 2330 0 R/Prev 2409 0 R/Title(9.2.1.48 Inter-System Information Transparent Container)>> endobj 2409 0 obj <</Dest[1006 0 R/FitH 483]/Next 2408 0 R/Parent 2330 0 R/Prev 2410 0 R/Title(9.2.1.47 New BSS to Old BSS Information)>> endobj 2410 0 obj <</Dest[1006 0 R/FitH 772]/Next 2409 0 R/Parent 2330 0 R/Prev 2411 0 R/Title(9.2.1.46d Client Type)>> endobj 2411 0 obj <</Dest[1004 0 R/FitH 190]/Next 2410 0 R/Parent 2330 0 R/Prev 2412 0 R/Title(9.2.1.46c Positioning Priority)>> endobj 2412 0 obj <</Dest[1004 0 R/FitH 324]/Next 2411 0 R/Parent 2330 0 R/Prev 2413 0 R/Title(9.2.1.46b Response Time)>> endobj 2413 0 obj <</Dest[1004 0 R/FitH 457]/Next 2412 0 R/Parent 2330 0 R/Prev 2414 0 R/Title(9.2.1.46a Vertical Accuracy Code)>> endobj 2414 0 obj <</Dest[1004 0 R/FitH 580]/Next 2413 0 R/Parent 2330 0 R/Prev 2415 0 R/Title(9.2.1.46 Global CN-ID)>> endobj 2415 0 obj <</Dest[1000 0 R/FitH 681]/Next 2414 0 R/Parent 2330 0 R/Prev 2416 0 R/Title(9.2.1.45 Requested RAB Parameter Values)>> endobj 2416 0 obj <</Dest[996 0 R/FitH 244]/Next 2415 0 R/Parent 2330 0 R/Prev 2417 0 R/Title(9.2.1.44 Assigned RAB Parameter Values)>> endobj 2417 0 obj <</Dest[990 0 R/FitH 263]/Next 2416 0 R/Parent 2330 0 R/Prev 2418 0 R/Title(9.2.1.43 Alternative RAB Parameter Values)>> endobj 2418 0 obj <</Dest[988 0 R/FitH 475]/Next 2417 0 R/Parent 2330 0 R/Prev 2419 0 R/Title(9.2.1.42 Message Structure)>> endobj 2419 0 obj <</Dest[988 0 R/FitH 722]/Next 2418 0 R/Parent 2330 0 R/Prev 2420 0 R/Title(9.2.1.41 Service Handover)>> endobj 2420 0 obj <</Dest[986 0 R/FitH 257]/Next 2419 0 R/Parent 2330 0 R/Prev 2421 0 R/Title(9.2.1.40a PDP Type Information extension)>> endobj 2421 0 obj <</Dest[986 0 R/FitH 516]/Next 2420 0 R/Parent 2330 0 R/Prev 2422 0 R/Title(9.2.1.40 PDP Type Information)>> endobj 2422 0 obj <</Dest[986 0 R/FitH 680]/Next 2421 0 R/Parent 2330 0 R/Prev 2423 0 R/Title(9.2.1.39a Extended RNC-ID)>> endobj 2423 0 obj <</Dest[984 0 R/FitH 154]/Next 2422 0 R/Parent 2330 0 R/Prev 2424 0 R/Title(9.2.1.39 Global RNC-ID)>> endobj 2424 0 obj <</Dest[984 0 R/FitH 319]/Next 2423 0 R/Parent 2330 0 R/Prev 2425 0 R/Title(9.2.1.38 Iu Signalling Connection Identifier)>> endobj 2425 0 obj <</Dest[984 0 R/FitH 431]/Next 2424 0 R/Parent 2330 0 R/Prev 2426 0 R/Title(9.2.1.37 DRX Cycle Length Coefficient)>> endobj 2426 0 obj <</Dest[984 0 R/FitH 566]/Next 2425 0 R/Parent 2330 0 R/Prev 2427 0 R/Title(9.2.1.36 Key Status)>> endobj 2427 0 obj <</Dest[980 0 R/FitH 484]/Next 2426 0 R/Parent 2330 0 R/Prev 2428 0 R/Title(9.2.1.35 Criticality Diagnostics)>> endobj 2428 0 obj <</Dest[980 0 R/FitH 660]/Next 2427 0 R/Parent 2330 0 R/Prev 2429 0 R/Title(9.2.1.34 UL N-PDU Sequence Number)>> endobj 2429 0 obj <</Dest[978 0 R/FitH 164]/Next 2428 0 R/Parent 2330 0 R/Prev 2430 0 R/Title(9.2.1.33 DL N-PDU Sequence Number)>> endobj 2430 0 obj <</Dest[978 0 R/FitH 276]/Next 2429 0 R/Parent 2330 0 R/Prev 2431 0 R/Title(9.2.1.32 Number of Steps)>> endobj 2431 0 obj <</Dest[978 0 R/FitH 431]/Next 2430 0 R/Parent 2330 0 R/Prev 2432 0 R/Title(9.2.1.31 L3 Information)>> endobj 2432 0 obj <</Dest[978 0 R/FitH 564]/Next 2431 0 R/Parent 2330 0 R/Prev 2433 0 R/Title(9.2.1.30c TAI)>> endobj 2433 0 obj <</Dest[978 0 R/FitH 772]/Next 2432 0 R/Parent 2330 0 R/Prev 2434 0 R/Title(9.2.1.30b Target to Source Transparent Container)>> endobj 2434 0 obj <</Dest[976 0 R/FitH 359]/Next 2433 0 R/Parent 2330 0 R/Prev 2435 0 R/Title(9.2.1.30a Source to Target Transparent Container)>> endobj 2435 0 obj <</Dest[976 0 R/FitH 557]/Next 2434 0 R/Parent 2330 0 R/Prev 2436 0 R/Title(9.2.1.30 Target RNC to Source RNC Transparent Container)>> endobj 2436 0 obj <</Dest[976 0 R/FitH 701]/Next 2435 0 R/Parent 2330 0 R/Prev 2437 0 R/Title(9.2.1.29 Old BSS to New BSS Information)>> endobj 2437 0 obj <</Dest[968 0 R/FitH 569]/Next 2436 0 R/Parent 2330 0 R/Prev 2438 0 R/Title(9.2.1.28 Source RNC to Target RNC Transparent Container)>> endobj 2438 0 obj <</Dest[968 0 R/FitH 691]/Next 2437 0 R/Parent 2330 0 R/Prev 2439 0 R/Title(9.2.1.27 MS Classmark 3)>> endobj 2439 0 obj <</Dest[966 0 R/FitH 102]/Next 2438 0 R/Parent 2330 0 R/Prev 2440 0 R/Title(9.2.1.26 MS Classmark 2)>> endobj 2440 0 obj <</Dest[964 0 R/FitH 331]/Next 2439 0 R/Parent 2330 0 R/Prev 2441 0 R/Title(9.2.1.25 Target ID)>> endobj 2441 0 obj <</Dest[964 0 R/FitH 584]/Next 2440 0 R/Parent 2330 0 R/Prev 2442 0 R/Title(9.2.1.24 Source ID)>> endobj 2442 0 obj <</Dest[964 0 R/FitH 772]/Next 2441 0 R/Parent 2330 0 R/Prev 2443 0 R/Title(9.2.1.23 Relocation Type)>> endobj 2443 0 obj <</Dest[962 0 R/FitH 233]/Next 2442 0 R/Parent 2330 0 R/Prev 2444 0 R/Title(9.2.1.22 Non Searching Indication)>> endobj 2444 0 obj <</Dest[962 0 R/FitH 412]/Next 2443 0 R/Parent 2330 0 R/Prev 2445 0 R/Title(9.2.1.21 Paging Area ID)>> endobj 2445 0 obj <</Dest[962 0 R/FitH 462]/Next 2444 0 R/Parent 2330 0 R/Prev 2446 0 R/Title(9.2.1.20 Chosen UP Version)>> endobj 2446 0 obj <</Dest[962 0 R/FitH 630]/Next 2445 0 R/Parent 2330 0 R/Prev 2447 0 R/Title(9.2.1.19 UP Mode Versions)>> endobj 2447 0 obj <</Dest[960 0 R/FitH 213]/Next 2446 0 R/Parent 2330 0 R/Prev 2448 0 R/Title(9.2.1.18 User Plane Mode)>> endobj 2448 0 obj <</Dest[960 0 R/FitH 358]/Next 2447 0 R/Parent 2330 0 R/Prev 2449 0 R/Title(9.2.1.17 Data Volume Reporting Indication)>> endobj 2449 0 obj <</Dest[960 0 R/FitH 722]/Next 2448 0 R/Parent 2330 0 R/Prev 2450 0 R/Title(9.2.1.16 Request Type)>> endobj 2450 0 obj <</Dest[960 0 R/FitH 772]/Next 2449 0 R/Parent 2330 0 R/Prev 2451 0 R/Title(9.2.1.15 Categorisation Parameters)>> endobj 2451 0 obj <</Dest[958 0 R/FitH 191]/Next 2450 0 R/Parent 2330 0 R/Prev 2452 0 R/Title(9.2.1.14 Chosen Encryption Algorithm)>> endobj 2452 0 obj <</Dest[958 0 R/FitH 366]/Next 2451 0 R/Parent 2330 0 R/Prev 2453 0 R/Title(9.2.1.13 Chosen Integrity Protection Algorithm)>> endobj 2453 0 obj <</Dest[958 0 R/FitH 574]/Next 2452 0 R/Parent 2330 0 R/Prev 2454 0 R/Title(9.2.1.12 Encryption Information)>> endobj 2454 0 obj <</Dest[958 0 R/FitH 772]/Next 2453 0 R/Parent 2330 0 R/Prev 2455 0 R/Title(9.2.1.11 Integrity Protection Information)>> endobj 2455 0 obj <</Dest[956 0 R/FitH 211]/Next 2454 0 R/Parent 2330 0 R/Prev 2456 0 R/Title(9.2.1.10 OMC ID)>> endobj 2456 0 obj <</Dest[956 0 R/FitH 772]/Next 2455 0 R/Parent 2330 0 R/Prev 2457 0 R/Title(9.2.1.9 UE Identity)>> endobj 2457 0 obj <</Dest[954 0 R/FitH 390]/Next 2456 0 R/Parent 2330 0 R/Prev 2458 0 R/Title(9.2.1.8 Trace Reference)>> endobj 2458 0 obj <</Dest[954 0 R/FitH 536]/Next 2457 0 R/Parent 2330 0 R/Prev 2459 0 R/Title(9.2.1.7 Trigger ID)>> endobj 2459 0 obj <</Dest[954 0 R/FitH 658]/Next 2458 0 R/Parent 2330 0 R/Prev 2460 0 R/Title(9.2.1.6 Trace Type)>> endobj 2460 0 obj <</Dest[954 0 R/FitH 772]/Next 2459 0 R/Parent 2330 0 R/Prev 2461 0 R/Title(9.2.1.5 CN Domain Indicator)>> endobj 2461 0 obj <</Dest[938 0 R/FitH 652]/Next 2460 0 R/Parent 2330 0 R/Prev 2462 0 R/Title(9.2.1.4 Cause)>> endobj 2462 0 obj <</Dest[914 0 R/FitH 447]/Next 2461 0 R/Parent 2330 0 R/Prev 2463 0 R/Title(9.2.1.3 RAB Parameters)>> endobj 2463 0 obj <</Dest[914 0 R/FitH 681]/Next 2462 0 R/Parent 2330 0 R/Prev 2331 0 R/Title(9.2.1.2 RAB ID)>> endobj 2464 0 obj <</Dest[1060 0 R/FitH 681]/Next 2329 0 R/Parent 2327 0 R/Prev 2465 0 R/Title(9.2.2.5 Correlation ID)>> endobj 2465 0 obj <</Dest[1058 0 R/FitH 135]/Next 2464 0 R/Parent 2327 0 R/Prev 2466 0 R/Title(9.2.2.4 UL GTP-PDU Sequence Number)>> endobj 2466 0 obj <</Dest[1058 0 R/FitH 268]/Next 2465 0 R/Parent 2327 0 R/Prev 2467 0 R/Title(9.2.2.3 DL GTP-PDU Sequence Number)>> endobj 2467 0 obj <</Dest[1058 0 R/FitH 531]/Next 2466 0 R/Parent 2327 0 R/Prev 2328 0 R/Title(9.2.2.2 Iu Transport Association)>> endobj 2468 0 obj <</Dest[1106 0 R/FitH 495]/Next 2326 0 R/Parent 2324 0 R/Prev 2469 0 R/Title(9.2.3.54 Higher bitrates than 16 Mbps flag)>> endobj 2469 0 obj <</Dest[1106 0 R/FitH 648]/Next 2468 0 R/Parent 2324 0 R/Prev 2470 0 R/Title(9.2.3.53 Requested GANSS Assistance Data)>> endobj 2470 0 obj <</Dest[1106 0 R/FitH 772]/Next 2469 0 R/Parent 2324 0 R/Prev 2471 0 R/Title(9.2.3.52 RAT Type)>> endobj 2471 0 obj <</Dest[1100 0 R/FitH 331]/Next 2470 0 R/Parent 2324 0 R/Prev 2472 0 R/Title(9.2.3.51 Velocity Estimate)>> endobj 2472 0 obj <</Dest[1100 0 R/FitH 434]/Next 2471 0 R/Parent 2324 0 R/Prev 2473 0 R/Title(9.2.3.50 Redirect Attempt Flag)>> endobj 2473 0 obj <</Dest[1100 0 R/FitH 579]/Next 2472 0 R/Parent 2324 0 R/Prev 2474 0 R/Title(9.2.3.49 Time to MBMS Data Transfer)>> endobj 2474 0 obj <</Dest[1100 0 R/FitH 712]/Next 2473 0 R/Parent 2324 0 R/Prev 2475 0 R/Title(9.2.3.48 MBMS Session Repetition Number)>> endobj 2475 0 obj <</Dest[1098 0 R/FitH 215]/Next 2474 0 R/Parent 2324 0 R/Prev 2476 0 R/Title(9.2.3.47 Requested Multicast Service List)>> endobj 2476 0 obj <</Dest[1098 0 R/FitH 516]/Next 2475 0 R/Parent 2324 0 R/Prev 2477 0 R/Title(9.2.3.46 Requested MBMS IP Multicast Address and APN)>> endobj 2477 0 obj <</Dest[1098 0 R/FitH 660]/Next 2476 0 R/Parent 2324 0 R/Prev 2478 0 R/Title(9.2.3.45 MBMS Registration Request Type)>> endobj 2478 0 obj <</Dest[1096 0 R/FitH 131]/Next 2477 0 R/Parent 2324 0 R/Prev 2479 0 R/Title(9.2.3.44 MBMS CN De-Registration)>> endobj 2479 0 obj <</Dest[1094 0 R/FitH 241]/Next 2478 0 R/Parent 2324 0 R/Prev 2480 0 R/Title(9.2.3.43 Delta RA List of Idle Mode UEs)>> endobj 2480 0 obj <</Dest[1094 0 R/FitH 691]/Next 2479 0 R/Parent 2324 0 R/Prev 2481 0 R/Title(9.2.3.42 RA List of Idle Mode UEs)>> endobj 2481 0 obj <</Dest[1092 0 R/FitH 146]/Next 2480 0 R/Parent 2324 0 R/Prev 2482 0 R/Title(9.2.3.41 MBMS Service Area)>> endobj 2482 0 obj <</Dest[1092 0 R/FitH 279]/Next 2481 0 R/Parent 2324 0 R/Prev 2483 0 R/Title(9.2.3.40 MBMS Session Duration)>> endobj 2483 0 obj <</Dest[1092 0 R/FitH 403]/Next 2482 0 R/Parent 2324 0 R/Prev 2484 0 R/Title(9.2.3.39a MBMS Counting Information)>> endobj 2484 0 obj <</Dest[1092 0 R/FitH 525]/Next 2483 0 R/Parent 2324 0 R/Prev 2485 0 R/Title(9.2.3.39 MBMS Bearer Service Type)>> endobj 2485 0 obj <</Dest[1092 0 R/FitH 680]/Next 2484 0 R/Parent 2324 0 R/Prev 2486 0 R/Title(9.2.3.38 MBMS Session Identity)>> endobj 2486 0 obj <</Dest[1090 0 R/FitH 91]/Next 2485 0 R/Parent 2324 0 R/Prev 2487 0 R/Title(9.2.3.37 TMGI)>> endobj 2487 0 obj <</Dest[1090 0 R/FitH 434]/Next 2486 0 R/Parent 2324 0 R/Prev 2488 0 R/Title(9.2.3.36 Redirection Indication)>> endobj 2488 0 obj <</Dest[1090 0 R/FitH 579]/Next 2487 0 R/Parent 2324 0 R/Prev 2489 0 R/Title(9.2.3.35 Redirection Completed)>> endobj 2489 0 obj <</Dest[1090 0 R/FitH 702]/Next 2488 0 R/Parent 2324 0 R/Prev 2490 0 R/Title(9.2.3.34 NAS Sequence Number)>> endobj 2490 0 obj <</Dest[1088 0 R/FitH 103]/Next 2489 0 R/Parent 2324 0 R/Prev 2491 0 R/Title(9.2.3.33 Selected PLMN Identity)>> endobj 2491 0 obj <</Dest[1086 0 R/FitH 237]/Next 2490 0 R/Parent 2324 0 R/Prev 2492 0 R/Title(9.2.3.32 RIM Routing Address)>> endobj 2492 0 obj <</Dest[1086 0 R/FitH 371]/Next 2491 0 R/Parent 2324 0 R/Prev 2493 0 R/Title(9.2.3.31 RIM Information)>> endobj 2493 0 obj <</Dest[1086 0 R/FitH 496]/Next 2492 0 R/Parent 2324 0 R/Prev 2494 0 R/Title(9.2.3.30 RIM Transfer)>> endobj 2494 0 obj <</Dest[1086 0 R/FitH 671]/Next 2493 0 R/Parent 2324 0 R/Prev 2495 0 R/Title(9.2.3.29 Accuracy Fulfilment Indicator)>> endobj 2495 0 obj <</Dest[1084 0 R/FitH 119]/Next 2494 0 R/Parent 2324 0 R/Prev 2496 0 R/Title(9.2.3.28 Position Data Specific To GERAN Iu Mode)>> endobj 2496 0 obj <</Dest[1080 0 R/FitH 233]/Next 2495 0 R/Parent 2324 0 R/Prev 2497 0 R/Title(9.2.3.27 Position Data)>> endobj 2497 0 obj <</Dest[1080 0 R/FitH 471]/Next 2496 0 R/Parent 2324 0 R/Prev 2498 0 R/Title(9.2.3.26 Location Related Data Request Type Specific To GERAN Iu Mode)>> endobj 2498 0 obj <</Dest[1080 0 R/FitH 584]/Next 2497 0 R/Parent 2324 0 R/Prev 2499 0 R/Title(9.2.3.25 SNAC)>> endobj 2499 0 obj <</Dest[1078 0 R/FitH 126]/Next 2498 0 R/Parent 2324 0 R/Prev 2500 0 R/Title(9.2.3.24 SNA Access Information)>> endobj 2500 0 obj <</Dest[1078 0 R/FitH 409]/Next 2499 0 R/Parent 2324 0 R/Prev 2501 0 R/Title(9.2.3.23 Shared Network Information)>> endobj 2501 0 obj <</Dest[1078 0 R/FitH 617]/Next 2500 0 R/Parent 2324 0 R/Prev 2502 0 R/Title(9.2.3.22 Last Known Service Area)>> endobj 2502 0 obj <</Dest[1078 0 R/FitH 772]/Next 2501 0 R/Parent 2324 0 R/Prev 2503 0 R/Title(9.2.3.21 Requested GPS Assistance Data)>> endobj 2503 0 obj <</Dest[1076 0 R/FitH 286]/Next 2502 0 R/Parent 2324 0 R/Prev 2504 0 R/Title(9.2.3.20 Broadcast Assistance Data Deciphering keys)>> endobj 2504 0 obj <</Dest[1074 0 R/FitH 306]/Next 2503 0 R/Parent 2324 0 R/Prev 2505 0 R/Title(9.2.3.19 Location Related Data Request Type)>> endobj 2505 0 obj <</Dest[1074 0 R/FitH 450]/Next 2504 0 R/Parent 2324 0 R/Prev 2506 0 R/Title(9.2.3.18 NAS Synchronisation Indicator)>> endobj 2506 0 obj <</Dest[1074 0 R/FitH 499]/Next 2505 0 R/Parent 2324 0 R/Prev 2507 0 R/Title(9.2.3.17 CN Broadcast Area)>> endobj 2507 0 obj <</Dest[1074 0 R/FitH 549]/Next 2506 0 R/Parent 2324 0 R/Prev 2508 0 R/Title(9.2.3.16 Information Control)>> endobj 2508 0 obj <</Dest[1074 0 R/FitH 598]/Next 2507 0 R/Parent 2324 0 R/Prev 2509 0 R/Title(9.2.3.15 Information Priority)>> endobj 2509 0 obj <</Dest[1074 0 R/FitH 647]/Next 2508 0 R/Parent 2324 0 R/Prev 2510 0 R/Title(9.2.3.14 Information Identity)>> endobj 2510 0 obj <</Dest[1074 0 R/FitH 772]/Next 2509 0 R/Parent 2324 0 R/Prev 2511 0 R/Title(9.2.3.13 Data Volume Reference)>> endobj 2511 0 obj <</Dest[1072 0 R/FitH 216]/Next 2510 0 R/Parent 2324 0 R/Prev 2512 0 R/Title(9.2.3.12 Unsuccessfully Transmitted Data Volume)>> endobj 2512 0 obj <</Dest[1066 0 R/FitH 291]/Next 2511 0 R/Parent 2324 0 R/Prev 2513 0 R/Title(9.2.3.11 Geographical Area)>> endobj 2513 0 obj <</Dest[1066 0 R/FitH 449]/Next 2512 0 R/Parent 2324 0 R/Prev 2514 0 R/Title(9.2.3.10 Area Identity)>> endobj 2514 0 obj <</Dest[1066 0 R/FitH 648]/Next 2513 0 R/Parent 2324 0 R/Prev 2515 0 R/Title(9.2.3.9 SAI)>> endobj 2515 0 obj <</Dest[1066 0 R/FitH 772]/Next 2514 0 R/Parent 2324 0 R/Prev 2516 0 R/Title(9.2.3.8 SAPI)>> endobj 2516 0 obj <</Dest[1064 0 R/FitH 186]/Next 2515 0 R/Parent 2324 0 R/Prev 2517 0 R/Title(9.2.3.7 RAC)>> endobj 2517 0 obj <</Dest[1064 0 R/FitH 320]/Next 2516 0 R/Parent 2324 0 R/Prev 2518 0 R/Title(9.2.3.6 LAI)>> endobj 2518 0 obj <</Dest[1064 0 R/FitH 456]/Next 2517 0 R/Parent 2324 0 R/Prev 2519 0 R/Title(9.2.3.5 NAS PDU)>> endobj 2519 0 obj <</Dest[1064 0 R/FitH 505]/Next 2518 0 R/Parent 2324 0 R/Prev 2520 0 R/Title(9.2.3.4 NAS Broadcast Information)>> endobj 2520 0 obj <</Dest[1062 0 R/FitH 286]/Next 2519 0 R/Parent 2324 0 R/Prev 2521 0 R/Title(9.2.3.3 Paging Cause)>> endobj 2521 0 obj <</Dest[1062 0 R/FitH 473]/Next 2520 0 R/Parent 2324 0 R/Prev 2325 0 R/Title(9.2.3.2 Temporary UE ID)>> endobj 2522 0 obj <</Dest[1368 0 R/FitH 406]/Next 2321 0 R/Parent 2319 0 R/Prev 2523 0 R/Title(9.3.6 Constant Definitions)>> endobj 2523 0 obj <</Dest[1366 0 R/FitH 242]/Next 2522 0 R/Parent 2319 0 R/Prev 2524 0 R/Title(9.3.5 Common Definitions)>> endobj 2524 0 obj <</Dest[1266 0 R/FitH 216]/Next 2523 0 R/Parent 2319 0 R/Prev 2525 0 R/Title(9.3.4 Information Element Definitions)>> endobj 2525 0 obj <</Dest[1132 0 R/FitH 324]/Next 2524 0 R/Parent 2319 0 R/Prev 2526 0 R/Title(9.3.3 PDU Definitions)>> endobj 2526 0 obj <</Dest[1108 0 R/FitH 82]/Next 2525 0 R/Parent 2319 0 R/Prev 2527 0 R/Title(9.3.2 Elementary Procedure Definitions)>> endobj 2527 0 obj <</Dest[1108 0 R/FitH 207]/Next 2526 0 R/Parent 2319 0 R/Prev 2320 0 R/Title(9.3.1 Usage of private message mechanism for non-standard use)>> endobj 2528 0 obj <</Dest[804 0 R/FitH 637]/Next 2613 0 R/Parent 2072 0 R/Title(9.1.1 General)>> endobj 2529 0 obj <</Dest[910 0 R/FitH 613]/Parent 2072 0 R/Prev 2530 0 R/Title(9.1.86 UE RADIO CAPABILITY MATCH RESPONSE)>> endobj 2530 0 obj <</Dest[910 0 R/FitH 772]/Next 2529 0 R/Parent 2072 0 R/Prev 2531 0 R/Title(9.1.85 UE RADIO CAPABILITY MATCH REQUEST)>> endobj 2531 0 obj <</Dest[908 0 R/FitH 257]/Next 2530 0 R/Parent 2072 0 R/Prev 2532 0 R/Title(9.1.84 SRVCC CS KEYS RESPONSE)>> endobj 2532 0 obj <</Dest[908 0 R/FitH 403]/Next 2531 0 R/Parent 2072 0 R/Prev 2533 0 R/Title(9.1.83 SRVCC CS KEYS REQUEST)>> endobj 2533 0 obj <</Dest[906 0 R/FitH 181]/Next 2532 0 R/Parent 2072 0 R/Prev 2534 0 R/Title(9.1.82 RANAP ENHANCED RELOCATION INFORMATION RESPONSE)>> endobj 2534 0 obj <</Dest[902 0 R/FitH 497]/Next 2533 0 R/Parent 2072 0 R/Prev 2535 0 R/Title(9.1.81 RANAP ENHANCED RELOCATION INFORMATION REQUEST)>> endobj 2535 0 obj <</Dest[902 0 R/FitH 772]/Next 2534 0 R/Parent 2072 0 R/Prev 2536 0 R/Title(9.1.80 ENHANCED RELOCATION COMPLETE CONFIRM)>> endobj 2536 0 obj <</Dest[900 0 R/FitH 257]/Next 2535 0 R/Parent 2072 0 R/Prev 2537 0 R/Title(9.1.79 ENHANCED RELOCATION COMPLETE FAILURE)>> endobj 2537 0 obj <</Dest[898 0 R/FitH 263]/Next 2536 0 R/Parent 2072 0 R/Prev 2538 0 R/Title(9.1.78 ENHANCED RELOCATION COMPLETE RESPONSE)>> endobj 2538 0 obj <</Dest[894 0 R/FitH 424]/Next 2537 0 R/Parent 2072 0 R/Prev 2539 0 R/Title(9.1.77 ENHANCED RELOCATION COMPLETE REQUEST)>> endobj 2539 0 obj <</Dest[894 0 R/FitH 604]/Next 2538 0 R/Parent 2072 0 R/Prev 2540 0 R/Title(9.1.76 MBMS RAB RELEASE FAILURE)>> endobj 2540 0 obj <</Dest[894 0 R/FitH 772]/Next 2539 0 R/Parent 2072 0 R/Prev 2541 0 R/Title(9.1.75 MBMS RAB RELEASE)>> endobj 2541 0 obj <</Dest[892 0 R/FitH 250]/Next 2540 0 R/Parent 2072 0 R/Prev 2542 0 R/Title(9.1.74 MBMS RAB RELEASE REQUEST)>> endobj 2542 0 obj <</Dest[892 0 R/FitH 451]/Next 2541 0 R/Parent 2072 0 R/Prev 2543 0 R/Title(9.1.73 MBMS RAB ESTABLISHMENT INDICATION)>> endobj 2543 0 obj <</Dest[890 0 R/FitH 310]/Next 2542 0 R/Parent 2072 0 R/Prev 2544 0 R/Title(9.1.72 MBMS CN DE-REGISTRATION RESPONSE)>> endobj 2544 0 obj <</Dest[890 0 R/FitH 478]/Next 2543 0 R/Parent 2072 0 R/Prev 2545 0 R/Title(9.1.71 MBMS CN DE-REGISTRATION REQUEST)>> endobj 2545 0 obj <</Dest[890 0 R/FitH 680]/Next 2544 0 R/Parent 2072 0 R/Prev 2546 0 R/Title(9.1.70 MBMS REGISTRATION FAILURE)>> endobj 2546 0 obj <</Dest[888 0 R/FitH 211]/Next 2545 0 R/Parent 2072 0 R/Prev 2547 0 R/Title(9.1.69 MBMS REGISTRATION RESPONSE)>> endobj 2547 0 obj <</Dest[888 0 R/FitH 713]/Next 2546 0 R/Parent 2072 0 R/Prev 2548 0 R/Title(9.1.68 MBMS REGISTRATION REQUEST)>> endobj 2548 0 obj <</Dest[886 0 R/FitH 342]/Next 2547 0 R/Parent 2072 0 R/Prev 2549 0 R/Title(9.1.67 MBMS UE LINKING RESPONSE)>> endobj 2549 0 obj <</Dest[886 0 R/FitH 772]/Next 2548 0 R/Parent 2072 0 R/Prev 2550 0 R/Title(9.1.66 MBMS UE LINKING REQUEST)>> endobj 2550 0 obj <</Dest[884 0 R/FitH 240]/Next 2549 0 R/Parent 2072 0 R/Prev 2551 0 R/Title(9.1.65 MBMS SESSION STOP RESPONSE)>> endobj 2551 0 obj <</Dest[884 0 R/FitH 396]/Next 2550 0 R/Parent 2072 0 R/Prev 2552 0 R/Title(9.1.64 MBMS SESSION STOP)>> endobj 2552 0 obj <</Dest[884 0 R/FitH 586]/Next 2551 0 R/Parent 2072 0 R/Prev 2553 0 R/Title(9.1.63 MBMS SESSION UPDATE FAILURE)>> endobj 2553 0 obj <</Dest[882 0 R/FitH 229]/Next 2552 0 R/Parent 2072 0 R/Prev 2554 0 R/Title(9.1.62 MBMS SESSION UPDATE RESPONSE)>> endobj 2554 0 obj <</Dest[882 0 R/FitH 418]/Next 2553 0 R/Parent 2072 0 R/Prev 2555 0 R/Title(9.1.61 MBMS SESSION UPDATE)>> endobj 2555 0 obj <</Dest[882 0 R/FitH 597]/Next 2554 0 R/Parent 2072 0 R/Prev 2556 0 R/Title(9.1.60 MBMS SESSION START FAILURE)>> endobj 2556 0 obj <</Dest[880 0 R/FitH 237]/Next 2555 0 R/Parent 2072 0 R/Prev 2557 0 R/Title(9.1.59 MBMS SESSION START RESPONSE)>> endobj 2557 0 obj <</Dest[878 0 R/FitH 616]/Next 2556 0 R/Parent 2072 0 R/Prev 2558 0 R/Title(9.1.58 MBMS SESSION START)>> endobj 2558 0 obj <</Dest[876 0 R/FitH 124]/Next 2557 0 R/Parent 2072 0 R/Prev 2559 0 R/Title(9.1.57 UPLINK INFORMATION EXCHANGE FAILURE)>> endobj 2559 0 obj <</Dest[876 0 R/FitH 335]/Next 2558 0 R/Parent 2072 0 R/Prev 2560 0 R/Title(9.1.56 UPLINK INFORMATION EXCHANGE RESPONSE)>> endobj 2560 0 obj <</Dest[874 0 R/FitH 242]/Next 2559 0 R/Parent 2072 0 R/Prev 2561 0 R/Title(9.1.55 UPLINK INFORMATION EXCHANGE REQUEST)>> endobj 2561 0 obj <</Dest[874 0 R/FitH 660]/Next 2560 0 R/Parent 2072 0 R/Prev 2562 0 R/Title(9.1.54 DIRECT INFORMATION TRANSFER)>> endobj 2562 0 obj <</Dest[872 0 R/FitH 114]/Next 2561 0 R/Parent 2072 0 R/Prev 2563 0 R/Title(9.1.53 UE SPECIFIC INFORMATION INDICATION)>> endobj 2563 0 obj <</Dest[872 0 R/FitH 451]/Next 2562 0 R/Parent 2072 0 R/Prev 2564 0 R/Title(9.1.52 INFORMATION TRANSFER FAILURE)>> endobj 2564 0 obj <</Dest[870 0 R/FitH 186]/Next 2563 0 R/Parent 2072 0 R/Prev 2565 0 R/Title(9.1.51 INFORMATION TRANSFER CONFIRMATION)>> endobj 2565 0 obj <</Dest[870 0 R/FitH 375]/Next 2564 0 R/Parent 2072 0 R/Prev 2566 0 R/Title(9.1.50 INFORMATION TRANSFER INDICATION)>> endobj 2566 0 obj <</Dest[870 0 R/FitH 555]/Next 2565 0 R/Parent 2072 0 R/Prev 2567 0 R/Title(9.1.49 LOCATION RELATED DATA FAILURE)>> endobj 2567 0 obj <</Dest[868 0 R/FitH 103]/Next 2566 0 R/Parent 2072 0 R/Prev 2568 0 R/Title(9.1.48 LOCATION RELATED DATA RESPONSE)>> endobj 2568 0 obj <</Dest[868 0 R/FitH 471]/Next 2567 0 R/Parent 2072 0 R/Prev 2569 0 R/Title(9.1.47 LOCATION RELATED DATA REQUEST)>> endobj 2569 0 obj <</Dest[866 0 R/FitH 189]/Next 2568 0 R/Parent 2072 0 R/Prev 2570 0 R/Title(9.1.46 RAB MODIFY REQUEST)>> endobj 2570 0 obj <</Dest[866 0 R/FitH 765]/Next 2569 0 R/Parent 2072 0 R/Prev 2571 0 R/Title(9.1.45 RESET RESOURCE ACKNOWLEDGE)>> endobj 2571 0 obj <</Dest[862 0 R/FitH 300]/Next 2570 0 R/Parent 2072 0 R/Prev 2572 0 R/Title(9.1.44 RESET RESOURCE)>> endobj 2572 0 obj <</Dest[856 0 R/FitH 231]/Next 2571 0 R/Parent 2072 0 R/Prev 2573 0 R/Title(9.1.43 RANAP RELOCATION INFORMATION)>> endobj 2573 0 obj <</Dest[856 0 R/FitH 451]/Next 2572 0 R/Parent 2072 0 R/Prev 2574 0 R/Title(9.1.42 CN DEACTIVATE TRACE)>> endobj 2574 0 obj <</Dest[854 0 R/FitH 374]/Next 2573 0 R/Parent 2072 0 R/Prev 2575 0 R/Title(9.1.41 ERROR INDICATION)>> endobj 2575 0 obj <</Dest[854 0 R/FitH 772]/Next 2574 0 R/Parent 2072 0 R/Prev 2576 0 R/Title(9.1.40 RESET ACKNOWLEDGE)>> endobj 2576 0 obj <</Dest[852 0 R/FitH 451]/Next 2575 0 R/Parent 2072 0 R/Prev 2577 0 R/Title(9.1.39 RESET)>> endobj 2577 0 obj <</Dest[850 0 R/FitH 303]/Next 2576 0 R/Parent 2072 0 R/Prev 2578 0 R/Title(9.1.38 OVERLOAD)>> endobj 2578 0 obj <</Dest[850 0 R/FitH 355]/Next 2577 0 R/Parent 2072 0 R/Prev 2579 0 R/Title(9.1.37 CN INFORMATION BROADCAST REJECT)>> endobj 2579 0 obj <</Dest[850 0 R/FitH 407]/Next 2578 0 R/Parent 2072 0 R/Prev 2580 0 R/Title(9.1.36 CN INFORMATION BROADCAST CONFIRM)>> endobj 2580 0 obj <</Dest[850 0 R/FitH 458]/Next 2579 0 R/Parent 2072 0 R/Prev 2581 0 R/Title(9.1.35 CN INFORMATION BROADCAST REQUEST)>> endobj 2581 0 obj <</Dest[848 0 R/FitH 204]/Next 2580 0 R/Parent 2072 0 R/Prev 2582 0 R/Title(9.1.34 DIRECT TRANSFER)>> endobj 2582 0 obj <</Dest[846 0 R/FitH 436]/Next 2581 0 R/Parent 2072 0 R/Prev 2583 0 R/Title(9.1.33 INITIAL UE MESSAGE)>> endobj 2583 0 obj <</Dest[844 0 R/FitH 219]/Next 2582 0 R/Parent 2072 0 R/Prev 2584 0 R/Title(9.1.32 DATA VOLUME REPORT)>> endobj 2584 0 obj <</Dest[844 0 R/FitH 461]/Next 2583 0 R/Parent 2072 0 R/Prev 2585 0 R/Title(9.1.31 DATA VOLUME REPORT REQUEST)>> endobj 2585 0 obj <</Dest[842 0 R/FitH 206]/Next 2584 0 R/Parent 2072 0 R/Prev 2586 0 R/Title(9.1.30 LOCATION REPORT)>> endobj 2586 0 obj <</Dest[842 0 R/FitH 427]/Next 2585 0 R/Parent 2072 0 R/Prev 2587 0 R/Title(9.1.29 LOCATION REPORTING CONTROL)>> endobj 2587 0 obj <</Dest[842 0 R/FitH 618]/Next 2586 0 R/Parent 2072 0 R/Prev 2588 0 R/Title(9.1.28 SECURITY MODE REJECT)>> endobj 2588 0 obj <</Dest[840 0 R/FitH 95]/Next 2587 0 R/Parent 2072 0 R/Prev 2589 0 R/Title(9.1.27 SECURITY MODE COMPLETE)>> endobj 2589 0 obj <</Dest[840 0 R/FitH 377]/Next 2588 0 R/Parent 2072 0 R/Prev 2590 0 R/Title(9.1.26 SECURITY MODE COMMAND)>> endobj 2590 0 obj <</Dest[838 0 R/FitH 468]/Next 2589 0 R/Parent 2072 0 R/Prev 2591 0 R/Title(9.1.25 CN INVOKE TRACE)>> endobj 2591 0 obj <</Dest[836 0 R/FitH 183]/Next 2590 0 R/Parent 2072 0 R/Prev 2592 0 R/Title(9.1.24 COMMON ID)>> endobj 2592 0 obj <</Dest[836 0 R/FitH 500]/Next 2591 0 R/Parent 2072 0 R/Prev 2593 0 R/Title(9.1.23 PAGING)>> endobj 2593 0 obj <</Dest[834 0 R/FitH 171]/Next 2592 0 R/Parent 2072 0 R/Prev 2594 0 R/Title(9.1.22 FORWARD SRNS CONTEXT)>> endobj 2594 0 obj <</Dest[834 0 R/FitH 467]/Next 2593 0 R/Parent 2072 0 R/Prev 2595 0 R/Title(9.1.21 SRNS DATA FORWARD COMMAND)>> endobj 2595 0 obj <</Dest[832 0 R/FitH 192]/Next 2594 0 R/Parent 2072 0 R/Prev 2596 0 R/Title(9.1.20 SRNS CONTEXT RESPONSE)>> endobj 2596 0 obj <</Dest[832 0 R/FitH 457]/Next 2595 0 R/Parent 2072 0 R/Prev 2597 0 R/Title(9.1.19 SRNS CONTEXT REQUEST)>> endobj 2597 0 obj <</Dest[832 0 R/FitH 614]/Next 2596 0 R/Parent 2072 0 R/Prev 2598 0 R/Title(9.1.18 RELOCATION CANCEL ACKNOWLEDGE)>> endobj 2598 0 obj <</Dest[832 0 R/FitH 772]/Next 2597 0 R/Parent 2072 0 R/Prev 2599 0 R/Title(9.1.17 RELOCATION CANCEL)>> endobj 2599 0 obj <</Dest[830 0 R/FitH 279]/Next 2598 0 R/Parent 2072 0 R/Prev 2600 0 R/Title(9.1.16 RELOCATION FAILURE)>> endobj 2600 0 obj <</Dest[830 0 R/FitH 468]/Next 2599 0 R/Parent 2072 0 R/Prev 2601 0 R/Title(9.1.15 RELOCATION PREPARATION FAILURE)>> endobj 2601 0 obj <</Dest[830 0 R/FitH 772]/Next 2600 0 R/Parent 2072 0 R/Prev 2602 0 R/Title(9.1.14 RELOCATION COMPLETE)>> endobj 2602 0 obj <</Dest[828 0 R/FitH 232]/Next 2601 0 R/Parent 2072 0 R/Prev 2603 0 R/Title(9.1.13 RELOCATION DETECT)>> endobj 2603 0 obj <</Dest[828 0 R/FitH 772]/Next 2602 0 R/Parent 2072 0 R/Prev 2604 0 R/Title(9.1.12 RELOCATION COMMAND)>> endobj 2604 0 obj <</Dest[824 0 R/FitH 218]/Next 2603 0 R/Parent 2072 0 R/Prev 2605 0 R/Title(9.1.11 RELOCATION REQUEST ACKNOWLEDGE)>> endobj 2605 0 obj <</Dest[820 0 R/FitH 279]/Next 2604 0 R/Parent 2072 0 R/Prev 2606 0 R/Title(9.1.10 RELOCATION REQUEST)>> endobj 2606 0 obj <</Dest[818 0 R/FitH 404]/Next 2605 0 R/Parent 2072 0 R/Prev 2607 0 R/Title(9.1.9 RELOCATION REQUIRED)>> endobj 2607 0 obj <</Dest[816 0 R/FitH 439]/Next 2606 0 R/Parent 2072 0 R/Prev 2608 0 R/Title(9.1.8 IU RELEASE COMPLETE)>> endobj 2608 0 obj <</Dest[816 0 R/FitH 701]/Next 2607 0 R/Parent 2072 0 R/Prev 2609 0 R/Title(9.1.7 IU RELEASE COMMAND)>> endobj 2609 0 obj <</Dest[814 0 R/FitH 197]/Next 2608 0 R/Parent 2072 0 R/Prev 2610 0 R/Title(9.1.6 IU RELEASE REQUEST)>> endobj 2610 0 obj <</Dest[814 0 R/FitH 451]/Next 2609 0 R/Parent 2072 0 R/Prev 2611 0 R/Title(9.1.5 RAB RELEASE REQUEST)>> endobj 2611 0 obj <</Dest[810 0 R/FitH 368]/Next 2610 0 R/Parent 2072 0 R/Prev 2612 0 R/Title(9.1.4 RAB ASSIGNMENT RESPONSE)>> endobj 2612 0 obj <</Dest[806 0 R/FitH 296]/Next 2611 0 R/Parent 2072 0 R/Prev 2613 0 R/Title(9.1.3 RAB ASSIGNMENT REQUEST)>> endobj 2613 0 obj <</Count -4/Dest[806 0 R/FitH 765]/First 2614 0 R/Last 2615 0 R/Next 2612 0 R/Parent 2072 0 R/Prev 2528 0 R/Title(9.1.2 Message Contents)>> endobj 2614 0 obj <</Dest[806 0 R/FitH 734]/Next 2617 0 R/Parent 2613 0 R/Title(9.1.2.1 Presence)>> endobj 2615 0 obj <</Dest[806 0 R/FitH 346]/Parent 2613 0 R/Prev 2616 0 R/Title(9.1.2.4 Assigned Criticality)>> endobj 2616 0 obj <</Dest[806 0 R/FitH 395]/Next 2615 0 R/Parent 2613 0 R/Prev 2617 0 R/Title(9.1.2.3 Range)>> endobj 2617 0 obj <</Dest[806 0 R/FitH 575]/Next 2616 0 R/Parent 2613 0 R/Prev 2614 0 R/Title(9.1.2.2 Criticality)>> endobj 2618 0 obj <</Dest[1404 0 R/FitH 458]/Next 2070 0 R/Parent 2068 0 R/Prev 2619 0 R/Title(10.4 Logical Error)>> endobj 2619 0 obj <</Count -6/Dest[1396 0 R/FitH 771]/First 2620 0 R/Last 2621 0 R/Next 2618 0 R/Parent 2068 0 R/Prev 2622 0 R/Title(10.3 Abstract Syntax Error)>> endobj 2620 0 obj <</Dest[1396 0 R/FitH 738]/Next 2628 0 R/Parent 2619 0 R/Title(10.3.1 General)>> endobj 2621 0 obj <</Dest[1404 0 R/FitH 772]/Parent 2619 0 R/Prev 2623 0 R/Title(10.3.6 IEs or IE groups received in wrong order or with too many occurrences or erroneously present)>> endobj 2622 0 obj <</Dest[1394 0 R/FitH 276]/Next 2619 0 R/Parent 2068 0 R/Prev 2069 0 R/Title(10.2 Transfer Syntax Error)>> endobj 2623 0 obj <</Dest[1402 0 R/FitH 772]/Next 2621 0 R/Parent 2619 0 R/Prev 2624 0 R/Title(10.3.5 Missing IE or IE group)>> endobj 2624 0 obj <</Count -3/Dest[1398 0 R/FitH 516]/First 2625 0 R/Last 2626 0 R/Next 2623 0 R/Parent 2619 0 R/Prev 2627 0 R/Title(10.3.4 Not comprehended IE/IE group)>> endobj 2625 0 obj <</Dest[1398 0 R/FitH 485]/Next 2629 0 R/Parent 2624 0 R/Title(10.3.4.1 Procedure Code)>> endobj 2626 0 obj <</Dest[1398 0 R/FitH 163]/Parent 2624 0 R/Prev 2629 0 R/Title(10.3.4.2 IEs other than the Procedure Code and Type of Message)>> endobj 2627 0 obj <</Dest[1398 0 R/FitH 772]/Next 2624 0 R/Parent 2619 0 R/Prev 2628 0 R/Title(10.3.3 Presence Information)>> endobj 2628 0 obj <</Dest[1396 0 R/FitH 416]/Next 2627 0 R/Parent 2619 0 R/Prev 2620 0 R/Title(10.3.2 Criticality Information)>> endobj 2629 0 obj <</Dest[1398 0 R/FitH 224]/Next 2626 0 R/Parent 2624 0 R/Prev 2625 0 R/Title(10.3.4.1A Type of Message)>> endobj 2630 0 obj <</Dest[1408 0 R/FitH 235]/Next 2631 0 R/Parent 2067 0 R/Title(11.3.1 General)>> endobj 2631 0 obj <</Dest[1408 0 R/FitH 160]/Parent 2067 0 R/Prev 2630 0 R/Title(11.3.2 Operation)>> endobj 2632 0 obj <</Count -2/Dest[1406 0 R/FitH 321]/First 2633 0 R/Last 2634 0 R/Next 2067 0 R/Parent 2065 0 R/Prev 2066 0 R/Title(11.2 RANAP Relocation Information)>> endobj 2633 0 obj <</Dest[1406 0 R/FitH 287]/Next 2634 0 R/Parent 2632 0 R/Title(11.2.1 General)>> endobj 2634 0 obj <</Dest[1406 0 R/FitH 224]/Parent 2632 0 R/Prev 2633 0 R/Title(11.2.2 Operation)>> endobj 2635 0 obj <</Dest[1418 0 R/FitH 424]/Next 2640 0 R/Parent 2064 0 R/Title(A.2.1 EXAMPLE MESSAGE Layout)>> endobj 2636 0 obj <</Dest[1432 0 R/FitH 762]/Parent 2064 0 R/Prev 2637 0 R/Title(A.2.4 ASN.1 of EXAMPLE MESSAGE)>> endobj 2637 0 obj <</Count -5/Dest[1422 0 R/FitH 762]/First 2638 0 R/Last 2639 0 R/Next 2636 0 R/Parent 2064 0 R/Prev 2640 0 R/Title(A.2.3 Content of Criticality Diagnostics)>> endobj 2638 0 obj <</Dest[1422 0 R/FitH 729]/Next 2643 0 R/Parent 2637 0 R/Title(A.2.3.1 Example 1)>> endobj 2639 0 obj <</Dest[1430 0 R/FitH 765]/Parent 2637 0 R/Prev 2641 0 R/Title(A.2.3.5 Example 5)>> endobj 2640 0 obj <</Dest[1420 0 R/FitH 742]/Next 2637 0 R/Parent 2064 0 R/Prev 2635 0 R/Title(A.2.2 Example on a Received EXAMPLE MESSAGE)>> endobj 2641 0 obj <</Dest[1428 0 R/FitH 765]/Next 2639 0 R/Parent 2637 0 R/Prev 2642 0 R/Title(A.2.3.4 Example 4)>> endobj 2642 0 obj <</Dest[1426 0 R/FitH 765]/Next 2641 0 R/Parent 2637 0 R/Prev 2643 0 R/Title(A.2.3.3 Example 3)>> endobj 2643 0 obj <</Dest[1424 0 R/FitH 765]/Next 2642 0 R/Parent 2637 0 R/Prev 2638 0 R/Title(A.2.3.2 Example 2)>> endobj 2644 0 obj <</Dest[1418 0 R/FitH 653]/Parent 2063 0 R/Title(A.1.1 Rules for RANAP messages that shall contain the CN Domain Indicator IE)>> endobj 1 0 obj <</Annots[2 0 R 3 0 R 4 0 R]/Contents 5 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 2 0 obj <</A<</S/URI/URI(http://www.etsi.org/standards-search)>>/Border[0 0 0]/Rect[218 348 366 360]/Subtype/Link/Type/Annot>> endobj 3 0 obj <</A<</S/URI/URI(http://portal.etsi.org/tb/status/status.asp)>>/Border[0 0 0]/Rect[209 253.2 374 264]/Subtype/Link/Type/Annot>> endobj 4 0 obj <</A<</S/URI/URI(https://portal.etsi.org/People/CommiteeSupportStaff.aspx)>>/Border[0 0 0]/Rect[173 219 410 231]/Subtype/Link/Type/Annot>> endobj 5 0 obj <</Filter/FlateDecode/Length 3396>>stream
+H‰¤WY“ÛÆþ+ý$"8.½ÉòJµ9T/<X©–.a“€–¥_Ÿ>¹«ÃN±Š
+XØDiC¥øSôÚTD[þoÑ<EF×´"÷0˜¨Ë<1²"KJ£Á(ì
+Ñ¥ð¬bí¢û%ZaÂ}ì"Š:½\(kR§-\Ek§(ÂbØ<fIè:×q39ZNXÍRÌ]1hýkœEìúGJŇXQÓnº'§:qê[Öª|ê1¶>C¡ÈœEiƒîÿ[~ƒ~.ÌÌ™ÐC9o.Ö"'/,¤©Ec‘7+òåþ#˜ÍäÍòáÌ|ôëøýdx¥Vc5 b³”à›G ùLyécÄ<lèÖãZÇpÿÛykBÿžžxžÅ VXŽºµ&Ý —¸TÃB'šÜ$8¾Y¨¬4\=pßœèfÇ5UÁ«XçÑ‘úš_4\M5¼Êk#Úñî·Ø Dð†àóêþÑG7O0CV)‰Åe”-&.s£Æ(GÃä"lPEêœú6®zZ«‚>/c*;*å@a;+‹‹@a} Ãûä%ü?'Ÿ”†oJŽ®¨MA*x~yC{+ ‹^r±± Þ¥ËRyÎAgS¥M¡Ê±†¸C·“G®(çæ]vÍΖ=Âx˜\<²âÑ}Ýú‹Þ!ÔÞ› +¼ŒÀº‚Æ%d†.d\¥ò€î)ºêœW¼ñÕÎzN+hàk~bãÉ¥Áã‚*)rËv˜ÙW\=UþaŒš5_j\Ï£ªŸ=4üéÞ[§àÎ=m„#? ï÷üõYä´r¶|a¼|Íÿò‘äQÆõ3ïmªù½DK5yz!GÝ·*1¶¸ zsŽow-‹Äç­4¼[Ǭ´ˆÎ-?ÃF.oã`eTÅS¸
+²%"x© i
+" Œ)¦(u××ÇG Q¨|Ë4Ó×’ù´½z»åĶR¯ò VŽÄ¤‘L‡„w¡aölaî8÷ë]@ ê.$%µY6Œ´A0CD¾˜cLöí?2ûEÀ±Pl R¾Wx MGh,ëêwÒS&â\L±£Ð!Iϲ‹-µ0Aû©ûÜ5mÏGÍ9vÒ-|˜‰3é7¬Ÿz
+¡Þ4í7àc„süŽ>F²½C“âs.lÀà/þ4î ÇQE¯ynOõvhu¨áè%èlAû‹„‚á.òa¨”¸«EÜ
+ÛÀQŒ& lB“ôAy˜„ÛfÏÜIh,õýη‚~ä»ÏRØ|–ò¢cN6eœ³ƒi?É,í«=g™¬Ô¶b´¤|yçî`{¿|ëb0_ú’÷÷ ó‰?A
+LÞÛŒgG¢.¨õôåwÁVD21ãGqï#HFèÁ)*È7uNo–½+Œƒ<«a,iã94Æ 1ê >(ö¼§,Ct»T¼«‰”$u9Ûwz<<£Ãa탟²<öHq³ßÞªøÌÚ:ˇ’')buãÊ¢»iïáq¶¤“4³ Í*çÇRDþÇÎ*Ô j
+endstream endobj 6 0 obj <</Annots[7 0 R 8 0 R 9 0 R]/Contents 10 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1464 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 7 0 obj <</A<</S/URI/URI(http://webapp.etsi.org/IPR/home.asp)>>/Border[0 0 0]/Rect[88 667 156 679]/Subtype/Link/Type/Annot>> endobj 8 0 obj <</A<</S/URI/URI(http://webapp.etsi.org/key/queryform.asp)>>/Border[0 0 0]/Rect[56 493 224 505]/Subtype/Link/Type/Annot>> endobj 9 0 obj <</A<</S/URI/URI(http://portal.etsi.org/Help/editHelp!/Howtostart/ETSIDraftingRules.aspx)>>/Border[0 0 0]/Rect[310 414 394 426]/Subtype/Link/Type/Annot>> endobj 10 0 obj <</Filter/FlateDecode/Length 3129>>stream
+H‰¬W[oÛÈþ+ƒ<‘€Åp†3¼lßMݵÕæ¡)
+šblneÉ+Rvýï{¾sf†”£$^ 0L ‡ç~??¯U·;õþãM®îFõ~­ÿ+­Ö_T“å¹3 Ð(WfežªjtV˜¼T땨tý+chÁÈ Ÿ:e\VZÕ.«u¡Ö•|Xß\2‡µúM͈xUKè¦Ît©tNÄÕ¡WŸÔNý¼^JÚÆ‚ö*°y>QHzM.2þSø®oˆEªMâ”Õø-Ô?ä"Kub³\}NR]&&]é$ǽÆÉ¥ÿZÿÿDvÆdeE.¾+-=5 c¿’.Yyƒ}·¤¯MÖüÐ"Eu†‘;Ã(·ŸÓ/Ó8Ø;ðrôü}ê×\ÌRŠ˜Y™ªy‹Ýìßê+ÿ.Cpvoñ1­“«+x˜·ìºB=á·‡ ©KF†ýN¥ºHÈ®68>W×ô™á¶}‹Û±Wfö¼—ÓˆœQº.Šü¬tåšDƒ ºž%-èÞI/wS¿ÝöÝtl·êê°ìSºj’H¥ÒU•\w÷Ó¨k'>rUV­lm³ZéÌZðK«XxˆjÄpMéJ1Â(J¤½F‰Ò•M®Hû<¹U?Žý.]•É4€{œ
+Ž—x
+Œ(_ãq“®ŒEØ‘Ìêô1uòpË—=[Wl<
+
+Ïk°¢R¾kûSŒ,ˆíf±ç¨ÙÔuVVAôw°ñ%̶›P׶)ÜH‡¯TvèI•¥âC?¸~Q×ýPåáJIáƒVh’Ë«k¼QÛ —?¨xÁŸBXp³¸ ÀQ{ÐT{fþ5 þ_ûM´<{µÛ‡ï_ü/6
+·ûaB¶,)…¾í@cá3[«`¯°¹–>9x1ÀìÙ)ÆR{°‹´Go¬v·i±SŠ¾wçâŠê¿¯â êyµqst=£Üß¡ÃyÛ÷’ó°æ<4É@I¸åÀË9†9úP| ™†»p{‰£ÞôÝ¡ŸÚÃÐN™ú ‚¨zÒÂÊ#TÜøkÕRŽžÙ~q¦×„?qݺ£®æ¡§’§°•WqiV+.5•å"™ß]ì´JLžÒP]LÆ"Ë Ì…:<MÜ8~zÿ~ÄQ÷¦ÂÖOãíãÝ]hœu™ÕV•eMÓ†Ve•å5‰këØ8ç±÷Ôw/¯›§vEÖ`°,Ë&«ëÐ=?§'ñÂ2®–© [¦É*²ÑÊd@‚BW¾Šp€ßÉ·Gø¼A" Àòs/”ù|¦‹ñ@}€×\øв¨bðSh^s½”³ o=;;¦ÏsÆû`çé€Øñù‰YŒÜ['A¤ÇºcÏw‚»JÇ%50©„åqÃáÎwÂïDÜ‘9¶x°-˜@T–-#<îfDW×þk/C¡èN©ðƒåd@E‰Ì0»ù6Ì.Å«fÌõ¯~*úÝqfÀ'ñU¥Z”œ¢|5ÃÊ`Lh*(ZÔUîp@Ñz¡çž'Û‘'®p¨g“·LŽ9à¿‚Æ&ª¸(-P;>ö¨^h•\;15ÉE•+o….J·LžËÝ¡ÿ"#3õBªßHÙºê+-.n()/yΠCçÊ©sùöÁ¤j@ñƒúÃ"c/”`_1ùŠÏ¼"°uí×3ÖÈ åÖµÓþð9 ¨ä"(.:ö'Ž¨Ô±ÕT38¸ß㺓 €?€É…âB:ú©Só\0Ñ°&“/¼V+Ô)õx`ØžAÔfß=™ˆ—Ép;ŠYt”ržTÎ/®ÖYÍñ†Âô§ý¡G¤’Úù
+ïæÕNQæ´GÔ?Ü)`ï8Ó†ìübá•:J£4¶8÷yï»{?= Ô:²ÒÍcß _$ qÃæ Ùš/Š##߈ȗÀ¦%MšåmÏÆ$Ëî7Ê8\c!.› vSó@ª³RÇ®rË$_dãŒYóó]äRR¾`˜¿lø¬>út¯“?åc‹ã„b1„ŠACB•«ä£À1ÈqDhÜ3Ò£0ùºÿ•~ja×EdŒe¹‚¼‚Dc°²oo#+oƒE3
+»N%Ë™‹ËïØœœŒþa/ãèÏÆtŒ;Ý´Þ¢”Ñ_±‹„“¬aµATIX}£,GݼÃÈ^³È
+€Å¤äUÈÍŒEÐjÞ¬Fuô(ƒO±Ê¯W¾
+V¤ßÂ0‡ÕsŠ5W boòÛ2¢hB yÅ^õ¦RÕ$Ns¡²gâOuíÌbáMê=¾´¦:}]¤ë¹1ÝÆp>m¼§s:GÞs*ÇT)ÛÝ£/vå7æ÷2ÜÿøžjQ¤ëäýoœöÇxËà/ôê•bTRš
+³–a(tBÏ£¥lc3“k¥K—‘¯¼œÛ ÕÐÚR»³£É^ÚéByzÒ³ç,æ–4†ZQ|§•[Gfô—ý¦åàUOýá–RF©‡a·ßr·¹K„©!_Ÿ‡í³®–ÂÄ!ÀVô-Ë ŸD@ý½)Àš†²'ùÕlÇceÓŽgN?Ë–?¼‹úX‚Y›f©UQ˜ÐÎG, vrû6âÎ
+èŒᕕ’\ë€ÿî‚'ó\uœ$,«îÙÕÉvËkó[8Ú¬©Š7q4QMðbGªÐoc¢ËòmLª –+#+bó»tr?ö-ìL9+¥³Â6éLY˜E
+Ï'æ0®‰ MT!cUÕuƒÄÂ9|d¾g(
+endstream endobj 11 0 obj <</Annots[12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R]/Contents 62 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 12 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 777]/H/I/Rect[533 705.8 538 719]/Subtype/Link/Type/Annot>> endobj 13 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 621]/H/I/Rect[533 686.8 538 700]/Subtype/Link/Type/Annot>> endobj 14 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 490]/H/I/Rect[533 668.8 538 682]/Subtype/Link/Type/Annot>> endobj 15 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[619 0 R/FitH 777]/H/I/Rect[528 649.8 538 663]/Subtype/Link/Type/Annot>> endobj 16 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[621 0 R/FitH 777]/H/I/Rect[528 631.8 538 645]/Subtype/Link/Type/Annot>> endobj 17 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[621 0 R/FitH 676]/H/I/Rect[528 612.8 538 626]/Subtype/Link/Type/Annot>> endobj 18 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[625 0 R/FitH 209]/H/I/Rect[528 593.8 538 607]/Subtype/Link/Type/Annot>> endobj 19 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[625 0 R/FitH 163]/H/I/Rect[528 582 538 594]/Subtype/Link/Type/Annot>> endobj 20 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[631 0 R/FitH 527]/H/I/Rect[528 571 538 583]/Subtype/Link/Type/Annot>> endobj 21 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[631 0 R/FitH 471]/H/I/Rect[528 559 538 571]/Subtype/Link/Type/Annot>> endobj 22 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[635 0 R/FitH 699]/H/I/Rect[528 540.8 538 554]/Subtype/Link/Type/Annot>> endobj 23 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[635 0 R/FitH 654]/H/I/Rect[528 529 538 541]/Subtype/Link/Type/Annot>> endobj 24 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[635 0 R/FitH 327]/H/I/Rect[528 518 538 530]/Subtype/Link/Type/Annot>> endobj 25 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[635 0 R/FitH 247]/H/I/Rect[528 506 538 518]/Subtype/Link/Type/Annot>> endobj 26 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[637 0 R/FitH 734]/H/I/Rect[528 487.8 538 501]/Subtype/Link/Type/Annot>> endobj 27 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[637 0 R/FitH 447]/H/I/Rect[528 468.8 538 482]/Subtype/Link/Type/Annot>> endobj 28 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[637 0 R/FitH 282]/H/I/Rect[528 450.8 538 464]/Subtype/Link/Type/Annot>> endobj 29 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[641 0 R/FitH 713]/H/I/Rect[528 431.8 538 445]/Subtype/Link/Type/Annot>> endobj 30 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[641 0 R/FitH 668]/H/I/Rect[528 420 538 432]/Subtype/Link/Type/Annot>> endobj 31 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[643 0 R/FitH 300]/H/I/Rect[528 409 538 421]/Subtype/Link/Type/Annot>> endobj 32 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[643 0 R/FitH 264]/H/I/Rect[528 397 538 409]/Subtype/Link/Type/Annot>> endobj 33 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[645 0 R/FitH 786]/H/I/Rect[528 386 538 398]/Subtype/Link/Type/Annot>> endobj 34 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[660 0 R/FitH 734]/H/I/Rect[528 374 538 386]/Subtype/Link/Type/Annot>> endobj 35 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[660 0 R/FitH 565]/H/I/Rect[528 362 538 374]/Subtype/Link/Type/Annot>> endobj 36 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[660 0 R/FitH 513]/H/I/Rect[528 351 538 363]/Subtype/Link/Type/Annot>> endobj 37 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[662 0 R/FitH 392]/H/I/Rect[528 340 538 352]/Subtype/Link/Type/Annot>> endobj 38 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[662 0 R/FitH 356]/H/I/Rect[528 328 538 340]/Subtype/Link/Type/Annot>> endobj 39 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[662 0 R/FitH 293]/H/I/Rect[528 316 538 328]/Subtype/Link/Type/Annot>> endobj 40 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[664 0 R/FitH 631]/H/I/Rect[528 305 538 317]/Subtype/Link/Type/Annot>> endobj 41 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[664 0 R/FitH 578]/H/I/Rect[528 294 538 306]/Subtype/Link/Type/Annot>> endobj 42 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[664 0 R/FitH 543]/H/I/Rect[528 282 538 294]/Subtype/Link/Type/Annot>> endobj 43 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[664 0 R/FitH 445]/H/I/Rect[528 270 538 282]/Subtype/Link/Type/Annot>> endobj 44 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[664 0 R/FitH 155]/H/I/Rect[528 260 538 272]/Subtype/Link/Type/Annot>> endobj 45 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[666 0 R/FitH 787]/H/I/Rect[528 248 538 260]/Subtype/Link/Type/Annot>> endobj 46 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[666 0 R/FitH 752]/H/I/Rect[528 236 538 248]/Subtype/Link/Type/Annot>> endobj 47 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[666 0 R/FitH 545]/H/I/Rect[528 225 538 237]/Subtype/Link/Type/Annot>> endobj 48 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[668 0 R/FitH 521]/H/I/Rect[528 213 538 225]/Subtype/Link/Type/Annot>> endobj 49 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[668 0 R/FitH 445]/H/I/Rect[528 202 538 214]/Subtype/Link/Type/Annot>> endobj 50 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[668 0 R/FitH 410]/H/I/Rect[528 190 538 202]/Subtype/Link/Type/Annot>> endobj 51 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[668 0 R/FitH 292]/H/I/Rect[528 179 538 191]/Subtype/Link/Type/Annot>> endobj 52 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[676 0 R/FitH 358]/H/I/Rect[528 167 538 179]/Subtype/Link/Type/Annot>> endobj 53 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[678 0 R/FitH 786]/H/I/Rect[528 156 538 168]/Subtype/Link/Type/Annot>> endobj 54 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[678 0 R/FitH 208]/H/I/Rect[528 144 538 156]/Subtype/Link/Type/Annot>> endobj 55 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[680 0 R/FitH 635]/H/I/Rect[528 133 538 145]/Subtype/Link/Type/Annot>> endobj 56 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[680 0 R/FitH 371]/H/I/Rect[528 121 538 133]/Subtype/Link/Type/Annot>> endobj 57 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[680 0 R/FitH 336]/H/I/Rect[528 110 538 122]/Subtype/Link/Type/Annot>> endobj 58 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[682 0 R/FitH 786]/H/I/Rect[528 98 538 110]/Subtype/Link/Type/Annot>> endobj 59 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[692 0 R/FitH 507]/H/I/Rect[528 87 538 99]/Subtype/Link/Type/Annot>> endobj 60 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[692 0 R/FitH 373]/H/I/Rect[528 75 538 87]/Subtype/Link/Type/Annot>> endobj 61 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[694 0 R/FitH 356]/H/I/Rect[528 63 538 75]/Subtype/Link/Type/Annot>> endobj 62 0 obj <</Filter/FlateDecode/Length 2829>>stream
+H‰ì—ÝRãÊ…Ÿ ïЗ­ª¸ú¿ûrf¡HU&|r.fN¥Œ-ˆcqŒÂÛgïÖ_ ,á‘À“‚xj@HV«õ­Þ{­þ8%iø·¹"?Ÿ§äê–ü4åÿH 'ÓKâYšj¾à‰6̤©$Ös&EjÈôšP’LÿîàÅ)Ü—æDhf¤'§™ã’L„MÏO GSò;‘^1Ü:xŠ‚Û…cÜžÂàd“‘_Éš|œÆ³Á±…±'ÕcîÛS,†,ç(ÒbŽ_ŠçNÏá TÅñ·$/N°„SÅRò•&ÜP‘L8Mñ<Ç#ü6ý3Nøo0e-3®ž²ì-N´ 0ÜýhvtR)Æ×ñø\0ÿ,iw<HïxPª¾&ѳ„×È»z–†Ÿß÷:Å
+M1ÈgøZŽíÐ|ÿ’/Êeÿ {A=`sE ¬¡JC4+ŠãÈšy««Å¿¹N¸£Ëu¾ÊÃÊx!öЧwÑ;¿×¢,IÄðEÖ¼Fo{skžp9oÄã¾ò”z¯TLÖx99Ÿç7YÑ¡½iÑ;?ƒåY±`ÂÕ@´‹—@Ë5³5ZAβË`ˆ!B¬ç
+Exé_(µî²bœª »4Ì«ïL:c$ˆ°uJàk t¯V2ç JpžL,}€£k\ÁP(·¸Aìú0aýÉçÅÑûè#\£W¿‘ãBp@ôp[UtXú³]kß©ƒ›D7~؉¦{ÚqùÎ>âõ®¬U¼ò9ÎÖÙfœW bæÎÿ µþ4óhÆÅ~‰àáª=¶(6JÞ·°¥`¢¶fU´õSìç›d"h>ÏpµH&’ÞÁ¥p2ƒ… ãÒó›l¾¼Ä¶³¬°áPÝJSçJ›Ï‚Å°8˜þ=r³‚p5þõl*„7%Rí´Ò]ürÒE¸;¥{„°S:‘2+é‚€>ÐËpËl%½O„¡³Íc\^è³ù¿ï±wAè¡xí$°¢w]'BÐT{sHDËÕr‹â<D½ž‘wk¢€˜îsábD
+Ì]séDÌÃŽï[ÏxEøvxv»P@‰”þõ&Û4û<éÕŸzÛ“=ÝRÀ S ¦Ö¿ê;¹[ËR×âΰ+…É“§†F"h~´EhãÇÃõSñ†aƒÓô39 6ƒ·MB»Ê… A Ðöôj´iÊD‡ì¯³N<цH9P‡ˆâØî#f¦¥ˆD¤¿ Ø
+H©û>Ç5¿nœá4™Ø  Ínf›è¢SâÇ—ƒƒ7Û{W0„llEp/ÑÖüoÝ29õîx+þ˜÷åCˆ¨õ¯úNî6meàÎ.hXñÉDñÔÐHMömüxc¸^X9>: ^ò™œûÀÛ&× Oi¾¨B,×öôj´iÊDs„ª³N<ц(>P‡ˆâèî£]+™ÂA°þ3j´K«Assj讇ûì ˆˆ @ÙV 2L½ç@4X’c§$6ŒG©è•DjtwÛH¢‹þT·…“¦í,–H¿Ý•òP(dšL„¢÷‰04''wÁf–èçWp¸Æ»g«Õr‘rèr„àÿó-~·ÈXÁ‘^¾}õ6®tw%%ê±í×)×þÒª•œl\mGp-® Ü&¦åQvžá—´£PwŠ®Ê›+‡>}íhÛÛ͔ۣ —$Â8º›qÑ
+Vö‡ÙÁÌ#N£ÃlÊ1؆ù{
+³J T ¢6,Ì:ßJNö}gY?L†âØÞc]+HÙw•dâ˜uá¯V
+endstream endobj 63 0 obj <</Annots[64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R]/Contents 126 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 64 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[694 0 R/FitH 242]/H/I/Rect[528 759 538 771]/Subtype/Link/Type/Annot>> endobj 65 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[696 0 R/FitH 669]/H/I/Rect[528 748 538 760]/Subtype/Link/Type/Annot>> endobj 66 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[696 0 R/FitH 202]/H/I/Rect[528 736 538 748]/Subtype/Link/Type/Annot>> endobj 67 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[696 0 R/FitH 167]/H/I/Rect[528 724 538 736]/Subtype/Link/Type/Annot>> endobj 68 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[698 0 R/FitH 786]/H/I/Rect[528 713 538 725]/Subtype/Link/Type/Annot>> endobj 69 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[698 0 R/FitH 443]/H/I/Rect[528 702 538 714]/Subtype/Link/Type/Annot>> endobj 70 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[698 0 R/FitH 359]/H/I/Rect[528 690 538 702]/Subtype/Link/Type/Annot>> endobj 71 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[698 0 R/FitH 295]/H/I/Rect[528 678 538 690]/Subtype/Link/Type/Annot>> endobj 72 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[698 0 R/FitH 260]/H/I/Rect[528 668 538 680]/Subtype/Link/Type/Annot>> endobj 73 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[700 0 R/FitH 786]/H/I/Rect[528 656 538 668]/Subtype/Link/Type/Annot>> endobj 74 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[700 0 R/FitH 486]/H/I/Rect[528 644 538 656]/Subtype/Link/Type/Annot>> endobj 75 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[700 0 R/FitH 349]/H/I/Rect[528 633 538 645]/Subtype/Link/Type/Annot>> endobj 76 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[700 0 R/FitH 274]/H/I/Rect[528 621 538 633]/Subtype/Link/Type/Annot>> endobj 77 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[700 0 R/FitH 238]/H/I/Rect[528 610 538 622]/Subtype/Link/Type/Annot>> endobj 78 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 786]/H/I/Rect[528 598 538 610]/Subtype/Link/Type/Annot>> endobj 79 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 365]/H/I/Rect[528 587 538 599]/Subtype/Link/Type/Annot>> endobj 80 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 313]/H/I/Rect[528 575 538 587]/Subtype/Link/Type/Annot>> endobj 81 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 262]/H/I/Rect[528 564 538 576]/Subtype/Link/Type/Annot>> endobj 82 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 186]/H/I/Rect[528 552 538 564]/Subtype/Link/Type/Annot>> endobj 83 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[702 0 R/FitH 151]/H/I/Rect[528 541 538 553]/Subtype/Link/Type/Annot>> endobj 84 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[704 0 R/FitH 786]/H/I/Rect[528 529 538 541]/Subtype/Link/Type/Annot>> endobj 85 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[704 0 R/FitH 345]/H/I/Rect[528 518 538 530]/Subtype/Link/Type/Annot>> endobj 86 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[704 0 R/FitH 270]/H/I/Rect[528 506 538 518]/Subtype/Link/Type/Annot>> endobj 87 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[704 0 R/FitH 217]/H/I/Rect[528 495 538 507]/Subtype/Link/Type/Annot>> endobj 88 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[704 0 R/FitH 182]/H/I/Rect[528 483 538 495]/Subtype/Link/Type/Annot>> endobj 89 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[706 0 R/FitH 786]/H/I/Rect[528 471 538 483]/Subtype/Link/Type/Annot>> endobj 90 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[706 0 R/FitH 548]/H/I/Rect[528 460 538 472]/Subtype/Link/Type/Annot>> endobj 91 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[706 0 R/FitH 496]/H/I/Rect[528 449 538 461]/Subtype/Link/Type/Annot>> endobj 92 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[706 0 R/FitH 461]/H/I/Rect[528 437 538 449]/Subtype/Link/Type/Annot>> endobj 93 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[706 0 R/FitH 351]/H/I/Rect[528 425 538 437]/Subtype/Link/Type/Annot>> endobj 94 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[708 0 R/FitH 660]/H/I/Rect[528 414 538 426]/Subtype/Link/Type/Annot>> endobj 95 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[708 0 R/FitH 608]/H/I/Rect[528 403 538 415]/Subtype/Link/Type/Annot>> endobj 96 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[708 0 R/FitH 572]/H/I/Rect[528 391 538 403]/Subtype/Link/Type/Annot>> endobj 97 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[708 0 R/FitH 463]/H/I/Rect[528 380 538 392]/Subtype/Link/Type/Annot>> endobj 98 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[710 0 R/FitH 786]/H/I/Rect[528 369 538 381]/Subtype/Link/Type/Annot>> endobj 99 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[710 0 R/FitH 732]/H/I/Rect[528 357 538 369]/Subtype/Link/Type/Annot>> endobj 100 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[710 0 R/FitH 697]/H/I/Rect[528 345 538 357]/Subtype/Link/Type/Annot>> endobj 101 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[710 0 R/FitH 634]/H/I/Rect[528 334 538 346]/Subtype/Link/Type/Annot>> endobj 102 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[712 0 R/FitH 532]/H/I/Rect[528 322 538 334]/Subtype/Link/Type/Annot>> endobj 103 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[712 0 R/FitH 479]/H/I/Rect[528 311 538 323]/Subtype/Link/Type/Annot>> endobj 104 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[712 0 R/FitH 444]/H/I/Rect[528 299 538 311]/Subtype/Link/Type/Annot>> endobj 105 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[712 0 R/FitH 326]/H/I/Rect[528 288 538 300]/Subtype/Link/Type/Annot>> endobj 106 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[714 0 R/FitH 372]/H/I/Rect[528 276 538 288]/Subtype/Link/Type/Annot>> endobj 107 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[714 0 R/FitH 320]/H/I/Rect[528 265 538 277]/Subtype/Link/Type/Annot>> endobj 108 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[714 0 R/FitH 284]/H/I/Rect[528 253 538 265]/Subtype/Link/Type/Annot>> endobj 109 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[716 0 R/FitH 786]/H/I/Rect[528 242 538 254]/Subtype/Link/Type/Annot>> endobj 110 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[718 0 R/FitH 702]/H/I/Rect[528 230 538 242]/Subtype/Link/Type/Annot>> endobj 111 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[718 0 R/FitH 529]/H/I/Rect[528 219 538 231]/Subtype/Link/Type/Annot>> endobj 112 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[718 0 R/FitH 464]/H/I/Rect[528 207 538 219]/Subtype/Link/Type/Annot>> endobj 113 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[718 0 R/FitH 416]/H/I/Rect[528 196 538 208]/Subtype/Link/Type/Annot>> endobj 114 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[718 0 R/FitH 380]/H/I/Rect[528 184 538 196]/Subtype/Link/Type/Annot>> endobj 115 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[720 0 R/FitH 786]/H/I/Rect[528 172 538 184]/Subtype/Link/Type/Annot>> endobj 116 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[722 0 R/FitH 786]/H/I/Rect[528 161 538 173]/Subtype/Link/Type/Annot>> endobj 117 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[722 0 R/FitH 474]/H/I/Rect[528 150 538 162]/Subtype/Link/Type/Annot>> endobj 118 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[722 0 R/FitH 255]/H/I/Rect[528 138 538 150]/Subtype/Link/Type/Annot>> endobj 119 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[722 0 R/FitH 219]/H/I/Rect[528 126 538 138]/Subtype/Link/Type/Annot>> endobj 120 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[724 0 R/FitH 786]/H/I/Rect[528 116 538 128]/Subtype/Link/Type/Annot>> endobj 121 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[726 0 R/FitH 672]/H/I/Rect[528 104 538 116]/Subtype/Link/Type/Annot>> endobj 122 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[726 0 R/FitH 619]/H/I/Rect[528 92 538 104]/Subtype/Link/Type/Annot>> endobj 123 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[726 0 R/FitH 584]/H/I/Rect[528 81 538 93]/Subtype/Link/Type/Annot>> endobj 124 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[726 0 R/FitH 521]/H/I/Rect[528 70 538 82]/Subtype/Link/Type/Annot>> endobj 125 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 786]/H/I/Rect[528 58 538 70]/Subtype/Link/Type/Annot>> endobj 126 0 obj <</Filter/FlateDecode/Length 2448>>stream
+H‰ì—ÛrÛȆŸ ï0—À±s>\f׎K©Äq$nr±N¥
+«R"‹ŽÌÝMÞ>Ýèá¤fh%!—) ƒïŸîÿÇ·SÆ㿧;öÍ»Îî¾°o¦â¯œ 6ý‘…†s#ã3¶±œ+æ‚h”ä–M?±ŠÕÓ¿Ç+Dw‡+ðÔœIÓXØÄ›Æ Å¦·¬z;½¹Š¼²2tƒ;wÑp¹ô°Lpœ=µìÏì‘};¥³Á±¥Æ±'«Ûü’N±²Ÿ£äÝèî;½[ÔBV†iûSw ©E¥Î>Vµ°•¬'¢âx\àž©ÿ2ý-Nø0e#ecýzÊjt¶8Ñ`¼zcvÕ¤ÒoèøB6á åvÜÈì¸×kr/ ò^ÝËÀçó§`ó.š>¬˜áaà›“õUƒ¾fK_ºyÕ»ÚU> Âðà:J§ØÏø·E ŸjS}ÁûÅ#«…ª€«^ ÏÙ5œŽ¿{hgTl)Nu5OZ‹§/ÂÖô»·æÿ¥e§%‡»÷#K&àȪÑ"¸nà`íÆU²Fc%ªÒí*öëZ˜êoð”¦z„ï‹z¢€Ëîú©–²š=°ZiÉ«ïj'ûŸÝâÏî—À ø(veu¨šm5z:ÒˆPEUr¡*xbçpIBSƒÞ5(•¬cŽ£Ñp+;„«}£|ß@Æê#,ÆUŸ£’D±ãR•£’ÞXM%1( °íˆ»NŽI-D/Ìí=ÒŸøµlñ#žgÓz"uõK-mµ`W?á™›ûzâ«;Ø}Ä«g÷øõC÷#àÿv¾Äß‚ ð4µ0 aÜI%tSkÝŒ@@º,øݘ™:¶{uòÑgƒÕ Ö•ƒN^CA´Ð'sÔ#JQKçxõ¦]ö8á€7ú¥ê·ñP>–†‡Ý£J£ßòÉZ{ÉÛ´¤Ã|#ó»6®Y ÿ4{è@+kÅK‚^mûCƒ…®t<ð¦„9á4¾Ú#s?Ê\؆{Ê\Æf‚-e>ocsˆ±ïàчZW½Müásû4´'<èù É2j Nš£¤€ˆ”©
+nê¹’ŒÅ¦®LcI^M}ËÔsu"lÇKG6ÒªñÒ‘: _‚w®î·]]J«c­Ì¢CãÁyÝä”$lûíÞ¥øQõÑoùø ²}øUG?HFé ™D*Á›ZÈ*ñlI<[ØÓ.Ûã¶È<ujìóœº
+MB9óÝ"Ù&á3e!,4 iÕ¸,&¤©É  ꉃ¾.+lë÷°øï@íÅ¡ù4;úm„×Ïì?¸å'˜J[¾öiZ2gÜòsqFÅ-V ¸µÛà}ö-?=ÁUÚò¥AãÞ$Ù-?dÊBX–¶|x?K2EAПjˆåñcýJ
+E5æqÕã©kР­Eõyñ´¼Ç#wxt—1wÆñu’ÎsäÐn;øœX±Ô–e@‡šU8c[ÎÅMÛ2ô¡$…Ë°e“‰žà*5n¡Sn‘Wm6SÂò,Ò*7¦K0IZ’ÙåuôêØíµ~Ñ~4p°¯Z’ãG6þ~ËÆO¶¯’$ùwÿLØQiów2É>=í³ïý™à ­ÂÖo9ú÷&÷Ëîü>O‚r-ÊÛ)û
+endstream endobj 127 0 obj <</Annots[128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R]/Contents 190 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 128 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 732]/H/I/Rect[528 759 538 771]/Subtype/Link/Type/Annot>> endobj 129 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 697]/H/I/Rect[528 748 538 760]/Subtype/Link/Type/Annot>> endobj 130 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 602]/H/I/Rect[528 736 538 748]/Subtype/Link/Type/Annot>> endobj 131 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 196]/H/I/Rect[528 724 538 736]/Subtype/Link/Type/Annot>> endobj 132 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[730 0 R/FitH 133]/H/I/Rect[528 713 538 725]/Subtype/Link/Type/Annot>> endobj 133 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[732 0 R/FitH 787]/H/I/Rect[528 702 538 714]/Subtype/Link/Type/Annot>> endobj 134 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[732 0 R/FitH 752]/H/I/Rect[528 690 538 702]/Subtype/Link/Type/Annot>> endobj 135 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[732 0 R/FitH 666]/H/I/Rect[528 678 538 690]/Subtype/Link/Type/Annot>> endobj 136 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[734 0 R/FitH 414]/H/I/Rect[528 668 538 680]/Subtype/Link/Type/Annot>> endobj 137 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[734 0 R/FitH 311]/H/I/Rect[528 656 538 668]/Subtype/Link/Type/Annot>> endobj 138 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[734 0 R/FitH 275]/H/I/Rect[528 644 538 656]/Subtype/Link/Type/Annot>> endobj 139 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[736 0 R/FitH 786]/H/I/Rect[528 633 538 645]/Subtype/Link/Type/Annot>> endobj 140 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[736 0 R/FitH 752]/H/I/Rect[528 621 538 633]/Subtype/Link/Type/Annot>> endobj 141 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[738 0 R/FitH 784]/H/I/Rect[528 610 538 622]/Subtype/Link/Type/Annot>> endobj 142 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[738 0 R/FitH 432]/H/I/Rect[528 598 538 610]/Subtype/Link/Type/Annot>> endobj 143 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[738 0 R/FitH 228]/H/I/Rect[528 587 538 599]/Subtype/Link/Type/Annot>> endobj 144 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[738 0 R/FitH 191]/H/I/Rect[528 575 538 587]/Subtype/Link/Type/Annot>> endobj 145 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[738 0 R/FitH 156]/H/I/Rect[528 564 538 576]/Subtype/Link/Type/Annot>> endobj 146 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[740 0 R/FitH 352]/H/I/Rect[528 552 538 564]/Subtype/Link/Type/Annot>> endobj 147 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[740 0 R/FitH 300]/H/I/Rect[528 541 538 553]/Subtype/Link/Type/Annot>> endobj 148 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[740 0 R/FitH 267]/H/I/Rect[528 529 538 541]/Subtype/Link/Type/Annot>> endobj 149 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 690]/H/I/Rect[528 518 538 530]/Subtype/Link/Type/Annot>> endobj 150 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 489]/H/I/Rect[528 506 538 518]/Subtype/Link/Type/Annot>> endobj 151 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 437]/H/I/Rect[528 495 538 507]/Subtype/Link/Type/Annot>> endobj 152 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 402]/H/I/Rect[528 483 538 495]/Subtype/Link/Type/Annot>> endobj 153 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 338]/H/I/Rect[528 471 538 483]/Subtype/Link/Type/Annot>> endobj 154 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[742 0 R/FitH 305]/H/I/Rect[528 460 538 472]/Subtype/Link/Type/Annot>> endobj 155 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[744 0 R/FitH 583]/H/I/Rect[528 449 538 461]/Subtype/Link/Type/Annot>> endobj 156 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[744 0 R/FitH 173]/H/I/Rect[528 437 538 449]/Subtype/Link/Type/Annot>> endobj 157 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[744 0 R/FitH 140]/H/I/Rect[528 425 538 437]/Subtype/Link/Type/Annot>> endobj 158 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[746 0 R/FitH 784]/H/I/Rect[528 414 538 426]/Subtype/Link/Type/Annot>> endobj 159 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[746 0 R/FitH 699]/H/I/Rect[528 403 538 415]/Subtype/Link/Type/Annot>> endobj 160 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[746 0 R/FitH 628]/H/I/Rect[528 391 538 403]/Subtype/Link/Type/Annot>> endobj 161 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[746 0 R/FitH 593]/H/I/Rect[528 380 538 392]/Subtype/Link/Type/Annot>> endobj 162 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[746 0 R/FitH 498]/H/I/Rect[528 369 538 381]/Subtype/Link/Type/Annot>> endobj 163 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 706]/H/I/Rect[528 357 538 369]/Subtype/Link/Type/Annot>> endobj 164 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 654]/H/I/Rect[528 345 538 357]/Subtype/Link/Type/Annot>> endobj 165 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 618]/H/I/Rect[528 334 538 346]/Subtype/Link/Type/Annot>> endobj 166 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 544]/H/I/Rect[528 322 538 334]/Subtype/Link/Type/Annot>> endobj 167 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 304]/H/I/Rect[528 311 538 323]/Subtype/Link/Type/Annot>> endobj 168 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 246]/H/I/Rect[528 299 538 311]/Subtype/Link/Type/Annot>> endobj 169 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 193]/H/I/Rect[528 288 538 300]/Subtype/Link/Type/Annot>> endobj 170 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[748 0 R/FitH 157]/H/I/Rect[528 276 538 288]/Subtype/Link/Type/Annot>> endobj 171 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[750 0 R/FitH 784]/H/I/Rect[528 265 538 277]/Subtype/Link/Type/Annot>> endobj 172 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[750 0 R/FitH 734]/H/I/Rect[528 253 538 265]/Subtype/Link/Type/Annot>> endobj 173 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[750 0 R/FitH 687]/H/I/Rect[528 242 538 254]/Subtype/Link/Type/Annot>> endobj 174 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[750 0 R/FitH 654]/H/I/Rect[528 230 538 242]/Subtype/Link/Type/Annot>> endobj 175 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[750 0 R/FitH 261]/H/I/Rect[528 219 538 231]/Subtype/Link/Type/Annot>> endobj 176 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[752 0 R/FitH 547]/H/I/Rect[528 207 538 219]/Subtype/Link/Type/Annot>> endobj 177 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[752 0 R/FitH 511]/H/I/Rect[528 196 538 208]/Subtype/Link/Type/Annot>> endobj 178 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[752 0 R/FitH 448]/H/I/Rect[528 184 538 196]/Subtype/Link/Type/Annot>> endobj 179 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[754 0 R/FitH 640]/H/I/Rect[528 172 538 184]/Subtype/Link/Type/Annot>> endobj 180 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[754 0 R/FitH 587]/H/I/Rect[528 161 538 173]/Subtype/Link/Type/Annot>> endobj 181 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[754 0 R/FitH 552]/H/I/Rect[528 150 538 162]/Subtype/Link/Type/Annot>> endobj 182 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[754 0 R/FitH 465]/H/I/Rect[528 138 538 150]/Subtype/Link/Type/Annot>> endobj 183 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[756 0 R/FitH 734]/H/I/Rect[528 126 538 138]/Subtype/Link/Type/Annot>> endobj 184 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[756 0 R/FitH 547]/H/I/Rect[528 116 538 128]/Subtype/Link/Type/Annot>> endobj 185 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[756 0 R/FitH 251]/H/I/Rect[528 104 538 116]/Subtype/Link/Type/Annot>> endobj 186 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[756 0 R/FitH 218]/H/I/Rect[528 92 538 104]/Subtype/Link/Type/Annot>> endobj 187 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[758 0 R/FitH 787]/H/I/Rect[528 81 538 93]/Subtype/Link/Type/Annot>> endobj 188 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[758 0 R/FitH 752]/H/I/Rect[528 70 538 82]/Subtype/Link/Type/Annot>> endobj 189 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[758 0 R/FitH 679]/H/I/Rect[528 58 538 70]/Subtype/Link/Type/Annot>> endobj 190 0 obj <</Filter/FlateDecode/Length 2836>>stream
+H‰ì—ÛrÛȆŸ ï0—À±sžÁel«TJŇȴs§R´È•™’M/M{kß>Ý3
+O¼‚;_Ë+¥pEõ@Û‡¿8!|É°ŽDC^r]#yå+y(ÝÃObÖÇ^ ’%ÃñVBTÜʪÝ7pÿX«Vñto[
+Á­BG©jiê¸(öp7¼²šr¯b!ýËÙø5+e±œÜ•#z(aOHz½ä´ ]%j{4è¸åã&Œöá–¾åmE/o5-·xKäýö;ü¼¹™AåÙ"üøµ¢À£w¥úî^¼þ:[NVóÔŸ)¾àAoO#Éþ…èùùè ®½èë5ú^òÒáÎ&y…äßáBâ¦è$0ñ@Ÿ@_q)OA¿§éÀ·tî˜ZÈW ª‚°÷[*hTá¯%¬èq]Ãß°Â8Ñìçs ”'w þçÐûëÓ¦xÚÕza2æD=ªWÎ|L‡Ê—…°ìïK!ô÷%9Ðb€ht‘į3 Þ]°—mƒrÅä6ÄJb÷† wà}ãÁ’UÍÆl‰Ÿ è¶Viú‘g외)£¡.l½HS|.œ‹žàêïÿ{;žÆžxÕÄ|go˜oÊ/ ŸGŸ`—×Á@^±«àxÙ( ‹éºE™G¨›N®™°ü44à²U Ð:2… Õ€´Ê÷Ö€ñi
+IèÅ|9»Á‰
+ûþ°É`ÁÅ$&$%™-á ’=8ÌžmoË?ö-ò±TC;½viþQçÛé³qFƒ;½2•Ýæ}îÞ‰Lô×ÐHi¥NCÚÑó1Ë¿‚Ï^/ç·s\ÿ“ÕlÚ¶¡ý (4ôð("³Fö« EåtÔÌ‚ÀÛ+„[ !{…2M;­’ñ.²¾Â`£lÁ&„?
+˜¯ 2¶kÚ*šÅÉá“IœNÙoFûí¾`šÍ”„`ìOA¡-õ*ÂE‡¢"ÁCˆù¸Î81Ý–ŸÁ• ˜Áb_ÂÊé¢ÐOƒmñ%'tcNäû+DÕ•“û„x(YËæ ‘¨Wãë4iäýb>æÚœ¨íoo[vlªÖüýì8lÙ”)š¡”O#Aʯ`öYÞ-&Ó&}6 \…õmg¹hR‘ÔZŸR‹q¨6ú>üó¹X£§±½ÝuÜÏ8zæâ&Œöá6¢åÝ?`cÒüƒ¼5DOEß`—þ„»óÒBÜ´°Ô7çnq÷w¸sÏâë§?Pª<¶¶cyˆµ¯2Å
+€‹»MàÉGÈ›"üHɧÌñÂðy4 vyÓë+vÌã{¼3<%ØÈb:kš”“/TÆàE¦åPW>ÍC¢såw8ˆp@•´ —@x{ëuác§€lº¡*p ¡aKý¤³Q®,„e¯'p÷šDm6¢Q”%iY‡õÙ¯ŒÛì_¡Y­›í_‚cÿ­µx{›—órK²lyÒCEÉÕõ©ãUš˜‚w_!c•(š? ³\Ç.žTLb·sñâY¼ó¬8I+KUèêÆ7yVß#e1/óÄ!DÆY'Ót%Ï8ÍfÂ&ˆ††YË1lÒ>û,› žÐZƒ¿³ÿ 0
+endstream endobj 191 0 obj <</Annots[192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R 199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R 207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R]/Contents 254 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 192 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[760 0 R/FitH 786]/H/I/Rect[528 759 538 771]/Subtype/Link/Type/Annot>> endobj 193 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[760 0 R/FitH 469]/H/I/Rect[528 748 538 760]/Subtype/Link/Type/Annot>> endobj 194 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[760 0 R/FitH 416]/H/I/Rect[528 736 538 748]/Subtype/Link/Type/Annot>> endobj 195 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[760 0 R/FitH 381]/H/I/Rect[528 724 538 736]/Subtype/Link/Type/Annot>> endobj 196 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[760 0 R/FitH 297]/H/I/Rect[528 713 538 725]/Subtype/Link/Type/Annot>> endobj 197 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[762 0 R/FitH 787]/H/I/Rect[528 702 538 714]/Subtype/Link/Type/Annot>> endobj 198 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[762 0 R/FitH 752]/H/I/Rect[528 690 538 702]/Subtype/Link/Type/Annot>> endobj 199 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[762 0 R/FitH 668]/H/I/Rect[528 678 538 690]/Subtype/Link/Type/Annot>> endobj 200 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[762 0 R/FitH 635]/H/I/Rect[528 668 538 680]/Subtype/Link/Type/Annot>> endobj 201 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[762 0 R/FitH 218]/H/I/Rect[528 656 538 668]/Subtype/Link/Type/Annot>> endobj 202 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[764 0 R/FitH 784]/H/I/Rect[528 644 538 656]/Subtype/Link/Type/Annot>> endobj 203 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[764 0 R/FitH 340]/H/I/Rect[528 633 538 645]/Subtype/Link/Type/Annot>> endobj 204 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[764 0 R/FitH 287]/H/I/Rect[528 621 538 633]/Subtype/Link/Type/Annot>> endobj 205 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[764 0 R/FitH 251]/H/I/Rect[528 610 538 622]/Subtype/Link/Type/Annot>> endobj 206 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[766 0 R/FitH 786]/H/I/Rect[528 598 538 610]/Subtype/Link/Type/Annot>> endobj 207 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[768 0 R/FitH 692]/H/I/Rect[528 587 538 599]/Subtype/Link/Type/Annot>> endobj 208 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[768 0 R/FitH 352]/H/I/Rect[528 575 538 587]/Subtype/Link/Type/Annot>> endobj 209 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[768 0 R/FitH 300]/H/I/Rect[528 564 538 576]/Subtype/Link/Type/Annot>> endobj 210 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[768 0 R/FitH 264]/H/I/Rect[528 552 538 564]/Subtype/Link/Type/Annot>> endobj 211 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[770 0 R/FitH 786]/H/I/Rect[528 541 538 553]/Subtype/Link/Type/Annot>> endobj 212 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[776 0 R/FitH 786]/H/I/Rect[528 529 538 541]/Subtype/Link/Type/Annot>> endobj 213 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[776 0 R/FitH 292]/H/I/Rect[528 518 538 530]/Subtype/Link/Type/Annot>> endobj 214 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[778 0 R/FitH 787]/H/I/Rect[528 506 538 518]/Subtype/Link/Type/Annot>> endobj 215 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[778 0 R/FitH 752]/H/I/Rect[528 495 538 507]/Subtype/Link/Type/Annot>> endobj 216 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[778 0 R/FitH 657]/H/I/Rect[528 483 538 495]/Subtype/Link/Type/Annot>> endobj 217 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[780 0 R/FitH 786]/H/I/Rect[528 471 538 483]/Subtype/Link/Type/Annot>> endobj 218 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[780 0 R/FitH 480]/H/I/Rect[528 460 538 472]/Subtype/Link/Type/Annot>> endobj 219 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[780 0 R/FitH 427]/H/I/Rect[528 449 538 461]/Subtype/Link/Type/Annot>> endobj 220 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[780 0 R/FitH 392]/H/I/Rect[528 437 538 449]/Subtype/Link/Type/Annot>> endobj 221 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[782 0 R/FitH 786]/H/I/Rect[528 425 538 437]/Subtype/Link/Type/Annot>> endobj 222 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[782 0 R/FitH 352]/H/I/Rect[528 414 538 426]/Subtype/Link/Type/Annot>> endobj 223 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[782 0 R/FitH 299]/H/I/Rect[528 403 538 415]/Subtype/Link/Type/Annot>> endobj 224 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[782 0 R/FitH 264]/H/I/Rect[528 391 538 403]/Subtype/Link/Type/Annot>> endobj 225 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[784 0 R/FitH 786]/H/I/Rect[528 380 538 392]/Subtype/Link/Type/Annot>> endobj 226 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[784 0 R/FitH 279]/H/I/Rect[528 369 538 381]/Subtype/Link/Type/Annot>> endobj 227 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[784 0 R/FitH 227]/H/I/Rect[528 357 538 369]/Subtype/Link/Type/Annot>> endobj 228 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[786 0 R/FitH 787]/H/I/Rect[528 345 538 357]/Subtype/Link/Type/Annot>> endobj 229 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[786 0 R/FitH 752]/H/I/Rect[528 334 538 346]/Subtype/Link/Type/Annot>> endobj 230 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[786 0 R/FitH 645]/H/I/Rect[528 322 538 334]/Subtype/Link/Type/Annot>> endobj 231 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[788 0 R/FitH 747]/H/I/Rect[528 311 538 323]/Subtype/Link/Type/Annot>> endobj 232 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[788 0 R/FitH 323]/H/I/Rect[528 299 538 311]/Subtype/Link/Type/Annot>> endobj 233 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[788 0 R/FitH 270]/H/I/Rect[528 288 538 300]/Subtype/Link/Type/Annot>> endobj 234 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[788 0 R/FitH 234]/H/I/Rect[528 276 538 288]/Subtype/Link/Type/Annot>> endobj 235 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[790 0 R/FitH 786]/H/I/Rect[528 265 538 277]/Subtype/Link/Type/Annot>> endobj 236 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[790 0 R/FitH 267]/H/I/Rect[528 253 538 265]/Subtype/Link/Type/Annot>> endobj 237 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[790 0 R/FitH 216]/H/I/Rect[528 242 538 254]/Subtype/Link/Type/Annot>> endobj 238 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 787]/H/I/Rect[528 230 538 242]/Subtype/Link/Type/Annot>> endobj 239 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 752]/H/I/Rect[528 219 538 231]/Subtype/Link/Type/Annot>> endobj 240 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 668]/H/I/Rect[528 207 538 219]/Subtype/Link/Type/Annot>> endobj 241 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 415]/H/I/Rect[528 196 538 208]/Subtype/Link/Type/Annot>> endobj 242 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 363]/H/I/Rect[528 184 538 196]/Subtype/Link/Type/Annot>> endobj 243 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[792 0 R/FitH 328]/H/I/Rect[528 172 538 184]/Subtype/Link/Type/Annot>> endobj 244 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[794 0 R/FitH 786]/H/I/Rect[522 161 538 173]/Subtype/Link/Type/Annot>> endobj 245 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[794 0 R/FitH 413]/H/I/Rect[522 150 538 162]/Subtype/Link/Type/Annot>> endobj 246 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[794 0 R/FitH 155]/H/I/Rect[522 138 538 150]/Subtype/Link/Type/Annot>> endobj 247 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[796 0 R/FitH 787]/H/I/Rect[522 126 538 138]/Subtype/Link/Type/Annot>> endobj 248 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[796 0 R/FitH 752]/H/I/Rect[522 116 538 128]/Subtype/Link/Type/Annot>> endobj 249 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[796 0 R/FitH 657]/H/I/Rect[522 104 538 116]/Subtype/Link/Type/Annot>> endobj 250 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 786]/H/I/Rect[522 92 538 104]/Subtype/Link/Type/Annot>> endobj 251 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 511]/H/I/Rect[522 81 538 93]/Subtype/Link/Type/Annot>> endobj 252 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 476]/H/I/Rect[522 70 538 82]/Subtype/Link/Type/Annot>> endobj 253 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 413]/H/I/Rect[522 58 538 70]/Subtype/Link/Type/Annot>> endobj 254 0 obj <</Filter/FlateDecode/Length 2290>>stream
+H‰ì—ÝvÛ6…Ÿ`Þ—ä…Xüÿ\6©V–»¦i'’§ɬYŠÍ8jÛ#«yüÁEñ@²(°ÕV´²¬P ‚ßÆ9{ãÕ”ÐðoyC¾y3¡äæ|3eÿ¦„‘é'â*J'8¢t¥)Ä8V N5™~!)§¿„+XsõWÀOW„«J GFVU– 2½&Åx:¹Œ§ä?D8YùÁõw‘þrn+¦ £~p²¬ÉÏä–¼šâÙÀØ\ÂØ£ö6ÿ§Ø ¹ž#§Íß7÷Nü-JÆ E$ƒÿùgóEU²BV”|(J¦ ^ŽXAá{Gªü×ô{˜ð?ü”當›)‹ÞÙÂDc€áê­Ù£5f|…Çg¼r‰óÈÔ#7¢òC‰îÅÞí½”ÿºÇiؾ‹ÆãWL÷0Æ£¯êô5;úâ%ØÉ+Þ”¶øé'PØ?¸ Ò ò;ü_ƒ„ËRp0¿»%%…ç*[á)yçç-ê|ûP“°>x§üzžÍÓ…5^9¾^…N+ÝÌ4ÛLTs`´ž¨õ^…¥Wº‚\Þúw?/Uüæ®®êpÞ>•Œ…o¥ô%Æý]ŠïëålAPî'ÿD¯ÛûS
+äÍø]ر¼%aYüÖŒìïT¹»®Ãñ•ÉÝSæ~=6wJ—
+Ú‘v±¶3€ÙÚ5œ6ÅCYBàPêD£7Ô¾Óë}¥Ë‚X&6@.ã(§Pʾ¼_Ìo…/.n¯µ¶ÌÆ¡Ìþ–{Sƒ·pöMHƒMocÔþ)[úCq„éj –¹ ›ñ8ñ©3NØ©¸£ì„MYóÔ0¶NDpeÚ².N`ª³ƒKX衧È^±ž¾ üI¢ì!ú½íßsL-kÒTÀèrU06Ž^
+rЦœ* b™‰•Ö`ðf£‹Föüë&dâ‹Âð7÷•€v“Õl¹jìÁÊÓ™C{ëŸìhwHÇeº°R*GúŒ]87b”ëÂJŠ8õèa¸°MDpåöÁãü£çÂŽ%ª€ÐåªÀiœ…ô‹ 'Ë‚Xö˲W êâLdŽöÞËûëÙª&¥9ÉòJÚ<‘6b•iºÒðo„ý|M77f”kºÒê8ä˜A˜n2z„+³ÝK#ã¸c†gº"Q„.W-âèc^L7YÄ2Ít¥bq²_±á½»÷zœp¯ÛO›3w¤¤óF´rmWÒ8íØ3¶ÝT܈Q¶írÇ; Û•‰è®Ü†ÏLxlg»ƒmø©² –½ hG´¿"¨ŠãÛný—còwj=Àÿêÿš7¤dòT̛ד5ÿTöˆWfóNÆÈqóOÄå6ayœrÜ0š¿JDpe6a˜ŸïùAí¹RU@èrUP.?îeÏ•, byÀ¸ý²H%#IA`½epáwž98ÁMë»° [ù’h skÿû/ëìho N'ÂGÄr=Xh°sÓÁ?cNÅe{0WàçÛ¼ÏÞƒSÑ#\¹ÝŸ‰(ý¬ÉʃM¢
+]®
+”ƒo¯ÿa{pª,ˆe_‚#ÚÛ—¸£àç.ÁÊQ0ààÅ@ý­÷ò]íÙ³b…ÑX3| æšÖª­ &O£Ã~üê’VV!YŒ-Ó‰¹qq bgìÄ©¸£\'æÚ€«oó>{'¶‰è®Làþ Ê@lxNœªB—«‚”qb/Nœ, bÙ/Ë^5„
+í»ö˜À£íÄwÿðûmmÞš;£þb_½Ï¥S§è´ -@zoTb¯8éš ¤™6`x˜Ô\ ‘:b•kš‚oc?sHÄŽXm°§äÿ
+endstream endobj 255 0 obj <</Annots[256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R]/Contents 317 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 256 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 168]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 257 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[800 0 R/FitH 133]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 258 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 759]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 259 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 533]/H/I/Rect[522 724 538 736]/Subtype/Link/Type/Annot>> endobj 260 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 480]/H/I/Rect[522 713 538 725]/Subtype/Link/Type/Annot>> endobj 261 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 445]/H/I/Rect[522 702 538 714]/Subtype/Link/Type/Annot>> endobj 262 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 370]/H/I/Rect[522 690 538 702]/Subtype/Link/Type/Annot>> endobj 263 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[802 0 R/FitH 159]/H/I/Rect[522 678 538 690]/Subtype/Link/Type/Annot>> endobj 264 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[804 0 R/FitH 786]/H/I/Rect[522 668 538 680]/Subtype/Link/Type/Annot>> endobj 265 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[804 0 R/FitH 731]/H/I/Rect[522 648.8 538 662]/Subtype/Link/Type/Annot>> endobj 266 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[804 0 R/FitH 687]/H/I/Rect[522 637 538 649]/Subtype/Link/Type/Annot>> endobj 267 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[804 0 R/FitH 651]/H/I/Rect[522 626 538 638]/Subtype/Link/Type/Annot>> endobj 268 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 779]/H/I/Rect[522 614 538 626]/Subtype/Link/Type/Annot>> endobj 269 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 746]/H/I/Rect[522 602 538 614]/Subtype/Link/Type/Annot>> endobj 270 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 587]/H/I/Rect[522 591 538 603]/Subtype/Link/Type/Annot>> endobj 271 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 407]/H/I/Rect[522 580 538 592]/Subtype/Link/Type/Annot>> endobj 272 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 358]/H/I/Rect[522 568 538 580]/Subtype/Link/Type/Annot>> endobj 273 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[806 0 R/FitH 310]/H/I/Rect[522 556 538 568]/Subtype/Link/Type/Annot>> endobj 274 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[810 0 R/FitH 382]/H/I/Rect[522 545 538 557]/Subtype/Link/Type/Annot>> endobj 275 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[814 0 R/FitH 465]/H/I/Rect[522 534 538 546]/Subtype/Link/Type/Annot>> endobj 276 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[814 0 R/FitH 211]/H/I/Rect[522 522 538 534]/Subtype/Link/Type/Annot>> endobj 277 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[816 0 R/FitH 715]/H/I/Rect[522 510 538 522]/Subtype/Link/Type/Annot>> endobj 278 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[816 0 R/FitH 453]/H/I/Rect[522 499 538 511]/Subtype/Link/Type/Annot>> endobj 279 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[818 0 R/FitH 418]/H/I/Rect[522 488 538 500]/Subtype/Link/Type/Annot>> endobj 280 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[820 0 R/FitH 293]/H/I/Rect[522 476 538 488]/Subtype/Link/Type/Annot>> endobj 281 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[824 0 R/FitH 232]/H/I/Rect[522 465 538 477]/Subtype/Link/Type/Annot>> endobj 282 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[828 0 R/FitH 786]/H/I/Rect[522 453 538 465]/Subtype/Link/Type/Annot>> endobj 283 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[828 0 R/FitH 246]/H/I/Rect[522 441 538 453]/Subtype/Link/Type/Annot>> endobj 284 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[830 0 R/FitH 786]/H/I/Rect[522 430 538 442]/Subtype/Link/Type/Annot>> endobj 285 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[830 0 R/FitH 482]/H/I/Rect[522 419 538 431]/Subtype/Link/Type/Annot>> endobj 286 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[830 0 R/FitH 293]/H/I/Rect[522 407 538 419]/Subtype/Link/Type/Annot>> endobj 287 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[832 0 R/FitH 786]/H/I/Rect[522 395 538 407]/Subtype/Link/Type/Annot>> endobj 288 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[832 0 R/FitH 628]/H/I/Rect[522 384 538 396]/Subtype/Link/Type/Annot>> endobj 289 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[832 0 R/FitH 471]/H/I/Rect[522 373 538 385]/Subtype/Link/Type/Annot>> endobj 290 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[832 0 R/FitH 206]/H/I/Rect[522 361 538 373]/Subtype/Link/Type/Annot>> endobj 291 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[834 0 R/FitH 481]/H/I/Rect[522 349 538 361]/Subtype/Link/Type/Annot>> endobj 292 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[834 0 R/FitH 185]/H/I/Rect[522 338 538 350]/Subtype/Link/Type/Annot>> endobj 293 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[836 0 R/FitH 514]/H/I/Rect[522 327 538 339]/Subtype/Link/Type/Annot>> endobj 294 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[836 0 R/FitH 197]/H/I/Rect[522 315 538 327]/Subtype/Link/Type/Annot>> endobj 295 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[838 0 R/FitH 482]/H/I/Rect[522 303 538 315]/Subtype/Link/Type/Annot>> endobj 296 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[840 0 R/FitH 391]/H/I/Rect[522 292 538 304]/Subtype/Link/Type/Annot>> endobj 297 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[840 0 R/FitH 109]/H/I/Rect[522 281 538 293]/Subtype/Link/Type/Annot>> endobj 298 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[842 0 R/FitH 632]/H/I/Rect[522 269 538 281]/Subtype/Link/Type/Annot>> endobj 299 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[842 0 R/FitH 441]/H/I/Rect[522 257 538 269]/Subtype/Link/Type/Annot>> endobj 300 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[842 0 R/FitH 220]/H/I/Rect[522 246 538 258]/Subtype/Link/Type/Annot>> endobj 301 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[844 0 R/FitH 475]/H/I/Rect[522 235 538 247]/Subtype/Link/Type/Annot>> endobj 302 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[844 0 R/FitH 233]/H/I/Rect[522 223 538 235]/Subtype/Link/Type/Annot>> endobj 303 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[846 0 R/FitH 450]/H/I/Rect[522 212 538 224]/Subtype/Link/Type/Annot>> endobj 304 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[848 0 R/FitH 218]/H/I/Rect[522 200 538 212]/Subtype/Link/Type/Annot>> endobj 305 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[850 0 R/FitH 472]/H/I/Rect[522 189 538 201]/Subtype/Link/Type/Annot>> endobj 306 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[850 0 R/FitH 421]/H/I/Rect[522 177 538 189]/Subtype/Link/Type/Annot>> endobj 307 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[850 0 R/FitH 369]/H/I/Rect[522 166 538 178]/Subtype/Link/Type/Annot>> endobj 308 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[850 0 R/FitH 317]/H/I/Rect[522 154 538 166]/Subtype/Link/Type/Annot>> endobj 309 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[852 0 R/FitH 465]/H/I/Rect[522 142 538 154]/Subtype/Link/Type/Annot>> endobj 310 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[854 0 R/FitH 786]/H/I/Rect[522 131 538 143]/Subtype/Link/Type/Annot>> endobj 311 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[854 0 R/FitH 388]/H/I/Rect[522 120 538 132]/Subtype/Link/Type/Annot>> endobj 312 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[856 0 R/FitH 465]/H/I/Rect[522 108 538 120]/Subtype/Link/Type/Annot>> endobj 313 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[856 0 R/FitH 245]/H/I/Rect[522 96 538 108]/Subtype/Link/Type/Annot>> endobj 314 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[862 0 R/FitH 314]/H/I/Rect[522 85 538 97]/Subtype/Link/Type/Annot>> endobj 315 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[866 0 R/FitH 779]/H/I/Rect[522 74 538 86]/Subtype/Link/Type/Annot>> endobj 316 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[866 0 R/FitH 203]/H/I/Rect[522 62 538 74]/Subtype/Link/Type/Annot>> endobj 317 0 obj <</Filter/FlateDecode/Length 3594>>stream
+H‰ì—ÛrÛF†Ÿ`ßa.Dæ<˜K[¢UJ$Ò)'[ñÖ–"Ó^mÉ’W–7•·ßî† É@¹jC—)ÇÁ÷÷áï—k&èßÝGöÃÑJ°_ØkùOÁ$[`!Â*:!0ër'„f>È\+áØúã,[ÿ›®ñ
+Wà¡K¦lît`³Âæ…ÔlýžñùzuLÌ×ì?L“ÃÍ}O1p¹*ré˜psv·a?³ör®ï­ Þ{V=æ÷í%Æ[–kT"®ñ×øÜõ
+‘IÅ-3ÿjö6îÈ3ÉM.Ø;žIÇU6“\à~‰[6ûÇúG\ðX²U*wE½dÝ»Z\è6@ººµ:>+ÄûÛôþRåáA"ÚïyÝó aÞeɳT°È»z–…ïo{xƒöS|ú:1ÍËøð}m£¯ßÑ7 ÁF^}”üõkT^ÜtšýÿnP»Ìò/¸qu{Ã2©9p5•ð‚Áa:ïzs{¿lŇj”/ש’uã¹rºˆË κ¸L­^©S©\i‘—ÎVg°â·ðLÁ` ÿ³L)gøëlæaÁ°šÍç‹»‹{X2^
+X‘;“*Çä¬G¤»É¿»¸Îf¨‚–ÎOºúô
+kHe)I¬(I:•
+'øÖÈÂï
+¹ít|SøÏ1Þ©z7ظ£O
+o¹CœÆ3 ~‘)~+ ÖÄmÍwVÞ'‚ž [S¬—Û¶¨Ä'Œª¼“ùH ö=‚qªØ›ZO3NüÞPhýtb·¡eb(ÎaVÀÆyF£ÝKöbµ:>ZœÎk
+Õò1Å7 ¦ZÆÇb¯Âó—NOtZÊÀ\ýÀ±îßå&ˆ–— •gŸŸ,¨|GªÇè—‹ºPY9¦¿t¼‰t5™³êjù”V}QP‡úÍ»ñEËÞH /ZôM›¾‚ûò¢®…ŸÆLöC(àõ@ì ªNì²ÆÞktŒó-£#&þìž°g3ËkôÑ«½§€ç€¿&!TÕSe›´¹óEåH% Ùø ŸËŸá':¨°c €%¸Aƒ·ð¹t¶ºÃáQÌ1öT
+³,8õˆ–S‹¢,ÌUÙ–výŠ%”ûK)Ö+lÓÎõP•"±ºÛ±´Ïà9M“/ª,Rª¹µ@ê&KÂk,zY¶-¢×BX5cÔ`Äÿ,P¿ïÊ<5–¹Ö-/„ÌÍ·…û>K¤E˜*ä·åb þ„Ù0j”lÙ ¤n£ mZî~øD›ŽÓq–Í OÏ…ó^ÕGOÎãôä#Y-‡iäˆÞĸ\…PË1B„ßØa/rJ€NÂZ˜É°^¤¬î,@#ð'̺ð늾 }øu(vüQàþqõ‡Ž,²Y R០ýBµÿ!üaþ”Ygôû:úU/ÿÂï±;Eä¿ÇŸîö€ê肼ÎAéWUìx–4ñ:5úQ[v‹Úh‚fú)Ç84ZrY«e}ÍÚø\Ûª*íפ_Ža—RUrxß+‡·;¨àÇ…ÕYæøbU=€Ëź1ôE5Yô¦2ôó_ÊÉ­™äX&]˜&KºSD˼о³?ÍâhAœiù#Å#ñµ ªWÈ—5òåb5ŸN•î1A«\„½šŒ$ÁØ_²b’XÕ2O8ÉÄ<­*(ǯªv©²±WKÚ'A-’>îÆŸ‡ŒT9XV\,lŠWƒ\ñ”Eª%Œ‘0¡´Oà+e˜Tb  ÂÑrÑ2P(‡JäxµLPGÌ«èaI¥Lš~yžªÔN
+†–f:/Z}òª m8¼z øÌPýÌ;Q ×2AˆÚ&‰cYfÇ‹·ËŸæ,Ö³lfbô¤ÓîÓ—ìG7ð¦Ÿ< W‘'À:‘· b|ìŽá Ü¥ÝuŽxÏËZÄ *ðwÔäty8Or"6Ò´ViýÄÖÆ6"hRÁäÊ»€¼F>¥5,ØU¡±ûmÞ~0oj'ó²£ÆLŠb
+ð½Ü…Ò»Ñ?|‚m x/÷ø–â[ÁÓDõ#Ž´t6:cŸ{®2*÷v¿‡'èf ôÙ@èNävzH Ÿ`ÈFƒ~@µ<'öÐ^ w—2Eª”ÇG1U/ˆùp2‰£l”ð±îÛ\Û^rÿ„^]¹™83t
+aBËΠ(D¥@Ø+@ô7© :Ê0¹×Ùk‡j€;:)í[FG·&ÙÃjxâðú–R#&)u~ŠEÈoe…//‰ÞœÏWåï)ZA£KÑèâÊd°0Õ&€v  »µH¹–ÓÑ­Áõ0‰Ú좿¿&MØ
+Æ4ƒ¡$ø
+ öð–
+nÒmðosÛ©tTˆµÒÜýoLU¼öúD_ˆ}­Æ®d#‘²ÒPžKC™[6ÓŒ4q¥I¢qxEòÄù”:Ü«¿O(g¸£ßlL_š½Õªˆ>!¶˜¾¶3•È¬DgÞ-o¼Îàò¶v¸¦³ªÂž`¼sé½e#}çQ±
+ÊàÚlw0’Æ“,ŸÅÀ ¥¥Àáæ2Ž{/L6)Ÿm7N?ô„õ*Bèà;ÂÞ¯þkþ.‰’>
+sãÏ Õ ój¤Dhš¨æ€‚Ôœ+â»Ìßaáõ¦„<Ç
+endstream endobj 318 0 obj <</Annots[319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R]/Contents 381 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1464 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 319 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[868 0 R/FitH 485]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 320 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[868 0 R/FitH 117]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 321 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[870 0 R/FitH 569]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 322 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[870 0 R/FitH 389]/H/I/Rect[522 724 538 736]/Subtype/Link/Type/Annot>> endobj 323 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[870 0 R/FitH 200]/H/I/Rect[522 713 538 725]/Subtype/Link/Type/Annot>> endobj 324 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[872 0 R/FitH 465]/H/I/Rect[522 702 538 714]/Subtype/Link/Type/Annot>> endobj 325 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[872 0 R/FitH 128]/H/I/Rect[522 690 538 702]/Subtype/Link/Type/Annot>> endobj 326 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[874 0 R/FitH 674]/H/I/Rect[522 678 538 690]/Subtype/Link/Type/Annot>> endobj 327 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[874 0 R/FitH 256]/H/I/Rect[522 668 538 680]/Subtype/Link/Type/Annot>> endobj 328 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[876 0 R/FitH 349]/H/I/Rect[522 656 538 668]/Subtype/Link/Type/Annot>> endobj 329 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[876 0 R/FitH 138]/H/I/Rect[522 644 538 656]/Subtype/Link/Type/Annot>> endobj 330 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[878 0 R/FitH 630]/H/I/Rect[522 633 538 645]/Subtype/Link/Type/Annot>> endobj 331 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[880 0 R/FitH 251]/H/I/Rect[522 621 538 633]/Subtype/Link/Type/Annot>> endobj 332 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[882 0 R/FitH 611]/H/I/Rect[522 610 538 622]/Subtype/Link/Type/Annot>> endobj 333 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[882 0 R/FitH 432]/H/I/Rect[522 598 538 610]/Subtype/Link/Type/Annot>> endobj 334 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[882 0 R/FitH 243]/H/I/Rect[522 587 538 599]/Subtype/Link/Type/Annot>> endobj 335 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[884 0 R/FitH 600]/H/I/Rect[522 575 538 587]/Subtype/Link/Type/Annot>> endobj 336 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[884 0 R/FitH 410]/H/I/Rect[522 564 538 576]/Subtype/Link/Type/Annot>> endobj 337 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[884 0 R/FitH 254]/H/I/Rect[522 552 538 564]/Subtype/Link/Type/Annot>> endobj 338 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[886 0 R/FitH 786]/H/I/Rect[522 541 538 553]/Subtype/Link/Type/Annot>> endobj 339 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[886 0 R/FitH 356]/H/I/Rect[522 529 538 541]/Subtype/Link/Type/Annot>> endobj 340 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[888 0 R/FitH 727]/H/I/Rect[522 518 538 530]/Subtype/Link/Type/Annot>> endobj 341 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[888 0 R/FitH 225]/H/I/Rect[522 506 538 518]/Subtype/Link/Type/Annot>> endobj 342 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[890 0 R/FitH 694]/H/I/Rect[522 495 538 507]/Subtype/Link/Type/Annot>> endobj 343 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[890 0 R/FitH 492]/H/I/Rect[522 483 538 495]/Subtype/Link/Type/Annot>> endobj 344 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[890 0 R/FitH 324]/H/I/Rect[522 471 538 483]/Subtype/Link/Type/Annot>> endobj 345 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[892 0 R/FitH 465]/H/I/Rect[522 460 538 472]/Subtype/Link/Type/Annot>> endobj 346 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[892 0 R/FitH 264]/H/I/Rect[522 449 538 461]/Subtype/Link/Type/Annot>> endobj 347 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[894 0 R/FitH 786]/H/I/Rect[522 437 538 449]/Subtype/Link/Type/Annot>> endobj 348 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[894 0 R/FitH 618]/H/I/Rect[522 425 538 437]/Subtype/Link/Type/Annot>> endobj 349 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[894 0 R/FitH 438]/H/I/Rect[522 414 538 426]/Subtype/Link/Type/Annot>> endobj 350 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[898 0 R/FitH 277]/H/I/Rect[522 403 538 415]/Subtype/Link/Type/Annot>> endobj 351 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[900 0 R/FitH 271]/H/I/Rect[522 391 538 403]/Subtype/Link/Type/Annot>> endobj 352 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[902 0 R/FitH 786]/H/I/Rect[522 380 538 392]/Subtype/Link/Type/Annot>> endobj 353 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[902 0 R/FitH 511]/H/I/Rect[522 369 538 381]/Subtype/Link/Type/Annot>> endobj 354 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[906 0 R/FitH 195]/H/I/Rect[522 357 538 369]/Subtype/Link/Type/Annot>> endobj 355 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[908 0 R/FitH 417]/H/I/Rect[522 345 538 357]/Subtype/Link/Type/Annot>> endobj 356 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[908 0 R/FitH 271]/H/I/Rect[522 334 538 346]/Subtype/Link/Type/Annot>> endobj 357 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 786]/H/I/Rect[522 322 538 334]/Subtype/Link/Type/Annot>> endobj 358 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 627]/H/I/Rect[522 311 538 323]/Subtype/Link/Type/Annot>> endobj 359 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 468]/H/I/Rect[522 299 538 311]/Subtype/Link/Type/Annot>> endobj 360 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 432]/H/I/Rect[522 288 538 300]/Subtype/Link/Type/Annot>> endobj 361 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 230]/H/I/Rect[522 276 538 288]/Subtype/Link/Type/Annot>> endobj 362 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[910 0 R/FitH 197]/H/I/Rect[522 265 538 277]/Subtype/Link/Type/Annot>> endobj 363 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[914 0 R/FitH 693]/H/I/Rect[522 253 538 265]/Subtype/Link/Type/Annot>> endobj 364 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[914 0 R/FitH 459]/H/I/Rect[522 242 538 254]/Subtype/Link/Type/Annot>> endobj 365 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[938 0 R/FitH 664]/H/I/Rect[522 230 538 242]/Subtype/Link/Type/Annot>> endobj 366 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[954 0 R/FitH 784]/H/I/Rect[522 219 538 231]/Subtype/Link/Type/Annot>> endobj 367 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[954 0 R/FitH 670]/H/I/Rect[522 207 538 219]/Subtype/Link/Type/Annot>> endobj 368 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[954 0 R/FitH 548]/H/I/Rect[522 196 538 208]/Subtype/Link/Type/Annot>> endobj 369 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[954 0 R/FitH 402]/H/I/Rect[522 184 538 196]/Subtype/Link/Type/Annot>> endobj 370 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[956 0 R/FitH 784]/H/I/Rect[522 172 538 184]/Subtype/Link/Type/Annot>> endobj 371 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[956 0 R/FitH 223]/H/I/Rect[522 161 538 173]/Subtype/Link/Type/Annot>> endobj 372 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[958 0 R/FitH 784]/H/I/Rect[522 150 538 162]/Subtype/Link/Type/Annot>> endobj 373 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[958 0 R/FitH 586]/H/I/Rect[522 138 538 150]/Subtype/Link/Type/Annot>> endobj 374 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[958 0 R/FitH 378]/H/I/Rect[522 126 538 138]/Subtype/Link/Type/Annot>> endobj 375 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[958 0 R/FitH 203]/H/I/Rect[522 116 538 128]/Subtype/Link/Type/Annot>> endobj 376 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[960 0 R/FitH 784]/H/I/Rect[522 104 538 116]/Subtype/Link/Type/Annot>> endobj 377 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[960 0 R/FitH 734]/H/I/Rect[522 92 538 104]/Subtype/Link/Type/Annot>> endobj 378 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[960 0 R/FitH 370]/H/I/Rect[522 81 538 93]/Subtype/Link/Type/Annot>> endobj 379 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[960 0 R/FitH 225]/H/I/Rect[522 70 538 82]/Subtype/Link/Type/Annot>> endobj 380 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[962 0 R/FitH 642]/H/I/Rect[522 58 538 70]/Subtype/Link/Type/Annot>> endobj 381 0 obj <</Filter/FlateDecode/Length 3800>>stream
+H‰Ä—ÛrÛȆŸ`ßa. bç|¸´$HfÖ¢l‘ÚdËN¥\1írâCb»vkß>Ó3 98ÈH.Ñ q|÷ßÝ;Bÿ/ïÈÏ7[JÞ}%?ïØ?(ad÷–¸ŠRÅà Ž(]iJ1ŽU‚SMvIAÊÝ¿Â,^Aýp蟄«J GVVU– ²{CŠz·]‡ êù/NVþæÆú§H9·Ó„QsòeOþJ>‘‹^ Ü›K¸÷*=æÃ%Æ[6kä4®ñe|înëQ2^("ü/ȯñ‡ªd…¬(yU”L¼\±‚Âï öTù÷Ý_`Á/ü’當í’Åäja¡‡
+û—A:A~‡ÿ÷ á—R_açýçO¤d¢ð\ež’{8œ÷aÿ~ýº'!>x§|³NŽÖiaa™,.Ói¥ã2A´v¥š¤f¥ž€²+Œÿ#åŠ;®‹gð¬;ÿ|Z\>)™,v~ŸkXÑÝƯÎõ3t ¾"Wáìø[ø$áH8õÅC½'úW•ª¨Ž´½ú©ÿ[
+œ$^›]ûáÀ¦äÅ„¸ö¶Z·ÇÈzsµʯÒÃ9¡?s¥@øf¦óqasØ”
+6P7}å´Ý¸ÐýI9ç¸ãD#]5‘έE‘bÝÎdŽˆ27m¬óÉX74kŒ€¾Â±=¸FÙÍ/cîÙ×»,Mñ´ëN£×ßÔ¾2‡£ÓÇV#Ùº´õïàŠXŒr s¯<=ÉUÙ–FW
+ÛÛCMðˆ¹ÞÜζ^D«·;/¯dgh :Ö²cÞÓ¿Ž1IâiË™´¡Å´h¼ÌÑÎëõyG·”åsãâˆÒâÒÁi¯ùr…ÍJG¢[ܬ½×ŒN!¼’º­ p ªðA+oi8-êfR9K£<^Ø=Ne8É »š©"ºXêš+÷]êÄþ8<M©£p[ìÕ‘Q~é ±%œ÷‹Æ)›Í EÓjfˆó¨f¶v6¥™tš¤øÍ=ìÞ—ü:
+O«ûÍ‘;jNõÂufFtFI·Ù´CQÕëulaý9 ̧˜‡ˆfˆ 怸¹²)ƒAMtÉΔêq,î˜Hiå±D ¯~Š(:WÄmi° 'ú w®`¿a§êîNJMjRMè+6“;fµt²–g‘Í&Û†»EÜí
+r‹ìåi“04=øR+~"q‹iuQ¦%+Må ¤QDé!¦á#`3k(}Š^„œ"ß;Ó>õdë:
+­ÙY
+i¶u˜Y‹Y:x'a*)Ýcœñ6Ÿ9æ4Æ\Š)ÓáÆuµ@³t Vâù3Ö¼™ÐU›&À^†êµWêÍûÏd³¹ðGÉMñ9&Ó¿AÏàW1£þLÂw‚½¯¿íßÄʾ®¿†*ïô饯Ù^Xëv€ÿTÉ–ƒ³&RF(þºKVÞ0ƒÝî üEÚïm_JéoÛ‡?KΊÿì›U2AÏšX£Æ%ü{óxB-P±SAÉ$ƒ˜ÖÁïàÆ)ê üœæCùn_3ëÄüZ(KÙsAÖWç‰÷Þ6ál¾‚Œ4­½Í‹agŠ
+P[@’`öéíH³OOYÅàée«O•SÀ9U+ÈvØ4j_7(5jnvj:z´qxŽ+!°-ôÆmz_(;xtƉuHܘO–ôz‡÷ôÖ¤ß0•ÌÄîÀ
+]ì8gXzà›ÕŽ¬€ü¿âºvõìÒ4_mbœš/5äC±Ïë&Ð71ËVÒÇWqž¸ÿ ÂÜËï ¼ü0KÚÔw5 ]φ1Bò= IaÌôHJgkg„Çð$ì¶æ ‚Ã.Lfô`cRïT(°-µ©jÒãY2É?| Ï–ÝÎsé»Ìék…1ߣ¯Ç=
+E¢P«“Gtò )v ãÃúÈâ  õ Óƒ¥‰I8&‡uȵ‹Ì{¥ZGw1,{'”é½"ãrQãxDá;žŠQÓèâÀôgŠ°ô}Â$ÙN “¶Âä1k’¥áŠ"å$Òõ$#sàéÊ~ûs,·øÛÕŸx›â9,ݹ|3Ìè‰%4a35q8zŤÃÕ*CÔíñûŒ{JQ7øaõ€«ncÆzhYÐ7b‡uBª‘Ñtýšß!æe¿Ž-†Ë–rÒã>¯óÍsy:SB£Y~•U]¼ý¼dÉ¡Ø“9|g“\-¶ãy'‘JÇ®þ|ì«PìŠ×(í`¢t¨lŸbåHø¸y,GˆÜ5
+Rtÿ²¥¦/û|æ¨PæY‚éÞgn\æÛ"~Æ1®";óñ'€Î“µ ûæºÔã1Ûçóˆ;˜.ľoþ 0
+endstream endobj 382 0 obj <</Annots[383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R]/Contents 445 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1494 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 383 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[962 0 R/FitH 474]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 384 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[962 0 R/FitH 424]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 385 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[962 0 R/FitH 245]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 386 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[964 0 R/FitH 784]/H/I/Rect[522 724 538 736]/Subtype/Link/Type/Annot>> endobj 387 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[964 0 R/FitH 596]/H/I/Rect[522 713 538 725]/Subtype/Link/Type/Annot>> endobj 388 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[964 0 R/FitH 343]/H/I/Rect[522 702 538 714]/Subtype/Link/Type/Annot>> endobj 389 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[966 0 R/FitH 114]/H/I/Rect[522 690 538 702]/Subtype/Link/Type/Annot>> endobj 390 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[968 0 R/FitH 703]/H/I/Rect[522 678 538 690]/Subtype/Link/Type/Annot>> endobj 391 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[968 0 R/FitH 581]/H/I/Rect[522 668 538 680]/Subtype/Link/Type/Annot>> endobj 392 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[976 0 R/FitH 713]/H/I/Rect[522 656 538 668]/Subtype/Link/Type/Annot>> endobj 393 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[976 0 R/FitH 569]/H/I/Rect[522 644 538 656]/Subtype/Link/Type/Annot>> endobj 394 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[976 0 R/FitH 371]/H/I/Rect[522 633 538 645]/Subtype/Link/Type/Annot>> endobj 395 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[978 0 R/FitH 784]/H/I/Rect[522 621 538 633]/Subtype/Link/Type/Annot>> endobj 396 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[978 0 R/FitH 576]/H/I/Rect[522 610 538 622]/Subtype/Link/Type/Annot>> endobj 397 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[978 0 R/FitH 443]/H/I/Rect[522 598 538 610]/Subtype/Link/Type/Annot>> endobj 398 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[978 0 R/FitH 288]/H/I/Rect[522 587 538 599]/Subtype/Link/Type/Annot>> endobj 399 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[978 0 R/FitH 176]/H/I/Rect[522 575 538 587]/Subtype/Link/Type/Annot>> endobj 400 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[980 0 R/FitH 672]/H/I/Rect[522 564 538 576]/Subtype/Link/Type/Annot>> endobj 401 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[980 0 R/FitH 496]/H/I/Rect[522 552 538 564]/Subtype/Link/Type/Annot>> endobj 402 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[984 0 R/FitH 578]/H/I/Rect[522 541 538 553]/Subtype/Link/Type/Annot>> endobj 403 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[984 0 R/FitH 443]/H/I/Rect[522 529 538 541]/Subtype/Link/Type/Annot>> endobj 404 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[984 0 R/FitH 331]/H/I/Rect[522 518 538 530]/Subtype/Link/Type/Annot>> endobj 405 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[984 0 R/FitH 166]/H/I/Rect[522 506 538 518]/Subtype/Link/Type/Annot>> endobj 406 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[986 0 R/FitH 692]/H/I/Rect[522 495 538 507]/Subtype/Link/Type/Annot>> endobj 407 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[986 0 R/FitH 528]/H/I/Rect[522 483 538 495]/Subtype/Link/Type/Annot>> endobj 408 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[986 0 R/FitH 269]/H/I/Rect[522 471 538 483]/Subtype/Link/Type/Annot>> endobj 409 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[988 0 R/FitH 734]/H/I/Rect[522 460 538 472]/Subtype/Link/Type/Annot>> endobj 410 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[988 0 R/FitH 487]/H/I/Rect[522 449 538 461]/Subtype/Link/Type/Annot>> endobj 411 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[990 0 R/FitH 275]/H/I/Rect[522 437 538 449]/Subtype/Link/Type/Annot>> endobj 412 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[996 0 R/FitH 256]/H/I/Rect[522 425 538 437]/Subtype/Link/Type/Annot>> endobj 413 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1000 0 R/FitH 693]/H/I/Rect[522 414 538 426]/Subtype/Link/Type/Annot>> endobj 414 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1004 0 R/FitH 592]/H/I/Rect[522 403 538 415]/Subtype/Link/Type/Annot>> endobj 415 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1004 0 R/FitH 469]/H/I/Rect[522 391 538 403]/Subtype/Link/Type/Annot>> endobj 416 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1004 0 R/FitH 336]/H/I/Rect[522 380 538 392]/Subtype/Link/Type/Annot>> endobj 417 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1004 0 R/FitH 202]/H/I/Rect[522 369 538 381]/Subtype/Link/Type/Annot>> endobj 418 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1006 0 R/FitH 784]/H/I/Rect[522 357 538 369]/Subtype/Link/Type/Annot>> endobj 419 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1006 0 R/FitH 495]/H/I/Rect[522 345 538 357]/Subtype/Link/Type/Annot>> endobj 420 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1006 0 R/FitH 382]/H/I/Rect[522 334 538 346]/Subtype/Link/Type/Annot>> endobj 421 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1006 0 R/FitH 216]/H/I/Rect[522 322 538 334]/Subtype/Link/Type/Annot>> endobj 422 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1008 0 R/FitH 692]/H/I/Rect[522 311 538 323]/Subtype/Link/Type/Annot>> endobj 423 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1008 0 R/FitH 515]/H/I/Rect[522 299 538 311]/Subtype/Link/Type/Annot>> endobj 424 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1008 0 R/FitH 360]/H/I/Rect[522 288 538 300]/Subtype/Link/Type/Annot>> endobj 425 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1008 0 R/FitH 236]/H/I/Rect[522 276 538 288]/Subtype/Link/Type/Annot>> endobj 426 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1010 0 R/FitH 600]/H/I/Rect[522 265 538 277]/Subtype/Link/Type/Annot>> endobj 427 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1010 0 R/FitH 465]/H/I/Rect[522 253 538 265]/Subtype/Link/Type/Annot>> endobj 428 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1010 0 R/FitH 353]/H/I/Rect[522 242 538 254]/Subtype/Link/Type/Annot>> endobj 429 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1010 0 R/FitH 219]/H/I/Rect[522 230 538 242]/Subtype/Link/Type/Annot>> endobj 430 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1010 0 R/FitH 106]/H/I/Rect[522 219 538 231]/Subtype/Link/Type/Annot>> endobj 431 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1012 0 R/FitH 714]/H/I/Rect[522 207 538 219]/Subtype/Link/Type/Annot>> endobj 432 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1012 0 R/FitH 238]/H/I/Rect[522 196 538 208]/Subtype/Link/Type/Annot>> endobj 433 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1014 0 R/FitH 640]/H/I/Rect[522 184 538 196]/Subtype/Link/Type/Annot>> endobj 434 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1014 0 R/FitH 355]/H/I/Rect[522 172 538 184]/Subtype/Link/Type/Annot>> endobj 435 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1014 0 R/FitH 221]/H/I/Rect[522 161 538 173]/Subtype/Link/Type/Annot>> endobj 436 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1016 0 R/FitH 784]/H/I/Rect[522 150 538 162]/Subtype/Link/Type/Annot>> endobj 437 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1016 0 R/FitH 221]/H/I/Rect[522 138 538 150]/Subtype/Link/Type/Annot>> endobj 438 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1020 0 R/FitH 595]/H/I/Rect[522 126 538 138]/Subtype/Link/Type/Annot>> endobj 439 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1020 0 R/FitH 472]/H/I/Rect[522 116 538 128]/Subtype/Link/Type/Annot>> endobj 440 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1020 0 R/FitH 358]/H/I/Rect[522 104 538 116]/Subtype/Link/Type/Annot>> endobj 441 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1020 0 R/FitH 224]/H/I/Rect[522 92 538 104]/Subtype/Link/Type/Annot>> endobj 442 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1022 0 R/FitH 784]/H/I/Rect[522 81 538 93]/Subtype/Link/Type/Annot>> endobj 443 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1022 0 R/FitH 544]/H/I/Rect[522 70 538 82]/Subtype/Link/Type/Annot>> endobj 444 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1022 0 R/FitH 432]/H/I/Rect[522 58 538 70]/Subtype/Link/Type/Annot>> endobj 445 0 obj <</Filter/FlateDecode/Length 3876>>stream
+H‰Ü—ÛrÛȆŸ ï0—À±sf.mÉå0ñj½"í¤ÊN¥`
+–™Ð¢LÑkëíÓÝ#
+ÅæW,z1ŸMé†sö…)§xxfá-n—6)Î6û»aÏçájðÙRã³'Õk¾=\¢d¹FÉýßù÷ÎgðŠXÈÈ0-ð¯boý$‘N8{Å"d<Çã÷Lü¯ùßpÁ¿Â’”IjwKV«Å…>î~´ºhR
+âŸoÂç ™¸ƒŠ¨¬áE¦áE\¿ƒwIgPïê]þÿcŸãðø-.üˆ˜úc2w _SóÍöø†!XãU/c½~„áÃ5¡Sì7ü[ ÂMl¢;ÜY®oX,Tºê
+<g—pš®[9½+Ҭɗë”ê¢^§ôët©Iý:‘Ún©©D•Ê¥º~%ôt;Èž‰‚«¢3ø€Oð{}g´Ýàé7¯ãI±·ÅOøåk%O´½ÿK×Yú|øBÉ ~ æ‰¶
+…íÖÜð$Õ š •4Íc]ïe¬£›kB¡ŒµÑ³Xˆ†"‡Cgz;V‹É^)Oß+Ë(+(—èLb0C ^'ü¢,XÈ2þ‹5Åú¬È7‹O„db!ü'Š
+¸(B%ŒyTÐ+Þu4u€ˆÔOžW'O§@ÙÁ”¤n´^Š(ó‰;ÓO{)ôg…äxOH°m y÷V4B6X2 h»‘ÎÏ7Âhª*ɸóŸò®ªcÏpH™Â”¢ä MY½uŒ*°\}쨂Û
+ô%ToG²j·Ñ<qî(NøšvÎ2
+È.<ƺF{¦$V´‹¯¤íÔºØ@V _X“þðÃXͶÅ- 6ðÛjq²”éc2iŽÐ¿¿ü¡f­-ÅuU+“Ùf_¦_vþ
+1oµ&¨ùëx’Eçoجøò•š
+v§‚ò’wÑ€€Ù÷O@#EÍÿî£ý>–¢0ÛæÄä+YWß
+”ÞäEÖl¹L;ho1¾”šf 3°Â&ß7ÔÚw)ƒiÄ& È3Žž9#¹èI#phcá¦Ùp¥{sàY9úqÛG5
+Z1ž[jغZˆÎZÔÞÓ¾ç4
+v@{atç4¨œn¶R©7»o‹Ív¹ ýÑôRÔ/ Æ}#§&žû}²½x™V„i}…þKšñ›z× ˜©ô
+ÖínüPнÇ¿‚ØQÐŽ0ØD*Z» Hèž$ùZ3‚LïáIDiÛ즲ÀM]x©¿Å2ØóÙŒm×ì—ÕíNo>b™£¤ñ“
+Õ)?‹`\«z»§¾â‚ _¥è²=ñm þ”R Øqšaõ¹§C&FQ}lZNŠ€¢JYÓÊ®BU,¯ÚÍ-^œo
+z·Êdðp•…95"ü…£‹2¸cýTxk˜i “ºïî Èjô½`ŽÐ?ìƒsUýÂæ½Bïe¬^á92¯F¢Ú 5¦ÄQ™;EeëraÚªCm
+¹®¼èh9
+'Óªv†Ñ.RËÿ¼‹À3¡:ÀAU™^Hx)”ˆÚ)£gp¤Q ©„·zÕÊ!r£ë†z—+;ŒµÛ­íÀšf˜%әɇk²|ÇÚV̵Ȉ'6¢¬XpY,f"GÔdËÀ÷1
+endstream endobj 446 0 obj <</Annots[447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R]/Contents 509 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 447 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1022 0 R/FitH 308]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 448 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1022 0 R/FitH 111]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 449 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1024 0 R/FitH 618]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 450 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1024 0 R/FitH 430]/H/I/Rect[522 724 538 736]/Subtype/Link/Type/Annot>> endobj 451 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1024 0 R/FitH 297]/H/I/Rect[522 713 538 725]/Subtype/Link/Type/Annot>> endobj 452 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1024 0 R/FitH 184]/H/I/Rect[522 702 538 714]/Subtype/Link/Type/Annot>> endobj 453 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1026 0 R/FitH 619]/H/I/Rect[522 690 538 702]/Subtype/Link/Type/Annot>> endobj 454 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1026 0 R/FitH 485]/H/I/Rect[522 678 538 690]/Subtype/Link/Type/Annot>> endobj 455 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1026 0 R/FitH 352]/H/I/Rect[522 668 538 680]/Subtype/Link/Type/Annot>> endobj 456 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1026 0 R/FitH 239]/H/I/Rect[522 656 538 668]/Subtype/Link/Type/Annot>> endobj 457 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1028 0 R/FitH 784]/H/I/Rect[522 644 538 656]/Subtype/Link/Type/Annot>> endobj 458 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1028 0 R/FitH 448]/H/I/Rect[522 633 538 645]/Subtype/Link/Type/Annot>> endobj 459 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1028 0 R/FitH 293]/H/I/Rect[522 621 538 633]/Subtype/Link/Type/Annot>> endobj 460 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1028 0 R/FitH 179]/H/I/Rect[522 610 538 622]/Subtype/Link/Type/Annot>> endobj 461 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1030 0 R/FitH 784]/H/I/Rect[522 598 538 610]/Subtype/Link/Type/Annot>> endobj 462 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1030 0 R/FitH 660]/H/I/Rect[522 587 538 599]/Subtype/Link/Type/Annot>> endobj 463 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1030 0 R/FitH 526]/H/I/Rect[522 575 538 587]/Subtype/Link/Type/Annot>> endobj 464 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1030 0 R/FitH 402]/H/I/Rect[522 564 538 576]/Subtype/Link/Type/Annot>> endobj 465 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1030 0 R/FitH 226]/H/I/Rect[522 552 538 564]/Subtype/Link/Type/Annot>> endobj 466 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1032 0 R/FitH 496]/H/I/Rect[522 541 538 553]/Subtype/Link/Type/Annot>> endobj 467 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1032 0 R/FitH 372]/H/I/Rect[522 529 538 541]/Subtype/Link/Type/Annot>> endobj 468 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1032 0 R/FitH 257]/H/I/Rect[522 518 538 530]/Subtype/Link/Type/Annot>> endobj 469 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1034 0 R/FitH 784]/H/I/Rect[522 506 538 518]/Subtype/Link/Type/Annot>> endobj 470 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1034 0 R/FitH 659]/H/I/Rect[522 495 538 507]/Subtype/Link/Type/Annot>> endobj 471 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1036 0 R/FitH 148]/H/I/Rect[522 483 538 495]/Subtype/Link/Type/Annot>> endobj 472 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1040 0 R/FitH 134]/H/I/Rect[522 471 538 483]/Subtype/Link/Type/Annot>> endobj 473 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1042 0 R/FitH 576]/H/I/Rect[522 460 538 472]/Subtype/Link/Type/Annot>> endobj 474 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1042 0 R/FitH 421]/H/I/Rect[522 449 538 461]/Subtype/Link/Type/Annot>> endobj 475 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1042 0 R/FitH 192]/H/I/Rect[522 437 538 449]/Subtype/Link/Type/Annot>> endobj 476 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1044 0 R/FitH 616]/H/I/Rect[522 425 538 437]/Subtype/Link/Type/Annot>> endobj 477 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1044 0 R/FitH 450]/H/I/Rect[522 414 538 426]/Subtype/Link/Type/Annot>> endobj 478 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1044 0 R/FitH 209]/H/I/Rect[522 403 538 415]/Subtype/Link/Type/Annot>> endobj 479 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1046 0 R/FitH 233]/H/I/Rect[522 391 538 403]/Subtype/Link/Type/Annot>> endobj 480 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1048 0 R/FitH 230]/H/I/Rect[522 380 538 392]/Subtype/Link/Type/Annot>> endobj 481 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 784]/H/I/Rect[522 369 538 381]/Subtype/Link/Type/Annot>> endobj 482 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 659]/H/I/Rect[522 357 538 369]/Subtype/Link/Type/Annot>> endobj 483 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 535]/H/I/Rect[522 345 538 357]/Subtype/Link/Type/Annot>> endobj 484 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 359]/H/I/Rect[522 334 538 346]/Subtype/Link/Type/Annot>> endobj 485 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 247]/H/I/Rect[522 322 538 334]/Subtype/Link/Type/Annot>> endobj 486 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1050 0 R/FitH 123]/H/I/Rect[522 311 538 323]/Subtype/Link/Type/Annot>> endobj 487 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1052 0 R/FitH 703]/H/I/Rect[522 299 538 311]/Subtype/Link/Type/Annot>> endobj 488 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1052 0 R/FitH 569]/H/I/Rect[522 288 538 300]/Subtype/Link/Type/Annot>> endobj 489 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1052 0 R/FitH 445]/H/I/Rect[522 276 538 288]/Subtype/Link/Type/Annot>> endobj 490 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1052 0 R/FitH 280]/H/I/Rect[522 265 538 277]/Subtype/Link/Type/Annot>> endobj 491 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1052 0 R/FitH 119]/H/I/Rect[522 253 538 265]/Subtype/Link/Type/Annot>> endobj 492 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1054 0 R/FitH 515]/H/I/Rect[522 242 538 254]/Subtype/Link/Type/Annot>> endobj 493 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1054 0 R/FitH 318]/H/I/Rect[522 230 538 242]/Subtype/Link/Type/Annot>> endobj 494 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1056 0 R/FitH 784]/H/I/Rect[522 219 538 231]/Subtype/Link/Type/Annot>> endobj 495 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1056 0 R/FitH 567]/H/I/Rect[522 207 538 219]/Subtype/Link/Type/Annot>> endobj 496 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1056 0 R/FitH 464]/H/I/Rect[522 196 538 208]/Subtype/Link/Type/Annot>> endobj 497 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1056 0 R/FitH 320]/H/I/Rect[522 184 538 196]/Subtype/Link/Type/Annot>> endobj 498 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1056 0 R/FitH 197]/H/I/Rect[522 172 538 184]/Subtype/Link/Type/Annot>> endobj 499 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1058 0 R/FitH 786]/H/I/Rect[522 161 538 173]/Subtype/Link/Type/Annot>> endobj 500 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1058 0 R/FitH 752]/H/I/Rect[522 150 538 162]/Subtype/Link/Type/Annot>> endobj 501 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1058 0 R/FitH 543]/H/I/Rect[522 138 538 150]/Subtype/Link/Type/Annot>> endobj 502 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1058 0 R/FitH 280]/H/I/Rect[522 126 538 138]/Subtype/Link/Type/Annot>> endobj 503 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1058 0 R/FitH 147]/H/I/Rect[522 116 538 128]/Subtype/Link/Type/Annot>> endobj 504 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1060 0 R/FitH 693]/H/I/Rect[522 104 538 116]/Subtype/Link/Type/Annot>> endobj 505 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1060 0 R/FitH 579]/H/I/Rect[522 92 538 104]/Subtype/Link/Type/Annot>> endobj 506 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1060 0 R/FitH 437]/H/I/Rect[522 81 538 93]/Subtype/Link/Type/Annot>> endobj 507 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1060 0 R/FitH 404]/H/I/Rect[522 70 538 82]/Subtype/Link/Type/Annot>> endobj 508 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1062 0 R/FitH 485]/H/I/Rect[522 58 538 70]/Subtype/Link/Type/Annot>> endobj 509 0 obj <</Filter/FlateDecode/Length 4024>>stream
+H‰ä—ÛrÛ8†Ÿ`ß—ä… â2ŽsðÖØÉF²÷"ÙÚb$Æ£-%r9³yûín",QP–´<£TÊ$H‚àÿ¡»ÿ>›1Nÿê[öìõ”³ÛïìÙLü›3ÁfŸ™Ë87’npÌäYιbÖ‰LIž³Ù–°tözBø'8<—æLš,WŽM
+“B±Ù‚%/gÓ zàåŒ}cÊé &·¼EÃã²ÈD·ÉY]±²¯ìl®ç–çž´¯ùãáý”Í%÷küàß;›Â+R!ôÀ¿ŠÝø,‰Î8û˜¤"Od: ÇqG&ý×ìï¸àÀ’”Y^l—¬¢«Å…>žÞY]2iñó›p~!3wTe{^dz^ÄõÇ4x—t°½}—ö*?Ëî«?
+öM÷IÖý
+eÓQ¶{”ÃØAV¯Ó"y÷9Ãçk¨Øü[!È:5Éw<X®¿²T¨ÔÕ-~ÎÞÃeºoU•8ú½b´KdÇ¿Y§ Öé¼ .7¹_ª¸]_.á[Ûõ¹ Î2œÒªÔAàLÜ•\|…“Ï©ÉF`•XÚ—Tʤ„C‘l`¹xû{øº
+Vú FMrCÕ÷Ô&6K'R'?S)’»ŠÁƒ.Éé÷ño½Ã¤íÙ`’Ü % <4RÂ`Iˆ9JêA p|^ˆŒçÒ+ÙU4!¨™|„Ñfž€‡Â©ª/ý®9
+e–@Ë(Í"ÊEAr=\L0ï`ÃÃØ;Šˆç)h|Æ.ÎÓ Þ‘ó'PúWD‡±Äâ¢ã„W…Ä-¼´x°/|ÿª®¾Ñþ†ÝŽ0§hø‰wü†7—Ûs¼£f/€Ïš‚
+Í j¹D¶_)!Š&!>fíêÛŽ0}%6 ùCƒˆõ0Ä!–aI./D¯+x
+Y5.ú¦Z­çKÊy?qm³±Oeæb•KÛxC“?l¬ËMÑëã
+h¬;dÅ–ëÅrîÍmëyÙö6;=Ô!-NO#ÖÃHuÃn£hÛëÜ
+0h ³L|©×=¸Y’™ƒæ‘]û¼÷ž:œ+J=yåÕ
+è|^×¾#¥häôiŒ^Ô:Qôaf ‰@½Ñ$”Éò>z×ɽAyý¦‡ˆ(7ëôtêÏ6ΰí]áâû~„Ô<Q©)é˨ÒR÷:´Â Ò(î
+îë&Ù_,ð
+*|“N\‚¡A¹g}WÕÛê{·n»Æ%hÿiå?ùØGQ6;2æªÓœ>X‹Ìj‰Ð?¨ ÙXýMáúP×ÿ ž½MUX¨¬Jñ46ôp™Ôq:\úP®±ÎßØ¢ßø8”¾Õ\ðNô¦PÛôÐpúVêK
+w‡‹B¤úU>P+®üA½óë·ÝÕÛñ`«¿œ ¦;frZÕ?àžå¼boJÊ-´ç×8XyéAð¨ê‘D#3k™žzjÔ» ¹Ž'czíŽò×/Ùó[8ÇÿTo}ÇÓrS±K/ü‘ÖNÚë÷¸÷éˆ-7¾'À¸)S‘l¶U@OÔîËÜô‚%r`Àºúl {Þ΂^zIäO(wUc¡ý—wlº)7÷ßÓ‰9¹Ðû‚ï'~íúõîd·eD÷•ìµ<Nµæ¿J©mM•)g9ŸW$2Jß”Ëõ¢ÂCõ4õ6¦|d#$d:$¹6^rã
+•\ò—£§1Û³·Ÿ?#€Uš'ëš­íwî˜(Á3]~‡}hªÃ™ïJ0úuù%•’<ÿ£„‚Bå§ÇsŒQy´MÁ'ÐttHp×k…œÁ¸œ^LϯÈ
+¡ž§wõ1…ÅVaíHbX­8T~þ@ëb Ö>c¿v û¾Öyÿ/Þ -Ô€ÏýÃÊÜlöÖm(u…ç¼9…;—·íC*i]œßÐb<K(e E€ŒR)ò~‹d)Îé¶:“íß6d‰Ð*m¡ÚžÅ“‰ÃÕ™gVES‘Gá¢ô;X-ô¶ZQV÷8$¨U‹Kq°@Àb„jë{O¥\&wëz“Šèú‰SW$oA-3ê—ò`‘b –@ÊÑXrÕã›
+_žS4§TËɦ6›Ú‹õ¼«ø\ãbEçb Êí»aNZD:ªãAá«e&#11F å!¦ðÙ‰;m1´,zl•,é04Tº…”ð€ÚÔn?Ù§Xkû Ý櫇<Åo8#•|<ÝàÁ ÁôÚm3`PMZÀI äh{¬Šp§âöWØ£¥“¢2‚œò-§órSnE¦Zëuåf½ºÿ’B“‚yìa•@,µ§ï[ÇÖkSFÐ =₹Ó&
+‡›ç…¹McŽºö9Ì£¹Øš_²Â>SQ¨4ÕS+¾¯ünl¸LÛx5O ml{¨œîqYˆÀå…2éNeä«¿´SÙ—8ŒM óµß÷%8H%žØU5;
+yÀmå»BÏ+Ìk¿-ÛFñÉB&/VöØÃaâ4æÁ”ØKÁAòª.AXáe®Ø´úvW+CóŠ]Á Oî Ýõ ×uŠÿ€
+­®/'¤²¹N˜8!±hI7¢èÃ5P éèh‘ÝAðyIÀÞR g/¦¯Î@Ö.§Žƒ2ñ¹CU”X¸…ê·OBZ¿Åô¿aoiç{Á¯g[{ûö´¯Û°§ÅÓµnF
+„;$½Ö­‡Uñ Ï%Vÿ ¯‚"­oÖËÔ ;òÖu
+ùæ/ÜASÑI°]<]ÞDùŸª.Kü3\¿#ܦ†à]X×P¹•:¿n­ªÃE‹•.㽩ãô?öË¥·i ŠÂe–ö"–çåñ,+RA$ˆÐnX¥%*¢¬TˆϽwü{Œ<JX@¤J®ë¦éùæÜs®™ÉÉÓ6v0 ›c%LÊ3K½ASܧ2y…áÍÞ¼g+Šè.²i‰SªH#ŠŸ—Y¡ÂÓi¾æ¾N£Þ([oÔÜØê„ÞÐä T&Ï=œ_{Ô 9,Q¶5œü‘ÍÓšè\)DÆÞœ`„<U']ÁE°N‰Â`ôDHѸ¶À¤«FÔrßâïÖŒnÑ7O(=6)bÀ® ý•gª”SÀ“mÔ$º ¸8/LèCy§F†ËÎ8¸°¡B®Ó¿P¦|¼Ã¡lãˆ?jSYOÉX(°‘ž7+„R:(úŸƒR΄â) EJlP¬ƒRü‡ò‡P<%c¡ŽuáŠÈóÏA±3¡xJŽÆ:ï5 ç:”¦óæ¹.x í¾U55\|æÛ¿pËxØWÍ–h‹Ëb! ¿•]euHýÉ=•Æ$Ôu§÷ nËá&%„§ø+R(û ÚdÍ^ѹ_€Wö{¶ÚU¨ý‘
+Õ\Ô¾r5—¥â
+Žu*#‹éV;“…¯_°ÕâHR:ˆ¢4XPHDA•õ ôW"²Z¦ ä#¹å×7Ypä”™š»{E¨îI5¹KL9ÀèÒ„²+Ï›Ê+°ÅqмùØa³À­*Ù>ì›c¡“/¸øÑÊçž&ÃÀC°ÂÕŽ|Ü5Ã? ²{ùD{j²·I£D&ôøÞÁÉÓvtRY|¯Q:…ÂÌ÷öŒv.)‘'n,áœI¶(#*IÌÖÕñG*Lr¨¿ºÇÛoKâÿ„›UÊ“ºÁS õßÂűڱÕ-¾Ñ%£<ÈB磂”ÏDá ´ŒÊ8 F‹“î$œaPéQ"©‚·m œYà¼+˜Œ˜+:ÙíêÆgàø(Íߌž nP<<gZ>ßïeÉqh Bz¯^‚PHôv°pB=>a“rã &‘”×?”ܶ´á0‰ÐßS/ºD ‹%Àœ’‰%}öÚ±ø.Œ ºZÞ±MõYQ‘z¬Øšjë …Æ4)\JRs™`b¡{´H)•åb ""
+4\êºÚw‹š „Õ/LyÅ;:p¤Í” Ïû^t>StO¨!Ñ©°ªFt.Cš[í7#:®žeq~©“‚BÀ&/ÏÏÕžu8ƒá-œÃpµ´ÍÐýœ¬02žmu"muÔd·GlMOt›žb×8N®J5Ep>=OòØ‘UÊ“%½^»¾ÙôÍtÛVÒEðòªû^`ÕƒÍ'â¹yÍÜS)Vp#NÚ’ì[k´¸ãÝ-j
+Ç&n µnØÝ-[íÜý'²ÁO`£ô¥ÙD,qsxÂ1м iC Š#ÿ„‚1…éú‰Ô­R…ÃEcAíÇ”í?*üÇV·j[Ó"A4–ôû,•Åõ šDJñ w
+endstream endobj 510 0 obj <</Annots[511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R]/Contents 573 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 511 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1062 0 R/FitH 298]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 512 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1064 0 R/FitH 517]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 513 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1064 0 R/FitH 468]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 514 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1064 0 R/FitH 332]/H/I/Rect[522 724 538 736]/Subtype/Link/Type/Annot>> endobj 515 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1064 0 R/FitH 198]/H/I/Rect[522 713 538 725]/Subtype/Link/Type/Annot>> endobj 516 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1066 0 R/FitH 784]/H/I/Rect[522 702 538 714]/Subtype/Link/Type/Annot>> endobj 517 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1066 0 R/FitH 660]/H/I/Rect[522 690 538 702]/Subtype/Link/Type/Annot>> endobj 518 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1066 0 R/FitH 461]/H/I/Rect[522 678 538 690]/Subtype/Link/Type/Annot>> endobj 519 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1066 0 R/FitH 303]/H/I/Rect[522 668 538 680]/Subtype/Link/Type/Annot>> endobj 520 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1072 0 R/FitH 228]/H/I/Rect[522 656 538 668]/Subtype/Link/Type/Annot>> endobj 521 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 784]/H/I/Rect[522 644 538 656]/Subtype/Link/Type/Annot>> endobj 522 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 659]/H/I/Rect[522 633 538 645]/Subtype/Link/Type/Annot>> endobj 523 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 610]/H/I/Rect[522 621 538 633]/Subtype/Link/Type/Annot>> endobj 524 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 561]/H/I/Rect[522 610 538 622]/Subtype/Link/Type/Annot>> endobj 525 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 511]/H/I/Rect[522 598 538 610]/Subtype/Link/Type/Annot>> endobj 526 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 462]/H/I/Rect[522 587 538 599]/Subtype/Link/Type/Annot>> endobj 527 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1074 0 R/FitH 318]/H/I/Rect[522 575 538 587]/Subtype/Link/Type/Annot>> endobj 528 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1076 0 R/FitH 298]/H/I/Rect[522 564 538 576]/Subtype/Link/Type/Annot>> endobj 529 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1078 0 R/FitH 784]/H/I/Rect[522 552 538 564]/Subtype/Link/Type/Annot>> endobj 530 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1078 0 R/FitH 629]/H/I/Rect[522 541 538 553]/Subtype/Link/Type/Annot>> endobj 531 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1078 0 R/FitH 421]/H/I/Rect[522 529 538 541]/Subtype/Link/Type/Annot>> endobj 532 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1078 0 R/FitH 138]/H/I/Rect[522 518 538 530]/Subtype/Link/Type/Annot>> endobj 533 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1080 0 R/FitH 596]/H/I/Rect[522 506 538 518]/Subtype/Link/Type/Annot>> endobj 534 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1080 0 R/FitH 483]/H/I/Rect[522 495 538 507]/Subtype/Link/Type/Annot>> endobj 535 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1080 0 R/FitH 245]/H/I/Rect[522 483 538 495]/Subtype/Link/Type/Annot>> endobj 536 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1084 0 R/FitH 131]/H/I/Rect[522 471 538 483]/Subtype/Link/Type/Annot>> endobj 537 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1086 0 R/FitH 683]/H/I/Rect[522 460 538 472]/Subtype/Link/Type/Annot>> endobj 538 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1086 0 R/FitH 508]/H/I/Rect[522 449 538 461]/Subtype/Link/Type/Annot>> endobj 539 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1086 0 R/FitH 383]/H/I/Rect[522 437 538 449]/Subtype/Link/Type/Annot>> endobj 540 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1086 0 R/FitH 249]/H/I/Rect[522 425 538 437]/Subtype/Link/Type/Annot>> endobj 541 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1088 0 R/FitH 115]/H/I/Rect[522 414 538 426]/Subtype/Link/Type/Annot>> endobj 542 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1090 0 R/FitH 714]/H/I/Rect[522 403 538 415]/Subtype/Link/Type/Annot>> endobj 543 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1090 0 R/FitH 591]/H/I/Rect[522 391 538 403]/Subtype/Link/Type/Annot>> endobj 544 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1090 0 R/FitH 446]/H/I/Rect[522 380 538 392]/Subtype/Link/Type/Annot>> endobj 545 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1090 0 R/FitH 103]/H/I/Rect[522 369 538 381]/Subtype/Link/Type/Annot>> endobj 546 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1092 0 R/FitH 692]/H/I/Rect[522 357 538 369]/Subtype/Link/Type/Annot>> endobj 547 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1092 0 R/FitH 537]/H/I/Rect[522 345 538 357]/Subtype/Link/Type/Annot>> endobj 548 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1092 0 R/FitH 415]/H/I/Rect[522 334 538 346]/Subtype/Link/Type/Annot>> endobj 549 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1092 0 R/FitH 291]/H/I/Rect[522 322 538 334]/Subtype/Link/Type/Annot>> endobj 550 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1092 0 R/FitH 158]/H/I/Rect[522 311 538 323]/Subtype/Link/Type/Annot>> endobj 551 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1094 0 R/FitH 703]/H/I/Rect[522 299 538 311]/Subtype/Link/Type/Annot>> endobj 552 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1094 0 R/FitH 253]/H/I/Rect[522 288 538 300]/Subtype/Link/Type/Annot>> endobj 553 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1096 0 R/FitH 143]/H/I/Rect[522 276 538 288]/Subtype/Link/Type/Annot>> endobj 554 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1098 0 R/FitH 672]/H/I/Rect[522 265 538 277]/Subtype/Link/Type/Annot>> endobj 555 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1098 0 R/FitH 528]/H/I/Rect[522 253 538 265]/Subtype/Link/Type/Annot>> endobj 556 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1098 0 R/FitH 227]/H/I/Rect[522 242 538 254]/Subtype/Link/Type/Annot>> endobj 557 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1100 0 R/FitH 724]/H/I/Rect[522 230 538 242]/Subtype/Link/Type/Annot>> endobj 558 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1100 0 R/FitH 591]/H/I/Rect[522 219 538 231]/Subtype/Link/Type/Annot>> endobj 559 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1100 0 R/FitH 446]/H/I/Rect[522 207 538 219]/Subtype/Link/Type/Annot>> endobj 560 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1100 0 R/FitH 343]/H/I/Rect[522 196 538 208]/Subtype/Link/Type/Annot>> endobj 561 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1106 0 R/FitH 784]/H/I/Rect[522 184 538 196]/Subtype/Link/Type/Annot>> endobj 562 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1106 0 R/FitH 660]/H/I/Rect[522 172 538 184]/Subtype/Link/Type/Annot>> endobj 563 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1106 0 R/FitH 507]/H/I/Rect[522 161 538 173]/Subtype/Link/Type/Annot>> endobj 564 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1106 0 R/FitH 372]/H/I/Rect[522 150 538 162]/Subtype/Link/Type/Annot>> endobj 565 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1108 0 R/FitH 545]/H/I/Rect[522 138 538 150]/Subtype/Link/Type/Annot>> endobj 566 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1108 0 R/FitH 510]/H/I/Rect[522 126 538 138]/Subtype/Link/Type/Annot>> endobj 567 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1108 0 R/FitH 221]/H/I/Rect[522 116 538 128]/Subtype/Link/Type/Annot>> endobj 568 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1108 0 R/FitH 96]/H/I/Rect[522 104 538 116]/Subtype/Link/Type/Annot>> endobj 569 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1132 0 R/FitH 338]/H/I/Rect[522 92 538 104]/Subtype/Link/Type/Annot>> endobj 570 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1266 0 R/FitH 230]/H/I/Rect[522 81 538 93]/Subtype/Link/Type/Annot>> endobj 571 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1366 0 R/FitH 256]/H/I/Rect[522 70 538 82]/Subtype/Link/Type/Annot>> endobj 572 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1368 0 R/FitH 420]/H/I/Rect[522 58 538 70]/Subtype/Link/Type/Annot>> endobj 573 0 obj <</Filter/FlateDecode/Length 3973>>stream
+H‰Ü—ÛrÛȆŸ ï0—À±sÄ`.-ËQ)Y©“Þ\Ø©BbfeQ&i»üöéîÁŒh@¤RË"Ààûûð÷ÅŒqú·þÄ~¹šröiÃ~™‰r&Øìwæ2Τ8fò,ç\1ëD¦$ÏÙì3KX:û]!ü®ÀSs&M–+Ç&…É
+¡ØlÁ’7³é5]ðfƾ0åt7·<EÃå²ÈD·›³uÅþÎîÙÅ,\ Þ[j¼÷d÷˜ï—èoY¯Qr¿Æþ¹³)<"21L üTì7 KE¢3Î>&©È™NDÂñ¸À=“þcö\ðß`ÉFÊ,/š%«èjq¡ÒÕ«K&5Þ_ÈÌ=IDÙŽ™Žqý1 ž%¬F7ÏrÃåïrø(!—‚¸iGˆ,ö"«–Èaî5VW©MÞ¾E™áí5é§Ø7ü¬Ò‰LÖ©I6¡–B›Ìîæø“«rͪ„h­Êß®µ¬åꞥB% ¥ÆOŒ5ÎÞÁb*Œ®»ªÄ£›Š ü”ûÖÏ—}|¼ÎÄ.î]nrÿp”®¡’K ¼{¼Ëd¦2ŠöÔ%ìm:±I™Êä|[¦:¹Ç–j¸iò:-àÜDˆä+Ü
+ÀWéDA¼N >§R&åv ‡„I ”€Ã©•ØÃW{øð:Bx«¼ZqÞü"ý B¶É$È}¨S\¾‡oJœgŒð˜ðŠ;@Ô‡ûÈR#-î´`çû×W)Dì5E1VûœqÛ³ kí¶ÍœÑÇÀöÛä¨>予V‘g¼8D­›RnÞqסtA}ÓfBäþ ?$ïH‘×l(öÇÛO‰•ܤ>Z†"GÆ=—™s{÷ÆýK ‘¦"ƒ ð’ñá^À®=:ü¼>À5|îT§·qÁ_#oñÿPo9E‰+ä*£È ÑieGæ„JR•,UpEr½¨ÐÈl—ÛtR$?ð¨Ôg”"ð.Ïã?‚}
+µ—‚bNËLš~-†‹"ëh-ºÝ’ äøP5š7¬É°zÏ$’»’L*šªÝ¡/hs½m"3»­=.ù݇
+LkîN#KD•qÑãŸFÈ ˜yŽýÞŠ y B»øà.þoË¿¯E”3•WäÒ«0_Ò@X­—÷8²?}~øÃÀ£rþ¼šD‡ió– ƒ(C
+@Œç§´Œé™Û嘤¬õ0Eá«T™Š&Ø_‘±oß1aîþdZ­¿aû
+ӃƼ®0gQ…Ùë
+Ûi‘”
+ºÅ´º«æh>©e“Q½æ»¨¨,I‹`üÄK]G27™œz™;¼W/in:=‘ÒéÛWS6­[„烹 j ùsšsÿ…{Õ®Ùêâ|A>¸íæÁØâà•ç våt§5RfWpp¨Z,×í‚×¾ô@!ú´{WaJ¤ªÐç¨ü±¸·ê©é`8ÿÙÈž«
+Ùm{ò=~Ù…ï/ë^k^¸ÐHõdA<À4–¸°êâáz_y!uÖikwV;Yo{Ö¢a­9š"ÓOw³`€VÞ•qÝf&yo.n°¾{‡bi¼õe…‚½ÕP?Gaït`¢ã–ˆÛÄ^cG^¥‹nãÙ_TåºZƒëopj Õ' ½ ×'7Œ‘6*3iúKËØ ¸k÷´ãEEåØ‘m›v øˆ·0Æó¦ÆùÕG55î‘g¿¾oOSR%%ù_æE~âZôBìÖi°·èk~t¹D{¹ÆfêÉ@Ž³C¸FÛG¡:ý‹H•˜§õ¼Ô”—`6Å0Oª’l=š˜ÓWšøa#ÓPô®ñE‡KlÐí°—AØ¿#ÎŒ*:M©ø˜
+ôÁ—℆~L™È?D6¬ÌKë:-Ö‡e[ì-ÌMì²¢Ò2AÆ~˜Â¯Øm—^‚u=?Á럼òŒîBE%ìá¢!Ÿ[lÓmú¦¦EÝ|8º›\ 5ºœ]ÉñÀÃáö ¶^/ ýèÐ~úy ÷’Pæk•É¼»1iø@9†½9`k=ž*A°Óizò°úÐ
+†YÏx³­Г1ðA¦ë·é
+Í žºÛ.çe-A¯Ðº.ëj³a%J¶ŽÓÅ· µyÞ2Õ(¢÷c¯¡ÀÔyÆùw„ º^ŠF†èœ%µî6@ö‘ EK¢}ÈÃÚ¤°Y€&˜DÏ;Øbå©¿%P! ׫‚ØÙPWA)lî*ˆšU‘ìC~gE7òù9xÿÝK¦5­
+ÿÞ°XùDz¨¶ËfH@…ÿË{¹ô¶ Aø¯ð¨"ˆ)ŠÇ¢IÓâKšžrQl5àØ¡ôñï»»¤$*–XCŠl €ŠóqwfVoPÒDôˆ¥­´­ (-™cÇwV
+ÏêÁì
+”øDJž²m[p4þã 1ބاäD©Y½·â²€e/ ¾@»g…¢S+ú’>Ñ×}À¾U’ÍÈ í=å&jÏ“ÁÈ3{¼6Õ¡\׌ò*­›Úº2yÅ^³¯¸ö·€©x‚cž¦g¨k¡ª&óñÔ4_~O¼°MP©“¡ÅM>˜žà»ˆåv¿®HsŠ=nQQ¨)>½|âIT
+ljímz ´YáË@ pf`WQ?¦:(bát|ë¾r——¤qn ¹>á‘ñx’ÎR\«Á(¥Òñ(…iêôO¢Ï«»;Qñüëu›²Ð=ÖY ~Æ
+ëÞÅ 42‰ÆÔ/à»u4¾UOÏÈáÀ«ªa5>׉ oÅn_é%²ìmËâ ]
+lwxþÂýv¶þàG=D”ŽãÚsñl .É»UÌ>ÁøesIûd7f™Ð±áݨa5‘°G%†¡¹q&, †Šv·¥1åákšÄy(¶¨VÆÏmé=Am]ÇR–¼±Û Í=f»;œe?|¥1wF"EÝ£;4M 'EÙrÇ^Õ/4“º´gÖµC<ßÅ¿DwN<\Ó‹äGÈÖÅ‹Ì^aíÈ+Ã×íGã½ lšÇÁaS6ìÍõÏ&õ}ˆ}u#Ô-ÏœŒJÅÚø5gOÁlžI[Ýç)<žÝŠkyÑv*´lË!Ã'¢ýºÜ ªô d—%©@ú]e Ð~G¢9Ð[ég2x¬e(QÏ ã©9w»Õ n©50ûòVòñnæ<j
++\{2ËϹöë‚?mÝ1‘éiê{ŠÍ‹<í…6 åMÅ jííšhDÀ`@
+MD‚¢E?ÐÅ¡¿@•´ Ÿt~iƒ1hæ„@¸aá[
+UçÄ`AùO…÷ÒÿN
+Kó‰@<Gèˆ ÉÌÌÑ
+endstream endobj 574 0 obj <</Annots[575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R]/Contents 618 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1464 0 R/T3_0 1466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 575 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1382 0 R/FitH 193]/H/I/Rect[522 759 538 771]/Subtype/Link/Type/Annot>> endobj 576 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1392 0 R/FitH 778]/H/I/Rect[522 748 538 760]/Subtype/Link/Type/Annot>> endobj 577 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1392 0 R/FitH 710]/H/I/Rect[522 736 538 748]/Subtype/Link/Type/Annot>> endobj 578 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1394 0 R/FitH 704]/H/I/Rect[522 716.8 538 730]/Subtype/Link/Type/Annot>> endobj 579 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1394 0 R/FitH 639]/H/I/Rect[522 706 538 718]/Subtype/Link/Type/Annot>> endobj 580 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1394 0 R/FitH 292]/H/I/Rect[522 694 538 706]/Subtype/Link/Type/Annot>> endobj 581 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1396 0 R/FitH 787]/H/I/Rect[522 683 538 695]/Subtype/Link/Type/Annot>> endobj 582 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1396 0 R/FitH 752]/H/I/Rect[522 672 538 684]/Subtype/Link/Type/Annot>> endobj 583 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1396 0 R/FitH 430]/H/I/Rect[522 660 538 672]/Subtype/Link/Type/Annot>> endobj 584 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1398 0 R/FitH 786]/H/I/Rect[522 648 538 660]/Subtype/Link/Type/Annot>> endobj 585 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1398 0 R/FitH 530]/H/I/Rect[522 637 538 649]/Subtype/Link/Type/Annot>> endobj 586 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1398 0 R/FitH 497]/H/I/Rect[522 626 538 638]/Subtype/Link/Type/Annot>> endobj 587 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1398 0 R/FitH 236]/H/I/Rect[522 614 538 626]/Subtype/Link/Type/Annot>> endobj 588 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1398 0 R/FitH 175]/H/I/Rect[522 602 538 614]/Subtype/Link/Type/Annot>> endobj 589 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1402 0 R/FitH 786]/H/I/Rect[522 591 538 603]/Subtype/Link/Type/Annot>> endobj 590 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1404 0 R/FitH 786]/H/I/Rect[522 580 538 592]/Subtype/Link/Type/Annot>> endobj 591 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1404 0 R/FitH 474]/H/I/Rect[522 568 538 580]/Subtype/Link/Type/Annot>> endobj 592 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 650]/H/I/Rect[522 556 538 568]/Subtype/Link/Type/Annot>> endobj 593 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 450]/H/I/Rect[522 537.8 538 551]/Subtype/Link/Type/Annot>> endobj 594 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 405]/H/I/Rect[522 526 538 538]/Subtype/Link/Type/Annot>> endobj 595 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 337]/H/I/Rect[522 515 538 527]/Subtype/Link/Type/Annot>> endobj 596 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 301]/H/I/Rect[522 504 538 516]/Subtype/Link/Type/Annot>> endobj 597 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1406 0 R/FitH 238]/H/I/Rect[522 492 538 504]/Subtype/Link/Type/Annot>> endobj 598 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1408 0 R/FitH 284]/H/I/Rect[522 480 538 492]/Subtype/Link/Type/Annot>> endobj 599 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1408 0 R/FitH 249]/H/I/Rect[522 469 538 481]/Subtype/Link/Type/Annot>> endobj 600 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1408 0 R/FitH 174]/H/I/Rect[522 458 538 470]/Subtype/Link/Type/Annot>> endobj 601 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1418 0 R/FitH 777]/H/I/Rect[522 435.8 538 449]/Subtype/Link/Type/Annot>> endobj 602 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1418 0 R/FitH 710]/H/I/Rect[522 416.8 538 430]/Subtype/Link/Type/Annot>> endobj 603 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1418 0 R/FitH 669]/H/I/Rect[522 406 538 418]/Subtype/Link/Type/Annot>> endobj 604 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1418 0 R/FitH 486]/H/I/Rect[522 386.8 538 400]/Subtype/Link/Type/Annot>> endobj 605 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1418 0 R/FitH 440]/H/I/Rect[522 375 538 387]/Subtype/Link/Type/Annot>> endobj 606 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1420 0 R/FitH 758]/H/I/Rect[522 364 538 376]/Subtype/Link/Type/Annot>> endobj 607 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1422 0 R/FitH 778]/H/I/Rect[522 353 538 365]/Subtype/Link/Type/Annot>> endobj 608 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1422 0 R/FitH 743]/H/I/Rect[522 341 538 353]/Subtype/Link/Type/Annot>> endobj 609 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1424 0 R/FitH 779]/H/I/Rect[522 329 538 341]/Subtype/Link/Type/Annot>> endobj 610 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1426 0 R/FitH 779]/H/I/Rect[522 318 538 330]/Subtype/Link/Type/Annot>> endobj 611 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1428 0 R/FitH 779]/H/I/Rect[522 306 538 318]/Subtype/Link/Type/Annot>> endobj 612 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1430 0 R/FitH 779]/H/I/Rect[522 295 538 307]/Subtype/Link/Type/Annot>> endobj 613 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1432 0 R/FitH 778]/H/I/Rect[522 284 538 296]/Subtype/Link/Type/Annot>> endobj 614 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1438 0 R/FitH 777]/H/I/Rect[522 261.8 538 275]/Subtype/Link/Type/Annot>> endobj 615 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1440 0 R/FitH 777]/H/I/Rect[522 240.8 538 254]/Subtype/Link/Type/Annot>> endobj 616 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1442 0 R/FitH 777]/H/I/Rect[522 218.8 538 232]/Subtype/Link/Type/Annot>> endobj 617 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[1460 0 R/FitH 790]/H/I/Rect[522 199.8 538 213]/Subtype/Link/Type/Annot>> endobj 618 0 obj <</Filter/FlateDecode/Length 3452>>stream
+H‰äWÛrÛÈý‚üÃ<ªÂ1æ
+LÞ´2KQjåu,n’*+•â’Œ„òåïÓ݃ËP!™”éJ­•·AãœîÓ§š±”þknØ«³Ë”ݬ٫™üGÊ$›]3/ÒÔ*ºÁ3ë„KSÍ2/…V©c³Œ³döOzB†'Rx/-˜²ÂiÏ&¹¹Ôl¶d|:»<§¦3öo¦½°y–Ã[ <®r!“)lΚ‚ý•Uì§Y î­ î=é^óy;Ä°e£JCŒïÃ{g—ðŠD*n™‘ø¯f 'D"¹)»â‰t\%ÉS</qe“¿Ïþ„ÿB¶J —÷!ëÑh1Ðm
+Ü™íIJé8)J
+™BEH- ÿã¼Z®ÊÄñêÓÕ×ì×ê_¸¬êÏÕïáàJ¡n p T
+ÐSeÒ½²û'òL†|õµ²dÓžlꪀÃúnÍÞ¢C‰^oà…õ¢^±×xïfN%ªöåÕžkŸSl÷¡GY=?³•ÓÙhf§¾õ*b!ñ³ÎŠ^äç+”uŒÖ¥?$¥w'´vÂÀ×=CÚãCÌ÷Ëî«]¸ëÁÈ1ÜÏ„É#ÜU«øʾ—°ÃãÓ¦©ªˆDÚ#5Þ1~raÜséÙŸ–ÊQZ¨Ü(+0 x±¢Ö@“ÿ†‰@Ì›ùbƒµoã#!6#Vú¥ÿ6Züž´DX>A‹WÖÒ’aLL‹P$Uj*-ݱ’?þ ž éŸ 9ýÀ=kgwÈ:àÞá=8ãl¯Ât‰*7åb¾*7þ×ö°/?¯H²h€Àût°Is˜àÈrèÊ:ÕæDã…’þYÄ@HâSí€åÃJÜó~!J½E!"Bh^ ²X=pô8$Wš:ćx™qÍtH~3!Š÷q“nû§ÀH7¿!öoê [Ôö-_| ÅBÜ‘–%ž,–ì|úê|Êpº#ë;XÝB'×úûr²“ #…ñ£CÚD¸r çq‘Rù¶•j)Vv(‹z†Ö¸ï:”¡@Àئü4Éy½Ä£ì{ãý,ìGC8
+°¤áÍ@Æö¹¼k°®× Óþ´àÝ´^§ %°<e§0vd '2ãwU¹˜g M¡JÔ‹6 LHÁo5ZÈÎàñûÐŽj^0•zð©2ÌgEEDòf¾ÂæŠá»ôø9,žHc_÷Mi|P"GXã¾m™‰ÜDh·N“$úÝ ¶Å74Ð’%{ö™XÕ”¢d;Ï1û9.É>’ð7tî#v1¸I£Ótÿ†ƒC̲>÷ã,ÀI„èè< À!Ç»“œÔ ­brÈrn„
+BK—ý€‚xéVº/îXOi8Æ1Ü7"OàN¥ñËmÑôYŸ(ŸÛ¹<xSÌóßî£CÇ^“k¡òoý˜ùXƒ¦¼èºÉß,[UR*öX^±óÇ%I)$¬ ’!·‡ðÿ¶9˜ÒƒÐkS¹ƒ) ÅîIJäÚcÀ™æ[œü?hϾ¸G`ª=.ݶ?úX{ö…;Âh nùwp²¸®²nÇǼ}]ïNªªøZÂNØG­)ñO….æÔ#ãuC&}$Šoèú§N^%¸ü EhCƒ„°Ö…@ ø¼ÍÌ÷à¦NÞœ€¦Ç DÖj~sG^i9ìvX§ÖÜâ=Ÿç+œåJüSá Q¬1-I‚è÷ ¢hz;¥óÀ¼„iªÞ˜‘éž´F<ìËú¦"Ó§xUiÔVNŽh¹Íù»;B®@öÖìšæ3šÒØow%]ZbÃÈÞ„ák[¦|{HsZØd=§ÛÚk¾g]>’0É^äî±=€À²æº2CfFt-¥M;2 I¢Dfº<”ÏætAØ®ÇYÔ¶±Jº1Ä´€j†Z9#k,H| ¨ÀÞÔïBmžÌ†ÑM´^­Ø‚tt“¬câÛ„Ù¤¢`§Öèsìu0çewðﲧQ7ì|Ê“3å à©å¦WT›õ¬˜LhÛù8{ãÄE`ï".uƒ;{¢´‡»
+ Édüì®\+€¨¬
+ÔG€W"m8èI íWT$,  ˆÕ×ló¡ÿX™õo—9½] JÙªbAUwÚ”ج\à8 Xn¾¢Ô±×eØéžÁ´Âg¶Û#ÔdU¯7%Ö÷¢ Rá¼*s> ÞEªôEêuD"•‚³qeî_”1ã^C
+¨¬Qã­³\˜4*JËaÖ‘lú7Z_
+r«Ž+"PMÙw™Äx©`Ìx¢þ߆ìCýX4ÿ
+o·Ýá«•€TÚ˜UàT²à)F$) z2IÞN¤5Vq”Ú ÌKÍ/øÄe‚D_ÝóRÓÛÿªèÂcvà×hÛXr$mÚTRëêæ™Ã¾í2L…mÍ!]Ãàñ¨ç¹@¾ŽÆñÿ4ßìÈã$Ž<H·/U²úŠ3Y-3aγGÒP"i1Búä€Ï$äÍd)Bõ9@þür¹g¬‰q9‚xñâšç*yè‡u~‹ 3lsÜ àŠe)ØQƒ'ËÍA‰\Ô#¬P‘â?d6Vüiå¬<³º ‰í ÿPw[^€-Áò¨®FéÜ' 8´XðVævÿÐa‘2ˆHÊ 1ʧ«(EŽòÔ?—ÐC_ÖÉ
+endstream endobj 619 0 obj <</Contents 620 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 620 0 obj <</Filter/FlateDecode/Length 1622>>stream
+H‰œWÛrÛ6ý•};€÷ä-ÓÔÓ>¥'}h:š„l¦2©R´ç뻢d§™éd"‚Àb÷`ÏÙý®ÃÿÆx}µ5ps„וýË€…j¥6&ulPBšé̘òÒêØ™ ª;PUŸy‡•wÐR.ÕY\¦Huac¨ZPï«íϼá}ÿ@\&çFI,$™N3°}Ãèáwèá]µC®mJ®9º|<(g„ÎÌ9hµëæÈ¿bì$±Ú!vaõwCã†Þ0ŠäYlqxû•Bb#«>b|èȪDø¤"›)ghΦџÕ/ ´Ô9 Åÿ‰‹ “Ä»/s°Y=%bNþ­Óå÷Ïž¿(}!I>E«X®D4IˆUþ¿Pâå2”ׇBmžŽ”—Ú~7KŸ&ÆçZì':㫨P>œðøId€zúhcÕ¥êHƒnè©ubE´ø —Ùnïkš=z°ôt'þgœn%y®&[hc¡³Å ^ŒóÉï§aD÷¥zŒl® 6¶°¸NSÊIžæ:wXlE¢ °:I(A»%l¼J •6g§Ì°>9;Dc@`S|]TxºXÝF¥êŽQ¦@Þ}C3=ÍF±jê=l¾év‘5ó šY5aÖІjcc“Ù×öS´¦Øåµ÷lu‡öoáú)rVÁD†pŸS1œñ[> "ÓI£CÐb“`VèÎPëe-)‹•‘•KÊâ¥,ĦĮõ, pmr¢ºP=ÿŽ|Àš†S´ÉðÔø3ð{ø€Ï\ÅŽMÖQS”U2çÎÅdøŒBb6!ŽäÒb6hÃJ÷ðnÄR¥5 !U. ¤§tÜ ª<.b|j:Z{Æ°‡†ùšA¦db~¦&¢˜FO+¾Ÿ šû»ÈI¹X–Ä5JðHh‰ÎëÏ´Ñ7Làc€BHaYb»+ñ–1®¿ï8 ýˆà<ðH’ô÷iZ 9I·<ɉí 7ÎßrI¾ˆuK)cFIê[Þ
+áHR°±Ú¦ùš¤m”¨+¨‡ˆuäÔð€£z¯a{‹ƒáö-U êÖ{ó4´Ýî ׫†0bž¢bæý%Ò‹5éd9ó^ί¯ ›&°Ð;Úµßcec3ÚŒ»#o•º>wû åcä2n"ÁêY[Å:kqÈZFY3!_?b¾ºÖÏBC;n&<ì©în¨Û4ÒƒÄñ<é±%-'?¡Xm=y¨Éi+èè·«Ù?.<Ì®Fîz´:÷Á^JåÚÀ›f•P¼0ì÷DF*I$ƒ7äVÅ]::4ö{TϪ˜?†6EÁô™Žä.Rìá‹FáXõ¤ÉõW÷*©.tV³¸¥t2 [òåG Ê„Çç °!3ª/"øM–'
+eGÙÚ¦N’DWlLš’Fj‘ n¨Ô8ßð.{?a-æ`ñY;³K¬ÌQWÍ(@¢üõ©És ìDü¨8ÛÛÈ¡övT@ÁžÈÍÔzk䎴[OŒ¨ãy2z{P¾w6§z®~@XnDU”SÙ ;> ¶`’¾æ“EL6(¼vÔ‹x5s MxM>гÞãž·øE_èã ñtäM§Pu<ŠvÛ®Á‚ÃQ©/¦Ò_ƈ. Öq»jñÒÝÙôž '©£>”¯.÷H¢Æa¯×Z ô±T6Ïè{z.•£oB²…¾•Ph0Aw„n.å K’çâæ[ÎCះâå‚ñVC±ºq’4è)ïG`£ÝY÷±áÖ²–o-<ˆ].-ª\jÅ×GªÆ©¦ÆÕøWrÅwÚk˜èªàŽ¶|@y©Oœ¡•:¼5~îÝr™äýŠ®(QæyÄ–ÚL¡díÛ׋Å<çv™¤‚˜ÐZî%™€ŸšÕw„ .™¸¯HZ3i(oº]¨À9µ- ¡]*þ Î9ËWœÅRf2¤%®ÙT…ëÅ)v}2
+0
+ç«-
+endstream endobj 621 0 obj <</Contents 622 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 622 0 obj <</Filter/FlateDecode/Length 3468>>stream
+H‰œWÛrÛFý•)?["‚™ÁUyò%qykíu$f÷ARmÁ $qC ÉñßoŸ3
+²}ÁLj³\?a
+BéÒ^~tðîlG­¿ÉWµ©(æ«ßÙ©ýš›ïd…J«Ífͬ̌¦ Þ뢽|ÚÈ’ªåTCkÔűU/aF]7û½úÐ<o™|0÷RçÎË^×U¿–½º¶¡ ãûˆÄ‰ÕBG:•Õ7âùá"$±‚®œ¹sÈN‚"(vÜqªÛPÓT+ÎÏ–âÙwòG‰c ³ ú¦£×¸³ª›H]œ¦ö8·Ûµ]¿‡©ƒ´Û‡m-W€$.·”£ÞQ¦ÓtJ‹úÄäùÙŒƒ´ç[« %Nw8½ëÚºYAHvAɪ¡œµä N4≕Ó3ó =Hh_þMG£×NF[?|åŠ £F#åîá"•K›£ërAóc³‘róꪺn»U…g¹Tßz·Ü fyóºj4Ìê Ž[“Eq8V»
+6reÊ®×»\ž—Ÿ^îZÑ&<ú—̬ +elTÚ‹Wúî9SH8·ãR
+|©ÃÁ¼3@eñµkh_ÜÁ®¹uü†Gê’”žÌV°îÞi–5*ìÉs&øgb6wº|M©ŸÆ{4§Í‡µãQbˆ™‹S,…f ¹S‘'¤öx¬oçT“pc& gf›]'é±á ÒAØqa„L —Ó f³äQbÉ-Ö.ɼFüÚŠ’jªrkªY÷ ß=Œãi-%­kÄ‚Ú¹WBùŒ…7@2ÄõncÃUâb.¸¨¥Ž¹R‘óÕâå–ˆ§9ù ¡kþr+DŸÁ¯ÊI^“hܺ)EÈùÓh¯àŽ=âJã«ë/Jhú:’.NáAçŸ# Œ‡PX{
+àd=ÔŽ:Ug`Byú„c®xÇáG&f*e9þèÒ¼«´@å+n¡~î«v; …°!Aú,Åþ:oæ×iqú ŽÂÃÒÁYÞu·®ê,¯E%·ÎbÍ»•¼Zw¶©z²mOÔ†£=™‘°[2¸cA±ÍÍ°^ØŸ«ý}#½Óží\K]b#=z¨´Y)û–<ëÈu,ß>Ã!3~–fÇQ£œÞÀRlZ­ñ„廃 g²Ó9V©·—ï]•1?}Ÿ:äôTñ½Ëâ3ú8÷õ%? ‰§¯wî/K¬ÅÃ2‚Û!Kž¢ˆrÍ)uí\)ã}]¯{÷ô…öœ$6Ë KO{Ðyä>l½X~tbVÁ-‘BÝѪ]!ëõI?„zFàÉŒÀ'g[v ¶Œ2ùžÆõÜPƒ†_í+Îͬpó‰}9,@R.šÍ@7¹@U#‘îÀXŸ…ã‹t›²Þ¼ù3ò7å„D6Ò4<ˆ&OMá Ô‰C–$Jm2‡v],•4 LÒ:~„…K‚ÄÅÄ´hÕ
+L­8Bp+
+endstream endobj 623 0 obj <</Contents 624 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 624 0 obj <</Filter/FlateDecode/Length 3450>>stream
+H‰ÜW[SÛHþ+]y’¬¨[wò “ÊVÈx±“}¨-Eà‰‘<BÍ¿ßóÓº;vž¶R1’ºûÜÏù¾>Y*Ÿÿ5×êõû…¯®ïÔë¥þ·¯´Z^©ÌóýÈð†LE±û~ ’L{ñcµ¼UŽr—ò -'|:¥B™È‹ƒLÍÒÈKu –+åœ.øÀéRý¥‚,ôHx’’–Ž›ÔÓ±Ò> WM©þ¥*u²[Ù&„ìY§æûÔDim4¾Øø‡è].H…«©Pão ¾ÈÏÕNèùêÂquìw¦ß5ž"÷rùüO292Æ‹ÓÞäà§ÖÂÐi
+-Í)‘S|ão-¾œ»™““«5½Õ
+ò8HÚ\²#¤ú‹î[”“«rŽ¨ GÄáhÈ)
+ë6\Ø£š|Õ9S«è
+è¢Å6þÊOküÔ, ¢ù7£˜ü`åÕ’%ÝÂP¢Xp@¤.DHð*yËòªœw_ÛC¬¯b1Š´hzáÍW¢ŠÚ`NPv[Cã/žYd}×Ç/¨1'ÄC}àL#ïM>ƒÄŠCÐSfŠ
+ôŒq'ÜáÑg2C&#dòúýLøÙ†YYج· ;©5Œñ •ö5v3i~®ÝôFžNSs(»©d÷ 9[ )‰¥÷~6üNÆ;–‘ýú è+$›â hÍ}ŸÀ‚{r7=h爣8°'ïøã”|îpñnBÈp`™
+{Ëïî…&«±^®øÿ*î”Éòºîèv$âXÚ•½û%㻟îï±:°Hjà (=x0Qø„þÀ¥–Àm¸vˆÇs5—á•5å ™y‚e¿FåƒàÅT^ïo‡xh‡PÐaC[Œ!.ù4i§GÙ©Œ²?[PÝÇèìR¢tRÞtd¡)l®Qª«^_c9{wÇØÃ~¿sQ@'›h6ê¢ýTþ´"Yíº]—ÜB<½Bš^Ùxx¥C²²CÉ
+!Y¾å\™$!ÐÓÚK„÷p+™¥V0±ž cbu’c‰o7ø̤ì¹^ð`»k™Bt°'ÊDÚ¶{r?)³wŶ÷–ü|”é M?ýl,û¦ ¼áV—1s‚±¹XÀLws<Í°òŠíêpܼ7#Ò}*Í!
+D;©ŒG©Œ¥òœ5-8äGã\¦Î @‘#„_r{ ¥L4Œ)jTøÊÊŸ¶Ò¸“ö¤)fMž;ÜlpôŸñ J6•’ÕéÔM¾Hʱ‘ Þœo’7cÙ
+*bh
+,’{k™2̺ϥŽ]-×ɼ²¼ŠZ8ïkŒ®Ÿ<ŠšSh®ãt§ø¤]¨&”ßô´Íׇr9LZö³!Vs”ã¼cKKÅé5
+V‡ñ¸ÏP'›vmQe¨1ÒPꤩsŒ™UAØK¡yÝí.r>ÌÕÔšòó€š.Ê7\‹6¿\+mrÈzW…´b:uM︖<Ç5ˆvÌÿàš:äšõŠ?ŠkÇ(ƹ¸Y·\+Y×n¤¤ëÊßîyr‘N¾eê˜[—”:›‘&˜M:ñ]yW4`âk:Ä÷†Ñ}Õ‚Qû ݧ`d¸{% ~z%åÛ]I§€bÛ_7?TÈQKïM½ºÇs—µ\0ÃËL©M»Ä„Fé/.¢ÿå¼jz‚è_Ùc= ôp<x(!è‘Ë–.¦Ie›‚1úëyûÑ-X= ²Ýí¼™yïa´â?o,ÕÌ%W *÷8¡·ÇœA“˜y†¼3”;63L¹ùCÎ3¤ñü#ßHð{‰. '¾Ò2‡@ÖSq[JÎm`‡ïM‘bM͇2ò—:ÏÜH:x×ÌkF=*aæçÁ§ª¯‹äŠ¨²NÍÅC*'Kÿ`
+ãYÒ!h¦Õ!9úðI3±+¾yäK‹v¸‘Q"ìßÝS€!Jx7æúì •+Þl¡²6 ½µ72„†ƒ áÔ
+endstream endobj 625 0 obj <</Contents 626 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R/T1_4 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 626 0 obj <</Filter/FlateDecode/Length 3703>>stream
+H‰ÔWioÉý+ šBzº{Në“Fë`åeDzƒ`eãáXæš"é%Çùõ©WÕ=EY–±Ø X¬<ìî:úÕ«£Oæ*âÿškõò|©ë[õr®ÿ)­æT1Ž¢ÄðB%é8"«²B­‰R5¿Q
+翳„‰ˆ$°U)“ŒS[¨QžŒsmÕ|¡‚É|öš&sõYÙ"“ò,'+1‰›|¬S¥#R®šZýC­Õɼï t›ºGÞÌ—¡‹¢Òùh"ññ7±;Ÿ‘‰P› Q±Æ¿Vý* ãPñ8RWA¨ÓÀ„#DX×øJÂwó¿Áΐˉ1ã4o]¶ßôŽdé=ï‚‘Dô'}ýÚŒ‹'±ÙCÉCQ|öl™‚¼‰[[Å™-û¦tÚ¿ñ¦»RšŽó'ƒl» '‚Üçac{fÁtŠ0ÓícŽŸU÷ø·F›0 nñ±Ü¬U¨m@àÆ>ú‘º¤m>·ªK¬òѺ{c츃ˀºÏŠ>Ëïû¨~DÈñÂô"’Çß2ÁøéCPó $¦µäÔ˜ð¸\Çx‘&©(1²hœ¥P™JRùoqú`)Æ)kŽéŽ˜Â¦´I'æ§føÇ„xDiôŠ0çÝᨠP¯C:V7å
+[SŠDTŸxm‡•Ë°ÊЋ%ýÚ(è«égs#X«jÊb6}‰Í«ðb›÷Ø\qŒmÀrÐWâ«B´Ù6‰_ˆ¤ñÕNÊÛ0ƒr “—#Âܵ€’GôX'™`3ƒŽ¯¡Ñ`TÆL=Ü„ÆÀƒ“p”³ù° G9(‚]Ý|€²ª6Á%ñ
+Kì~GÝÆ1?L O¢Rà˜Ö`Ê®Y–+ÕÕ”:D&Ç#Ú áWÁ„5Ž ímè9~C ”¬@ä]ô{‘ϺÈç{•!Î}ä‹wèÖ]ä“oD>’ÈÛT"¯í0òrP0æNßâ uÚ™ÉáŠbi±ÁLhjì ˜ D„H{´9†Vð ‚uˆA†ƒÿÆU©Ðý‚s@TЄ­Œpí·tLŒBõ1ý‚ ÍqZj®Ëcjƒ€³ ÛíÊÕŸƒ•ˆjVQÁ¡óŠAÔ,9½
+_0–~›vÃYöH=O¢½t5]Ц¸ñ`002ÐØÂsY¿’¡õRÞõÚõÕ;â)MzxuïÍ:¡i¥%LÕr×”¬ä–º­ –·°¶éT—Œ6/hîªê­·JEŽ¬ý•ìž,|nÜqV“ŽÑFM#¿ÉöÀÑï:DNÞctFç-6A“;h’ ŽÓWžî/P.£“ >3ûŠå5þTtøhˆð›õ’dn™™1áˆÛJ{w§%þ™ÄŸJ›ü'yò†þ?囇l}xª±çûšç×m—½6Šö³W?3{ÍÃìÕHöRŽòtèÓSSzŽ¬$ÛUø—ï¨ä£§Jy[É‹a%êÿƒJ~¤~¹ÇLs¥µøKÉ‘œje;A%º†T¯õëƒ ÒöÑRb¿ƒA=ö°Q×ú©@1…˜>ˆnu鸽b¨c ´U½à±L˜ò¢çtÑåxës<ô9~~Ïr.öYŸóæÒOª×ø¢Ô`’d¶rœ„²¿¢Žñ#WF”S2+íi¥«ýÀêiéΧw¥¯®ÁƒKhfYWÚ %û%QÎûñ5]…°-VÃÉ.IöâkŸ~BºN§Ùð ÉuÀçc!éˆ~©Ê¦ú蟈è$˜êé æ¬úC[U?9 c¼É¤SsËÆ°{B˜üä:ñ Ò¾}+¶ªÅã©ji‡X¤?0åáÙ«–<²æÕ¦þŒ_m7òýºétäÆÓ>({>]²ôâàÉzp”½Û›)ân¦ÐÙcI•=#©<8…Ô4ú3ž
+0Rð !Ò<2EýF·&‘‰…|J‹A¯)«fã§xµûȹs7'û‚B¾U¯ñµ«›\w*é·ßùê;PúàÑ熽ÿèû¿˜Dغåv«&ŸÛ„ݺ¼zðœ$•˜P!êâš·qՇ߂½q¸x6 ”54K h§âB†bH˜»™¸‡ö`2ï…ö9¯ºa2›\ÿiÉ<gì×¢Ü÷Pé—ׇžN½¸Á½)¥2Ö½WŠÌv‡ƒBŅèM÷H!©nù·¡ zód—âî?Ⱦ£ËZëÞc¦ë²Ò±]WÒ=}Kåiáy×3¿ˆnõo.´cì}£%û&Ñ\Å\<{m3ÎýíôS…âÀí\ߌ£á q:Ç@—æÚ»ÈóÑu7!râÈZÎ’¤4}é©{)š2§¢¸¹f¢m8š
+nÆ-:g„Î/¬ŽŠ•Z°6ªn„ñÖ¹{„‡Í ÁzðåüÞ“yè‰Jœîu¯äñR<Ž‡ê„qÍÙ¯|‘à
+Åá+ ‘*‘ô먺2&•Ç—‡û$X¨÷ͦ\¼w•qS%³ÂÍ­k’sùKhè½Ñ|â°&)Ÿnvþ‚ºá¶e— z[K{¥4J}Œ}¬’‚}üçÆчHÀÄÙl„7×ëØ€Ïק¼ü_Ϋ¥7m ÿ•=š
+»Þõ çHU¤*­b§—¦ªŒ1+‚Tù÷of×6"—ôÄšÝÙÇì÷@Ó`r€M…h]Ñ6"™Ú´‹ÿ?ã•ÞV/¬~…†2&$  LŠŠgžší¶=5Šó½RÇQêA
+JÝ8†+†h;q«–¶”rèÉÐ%¾ÙCåüÍóç}r„?tì ·oA(µ²ŒÏžû¢«Ÿ/ÉŽhãë~ô*¸\ Kcººš·'^à÷ŽæÁû.PdÝæÐM*PqÉõNÕ‚<çZõFÿáþÒìýîÏ{šÌœ[„9ãx±7Sl
+.SôøÖ$OøÀ3ÄÈ[è‹XUâ-”XnÞ8>õ‰Dâ5y‘±)˜#}Ä"÷ÛÈx|Ó)€EÌŠÀ8©ÛSùXê_‘"`ÙسLÜKŠ"KF¡ñHBj«$ R”‡Nó žá Ÿpš ½ˆÂ/š !®Àå¾;NWô+ªõiÕm0‚T†kù]Q™¬Ði ±}š‰i²Æ›R%I@w«g9ýhÏâ`¦tÇd%ÕF]—ã}88®iÄ,ËØ?ê$ÈÓ<–m =ì„T|‡vâEV¼‡–¯&åŽl†ÈV)§hIÊ‘ó³ÀZB»#ú‹‡C8°2”*Q{‘3ûŽßÑ’ñθǚ_t–ZË[„oÅ÷x8šä¨ÐHVh´­•f±gK¶7‚ï‘w| ¯¥êýÇšÌ>ÍršŒÅÞŽ‡®šqxƒÉ{2,éÀgXžúHÄ+oÕõ'ÀµQ~ ÃÏ›Øë7–TɨW^e÷l“÷Í®ó4a4¯>ñ“pïˆÛ?Gj%%jUAbU€DÁœ_}¡·IDé_3bCb,'
+Ë,ýÅƹ»ÆP`ûPw‚cX41éÙ @Ht¤=I @
+JOº²ÁÛj­®!aY¡þx°×’p($%¡×ê±p<N 
+endstream endobj 627 0 obj <</Contents 628 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 628 0 obj <</Filter/FlateDecode/Length 4582>>stream
+H‰œWÛnÛHý•~$C6/"ó_&ðbGðÄÊ΃,(±íp‡!’¶Ç¿uªšMI–³ƒ…«Ù—êºõ©Sgkò_ÿ Þº Õàޯ£‡*Rë{Ua˜jÞP¨4 ²0ŒÕ²ˆ‚X‡™ZWžò×ÿᑜ閶J§Aj‘§AÅj])ïr}sÅ.×ꇊ‹$ áËœnIè¸Îƒ(SQHÂUoÔªUgë}m ['½˜®y>TQDZu(:ÞʽëºÂ´—ª$Âo¬þ%yIª;Ï2Oû‹È 1a”ú_×ÿ€Â¿“Ê©ÖA–;•ãŸj Eȧ´óÖ!"?Ý—é øŸ‰—'.JO\&wþÞ]º mwWñÿ]%RŽ¯Š–ûFQÞÌ&-‹¿åtŽòòU”÷qrüÉϽëkÄ™ÌO8€±z¯A {?õ ê®U~{äÝd
+¨>Ó2ïkL‰ÙÁ(Î=Çßê©EOÑNCQöM$zYš‰žpè2 –TÍ4™=©J‰•Ñµ‹˜žÏ"Ñ‘·¦‹SyF}^+ŒJšK¼A2½-w8Unð¿nê‘–#ï…ÖÔØaN=`Ÿ¿Ð^; z’9ÚyX«xû`æñ¹iX\C®Pÿô %–²x)Ø{Oæ’K廿ôʱæ™vÒ#ʽgŸ$•î~BfðbËXò
++<¾ç…ÁODö£ŸÉ¹­Q®‚MFÃÚãÊ€}¥8,‚x
+f@ÕBðôyšszÒÓKçé%{:O/'O§ìétßÓK±îîÍÖÔOØŒ„÷OÉb]—²ëhãUK›¬ÛRç6Ú+Ùy©‡M
+»Øn8q)»œÓ–“Óèü¾Æ÷ƒì{¤¯^\•³Žâª˜äÞ;UB¶èRJLjÌdûPò8qyÉQÐ`Qºtßz5B<šw6 RI³Qr´¶$_ÓæÅQ¾À¤¨° CYq¯B™¹P² «†ÄZÄ6žúT<爽à*%º§˜L¡å !ì“ð O!ÞŸÖ"
+iéÃsä#õ^ñ„ÙÖÃ^7|\½µQ”Lêklxà ¢ùÐ껟74y"qŠÃÄÉá>0ßÊ–•£ªGåô$My»ËÕjŽ;;<rÏO‡ý -ó£´|õ–§4Ì<Œ'S6âÅ-<hÊ•È›¥ÀˆE6yä ü9N¨é%í'¼0ag,:(AL‡-ðÔ R Zª-]<ì§#€>ž RäÞG”rfê O“ýÌ<¯wßL/înÔdžÞJKÊ=™³D=KLbWâ ü%“¡ˆ«Ì½ø‰Âl²[mºÑG¦“Ï”‘Ë°e'¸~IÑø÷Ý`c‰,ãŽà3ôF{ Lõ`/KWØÅ;d™öUw>_‰TÌÎ
+ô’vÏ NPe„
+¯´ä=çØŸiË›>R!hhOñ¥ýžXú¤¨'{)ì
+pXdˆ‘ÃI*¾Üv-™5
+¨š†³CËýˆQ=}·5•Åu±{öuƘÛWò’Gþy“/â4Ϥ”ÉôýÔ8€W6–ã±ø–oÎ[a±8qÀžW`æÊùÕÑIuC0¿e’› Wýõq¢¸y‡ü—š¼­\@ *‰x'½™xš·8íÔ…ÌNfÄ“d‚dÅk;”ù y7Œ¶×K¼Ÿ‘fWë…­Àx5u%#!%Õ¡þå"Ç»„‚,ˆÂt.Gçs˜l;¢qs‡»Ý½@É
+qVñƒÓœšõZòoРZ"îÌGíŒitÊ4™!lùâ\Ì
+•’BU1…Š=ÊóŽñð&
+Ö’v»3=ØNÁ”RÊÎÕ¦kî¢=Ž^.┉2­LþréŸá“W™³`þ+€L€ qÒÞ›‚ªHè»Ù5nÈP‚ùDá¦9_Ñv¯‹:š–÷ §i^;÷ŒzMæºX/3‰ ÷§ä÷NlúD²´™ª=¿bÏ×ïY/g•RéA ÇKb^0À<ÉU -ê0W Úû¤"Ùµ >jÒÅ8„5bÔóÄ }?XN´!ÊgÁ´JoÔ*H\î=
+­2°‡ŸÄŽÉEØ$N”y\iT+ò*GħD±ì\¸g%Að‚Ñ‹Ã×t¦o¬PǶi»ãÌN•Ò
+Ø5ddïOTZ¦©æçÞò¿°N4Á …kÚѰNXl¨˜4(
+–Ã:£öæ»Ôþnî2O6d¤Úh¹º,Æù:ÐÌ*%dÐoQÀ¿»ƒÂƒÅùϽ€È³\Í
+endstream endobj 629 0 obj <</Contents 630 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1464 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 630 0 obj <</Filter/FlateDecode/Length 3623>>stream
+H‰¬WÛrÛÈý•yc7Âo’¢ò*3ŠH'^׎hÄ0©€dý}út.¼ZÞ¤\¦€ÁLwŸÓ×¹\¨ÿ5+õîÃ<T«­z·Ð„J«ÅƒÊƒ0L oÈU’iF*Ëu™0U‹ïÊSþâß|BˉNàS©L¤Q®&Ó$˜êH-–Ê»^ÌoøÀõBýGEyðlJZb:n¢@¥C®«þ¥Öêr1¶²M Ù“NÍË®‰"ÒÙhB±ñ³è]ÌI…¯—¨Xão¤þ) ¯½8ÕSÏøí…X×þ—Å_aë?ÈÚDgA÷Ö&ô{ÖV˜¹K سÍK¬Â˜ ö*¢_”ϧ÷åOvä'cùÚyú3¾£ìˆ¢äˆ¢0þÝé2¹Ó•ÿ9U"e_•žŽAQT²<Ð?Ud’!†²ƒ‡ùBÑêÝÞ"Š~Ìá©güµ˜ÆO¼-ªÍZù:òˆÝ¸ ®PÝÑgÞWÛ«[«8ÍbÎN#vö֕‹õ<MR±„ö¦¦†`÷ѾþZø“Ô[—Ð{K²€È¨7X,ý‰ñøsëO²–w²Ð ,é^9e%)ŸÓhŠ¸[’Ž÷ji׼Ön ž*©3ÞwßhÏ’ôÜûŠKY~)X°ä—–ب²ha„†SOm|zª?nÕüŽ­c>tg’™Â$C5ΦÙ\=Àœ'ÄXµ×vSÀ&ꊄkí½úšô±myŽž±±Ë…<û´y‰wrwêUÄf¡îfs:zpâ-?öèCñ´hƒÞm Q]:1Äk–¨‰t’ L}Fè¯fªÚª5=oà¯VUl<„ÿ&}ßÁÖïꉾ®y{U+A+ÒÝvA˜8„â„…ª¿"ÆþÀ¡ÒD°;/¿Âø*guþVîHç3Øv¼­j…¥o8ŠÞĦÕ~Gai£ôàœHöZAHlxü ‘øn+í­}A4¯êÊ'^7X£œùé¤ÏØÈ;6Í·c‰G½C•M­KŽý-(XÚĹü“XK:–ä²D^Õ‚iœSL(êvk‰VŸ¹å_¨TÄÞT˜ô•€M˜8à%μkÄñÝÅL]âaNè®TµÖožº%-œKûþhâOûÄ× WS–uhÕͺËÞrƒŒm™Fþ·ƒ¦ÜJßñôÈáQV¼«¢³ØZ±ð‘Ë@_[Ô’@ oÁ‡’"ŠwÝK™áÒbÅ^/ø—ß?-8†îˆœ l›Q)¦èšQt]q¸÷§–TÀ>\óW·³OZÓ'­ÚD(çì%ÎÍýX¤Vk?'ªžðÛ‘R)´jD¯Q7 ?JÌüJ¬B8 –Ä»s,]ˆ8¡ÁU[“
+au-+÷¡îJÐ
+¶¥è1"wC.Uª–›x£åàýA_k]’ªµ5ž_QõÕVKD%Å.ižÂ9k8دâˆÎaB¿ò’%Â];f‘ÈŸMö…F p.?úÎ • žŠ„߀ï¦Ý7ÕR]Ùº>÷¦wr4áåÑÐï
+5¥™*IŠºo6ŲdÛ
+A´âð£BãüõAÝH£l«Vhâð\ªÍ£mŠÑ~R¿q'yEaSÙei™Ü!|>ÂÙâB®;’Nç.ÄõÓCA3RMë8ži˜4<‡(O‘—¤(OÉ!ýÌù 0Œ*ñ w#jFvÕTdz‰÷ªn›Mk)•1ssMÆuAjl² Þ‰"zyÆgû^x­ï¥ì±ÏÒ¦¹‘ %¡]¡ÿZé5÷ø¸‘ECL¹gÑguãæú"#ÓÊwƒ@?+Ðfió¼ÜK€~¾Pó¶hŸ8]ˆnºMÐN<¶Òfy?[øÎõð‘9jÛí’-ñ¨~-oXu Ä^Þ×OU†qv]~
+Mùz’;ê_yWÜ„±¢/¢yÇIBÓ@WKaÕGPPð€Ã¿+üXä'1"w²Žï2„ð®-uƒ‹RnÏXàÕþBÂŽ¤‚ø¢£ Χ‡ I0-á.KáK]ÊŒæÕÏþd¨jÑñª¶?MœöQˆ|‚K
+TzЙ”YîÕmÔÜ6ÏUy|ÒŠã_â&KŒ›ûøPxß8YfÃd§2YÆúìd™öNOºÉ6좜ÊÔ™0VÒ䡶ÕJ*Ÿ»PÖuµæÎvú°¶åø’ùF
+¢ Ï»x@ß±±?a´ÁÇ¡Àœ  ónÙ{\ü vH‰”ýŒÁšBæîâ«o Ü$˜Æ¿¶’×IÅx'gò_s.b³‰q}ÔžÃA”¸
+Ò$c¶<a†˜÷œ_³1_:)Á•£‡>oA™sÏíï•Ñõh†Da§SÓ͆ºÎoÙÌgꕵ²µ¼Qy 4^£y {ñŽl6¥]> ›Æ³8®ì[b©Eàˆú/íUÏÜ&DÿÊ•Rf̈„’T.\¸°&ã(U&FÈbFÀ–~ö½=°‘œiœööëvß¾h•Oº3è.•DA°Þ¡ ²\…¨ÅûõسÐÛ®sy˜ÿŒÍ¶eÄðMH¸i˜~Ø$o¶0Š4‰Ó­üVy…OH™n{) -††é¢Ž@gå?UY’Í#T*­ð%jBj?ß3n¡Ücg|
+ï§Jæîòù&x¤Ä4úò¬;)©æù|m½?*0ÈÖ(n×[ÏšONÍb¶£&†bÜÝûߥÊyߟ­BÛÂÕ³ÜJ‡†¼Å2-8•&©Á»¹dƒU2º×Ý_¯ÍíqÇ*S¤yd®â™+[sÇôr]bO¥xÝñ»,öc;A!¦.ƒ`¤Qzæ.|ȇãU `ÄURÂhy-<jÙÐÓá(]®¿™³Di’óaÖ8½±r¾DÈ_Gúš¢0Û.G$A¥CVA–!ô˦ëq Äâÿ
+‰ ·ÞÐ×w¨õí\ø—Øä¶á®¨‹c>Mïã°Õ2Ô$ˆÓèb¨‹q‰¾DcM"U‚Ÿ^"ø©Òj”j}:Ê‹q¼=²4ˆVá=±›ù#À
+endstream endobj 631 0 obj <</Contents 632 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1495 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1464 0 R/T1_3 1547 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 632 0 obj <</Filter/FlateDecode/Length 3352>>stream
+H‰œWÛrÛ8ý<’[‡
+ƒpÑÕâO±W«©5([i”=Ô<›È"*f?±ÞU*B©#´ÄïDüÁ Q(ÅâsJ¨p&ƒ×%þ2á—Õ¿ÐàƒÉF©ÈfÞää»Ö¢¡Ç¤Ó'Ö3ç–o¦ò¥Šòz$I/(2Åús8Ñ¥r°F{]ùßSÅRNUÉ|
+
+òf„”æ?e3F9=‹ò4Ç 'oÂ,øðã ð50Oø]c »ÐüÑ´{Ê$
+mЕU-Šú@F™  “ ÝÿJºPGÂ:È©rJd,Q‰ÐÓk²DÎrÄ•bæ'BÉඇ,Ø×øš_X²Á1
+øP`ÇL© g&‰¢=|ƦßJò±Oð%ƒÏ¥´ò…"á­xMd¨ ±µ3!z´¸¨»'4¤ÙoñKÜ,—qÇÞ¹‰eܱ6wq³$c¡dѤ;pm ±œe¾bJÐ'Á®eü6ز~üÜ£èé ˆ¤sÁ»ˆyÌÅÛ:th“GGà
+‡Ì,È”²ƒ·š¬w¡iÉ`¶¯]¹iÚS·Ã>Ë2ÈACFU>Ëž!-]ƒ¿|ˆ”9…‡#ãN8m0wÑÑž9…g=¼¾F(&¸@<ʲguxtPñöÑÇjzÛ0!ŒÈi%ÍÂd¸Z:¸\Eˆ¶h DSP/1Ài°Û[¤¸Â¥µC½óªÇh6O¸@«üÜÒé3Z!mã
+.Ć
+izÈ÷ªÙÔ\á­ãìãnÎñP6J}Dä 6Ô¦o€&ÀUsàÐm«’ÈŽÛ®hi&¹E¥Cû.8o.R„òƒOJ±úRÃ7L­CïÚ:¤(ÐäÓÛý-.µø¶s뀰ÄgÚÜЫ=i³o^ßÙÍ——iB4AØee:{‰'ÌxÀk¸bàšÌ˜'ðCà‰KyaX˜9 &£Ô*$ÖêÝ’ß{âqqš:å[åR pzlbJÚ°J½Åt¬28V ëkXã̹c¦Å<Üø_Ä)Î,SÉC’ÒtF£ç‹“VæÁKGhïȆGèÉèâ,p Èå÷ç+jÛ=·,;-’æçÆ*<yÌ /VÉQßžNQ¾²éõÂÙöÝ‚m¼ÅëÚuòrZ·žZí¼‡ž8Àá4 ÇQUê-65ªdóÝJv;ÇBV£É’ñ¦r“‡¥ }œÄdžnü¦S÷M…—·»J†tð;2jC‹œ6ìÈ|˘„œÅì‰ä#ìu˜
+§¥h¼8äUMÒŸð©EWuâ-±=Àn;Rü‚ÌK;Ð8rÌg¥,íÄ3?É,i¤SuÎ,?Å**‰$®Aã FI’SFÑ“¢"Õ†ñ”ÒBBQÙ\Ó}•~û «Îéý…5‰x ªöŠ¾_·»ÃÉ m×Í89H3–$çG‚S¥^ð-küŒÎL&C³šä‘ÎXØ™ˆùzÝÕO fëþ .L Iæýçß5“eƒ©ÐƒMðð°C–à )×ø³Æ¬/I%“€DÅûïryo(¨t™‹yÓv] ê ´ñ1^n(ý‡ˆÇCÄo0]L¸7_ð+¿…–åÀ ºïpS-Hj÷Т5™Ñ’Ê£M½©÷¸&6mõx5ÇϯŒ&›‡±ßYnØ1V(ögteî6ôåx|•ùiw•ènpÁ·P)¨%l'~xŠS?*Ò¸,#À'½q>‡‚X…çfZå9‘¯{:x/èR¯|ÀÏž‹.uá!%ñÛ·ZžDJê‹1ÖC<8¦/)v=›¡…+žH‰xæHpïÀ$yqû@ (MŒÕ´R!ÞÊ5ZÐr8ˆw Ù‹–»Ýv˜xeG̹AÁóøÚàGurQ"N%lí`¹}˜Nž/'é$çJÑ¥»òÍtf~QU5yðj47öbYÒ»{ç]=é6
+âÓ]É5E5[wâ}»©/ ÒŒ~¾B7_cR¨;%/qÿ¾¦>Ró™Ëò Û=)ÃŽN½z:.p;Øí¸" î³àÔÚ…Þ× ]^Ñå&ÍGc®~C4W][†Øÿ1.%wG…ct+à–¶âò>žù‹ K)`Ç‚ÐÀö«’\IW[C@F©Ž«øÝÀKòá¾Å9KQ”Š^Ã, Ÿ;
+*  S}Òem2j^,x6Y”ˆu·ÃDUi€U¬`ê;,·㸛HÒ)K‚–©ÏÓu±df#*ˆ±Xs FÄh‹#$³’ÅJ‡DzFªšìý:—fc6êH&é…d\Ü°¾ìN+™ž9±`ºQí· ³Ññ‘Q“r.²zEA‹¦£q“ü| Ãnh¬â›" —Ð7úŠ0Ý…tÙÔÈâÙ$‡’qÄšj€5o>¥d
+.î@ ´GˆåFT<k|ªºf Õò¦ã‚z p§ôÓŒ6Öë¸^@fÿ“_×›¦æBà+œäK?ÉÓUaÇæx’Ò.ŒtgQ¿~'°öÀ«Ï¡c•Ý0MÿŸîjÙq‚¿âcrÈ,æÍq&AœEÕœ™,«Ea‰$#íßoUÛ€I4—„‡q·íꮪ„gêfèù&C/ñ“çÝUØ‹ÒZrënè~³
+®—x´i@Ñöv ’lÞW3‘•ßÎ$:'q¥ùhéÌ,†¼Í4µ»wÓ"ƒy‘ž]$‚8ÃiþaŲ̶%räÙYúmÿ7ŠÌÞÂ]ÎGÆ.±‚7•oî'®òa…ÌX+CÐ71øm½\LjÑœÅó¤ù^å}k¯÷vki{5œ%Âg¤Î”U EulÝ×ö¦ƒøÒ  õ“L?£‚‰ë•XJ8¡W•A(^zþ¶ (lO€§ôœâÖ–õâ¿
+‡¨†,"ÆpRmö¾šÑÆ™ ïôŠtÄWk²Ñæ{:¨}ÃI iÖí)þ$¼ù˜‹¼bÉ!§PJÉdz骨ßä»"W•
+¡»!ƒ!]®LçÊtÊÖdÂm‚×…ŠN¾&¥«çb)2¾®É^hfA”­ŠV:ÊÐôJÞ7ÇïoŠf`]\*z醳1ºY“`&³$(‰žó}\h§¡<ùÿÙðOÕÿè®B§B@fgc_؈ÈÏÎz:\u¼geô]Œ®1ZŽ;n€"\îu¶güâ²<
+žÑ+ßKÛOóh/½ª)“PŒ÷óYø²né¢ãÏÙèe† y^Æ íå‘šË~íÂFO°ÑñsiüŽ}¯´$¹ ’ é ºØ Ó+¶ÆßAn´€Œ1 €KdJv' Ž«ØæÔ
+endstream endobj 633 0 obj <</Contents 634 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 634 0 obj <</Filter/FlateDecode/Length 3456>>stream
+H‰¬W]sÛÊ ý+û¸ì î’ËûfK®íN¤(¦|óÐt:ŒL;¬eÉ—¢íÉýõÅø%Éi:N&ÉÝ°
+—Á¶ß—’ëÍ «5¼ñ/)¾Â²fï+òÇ^¨6å#w ´©´Ió »ï;Îô¾}(s5ì(,z§Yœåm¾EF/z§€-ã^åM]4â‚ŸWìÅ"ÿk/Ëfdss·e^&LoÊ5£/ær­äÌK÷ÕýúA"™”’ÔECí]ÜÐ!Ä‹<7ïSh¬”\I
+±wH8qäÚSüˆÉP*Ðìô»M±~„}¤8tI|ºk`³¾Œá)–(R3Âèhé Ã….“(É dV43ÖnûŠ/õƒ'Õžéu©–mµ#6܆°…4Y`kû¸RŠ9R„&ÞwÔÜè%öMV 8š(uy.Þ€•¤GèHHfvËX'Dðk ¤ì¤ðXyX·Ýƒ£†™/{ TUãÚÄ÷Úa;@rù€™/dº[¾ ÿmxTHHEÄý^Ä7áì¿S¨"è˜gžp¢`@Pýx„W71i<Ô‚å#%§Å²XrÄÀ‰K"Íœü;¨D›Œ í+h=)ùIäÒwó3£Êr:fœ( g£CyÌñí!ÞPíKúÞÈŒ5w³'™™’ @t™L¾B[
+m\j€Ûö‚ë°MJâ;ËŽ‰¸¼Þ÷vÝÁ2à)j;¦ž>…ÂQlWŒÜ% 0DyK–Ï$P1Y¨¿ÿGßN‹ÑA¾pVÝ^äÜ"2ï,.<4M¾ £ùÊI?¸Ê·â§{DýöBåÏ\ ×Õ=ÏxÄUké=ÙéßûÞ“¥xm¢£ûÛN /Ö]ût“f"z^÷QÑør@]ÈÌËš
+SFú+~ÿ̮˙¨iüŒÎ®ØŒçQÞÀþ9•v]Һ“ö¦òøsÞ5sen¸0Q~V»ãáˆTóÖ²¨Ñõj†19ÍÜAÍ‚yÖ0•q%N¡‘Ý›I I ‰!-R¤ŸŸ7ÕšÃéëIyKY\ÝœL·QÏWf¨ñ\¥d´óœCï@(&ü´&ÅÒÁ㲯$Ó]¶-¬Þì~Œâ»Î%Y4(ºæ³s\Š²Š²3¢:áË붊à†÷;þAÁ”@ÝJ»5œÜ*¶ŠEòâ¶
+Ϲ4Jm F “ú¸½3m™¶np®‹gȆkf;’D¶ß¹S+ |r¾¾+yå•keÅóè»#ºŽUe"’Q—´êˆ dMø-¡v¥×Ãv.ÕV怴¼[8óÙm—œŸ¹têBiÜ„!ºîÍŒI`hÞÌ)r:rIöá·oå0Öå _=É_Œ~ÀuÉ=,]ãûþ¼`áùyWs ÙÝ•£40±ÌuaÚS
+=EL9QDxˆ9{Äá‡Kx‚4ÑØÜÞí‘cŠŠÍXÚÏ
+endstream endobj 635 0 obj <</Contents 636 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 636 0 obj <</Filter/FlateDecode/Length 4392>>stream
+H‰œWmsÛÆþ+7ùtwx!oŽ£¸êÔŽQm2I'CG 5LÐ (Ùÿ¾ûì EÅmÇc
+8Üíë³Ïî}·T ÿëïÕ«·7‰ºß«WKýG¢´ZnT'InxC¥ò".’$U‹JÇ©I
+µü¨.ÿÍ'´œHè>ÕÊäq‘V**ó¸Ô©Z®Up¹¼¹â—KõI¥U“ðEIZ2:nÊXJ'$\õVýSmÕw˹5m2ÈŽF5OÇ&ŠHg£IÄÆßDïò†T„Ú¹Ê4þ¦ê²‡:ÈâDý„ºLé ÁºÆSþkù7ü™œ¥79ýSkaèq
+"ø ö{œe§Rr*£#Q–,’àŽ4aTô`û}X«V½ëîšÖ*Ùo[[w0ÿ°[¥A½(]8£n¨$ÿË
+²Šv¾ù+*Ù:]%òÜÕ”wèmD9Þ?¨›‡U-
+§Åãš¿¨7lõá†6è*Ønù+I þ˜beôhJRN¦ˆË?‡‹àuhÄ49 ùå"C:úÞŽ.÷ …G ¢ÁºéÔë0T×¼a_&íi9ÕP5‹DÊ¢5YP‘:Þ#9dGš%%·ç­ÑdkšT.}C?«–~„­èëKlV.f!]î÷œ/CÇ(NOøÚõÄV”T*%M3qÊ°zRºŒM5„¢Ò¥/þ¢ ÍÙXR™zk·¶_!í*Û<ßD; ÊGVfq©tœe ŸÍXÒé¬yÍÂÆYÓ9Ur•‰~<O&˜tÆ?Y¬°µ¨‚뾫íú@nvpØÖͦ(«ë¾ÙÖÍ®µûÉý£˜Ôc¦8Ç(^wBN”£î¥dXµ#ôÀ:Ô&$èv
+ï Vo诲|ú3ŽÕC+l•"ò×3*4£cf!T(žÎ²\Ü«;pßGP®0¢,ºe‰_B*ý˜),'ƒ(ÍêÍ{qpC˜?àÈ––ktò‰gËÅËBÔvpÏyp«Ä‘
+¢Xó!dò¡h4¬pÀ´vƒ¥6)¯bÏöQ”y߆ÉÓ3vé›)›@«}ß°ëXà!vV—!¿Fì8‡ˆ¯m;.ê˜?IÊw«ž–¹”Gƾ€ rÇíp!/Y9YࣇÐɬ­zy‘Ø=oU+Éé@Sßv«µîø4P¼ú®U+*D \Ô‘Ý‹( ‘ 4ÙΙ 0B¿;³@RùQz±4òæ“Äéà­ # üPÎlÌp™ùéݬ‡bBdb÷zVÜÈÏXÏYж·›§Ðc!—¦
+Î7…&.<hÌî¬$ŒÏ¬v»¶±ë™%='Üá³iÕ@Q/¹q)V¤êV 8¸6ÎâËo¥ùˆ,|H '%Έ¹g‰ÈÎ2“>f<ë¹¢ŸII;ýµfR×P׊8y&৉x ÂeŠáÀZëÉã[,ÎÄ7wSžµR£ ÑÄ]Jo­‚XÙ²##È;—¾
+ŠéeÌåSÈ~Òî¦v` ;¿áGàíÁËheÔRµ
+Ô„3«‰3Ë`â zà|:ÎTŸ#Æ %ý_í=«Øõœu”¹³ ‘—(³üe:,3çsžåD‘~j›Sëÿ—“ÿ#–|?Ç›/6£éòè§à“Ü 6¿\Œ»î$-3†=R%“Ða:%D
+U³W–—>Ë£Ú¦n†Ö±S\*/x¾ÓñˬR_œÁ4+_žÓà6<ØçÓÐH¥©£Ž$x†ÔL™‘
+K³8ÏGÄ4
+&ãý!Ì84Ÿ¥àÑqèÔÖÝ~Œ,KÏØa~ëи²j¤6Œ¯ Ú¹æ]+–ÏZ\÷ŠF=cZwƒ9o”†uÅ=æRÁ —ëL>Q“:E®é­9`ëéÛ Œ?ž¥|{tà¿Øv/SÁˆ5Z=†Ù_‡ø&Áã_pÏ.;°>ÃpH#ážï/Ä[øÌû†ù†ÁS·Ž§Gt‡Åê>ÐCšâ_ Â"67nÍQ¡bË
+öÊ„¼ðH4ÓÍàŠ
+03^Þ‚»,¯+¿¯Ìó5ß*îÛÁ“r>CF.#6êdÝÈhåÍ)%kûj‰YûÖºÇ7€Q¤0¸®—\
+µÌä˜Ì7m
+·´-ÎÒUäá³Z:¨<+ë&ä+IÖô£,ñ›æ­ß¯mÞI¿`¼_ªññŸ¹Õú³ô¼ó·6ÿ­œG`/øL.Ákáô2©}D•œEʵêçÏôÚÌë¬ä]•*ð"UY³ÚF¤ñ~|U‚&2:Êì¯ÌÞþâ³QnþŒß{éÆ—Cy!ßõ$¿6HþݪB²çšœ®ž×Œ®; ®©pá‚K¥ëÚÜ“øëUQ3ŒC¯Vé©G˜òrÓ=RQÁ…Ô“\IÜO›-2›J"Õ'°-@<í‡ýÖ¨»éƒ-"è ~=éÒĈ ÑË©Ý¡+%/ÎD•Ú9ž0:œæ Üt´;Ç!‰Aa@Á¡Ç&3ÕÆ™ê¢Þ€RƒÞp*fn£w˜©³Ô
+r*¶¯dˆñÛÈ´ò•q¯ÆDo*»ƒÄW#R„eÎÝD© œ`¼¹û…ß⎢ΰhÏB„ó"P­>WŸ™K2˳‘íV
+ÌÁ§ŠmáQzÉÍ m¤nÁ)GZ¸’kµ—+išÐMÕ%\Fî3é“ÛË»½RK(õ‰Y/cÖ+UWzŠdg¼,<8(5îu¥ôç„(ájí Ÿ'ËÑfæ‘ñè
+p‡~ÄÎDÅÁ±tO†•Ùð4ù×U`eÕ¯2C£}ö>®¶N^xŽ¢;Pë‘z³rûj5‘ÊïþkFÕ‡©@Èôûˆ¥–¬mšúx•×YE«xUšåÁ›5\ªP˜
+ šÚÔ›¢éªË/°#„5*€Ñ®µ7ŒÇ œÕví³ÝZ‚Ü‹‡&Å»I¡oTt}£³eºˆ¹ž³‘ŠyVuD0V²1FÚ Ô`ƒÒÖšø\@þê "‘cÒ%Ÿõˆ¯ÕZýaÍCOÜ°fãàt~™ _ÚèÙ“å†)œ J>¬ÿ.ƒ°rV6óPq´´ÞŒÔ"fk§ÉòÚDkb{r§š¢v¼ T4Èâá`G ê5£|5öƒß(2ív«”HºÒâÆs°Ûù¶=9ç‚ï’jGß2J]×Æfèp´Af~GÇÜbû¸ŠÉ¨ASFbC@l·¾–tçóNêÁ ‘9œó|TN »Ï‚ö+¨ýnš,—öIZþÞª¹,½¹”+ùв¬´9”e6¯ƒÔ°v#¯€ÿ¢ §nŸ(õ…—¼¹™¹½ÏOK­
+ÈékÂô¡5šK=
+endstream endobj 637 0 obj <</Contents 638 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 638 0 obj <</Filter/FlateDecode/Length 4435>>stream
+H‰ÌWÛŽÛFý•BžÈ…E³y羓ábÌZ²óà ŽÔ#++K6ÅÇ¿uN7›ÔXN‚}Z‘}©:u;U|±’”ÿú­<¹Le{’ç+ó[*FV÷Ò&iZf<ÐJY%UšæR·&ɳ´’ÕG‰$^ýÎÆÝHõ¶Ö’•I•·²hʤ1¹¬6]¯–¯xáz%Ÿ%o‹D…×j)ôzÖ$¦“ªpé­ü"y±š£ì¬€ìŨæË9D'ÒcÌR‡ñ½Ó»ZªŠØdQ)…Áo.ïÜB›¨HR¹bSEY¼0QŠuƒ§2þuõ/
+³$›âïqfNC‡ð)s0Ûª¬Lø³N“ºÒ*S«G¤ïºýƒbµr¼MI§j³è KòêZâEÛÔÑ/ñ¢Š>à×{Ë£¶ïwºÏ³[¬G°À“jlu{¼ò¥ãõÝ×ñ¢P?,L}Œ3uÃN—4çyÈî-|Œ[§uЊxu}ëuêrJxæ¤Þúiv½£è]œGëŽXÔ¿<>áúwÞ©Ÿ½å?È„¾£ì™Ñ‘ub4K&1e êx}A0{í†@sE]«óN²D½¢ NqÉIq•ÀÅ¥{5fk
+l°
+KôŽ¦A£.ª£;=SGk†½Ã$Xiq6‰ˆ>nYÜZïxá 'ÌÝþ›6’ÏXT£:—¸@µÞ»Yu.!Õ˜ÿPæ3±ÉVP'Ý•GW0ønT9ðt·d ¿~ÕÇ ‰çÿ€ŠkãêåÓäæ¬ݬI©nNƒ‹RßFoT†ýÞ±ëAÙ˜`L$Ç/âÞ^¡(¡#ÄoÕÅ=€wŸ>ÐÛ…fÂ^~„3ŽýF]Þ*D öW^^ã.”TîJŠo\÷HrSÀhš$5
+EešPü•R}ÑŒ%UÊ›«×W7g¹
+^Úþq·¦'ë·,A<µ)ôÇHÑI#&)
+°Ðý…ÚV²9èrq$µI ¡7Wh"¯¡œO7ò©?>º)£ ü¤~`}”Z(jÁ»&KmXÐ.#üçÚaK’À«E¦–éÎÚÊ°ý%ÎtÃ:VÀÁ·êÿ<B)>y©¿×ñÙê-1¹k¯˜|µˆŽ«õßñÈFCÚº‹< èð$;ò+¹êóÃhoo74ôÈľçú°ï‘
+‘.SªØH8+?Žhà™¹
+x;½†[^Nø! û
+-·ˆ:´n7SŒU»±|
+Ï\}ÔC;NÓlPúÑ@ý¥][pBðÔŽ6nÙÈk7ì¹´ß±³clj±YþMfÕº¹a7×`yÎò¨\ȳ±:^?§­Ï‡>Œaì–O®*
+W„ùãŠ
+ø¿=çp‘ïoçì¿ÈÏÈæI  y™”–lúY—}àíõ³‘LaÄw“´%i Î |
+h2Yu‰GgÈL@ÖÐQYšTÍyXúQæŒt1ò_)”×cÆú]aõ= œ›t~™ÇÉW†ûÄë7åj=l¬oŽ¥ƒ÷™y¾ ó2ý3:‡_¦kOƒ™ÝìŠX
+ºÐbI\ ·±=ð«×Sû{l ¬G>}Âvƒkk§³¼|ÚóO£ì᱉B¦>ªXé,F§wýÑ*·Íºçgt1{räÁ¬JæíÎ ®]åOº[ÕzêU…?’ª.ÆÔ ­‘sò…mR“¹Û»†ªqÀ|Ƴ̷y'=(=ï¬K1|èzLÅSó7:èÂ<cÙÿ÷†š††š}§¡¸žðcƱÎÏ/0ùþ¼$i—Ô<`˜†(9=´HsßqÆöšš«Uœï&q?D2àÞ@Qâ¿œ+£î'³-a²"Ië0§Ê Ú®IÌöÛóS´—¥™1q#'9à[:@†rbE=!1‘©L5¦µKû‘Ú‘Ú‘¦©¥ S‹K”,©ò&´ =Ùçd±˜³Åî–ÀÇ)bâ)‹qƒòÇσ‘?¦ÑÐóGpcÜ8ÖZÖ´£}=ÎkÆ“¶+'G/ž!‰ÎÝŽ<š‰<š‹ä1Šqá-‘Z/|Îj°¾ß=È3¾‘½ÀD•§óÒ-o°ÜŸÇ³¹žv@ËÐÔ˜AÊ_pÚ÷¸B?«¦ýÛ}[´Sm|Ñ°Wäη#~|Rªò%âÓú kÃàaÔWyPx±ü3^ÄÂj ¢Ù:Ógê"/’6;‹Å‰³b 7 “ìõÿw¨`Í(]Sw+vœütìñæj‰CpmX¯n¶¸ûŠ”B€j…ªèmñCô_*óÓ–³áùÊü–‹B¿÷V”Oæ&IMš«ÃR}–²J*Ý’"­“†ù÷Q-¬Tw–cöõßr }¸ÏþAØ"”í}ü(ËÝ–AvmE vËJ7©+ÔˆÆà`^¯¤,ýê)²:)#ES$ ÆùBûœÜË‹MÉœ)ÄßN¡%mÒVeECðLÉ›2©³Ñ”%söï Ïó€Ýò®µ´ÃðE2*aQR¾ÈûòW„ñ6\þp¦åBÐ] •äšè(¬ßßã¾í-Põ‰[n kHHKucOáSë¿ŒWËr£Fý–Rj¬@Ïì'©òÆq<S•Íl`›
+ƒ*™¿Ï=çÞ~€dU.#hšî¾÷¼žMN2ÒÎÊ5Ÿ= ó¯!»¯c•ôN)[Yœ÷‰d:É;C©S®2Æm0
+Lväœ(tBD†‘”D¾ÍÑhÒ»´siûš¿(`um™i7S%FD€íO
+ÿ b|ã{;òü»±ÜÉ!=ý&UGÎ6(d^mf”|‘Ü[m¦­¸¯“c‡ûøC7í[¼V³_Ø:IE*R »osšxé<ý­“É[ÊY5oö,ôŠ+Ù+¶XUëÂD‘UqÉds`O×ã–rœ$n4s9ØÔÝ¡Oö:|±B°s(¶¶×ê*jôÔÛÁ4?Ï«¿%½F!ÝLoÇo³ÒTÔ¢´mÂkC%Æ5FèXu*ÿÀÔ–¬¬—æÛÙ!LÒŒ“Mg1 rn=PéµÙ†µÙ†/ÞMAè·"ôx3ºŽJF®+äÃh²€ÝyL:7k·-™FÏäì<ïI7öjr+,ž-rQØs{(×ìtÂÔ†_B‡}y2w¾n’¹šŒLú4·¹ÆÛ8ò£”ªŽ§+Ž·98o‰÷¿ŸF§Yš ¾³¨jìןäü*– 3¶ÒSkÒ[
+ä¤jj×$=£hpà-ÀöÀÍñò‘èrŒ/a©&„ú¾àÿ—¹Mß/ÈIɵIúWíÜ‚“½+P¡‡ƒÄrššË6Ƽ|å+Iß¼PÜ9[ەɬ†µÓ‡·¸’ke‡ë]ýø»Úà¿ÙaR±ó‡yžÝ²…“#¡G¸h¥Æµ§{’UPt`Èpì`‡wm
+
+obL« ÓdÅ£?ƨäùtÀÿ’aT¶†¾ÉL?‡ÇxLäéE§vC÷$MµÌgOuKÀ•ÅÐxóDCèÚ#e¡‡»`·d‘™€N½%0­zµU8×䂺•œ0ð»Iùj=¼ ô „íÈKr®ÎM*øÙ'¹Á1NM®àšÃVÜzû•§y¼DÞ¬#ùQoýÀÛº°Vʪ’åÆ®î¢Otì+áûnGx¼ŒïÝ#Ê
+œµQ—/òÍ88¾SR;p\(å¦ä= $~ÁÕ7Ò€¤ŠB­âsj<ÕD¶ôÍØ®/»Óos?yJuŽcßhäÂ{µ mc4E»:tº‚N
+²Sº\P^¢1ú9]ǽù‡Ã%©ôÉ•aÛOˆê*´vüœu\½™ç|Šˆ1îZ٣̷l: mý~7JÞÀþˆç~PßhG#¿¸Ûêc—R†ZèÎðÉ3úgΆqr*oþ7r¯iS…Å´µîkŒÆŽŽJü
+^üöÞæ»ÈvÿK#9®i„©N¨,mùÜ5…•îÙ¡?æ;ò[&Hn>ÙMRž‘¿®„ߊF~·ór—” ¨
+”"
+
+endstream endobj 639 0 obj <</Contents 640 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 640 0 obj <</Filter/FlateDecode/Length 4696>>stream
+H‰œWkoÛFý+ómÉEÄò-r¿¥NPxY[Ù~HŠMÑ[ZrD*iþýÞsîÌ’ít»‹3wîóÜ×óßáÞüðÓMlîGóÃ&ùOl³¹3uÇEJ‚ÚeTÆqfÖuei\šÍƒ L¸ù/}Ë \µ&-¢2«Íª*¢*ÉÌfk‚·››K>x»1ŸMVç‘0_W"%—çi%¥IbanùÅìÌ›¥6àæà½rb¾žª¨,­Ži¬:~P¹›&iP˜<ÁßÌü[¢0 ò(6ƒ0)ƒ4\%AŒó¿Šð×Í?¡ð¿Då"M£²ò*gßÕŠž:¯Ï´ VÖ!Ê¿XòOÒ¨þSdëgÏŠóáBVZ‹6¹—Uÿ¢”˹¨4[%¸ñbŠìrR=5i¾9°ÙOá:x÷±“—‘Jâ:Z— Oþ¹q‰Gàz†,å÷D<L²@È¿ào¼Â2ñ£ßï oÓˆT@Yl®åštC×àtìL‚¿é¬¼U-]€>…jÄüZ5«Ë¢TͶulu+Sñ®ÓmeÂU•gÁµø¨áŸat£(0…«:èÃ,ØÝË‘áç'\ŠwD/tf&q`ša0—¢pà¹i÷»(ÛIìÃÁ÷á*#Á!\¥A “
+ .LÙ*5¤Ä=‰W^^ˆÙWa¼ZÚwÍÕÐâÚ|"_§«a èæÌ9<e‘I¢<ËÌ*‰’bJö!IâUÓ60­¹ÅÿýÐOdö-LàÖ=è—kÈ?ãûˆwãd”R¹x’ °Hðå]Xy÷ç|'ÞÇÅNÿ[käÙš_ IãÞ‰âYÛÜø¡ÀÜAj^.Xа½µ¥a¢Âï!Ž^~ªÛÚ©F{
+$ Ï…<Iàã•urÀÛ€o$6ש«0çoŠ@îó),‚îü/&ŠB{Àá@ݾ¢œ7‡m/—‚t
+Ô|ùÕ
+Úx ´ïÍ)‘fÑ:G§öÀx—p@WKÎ5ÛßÀëHß—4¥w.v
+#†ÎŒÓSÁûéY:y0C³ã½‡ÅÁ%¤ÌÞNÔÛt´Ì5Yr
+‡;TXq ,
+¬·4=Oþ¼: Öu7vÓÔ3ýæâcK×%‹
+ê:>gEíGd®¢–á˜ú¹rJ1¸‘W¬khµÖ»Ò2gq ì, Î\+ÔÅ{ÎHµ5­È‡‰Øáð L£1®ºuån«å’Þݳ=”Hè€×æ=Rë-òÙ\ ‘³àáAÿî¨V¼fX|<’ŸxðÀ¬‘ŸÃNÿL·A7¬‚ׂž›¥—[Çä
+Ü<àª÷ H”¡’ÖèÑÞ¶wÍÚ_«”‹ˆ¼%PiÌ[òY—îÈEÊ3(¯Þµ«„ÒíTЀà÷Ù¾ñ‰0å
+¶\5ù«˜×ÌÎP:å|‡=Ç­,]ÜêⅲƟ:ZòŒÄaiüm´c¢’ktPðÑa DQœ³Àƒ$-^¨XŒ‘å2ö’§½Ø¦E*¶¥³™k^>/´_ÛžŒä˜sÃõôG?ðâ ^2OdŒ°‚.®\ÎTÁ<=¼8­ý4¤÷ÎNŽçû·‹b¯½kR¸fó÷eýö
+O¡¶Á"`g‰X[—ðSYO‡¦=»¶#V}JH£Fx&Àí¡çïî`œ¥‚˜Ùɦós]Òy¯ÒØNtT“8Ìœ¿éQûM'£4xR¾^
+Q£}`>"y‡üŸÎ<©ZÓl}çfê4Ö€i@éÿ¹ƒÖ¾¦Ï¸Ï …¢4ƒD»æÁ4M²ûÙ&ýŒE
+î·#t×Ámƒ#œÐ]Gûö‘À•Ò‹I›ººæÐæ:§]:^î˜Ò‰dKµ³2v?ɽë| -}sÛvM;qø‚Y…r*-e`!óxèpÛïxJÞßàO£Ó ;ps;ôìÍ仵šú.)ºÍµ$``ô›ßžÝ:¾_~~£‰ÍÉ~Ùí‚åR­¥ôvÊ}Îv8לºT3lÎÖÓ4ŽI.;N…ô!° Îüù ѯ³’Q4$ôK¤Bâ£Åà †¸÷Öö¡49ÐNJIžÌ›Fª‘ ‚Ï †º¸ýC÷ž·ÁXþ[gsîPõ|ñ¥Ùlëž`n» ¸ø¦ŒN÷R¿¦oÑßTìÖ\Ø]Gš9tè:»›Phš‹ «Ìˆ­ öס,_Ï.1!›‚[vZixOW csSl˜éCÍJïÍÈuèv†-ÌÃŽÓŒœ>YjþøÛëÜSãÄá#³¥E†¾…÷Ä]*ДP*\ÙRÄ'%wQæp©‡“Ù+¦t‡ÅîЃ®ŸúfàD“I˜×7fT8ßËíN‡
+¤í4Ã\»‡n¸bÕ½uã–0®/ºpiÕS%¿Œ®U9¹‰§B3ÉÝ6øÌ6‘F leZa¸æ€²ÜU¦+švó’jn¹²ˆ‘bêêf^l©!¾Ö}µ£;#F=Š/$úsª„ì•_+»6R›#Œ¢#]G’–á, «6³“Ë’ X¡ðiÑ°Pùb´ØübEŠuOïÔËÀÕÞ5¾nƒtÔÜc&b`ÐS£Ý|Q¸õÅlë–†l/žù¹pâ[ 88ïZ;-DÚd.§‹8™)0Ýâ ³h¶~“ƒ–*Üi-•ÙM!'ªk~|Q/ŸöÊ7¡¶(rºEýË]ýC&r´ŽÄ.8ö÷v0Má¡Ò²ì,r|/ÇÒÕ$¬cÿ÷aÇ¢¿%¥¾º»ël™¬ì‹ DÈÓõ²4~Ì®täH£JV×Ó‘cÞU/ì66ÙAX+Š)‡Ný:zè»^¬e#ÿ´Ôàh½H­‹@I¹MZô(W¿êXRèHá3_.­nV׶ò—ºýEˆŸÑ+»mvÛÔ’~TkÜÊY(š¢`IioŽÍ:›¬­vªŽ]{ÕÆÝòæ¯9 0¿w$ø6J÷'µ#Õ£V÷n^d½³uÍ…{¬l7w¶~°.‹Ù5§ŽxF¯cWñ[›€Ç<ú¦Ë¶6Á-ÇÚÈ>†ZÙµéÙfü^ß5} „^½2l^[RJ˜xٹȋ‚¹ŸhïócªÊuUF¬æÙÖ“»“ZµEZKûŽÞ>, m{_)‰íÎŽÄ^èi‹_Œ6¾PfÉŸìžÓ& ¯jÊ'¼¡7·ÍÉ„ -ð;‡z÷Ðê÷Wæ»UèSnì_ÄââÊ~j€OB“úÐÏÎÿiLÒ@Ç3õ4å|ÂU¯ùtŸ×Wß±yœ»U\xœçÏï®vgù/ëÕ²Ô6Då.ñr, Ëfv0USR) »ldY€ÅN$™ÊüýtŸîû³
+Oòn±vÑ^%&Ÿa÷)ïróJV Ü„úôÿ»Ò5
+KùC›8P-E8V䆕GŠÒ¥€]AþÌ‘Þ÷šÈ+Dkr1‡¨)1Úzû'P§I2O“%÷nN*oÐV[ZáV)GøRí>ùŠ£;ãÎEÙjÐRáSkÔÀ¿¼EÊån'û¬ê:N/ê3ŸàœÏàÍ‘.ÁIÝã”_,æëˤB“aÁ ÏJŽŽÀŠMð¥íõð@)Ž¯x²*Œ_”äú9(›‰2§ú¸fÒøk
+Í0cÆ
+¿Íà¶ZÆ(/©ãf²RD†Æl—™Gv”Ñ'1}ß#œ{ž;78F5®ñgþ…v[¾yì5ò 4vZ$S’då˜ûã íñ‚X»ØkE ÍÎ,å¿\9ö¥•…ÂçyîUçÌþБ¢+!Xv¥;¯ó»96™ï˜A²d”Õ¤#€1D' Ä°s[ua¥ÍP¬¬_ºöÓë>!Ô'RÏF‘Æ3Öcµ)+oÔÂX¡–ŠT%*Ó1.Ëfbnª1‘¶|<Jð˵˜Náù!Ì8Z OÐ'ìº/zAŠ†jÂœøìI ݺ3ñêzÎ"Ïh:ÈÀF $!\kvåŽÅ\'RôáæÛÌ+íøo8±ù®È¡QMnU.KE Ñg®xHB³4;‚ séè uŒ‚1Œ::OÓÌv~
+zùÏ#·C¹£c=óÌ¿É¡„‹³kôêåd]½Ïéë®*8]N[µ¶VñöI8ÔªÐÝ4Ir¾O“ß³¤¿ùû(]ˆ¥þ.z”ÿÞzÞrÏ_æ}Âäè…ß(d¾Ù8ñMß_%öFp+
+Á£"”Ò&!·ï{BŸÏô¸ŽRšû?Nz
+ÜDKvÄ‚cû|/(ù fËaÞâŒh¶>}‰>"ZÂ’?qKPÞ™uñúRË›ð¬ïa!ìp1·ª+¤¾nàþ; |¤¬—)K"c`(qœ}Îy*ñã»|ì;6iÎ8ÁÎMÈ;•ÉBñ·qоàݸC„vØJ×7X_òBn¨yU‹-[ü¨•9µz°Œ_Ø–î×^„Š9Ê¡ç0Wìð?#{öOF-ó¡iÞ
+endstream endobj 641 0 obj <</Contents 642 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 642 0 obj <</Filter/FlateDecode/Length 4899>>stream
+H‰¬Wi“Û6ý+øH¦Lš¸x䛬Ѧ&;:"iìlÅ[[‰3«-4¡$;þ÷én (‰[)4ú~xh¼›³„þ«žØÛ_f {Ú³·sþŸ„q6dEœ$ZІ‚é4N“D²¬à±IÊæÏ,`áü¤ÁF(Z2¡ãT,ÊuœsÉæ+ æ³[RÌÙŸL*ãY^¨‹<æ)ã gUÉ>°-{7÷£AÛB¡íȺùÜј¬c‰‰ñãw>!fŠã¯dïÍBò@Å û„< Dñ ÁuŽ_:ü÷üW ø7Y §¹ Y^m´O¢ ¢º ƾöís¯VDfé Žõ1ô|‰¢QÎWñ}®Œ•SWBùInš”²âkº¬›.gg]öØ4YþæÁd‚}†ô5P²Oø[b#«P{üXï¶,ä2€ê*Ûþ„MALû6åW÷%#”ˆ¦ÿuœÂC:Ç8)âÜ„Y¤:5ab=sÇT@Ö6Ò(Œœ(W2˜–†QÃ4(÷ðñA<[\|‚E6|FY0œ±YY8 >ÁêzY²
+­Pĸ•öZ[àÚa½ƒŸ ¥Á[­Ð 펠LNWe¨KÔÚ¤™’bF2`0€ÿ’ oÖJvÀ…’ÑVŒ¨4Ê›MpGìÌ3äP¯¾Ç:V¶Þ³£šGí
+K,0•”,â1×RÊÁ#=Ú€—a$Z©›
+sz(W ÉC¦Æ?c‡) Û«Ág †ÔžHo¹!ßÊÑ–s‰©¼¦#HJÒµ„M‹Xr­éÐäqÂáü -ñÜÑgšIà(KJ9›öF½ ƒÔ!² fF:X1;`fyPk$ð´Àûœ) ¸¥B6´)=Ž$.çqžåœ¢ÑàµP&ün’YÌ… (æl°)ŸËíaQ}ÁrkçYg¶€VÈ`·¤º”uŒX.W¤a±`å—HÚ¹‡h´sûÍ}Ký¾YÈ<ª°koت°ÁÄÁ|…JQüXù 9ëx?,Hq±'=þ¦Y¡¼q•$‚-HuÕµAZß ”J:&­SÎMy7&¡Mâ+ÿBKãnqÀú¶ñšÒíMÓϤ–Ê9qùü'(3°)zX­©Ê´@¿ØÓmm¤ /ä`üŒÍoÚœø°wöÍd(`ÆÈSä$™©†”2ÈŽî Ò7Üó?ö7X^:VÜ;]4«¦0PòqB…Q qòêÓ0¤8›`ÐBN§‰¥aL5hG ‹¤Â\¿„º5Áé…§¢¢x3)D§Æ§aÌzu,MÎ"2VNB
+˜7Æq8³ÖI–¿š~vrC´½Áœžœàv»>¬a
+;²¤Õæ™#sÇÁ‰ëÁ 8éáëoVè ¹;äümH-wä.tj$2tÁk¤ƒ…:…EÑàp0£7鱤
+ñmJ ™ˆ
+—D#³¢…«^ÿŸ£qoª@ƒ*¸ƒ#ƒ¼Üü2ðñ©>é-­ä`è4-i!Ç…hÁŠ;Î Qei`U!þÔ¤-ªk¤ri›êºÄ5`»Ä5`»\_¢:w~¥ìD¬Ê¥w÷|Õõ–È–åZÑ©¬È®
+«`–0†Æfq3† ~§o¿•>% Aa'S{’}þiTNnóšK=Ϲ4$4 #¿cÜ)yÄš^f“ñhf¶_Kz+YéÄŠNš—Ñ9Vœô2V:Ä+b‹•×ç«X“¼)dÔ!¥\â¡<âq­ÖXÓÃr`´äÁnUŠ¶‡j·1ÕŽd"t0ô立óáË„Qs† 2†KñƧx•^„=Ý4å€æ0ä)܃œó¢Gž6IX&äiÖ†‰5ÕÄçpÜ
+B¨Ž«—üsˆhl‚Žï'ä}õ×µ8În¬kq$ ÕÍ"„þŠÇmП·ï.¯1Õ9l)©Îa«‘^a‡Ø‚°ClAØáú„‚Ph²¾rwñ"ÖnÚº[~]8,Ø{DGHŠàÞNpÕOA\¾ìªCHç9’¹æ¤Ó ‰$}°÷c¸ÈîîqBR ¥QLP0Åõùétu £ÄuJÈ爼1K"Âpg
+e°ÂÛrö€æ]˜‡y5Y×Þ@y™›t>Õ3ÍzUé ¶qÔœoˆögY{¾\Øž/¶çËm³‡ý¡ ~Ððû‚ÐwøÃ{¾Î.¥yq´-
+þò-"D£-‚ ;¼™°Ã›Ù:âtp ¼YUYÖi«Ã—ãó÷)"¼Çc:pqŽ{øñŸwxÎÏh*ð
+ÜÝjànPØÀÙ*º—tB‹Wõ¾×SþÚƒ3 \£í|Ó^ÖM²Ú,W wÝZaƒ¿6ÊÊZGÆ0¬6—d $ÒjÒý€i¸Ï1LK—«Æzrøíý„²‰¦|BÔ?Æbj‚3i¬y¡qNéÝ¢–¬0´é²ìÏK
+Ÿ ‘Ü@•Û¬iç\žëÈJÌÊŒUk«5v83a‡3³õçLzœ)Œã,%läp¾Sú·ú¸? ˆßàÁ=»çï[|g„ŸY—Ž·F˜ÿÂ<öùëöð°›”ËÏ‚²ê ܹ⻛5¶|uó!"è (oYﺇªhòùÑX¼7Èm®ÐíþqG·Ý—ùHfƒjxCfÞš«ìlf ÷$1Íæ7*Ž7ä×÷m>=ÕKψnÅ?V @)$[-è¿5[->¯&쪅 »ja¶WKЋsÖ&3 3‡)–P,ïì!ƒµP#I‹ÃƒžÐŸ=Ê4„Ö” 4-Ž‹’Ú€®Dü ê¶Emƒ¶Íí|ËD)õÏ.›z¹ê³Ô³¼ƒù2î:Fæˆ@'ßY™Ç¬z))#½!¥žõ錼„_Çi 8K+èßg²ÄKãLFˆFM¶œqaË·õ˜³PÊiÁr&‹
+P œ•t²ÔõÜ·$Î~€Nîp*yºßž°`wæ\/$Œ™ñUt%pQäî†Âdð$¹AZ-Ò\ýÂêß
+WK=®™‡~G $§bD¾ìg0—3Y)Ž¯3)Û­~2ɲ“åY}õi ô5ÌX'
+æÇCkZvá QXÔ‰Z8¹°…“ [8¹­#6ÎÃ)4§–àJ‚¾ŽGÂfþ.ivHánKfn眛V%¿¤^×ó¶~£dÂv^^2’9œ;›ÓkJ´(Ï~0._–nš¬˜‰t‚ç%«à-×C4Ú¹°ã… ;^˜­#ýX‡†|FͲ쪦>|ÝR·ý¼»‡¦Jl¨Éã‘^ùvÜ=^·Î‹#ë÷錡øô½e‡§<*Ûäu½y?ß,ê%ÕpGA¬¬©KA¿_Ì_£naVè[µÅµñŸ0$ÜÐWÖA‹ê„“Cÿ•ªêÉ¡J-T>yJTCb
+í¶ØlÐbý€&óñIv“4%
+JÐ+¡iÚ÷¿ù\‡…?X¨Ëª¯^Þ|ÑÛ’„(gB²"í£q‘f®蘰+:fëˆHû«‚¯¹_»škàãÓ!ÿ’›çÝÓÖXßÍs`õ¹*ÄðÓø‡4úCM¢ý×(kc50j}V§E0B}™¶ËÚæÓb‘,Z³m†ÛBçÆ#ýÚéH›·õÈ8•GÇi±F¥˜‰Z(˜¨e‚ÙvŒD8Ë”ïÛðËr鈀Á³ÙÞïÉb‹ó´ý›`xÜŸþCŸu%&[ôY§Ï_ñÖ9â²ùru ²,æ7ów«õê–€è^ŒTåLïþhŠA5ûžÓÁ4÷
+ â­ÜåÓK¦7ºˆÊ'SŒUä£ÜH5C6q€ÒØèÓǨʩsÆ)*2ê÷æ:ÅLfãª@i>Ñ!¬ÈÙ1%6hWJZ–Zþ˜µ.꺳ØâÉ,vÑ°sw­…—ûµãhXjÉ–†lp!³BŠá1É¡P-tk Èþôÿ`
+endstream endobj 643 0 obj <</Contents 644 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 644 0 obj <</Filter/FlateDecode/Length 3888>>stream
+H‰´WÛrÛÈý•y<‹¹Ø7Š„¼L$Ra;©l*Å• ­6i“”ýût÷
+»h˜.ðMÄ°6ÛWìÛ²«²{˜­àÚ'çrëÔ“q}°¼¬7z[éØ­à*zh/ÜJÒ5Ü®)+¿îê–<Ûõo.X®˜‘Ü0-ð¿bÝÀ8\cö3„å2 ã¸À'ý½üSs`#åئþÀj𬈸Ù爌:€ôN»¾ã̾…‡º„Þ-s¾Q¬Ž:{ÉL"ÚÍ^Ù÷måV9ßJšî¥À«í•’l,ÞÜHšÖÇÉ…»Œo]¬ÞE)¿»C?Ãõ59P±¯ø¿BGî#Ãøð¼Û²H(èêÆý1+ÀLßmª5Ž*F,‘­ÿ{x/ˆŒMt}#uçD@¥ÉƉųZ‰¼¬ÏZÂF ‡}ø/ÑÈð î[1ùc4²œM7ëTp&Ý¿æ_˜Ð)§Ê
+8}"ÝìñxfÄ¥ºV#ÞšG×im„£kí¬*Îð9d¦u¶úβ[ ²:(„×OÓ±¤ÔgWñbrÅn#‘ñÆÃþ<ãÏ#ýÞ¯ñ÷HÏ»(ã[| .*|üc¯ø@o‡Èr`n7 dŒ»C©ël´Œ4ŸÍ¯!À,ÿ+.åÖËßÈW0¨xéîÁ.w]‚^[e
+´ð(yŠlÀLÈl§ÈÆŽ¨u¶& ¬È¼p÷-*H0šWëC”@š)ª/‘ˆùk…¯GÌq(‘š.PE~“OV9ó¨ÈKTdÇ¢"8T˜o3¡°õ ’xTè§PwT毄€ÄKˆÎ+>T4vuððù‡3pÊ&€›‹Û± “DŠ KÀL°l=aˆh8\dÄÅfÉX´l©êrd] ¶g;7£¯Ž ÜG#âPÜlù ~‰¡6”øÕ<)x‡b²€âÇf9æ@-øä‚[1–·ˆŠ_æVÈŒ †l= Jr:L. b:³]-‚˜ ˆ–@´"$"Vy²½|ößVŽo<$]4õ šÐS„f†`j\°©{€Ü*K6}ŒÈŽ»§3„-ht¤©M5i¶
+¨oãù}·~zÞ>Q±¿›`#9_@sóîür¨­Ã$¾`€D3].`ë+HMìª4|78ŸñĪ+M4JÝÏ®çjÐ|†]N'ÁÙ&Á5Õäv¹À¯F¤O±
+‡˜µŒV Cº}aÒùb^"ç“\…ž–ÊW«É»¼O7ÔÍaÆ%j¨S ™ ½€­O7g^70tsÛ©ÌH™í«:/&¤j3¦pÛŒZÑZ¹þå4ܳ»Ù¼È]ú<I”’O«ë¼èÅ´o¸ç0(`˜0v[O®>Zãpí1(ˆ=õ–Q¿2Õ~³[?ølˆ¸C:nP†¶¥"œø1Çvƒ“†æ9&¨SÃ|±9Є̄IÀÖW•¯ÇõtjÛ$äû½ëtkó
+7®ů'¤—ÕçêáÀôõˆ1G†¨Cšow{,y/”¾ŽyôÉn‹!¦“~IÚà‡ ßåÓùõ|
+(b¯D‚9’ Y\rƒ,¡–/ÈTcímæøfÔÕab‚8è1Bf‚9`ëKt^WË:ººm2ÚD§»‰nŽ1Jé£ë^ñöÔl®]YÂ5¯mß˨½l’£¾LŽuã{ᛶ¾49Rpï ®±$Ò)e
+>‡Î¦}£J¯ xÂDzîÐïávÇ `ÀLn ؾ—ý(ß=ûo!ý]Õ·b®@²brÅrªÔÇõ/Tɉìøô×ø©¶Gt›Do(H0.›ÔCÅ}8B|n¾¢A
+„ÉÕÍ|õS:¹‹ ²µÉ©þx(j°G húö*d&÷l=‚Tµ‚Ôý£¡hÛ«|ûëšdè}õà”(I}ü÷kè´àÖ€1ªO{ùLm@EbµrãÛÇgˆª¢êTmùD2õ§Z¿âó´V¬³®|­»
+‘¬+sS's§X_¨C
+!`»ãØ
+þ úgƒQR1õ#¸éf}€`ÇT¨Ü¿÷/L
+ÎÒ9Òw^Ý­2tuA»R ïÞº¼H›áRñùfEuø¼ÛvvÔæ¢Í–_þøÍÜ*盺ûˆ¸KmmÏ7®¦2ïWy©ÇÝŠ~­ÈÚùQŸùQCœ+ùßúÑ­ö£ÿf½Zv£V‚è¯ôrŒßñcü@)ˆ± ¹$¬`c’&±03#/¿çœÓv·™‰¹,XDñtUuWuU×9EQXDhEsQVÔÌob1Îk9ú}Œ})*eVž'¨š˜
+Åã± ÒGhOâiOyÚq’Š#}…F>e…4ã\ç01ÿûíHn"?Ú$šè“2¹¾~ýêRm(·´%+÷ó&Ìš®-/ƒÜÛ‹߉â`¤š[lü°—Ñ.tÕÀˆ`7w€œ)©áÀ™ó uãÙl¿ué9ºØÆzòá¥|¸¾zsy}áîwÆb.͇ÕåógɇÈC€Kr%‚sR‚ýÔÅ)úÍe nëÁp*Û4jkÜC1·žªgÁ:Ë˸Ö8ª:-éÛG¤¿Eíñ)>݈\]Ìã¯pdcVÒx=fåFEñ
+ÔÑÞ¦1÷°lü×i‡->Ì»‹ØLˆW²¼‰Œ‘Cþû2ç£áYüÉ£‚“B¾¶äŸ½t]­_5Á—Öra€+nssh¥|?é6Ú¶ë
+endstream endobj 645 0 obj <</Contents 646 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1472 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 646 0 obj <</Filter/FlateDecode/Length 3147>>stream
+H‰œWÛrÛFý•y\Œ¹°Ÿ$[«Rj­Ø"•<Ø©EA
+R)“”ýýžÓƒ›nÙ$¥9Ìôõôéæá\ò·½VoŽg…ºÞ©7sýk¡´š_©:/
+oä@­|ÈCQXUÖ:·¦j~£•Î—:Þ(pƒ¯–Êø<ØZe•Ï+mÕüR%GóÙ‰\8š«oÊÖ.‡ð²‚‡ë¦ÊuPº€pµmÔÏj­çSk(Û8ÊÎz5<41Šìl4E´ñKÔ;ŸAEªMâ•Óü¶ê§¸‘§:qy¡¾&©‰I3Ü×\ùô—ù4ø3LöÆä¡L¶i- }@¹ýȺ$ëåû©|mòúÿFÄ–Ï(òÏ(*Ü×t¢ËÔ°Æ ºê§*Jy¬Ê„©SÀÍèRYÿ,û1Ëå“,O8&Ù§Uòéó ÷$Ъïün˜Èmê“íf­RmD×õé/Ô^˹U³àî®Q‚3濳ÓD;£ub¨Î½µŽvjàÈ•µ*ëÑX_MŒÅ:7i¨ÙÝrÙìvWw+Øäm•üxÛlx³O3—´p‰Öv&|ƒf‘¬¬÷ cið®Õò¦+ã³cÄ5KÔïøÿAÉ6_gÚÔHÄJÍ$+½$c# ŒÍËð·%…¼r(-àël´ÉçEÁ5åêb™è«©\m¦rmir€ÞíZe¸ˆ+nVoÎFŠê,*p·@,Ê×!¯ ·ñ.CæyçðÕh—¤è Ô¬Ë‘@ ÝD«PÚãm‘»okJAúУÓxMüöÖÉýl0‹¸Iô@¼
+u•$
+€íùìô}‡;ƒrR.%ã(”òˆ»GÉÕœþur‹ýƒäÚI{­¿º’‹\⬩HBe0,QvTN¿
+:_×µšèv毺åº~ä©KÓuxƒ’·‚5
+TV_£¯D$›b=öªºëUº¨: v@8å¢U¾$Íôøz•‚ïU»WKÐüÿkdÜ'ê¢ÁZíÒ2áLËb›:9µR\q‡Gn7ëþäîÅ>ñ þJó¨îaí7dtÀgrh…ùX‚+X1‡™œäŠ
+µœ9½®_ê¸Y‡2¾¬TdLsêHh|
+”ëÉñ ¢y°”ƒN„ o‚où\›A §ƒ.;’¥å™QY´Íj04t–Ò Û†è&–âqt“¨x#ƒ'"ÃaYu@~fØ+böëàÀe+‚™¹àÞ0›ͳ¶c
+§‹–[ Ï3ví¶¹T÷ Gÿ%ÇΤSÄbSLˆõL¹B’ÁÏ;$¸]]ÊÆ~BÅëŽÇ-‹&N -E^¥Uׯ{©Â‘t£?óZøRú
+Ið”,¸zû°Gø¡?ßË¥Û•è])³pòÄ÷.-ŸiÂ1‡CŽY;=˜)¡÷{ùíˆVÒfü­, ‡‰+ÂMH× ?/Ûå‚àÑ!žEÊä­¸Y»/1ßÍÍ°øNÌ‹`ds…4¾›"}È¡5S° Ø~TÞqš_ЈH>\ “µC"e[X€¸rRÑ¡—x±ë.Tû8T7¹P(×ÝÜ×µN¬Vñ·Cäº ߈¬³f?Žé“·ê“`_¬i7ÃOv/?4ˆe-uÿ ôÌPz…~’ÀóùzKÁ%ïkAã ¿®håÐ`,CRŒ ækÒæMÞ#^ZÍKÒ>n.ÑM¹¾Q@(¡<¹&çå)OýÔl)(êá
+é•<“¥æ=mž85—l¡öÛÍvÏaí¿¿@ïcÁ1xzÅî´é²‹ð¬WÁNÂ@ý•½î¡¦¥Úp­á¢ âÅxh¡£Õàß;ïÍî¶Ð†Äȉ ÝvßÎÌ›÷†5
+ëÆ:eMÇ;Ã-
+÷ر%@½ùÿ®ö’šëR…;Œ‚òÆY¯X‹{ÂÌÔ/ÎQçNâªXÒ±ºÔ`Ä*X-˜öÈñ²"ù…|„*}QËœƒ¢Ô³ë¢yè¢ù_ÏÜQ*9‚2fT™¾¡E¯ì¦u««2ˆ>ÄýÖvSšKÈ~¬ÊC£ÐÞìéxf²EÂÒ48vh•¸Ü‰ô‰‰±»™±Ó`8Y C¢ÎË  †CqjåÛ+6è=¶t=
+endstream endobj 647 0 obj <</Ascent 626/CapHeight 562/Descent -142/Flags 262179/FontBBox[-113 -250 749 801]/FontName/Courier-Bold/ItalicAngle 0/StemH 84/StemV 106/Type/FontDescriptor/XHeight 439>> endobj 648 0 obj <</Contents 649 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 649 0 obj <</Filter/FlateDecode/Length 5185>>stream
+H‰ìWÛrÛÈý•yR"ƒ;â—X¶¢bÊÖzE*û`o¥`’¸E‘Z’­¿OŸÓƒ )ú²NžR)—p0ÓÓ—ÓݧOç&ä¿æÆüt> ÍÍÎü4·ÿ
+5ókSa˜FÜPš4 ²0ŒM^Ú ŽÂÌÌïŒgüùï<aõD('ðia¢4ÈâÒLŠ4(llæKãÍgS8››?L\&Ï ¹%‘ãQØÌØP„›¦6¿š9µì(ìIwͧ}U¤Ó1
+UÇ÷zï|&Wø6òR“X<cóO]|ë%Ah>x¾Í¼ÈŸX/ĺÅ[êÿ6ÿþETN£(ÈŠ^åø«ÚBÑ}òôvÞÄ9Då§cù6
+Êoz$Î\”¹(L>ø£»¢R´Iú»Ê»J¥^åc£7ƒIyù=QN‡(çÏ¢<âäøÜ/¼wïg1?a
+l¨o¯¯ÌÎÏD%ëýñà—^½‘?‹ZŽŠRxð'±w‡ýeMv6à-¾¬ýØ{ò#íO¢ÄûäÛÄ»…ÙgyöOÞ¹y¸ó£Èû(W¬°ÁT”ô(_«Õºú¸®ÍÊŸ”*z¡;AÜ¿½Ææ¶n$™hYrC«ªÑC‡¹Nï¦ð® ’86Ø4G=yï-`Vµ¹¡q´WœÃ»1ÝÛÊïÔ£îæ\,̽K?÷fiÓnÍÕ[uosÌO5µ ©:~`ƒÚ[M%À™¤ÞKœ=Å›¹Q•þŒ½”0:A=^û‘dz`ÈZ ··ÐdÅã8ØY ÑÀk„¥ioÁx[ݹ|ð^÷9d¸/ì]÷Z\·Ó
+o!÷6+qÀÇziðÜ’sÊ›A^„…‰„xÍBóžyaûà¿ðm>ØA:L\Ä¢
+çíâÚî²ìÂ(ÉAøþ¹;ŽgWì È'èy¤Cþ1Ôwˆ§¼Õ7!¿àû!˜;·Æ£ž÷…D¸†;D ˆI€ùX1Ÿ æ eë'ø,É Ðt€“/j²“áž;H¬¦Àª…ón‰‘C^îÕøc–|,°Q
+¦N$oÝa5Æ ¼‡Ôé=×ÿ#T]ýUÿT%éÿ ªôüÁ|›v¨Òê(p*ÒdŒª9m¾;k)òj|ŒŸ¹Ëù{6›žÓÍâÜ·gzˆûÏ À/Wg3·v4Õ<º#IòÈ»á;´ÜV­×'Ú*¯µ ¤‚›Â»¿g›ß6m½<>¤z¯ñaéO9ߪ¦44%hJjûP#™>™Ø™”ŽP }mÉ‘Àd-ÊW­üY¡mÌôu/tÌ}Š>--dfA8ˆ4Ó3CôlóÆÔ[5šeÒ7ËÄ…C1ØgyLq“8r ͸ÊÕ;iÅÀZÒFüs«­/‚ €DØPHª
+J+,7¸ƒßvÒ¨éë7¢ÅË翺öKyk>•ø–¢>A÷U{«
+5ÉÇ%6‹;וѳÚ2!èÜu8ùf¬l3¢àiKö4Ü»UZ³b’í`l…€µpö
+Ü3åöÍRi ¾,°qؽ圪R_0Vƒ‹´E²˜ÍÿB¯À¹øǶ÷USÑ5ÜÛNÒtvâðZ[ziC#´ÑHœZ­SOS‘``:º—f‹¢ñU¡™OÀ …›éæcÐÖå@UP»”®ŒBqŒÒî©qEº×òÊ5°³!Ô¦x\»òóÒÄAORγ#Š7´õÞd
+[tyÎÖÀéWŒ
+µû„{nÝÆD•ðÈö'¼Ž´~Dp)ÈZI/M6îêV}TOËHö@kÜÐTôCSâ†&µ~Çš„Õ3y«ÝˆØ}Ä>ï|œ|€íë  °KÓv…=\²KÖØëe0Ê`ë"i£âY“²ªžÍ]φ«…ŽJ.oOèvýJÂ)ÐúB[×±â¬O¸+’_8 Üy]i»1UÇß×êÞ;îè‡Öï Ÿe…å(ÓX%vä0¬T×$™©3Ì•·=fª°ÅoPT:Gʇw”ªö,uNß=:ºežíõ¶/ί[¦ZÞäì 5v¯íNbâÝrà®ø(O2F#òk§I³'¤ëä=âK6øõƒvP|?Ñü›ùjémÛÂ…ð‰*Bû —<ÖIø"ˆÓSra-Ú ‡aÑ­Û_ß™o–ˇ–ŠãAq$’ZÎî|ó=øüª`o±úô
+’ÌlÁµ údG×°šúË0,¾»¾B±²}ËiŠ“IŸ°¾>òjø”üÉ/.jÔÔ,F~~BšØÆ„ž~N%"ÞcvoÚ “~Óå3|5 À³zM¼mˆÕÿìÛØUû¹Ú´Éƒ§E"é¦Û¬¶àŽÇr«Aø³¥S¡ü RÙ6Ÿb¨’(ÂfútâD=e7Cf ­9†™”UsïóéØ–Ê>°æĉ‚>ѽùج¡kþñnúµ_öIT°Ù~DÈÅ퉊ŠVAÆG‘¥ò’åÂÞEiçcK¾
+Ý{WsÁO›Ý#ÿ¿K.éà?àZ¥@r…¤q¤K½GJ&p`“ÓÒü±TwÀ`ÇPÅ‹µƒ9ò1£taý·´ÈcÍtMbÃEݸ ØýP‹ÕV‚E³ q,È+áZZ—i=vS½|1¨ [Xí)˲Ìy‘ GV #º*X‡7Om³_Ó>Þ-
+FŸrM©*Ç|Î{áW÷Y–ãmfÏæ´¾¿ßrœã(—lŽ¡Ë‘ãìæíœÖc;w¤±[ÊÜÕœÜd±U¾–º»M‚{d¼ùhs¤Øps4ýU˜þG™{š•³CüãÀB†Åææ'L
+äßÆ ‹%WÏ“ö·d&'^:uRßÃQVùK%·‡?鸡„Ÿb*> öOpÊÕüö{Àœ(ËÒªÌzäÊÀy}©gue:›cY‚šOñ
+y§à„ú#½æÙ±e óõÁuéÔOx‚àYö ÿD@ælJ2%n GÉK„Šò”À d?çì­ìR§~.{;ÀÀÐÚv |WYUä º>&y‘ìX”ª²¢díÞ%ªÌª²êõ’© ¦P‹Ìl92V…ŸN”¼¯nrŠgR1MŽ²ßG¶‹~Ü\+§!l,× ÓgHvhM:°Ï_ŒڶľåHeg†äÔPŸzé^Mo€ê ¹ ôóvzyÎOG•8 àUVõÙ*¨/Õ±J_*Á±fG(rNv§l§lV#}–ç^æ£WÕœÆI…A‘,­Íª\m´pŠcN±ì ©˜#šÀ¥Ð~©â{´¿œ¡ˆxå‰Øõ
+ÿá×Ëä=m»àÝ™t×´Í2Ù!öU˜n¥JË´¸Âõ;DsßÀäÃpîü¡ÑôýË„ ët¾´ ¹±ù"·5üPœÛúîuVïšgînOîÄ¥ÛûKí•¡Ø;ñ·Ìâ@æ÷F“[å•öÌYèaÛ2hÕGTþǵx}¦«ÊùObˆ¤¸¨TUJ­Å¨ÖçÕ¹ë©1ÒÆ|¥†‡Ÿ M$ÇnêÐV¡oºè€¦H†<Ã(Z9ÖE‡“Í-OX eMŸ‡5ý´Y)W«€º ¦µ[ˆÉ40yEç»å¯5kç c{Éi];<Ï–Ì“ƒ=›6iñ9¹
+ÿ­q…Ã îµ !mKDŽÂh9âòÌQx6°é{ îõÀô “„#¿3–¤õ¦†[Q¹À
+™¬ðæcò¿
+endstream endobj 650 0 obj <</Contents 651 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 651 0 obj <</Filter/FlateDecode/Length 5753>>stream
+H‰¤WkoÛÊý+‹~"‹ˆ—»|·ŸìÄ×p‰%·®‹‚‘Ö
+ YÒ¥('¹¿¾sf–KJ¦“´…añµ;;33g.*æ¿v­~¹žÇj}P¿,ô¿b¥ÕâQUQg†T*Ë£<ŽUT:JLœ«Å“
+T¸ø7ïв#¦ø´T&‹ò¤R³2‹J¨ÅJW‹ù o¸Z¨ßUR¥ /J:%¥í¦Œt®tLÂUkÕ?ÔV].ÆÚ@¶I!{ÖóåTEét4±èø›œ»˜Ó¡6A¦Rk¢þ./¢Pi«‡ Ôy`™b¼×¸ËÂ.þ…?’Ê™1Q^z•“ïj EOȻϴ fÎ!"?Ë×&ª~葤˜8(›8(NÂÑY¦"mRVõ¿%RÎ2åØ(ÂÍ`RGæ‡A6CÓAãpˆqrÁ‡3YŸrüõŒ«EÛ0 ¸iv[ê$ çòª(GX—y4À
+ñÇè‚ÜtÉwÊ=ŒæóÄû÷·øy‡_! øqAQ!Ùwüæ#ÞÜã‡çîãSH§!Êàp¨ùº–Çç,O©wŽ±)pf|ŽR„`^}· ¦%щ”¨2K†P¦JXùÓጵ׶”ö8®­y°Çw´‹Ü¥ù†3— O‡-ý·Ž¨lÝ'u.cÅÑá`|°ë@JÇç0†Å0ŸVZ’¥A )÷.8|ip}ûþêvÁQ§P}d‰÷Ws÷†âSÉ\ܸBq9YC*y¾ÜåãzR .´ùz Ùÿ/±³Q^“ Šõir“ØóüÆ<0Ò°"/"Ÿ2¦ÒÒuV>ë͉"D7.0N\«û·@4—ÓIu§<¡fælá:ä·«7èk\_‚];®|ˆ}ÕŽ—J‘ó8ËÍ®Ê~Ň¥Ý³Û&+Uv6U™Š3êú7ïúAoÌÐ|ºIN$´lܶkb´ cLÁ:iÙYÏÐ\úî\
+îrOÐzÌò7¡dŒ
+ÎrK–IKô®7¾ÓK“[ü™|ý+Ut[/‘Ñ(}OÝlÊ WÊ@ÛÙj ¥Xk7¶æ¡gõæ¤f`aÜzó
+÷Ì$xb7KÍ`Ëì‹æÃÉ<[Eiî:'˜^ÄS(»¼ðÎ7ÒeL”9¾œt9õ>  <œärí¬Oë«Þø3,åo`|G¸˜¿¨OM§ZÂ5Çê!š´ç6² sì cæP³}»Œ¹]š$ÊŒ÷¤«¥ØÇ ©åˆrªõoÚ:K°ÍbÈOŠuÝêo½ßo(?m@í[ƒBÖq&ƒˆh„
+‘f¢Ö)Í\¬Ñf3J¾ôQÈv%Uò¤ãÐPÑŒ@™²jè.b09?“Ô#ã’?÷ŒÕÝùåÈúÚ<œ<…ÚsnbLTÅž']l¤s£&gϸ0gÌ*šg«ÞóÓ×æéˆë“º$gßÉ
+;…fã1 +3‘IóÑàÂ#•À%\À…(MCÿà FÜo ±IÞKÇð<*ótd‰e8Ã
+NAêï0a éé@Ó³>KcšvMzë)±e:Na»ßæ ﮊ>aùyƒ-£ÄxÚ-¬úê!ì[ˈӑhPzÚ°äZ¸âŒZ)Û ã\ûrÀ›Œü%Ç$P½JW_;»uŒ+58òûH(~gÅ’7f<À~é+è‹ÆÒ„1ŽrSž„ñ§­ƒi×GÿÜÒÉ5¸u¦§
+z­ØÞ‚ïF3DVDƒ 'íÎÍ=I <ÿµQ‡q«Ü7ž”>§æÇýžëP{2@^lfñˆO[†.Œ`J“úóUÓÜ6rÿ
+ŽTJÄ|nN²£¸|°j-Ù{Iå
+¡· *sθóïתk5²ZÅrq«´RœG,û„ò}Œv{X?3Û­ÖxúÛ"7K›EyÆ¥¶˜~ …·œÕùÉ‹óÛ[™¿º½ýÊ©½A_3­t@ÑèEE4N=Sv)¨¬Î)‹àb–¶«1/”}€<£}L'•éIÜÒ>ó~.LzBü„€B9
+¢¡ÑXœ-Ò|ˆKÎD¶]FZ÷_å‡Tì áõx«ù èYîð5µ>\¯0j}©ËøÐF
+T˜øQý²P5{ÀK>ã´}Ϭ&ìðºw’{ìѽ,X?è‘
+õøqrݵu&…;í µ›úJ›kPCÒtµÈÝQ¹â{é.yî,%ìä a§¹·¯Gî[I†ÅJ±RÅùäõŸ†ê¿CÅÏŠÄ'½P¼ÃéžA°Ž^ÀÞ3-":-·˜@
+dD„`¨ˆxD ’¨¨I"1Ë©ƒõÐtÌM'Bá!] 7´ -þ=îIøê?¼×­Äf Grw;ƒ›‘ëW|±Ü·Òˆ¾Ó°<ñ®Òó¢ç:’tg¯7$?ÄØvdŠ¶_]•@¥£j£Tí³¶ð‡I5k™‰ó²š„ö³>EÖ¨¤CŸRž
+DâÁÞ’˜xÑz–±ÒBiyJj¤y|ܬ—Í}³iQ¥VtP*«g[µ°rO5§»-Ë`µÞK0×ü¥KßÊÙÀè‹Ù[ŸðúU?Žž¤ÂÊ(ˆwZÆõ‹á°üb-w~)Ü–ø~R]Æ/‘žœ¸îùJù4q¥³Óî'ïˆËÉePd¯Çƒ½œú‡Â."‘Y¹ˆÅ­ Ûucè–g°aŠ8I³^²VªŽS«–”¿9ÕoÄÑH+êÝ5 š¸Å{Ò_!1wSµûûK«G@â 9÷³ ä|ÃÈçÝú'
+4í§tÓ÷üÝk|Žµw‰³wì]ÂÁ™ö®ô¥™úÒ¤Êþå™— MœÕfp?´,‰¬ö,÷%qV=úßà¾yŸ ЇÇä÷¼F=¨8¥óûj3’‰–—êPeHQ)ƯPãÇת×zœDÙz¼°êråeXʪ!Y´ÖÃml)sŽ|°Ù©k‡2\ô_úº
+‡jÕÄ08…餦 Lºï ªaƒ8?ác J"%ŠÄ׳šùJSýä´Èßœ‰Ð
+ ‹‘x»Â"
+¨\6„£UÎÂw @œ‚,bõ-¹¢Â¬ã~ ðã¯;wËSýã%‡Xȉò•4ðo]µûN¹ fþô¢(y©îxiĹc^š+ zbÂ÷pµ³èfá<K=®m$ œ:³$ãg«hŵI»Ôh'zAnÅß>“öˆ5„…™YþWûS³ñDûݲ]ù ´Ò„¸…–M»ìÙ…ÓG³öÑìåSJn"pòšÕ%ÈɼóR †+M3Oo£3Õ0&+ÓmòBã'š$à2dŤòØKFíþ½•cåpc÷ô±<wbÁ‡Öðá¶bþb•Û; ? ï€_ݳœª‰†G9§úÀÿïP•‡“ü=bSÇ‹2Z¸T-œ•ù©“ù€Ê<å о%¤™6#]2Ôj/9USvǪx¬8ù7·ꚪT—Äcõ zó~º«úì³®³8-mWÁÝÒë¸.òBž.8Œ*1±éÂDé¢Â@Âò-*â<«]T¨å­¢‡8‡Ò?Nú[MvêÚCRK0,CÑ÷B"—sï„j«ó:–žI]ÆU«”±9#Tkaßg1%éÅØÛœJoWL{»Q2ÏM^àß’"NêŸ}ZNŠÿNù¸,ë‘¸¨{uø·i(ò¶¬t)òóüê@÷T±I“¾\‘îÛèT ¢nlŸ®gª­%úîÉëNlõݨÈÉ“PT —%ׂ‡Ii: À".²°¤.{ô÷–$"„;*‡•–Õvµ–¶ßê'ÍqDQwwAOñ¢X©ež–q¹({ºçGjn»ªŠÓEÐÔtºr¹ö‘—êsgÝïñ\4جÓV<<áç뮥>¢†‚9‹ó¼û.6²”ëâ[Õ«™°{s¿i!ƒð’zKàv<-k„ŠÊÖQ»6ûEÝ5æ{¡–½¤Eµ\îö+U)û\¤š “Ç©Èü Çs(›”'<ÊÉiœ/¼J¿¢è,gø‹î
+
+Ðw½kØ¢ n!8íR8íâô¸¢qð]cîZŒE|áDVæžNÇFÆâlã:šC¶¢†PíQñ2Ý=†Ì=7™ÓW®ƒ¬åŠ¼««é2¬é’5 |¢ž¬íqž ›^—§¿2ïøôúSô
+endstream endobj 652 0 obj <</Contents 653 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1496 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 653 0 obj <</Filter/FlateDecode/Length 5055>>stream
+H‰œWÛnÛÊý•AžÈÂd8¼‰<ovb.#±•“‡¦(hŠ‘ÙÃH
+E9'ß½ÖæM²âS†%j8³/kßÖ\-MÀ¿vm^¿»Ìzo^/í¿cÍò«Éý HBnÈM’úiDf‘[?
+ƒÔ,¿ǸËÿð„ÕœÀ«Ò„‰ŸF¹ñ²ÄÏld–+ã\/ïoxàzi¾›(}¾ÈDK,ÇÃÌ·©±7me>›¹Zέì0†loPóãØDÙÛjã?Uïò^T¸6t[|Gæw]ð]ëÄ~`¾8®MÐõ¬`Ýâ)qÿµü; þ(&'aè§Ùhrô¢µ0ô@ž>±Îñz@T~2—oC?ÿKD¢ÅEÉEAüÅé
+s±&uåÿŸ*•rª*ÌçNIÞL.-òÿ%ÊÉåų(Ïq
+rôÎÍœgq?f
+lÝÄÙã¡ÞnŒk#GЇðæN^s_SXÝW†YNñïí gvæ°3ð³O?b’ª™À3‹ýœé˜†âõ`©gj7v¾ºÖJùdqät®—9nîT†Ú %š´Ä鈆%‘¿Hs$ØJ¤Ýv»m+¾wn*DÎÊ\îå'þkYZoª•yï.œ
+ÿÄÒ7Q€¯x0WXÂasW¨ŒÁ†™§Ñ¬îØ`‘¥ƒææÚ×¢ý¬ ‹É…L]°I2¹
+çúW6Êà¾ùé@jc´¶Š;
+÷ âŒÿT¹Æ† Îë¡Îa†eìÌ\K.±×K¦úH¿vä9B%[r e<tP¹òQÊâŠÕ)Xhü\+€ü
+üLÀèuÉ oà:çì<E-ô³|2#sËOQþêIf߉‰ŸLÕeDÙ^3=ãÝERøÖÏ~0«Ó^¯„C/›‘/O³`…>'+"ŒaÀ<Ψʉáx! x!Œ‚ÅÌÁÒ´1
+Ì™¯¶å¶•#ø+¨<‘)‘!
+Ð]Ž.~cù®Ó9éâðàý-«xÚíî„‹­0ÌÞ 8ïÆ$¯`šTbÁM›´N ­¶Œë BŸ*Ë´ñÛ¹h’ÿFFíO®ÅÈÔaäÈ@I€ü·W$Là’ÿ„'Ï—(Ó&Pº¢ Ì_)Ab½`¦
+-)ª¢ó]{ðV'Ák~ñâÆgV
+Áÿ\o”sï}š^wfù¤— Cãèk2fMŽ4MVQ*™0f)ôg×UÕ€è²kz[°³xF*™¥­uä¹d&¶î.é³ É8/¼{‹×Å×?äð÷å©Ü_
+6ùŒµjä„G‘U¾cŸ
+•³‚‡³üÝqÉß0Ž•NƒÈi ü¹,åÆÒCŽà܇zaG‰XŽ2rI©šÀïÎz‰¨Þïñ+0kš¸¦êä]Ð=ù€ND¾ãYÍÏ ¦ßi¹Ë|[ŠE9Ȳ•‚y1èß*-a|ºÆ¦X}Sr`Þ=qB}Ø–‡¨þŒß^sLd5¡9CÊ&.]¿KºŒK׃%Ÿ†Õ6Ôä¤Õ—Ña6¨@^w¨`[+àž’Ç!j¦îS¹k±ÊþTP€=’jíR/áÓµe6òúQ’»21êðÕ{»YÚA6‚)¼Ó»Ôn«Ü*ÚÅ[†vrKS(òQx£¹Ds b­^÷›/Y§ÞW¬”B9É»\<( þp—OÉñwÜçcßLÆÚLšq–æ¡™\H³ É
+S9VÍ<Ô_áF£u´DÌs;3z®1“ c3p&ý
+VòèZ’ÀS„"b ýÜî·ëú–„alýÁCÓà–»]áRïDÍ£ã©r¾ú«µDV xÔ‰Vº-—º=DóJÈ_™ðW¦…±l¶‹‡è
+endstream endobj 654 0 obj <</Contents 655 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 655 0 obj <</Filter/FlateDecode/Length 4507>>stream
+H‰¼Wmsã¶þ+øV2c!øÞ~²Íå:=çj+퇤ӑ%ZbF–|"íÿûî> ”,Û—x¦ss2 ‹}}öÙ‹™Jðo¿R߸NÔªSßÏÌeÔìVÕ:Ir‹ µÊ ]$IªÊÚèÔ&…šÝ©HųßqÂȉ„N𧅲¹.ÒZMª\W&U³¥Š¦³ë80©/*­3MÂËŠnÉŒªm¬2 ÉVûFý[mÕÅl¬ ‹¶–EOpK¦f_5‰NE›ˆŠ¿Êµ³kelll”«ÌðßTýKtüŸÙßY¥’RY•é"”J+úó–RiPÊ<WJ$>S*Ó‰ú-ŠMÙ$6idò±¹µº¨‚¯ªÀ·F
+§®Œ&Îó"?Ë7V×Å›f–'.ÊO\”d¿Å£»lmÇ.­ÿÜU"åøª4E L*kmÞ¼Èæ!ŸÊg¡g|ˆ\ú!®¢ÏŸ9£ÈüŒSˆòû‘ÿ6ñÄDû8:~hw[…ÐZÙ¥c%êŠ>cߦ™ój×(ä£ ñwzÚ g2̈šu‘¢&û³LtY°¦…%«½¦Oª,%mªh›$Ú=lèö¥Úâ%žØ¨§wuÓ(|žÇi„OKþÔ,Õî‘ßš½âmد>ÄYtѧ3ÕÒ"ÛÔhuËìi‡É¢»Ø¦‘š«Kº<:ç çýê~Çû!—ÊfT¸¦ÇX}mÑ¥“Rôn(‚_ðÔõØ–’W~¡‚y‰}°
+ïÙÙ‰hŶ,j¨A!õ Yõ)¶ÑŒöÑá@Žv>R¤bߥ©šmò’aí×hÞñÍnKŠ¬è¿šCL'fóþßÒå7›FÍ7ýš6±²);Ép†—Øâšžh©a—&8ÃREàF-›Eëeá:Š°a‡‘ÝrΉ¨ÈG”ŠÁ
+I!Ÿó_Iëž4 8Üó¯KÜŠâÍrzaõÈk Çr—е)Ù±¹ìz¤·fÏ+'îÃõ'Õv¢V×·¢÷FÞ!ň\ªZ–È–ÓF¾¦éŒêLXÝdpø¤ú/§<âR:çºÔˆü(fÀበ•Õ\© TuU£¼n¬,èÕMPÎÛÌnð«^¶žêBSEôb ¾BÖÞðÀ‹]ï„\q*žCiÔv^ùU
+ƒå¨®* ž|¨M&²Ü´§C”QÒ¢9äÂm‡…ùÚÔö Ôœ[‡€9Ø/UäC:Š¦¤ /´}+9Ü7'ûJ>âqeðg§ÈT¾r`YÔF\H—tÝARU/à.ÎBñZòŸ‰Âv‘Þ:É¢‘Еw/æ} }P?¡@a’÷–å­Ð˜åøÜnpæ ZCÅ}U³ïÈÓû†c õ§§àqSxU“}[ú%uR䚀õ¨EGT¦î÷»E³| ý{´^ÕAS{eŒ$®ò 5œU’3Ø Œ£ÎAà¸yÀó©ŠPn¥éˆ[¤G²ÐÔß}‘]Sô©‚bŽH-õi?ß.wôÁK5æÔi–¥•Ú†’U§†ìëG2wNR7í’ƒK¶ïVüwÇŽèYéJ<)¥·iÉN%jÑ-»ó¯0ÓD£h„95ÂÝ^=púv£ÃßçÛäZj™7(›§˜ª–PÝŸ|ŸàRuBj\|è¡»%:è­dmÎyÈï­gh¨Z@à 6¹”¶‡bÆðÙšS¤‰Ü~+N†æˆê­8œˆÕI|¥XsbMlÝúZw®9ŸÄž˜Ù¡.¹ðùÛ-6>4‚w >/°;‚Û…¸Š±²u c3Ž‚›ó€ÊrZ°Ï«y
+
+Ù ]Ó{ìù ¿ÿôZG{§Bƒ‚‹87¸m|R”"¥ãAoÎŽ\t8«D#¡™Æe/Ïj&ÕY]áã}³ÚAÃMiïmxE@½òDÃ5«÷APQxWÔùÉæG2•Ù®eÆ×!üsæ7 àÛK‰8áz?°hBý•ð÷† ¼"³nX†òBhå+}X¸“-;_”GG¯
+›ìµ ;IŽ)Õû§“Rgeõ˜NÜ‘{5b$¯ )pš›TÃ$QÿÔ€¦‘¡´l*i’iKþ¶ðºEÛµÃ÷ýÝ 2;ô±=˜T²Ó“Jv0©î§F?-Dîêñ¤‚â³Ñ³iåÎ#,@¸Ý´½BÊ1¨×Ô}x·g @õ3ÕèíÓgê­™'sÌV±ÆΖY—À¢ž:C??5•Ãp„…±ÍnB
+½À¸(&• 3.>Ìf†Aªà6Ee¥îH‹9OzCS–x§Ïi‘xeÍ|–%Jp“ñÓYÇŸçKÐ{ÀF÷œŒ;þÁštÝ3‹û¼LauÀjÜ%· ‚ÆåAÇ5Á€YE¸ñ"`Þ¯á§ktø@È÷Ÿ¦—¢§ºš^ÆžŸ/¯§>-L-
+vh½bµ°ræ• V«§Úë=êFñXäšYä8™}óEÊU˜›Ôˆd¹AbÂàõ¿Ây/OGa–ȪÃaâœ
+ªðk­ ,lð¿CÎÖ申÷ÛÊ1WgÑëåòá~aN”"A9‰t
+ûbÅ}‡.¡ßžj›²¦®Ð±ÆZ2‡NéƒÍÊ0OB^—u|oŠk{|Ã]Õ!‰,ê öÕ•ç7öLB/UŪ%F±X”DÞ]Ê+rs]SI²s.3ŒëEÍø\錩riù‚¤ÂÙ !×øòŠm³ACjmqëÓò–ï·
+À+ýÐäÝU*O*+r¶©…Ë&rWwÜù¿+IÝ”.ßîño{Äë[Õ[û‘{x¡So<I:õÄñĹZ·å5\žˆJð'iy@"zÚ`̲( Ë/t¶Q<CyN0ñ¦§NÆ‘<Zo|"û[îIÚ)ÛH¢æL
+wµ?¦"Ý+wr¤é8Ìä­ï”%ƒ¢™ì(Úš<<6A¡ÎwOÝŒ­õ4h‰¾& 6‚ADô˜Q®eΑ É›ýÇ&ºÖ¯ÌçÎýt”Ûù$š®Øšk­|$W}S#ÛÕM‹lÈ.¶]~R…
+ƒ.×ÈàR'=•n…yìd÷ Ÿ••æ_oïtªêUÈ@üf·òBðt0„4Œsç³Ëed×Ë=d?!ÓŽs
+
+endstream endobj 656 0 obj <</Contents 657 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 657 0 obj <</Filter/FlateDecode/Length 5139>>stream
+H‰ÔWÛrÛÈý•y¶DsÁíQ²—R¶â•¸›‡(•‚IHB"e^ìõߧOÏ QJÊÙJJ%ÌLßNŸî¾˜‰”ÿÖ÷âÍû›TÜoÄ›™üG*¤˜Ý‰*IÓLñ†Jdy’§©E%­Ò\ÌE$âÙ?ù„´'R:Ws¡²$ו˜”YRJ-f Mg7—|`:_„®LB—%I1t\•‰Ì…Lér±nÄ_ÅR\̆Úànep÷Ä‹ù¶¯¢½Òé¨R«ã߬ÜÙ ‰ˆ¥Š2a$¾µøÕ.$±ŒL’ŠÛ(–y¤â‰ŒR¬K<eñßg†Â?“Ê™RI^•õIm¡è¾ùôvÑÄ9ÄÞŸ ï—*©^ôˆ.Fe#‚Rsd©Š´1AVõŸ‰²·ŠÒrhá¦7©¨^å¬rqå!û ë÷q}ú„8“ù†¨ÅW|7ä:΢ ÚÕRÄRGä]ãߊkzÍûº¦ÆꦌÕÇßé©© gš”FVVÍ*Ïr«&üY¤I‘CÓ\‘Õ^Ó‰ø²‹e5ös!âÒèhµ,
+÷š2Øo/NÅD%8ÿŽÏÇœ¸ƒu¬£6ΣŽþz^ˆ-=­`‰Øįa…dÉèéM<É£GصZàÔÝw,‹¡lR—m¢(p‚Í~‚Èxb¢ ¶$©pd×,âI‰íŠ¿ÖØä}¸i’þNî´I;‘‰QÒÛ´ —wð…¨—ßIgQwÛf½¤§zOª¨ý
+CH<é} Qç±4Ñ }ª×õ#û‘ÂH§öR£nÇÖOȾ Y*x?ù6Ú!>7 „ˆ6 ð w?ÄÙ— ^nëÏ]»ópM ¥–÷x ÏáÔc¬Ø§wпµï¬4q ñ‡f‹{øê“v)åL€e}ˆdQéÐ!™_éRŽy çãš<`
+gé‰h L>oe@¯|å"@°Bvþ
+ûO¸•i¦–-é÷¼ÃÆ{tf)™Y*Þ|,½§»ÂÙ" gö„ú(£÷ã
+äƒRŹ‘ES8 <TYz„(@É´XßS¾7ÂâK.)Üã\€7[þùÀ[Gé§êCÏþ¦ú¯ÊÃÐ+úM Ù%›©è£ålEP§¥GBÄ¿ð0 {ýl¸eîã `“|‚iâÔ2Í>‹ìê°eÈ–œ¸Í<ƒé¾é8™û“ÕAÌz7äÖ û¨Ï=êsî`ê%ÿÏÿ¢Ï.ÔäÉÂìáþ€ˆe<gÑåŽ š“?Q•¯I|xjÀ•»ó”X>ƒ‹CF8¦±`<Ìk±p`¥‹.‡¹ÏˆÆ´ãèÝâáÕXнMÆ!"“="púGØÉèUæq¼¬òŽW¡O²`˜Ê
+š;
+<%Íåòλ—acÝø£#@H£ÔÆØé½?—ºÊ‘C9D··ôÏþë
+\ÈzïzœËéQ0H“ *ø¹%nt.òªa5Ìq´xr׬V§÷
+ÕÄaø>k,u.¢ˆ}ã#¹ÿ§
+7l«DWO8°å)<¯J:>àà¹ÒõöÛŒäÉÆŽ}c'Æ åq~¤±˜ÂˆÈi‹Qguz:ËÅKþ_:}î$]y´É­Ð–Äv³Åì}[«$}–ÇŠ¥±(`¬PÆZNŒz~±ÅÏj>N°~ûqJè£'9 w¾P! š¥Q2†€œþUÎp‰½ÞÒÁjËà÷¬´|ÿËâÃÕâ–G¢Ù½x/¯ñò×ÅòÊ™Qà­öUjÿ6™'Å ¨:Tî[Õ¬áÄö_26Ý7O;Iξ[;GIƒªfÚP4WÝï@9äó&ØáEW÷$Cì´Íª€G‰Vø ×¹Ïp±›µu´
+Ôê€Ú¶R£ÛšiÅx±â…û¼<`ŒBx4¹ ëT´b2R¹úE·
+zèÔÊ ïj~ÍÌF¼Gnâ7ûà “N4¤Š T5ÐÖT[¤åN\³çZ»½MlÌó­lyÿ£‡K HA‘8˜%Rçæzèµ ƒ]å èŠ\UâD³rîü×ÍåÛàZBK ˆ' äBvˆ©‚žÙ
+ùýv…‘z¦þ‚÷þ<U)™ôÃ÷¯iøµ_$‘d9úÛ³l VíL×ãÌc>QZ*€ô0g§“x KHÿ‚³üÜá/»ÀPÂøìJ©±Ý3ážål^†vÏ%úá§ß‚Ÿ;üØ?Rst8MŠå“ûÁ‹õÎh ò5¦qxÏ¿ ëµÑb<è…©dÁs½ã_D
+È”R%ß’äëÀ~®`Ÿ™ ;¯‚õÁbã$E±ˆÌLÃâzøö¿Òe–b|ÎÇ Ífa˜g‚uîcå³ØÕìë]
+œŒ¸z¯JWZÝyê(­Q×W†€W{àõvªïMjÍMÓŽ“8ÍÂØ9ª¡Ëa¸öbì™’¦îÖ/}e’ήŸ®VËÔ$+çRo‚ª ü×m½_ß¹_Z˜šMõqKÁÎ^&”e,Āܼ~6"d#ÅŸp*ÁS85CÁdé O¿c«7$^cjA{!LTá­%M¢¨Eu®òÝ“͉#šÙ‰nx3"µÉI¨kþ˜[cÝKæ PWÏX\zøEµ•Ü_P¯þÁ7R¢‚ ¦™2nÎî0–§a•d°~âû8ºv'Ó‰8ßÍÏêïZ]—:My
+Q¤¬º"CYêò“Q‚É|¤¦æ­0£ó֘ˡ[íKùNy땸„»Y¡nSe¹JnG?ð¦Ïqï°ÈBªÒÖ#¹\#JÎÜ7OË+„F®°(õ]ª{µK…¯ª®’ï{'jì‘Ƨv¡
+]¨Âž£MRµŠ—Ëåû_®Z˲L¦jwy*ûu±¼²ç–]Øh‘êFPß|‚lÕê5à=?Ó÷‚Ï,·\Ý
+0
+endstream endobj 658 0 obj <</Contents 659 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 659 0 obj <</Filter/FlateDecode/Length 5764>>stream
+H‰œWmsÛ¸þ+øHvL¾·Ÿâœëqgªæl¥÷áÒéÐl³#K>‰qšß}v¢d_¦“‰ ƒÀb_ž}v÷r©2þ·T?]ßeêñ ~ZêgJ«åƒjÓ,+ hUY¥U–åªnuš›¬RËg©xù¾¡åFF7ði¥L™Vy«’¦L«åZEWË»¾pµT¿«¼-R^7ôJA×M“êJ錄«½U¿ª­º\NµlS@vâŸùv¬¢ˆt:šLtüMÞ]Þѱ6Q©
+ß¹ú§l¤±ŽŠ4S_¢XW‘‰eØ×X•ñ¿–ƒÂ¿Ê¥1iÕ•ówµ…¢ÇäÛ3í¢Ä9Dä—SùÚ¤íz$¯Ï<Tžy(+¾Ä“·LKÚá­öÿ{J¤ÌŸÊÍÔ(ÂÍhRÝþH”Ë1ÊõI”§@ƒœ_ÇMôéâLæÀ\½â·E ÷q°èw[ë<"ï>ü™º¥Ï|nc;ì¬b”˜1þNO3A:£ÑküXV¢&ü4­ Yí5½‰“"z mÕ6®£]œ”üº¢?u-_‡'ì*Ú0ÑmœÔÑ(t‰Õ!."…Ï}Í£×pýÒxiù «ß±ùÕÉeµÆÞ…ããBž9°ÌÍÆý5°r/ø¡†þ™”²{(¯–ôöØ7&ŽX'TiÑRà,qEÚ0Dª îp^¸%kXC?yy@tÚèë%3æF$ès.΋&mN}¬ºmÜFk5ÄI=ÑÒR„Isz©Ä£d›øáÛuÔãà#ÜÆI=Ç:coér¸ûe¿[ÙõWúsÏþUAG]{hÓ¼µJtªËÔ÷[4Àsº ÉFã1<ÔDÝ`¼TÝl9âØâ}µêðÅ^Œ›6¨Ð@µÂ>O!ë6økǶÝ[õÖƒXÙµê·bûyÉÀ UðP-RÞM4Þ¬……Ù˜Â×?“i¿,èØK þ;”%«hPÃNɪ»ß°Bø%»½b]wëþá;vw[Bû8h)M_±A¿÷Ý&¤E Ä´dªçŸ/xxPÁpÕ)Ñ…ïñêâÔ|¶P^­1 tœGÝ~ðWØHÎ:Û½sUÈ‚,Dÿg-A‡bvä<Eº’!º&–ôþåóÕçdÃâ:Äa „©Ï¥ѱIÍ$×R—°Èîþ@©ÌÈ&Í3Ï
+’™XäÙ‘¾bEÀ¤Ÿà->ôà0E"äy¾Å’Æ›‡AÞš‰¦ýŽqC `" õ³ µ&tLŽŽFñ&Ó#Ì÷nXuC¿cÓp5ILœj'TjBÅ©’äiYWG\pèœ4s5“+‹z¶N¡ÂGr5o’«ÎÚ´`úËJ´>ï@§©Tç°£sO¥Á° Têr
+ Èj™Uņ£Yƒ§«LX9¸¨Fð2L%u¿xøDÎJ‡•oõˆ‡ÕG*
+ òªê8Où
+ÍÊà¼Wæú§ÙKóÒ¬ï….Úè10 _ù
+^ÅþŠü3ð)ö â¯Ü³
+104`›în8€×‹7†ÆöhppƒcÄz¨×šŒÒ«•ÑÓÙg‰E?œÝB=è,ÚoyŽ0ïPYü‰fãÀÈ?Ýæ Í ×±9Z˜Pú)6Ø2χé„÷ÿ°ç¹ázºbf°ª£øImæþ–âi? WROKZ ‡ÙÛ çi"ä<wývÞ%ýöjkNÉÂEå'¨2
+B‰ysb6KUlg—ª-YÈX Œ'“¿çûNw«‘ÌÞâ [÷ésù.Ç/ϯÉÆP}'ÏžÊjC]p$ô×5¾4"øäÛ±7A±É¿ÁÅ“«P¡hñæ!9­—‰¯é0%Fj
+|¯K…û¢ØÖËÊiI¤ùÒ•$M3Ħ½5 þ€ŠþK$§ÿÊÀx|­V»È
+<#*qÛj…UÞ䲦î×€¹4oT[÷ÇHÝ黃Xp~«È›Êau Ë#ˆßìŽ
+@ÚæXBc%Ä‘ë >ªž†Í‹zo=\á¢(›ÁnÆ“5¨X‡–“?­+’WÚÉMóNeŠv:b1‰ëJýÇ9°ºììä‰MãQ7;(À7Û·õSº‹Y9ãÈ ÐS­^ Žt9±C¨âGr¸ÒE³´1ó©ûŸ´­¿š5¿n¥ƒÒGTàÓ×õ¦Òr069·iMõ¦±oç¨PŒã4›X$k
+º³õHQ¡OC½³ò±£,u~¨6_<‹'-»«Š\œ@þfœ€«Cf(2 O‚¼.1ÒØDç«Ÿ £Ø'ó ÅÚÒ€5Y<g`mtô(h;õiÜh£R(险½b4ÕÓm.ƒ ªh ³¢Š£_‰a9€ãÂùÉ«ˆøqjóJåC<àPæFeYýCU‘p.ƒ/HK&ãzÁ/ƒ 3w’·ƒYîíƒ7ùýÔÀ¤Ð›ÕDÁI€é^wmЩBHcÓ¬Áúi–\¤š ¼¸–nýƒÞ÷âi%)Aïš©ÿ„>÷#5JMö:CŠÿÇáao߈ñ†öøÉqçq­ù*œ!³`
+J9~¹Ö x'»Z§$`ÄŸ/$mY•Ñ´¡>õ÷ûü‡J*ŽN‰è3ÍRd´-Q:
+‰—‚GîüEæ×uyÑýž×ñ‘ëxZ!s>Müú¡>û
+Ö¸ >¸ÚoèýfXXYR KM_!ÿÍöMþd¨Ú¿˜Q ;>œÌ$¢›„IC ùSä0L‰|”‰áI`y^%à¿=Îç}™¼Û­ºtu²ŽÓp:O¸~£É4Ìt©8œ íRÁì°ª6"lÚët`#‡ÃTeÆÓ”>Lâdç*²†50y ·ƒùõY).ÒU-"¥¾ÚØ'Úu™«9 *Ï@L{_öØØÒçß(y+þ¥ô×0¸Ëms’šnuO«¶#­ª‡‹ã®Ú·f°©+Ï
+.ùWÈÍð¢å¶›ÕxµjUùýö}\õ~´§À’mWœðh»z[”Ë7\×ô#¨F¿˜eÜKü*˜é6ÛHQär™E§MÀã !§¸Áß@/J úÿSöŽŸÏ.-瞟ª%¹®Èë¥OŽ;LÔ’œ¹oS²N ¾¤ŠÃ‡È¸”º4bV¢n\ΧKòÌÙ=ñ@ZÞXa‡[eQñ9h«ðÐvê¦÷lS÷X• =ä­\™÷9©WQ*™+*Å[°õeFg¾áºj^ D·„Ý3\[¾aª@¥†wâ 5Ã!|Þq[ÚŒ )COÏ&›§ô”À¯³$¶þ—FÁJe÷%ÚfÉi«ðtß+ à„¥gÜ)ŽAég¯„ÀÅëà,h1Ùåó7Cô¼”ƒ¡
+ Á]ÊéϨ„Næ0d0” "Ÿà=…´7k9
+ '»!ÂV .¾czÞgì±1¶Ô¯‘³Gºß=Os{yàšZø\¯·ô¦Š>X×au¾Û­+E4ó
+endstream endobj 660 0 obj <</Contents 661 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1462 0 R/T1_3 1547 0 R/T1_4 1548 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 661 0 obj <</Filter/FlateDecode/Length 4226>>stream
+H‰œWkoÛÊý+‹~"ˆáîrùè7;q ñãZºí;(Š²ÕJ¢.%%ð¿ïœ¾¤0NP¦ö9;;sæÌìå\…üW?«÷׳P=ïÕû¹þw¨´š/U„¡3¼ S.â0´*Ét`M«ùFyÊŸÿ‡whÙÒLʸ ¶™š¤.HµUó…ò®æ³)o¸š«¿”Í¢€„')Ñv“:V:$áª.Õ¿ÔV]·Ú@¶‰ {ÒóýTEÙèhBÑñQÎÏè_Ï©HãתÊ@àk/
+Bõäù:öŒ?Ñ^ˆq–ó¿Ìÿ…ÿ •1Aœv*Û7µ…¢§äÝgÚy“Æ "ß åkd¿´ˆMFr#…Ñ“?8Ëd¤MÔ•ýG‰”ó£¬^ŠpÓ_)É~ÇË®÷ròƒ—‡@ìl¯ýÔ»¿‡Ÿéú;Ъoø-áÈÚwÞUµU¾¶Y7jݪšæuë2Çè¾TŒÓû¿ÑÓˆž“êl'zf±‹EO”À²ubC×nU½(Šr¿W÷•?‰½Õ߃ºÍñ»)ù<œc† žÏI‚$²€Ø‚Ä©é•Ê·¾½…:ø‘÷‚&îRx¶ÒL/ÍõÒ K‹(RãVÚì~Ék?óžW~ìmŸÕ`(/4VÒ)è­ü„lšyúÅÚ‚Æ÷#к;1Õ8‘üoÝ_€ö_‘ûÔwßX’Dv?Ð-‡¾J:¥ÿ³Ùø /ÞÝ’Šÿ5ýWùB=\\ª{ºCâå³)ìqãÕ|‰1«÷Z‡†µ&*3æÌì[}’’Ù3¯üA=Ùž2L cbÓ JŒšè@»D$ÝÌàú©?q·>ÞŽ©#AÁâ"H²£ø(³ñ¡ËM´ö^IUA¹5Tãî×R÷pÞB-aBŸõjØzϦ÷þ$ñæ´Ýzw*?¨é‘&&XÉ33ÙuÄ..XGV,íçô“¤Õì°¢ƒ´ã=­½ò¢¨êÅ
+g ª¡ åž\RPXÖ«mç¼XA=CFrž26c U§ˆë­L³ŽèfhåG£¿P¬GEo$¢“æXÖ¦'‚®ë"9 ‰ÔE7Ôó'ÆÅ©7;r€ƒd–GàOÝíp³š¬ŸV
+ˆ«qîÅ-ÜM½ ˆ¡ápdC‰ÀHlÃøKŠSž_¯™bp•Ä£À(p1°¥µÏô/Ë÷ØšËÒµÊwØÉzõµ8—Öç‹îأƱ¬æØFÙF•ý!+6ü^\SH«ª;F¸?Êã–‹äFâ@~ê¹DKæ¸/gÈåp±-öohÉÁ™ÚáPèšvüHßÕUQ.ŽðyÍý;Ó[·±Ç –H
+"C &$Æ‚á ©•FÖ›2Ý«"ßC U-¡§º&ú½¢°y¸ Æ-ýFPjµ(ß)‚™Êéž®{—”ÿb]JH:´Ìf PÔÁÐ0;E"+æW: áâR !òx B:i’‘Xó=ÒÕQ“¯°‚¯òÎÌHÒpýC£'Û‡ÍuT“$¬eGN,tÁ,:#2ͼk´oñ¹ÁAWð#w‰FåêGþÀÈŸøpwÖL²”Ž‰÷{°jê=s¯™ñ‰ÓdøU¯ý„,çr †ò'ì@¿/>"ñO2Øy®1:H2×’(‡({9û€|ªí!_m‰TÆRWÚ‹Ë„\ê†É^—W@¢xPú 3X²ÀHIȲ‚,[É¡K¶K±d9z#¤'ô‹Ô³Cò(‹ÕRÄ[¯ =HÐヤԂȀ.…ÿ)E\_q¼=ÀUDXO,²,•ä¬ðÑR A訩ÑT†šÉ—'?à(éÃ4ëÕnÐôûáfÛp³d{nxM
+13æ1)‰pw5Ÿ³«1™Ûº§aKFÙ¸fر¤–ìòÌ’zV8‰ëÖ˜Râq+=Ì
+–b$Oœºã!ÜGBözò¤Ä‘E¹ú·/àR4mééR
+¶ˆÜB$0b2ç¹õšvîªú Ž4¶õ9I%:’µFïÅàðÒcx£v`ù ùÉ¥‡æ,±ÿ]¯XÚ OsF2|Üá=kC¶
+´(þ¹Äw&óîvDCY“ÐN²Ã7žéòhòV!ïtLHmU('<Ú0÷(5ꉇt“ ÝT¤Q—_ÛìKæiÞ„+ì âZÝ"¦Dˆ²êj]²½7œ°ÿKÒæ—¦”¹}qÐ¥† Ü8
+Ó"«g%'.˜Ùäù÷•
+Ë–@°iY·41C±Öói<§wÝ ¸kÌ ½;”uð&­Ù6~QJt‚êâ붪7ùºñ:å!¢_¢ã^qÛý¨×ÏÙíg^b²\çõO~Ü–¿ªêÍyUß”°c…ü°
+qÆýfÔigl„<ž¢­AZ[ÑDM%ÖUxTÜuuVÅjIŸ‹-ç‚j¤ÆáËÇû'& Œqg5s[˜W-.á7j=³á+]µo¿Ÿ‡à¥Ðy6/ŠÅ¯P|²ï¶äG ¹E[ç #©!pC_4h#‡î_P͓Ό / ‹òÄšyýHÍOñWæ@WÌùqSªâñÈ.åâJpª©x˜
++Ù7çzÃCÊ'~´RçŽáÎDtÃÓ¼žP‡œƒ¼§Ûâè3r'ï‘ Ô“[•D›ß+ÒBP[ àQýò*Xn ¢¿Â§l­
+­î¡Þõî6»‹ÿº.S]žÍÝUÙò"Ç ‘á„l2zp…>ì‹By‚t€n¤0çBB—h¢<t²–Á 9g5::Uµ‚íÐ(æ`ZëŸ*W:ô(¥x˪ž¿7ó“¡>¥ž
+Ά
+´O؉ø¨¾l[D<t‚ÈÒ‘t¦fN5žXÇ8wnÈÿÝðl»":‡h›¸5óÌ ê*w ÎÃ(ĉpinѶîÝÒ:àGÈŽ¹pysÒS·[$«X–wÍÎÏ•­" ?³ák˜`l,X/ -1 ü-ñgÃBÍýqeú.ð3þ¢ÃbÕ¿©{…‹]7MÍÄ‘Nb™ |GrzV„qÎÛPeÍ ñzØ7H·ß$r¤͆Zjz&:¼’µP=¥²÷˜LB
+ x>=Í!ƒo*ܧ4Œõ€ø G þ)Øxq¨Ñ%Ñ-V÷Áxû›™`Éí«t1÷0É|’ ¯G¨ Ñ©3¼¤éVþ¯¬FÓÞß Ýhì”gªÊ#Ñ@xDb¯æ³a#½ê6Àü
+Ÿ»Â#U³q_Æ~_&®/¯M_^ŸíËÙ‡ú2u'xVk¼¾ZÓžd
+¦ ù|40åêŽîì®ESû-8Ý.†¿³°vMÿ0c—å¶q“°°­:"¼3^zx°¬bc¢ƒGI- ÿ„S \ Œ(ß1!Ž‘¾3 _öÊb×tÖ¯”5YÞh²Šye…´'iÖ—ŸøQôËÚà:öÖ~©·HtI XÓª™GüÎ2
+ŸtãàVîk)€esÉÊÆAÏxÂü£mÒ릟2SO®žÕ§[FDìw¦ù¼k¬A¹5åcý 3ßs˜ü^Cè¾ú ðÕ žÊ@aæ,ã9³­ˆˆ³wúÇú$\­î¿²Ï‘зÅRódŠ Œ+«0Ã_ËÕƒµm±Œh±÷üfñü+À
+endstream endobj 662 0 obj <</Contents 663 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 663 0 obj <</Filter/FlateDecode/Length 4422>>stream
+H‰ìWÛrÛFý•©}l™0—7ÝVË­H¶E:ûo¥ ’¥„ìøïÓ§{0
+5S]‡¤=Ð%.š9¤ãÀè,œ8iB‚ÐÅ
+Ê_±€ˆ)8jï$IÖBãÕª¯ pðÆ#sʞ̖ço¯y$ú~‹Kj^Å-½zêÚQ{u&ƒÐ1ñ@–€q!0Yý™Žt0(9YOAAW­ê'vòüöŽ,ñHá”ôd±˜_^³o\]\/Y+ÝÂx±^¼G0¼»^\L ÂŒ „eXÄ{ÎÊÊ‚9)˜Á´ôr(– Q2çÅa‘¥SüÏ› Õ]½êé‡ý
+üÕp¾ª‡˜é6<ÅHŒ!Õ’§‹„fùW²ÁÉn'oßû‹Š±<éÅ@,5‚
+öjbzöªÜ1;ù:!Êö«È43ÑE»nD
+Î ¤Ç·+[ž«°ª?^Ä°qÜí„Áz)ÛVÕ³›ËaéÏ©vj@^Â\§rY
+™ýF'-¼“šãZ|¬@“ìc$÷ì„Ž¥Jë꧶ë‡TÕÂ{ûkÐrfã7V;µeÛ O—,É2:TæÓÔ¤²£"—ò«\ÞJôX Oë)¡&ˆár–}¥\:R $H™É’ÔCb$ö
+i,P„ób£‚Ú]0K¹ô@ÿ$9™Þv]žÒ¸5‡‡pO`‡ž`îǾ—zY7NZ‚ÂUÈ®“’bE”T¾t¦&éÍà¡q6õÐânö²áòuœø2;rLŽl¼#àâË‘–Õ?Òg¤ÿï3þ+}FRøÒÍ™bl9P¹ãž¿If¹H¾¡KIæŒê°»\,õÝ3âIµ
+ÍDX4×\¼¡4‹ºZ¯âî \«RãMëDðíÒü”(òÀ;–z9m £Ü˜‹ç'b1¬‡Ïèk‡ã±;Ž“¤öòçÃK‘í]aXàæ4LJñUÃüÚ<>»B„¤<mˆòyžJ¼ÃgŽÄNfä9îB5¿ N *
+sÂóžê!^7ðXa”cú§v,³s\mæ  ºFrI¨¹$(ž+ÌU[ž¥DMÎE* suVÉîcp1ЂÙ1 fIä"Sãúó!ð)ಶÙMªµzçê‡FJÔI5zLÝÃ|]„&òÚÞœœª÷¤—4‰~¬Aˆä#‰G¶q°å6ŸXäÍ™'Z,¹Ò7›œëÙ>” î·Ò,¡,®}Zo»NìIñîy΃1h(è"ÿöšó&'‰Û¦ï@ZÕvý–b¨þ†S
+ñé°cl½Zq.‰Â<ß7ÈÚ7nhc¤2Ï}=Ìý&|½Ÿ3CÑ,n4fø ¾àªý…!ÒdŒôUžTBä-èð‰¥­#£ôoPË^¹²™h€&RøÂ
+='C’CùˆÆ ¢ú0¨ƒ¦€²–´Yc$Þ?®w}u‹éMóãå¶ÛÆ „áW!|%ÑbIî±wµ¡(·‘dä"èÅF^ÛÈ:«Eß¾ÿ?Ã=HV‚ÂE-—Ùápæ›°Vø2—xOFŠI’ûç¨DÅ–}®èÆAPKf(@¶Õ’ŸIŽ1æ˜ê Ò¸GE ͪ–UìÒA½II¼‡Ð8k‘&+ f±ŽMŠ*Ç é³8*
+¾õ#s·"/Þfõª®pcMUvH´ÇA¦“8°Qê•5™^“¼Ô=8î÷peäÝ`ȲRÞ×ëz^Íaœu™4–LZBí4ñå™qÅ©‘ÒÛV”·b{Â×~»‘ do'·Yç.»Í™œ«­j9ÆêâGŸîN¡ç´šÒsJ3Y†uPpycꃥK"ë»ÄP}[ÕíExTµ¹èô@IûzÇnµÖ!G˜á¹ ­’öµfÊ“ÇPYš|ÃÃý™¹Ž,b%‹ ¯ª”赯žš©–KÙXÌúVãJï9ŒäbŸ9yÏXÝ,‰EgáP”ráXÛJù "15þ€ÚM½J‚—Ÿä$M&¸ºª’¹ÕªáZ>àD$×ãÝ=˜ôÕ˜1ꓟǨ˲ÈÅm1F5›Ÿè‡Ãó N´©/Fl³¢ê„øW0…ËÖÓ…Ù«’O‹(uÆ¡ýÊPÑ–oò<6³{8¹š˜ïøünä1§'¹3+37ŸbœÏ"K1wôŠÉX-ƒ$+ûã“,J ÇãBl ­ŒÍù©úy(Û ¤ú<£4—Z\1„ V‚ PÙù…¥ó°[…b,Ų2²HºD÷‰e‰ãä$ÄE·zÅœcú m¿%2
+åzEƤB?Ü.z=/C$íÁ’,øžc£…FG‚¶-ÓèÝ=ŒßyÞ: å‹(‡[‘Xq†°'xÕ¥lbâ…A¼ÈùØÒÂ.9gž@8S„<|[`|\E79\Ô…Ç›Aé4ž)r…Ÿü±2ÏÔ —Ö'Ò™¼·Ü% ZÓ‘š»Yhú¤e
+M%E8µÚ)§Í¦Ÿ¦¿Î§f6ýÌ»úˆD4/úzß{«òÂAß
+#fwÁ¿Îy†¨ó¬X¼ üÕû7˜‡’A‰—5Â|f ¸X$Ô CùBHeOn¥æCøÍK§Up’ùð·æå´—¤
+4pø÷‹°
+ˆóÈÖ.cAZb•LF+¦éZ»¯BÐBÖÍäQEñŸG‘³¥l¤ÏI¡m`·WDIf>ε—•7–š U0?Ï”ä´ÙrÉž\PQ4kô®ª^'-dª² dû$X¼TÝöDwìæH)ÇÄ8ãœmG8B4K%“Ó¸m‘ŒðÓ¿c –y»Zrj;tÚeuT]e;„“¨ö XG!Æ\ŠC\Ö#¢€UÉö(«Â}ÿT²µh{hyïî!2CÓ¯±¾ïY?¨Æ=ÉAý¡¦ã‚Øã,ÆÒËùÑ ô]éU¿‡•C½­r;ž®RQÜ1…RWٲݽo¨Ì¡ë^Ï(sÉžmx€@[aXøD ¶u¸S‡KïÖ7©»ötk
+òuNÐ}š±<ä&ÅÙQ5®§Fª·W&£7 ÷|¥å!ºIŒ*¿}4uô‚ BÌÈÜ„ Ï‡ê ‹šHóBÛÙÑö؇U×ä)éEàÜÈT‘‚°.
+ ñôÈÙrð€<\Â2#%ëÕ0NœÉ–1_dìtJ]ŸVý 6äZäP7ë5£ŒÈÐéĸ/0¯òû7i:ÆàuÜøú 3`Ä߃n$ïî… [„
+Ýr!y畦À t„# 9|(¯Ä°=œjþƒxÍìlžtñÊX•³ºÖÐ\‚ÊæÃ`mÑýÈó¡õêà{Zª§õ§ÖmJB°ùQÝ˾E1=0ÿÍQ³bá»Àô˜å z×Û5“r´å{õ²‘E͘˜Ï´RŽŒ*5—ÂèaW·_S¯¿ºZoãÞ[¥F‡Ôg“º Œâœ%dp­Í‘ Åÿ?
+endstream endobj 664 0 obj <</Contents 665 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1464 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 665 0 obj <</Filter/FlateDecode/Length 3322>>stream
+H‰œWÛnÛHý•FdqØݤHæÍÉh/²ž‰%ï<¬ F¢NdI¡¨û÷{Nuó"YñA¬f_ªNUWª~·P±ükÖê§óX­꧅þO¬´Z<¨"ŠãÔȆB¥ÓhÇVe…Ž¬‰§jñ¨.þÚˆq‚KKeÒhj 5ÉÓ(×V-V*˜-æ×r`¶Pß”-’³Z7y¤§JÇ®šJý®¶êÝbŒ†²MBÙ“NÍÓ)D'Òc4±Ãø/§w1‡ŠP› U‰æ¯UÿtQ¨ƒ$ŠÕ}êi`‰bÎkŽÒðß‹¿ð'@N‰¦yÙ¾ˆ–@O(§ÏÐï'?Ë×&*þ¯GlvAQzAQœÜ‡#]¦
+¾½âÍÁu Åt-Ç*Á½Å„y¸†GœTUsIµ²äåP KÝÒ³)Ü_nt5Ÿ¹Mø´½Ëqa¡.¼Âá”ßuè ª<¨AÛnƒƒó¹ß²…:žB“ X¡H]ÓÚÐU}Pt‡8Jµ;÷ãÐË;¿éf·Ÿíâ5½ª–õªR_œ;Á´P&q_å²åÀßeS};rÀ+l#`ÍÔ°Cjè^ÎüÅš(Îw±×ȶmhƒ¶j žù$>¨wíÅå#–Õ­‹–”aI`YðˆÀË‚RÆÛÕ[çî€9¯tb°
+¢!Š² yÛì«G¸¸!äJÕŽÞêV­v:p}A ÎϸÒ'Bඒ‹~“úŠ¹ªÚÓ¨ÂA+HPÓ@¸frÊßl<¹µÜm9®dq‰¬Ò-˜KÈ G’N첤\a'&×w w”H„£c/Ñ!¦¼Á¤ÌºÿkFˆñpjêòˆ&ÖA:#x'!º˜HF÷žÎ‡8ÎL—HSˆMÎ)†>ËDº½räŠ@»€`ËPxdCE¨ÛÝÕ@Ë4Ü»ß^L-]ô¹}1³F•ÌEŸTÈu4#NjéKÿJqy/ï…ÒÂÀ̃U½D`®Î]ÆoFñ˜ô^J‰ í\‘jV—0I ¹+>¯n0Þ,
+\4ß]h"Ã$êBW‹Qòžç‘oûPœ#tìc®ègy1vü`Ì@ÑF’kâ­éRŒ&QÚG)€#®AipÜÀÃÿÕR{Ì—‰»Ô¾ÇZ*¥ÖJ÷®Ñw'Y!파û~f[6–¾ŸÉ#YõÕçí®y,7è®RSïwÛU µˆJúäp™¥moêô¥*Í _^å˜Ù¢±à¯üÙ L>Ë Š$
+%EâlLO&YdF6&¼ü<+‚ë£êØð–µίíèòtçF“¿ìÆTËS`PiºñCµE2o8¼ä1׋¦ä%%|oõMç˜åö€û‹º¡óˆµc±!4»Þ’³ß„
+¥xÑu—Ý•òçMÕ{ï‹Ž6„7
+C38Ogýešç À5=Í‚ô½nÝ Ê+÷ÖP¯|4Aæ¾Ûe{[ñA"0êVžï»HµüZo¹ê³ç#Ä ó²½ùQà 2ÍÒ¼ ».fVc¼FÜ©{iyÎ 74âø\–úÞ`rïß?kuÒFoýN‰¾~f«½¿ vâ¡Ðm`ü”«z'åK
+å‰dú»´¬û®Úa
+¦È[QNHþ`Ù«”æÇ%2—˪+d>ÿéÊîPS/é‚ŸƒWûþ:–þÚØ(©vnÁtçœÄR68|Sµ 6éôvÍWŠvúY¼ Û(<!ªFÀŸLß¡ Ò®·óþM%Ô‡(MLOøÚºw0Ç.Þ55_°rK}-?xÛ|˜¥ì–4_ºòMÂG,žök'u4íëhòrHti3.
+þ(ÐC©ÎØñ ÁÎdŠËÈ"oüŸüب‡×8èÍŒ}ÔÇêyë#w"vÁŸIΆ7§xoCÉšŒûj¸²2Èù¦!üR¯ÐÚi‹?oI;Š]Ÿ¸ƒóèi&drjÈzA Ù‚½*¿ÒÊÑ=Åí–ÜÅ…U/>â“@Xv*ãÑ@v-E(Eàƒr(l°ÛsšÇ©›¼‘êÿTc=ÁU oðR³‰7u!„ɧZÙ›¹Ô,hàšt›2³Ùà!†ß5VT+^p‡®¹åÈÙá(ÿƒeWÝÏÞRü+E¦ù"I+ÑKrº¤D7A°ÙÊÀ» `™sîBY«)µnkfqùÁ½y*'dÀŽÚÁJ‘ÉJá‘ 34$Ž[û:çP÷šC[û¾ª³¼ä&górBœ÷¬ìFWó™úQDZx-¶L¶Ÿî˜Eí¬y –.C^¤¬jåÚ÷"Ò1<±:³ÕhV®·îÊ{¥Êéæ*©ÍýËvåΉÜRTÔlîEö}©®ÆæãGçy7ŒÜÈMÑÕóg}>¤‘®ÙÜ2>£÷ߺY©‡ÝÐ(öruâ )G-ör%؈i¶%?–¾½‡áD9I|/"]ŽïíQ÷[ô—£~´èÕH¸[Ô¤ÿ1^5= Aô¯l<ÑD
+´µÞŒé‹‰1gŒMÐ6€ø÷y3; µ~Ü »;;oß©ÿXçqSƒ,ý5LœXzÉ0£w@îÐŽLâ6M.D (JLºà®6Q°½síµ´1t|­Î™øs%ÆyÜš|ç 4°q[ ­=lÃðƒRw}ÃVr[·ÖEÓ8³®Õ¾¤öMv¤Î[îª+ «š5bðø#$2—ˆ¥|§&ñ½þ©ì¤‘Ó\ŒóÜå½6Š'<‚¨1ºª\q úHѧªúk•¬482¯~ÃÁÿŽŒ^Vã,ºGŽGrÏŒ~ÆѬ@iØৰ!#ïÕåàúŒÃ+–Ò+ÖÖ7ç ÝW’ؤ#Üdž–AÉ2} Äô!¦ …WÉò²Á0³äRqLµ2ÆŸaV£w:³²Æ«Þs>¨<¿1îTÞÌÎq$·3`Jp–ð¶%‚ÄÈ£ÅTË^L 0·ÑDÂ4!ûMeCªeW¼cH5CVÆ<r§Z9Å\%¹jÅzQd¨šØ‚=°Ô ›¸Àð®«E»rÉmk& —'«$J«È„ž8h Š? ZàÙuuÍXþ¾ò€züª$ƒòñ¥Ûó…’¦M{¹Elüì#DüओŠ@;gÎCjÝ ‰^T¨#-/PÏgÆ”ßRÕÚRÕê÷TµH(IeãT•2oŸßí[L•l¢»Ã{ÅQŠ‹$òëþe¢N §-¯ç©¹{œROÜiGÙ±âJ5\cY|û`
+endstream endobj 666 0 obj <</Contents 667 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 667 0 obj <</Filter/FlateDecode/Length 4391>>stream
+H‰œWÛrÛÈý•©}¶L,æ‚›ßdŠq”²µ¶HeÖ© A2S©
+f(RâR–QÓ´¼Ç[D6‘4Ïò®©YÌéñš¸±J/×'ð*À;UãyÓv¿î˜M<ê)Z^÷ÆØü°Í bsj™Ü$nb9é’³fLº“É´5™‰ã”2þˆlV|ÔÙ<ª³n¼«Ž CWŸå™"Ÿ’…‡â³>;Fßy{ðé-ã8V¼ºåüÊÞÌ‘Ä›ÈLV2SãïûGc‚,$ÄÛ[~Ì’]XÛCÍ&%M¦>Sqz’Ǽ+¶òRöB- !„·T~’çÙÅiöy9ÛJNóm͟ɺÃ7 ÙìVÝ ¢¬×’1«‚¥b,ñLUž>ßÚ(¸mc-|gšà9 3l‘§ASôÉÅižÁ§O¹ÐpîÜþÁHùì;®MHÁt*j7Ê®þðp ¸Ê¾Áœ®
+ ‘gsNüÜ[n/x ™ŒÔMM9ë†jÿ …¯’ oŽÅb¤”H&]óNãïP¢yÞë¸R0….z”·8Ýrzê­ô‡Ç³êâyé³"+y–Í2Ô>ëªçµ-ïò¥)÷¥‰…Â@€ ÜŽ%0—¼ùX¹íþS«®†©Ù¾qkþ¼Cÿ]O­8W©kãjÅp>P†–ÕZ¤ulü'9%ù8^òÁåùØÎrÕ4hg+î7„ü£>ìOúúkûJ¨ÌK+.s£âJÚÞ3™;¬ÔŽµ«çÐQ¼ñˆ7ÕP`ÊÜ U} _ê™Ì} ïr˜iÄÙ‚æRsžÊè|¢qÈnùÒÀMM•Âî›| P¾öøg‡äÍîÀëfy„—ªØ ¬2l×ØõsØí™<¿ To$Uܲıö£ŠhÔàP±3É°ú$jopMˆïvü†w|…_3è‡pc1õu!³¶QŠÖõxçè°C³¶mÑšâ1Ã
+Œ… Shn‹xl£àÕ¹ ~ñ<"‘kËèÝOˆí/1 ©ùì• Wg'±ð¬Å&Þyw Éɯ|BÑÑ•¤o›–F–2’J ã‚“t9/ÓQDAD$Œ|0ÅôªÅ1Ž KÞ¾•0‰RQ wvaÜÌÅ­4j?í1äŽâ·­û펵¸gŸ|îðÛ9¸CNñM»
+
+HÙ"5*BÁ8êÎ;5H2ÛƒjÈiû׌ÐÉ™ƒr,ç<iN*¯kƒŸ@=ûCŒ~„3ˆ‰zôZÐÉ .÷_⫦·m#ˆþ•=R@$ˆ¢¨c⨅'69¤=("岑E—¢ãúßwÞ›Ù%õa ·,“ÜÝٙݙ7ïA­Êë?+ßj«]#î&:.@¼ãA`l”pì5…üî
+ç"W®:far`ŠK_F‰x[ò@ô0Âñ'¡Ì¦³Ó
+QéIˆ…BÌj   «éYæ…—ò{&ˆ•ŽYÜ€â›Å˜û] Ý š1†ùôñ~8—$îçtÎ<ÈŸ{jÚB`œœá
+ð£ÜÅ‚DJ7/¥¿ã8Í}‰Á‡3ú(ÎÕGI2ŸL oÔUÿ‚/<±Îbd1“
+@O2Ÿmåꉵ°WÝÑ{5ŒujÜ yþ¡ŒgCÊ@»•ã´žœê ß%ñ3µ²­{cL·£˜ öµ†ÚÎÏ#ëš.0亖= ªÚVJ©ù‰;5{‰úö­duU˹«uÅbÌ©ÜÐõ EÜVŠ‰iÄõ•¥ŒHü¥Ù“"ÂLDÔIrÞ9›sŠ>Û£öi±s-v>ÝPWùÑH7ç£#aˆ1HX^=ôEÎÓ>€@éUæñ…ÁÈD¸ä (å„)Å>xMcóækeÍÏP9WþÔo=ÅÈm6ç wUÖMÀé þ
+>c6\vÎN4@¹|æSf‘™ V
+©úë›Ú[âè‡ÛZî R¼r¢8Ö¦4çÝ
+·|áÜÚèˆ7HÜÆ A®ñÛxhMQXq¢ë½7öTž,Þ Tsƒg®|nUAûƒÝô^\rÙ=“»]’Ö]-)_ßË9|Aí-ìaÑÅ5f~Âuß¼®tôŽKlæc¥Ò طǵð|øu‚¥Œô
+DvD|f'ÌÙjrkÒ•vèG4d.@é4dg’êõhœÃîó2"$¬ OAÐðAoÎdº´P‘9ƒ:SÖ5eÓMñÑd^Ô[c÷Ë$TLÁzÇƽ2äÝã¥aõ£±nÙN(šé
+¡#F
+|zLmíOO Ôº$ñÒO]jBg¢y?Oþ§ÈýEé«åjGÿVO‹p½±eq^ä>‹¯Ix:wž%Ÿd/ž‡ÐXÈ'ñ|î ¸ËeP¡Fri°q„P{”Ò`^q>§ FY ¡„a–µ¤3¾ÕBMsŒ¤ã¤˜ù!?*+IrìDUÐ H.œU¿K ‹’¤¢í¶õºîLd‘ïá3-³ƒˆnQK ‰â´€ªcÉåÄÖ#†}œ,
+ø¿ãÎæF In¹1ËâpµW+²áN›Ür {Ìwsõ‰Û|FÏXn¹oWw¯Çy4>LÅ”Â#–Tœ2 ‹—0öÎo6òÞ
+endstream endobj 668 0 obj <</Contents 669 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 669 0 obj <</Filter/FlateDecode/Length 4456>>stream
+H‰œWÛrÛFý•yR&Œûeß,™åâ–­h%(û¥¶@”„ BRü÷{NÏ`
+T¹U…çûI(…JR/õýHeEàE¡Ÿªr¯å–¿ËŽ@ï𱃟j&^j‘'^DªÜ(gYÞ®dòT_UTÄ”g9N‰±=̽ UåªoÔ¿ÕA]”sk¨;Œ©{1ózj¢Vil }mã¯úÜòG¸Aè$*ø©_ô Ï œØóս㩺‹Àñù>à*q+ÿIƒÿ““0ôÒÜšý¥µ4ô@Ù}f³0€hýÉ\zÅß"eo”¼qß»³³ÂÖÄö¬âÿ;Jk9?*ÊæN7“KYñ¿D9™¢œ}å9§ GŸÜܹ¾fœá~,ŒÔ ²wçÈEÛ”DÐÇðûêŸEn×T|{l”°$œâoì ';DV¡6³H“T›I<­¥i¯GKWXªêêÈ#Õðˆ§FÝ-N>ɵnܵî¢pPLD6î"vÔЩ/Ïx·Z­jP·MØyÁë¶nî¾FС£ZÑu‡ïSâoäܸ©ó@\©Š7jàAÚ~¼áK¬©ºi_¬bßLzu'–¢÷³‹]z)êoÝØs„QH”žÅÖW‹À ¬?œK(üÙœ/_ Á§†„†ÎG¼ÔíÝ0C|’ÉÿJž\üi\x»eè†Ó "²E]cÃ8´éäUl3çÀ}ªë°M¥]fçô©ÂY3 "øJ‹‰¹6Q’¿Dbõ,oh¶ì}oÕ˜ò¿Ö'®¨º“oò§©~i!"z´ÞæOþÈ*„䃓ÄÚoÌÈ>ŠFÕQìqD­Ÿ‚‡6H¬Ý¯ªü ±Ðâ ´`Òg
+†*Vü“·Ö-õÔôo×ïù*‚H=µi|1ùNüÿàfúJ$ †çåO &ôü¶n6JdD¤ºJŒP
+Y?ìК´žÐ)q©×Å⫘%6 ÷FûqßfræLž•Ôæ8Tk:¿k Û°¶œŒ„oÃ;¢
+5<:JµSš¯"Í`dBɃ|eòŠÜ–¹ùÌÕAÀÔҘçÎq˧Ä5©¿I ûê ‰=Ö
+ÄG]a÷'XSbq½¸f;¿£q·Í×çæP7®Å_Åz´Ò•A«›W†«gñaO«×²lˆL^ªÄ¼h2/ó¼0<)_&Ëߣ`
+ðcªË[Þ‘úä’xYl}½û¬>•ô—.Þ©[æió•ŸeId\žW@BÞî×òíMãƒÀž&Б%ñÜx!Fé{PÛÌ{€µzaOiwÕz×¼ƒw6ÕuóÖã
+ÖNµ¶÷øóÞc¶k±™âY9OÎîe \v"T£yÐƲjªœ€^›Ä9èj¹nú{‘»wÇÖîŸÎ,ov:;‡û2‡ãz‘£çÙN'' ÝÁçÉV¬P^WC³“0ÁäŒèÃÍTnó{Ý“Ø!M3*Ów
+ÛŸ†äˤ^Š‹4ãѲŒ–¶ß11þÎLp#›üj)Æ£M±X©ûŒžØs Y
+>ÒXØI—ÓÄ+“¸´X-XÊ—Ù4$³4 ½,‰N"¾ç‰G=¢˜?°èzRS¬
+"+*æÃ×£r~æžÏãmû/ý.ðrdÇ4ØÌ¢üà ‡¡Õ!×Ì ãbc™)©‚¨aŒENïÔAWÊÒºQOœR¹À‹v;rµÐH#'[áœ&ø¸U”Â7¦A¡7# Èlÿy³[³­<;ú¡á云Ý[3`Dº¶ý!±SVâœ!ü]z,
+ ÙŽ& ‘wuó4´Ð¥Ûê±Û´ÓÂ0&3\9¥M¬i#‡1 #ÉߢÍ^‡•: ÿW•¬•Xú^’Ú2-ÔQƒ¹á’WímUßDõ-ô©ïê#SÎ+Î1wÞÙ=õRê_piÏha¡*tÓV«<6‰-f~ÓW5S¯’T-’exÄ=$ƒ¸úÔÍ?ä„e©’ÔKU’¥^žª(¼"ÅøŠlÕEyb„M(Š%Ä?Ù@K’¢z$Yî!i»Wð¢üý;nŸ‘å‚^D©ñB¢Z›,1ñæC«'2é
+Ö‰Æͼ|Õ»NG~0½Ël‘3vé˜yre]ºï6hGÎdÎ äð ËÓ¬+‚ŒÆ ÒÖF"e$4¹#ùó[ÐBDö 0ÀçæàŠËÍX*V¬¶Ü–jñ±ÀÆR`g\BØBtöñ(Ã\Î`ÚgAoË·;c.Í— Z-½áqï´uíßÅ!ÃJp0´­gsX<âz^(°»{z–­Ô/&Êò¡”Úuƒ¡’³<ÆfV]Yc³¬Ñp“(Ö1šHVH•’µÔ:Î8qq$dnìaBî%^D|Xº~›%Æ°p.»Ã¦¥yP=¾9éœÑã¼0ڳЋóñÄ•M‘)âæÒ˜ ¨vDø¾qÌÛv®É0èvÒ
+íåF§¯a)GÁT(×ot覆ÃçNOÿFy-Zy¼´Ó+—ƒÖtƒÅ"6#óiÓ[óiƒæ*3¹QÍŸ{ju—4ébpÚîMïѦì]ËmÏI`” ´\"ˆ¡jl}öƒí GŒ‡—´³@ÁÄC#QrÊê‚z¿‹Vàfp.Ÿ}Ì^ j{«@÷Š3/ÛX^ãDw/D•‘;vºˆò懆1^&n®.MV>ê
+í6g S $$I ®ŒÚ•=Ûë‚€yt9Îßð2'ÚìØb­åÅPÆ–4KþKyµì¶qCÑ_!²Rh rÞÝ%¶¤@œÄvÐEW‚4VUÈ–ªGÚü}Ï=—äpdÉN–g†äå}ßsl!@Ù3Läô©X,yÓþ©Ä®™+¼©€§™4¡rÜdÇ\(é¿üd _Q)Û¬ü•@ŸŒñ¤õ%YY
+ë5k»¾ã‘RV\‘W]XÈž~{g¾]éu^ljü,bjá5âßzÑ¿Âq†×‡–SëØhò]~Ïj‘™;B&}§6¬·SþÙD…u±›kߪõ#Ú£H!D ËXC3îëXóÇç^¥š`K^Ô¢´w´Hù¨“ 7ï–TZôç)jÈO«Ä²YTõ‘#›fd^Ñüì
+|Ç,Þwak|ªü´Íæ Q*oê6²>å³nªtÏáä;ѽRJ¾émMÎسÛ(¯Œ½º¡y™•:ì²}!â„b¼VþÇ(Qv`ª™â¡ ;m˜óÔï6ú­Çß‘ŽË#×x«;NÏÿij»},*õuLLzV.¿\„Ó$¬BÁ0nûPùU’BzC•¤PÅÖŒlð¥Z1CÃË{3§ ‰!.’Ão¢0ÐÍ“$,8šLܽ™—èš6—ê¸ÿ»žzÔ>÷½û/µó´tÏ–±’Þ>]„(.dT3MÅ ¼¦szæI‰niòés„þů”.Â}";ïòØ–®%î×òk@ ìg»–sû×ùÈóYfÞKv$yåÓLK3d.§üš&­—ü—±áŠeäŠÅó€ÉUE:09¹ïö0›u»Ýýl1Ý
+ƒÛÌïÆ“:k
+ãŠ6+POcWdÖá@zpbnÍ»»'zWylðµÂ;U–g
+ ò¤kœA0¦b?éa£Þ7.o²º8P:õÎ »ÊØ\Ûsf¹³Pïðž}–¹x{÷Q*‡/ׂÍŸ?‰ÑŸ°£·×—};׉aò¬ ³óI7W_I¸¾¡R¹vƒ‡«ËàÄ'ž²M<5õ`úG‡Y„šDBý•d`Ó ?$|n¢g¹%c
+‘ºÂk­Ž¾3<ÉÜFðÎÜ:>{­CZ"6™ØºäÞ±\<Î%äf¾ú›}'ž-Åú<æH…ó’Ú´¶‘œ<M<"P<ŸëPmr«CõýrÄE–¡Yâç7vé¶Bù
+…ß©
+endstream endobj 670 0 obj <</Contents 671 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 671 0 obj <</Filter/FlateDecode/Length 5714>>stream
+H‰¬WÛrÜÆý•)=UÂ3ƒ«üd“,‡‰‹¢¹+åÁN¥
+?âñˆ¿5
+Ùù±wÀEÓî…¯ŒGÙÆò‡âŠ^óº]]àé¡Œ=ÕðSO~*F:_ëfžÄ‰uùtž&š¢=Ý’™È»%wkq ³­DÞÝv~`¼²&_:¡¿´"Hyq±Û‰ÆroO7US=üÕžèíVÅý}×Þw =eý°yM)À·¼†?¸öUhvã·°XïZÚ“²CO&C¢Ç•]Å©@
+Ì”‚˜1"zcdJˆ
+Ñë¿’ód¥x8ø9åuüpž»Üåk‡ñø­8?“ÙGªŒ÷äëл§ˆw‡`£Kƈf!ò=^‰¢<fDÆÂÖ“H;)©Œ¾³Æš;_+ڸ욞M^ùé°í,AïèòÞ û÷ÊW%¬¶\Gªa{ß³q âx4o"˜W‰L]° oq‡-šCÁØ #~Pþ) #æñ]ß¾ãåï9WöúÊPÉg+E…+ÞçÐLiÉ\^¸
+*&þT£g]ñeW ‚‹\ Á¥+ª¦¥¾-”JDîáÂ&ALn(ïÔ×^ÓÕe_WSŽÛ%0ZêT-ªÀHì)hÛº¿ãÔÛLkûºB’)Ç?žE^Q‰†Ñº©;€ÁÁ÷ùˆøn¹Ý ‚²¬L±gaÀPìõ>Ý,ƒÐ®–!×òWïô}+6·tE¸«ÄEM}“y_}*IÛýû0ÔJyó$]P’ZqŽÏÅ åq>]¢á)Çmù°\âËY6— Š@KPÌé@1ÆQL² m)&(&eŠIÅTu_w ¥;²ì9tÄûN¼ÐÍ9¢[ÐHË\#6È›Ü,}©Eý;¾+][#çÈ·³ÖÐg@´ÝøJ'ËWÜzýÈ\/€Àï3Ü1ájÏ«IŽ³šºüê!ÁN‘áOÄPË,ÇkY~‰ÈøÑÖQ”eÛUÍÙ2ü¿Å¿Ñ4* "•ÉŒHnhá«zg˯@>RF·{r=¥ýw¿ÊÍ¡kTÍšÈ8Ñ9#Ì3„H˜;9HJ 1¥Ü§¿Û᪮x¿¡EèåMÅ¿å«ktÄc,_lìÞö¾´¸õSõÐ¥ã8âæˆkã£ÍO‚œS“=2Áà^4#ÿÎÜ=fUd6#A=W(ðuãîI„2‘‡ó*̦¦2‹©s°“m€¦ëÀ¾+nž§aøq§ŒÃ#ô†A¥xLñã¡ ßÃùqÒl@B÷9´ áCrjç´b§•Œ(ŽmÇ€Z2‹ Sæ-}?(Ú •±Reö
+¦Z»ƒŠ2V¬¤2¡ƒÛÁ|ÔêOXÔ$¯MÃhª‹âºd„žlm2Dël‘µ*ßR1†ŸdA1å„Ž 
+Iå0eë Z<–|ë?õü~:ÃéP‡,ÒV‡i-ã0^²
+fÕŸÀ™–yèZåªÞ Zœ'‚þ}½Ú}‘kŸØÎÖ8™w¤ENÊâøÏæ‡ÇæhÏF±ó-XŸÈ¡™‚´ ­"NG¸TX-`Ëâf"ÜYÑÂf®w˜,÷,ŒÈ3>9@e?؉ðù4eås³_ÈžIEÙMË–É™ŸðO]öXÒXxNa³©_¦³]¦ÆâcÆÍIŠµÃï8Ã6>{CÚ¨çË=œÂ ANç|êí†Ó=´šãÂ9£äKG«¨{&Æ^£ŽüÜX2ïA¡}}ƒ?mÓôOâ²cùK¢™i± Ýû·úi‚ÓH­Kãh^o>äñAÇ(´7"rWðèÄP
+Q+©!3â ’ê]b¹a£‘ `¹Ð‹ö†¡› E(¥ùû¾çÜ7‘¦]z…~||ÃÎxt¦3‰êÁª:ÊO)É®áŒg¢.¿mu ~³ï.jsäõgá‰Vëˆ-½ôÇ}têM»ã|9PKã^“uãTø+¬‚gcrIr_ÛÖ#XµiZwcRÃÞÛ[&•}j{¾8ªiûÞî£^®u…B¯ÐtõE˜ï]¸£¶äùH ræ¾Ðòf³§žî©(:R ð”|ß ôXõt §?¹¾O±£06OVˆI`…¤Uþç#gáÊ|1T¥r¢½œIî¬qB=÷ºT‡0žÕJ–*.¦yW‡Aľ×}xÓäEŸ]+¨³Ó³
+@èM¨a Gx“)Þ¬¥RU¢(„âèî›Ñ3>[ÊeÐuoe Ÿs§KóÂÁ©V´X®<£ÅOÄ>̶7¯_Œc-fÖˆêÆ)ªTÎjN_±ÅS©ßlæű]è=h˜¬â²Ìÿ/8ïß#rÿŠYUªê’K*e¹i†+]JèÒ$#E10©
+jPÊ'ÎE5@õÉð©÷¦Ì±mÏê öÀ¼?ùÉ"â€~?­
+r{–Çùz=Ð…#åàÃj
+rö…³8'¶¡¤<®Î}©{¼åÃÎá½+wñÄ_þßÀAœ`ëHÃ`a)˜|u«§‘/¯@÷'gGŸY-å«k¾ßEÿwû9ûLИá’MïpìÞê}
+*jÉÇh-4Å–iœ šïQžÄÕÊY[°+Øôvž…Œ¸¤|çÂw!6~F‹¥.Ž§@~ dG©èÚFã5‡Í<ÐheX¦2¨=E€’Ò€xÀrÁ¨Ö>ð#x_Ÿ=âW"2ýÕÏÈ17jºú"y¼ô\hq:ön¹çc­ïþÌÝ­ [.ãÄ{н@º¨ŠŽ—,Žì”>ºû!ÿ÷‹×˜Ñl5 ³ÅsYÊÖ†)Y{ínßà²å'cˆ¯=ÀãAû½ Ä.27¹³ÅâdÞÓÅ+a¼þ ë¨b_B›¨”©lèÏÔéÏÌÊÏ°¯—ÅjvªÁ^{ ¼ôjT«"‰³<Ð;hÂéœÄ*ÑÇß[¹š f†]+þuÍiŸaØ‚ØœP§,-ùû¿x¥‹A7 ÷»0AáKæ~_9§”£jõ –m؉)’–ìL•R
+endstream endobj 672 0 obj <</Contents 673 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1497 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 673 0 obj <</Filter/FlateDecode/Length 5453>>stream
+H‰œWÛrÛFý•®¼ì Ê„13¸î›%k½Ü’E¤œ;µ“ … ( %—þ~ûôàF‘‘™”Ëâ
+ý€¾*OÇÊx­¼×EÞoóÿÀà_ØäÈ?N{“í›ÖÂÐý
+RéM2!V ý¦^ä»bI²qãM 6ãú{ðŒÆAÝx“TÍ<ŽÕ®îN>çHÉ+ñO’2zÅ|²oÙÕ‰öu”8çÎyñµÇZâ‡X•{F±E‰ª`Â;¶.rCZä[‡¼˜±½·¼þ3ŒÇFç­+‰Â,z,öA«š`eë‚·^úƒ‘&ë#Øè‡ÖÒÄø°NhÇnÝ{Ù‘Dç¸^Zðb¹!0xKØ6I DÌ®5Ÿâ‘V5>5t-¿$/ŸÄ“™¼¸<7XDÇRÆô§ºBü¢¦©>`.
+Ù9“ÀƒÓ®g?IZ"´‰r›µ|ãvË·Ãï•«ëHÉ÷ÑdøOÏf‡vbóˆÊŽW§‹Ë8Þ[ç5vT ]þ dے㊬¤4eÞŽý¢­Ì~|¬yÄ,T*Iårþ7ÏøŽš^>c'™†WÇ#’ÞÀDĺs¬ÉŸ¶’nÇp×=î©«Ë(ˆR0ßÞ³yùfã¢ü %'á”LÈ·äpBÆíº'øs>£»óü1C
+öì/Íjb65ÞO}^rqùó966Ÿ ]NáÀÏ×$ŸÀ/wÓvÌ_?Ò‚³uŒ©| ªö-§P`˜žÈºg£ð¯Îž«™ÐÞ%Ç€‡án¸–÷S—±<1&ªyÈñ#1D#8pÒl$=8^£Ê–ØHP„™¾rÔm^nòo®”Y€¼k ˜K!…t…‚\àòÇSd·$«ŠBæoJ™[áÕï´¼‘ïˆÕÊvG}tõÄ?›]¹È%þ[èî º6[½ÿ¬hÐÕ¹¡ÿôNh`Çëd„Gàßåý~Çd.ùÜðn/®*<¯Ü[à9BËÊü˜ýTjÆ5šå«f÷˜@㺘q=LÞ`.VåÓ†òåÞ6hkuú¦¬V-aYá4Fåm§MƒÞHw'ƒ…B Yä[ÛsËeŽx1úŸŠR’§ÜØ_è\ÆAr#L#§LºÕ%‚¹ŽA]–Û]w±G¶¬ä
+ñÉ®åêeØr=ªw_‘‚LoÜ—vË‘EF€Cwƒñ·dójIø¦;–Çhü#SJaÛ5­ù‰K¢’—nrîî0`WŒÚµn´¤DÝË—Ó4³‚ÉzVàJhØKúå¹\#:
+ááaî_ò
+Ýõ1ǸpLµ sÉncÇtQ8¤~§'ãt|³ò½=’9¨¨†”/0#–™J-•
+Ρf²}Á³S]~zE!E“·ùÀêç ²•EŸ<Tq¬®ÄQŒhYw7ÎÞ¾¯Êw
+#‡¥.˜ sAäÍŸGÞ«Ðó¦…
+âªìeDýîØÕ÷ ê{/ó°`wšµ2dKôù„Óâ{ÝJ‘Ïiî†ú±hYÁ¾>´XTicÉf´÷àVúc¿7×|²ašÄeæ¸ÄñC~ŽMERôµ3˜˜[ùé”×AÂj<ƒ’ª‰Ü¡V$בSnñ“ö$Pžá=NeC•½CQuq!8
+}ÃJM4™9ö0 6QÛ³EOƒ ç0©Fþ1=tMü9$öC¸Ú†$¥ý¾HS¶×Ò>±tuj¾zÚÅê £l"HáïáXävï×+ëJ9ëb‡fÕÔáò8®Y‹ËY
+üTÃ’¬z[rÿsðI}±ØK/ÿgµßK¿ƒAá`kª¸”ÔŽÝ:( sŽ‘¸E•Ð³‘RS@l•[Ôª,³H]1Sóæ, ¯R¼£ºÕì¬çdã ž@•E˜íè§ó^ùB4:áISÆp¯X¸™4nî§}mMxA¯ëÃüÁ §8œ¹3wB\¢Ù³Ãh–M=”z²K…ŃpvÁ`CŒWVÊ”.G¼²•5'é¨;Û|Ã÷ ç² ÕŒÑ²B-ksˆIícÓE[5²Ú¿dç²ãwÑ{ü-[‘ë ¦ÐNO4µ”#.…3Mq¤©”i:ú‚,p€^g!™çÍåJZÝ?<|ýXÀi\Œ7‰íþFZpñfpÌœž'Ôó<Nd‹>Ðõ$0o:ºUÏŸ´ÖtbM]xZ3O¼’n@ÕDÆO÷­Ü`8M\¬Ìy„¤ˆq¶›ÅínñW Jfì“ò0Y<­&!úsS«¦‹[µ÷TËbôhêÔ°F¥œoÛOÀt¤±€¢Ù;¬24J‡Nù,XWÙ™¨&ÜÛSË–ÛºcæÜFL"ßÔY”TšÆ用æg™â²êaï—½B¤ºvg¢å®àeQÝI¹à¢]6‘*VèúÆuͺ¡§wª§ÛwdGPé:C±w„éè5*æ
+ö} š…Ƴæ‡={vh
+?5»i^OÍ/óy´í…J8¾T\t¬›|hp‘wáZÇú€~j|–ƒË ˆ,į5ü¾aìxÉHŠ´
+ÚÎd"¿ž¤ÅHÍÖô0$Ž FÏ*cöƒÒ˜”nO©’t)DQH# ¼´ý©oÌmí™,})S&N~y(+’’#¼LÇ
+KK@¸ßÖ¼"Þ{ÁÌ°ç_×Á—vÍø†ðãÓ²¥®Y4«GÝ ßÝüâ§÷ЩùÞ`(ßç¢CqZËg˜ÄÚ†ü;ýdó—O ÷ß ±ñwY/ˆaŠ(÷CD:”!x«Å”šÿ#ÍÈ2¦ìÅÀës2ó[iØ]Ë ]û'TUc)©R`1»z÷ŽëòÚ%ï}„}éf£ÁæöÄœDÌE‰÷nÑìmWEþ•xÙŸ ÆWYnUE¯åªþg «9
+ž™Í²óEþ0Æ”gøcŒaÉG$ÅL6V9R´WºÓó5xòáo#]E¶ÑDÊp,¥kÁ‘³úøùT?ÏâqŠ)¢Oॼüý·#(D£„3;ÁÌ&Oø ÿ‚”ø.ãrRöø¾" £ØK ›`. /î¿ô—;Þ”Ö…B-ÂÀpeOÀÄX’I0¬Ÿýt¬6h˜‚˜QXH ]’¡xÎ)8n|Ú-æ–øQ×4qèH‡š’fq29:’kqª†–çq&¬X½X´ÝRF`*»"êq2¹11¬ÓëøÐ¥±ìÄ9ro’!pà9^p-EøHäÏäþé¸%zh:å•ŽÆJta©<µ ×ÁÔ,Íl'+vÍWI]µ˜IÀº÷¹×g3bëWAÙXëB'p @-^
+18éâÌ”NŽf¢å
+*Å,8Ó2­‡u<ª¡"8s~1Õ…“‰I(:ró§ü2Ä1?FI9‰«\žOr€ïN®”…S^MºZFàgÔîLµÆ1zÕoíe4›¿b;ôq[J×@íFe`'_Ȭp#—3ï5X¾Òg¥–OTM08ìùÊ—y¾òÇ<Ÿ¬v~†E?œhàIdä* ® ƒaà»#üyÀýÍ‚¯çN@>Í2ØO¤KÐè Û€_ri<îý”W¸Cdá4tox­šü¸µó›è
+endstream endobj 674 0 obj <</Contents 675 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 675 0 obj <</Filter/FlateDecode/Length 6045>>stream
+H‰¼WÛnÛHý•Fžš‹Ã¾ð†}Š/Èx1q2–&ó0 Å8\È’–¢3Èßoêf“’e;³ ,‚X¼uWuÕ9U§Î–"åýøéí"w{ñÓRý3J,¿ˆ*IÓLó•Èò$OS#ŠJ%F§¹XÞ )¢å¿x…r+RZWÐY’›JÄe–”ʈåJÈËåâŠ\.Å¿…©lB›%Y±´\—‰Ê…JisÑ·âw±g˹7Ø[[ìfþ<tÑmé}Ô©óñgw¹ ‘Ò2Vá׈îA)i“TÜÊHåRG±’)ž+\eѧå?àð¯är¦u’—Áeó¬·pô0€¼úÈ;û€¸ý³ùþJ'Õ‹1Å CÙ C©½f¶tEÞØ`«úïL¹]ŽMÙt~(ÂÍd¦Hô‹9žR¬¥xŽÂ)ÃæmTÈd:»åìñ ¿mkÙG™Üã¢ÛÎó©2“Lá.ÕÄ@ï€ê#ïxÃÇîmD¤Œ¤tZüo©¸‰rø¦äº­ñtß
+…_=9è­ëɺbë|U:ãUžåÎ8œ/Ò¤Èa>×D¦Ñ|,¢¸´d‚¢ð•U¯×¢#Ó©ÜÐݪkê¡=>j;ÌäÀD?¸²Të+²³Ø>ôQ)›V\]„Å3ïµ½wܵ‰Jóq±¸º„አßùëHËó(ΈäÖÕ…Ø~Á…¢¸’î³=EpK^gòî{¤·™/¦“ÔôZÑ¡*¹~æëÏ玥G-P•IVŽ>.i¿BöwøÛâ
+þ<©ªBž°‰Iªòà mGG-eÛ ÷+Úë3rµ˜NÛ;÷NÅ<66)PZU¢²Âm:pjim+Îép[}ßîióÝvƒ«Ž>ÙÜqo®#+ÏcЃ2e%WÌvÀe÷¸%é»íª=¼ÏÅã%t
+-Ý:/ÞÇ8ƒ[÷â>ÒF¢æb^µÈhI¹¤—Ÿ›5oˆƵ-¡`èì6ú{DÁšB4Ñ¢â©Ä#b
+þ å¿Ã"7+'Ý|/XqÍɸ¯õˆ Ë#úþš‘NŽï};ÖN âc<:Øæ… ½%¼À†#μ7ÐþD£Ax0öf¶¾fï*u?x4t^ATPPKW •/ŒybK®Ç)_
+kӤĠ’“DOËQß\þ‚´¼?ßõí.qwCΡ°¶E–è’—[ <nÎáaöT1²” "åaž2×Ó a¹îHK9•PP|Å¢+nKÐt¹k†ødT½õDÈÀ .íª ÚäÀz½m&KSÓœ¼êž[ö ˜¬ßéÑI[ŸÄÊ/åÙ·õê{¤Ójµ .8EB¡3zta.ɽÞç}¹òB¸‹¯¾ðþ«¶éО©£§Wä ÅdÃõ¾ [ÊãNœÅF'&=l};:Ñh½fßdáu(ãÎ7ÇÁØõÃœ<>Y¢þ+*ŠŸãƒwï¸ò'×,¬£!k/«9CÛß<Ë<ËÇÃ0ÍkvðŽ4£Rˆ£áN•†^P÷äkëSR‘Ó…«ŽüÖSó$µ¾„ÍSêVúW ïwëvhÇì*["§Ê3¿—RÛ2 ìÔ¼ŠJFRÑ,R’NSƒˆ(ãÏÌ„6ôš‚çVBTÚÄù‚‹Ñ[>ðx±:Õ¢Í458Vèã™°vcšØx½¡7¾xäµÏLéÄ›ÔÛyKY|Ó4í~/Þm‘Ú«'UC¨ÂU«HTQxÔ“<j›¶ûܬŽUDÁ87À¹šÚB6!Ý
+d
+þІA^Ð$IhZÑpu€ß2P&0†§¯#üÑ‹‡ Ëb–a`Ùðטž>ãjD‹u[{ ’¦ ißG˜Õí$ÄJ9-Ë}©áB2&ƪPïÏâ<©ª£’A–ðÓÑÿ&PuPªzñ&+ùpHOkz½vdÃ(µGˉP-¹C"¾ÈŠPÄÏm$.nXL…¥¢ªç¦ì “ø/øj¿ÚØ*[!ílù©aÌæÓay
+<€É§Æo5þZ†Ö'å”Óe¦x«‰šÚÈ]GÊ:ƒ8§‚›•þ~• .+µÁM\ÉþÛÛ[Že•Š·Ô6ÈoùóÖç}åéHªt$HL‡š¦¦Bjä/²SùìÀüOÓã¡(Yi#¥å¤‘T7аו÷$Qn°,'Ïdÿˆ9néVå6Ž*<g £Á1 ÿ–„©¬¢ûNA_Õê<pà t¨p¹Ç
+å,8dåà¸\yº+[ÏRÌCÐRÔòÍ{Œû×4rÁav.7Óm—ŒÃ5®uEŠtÁç@ù#i9g&ðí;åPÍ7Ðc¸ZW+ºZ„¯uù9b÷ ¸Çn£3¹ÁŠ>KYÍíÖkHUàþI*<‘c¤¹àYi«í’ÅŠž˜‹©Û焬bjD—ëÃà¹kœ½Y‚¢•üý`•§!htů÷1¹ˆ§›À?7÷°äO/#~DM½ë"BÿŽºEJo¤Ÿ¾\ Hè,¾Ý:äk"Öj†ïß(~
+ZÓ4&ˆò{‡<`u°!‘‹ú÷ N}?ôêtÐ!˜–Zñ+ºO³Ï²¦62óŽM3m´{|I‹5-ök,D 8yñ1¹û¼¿Å¬n7X¯_˜xÃ6˜µböþÃõ… Ńy Ë–œÒz:- jÞQeR‘©Vdª†®XÞ¾4SÞ11QUÕ›ÌMÖ5"šõ,GÞmPïÓº‰ê}4tµ3$¥·6eض /Ÿ ­AJNlÝn¤Pë¶;ë•£v¿ßêI3C,ßÙoèSÓ+k®X‡RžOæCI>]à®1ˆž#ø‹Õñ¬5…|IÏ Ž-2.'ÙóÝøŽþ@ÄÔhϱå°úÝ稅WÛ¡ŠÏ+‹¯äj Øê²Z;¸^Ðߥ+¯÷qt©ø|ª¯w‰Œô”5^žÎËk)ñ!sÀº °ÞýM"UkW\>±ÁFþô†‚-MŽ˜Ãµò¯3ËÀUË s*æí gâÉJÏ
+ €Š˜)¶áTør¨h›þ§p
+ŸÈ+à:
+ÊŽ
+ƒÜ§ìÜk<Ä/hxm7ôöHëêm7ñ§Žž^©E1Ón%Hf³-6 ÆYçô /t"¹5º[a±{{RD›Šçÿ¥[bM†žK†—4wà2ÆQ*û'1ÏŸkœa£2¦€<ÃAà¥åjÃßküy@>âÉ}¯àoÞG[üåïÝ®¿·v09zg¬ÃÜÕ‰Pò&³~èôDn¡u–oòµïünk¼Ú dq©ƒ¥êˆÄ}Þjá{™uDH.ŠéymTî_×[ O'zKFg|m>MQ²ô(iño³3^õð°d6U>Ù‹Êg¹Êã¼” I–Ä‹Ò*Ÿ›÷rõrv}±»­/.GRR†Cí³,«8Ki,óå¢Pcoà=HI*R ™ÚÛŠó.&n&2eóe/剦ì-£)uô,Œðž«ïYæqU–$U¼Ê®‰W³ïÆtB–Siu"ÞË]w%ù©
+.~uÁiÝd˜¤ùizZ€k,Sˆ!9`Ah¬c¨ ' `Žñ Ö¹†(
+endstream endobj 676 0 obj <</Contents 677 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1464 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 677 0 obj <</Filter/FlateDecode/Length 4167>>stream
+H‰¬W]sÛÖý+wò̘.¾‘>9’›Q›ÊŠD§I¦ƒ0…M² %Ûÿ¾{Î^\€“x:¡Ëûµ{wÏžÝý~ibþÖæÛb³>˜o—ö_±±fùÁÔQç 7Ô&/¢"ŽSSÖ6J“¸0Ë&0áòß<aõD,'°Ôš$Š´6‹**›šåÊo–7<ðfiþcÒ:‹äò²)™OªÈÆÆr¹:óO³5ß/çÚàî$ÃÝ‹Q̧SõJ§c«Ž¿¨Ü僈mä&³ø›šŸu"
+mE±ù5m$áÂ1æ-FyøÛòoPø'Q9O’¨¨¼Êéj EO ÈÓgÚ g½?Ÿßo“¨þS‹¤åAùAqök8“•Ô¢MæeÕÿ›(½å\”xö(ÁÍô¤²þ/ç“—Ë^žqrrúCXwwð³<?£SóŒ¿9„ypÀ ßmMhÓ@¬›îͽ,sߦk0{è Q’Lþwz&3¤£ÆŸhļP5aO¯ia£:5½Ù»¡ yÐûþnæ“ÈN‚^t9>šãcg2wC·çÖºqt YàΙýÀAÛ­ž†î;Ce¡d:3f:*©›EÅ©Œ¯©LX¦matf÷!´q`ÂE܇eðón¿’‘ÙíEiÑû_AÑR†Ý$3›dfS˜ZZƦQ–#&V"óa÷4ˆ³ÚÎÜßÊWÐà(ößñÚ¥HkÔcU°Æ Ã¢ìåF,c¥Ùä»o0î¶Üõ‡M/Ÿm7\²‡õö°´GK°”£nææ9ÈáGˆØlL/
+ÄÁênžä»‚õ;QÓØtÁ
+Ž° àòA g,<„‰8k¡æË,` knÛãÓÁFÜÛ`ļð\ ·ƒÅ„UBðW‚º¦`$»½òÙ-_B+’{ŽqElŽØ6Ð{ÔÞ¼5Ù†Gë}·áµm3ÓþQÏŽz7ª3öøXO§XÏ”+Êt¼vŠÎÿ>á#Ùr§ Gò“Œ:só´
+­ú\à‰ÿ¢Çꯃ¢éhãÏò³?G–”#k NÝ9$eô‹ÜaÞwoàªËX¶¥'ªä–Áé"ˆ†>[ð4Á,I]¸OÀ¼44ó>pŠMß1Æ/fǸò¶°
+þJ= ù;Ô0—ds)¼Ò|Bk5‘UåˆLž
+n·¼®åõG·;½<ÉÎÏ6K'?ƒÞ¯5°ÀÈìt„RÉÕO¬¬5¾ÐÝ2ûb›› ±á™®× †ï\Xy¦ðDÁli£L¸ŒZh@[!~©j­dLÖÔÝÆŸ%+­K¼4¯ŽH8å¥ +nê‹Ôs^Š¤ê>Cf‹écw¦Á-^¡|˜ÞWûâ^Š»L(Ì“`Í×Ì‹6´.’ŸlÎÒÕ׉¦qÎÇp/öCÒcr]ê]W(3bö”ŸÇ.ióDOže\8iôñ¥ª¾ôÏpU|ót`•{©^÷æiÞ2ª’ò¤è"T‘ùæ&t;ʃÇ4Na,Áâ™õ¹dk_:‹Ï‡Ó‚Wl÷ íôj†® ^ä.[Jëæíjÿ†µ=²52nkÛÖ›‚Ln¤b cÛB«ÿ=RßAmFÅw¼ ^»"ÿFçQg=»Z– I¿¹ô™sסæ÷è?Ï›¾;hžÉ¿Ö΂ä6´Ú;h™@~¬£ò2<Ë)d­õuf•8›¥ñ¼ÒD}v€Ã'|:}òã4ÖÅž¨
+µwvIíŒï
+LqZTA S®|ï$+ /6óŠÛL9Cèîÿ ®›Œ8C§änF!»!ôÅÜ¥:âç$ð{ÄA¹G°áÜnÙ³º|ß( à8-HêG—­ÿ(QÿYþDÛQÆŽykGÔ²ï û"v+èkWÔL:™w(3óàþõ-Ê@¹G{™Cç%÷SÙ2kk´nö¾«¢r»pþ ½!Ì¡zS>}=s˜ÑÕyÅ)HÓ“f% „à­ƒ¤ÎõD·b‘.¨Â~Œ3¬· $IÔæÈæîÍÓtò›Ët­8ËØr(kOTîÄLïÔë](wcô]±T±ÂiKWehLæ'1™jªÔª‰.ŒÍ™×xÌoüE [*Šš~욪@ßuäo—Œ&xÞùË‚mpÅŒˆºÐ‰î”ò„'î®"7"zf´šyZÍ5è¤eÈæ!t£,¨ÜÜoÁöF‰wp÷IÚž ïåYʳiT×Éï·iÐM¬xÑ‹Â1¢¼™Á³·9›ÄÆ\O v©Ws±òúöá¯o0«ÒÄrNaÛ ç•o7æý,Î3å½lÎþ°˜0'³äŠ)§[™-[8ù1ÐI™‘7¤Ç/¡0–*ë3K*L?ÕL¦(4Ú~VËl˜j™ÛDé¦mwêÇNuߎ)nk]u/q¯¾³Yd“(CNOÌØÖ&‚1e"³9”ˆR¥Öü‚\mãߢ‰Ø¹vر/±S}vì¬ä›gÙu@•SÁwR‚%Šzʨià—;R醉fS‡í-ó*㵦…ÕV^ ÒÇi:õUÀ.>‘c+>ò5ÒÖ-CœCÖµlâ
+Š/™A=8
+ ¢ ï²|b Á¤³¾É«]æÑ&/›2ú*Á•ÆED#°V¿×THIUV¾ðîÚ~ÕÍìI@öçÕ½O)Êÿç—éìW(ÅYFIàÅðä9/··m
+ÿ>ÊA­ZÖÕys·N` ɦëÍS7(”•±cW²[ôßwÎ’¢\'-ú²+ëBÉ3g¾ ¸¼rH‡ùç¤)¶Ôk•¢ kdU±Y«í×L·°Âu£ÊÕªÚ’ä¶çA¥>¨‡J¥4¬±ñë¶>¯ïrS—c-‘XR]G+BÕͱI÷‡a=E­–€ëqzZQÒ°ùäA=¾­YzÿßÞñÛ¨‘ÅEQ8)Œ+FÛkûšs-ì¬ïÔ*ö
+&÷ÇÇä·ÜÈp»
+¸ìk#¾e“ÈôÜ9Žî™¢*}A¶B.ƒ¤/»ÏðUHšƒ¦Çzj‰Av˜A,‘‚ á§Äx‡ƒm±Y:Èš3ûª¤žµ}IpÞ;lgÝãî^-ÏMjGšÂTŠ¾ÒkÒ‰DHë¨O'~ý
+endstream endobj 678 0 obj <</Contents 679 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 679 0 obj <</Filter/FlateDecode/Length 4383>>stream
+H‰´WisÛ8ý+(S!C
+ˆöa°&1Ô~¦¯IöÙÆ"ßE±Õ÷¤-lËŠŒœ÷&EnT–PcA×"hØw ¸Òƒ«4?Ü ÁÕäêî#«ùÓ„n`Oª_÷: CAÔòaH“Òrn…hâQ^ЭcDïª"ò%‚#{y=å#!&© z,%ŠÏwrbPK¦nù„ÖøIµ¾ÈˆúÕHo űÙ ™½æ3M*•
+[¬#•VQy,‘ø1$/Æs…tÛºOZcl«„hDñ­Ð“ 7Qœë9jê#îöøÙP:UüÅŇ¾eº[¬ð¥mvx9ç‡%~óévÃëÖt)u³9]¶î¯xIÛÍFêxoBuÛ½¬`Ám·Ý>@¯\
+½‹7#«?£ÌñN6/W;Õ|Ztj·RÝl]ÒZ7›Ý¼Y,ã ¥L¨¥¼#¦‚ê{dÉ؆Ïzl5aÛPZé4¤r%¸ï$mðÝsàmÔC3_ìi›UÛò£›ñí9 ²Ã“H`=&ë)# Prï¯ ³¡ÐŒ7K¿å0nÐ Áƒ‚h€ûƒ5ü~0ðSJ9Þü(RQÜ+È!çìE‘’ ÍVïúwļT³®Ï:¶W
+ ùön{–Cn‚p‹Â‡DŠUX!ó
+’Ö”åA¶Ä¨Rs
+Q¸1¡dæT¡¹ð³’ýåÊ_®íýï žp¼ˆ¼ágZNc6Äݳ8Þ <ÛmÊÄwz»møÊ¥ƒ3ò/ƒ"{);Õv%Y^
+/Ðx#„GJ²æZ=EˆiŠª†N4eUâG°BjNï¹Eqä |æW^ƒ5b±¤ÇßñŠÉñZ¾^³Ô{–ÊUHsæþ~ÅuAÊBÇž6N7>ÑI۬כÕz3ovúÂ{„TœËL ÀåPò¡†e¡dÔ„²P-.1‚î·‡ûƵ=Kµîê¹êd~rœ±—8M_LC/Zb’t%w * “Ô€rCÝ-ò 1ñ’²j=®89264“RYy˜ {yÝ78g=¤Y8ÔF«/˜ÊÏ‘IžÕdý‚!##´5º8uQ'ßpØ,¿^€ùûH
+–Aq‰r¿L&$,¤²ÆQTW0/9ý'ü@!½ä\ߨ>…N÷Ý1Ô-±hç/)2ÈýEôKµô¼°,@Aã^¯Wiõì§ð‡žcBÏ©¸ºdI^I̳¼ŸÙ¤÷¡¼Â8I:pé¾rÇùŽ:0n„†IX¨&s5¸9D–‘¿úæUé3RGU¼á
+ô5² 7zæÅŽÈä2eÜ>]R¸P¾/­•‚WáŒÙ<Êü#<7²SШƒÙ}/iï|i°mAÿñi»Á•ìiggÂ(Yø½ßž'ÓMó€Ã?Õ>Y
+µ~ áT¿a‹¯õÅPëžøå®_ï›wî™|ªÁ¦ÐàŒŸì
+߸Úí·\2cµj¹â+xÁĦ˜älX’«ˆD ~<UR°˜gÒ¯F½ªç‚õ\ð¯Ác¡á£>ˆ½=Š½/ƒ>ö¡>H?ªÈ§ÇgPãâÈó[î½³ç#ã`Kmde9Œˆr\R!ídf…¦2]ƒ—¢.däªOj”éOu~%ë¾Ñ*)åD¤Gîûà!¤ „´ÒÓÕÁyfþØó‡Z¿Ðîg óGJFñ £C!Ç `/d.¯ÙOðͣ¿û+Åœœa½’ó*3¹Äïv+¹x)½9ã؃=¼²=8ãò
+öR7´ûB—ß#(‡F3“+W¾ñ¼ XÝp¼=rGç:KÈSY†ÁËÈÔ
+ŽWË$Šf7_¥ÂµïYd©ig¨‰å⎓}’%ä&säSÒƺ.Ü lP¶+.0·tMˆsnÙ÷R¹©«ÂÏ “âì;z~7s9º’£gsÏ@ìB.™óŽÑÃëåùéœrj™(OeØQßimÛŽ1£Ý…µ5 öÆAOFÂ.Žÿº]Á-àæ÷PÞ:’nÄxøÚÙO6!—Cì„âB‘ 4©‹b„ <ŒTçþpÏRò‰y7OŒˆ-ƒftB o5û©²Q' cöVs4.0‘ÛN•é'?÷¿A=áÃüWcæÚK…ƒŸ©{Ä=¯ë‡nkwÓôò†A•’ 1Àwòž?Ík[ÿˆÈ­xÖ”h’òF†w^Њyô7ï6Uÿ|œñ$N‹ý¼fB=Š¢¯Y1¼Hy0¡ø
+jeÕÁHêúDý¿fiŠ—®ˆ¡£ RÇÎÌñÌMèqÛ<A=2?·<9ì‘l¡ŠØÑöVØáÚ @iHÌ·§÷›¥KØí#ã%^³Žßâ=Só!búï€õÓ€õÑ/–(à®Ýv;ìø±o¹+Z4>‹O>õSg(•V[ E
+úAT°ÑæKSÃY+(gš™hŽË(Óu¢
+Zê”WR"(‘ëå{Þχuú£-£qˆuÆÑj"ƒ¼@4¾Œ²R%ÕÑt’6ZÔþËÑiƒX/2‹Qš
+§Ü³²X°L%E1Ö¥ÌZ¡'ˆ$ÊïVhôÉ]ÐÕ[ÉÕg)2ëUùÊ –>ò˜ßaœÞ6(îžn¹c¨ ¸6Þ36ª±y!#/£ÌKŒšf ØŠ–dCëajëa>ý`:g­PS"}y'ª…#Ï‚9kœ¤33Scå`Rº½£KÚ½4Þ=TÙ‰¥4ø‹¯ùÌ/+%y©FU99
+>™ªh}f¿U%t,®Ýå§ý¡h¨+TžÖñâ°ßuli¨}È Ϻ å`\lÑô|î“yÅç,å“d&j§}†¦¨B nj•Lm‡©„`ꨕ¶FïLvÆÂi~V`gŒÙ:Øi(°Ó׶ìRz/€M-//|£{óŒâY ÂÎ ¡¤âwˆ¨Ãܥ諒Œº…ùÏПJèôÌ`-$«€d}û•a©Ýö£}k É: ßôþ†)ˆ†åÑëÒŽÃñݨ>«OM²~!ËÚo9ªãõt- Tܯ ßRØ[„Å›aIÜQ–P¯ºtj—ΤSY%Ô¦¹TÑHÓ]¨€.PÐŽd¤%‡êÔjNÐi‚HávpÖØiJ°âì$t4Et¤q0ÊdF›yººe]óÍ
+Ñ3Ï3#‡Ì0"6(× y3 ’51´ô7'šûHÃîÓ¯ußV40·Ë0Ó¾wœ#xBsEÎL´oXÈ ãv[¡;øíh‹þå_»•‰7íu·6íÀÊ;_ªpzZáç’œ,o¢ÿ
+endstream endobj 680 0 obj <</Contents 681 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 681 0 obj <</Filter/FlateDecode/Length 4297>>stream
+H‰äWÛrÛÈý•yRƒ;ò¶–—R»²W¤“o*“Œ E($%¯ÿ~ûœž@ŠÎʹ<¥\ÁLwÏéîÓÝ/—&á¿Ý­ùîÍ"1·{óÝÒþ=1Ö,oL'I‘rCcŠ2.“$3Ucã,MJ³¼3 —¿ð„Õ‰œÀ§•I‹¸ÌÕE\ÛÌ,×&x½\\òÀë¥ù§Éš<áU-Zr9žÖ±-MD¸Ùuæ¯fk^.çÖ@všCväÕ|>6QE:ÓDmü z— QÚ4(Lnñ›™¿èBÚ ósÚ2HÃÈ Ö-žŠðoË?ÃàŸÄä"Mã²MÎþ¥µ0ô@ž>±.ˆ *¿˜Ë·iÜü."YuFQqFQ’ÿÎt¥X“ºšO•J9U•góKIÜLWªšçx¹˜¼\=ñò<''goÂ:x÷~–ëçt`fñÛÁ‘»°öx臭 mº¹wb®å3÷mº«ûÎ0JÒÉÿÎÎô4if¡f6eQª™À³J⪄¥e*·ö–^½]Š¢,xýG#¿y.I•e\nÃ&0«v–AgaÔŸC›ƒ¹«à*L³äDÜ…iˆ™AM8†3¦@Ç•Gù/»³`ƒ¼ukÓSEŠY„Q\óŽ¼ÐxŸ÷I³8Ãu$yÅìÌMew%H Pê=P¨ÉEg˜waT Ò‘`~ßîäóÀåûݤaRAÏZ×¥õ:†U·~ÃT„iaîÚÀgï0~^uâ´¨ 0
+.&è³fº˜B¯¢æÐì>«Vp~ÄC/Ü#n§˜[´À«Ö¢4¸9€š¸.nÏ‚û+R‰¼ Îú¸Åqì„TüòÀÀ到t+è¹âaÓK³ 9)cQ§U!Y£d­ÿßKÖIªž«X^‚ás§kðÙÛ“º$
+"ü™xƒ„ÌÐÍ£ 'g ¹Ùt_Å3µ H «9¨zF5OÆŒzõMuÜgæjÌVpÏÓúô·ÅãÍ€¿»»? øÙž-Àåè¾ÌÅ…MçA`n¨¼à \s±xšO ö€#Ñi ²…S^äµWî 5;bTçåbað t
+'J}¹€© ƒÃsNÕ  8gÁ–RF×
+§–xN
+Ís;™“š%³X5¯„,/
+¡¢7?–üSr‘¸Bïòì¾Û|?’ýH3õ# ûêÚ:Ö·“N䜧ÎE\šÇe6^ï?ˆ¾ÐÊØÚ#ÔZÌ8G„†ª9j¨p©~͆.ÇGy\§Ç.ÏŒ!V²¯„çó»-ȧþ%ܱxßÞhij™¦§Es”¥¢·WòðÍV16[Íq¯Uø*§;Žÿ3å°R8ÌJì—Gm”'(·µFuå3H,;êÔ>‡’µDˆTÒ‡ ØbŒXé z¸Y ·báZ6òýF6ß„)›2¤ŽT¿-vðQâi ÄÆ5÷™Â_h½•UJ¥´;—BýÅ«üÞ"1ñDÕû€7h®0wCÚ*¦‰3£¿ 3Ü£Àéw¾Ï mÙØŒR·ò?Âqʼ÷F¬´²*š»¹Ã!Stæ³”LÆ‹îOÈS'¯‰>›¢ŒKl+“*®R¤Ã¸£Ž¥£s„Q¤ÒÑ°[÷[4 ²¼5ø{ƒÎB¤Òls‰úfý-’MÊa¿½ÅÂSqÛ­Ðnì͹¸Í­MÜ”EIËð8VÔeœ×Þ0òÇ ‚T"¡ôEVÚg Wú?ý…«öl ÄRpä§?ôíAMNÄáënÃ+Þ+²5¡ë*KÐk-Ÿu“ºÇp)
+‡Ig„ׇ°t§Ì ¿DîÝ´æý’ tý=¢ëÊ[ÆÕb\ÕðýÈ.Uù‚n>2ÿŠ•ïBò˜‰Z÷‰æ¦†1­¦výÚ ¥ò˜Ä}ï®Z.R¡3•7 O!$¤•âƒ/{©GWe*ÜMa”¯Î^0|5ƒ1'Œã£=\ç2×V¤K€±Æë)çYÁ§c¸ç%>`‡q–߆¿j? 踿âV5Ö•Áˆt>—%\Êt¿Ãû¡ç'ž&DΫÎb„ È1ï_ÇFý¨ï“Æ~.=ÓÏAÃptK’*fSèº
+âºÍÒŸwgŒO jû#÷`èb£à £¬©·Qê¡\“K’°q<X-¿^-|¾dð“ÔØRzlÄ–r‰9«ãÙ4óïðøâëÍjéZYÝD"\؃øBWN«QÐO è,ÍâòóäÞoe⃷•rŒÐ;Àwý–ÙTc¬:ÒA[/­ S µÖúm6}[m#ð`+(oE…9½2(©´Šä<Ñx
+}8kñ-î<pæ–Š¥ßñ0£­4„ØsŽ=+’ªJ]?ïô}ÛI ¥ºQ!’ wp 7KƒU¼ù¨(ÂG;+'|䘶[ñÍà×¢X%¶‘ƒŽ"õ• 6Ó€c¤ L u£âf¦VC ‡çJ¸r¥ñ>~d
+C½·ñ‡î|Î?-“¶j ÚÊ\®MY%&“ó$+˜;žhsMRsV›ºEÇ©Ž\ÙÃð²'ê8ßú±£ŽO“2—ŽO‹d^Ô­,Å×a©y“T #¯.•¤\ÂÿØe[ÕF{ÉÂ^2ä/ÓRôe…Ï·ñF²¦NÊÊ}Ýiq4#úðy&þõìw~@| ½ÓúFAn;(è¾iùþ•Wei¦àÑUFnȬ僖Hù ÖmbxL`BJO Öf\ïaFÚA×ríHUÈ  2XGî€û<ÀEé“\8¼àc¼xÏMž1“T'Óø(l³f›îOæ'­ˆ•k—¸G@ä
+Ê•ªLŽðòJ6½üó /R=Ô$õÐ
+Ž\Å0¢qÕü€_\ Øgêyu#Â.§˜3® SôF"#ͽ*šÔ•ý}¿Cõ ŽÜ±ÝG=Ätà ‡'´óTó“bĤSMhl4Ð
+W˜ë¹·ICHæ$(‡mb»^þù‹BF¬f^0Ù¾"Ã=âÚ)1"D¦¥”ÿÀ-"lžý'÷joˆq‚NJ wùÝü/À
+endstream endobj 682 0 obj <</Contents 683 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 683 0 obj <</Filter/FlateDecode/Length 3596>>stream
+H‰œWÛrÛ8ý<’S‡¸ð¶oŽ¢My7e'–’<d¶¶š–µ%Ë‘Žwÿ~ûtƒ uq’šr• ’@÷ÁéƒîÆë•Jùo¿V¿¿]¦jÝ©ßWúß©Òju§ª$M3Ã*•åIž¦V•N¬IsµzP‘ŠWÿáZV¤´Ÿe²$·•š•YRj«V·*Z¬–—¼`±R*[¹„Œ%yq´Ü”‰Î•Nɸڷê³Ú©×«)Ø6¶gƒ›çCˆbÒc4©`ü"~WKrkeÊiü·ê“¼Hb¹$UD±Î#Ït”â½Æ(‹ÿµú
+q ²}—Ñû÷ˆ3mßq
+DÛ)ÑàåN§ÆŽhK¬ót!÷dÑ}œAó+µÙÑhÓoê¾e:EÞ´ö¾Áóåî#ÞÀú—­úŠçÿźŒdsk,ÒÝ0à‰5Fý†-ï°óT­øeÑ»˜5EëIà±M#ÁyIUöú
+*ûˆS†Wâè!Ö•8è ¿.&'ì<Q—ð¸<÷£,¼a»Wªç½¨ðöJXD-MtFGã Ñ$ûã¦C¶^÷Àð+dnÕ G‡pˆÁ®æÿ
+Å1¹ÞnU鞎KÍA8 ~ *îÐgø0P üÑ
+:cîF0sU½“˜äõ”X¢Æ½ü9„o#ï8œÓ ú= Ü„hÖ¾zµBĨ{E­Y×Ë=À* 0GU:6Â0…sôi:h¶„fW¿!ãϯ1BxUÝ©–Uÿ_l ;‘Ó”)7neÌ´7Fr8GÀù‰¿ñž›–OEâ5ûéjŽM;ð¸¼ùÄZŸ %lòä¼ »?:º^x&åévz YP·C”K;Õ¸ËDã¼qŠÝÙêû]Š©pÁ1@²à­Ãö¸ÇM§Ç ”çØxJD%GñiZþß{õ³³c$LK}@‹¥-û`öbAÄv,)Mu"LVM݉|dþ¶“@°ßg0±iî9ilysÞøŽ)©}gæñë7úä¹ñ6§GÄë¤K³86"¬òÃlóhð£¦n8˳¾Šèž¿øXðxýȽ¯{БÌægù¾#Ñ=9htåjiî!P“• ‚ŸØ{°EzÈQÌ åe*è×¼÷96u»™Ì¼„"‘™‡¹C‚&H“šë)n†¼\Žy²bò ©µä(ÄŒ×qØÊHªâ–Êå=ÝJ‘áwõNP\0b ¦Ñæûhû&@|Íqh1ñŽ<nxîÖ`v샞¤0‹aìQ•Ž ã7†Òlî6í­@EÞ(}ë°óué,ô.iqò ì„ÈÛ‘º¾ç¯øn³~Ú‹ä ÒÃZ’á6Ž:µ¬DåGyWŽ` ³ˆÚóCêMY”tëÌCgð½¯÷¢}Jí­|UŸêí…ú LË×#Êz£N/-òè‚Jõ]¬õ¯±÷ƈ¨@ÚYÆl9B©<”rÜ*AA°IÒ
+µÃ#&Л'®´S*G¹Þ’·­Ò¤,Aδ½xd×Lý'ªIÀÀ„\Wä\ª¤Ê³œ-c¨²<Éqnl¡“Ê †?3_÷1LÊ°  HTå”2<ŸÝ¹?.Ø£×—ð~]ñî0»Œ>ðÜxÃÏK„@€ÚLœt¾±pXKÞ=Ò·½t{ åÝžPæÐJ£˜ÔcÖŸ‹óÝ#7G·ü+†zYñ Öj’+?C:ÿR6Ë%ñ&–x²z¦ÝÞKÛÕð‚{Y;zï„21º‘¼»>
++ǹC•Æ÷\ãÆÞCW¾_Ë\1ôo)ema÷kTÕhOWø™]¾9×ËèÐýiXË’"Ÿ4 jVsnãIÒêkë»ê-è;êÛdr+|ºL¬Î8}
+29\lèc&÷…Üß^!:•¿‘PVà—ý
+pDž†›Ñ¸k,Úʶ7ã¶Ú¢dzÕ;)Kÿ§½jzÛ‚è_Ù#Œ²k°¡>ÙiTYŠÝ¨NÔCs¡6¡´ ný!5ÿ¾ófð‚ ËR&„]Øy³o罩‚Ù$›!ù(scŽ‹ö†g¬+m„!Ã3¯@c“jeU‡­­Öð¿´ZÖšà,"í±ýúDòvÒµrXKga§œÅbz‡O~à‡%T¿L’ö|ê(
+¤+åô”ûø³zz‡6”ç’d¼} U ‰¤Ãy’ïh5'™¡8 õDÉŸÓú+Ë臿ïÇch3/Ý‘öúAÅé#ÍLBõìd²ý1zÈ8{¿¿&Ïî¨Tx”!o†ç
+ÄÞÙ=wÈOúŠc„â A³$'A~|÷®6¢Ë.ƒ:r&©}åE˜)ÆÌ …²˜ÚT¬‰ÓºPß(êW»¢øTìÝÅΪµ_?– 8º9íȘ½ _—(ö|IpÙnÓ2öP°‡Ò¾†- =Bä…Ú¯B¾.ÑŸLK³…@GIª&ÓÞtïZÑ85°±úXʧsæ—çLbj¡6‡xƒî(µ±+6䕸G&àá~6GµÈ :ÄΦØÍàð%¡yä&¨&i¦Z•ÉNŠÙg2“ëúôõ–=ŒqX–#‡'ò¼û¾§Gì/Ä«DÎC-{sãEAx¶Ø2=“A]!æj6aåŸ1+Õ}Æ”û…ƒ'·)?ogc3m†
+Ù' ½ˆŠ­§N;µ°_ÊÊM}‡ŸèÀ±Ÿ§éÞ'á&5“FÔ8á0Þ\ìBÏðšL¹0ª7<ߺt¿êø¯BuÚñ¼Ïõíç\[~àºÆ%—).¥u…g Oj庥z$T7
+endstream endobj 684 0 obj <</Contents 685 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 685 0 obj <</Filter/FlateDecode/Length 4080>>stream
+H‰ÌWkoÛÈý+ƒýDK.gÈá#ùäØÚTÅÆëäôCR´4¶UФ–¢º¿¾÷ÜáKme³Z‘IÎã¾Ï=÷ÝRü¯¾?½_ân'~ZÊBŠå­Èü Њ7dBÇ~¡H2é‡*ˆÅòA8Â]þ“OH{" XZ ¥ý8Ì„—j?•¡X®…3[.æ|`¶¿‹0‹|º<IIJDÇUêËXÈ€.µ¥x·kƒ»U„»½NÌ×}í•­Ž*°:~¶r— áJåhIü Å'ûÁw¥ùøâ¸2v”ëI'Àw‰'íþ}ùW(ü©¬•òã´W9|U[(ºï@>} ãµ±÷ëñýRùÙI„É„ =!(ˆ¾¸#Y*#m¢^Vö}¢ì-‡¢"=6Šòf0)‰|Šá©(ë!ÊÉQ”lj89|ï¦ÎÕâLæGÀP<á¯A kW;;<lªR¸2tÈ»Qþ@|¤eÞW˜_wFÈqèUøéà®ÈÏÔ‹¾½àÐSªwT{^¼ pÉØ Y¬c{¢Õû!VT9~®jaòÕ½›9d”§3WFÎ;<‘ª¿?Òw³sc§1kÑTô©¨Vyc(ûé`ãJíT®:âƈUmh¾Zó'ãßÑi^›ˆ¡9n4¢ºue@k®—9XoLí‘Ïcç™^¬P:,Þ†³9¿cïºzÂ]õ÷ÇîZZS´WÙJ¾ÿí!èBÊ9‚%ðeE!8fì=Ù{/…÷áI_jòäyiU•”.:ùOd9é|OO­X¶„<9EA¾Â:QÞáÀ|UÞàØ 4²!ƒ<éG¤‚§|†ÀÏë¡2U¶ÓÎ0Ä!Úõñì7¿è·ªÃâûìÌgo]™Éôì-'äiÕ–
+[-;ÙŸKØ|æ*g!Ïåê¾&ŸV冽NÞmè/\?Ê™—k¼­
+)9?Brh
+©æÄy]õÌOõXóÉD'øLm¦Gé´òVçã_R–B«¼„æÛªf ÷üÒ¢ŠólÍ9[¯ñ×`þŸÒÛjë}oYFÉàéôHëù£XRØIÑNC`”³BAîÕéëjSSÙ·8<Q'S±èlÈŽl¸@@Ŧó´øTôüˆgd‰!d ì˜ΌòŽ’Ê¥ÚëàF7½bfúD¬1BäÞX1êz|wà=»Št¸Åwvg-®ÐZ$ä‹;UFm©ÛÒÑ)ÿX¬g ŒÜsuAÄå™ÑˆaÎB¢E3 e9þô06eðAµf¾`À"öLX{²WÂ^´áÎ^µo¯?+{""k1L‹QYuGÛ??Òùîû÷ÿʸyŽ‹Ï@%ìÎ9Ðþ×Ëaïo׳…]Ôñ%JÏÜQ°ï†®üÐREº§LBRʼԶémÍ­‚Ñ:hõ¹­l O¨…+ –p²íãoøÃDã¤úe'mW·ØóÁöÒ(tfå
+Uù¼¡ÀÄÚdš@C³MZ¼Ï¡ø/ÊŠQ‰(ØçK®m¬<®©1IÐ/}N£-i2“Ö½ “X*;l‚DìÃ×gT×¾ðÕfu ¥~MI„%2¶Êá}_1ê‰dÊ[üŒ
+åÚ‚.m.FÎ;§¸.pÙ{tåh²¤04¹aÛêåØRý–«dÑtx÷ø"JÕô5Å®ƒCêZpßR ¢~–˜Žò&°ùüHc¢ÀkàÁ†© “‹ª##cþ§yeµGJ†Íç ÎÇ÷tBÎ*F\ÏvÄØYÜ}ÏKnzc‰‹X™¢ØžDŠÃ”îA+TÜD-éd¸š‚/
+ý4”ãBGÊ4 Ä" ´Ü˜sk{²ó›õÙYbÏ®ÍÎjÌ¡ð‚°Eï8IÊØÁ÷0;gY8ã¢vÒ ‚•R¬èq ™4ò`í–KhªÞÝ'Kd1TËH3Òüy¤GãmléC‡Ï¶Ê’®¼¬ ]yù\ˆÃ„Ó8Üo={c‚êQ°úY0}aL§gÁæ~ ¹@c~Ï_ŠÑ“ç¯aÛší Hð\´°,1!¶7¿8]áÐq¼8@5Ý3ê'jHŠ•Á8XÒ Ê §ÈSâGCBîq§-Ô(Û>S"è{EÕÁàY–O”‡ á‰)ñÿ«¼¶'84vU|Ê‹GŽÛ·ÑR=­Ö‘s‚¾¯¡yæ]»èښƑKDæº%$Ù¹ g4Ÿ0"úü;¢=jËØRŽÈO‚ð%Êq‹Iu?Ž;}÷êÚýu›¼\²t„)LÏ8LÙ€ˆP}¬Ìæ ×b¸»ã0¤ÌwžQ²ž¶J­´wô5Ä»FGE[£Í‘ÚÍj“"_‘U%kÏdi„²ÏÊ®/K_êÄF¿é¨\â\²ìs„6·I×aA'‡«yCY@~*» ËœNYÏâȾR8l·Š6B <ëЇAâ®|€ ƒ£ØÖÕʬᨚaþÍŸ€ lÁeý;o~Ño=*´Wæ¦oýF=WAÔµq£´Sé­ /Í)Æ6…
+*éílgK¢q‚´}q6¾AÊú6ï2gSSH¯áuÃÃAB†d•(
+ñ¡ZAÏ”|ëo:ðÉÔÀ
+¯;;U½0RQ*&'GªÃ¹d¤ªáŠ›gQ˜'SLãeØËÕ¾Ž»¸Ïg?Nɉ\õÄò«DÖzæa‹R(”|›ßl
+ˆý¦öOÖ*Ž&Óœ;ÿzš¢ôu«ÒNãq%>lQe •!pÌC³xÄŸ‚_LãÏ ~^Ñ/cuBi9ÕäF‰J? £ÑTôÿÜ´x¹ÿOZŸÔ-z7¼û9£c˼ý¦)ëßTö>Y /®ÅÏH•
+/ÌT‚Ϲeªô| Ø[Üð/2G½Âq^ªù÷Á )5ü[O`}Ũ¶bº¡KusSƒ‰ËL“§¨¯7 ©Ÿ„qgTǼŠ´›„Àû Åf4Q
+µÌsë= nLÛé·í¸=oúÕœöœàÏíu=ûÕC+T™ì‡ï» [›ÚäLþÚi‹.¹³Î¥ ¾»Ç¨'øž…–‹vPÌ™íh'>5ff WÛûÉð*53ŒF™£Ðp¸ãÇ2ÕjœŒcCážÙÉÐÒ_É¡Wó,VÝÌŒ”S60Ã.lâ@2©/Ülš4BÅ¥´E«ÿ0_5½mã@ô¯=Å‹VeÉ–ŽElZ'»vn½h%Ù X†­t7ÿ~罡H%qŠ÷`Yäp8œyóÞ¦G÷ðO9ƽ¸!«*<•B¾ô}‡8|„ÙY4‹Çè^·ôü}8I}÷² ý›F©õ• ®ÚL}½ðõc~ú¦XúN‰cL¥VFÁO]aœQEÛ†»öç«hKÉÚ“ÞÂ𾃑Þü?–‰9â–EPŸk é¨
+U’Åï·‡$ts›¨»±2ÌH Ðå  $è ñmñX
+Ï5tÕ‚2 }<¹j’ø«øFð¹ä·%¯’írFøPLc qö›PÌû1j~¢Î½gánB¾ŒèÛ—é<š
+q®êØqŠÐS>ÑB4JŸ¬*ž¶€^ìäx=R¡žþ¯–ß¨Û-ZÁ뻵ág´³?˜nË~7ÄVéW²þyO“ ½€ò,[Þ+M^m¤x©ËßiäØsA©:(ã±ÇW*\×\O\’°<,MS© ÕÔŽk'Í"³ú¾Yý˜x†ãk™|ƒã¦Ù3;iF
+#“CqZë %³ÿ]¬Ñ
+„÷<±©^:” ^5
+~ìqW+Ý™£ìÜ='©ÞøÀ N9p¯œbh­FëQ!“8wF;ßKóîíL.‰ìUn ¯}ào[zOÏdùÕtD
+/†sØÎ~g¹®Ú¥ß\‹Ó®Ûš[ÊÀøæâcñÚ÷ô­ëˆL¨ _\¬Š²
+áW—$#VŸ"R¾w+êÚ˺Åÿ¬´.AãkÔŽã(M|÷º_Ü›íó1´Îò¼#fSô¤*zÒË}<4«\472q„¥;i
+\jY¡-ñT| Là~S?%pÏBiµ€ön æhf¤“ò½¬;˜úß^Š.&qwŸ.mÀæþ€xjÒ1ð®–a¶lOž®Ê•“ÆÆžxûÄ^*œÑ1þ¤äß3¦ïLÙÑ%n>õŽdÙÛ6vØ‘²íÕò‰ç^S…NbqÐ=öÞ8î$WG¾ ?Ÿ™o4æh¡Zhi¾çÇu—gÇ ‡Žåüu,ºÒê
+f/- Cóoô:¤@xl²CB3'ylmãÓSµŒŠçÕdŸTGâ0f¹5ÿ 0
+endstream endobj 686 0 obj <</Contents 687 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 687 0 obj <</Filter/FlateDecode/Length 5845>>stream
+H‰¬W]sÛ:ý+œ}’vj]‘ú~lSOÇ»½é‡Ý{ÚÎŽb+Žo;•ätòï/p@R²ã6íîN&2E‘ 
+¿#•3c¢¼ô*'?Ô–=6 vŸhL¬AD~6–¯MT=i‘¤8sPvæ 8ýŽÎ2i“ú³ªÿî(‘rzTš/E¸®TT?ãålðrñÈËc NN^…eðö-û™®ŸÂ‰ºç߆Ù†YÐñ`³ß©P'Y7uîÕ{úŒuÛ¦æÙ®Q@‰üoõ4#=+1H•g¹(ÇVôúå†îêô›]‡ZªÓà&¬‚FA0 Lié/®+¾¸‰’ŠESø| .BsVòIQ¿‡©œ·ôrųMK‚;ú¿Á=Ã<¸ãš÷4¬ùqèü©æ4¨`íL¬]æƪfSUïHèJõ燺iádˆKÒ–5IÕIFB I8w¸ÎÝFf‰oªˆr}t6¡„Ñ6ˆ7÷äçf¥6;ú%sNøº4C̃)™¯ÙÒoh¨Éd“<xÎî^àé‘o.ýâà݇éœ?%º Èû
+„†ÕÈ‚'¶ø'îªÝ×+ &H<„& ú‘Ê Òx‘…uŠ‰˜ð^
+áUßÆö¸´#plK\ûè;Š³§È†¨Üd¥§ÉŸ#ždTJdµU™ŸÐÉYYΦas–³ó³a…4JŠÂ.È
+?æì’.\þ*g3Ùˆ Œ˜ Ž4E†×ž!<eô©M§:29GÙãpáŽÔÀ;&¼öÖZŸU#\ñG›7é«ìâ((à™Âyæ\hNLÉÿ¯ßüJxŒ¡ÿŸ*]›QT‹F™D¾ÕC¨«ºW”ò%
+%mZF,Àˆr¯†¾‚ ‚Ù°LSüO<È·{Ì…Lƒ””ŽyЂ÷y§…ËqR¸ Å—¡!,—Í]¿Ù­­[+T`û¹ç=K¦óSö,,QãRô\³"T›í†·òì± ŒTF´¨µ ò±Ðgøàu×™pç#Ú\Ü„†KVí²ß Ýdà>MMUyTÖ‡:œ+±<]2a3Ñeq6&:†”K…KAÏ`µ÷åÄwÓ¨!-¾1¾Ç¶ƒå#ö¶~ga÷Cávc¿lëž&Š’ïo ¡ˆvT¼Í†/eý3Äq’ÁÆ^˜o›Ä¹bõ„+|Þ°Ô_‚úÜ2c×PçÌù¹!|¬] Wó`»%cÐ/f-SÙ*Ï=še¿Ù‡öEA¤TT˜è7×Ê '>Ÿ 8j’ ¨Å¥~o” $ÀÉKü½`¾G˜óÄù¡ƒWÚm:ð°£Ïº`Í)Zölyòy·ö e]Ã/˜éñgØ“¿_©|¤*²T’º‚&‚’ ¸oŒpµeÜTm’¶Ûý(»=Û*gè., F¶ª×YT–Ç LxJ–!Ï™eg;x,Ç}Bi3†Jú+P9÷†~ih~°¨¯ââÂ!¥,ù!Ó1?\5#ƒvÒ¸PDÕ Î~¯¡p${ç+¿4[6ÌS&ÜX‘*<s)´–jÆ mÎᦿ¯­ æ^ˆàjI|€Jé¡¢¥öБ!¾s¹”o Œ&3é\X (rÞÏYÊ£©{×PlmÃyÁXe˜H¯±j"%´äú¦Ò"°s匜ºoQ»8õcŸÀŒ” )HáL/‰×µ®4{T¥I§äš8
+ªNmV®~“Z-N_¹¹bhÙ-׶SËl³eÓëJx«Y¾B
+±$ªŠtaßB#!ÖøÒCùrc‰9†?‡ÉŠãMò¨ôW•ËÅ Á£$JéEˆKŸdYNŸSWfSÜÞJŠ›àö9þ¥úYÛŠ&R3ÄÉySxK˜œ²§qWBuGµòlrêÈ4‹L<æÖà¼Á<YÆ%J¤¨L“±Á–LøˆÏ¡\Ù¡•Õo„ÑÙïÓÙü19¿·e!Õ– (ñxÏï9HeJ€ ÔWC#Ú@Ví„áóߪé›VõÇ.K ["†¶^Òº x —8d/¶¶ë?LEÁ1Qñ2Î=WPò+Ø ¹(ÔÞ6±ùòÁE1â8oèÖD+¡©QÞ–Š)Byà]˜”>ãÊÇâL"«G ©ãQ :®ZýN£¥Õ‰öþ´=m¾Äõ'×¼@­Á£93zÍÌÆ…Ð<×j¶»FöÑÜ£Väª[z$šÝ©s™nHÁ¦”´5EcÚät»¤ÔžÛ̉§L{¶Ë}¸IG[p‰jc™È;Š±Ìƒ¬Dœ]W#ôÖ,‰'ž±»m+BмàF¬ÄA”hŸ©ºG¬8¢M{°ç8ë1—Øš'd‡9Gt¿â²"2ùÿÉe“ŸwYª‡«¢yÑId²¡pšâ{I¤Ò]Ó{ŽÁÔ×ÖZÛ£#H‚+Îc!€´åWdŠÝYÊC­qÁš…Pt ”DÊIв¼+æâ0“µJ2Óœc2ž‰’”rhøcó9
+Ç]n¶ô­»3Ž2*mƽȨ
+*+²*Dð¸xÍÎcËSª¸’K^%³€HHf†¢rJÿ~N÷¹€%Ù^LÍÂ2Hà‚÷qN÷×ó¼ '÷š*Q [üE½¥´Ú3<d‚h"Äþqe<è«¿´>)ÀpÿbºM*ß'™– ‘ÃAL&gÀ–¬57öÛ5­‹üÁ3æCÄ@¶ÜÓ‘8n3ÌÈ÷?ØSÖMÉ0)ƒj«‰ªá…ât„.ÎS§gô°ª»MçèI©×0ìö“v·VË=D›õ¡·>H+Öåm# o
+·Ñ¥”ÕßÕ¾5}Ãëã‹<‹éɤ/äük“ +SRY^½¼töûvq@ß?ܵ™;nå=ŸÜw›‡ek=X Ž·^euz¿baZÅ&3C‚×x·g*Ð,ôz¯Aïé]AOÐãgËX0µ{yØ=£úWÆU©´äï3”ê ™2«ÆÏï­Æ®r¶ûܹ„!¡ñgM¨fz¨þ¥ï
+Öš63ýê%o¾eä¯ÆE/ç\pksÄ—`´ö;Üézàs£m {ÓV •…zö+BÊοÈÆœÔNÔô^~x¸†ÒNP·ƒ€‚¥zIsd“*Ù$~ãßÉÆCRkòl®¦Ö¢WSg>³ ù 2–¨S¾YnZP•êغ¿Tk]hÝpµ’zû'Q¤°äåÈüð{aØØåégL"±tT+m–Ëœ¼<ê{i„…7ÂÊ!·ò:ùWí5k‹ùs¾ˆ-²Þ(Ä™hUŠ€wŽ!е1alí½/îbÎ/2Ÿäj¯bJf,XÖe¾æ¸cŒ¾ÊÚÊÿ³M»š ®VXW3™gM8‚­ùnù€ëv Î"9ñª;0SÔ Žbi—Û[õ€”ãîç€XR0o²n<§eô¹´ˆó"”0ä¹yU˜´‹ÏÌëQ‘g®•k=.KÓSóçj‚-§œî€+U_…Â8n舥îF40¹zlr|Ðïô»)çý­yEŽLk ÊºU\ùT’D•^³EŽ"eªÒ¶‹ð
+ÒâfiÍ峉}|G2åzËjÕäÁVÔ(ªéñA9š™*¢Ü-7Z@0u™kYéÄÙl–
+,R2êT¦µÒØ&“ÌÒ®¡>]ÄzÜúI\›¬œjYéØËÛùõBbMY
+ ìâm¦Q)—#-Í |~;[N&Í&Îê¯Ì\³ñ€yèètn ~¢—l7^®ÉN«³Ö#=•™ W²B[J¨£èŸhyvš«&Û4H{h«70m·Ÿ¤zÞï»?G³´l%
+0ÐËãØ´Èʸ¥žÁn¿ö®’S–3¥¨)jÎ#®”1÷TÔâs´ê°u·èu—rRF«ŸäGJE:»ÂÉæe ºÈ“„úð[‘á‰Çøc¾B~SQÀë_jpå–>ßýåqpííNüýߣs
+0
+endstream endobj 688 0 obj <</Contents 689 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 689 0 obj <</Filter/FlateDecode/Length 5255>>stream
+H‰¼W]sÛÆý+;}"ïX,wùÝ7ÛÑdܦJj+éCÚ¹CK´£Ž,*×ÿ¾8À’»’;鹓‰Lrw,€s
+uF±ú#u˜p¢ƒß5ž²ðÏùÏ0ø7293&ÊËÑääYkaè¾ùôuÁÄ:Däg¾|m¢êE$ÅEÙEqúGèé2Y“Žºª§J¤ªJ ÿR”7îJEõ-QÎ\”‹'QöÑ9y–Á»wˆ3]?å
+/«p’8ÑË%tUåà=ŠÉ‰Zí tÑâN=)­I`lØšn¹Â#…‰>ò}ÉqÈ¿c—vQ×z¦ÊeWí}GV.u ÛÏEª„ÂåjÁZÜâ¡ag¸½s¬ÔÜt[ã¹wa±åG²<6M÷Äìdb"7‹
+〮ü¡jó˜I=Ì&9¥ÌR3ˆèž[ÔÔµ¸è neoQ}Ãag0$é㎌ë¶óÛy‹´S,cQ÷+~€„æ@ò{!ŽßÒ/Ÿ”½ ™&lq˜×X `H\èd¢œÓ#ÃÏ]XWÃ…¹&P_3À`±Ú2‚:†Ô­½%ÜOZ8-žH)9ñ±”Kʃ­ºn,JÃղ隥Â#äÖë5Ö{A©;×p¼Ùĉ5ÈÏj›‡´ï°.ÍÙˆ•„i8'aÉpIPä;¹wÌ&“z×µ‚‚Ñ‘¹ìSîÈ íîjÞ9ì9Ö*zSYf9­ªŸÓjæøåqºrǵe_eÃééfÑ…&·`.}u±¡•BY`t_µ¬Ûn䨡#õJZE}ò¬´ÅI_)z‰{O‘´op‡·œ–çøxŠš4ç!¯%ÁÛm¶{{?½’%/X'‰ŽJRîÇþÀß¡ŠïÀHÉ&bP"t&uo
+œ¬<?—yãÞ#à’ ž]‰ðŸB<×îEåûlB
+â>ŒâXäs1áêËÚZb鶲 ŽôþÖá^QG‹$}Z€Î¯ÌRŠØž”»/(Š\ŤfÞ ÒÔK]§Ä•B¼ÊÉŽ¹-°\Ñû¡J{õu¯„f–Ÿ¤P»Â#X³{¤!RƒÜç#E7b(»ÊëX‹)„îž&É1TÍÙ@!#ÆB%./ÉådbiNa¬ùš(u.Åy™óœGÎBÒœ<›gªEXÃÁrŠ7¯¤Ï¢™¶“ëÎ(m°_–"€Äí¶í ðZÎ÷ÎÒ3#ýu¤Hö•wý·Ãøs96gxânx‡tÎ0‘ËZ×ü…gnˆá Úv-yè 0ìÍÒ–?öylSŽL›o_2õ^w‚m|à–Î}J.“ïý‡õjÙm[K‚¿Â¥ X„HêÅÙåa ‚<AâÜ»˜lh‰¶ (’†¤å›¿Ÿ®ê>J´“ÌÆ&Eòœ>ÝÕ]U‘J)/DJHÙ¬ô|AVÌD“å5W8ŽÊiŽŠ@æЯŽ€(ÿpŠ†·MÕ×ÉÉñø¾©62qëᣜ¸X’§eЈËçå@ïÁr*O³ÅˆÁ»NêôQBIÙwÆ‚{ì=9P^;ž¼é®Dv÷•>i:æâ#“üLÅ1ÕLíñ ÇJûŒ-u·4®7¥™µï2-_mßâ p=Iæö*Sž2/(öò¹ŒÔs ‡hÖ››“q똶ÚVG´¤P­§¬ÿŒ÷w}³G‰£°Â(L,'WåxÃÈ&Ÿh*²¥ÓyWh[‡³É®NßyXb£Ø'/ÏÆaÌ>d öm€oG¤Vm›^â•'+>饎0=n)zZ„{Ë™ £ M¥4ÐK¡eFíHîíH>Þñoù‘›Ø†Ì4šÓÕº|剨vçqáÌùæÏ.ùÒêüÁp•¢q$ŽpQÖžOÔaçÔêud©1ÕÕ´Í#½ ¦°AÇ4C4_S‹y–Ί¥kç/V0d†ë^&uâ<§!“HdQ8~濶)³ßlå
+‡D?Q˜°Ãµ®}­Z¦´ÚÀñ=…tëÀwº%hŠBÛ»(ÒÅ|5Àh懪˜Ô®S‰ñè_ˆ—Rd*§ør{Ç(ê“•~Ôó¡Ùx½ÐKTT.=¤z¶V­nï:i?ª4, \ª
+µñ) :zéSh'ž6=Š½aÝÀ˜•^K¼­À.BÆ äñÁ0‰Þ"ž¤¥0''w¸’Y6z£ pìi+#¼º0;×lùl¢+ôš6.ôˆ_ú ÀRI;©´„ ÅðdÖvÓf“H£".vòï%W¬Á¬ôÍ‘lëM³­ÝüDB¡µ¶ÜÇdÕ†r î™_óf_©”û }ÆK7ò é•>¥Kì"5uVÐjÏu«´Óž\ƒz5'n3ꈎU[Q“">ù*9ÑPW”fÚˆ's
+Ùäd§ WSf>3[Ý€pzB6ô¡ô‡È’ØÁ³ôdwÀ›ØÊø¿]»×°×NÆÂf02¨sûÁ]gú‰¢XíTM¯84.I‰Àü%3q¹À8ÿvÂ"|%b©õ$õ‚]†*3ï€GÇ”â<óÞ'£â+ÊtU®\¼ë®°#F¿è²=­Ê{¨”h0ù%C™óY—ˆëð™bJºåß5Òóo›üáŸJ™¦L,Ê4¢OáN7Á²¾$«4_A Þ¤!8FdCk=Ï´·ÖéJšjÐZh*×Qv¸Iá‡Þ2S=\ˆ'²í¶€ïÓ¡·ï>á6y8àQ›ÜòŸqùá+ø†Qôyì€ÙÜ+Ï'©Œø ÝSC»Á©-ÞŽ!Xøõ¸€Ê&¿°Lˆ:±”]Ø¡ëÁF±¦˜7~¥Šz—˜ìW(Gj%óÉÎHÙ,]æ ³¶ó»COç”^/4RÓÉ+#Ìƒå ¯ê—‘&.|tL­Å@5Õ¬¸P=b9lV¨ÐϤ“€ž8z“o7” K¸o“OÏm""KnÚæ
+*ag¯Ýgm½“‡\NF¬\6î–\ðIéÍß4C+ðþ‰±YTåkS! Âþ_pbšaÁpØ'wRÝŸ¢=ŽÑB±Ÿô"'_+œ}Ž(¿nȧM—tô*THæ&o’½TWƒë“»ß‘ÓUOñ‰W™S\ƒ“ÿ×ÒC7ü¸.`qé±ÈúNWéj5ÊÉÚ"ãøwZV=åbà)÷NtõIµÙ¨?ʵ”ûßÀ㈥œ3\NT› ¬„c|¾fom›m¼ƒˆWk›þÂ2&ãP÷‹úcÜבѭýîA!x—Lü¦&L ƒ×‘-7žü€Ìä—ÁLåj¥œ\œ™®ù‰áÀ”3Û£rIÅ2¤oÇ9¤Mµm’Ñíw©¯°÷÷«ÄåÄfBñ|ùºÑm¢Êë/Ì$( þûDý‹\¿B²DXµuµµ ù6uh²©¨»îë²ÊI3fз\9^ŠqËó#š’å=9ìžrä'Nu&ÍcU®é»UÑsD˲=yCIí;œHDmMOÕt=6[jÿƒSQ&Nc_‘ú
+®ñL“†ä¸_t‰ºë+ÞîÍéݹ /ÄÃ$l¿õ XªC74 cbæÉê#\©œåãöx<´šIÏ!
+ÊAî¼â¡¦¯™(–nÄþîæñ
+endstream endobj 690 0 obj <</Contents 691 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 691 0 obj <</Filter/FlateDecode/Length 5666>>stream
+H‰¼W[sÛÆþ+û¸˜ìâÞ7IfÖÉ‘èæ!ét ’ÑR$ BVôï{¾s ¢lO§ÓI,.örî—ï\,UÄÿuê§÷·‘zØ«Ÿ–æ‘2jy¯Ê0ŠRËJ•faE±ÊKÆ6ÊÔòQi,ÿÉ/Œ¼ˆèŽjeÓ0‹K5+Ò°0±Z®”ž/oü`¾TÿVq™„D</ˆKBÏmšL™ˆˆ«®Q¿©ºXN¥m›€öl`ó|(¢t2ÚHdü]ø.o‰E`¬NUbð«¿ÉF„‘úC&Ó6˜aß`•_þÿJ"§Ö†YáEŽ¿)-=4 ¿>’NÏœA„~:¥olX~×"q~‚Qz‚Q”üLxÙ’¤I<¯ò¿c%TŽY%ÅT)Š›Q¥¼ü/§£—óW^žâèäø}PèOŸàgR?aÆê+~8² R½Ç¢ÝnT`bMÖM÷GꆎùÞº©°»oG‰ýïä´ƒ£œ¥ÈYfi&r ^ÔÌ’Úƒ¨‹{PV=±ü˜ˆø‚hÇ#ídŒt“‚6Qˆ ÂjE$Ôç Ñs’\ýB‹6˜å¤\¡ArÛÑâE-6÷øÕ ýH×*·Ø% ,'ê MkYqn‘—L,sÕîé±j7D¯^åH?ÑrÌݬd_õ_èo£èÔê› Óó×—Á,Óç°ù’¶½f±¾¾R|̬þõóüVŽäÝc`nö¢Uª«&Yñ˜¬.}ÕñŸô4¯èÓèKZ9‰YYvؤ|°Qé]hË„~C“æ¢h½ÝÀ+ä$Ëú2>a¯ƒ9IÕž¬¹Å®ª·kZã_Sc—Ä«ª¥å·˜ßﱬzvš£ÁÜÎàËÜÜc\©H#RßLÛµ€†%)HæÞóõJ„H… Í<ÕžÅÞí¶4DouöZftÐY%^1HkÜEµjFûl$ˆ‰öHé@—Sñ¥C°¡¦?«ÄÚç¹ú¥Ý÷à–“ 3\°üŒ}GO¦~£°Jaï\ßoñ·{¬ðÓ·üµ9ñ¯â! ‹(ñI¶˜‡ˆÚ1~Lé3D$àë3"µñäü÷M§ªõZ!V›Z¢sOáˆUÇV|óº;[䩃ákÞWßo‰N]7»žbî&È‘D‰¾€ž|Égb9&b»yà4ĦKE/}á³¥Šâtd-.÷mµæH¿H*üáNíÖ+t¦ªNtR8Áº²Ö\a`ÁøÏK`)$È$Ûº"]Î|•D‹
+ bY'åÔ¿œì9¥‚Or+I¾—PË5l¾o8r7ô¹‚¡T5Ô2ÝX‹ìÔ"¾Æ>0³«ëßðñúñÝwïçCÁ’"¤YW³rdñ–eè¹X~á-ˆ|ºjç]“ùÀŠ¡4Õ;Rüg
+ƒ¦ªa2’s¨¥X)ðrpa–:/°&Ö÷ÇM?ÌnðS½
+Œ·gα{rHœˆ³æ ÒßoÉ·´Êôs`Síq,.æ`ûì,‚+¢°HÄù&ÄH
+qýLÝœ_¨ Hb½x÷*‘}E ô—gÙ#2öT3öTë/& <#}ÀfI†@߬6è«;nªhŸê#rÎi°§ÎW+ü6{N”#јUš¾-¤­š05Ö‚3kÉnÙ|Fõ¶ár¥6[ncbßs ¼áH¾?§ËŸØÜê Ú"%­ºãëüX( <ñæòò抿 "O:#±— €™“÷„‘Ojä'ìDr‹A
+ u ³á •Šg^d1–/Eäé±Hr6VÊÿÿ Åâyã¸:Eø¡("hé$´¥Þª]Õr 4Eÿö~ì'ß‹Í4¤¼ˆš?bƒo…äɶGH/*ͤ琢»øêÇB$¦"í}ô¿
+–1ñÍÁK;µ@9š£Ž«GTºŠ=ÿB2ÀÕÖ£Wæ‚Z 1×i÷"QŠLUù† ÿ…44ú–Ž‚e_1Åuë[*>H¬ah´Í(°šÔM&p aôÕ;ÔTR]ýþ·pòjKzY]9°UêPºïÈÐx†ÅØ=P<O´t‚"ŽÐzN=
+SŸŽ!MB lò7@p<t9“4úµ8×»¾•³yXØüTÊŽÈÛUÞõ$išYœ t.yšxB±jN¤¢1ãÄ[”2•¦Q:IÅ‚2±tuè9ˆÈMdSÀ>†¡)íðF¼%ßq
+¥aû–I6âdù¹âjׄV—(Tn›þiwr¼=
+‰",íXEò„÷Õ
+ëQŠßáG*&C^®›jï(1{(“ Ê\^Iâëå:dãƒèx¼ïÛ5Cb£…΄‹Áù<\Víž&V:,4—w~-5¹—-dïîK™4=ÅÿÌŠi1Uf·òŠJÑw&òDÿ+ QMÊ@ì5päTœzhÔ¦âFHŸ.îÛ¡æ¢ð|$Ý£Þºñ5Õðcû€•/qçj‡¿ü½ß·wFzœªÉYB„ =#tk×õ&¯®¸t5ëáìÐ#éà‘”q–~«4Ì.ƒ/r.´©ôéT"®Ýü6ËÇq,ÕÜËysW‡q,õãXª?ð FXtøÖ›ƒXâЀLc“Ù°§Fwä–åê`š<S­Ø-¾K£¨¶µCªÆQS.ã› ÷¯²Œ_é«¥¯ê`,›¹¯|¥³¦‹-˜s+e€A]º~Mø€;$…®a,᧯3DÄ7&·SØ.±
+xé 8W—ˆ:p2é€ÇÅ»åÂZ32è©Wl¦ƒ‹3ßâ禮÷HSzì,&hkvP/#·®c÷Üf»ŽêþÝ Ì¯\Á/9žœ,M¶ù!·ª'úvýD€/l½\n¸týIë¾éÀ¶š`ãCE\em˜•Å`®‘P•æä’CTÉk@õ vãwk’¦‘Ê›KlíðlÝôí(Á¡G YkZ6#…·É€µæ6EmŸr‚Ê(,^ƒ9Á>‘x$ ‹ø°àÈŽ„î8&ÃqÊ:‰²*Ô‚œÈŽKjâeEÚw®t`“§­’ê
+Ê\²%™ãŽÆ2"¡
+ DÐݵؙÒ|5ƒ;^ãK ’Òk¼lÀj¶Á÷ž+Eê Û#KÆRU¼!–‰Þ~•Ø;›HÎÇhw¹Ü„åóA«Z˜ó j¦·¾'ƒ]áz%È)^U¶{2Á›ih"$W wöçÑ[£³¬LOîÁÔã··ªfFuÍ6Ï0­bn£3s›ûáFG‰ó§þÀ¬é#ÚrD›0ŽÍ!H”¦3T󃑓zÒ뙓ÏMÇc§´ëiÀÌ3g÷~¼¾D`¸är•[c&ü‡Ö˜pkŒ5?øÀBqƒÌ¨?e¾{²Ab¼%£po •‚™Þ„t3g‘#Hʵ°Ð¼’ný‡ýªin[9‚G*%¢ˆoà(+ª”Ê6í²ìä_`¤˜¢H>’ò‹þ}¦{v‹ù©rHåð.ˆÝ™žžîYOÇqÿ3d™¦K¸—jÒ&(š=[iÛºÁËg?9v5Å)¥Îµ• ú1>¤dét uæ[ßÚTWΊͺ“}u{©ùåÆèÀD—ƒH±M•@AûdS·ÜИXq¬¦Ñõ lίvSšÖÏ–>]ëû
+!MºŽ5Â#ú»¾‚ì 6i„©g;^‚ÆÜàæ2©„¦Ãƒ)¢l™–†.UÎæÎÔÒ{*[F^šã£~¡OJU®§r1T˜ÍM…iâþB]vk…™Z–n7¨›ÈÇŽùN;ãM'Nôröbäñp¦: î©JZÉææÄBU¹D$çûŒ;>o³ìÑŒ)ùhsð?yD¬OSœ“tõ\°žQf±a›àûìêë¿FaTŽS£°¨Òîüà  B
+ËEÙkå»}ƒ3¿Aè˜Rˆ£ÌÆ’Í”ê_‹%r|‘/J9™'Ñ8•uGpNsÙB ò"—߯ÔZ89Üä/ K",s¾8së)ÊiΔLøò:P•´–g×¾p.©‹êö‘ééqéÚ(&‰ƒ!NŽÓŽ•YI¤VÛrŽîÛ( §³íåE@Ê®w!á¦Å@vÝ'ëøó©æ‹ö•75‰«?jœ;UŒÐJÄå@œl Û
+³Eäax»ÊT½*椳w/àÝÞj%î+Nçf×y¦•Z)gðÚ|ô†C»C@a¥ó8ó8éaà‹l?*ÇÄÀÙêàöxÎ2ZãìÁPë2(ÁÌ(AÕ‹jÅÙÌ ó…Œ¦©u- yôDû5ÎÅÊz {ÉøsX ªÎÒµ®þŠ åòÒôŸ4ýÿDÓ¥£é¨OÓiæhºê‡8Bp_DÅ¢šs›áÿ‚¬ß·/oÂdYúGZ¬1.Ñ ÇÇÆ —ûMðžîNÎ9yŽÈQ¼‚6 Ë"ÿ_EÙLy¤ð.ž ÕtÊPFIiÓ`3àÛ¼­Y„qžÙóþ›·z’ÄG`æq>Uè©·=Ë„¦a\:‹ûpxFS6ÒKÉ'xkŽî<
+ &8œl‹Æ‰Æ}ÒñƒB¢âk_n€‹wôgå’†?r㽊ËZXç´áo>6C¹”I4GeÔñm¼ÇåVmj\É4wð䯇×ij›øïþhǯ¶²ò*ø!ø ’Âï–§H„s¼»\пqVæÀ±×jÚbr7˜\ÎÈ|Ïûº1‰Ç†ï Á x§Ú á ®œYâ
+µfDÅ‚Ü}øt ħ™ŽLÚ;;bmó<ÑqÈšçsÍJmì&×kâóœ¬5Ljà®°› ùE> «4éÍTÖ¹Ö݃í($ußow¡9èDé¿þå­%÷æe¤Öéa)½zÜ4 ÄC¦L!D”T! I~a<COÊ÷ŒÇ–ë¡^†–®9Ç:/¡¹*‡)¤¡™°/û
+ÉÒkÔ—@%$·T7/ƒq²Ý[•îøhXp8µC1×x{SŸjÔF÷ TÖ†GS‰œ•§Ô†rZ3™êÁ³úÖ^ÈúÒz8ÑzAuá¬ùf$!#9»ÙP³Æ™j
+ÙâT¯¶#Mx@ˆ‹¨ï9Ï'+~%À‘0Vdzg˜WM©–/÷}YêÀ’)¼KûN¹OƒÛÛ•«¾8Åi‚ÔT׆qKÍÿᤚ÷ìMö‹c›EaìK•;¶‘thz@o9Gw5³ê,r`E_}Æ”!N?.ÍN  U‹O.,ÔZEd‚ü`8£U¦ºs(Ë¢"ÌN—}þð‘Û-YÒ^«*Z´óTƒ.*·œŠÒ*É}vMÔAÆ°¼"ä'X# +wªIþè˜/ŠKÍÓ$L¥â~ÇÜ«‘Ž]ð÷ôT㻣˜MÒNu§‰Um–‹´¯Ö$¨·MÀNÉE¹òáÍ3¦Ö£1’@)ëºôæ<9ÇrG„±-Â*ò-¹cé@ X’3ó¬˜vœöÏ+¹Å½ ”ˆ
+±ÔxløáOŒ%i@£ÀëƒÌiA‡`l‰ÄÁ÷à¾ê-+J¢žÛI~ô¹¿¡€5†Ç‰TÐåŸöãQ'µqºá3˜*eì·à‰‹p‘¹–¼¿û~uÝpo,gé×Óš¸ÆWà,‹bÀÌA3mÛ[ õ¬AZêÙ£—}ÊAÃZZíD?ó þÌY>wH—&µ ±€È¡–Û!¨†¼Ó´'ük¥B+Ãs²šn„itÚ6<„üÁ~úAˆ9Õ³Áò`ØÚ%ÌððMUä’iÒÌ|EbáAùüFGh® ÍI
+ײæV gh®
+-'˜¨¸DmT[ºu²èUÞÉ‚³šÀ¢“ÉÖ„˜ µ|#¥ZrØ£Öà•Ú…ý>wÍ–‹¼.Mþ9«Çݶµ2©UN·v"„1iZ<qDiôj`=§¦2Š¬QkpR•|¼<›ãÖ.È•ÄÔ´Ç‹yp Øj2uq_Cg3ƒîs}XÕ¢¯¡ýã.J§"ÃUY[ðÝ ‚ï—ŸþÁ)BýÛ•á%Áa\T¢À “ºV-!à!ŠPBõUÀ·µ:žM»z–ëÀØN•©úÍÍy}à|–¨—Ïq]o30êø\µ ?¹lâ•ß~‘Ëaµ‡B“îì
+6¶v@jÞÊêǃðÉéB²Þ˜ g%"ëÿŒy`ñ,¿×Èõó.8àÁňeI#òf à-ñ…©f»CãYè`Š“0¦ûbk&[ÂS˜ÉHÏêj\ÈÉ<øEc]:»7fÁqaš¥™ãºy¾ø‚¾Sq®u× &F˜¤W"Ú^¶õnË}ÏšLÉñÀÙµV³Óñ$wʇZ9âý?¯÷Ý[„0×ZiÚ
+endstream endobj 692 0 obj <</Contents 693 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1498 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 693 0 obj <</Filter/FlateDecode/Length 4609>>stream
+H‰œWYoÛHþ+}"&‡Ý¼çÍv´‰â±ä‡L°`$Êá„–´$'ÿ~ë«j’•L00l7û¨ó«ëf¥þiÕ/¯—zlÕ/+ýß@iµÚªÜ‚Øð…\ʼnŸA¨Ò\û¡ µzRŽrWò -/z£µ2±Ÿ„¹ò²ØÏt¨VåÌVË9?˜­ÔÿT˜G>O3âÑs“ù:Q: âª)Õïj§nVSi@ÛD íõlžOE’VFˆŒï…ïjI,\mœXEÿCõÙð]íD~ þp\8Æõ´`_c»Vÿ†À¿‘ȱ1~’ "‡?”‚ž_ŸIçxÖ B?žÒ×ÆÏÿÒ"azQ|QýáNx™œ¤‰^ùßc%TÎYEùT)ÂͨRšÿŒ—ãÑËé /O8:9|ífÎÝüLêGìÀP}ÁÿŽlÜØi±¨ö;åêÐ!ëF½ûuOÇ|¯. 춥b”˜ÑÿVN#rŠt‚²mDÌ<‰ö$M iÝKÚ¸^äÝ„XµŠXgK¢ï]/‘#Uíè°êª¢®èX;mÑUt¬3Šoâ‰ê>Ñw©ø„œö€ÃrÝU_øˆÉƒWëÒ!ÏWjÒºØwž\‹ ¦àzÆ‘&„O~ :"_ÞYÒWªhÕø²]ó劘|6ùX”S+";K—˜lÇø㻹a¡e‹î½™Ÿ°ºr½pPûþºq½ÔQ÷eÍò¬OMÅÎOEƒ§ØUò´¯cB×+rI ŠE]î( qe7ž]ÒW´fު㵈±.ŽàL€¥ø]ÍÇÇѺÿ`çÜ“¡·êØ®`ÛÔ¥êXvU¶Ýª©9ÓWêþ_ô>pn[¡ã³X7Ž–œU³Z8ƒRó-Ä&Y#¢”C¼
+«r£*0ÚYxg½ïɳ7ïnažk„ïŠM1‡)Þ-CæßfK9êqm´S¶
+¦ËÛ³04“šæ‰I§°hIœ#±?ö Eޕ‚cß0ÞÄM¹.)¹Ó’ì¿Q3ò}á·&%+ŒÏ¢#üù•>ªO°É‚ñŠ|2À>%ÇQ~+'ǃÄc€Z¹ îAp(!N!fXš®lZ-Çuî õ4ûڊΗUñi7EW¨«ý–Å‘ýΛÄV8Ä–#ŠL°b‹`¯©$dνê¸[üÝr¬jg­Îj-‰Fëª%Cú\“¾¯¾DD¢œßrÜ- !sèqÿ¯8
+ß©¢Ss¸Ñƒ|‚{j;Ø4Ö0XIÙTTë;||C¾R¼Ï¶l'xPåÔ"áAø¡ R]¹ê·m #^{ðªQI¯gÜbº;ë
+)¸È¬/*îPm½i6Jû€z»„spçÕ«Å¥ •Õ„B"¦6þ¤°B·Xð]rí
+i v°^“jèìÃïÃþÜþŸ ×?ï€óLû³é5ÕÆ™¯³)l‡±"tCßÐþLº†3Á½Hû&IN’Wž&¤ ,1T$hh/TÜåü¼»@Ðwj{Û
+©ÞÒží. Š:÷Ã`ó*Öë}³©†Ö€{‰x+ŦD&
+bÊ©î™õª\ä5õ@=̦üì¢{›Ãx²åò²kÃy5~œ y´é½šñ¶S3@ä+æOÅôº§á³4å¯/3ÖøYj Kz¯þ:þõ0HÛÅ1ëÚ&bÎ%’:ËRqCÉ›ŒC•ìøt<‰ëe :tä)(ÕœD³)¥rÚHίP†I%‹©L^z6D·Ó!*¾0DÙ¶ |Ù
+~Â
+[xSnÇk »QrWV\®ØR”öCìQ¬¿‡‘A 'Ÿ·@TPÈøè|Z«8ñ´ÃQùÿç¼Zv9¢è¯ÔÒŽÆ­®ª~Î $Êb&‹Ž1¨ Û š¿Ï=çVu7¸ÉDÙØ.×ëÔ}s­CñY‰'ª¤LЀ
+ƒj²¹¼¨&W/ÔȸàîO1—kpùÙ¾‹œÃêî3æôXIÎ^Db U5JµÔn¥À 2^MÔE^5~ö¸ /2âÖðñ3ŒIjúÀVÈNõ~iÚ¼N,\ß“±V²éfo±‘oêg5ë_dv†KWZGÃZMÁ-¨Àô¤¶ 0‹ÒñQ·)~½î‘¸vú°¹B{Õ|¹… *bá’9íØÒ^ÅùN`}N¢ü!'£N©qœ“ÛKj»MCÁ¸Å¡?åLí$Ö—ŒÐ£UÅ‚ j±AMÊãtf¥Š7…VͤÒ#‡øówÒðúY/¥*¹Ó¾[~°·‰—¾bCÂTퟸ×k¤TJ…>ñ$ÒÞÆœN3&*¨æ`š‘n³+„Èóí’UÁ¢KˆÁN†±ÃìÍ´qÁâMu™p·Ý ^HDt.·`3Óy-A UáðJ0’÷bY°Àů¨4àó˜XšXì줣ÇÁ¥±(ZTFh¥¨ß–—<¨Y¯¹û' _¨Bv`Ü´kP\¾? i‹µhzzŒ” 9¡È°7½#U¡nr%‘ ³
+Ϩn«w’sL¤Æ©í³’i¤5d ŒÕŽíùfà X.ïYŽe“L”fˆ8hŠ™à¨2‰Ž0^°è/Õ–µE¸F‡S?©¤YÒ!ŸJN}§®YFÚSŠQåØ
+ mßGM”¹6óÁFÞwj
+“ÉÑ‘ÛŽ?<t~üƒ‘=zý•üºî*\:ìŽÆ£Ì†¼³RßÊ"-™wi§”ÖaK³3‰xW îW¶Vt'Tkª {™ª©>³™Sô FB˜åÝü–Qþü挄‚hÕhþ–„ýá1ë¸Iy¼^¢¹áê-¯XðÊE¸z{‡œh)Ö:r£Š@/%Žþæ„‹ÇèÛvoÕzyRˆÞmç³`½³;„è‹*¡ÐÛ=F’äÓ‚uU@ø==)»Š<3ËXDàøW©rÝlvMÛíOp¯i„”Ö»xú+Õ«5tRËË´Žƒ˜:F›¨«¹ðêEµ ªCšN‰lœ<¶ìýDœ.üÅöï–âøñéžï½? ù18OXspé…œíÀ©¶štCÝ+‰s5Ì‹<SŒè5t·ÈJ¥Tº-Ô\±S «—èQ«ÿæˆO”WªãòqÑ!¦RuR"2͹ †î§çjR‹4mÙT™í4¸øïkc’]J‰ º ¸$0ùÔkFç%
+úÕÿŸßpcì
+)[Et$xó²}»o(¾Ë^|WØ.Ù ¾N]9Aw»SHÈŒ†¡ê®YK|­7|€ëš)óCµ N(ôƒÂæÿ0
+endstream endobj 694 0 obj <</Contents 695 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 695 0 obj <</Filter/FlateDecode/Length 5710>>stream
+H‰¤WÛnÛHý•FžÈ…É°yù˜(JàEÖv,yça2XÐãh![RNà¿ß:§šÉr’™E„êKuuªS§ß.LÄ?Íyýa™»Ö¼^ØÿDÆšÅS†Q”Å\Pš,ó(J̤´aG¹YÜÏø‹ÿr‡Õ‘ìÀÔÒÄY˜'¥ Š,,lb+ãÍósn˜-ÌŸ&)ÓPŒO
+9%•íqÚÜØHŒ›¦6¿™óv1ö¶ã¶ƒî˜ï‡.ªIçc©¿ë¹‹¹áÛØËLjñbþ­¡o½4ŒÌgÏ·¹ûõ"Œ[|eþ‹ÂáOârÇa^ô.'?ôŽ»¼óµŸíÛ8,‘drâ ìÄAQúÙ—âMÚŸUþ½£ÔÊñQY4¾”äÍp¥Iù+(gÊ“g(q
+‡„C±@ÔtÀ#U<Þ£XÇpœJ?Û3ÍNeŸ¤Òþ+îlöUCn¹Ã¯½à“#ÝÄ)¨gµ•’¡
+ø•z{vY¯¿é^5q̶‘ŠŽ­˜hE[YG‚S¸>ÿ
+ù2—¨}0ËZDãBìöø `Ò °žxæòÊ€ct#˜3§¬‡Õ+Ý®ù€- á¡£Èá5T¸T¹âo¤oñŃLWLöª w¦îUëY·jW5ûõ²ó¤jÌ›k¹ÎÀ0ßœ… NÃ%íÏšæÚ^øD² Ìïp0¶à¿ÏþYGêÒÔîð~6a?‹¸ë÷PKàD EU^³XQYÖ!mÎèÍGœ{éÌw‘QGÏ‘ªÈ ?çꮦ‰Ž;šp,1¤[7G ‰×Çßb†3S‡0’ë_1àÉAJªûØÔ8M0ªÏ¡?MzR‰ú¦„ØIÌ
+VÇ5Š˜}†Ø3V¯n¹çKFP‚@dÄõÓ²^ù…fΫ;–Ý,\¿‘ætÑγU cp¨3ðæ8NåéÅè]ÙîPiòŠÕwSŠr“+=ù‚XÈ–7B(ëJŸAôîO_Ž]›RBZ§·0NB'ÕWc"¿|‰¿ßsìܽy‚|€
+iO”–šLXrf„¹Éׯ'3"Œ^}ÒñÄLéIfIÈXd3§?å+ôU‚ñRoKîÃÒ¬lG$Ó)0¢ü­HÏqâRÀ:ý|Üèá‘BeGIÌþ#¹¸éØsÕ;uv7ÊfÛpí+'N+ŠKþƒþ¸üåÕ²Ü8ráèaçÞ42WËð„fWÔ„ÖCB¼Á
+r
+õæÕÒ„7ÀŸð‹Ü×ÜÂÖžð
+ãÚ†Û+±ùÄåÎXT ‚D}­6 /¥áGñ*âUVô®TŒW@Ë9r¹ ººÓXøúÕüoîøIåÉÝiÒž±&èLÇ(tôxi¡A‰„«L,›Lw*ˆb$¨+yLµ…®­ÈcÊyüÈ<›ˆh÷rœ¤>ž‘-‚L3u¬;¿Õîà‰'ss¨$‡s±n êÎ̽…”¾²ÉÉËÒžä1…å$`çD
+ÇžÈ
+ ±g…Á‚ZÖEQVÚu„a5ñF
+S.âðÆÔ¦!Àd»Žp|[óïNÇ®ã0ˆ©|f­$JÿyÍ‹nN»nj°©°L¶0PEfBw¿¤ä°ËŸÖðœD¨fÓÀÙ²H·r•›I\=û5Ò«UVµ¥\¸QïÕ©„‡Ôšœ» ªtb®Â Rãñ”Âa°ìŠ¡Ìœ~> Ñ(ï‚áÚ„FÃü¢tì)të¸dMŸ4öÈ9†HÞîÍZï›Ô'ø©¤Ž?˜ÿvZ®&šƒ1|Æ8]³8¡§÷TŽK¶UòÀå
+<×]Ó£˜%ÜÑ%áþµ¬÷g:£­´Àsibä•ùf¶g½¸Ê´ª©”H«”‘BÑê„W}ÕºÕ•) ß@V/SE'Ã{ÏŒÁ6Ì|Må²çÈzÎu‰pŽìZ©ô
+EÊQé„4YÇ•Î%¾×ÖÄ€þ{ciÇ%ÿçTÉ«¨ï"ÅggA–iü¡-‰–=ý×¥-²4ã]a(%¬.&z‚m y¶#>
+“ 0—˜kèöÛ¡ißJ"Ù!Á׶5ó«¤ä4Ù#-vT„ED sãJV´AG[÷ˆ¶ ˆ5òu¤€´´a²B6‘Âj³Øÿãër-Ÿ¼ëª†Ï–ÉÑ´3«»^ئïüUDv²ÑM§¥Æ…©× íIrjc¨.I‚éëOì»RíÄü嫽f,M+ðîÿÕ3§9ðÂj#Ã;…7èqźæÄ:À'µª4况¿­ùÒMÙnÍæ½XÐurn;ÌH߯:#tÚÖu£ikþ¤Qï‘
+ŒÊ$("[wŒk¯Í‰Ûðà­è†rh×B¸¦>¿xŸ™¼Zºá(§*'ÖW ÈÉï-XvG0£[™;yŠEÁ0aeçȳo¦È[‰Îò°áAõ|žžrt¶°´ŒyfÂT”f膵BGåDƒTæë;=>ϸ¦cˆdÑ„
+­ ·,ÏvM
+=#NÂÞvhØyÏq駞…à¸!ù
+³•Gq&•÷7m€ê€xa½é®UîÅÁ’9+kTúñÄ ¿¸ÔN²–wáD¶NN[™HPUšÀÔ²úy9ÞN¡G
+ªœ2NýÌBY„åN~RÛ $ï(AOçʬyéF¼V,[m#{pØyú ^áPÅÑf¡6çaHGàúN"â@Ñ#nôõ˜\ïÉ&^Éà_qc̸9ÛÝÖöC›¤üîÕã%gZBt`_•ÐMÃcÛðØn«_¦U©¥E/óîöüVÏZ-h2XÛjSo…>vM?å»K* `7âÂ2–YŽô«‘ÔiY+ÛjCÅiTjÃõîJNÃ|bßhOM i«Ž‡Y]XUKÏÀÛŠ°$w¤¿úŽ-Ð¥Aœ« €½X)R$ÔÛ™
+²ÈƒÇåg®ò/w%`‹{@ŸTqšYʇ%A”›ÃÐ+ êú9ÖBðȾ÷YÄyߪ6—‹Œ
+endstream endobj 696 0 obj <</Contents 697 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 697 0 obj <</Filter/FlateDecode/Length 5162>>stream
+H‰œWÛnãFý•Æ>‘Àˆa7ïûæxµgb+›‡ÌbAK´¬„½”<“ùû­sªy‘­qa©Õ—êêªS§ª¾_™˜ýÖ|÷Ãml¶óÝÊþ76Ö¬îMÅq渡2Yåqœ˜¢²QââܬM`ÂÕo<aõD,'°´6.‹ò¤2‹2‹J›˜ÕÆËÕí,Wæ&©ÒH„¥Ü’ÊqWF676á¦oÌ/fo¾_͵l—Böb¸æó©Š*ÒëèbÕñW½wu+W„Ö™I-¾óoˆB¤Ql>¡Í.lcÞb”…ÿYý
+ÿ$*gÎEy9ªœ¼©-=5 O¿Ð.Xxƒ¨ül.ߺ¨úS‹$Å™‹²3ÅéÇpv—«D›t¼«úkW©”—Wevþ(ÁÍô¤¢ú/g“—‹W^žqrròCX>ÀÏòü”LÌ'|7pdfÁƒ]·7¡M±n:¸?67²Ì}mScöТÄMþ÷zº™žzRÍRÕ¬ò,W5aÏQÓÜÉ«M÷¢h.Òàhê¶oê\›_B¦ùCŸv}³ùš;7æø _¹ YpºÀÂ<À\ݶïÌ.\TÁ}håðCÝ|õ,_ÜÈõí^·óÆ[,¯;ÞŒßøoÖ öÁ"/u@Š¹kN7øu¬ïT”TUiĈÓõ¦­M/»×01_ù:u—ôRÂLÀ;CkǃU]«Æfa#› þ!ÖÛíñ¨ãNîÁƒEêƒLÈ‹q×3.IÜ4âHqâ4ì±Öa´n6øzgE¬PŸC—òÁ:ÏmØÂ5'·ø![Äu¢®¹¹æU—zãgÀe'ó“Vð >©Ä M¦Ÿ|Ê'ÙÈÛÛgÞx¯ ñ[=h€0™@HFŒa¨$’<Ãx#†º « ~>ã¹9xÝ^ÆدÁÕòi¢­œ‹ ‰ùrAÓvëúdT÷$$ãÕ ÷à)U 'Ù
+[2chQu› ª[&$—Dòïo¶1Ìä¬"È!t
+ „j[×¹@Ø´¢ö«“Oýte5^Ic9É°n¸²ˆ{‰vïö#æ›#Õ¿¦`¢WÞ3ë"±QQ'.}Ï(+_ DÖëbþN„øxHue²˜¿Ÿ›rMDÃÄÄf8šÎó™nš{õl
+ÙÄâš$¸
+Žz"t‹Öj¿Œ ‰Î1eL˜–¤Iµ±ÈÓÚ[=ÝbÜz{ÈÞrrSFäVÞU"áh6Ù󤞺aZCiC…Æd:æÒÊe2`ÖWR¬
+æă'ˆ<3÷ÚÓåò^+êŒkdù©(FFV($Q%ðö×MÅ€IúÆAJtm6˜·w1oÌݬy]æØ$Ó‘0çI>ò4/âæåF>–ž„”ü+ë†ÉÃiµúV2‹#çF“"™=ƒdáŠ;rNÏ´z/0@RòµB y¶Þ#ïÁYÔÚr´§UÐæòDÕÕR3Ï'mZ\À
+±œ’Ü·T(ßZ•œä‰Å_­JÊóϜĩK­¤òS²©ZÂpxdÁGÅïüS "ùÆW¿réê·Wt•~ÂêAܘn¼Yz?ÊÞ3¶/ÁîðÞŠ+W õ÷×Æoüéçå­.áÚÊ÷f‡CÍoß­9êžkG‡þLâÈo¼kgUOMvoŸAåì¿ u¸¦[(BÛEÞWCºg«ˆZµ‹þþ¤¾ÌƒöÓØ4ò¸*ct3ηژjµô(«¡4·7¼þ6b!ôfá!ee1ï™~y •)?Þu€g ¡¤‹„Ë-<[k$“ó3亃†j%¹oSU0Ú9»±.ŒŸ²¬œºÑ"xèئíÍr¿îeôåÉçì¢ÝíwLJÇo Né~b7/qØÒM!ºQÊq¦¤Õ³<ó²\™ŒÕÂÇj)OA´ ‰t×J Z`Ï–D‹ÅÉUÙä*§®ry”•ÅI(’…ÿ.YHhW 튡]1´ QV;Ž%¶‹¯n ±˜9×Ú(-Ë3º©‘À…¿æíáO?4^Þ ÚÃmγÜd:›ú‹ ›O@ׇ¨î*ƒ0ú^PZ1c×3kgLÀ8œƒÁP`˜è`
+Ü+ W´c²sÁ|Óœ#€›æÀÏòƒT!à#¶'»m©Û!ô óÜ«;|@ÕÓ±b/J_$ÉèA·–Ì"éŽþÿ‚1‡FoØpnG¢Ýoý–š—àãwÐ&jpœK!qùxu.}!#Ãû„+\Ç¥k–éÿ¼ûpòG œŸe{á…ï«%ué¹]r"µ(nî¢1¥%N#M:cÅ«¶'›­9’𯗧 æLÕœÈ ¬tG} °¸¦[Ÿ”Q¢Wa¡åÆ­§ûTéþÀ½"êkµ¢Í£j䳩Ám1bQö1$ïÔœ96=hMà0î<„ƒ'¤NÄÌnÓüI‘¢ÆI¬2Ó?ÓŒD{ÀH_̇þœQ€€éÈ=gÙâéΙíÎŲöf¬"\!Í€ïñPp¡`±H¥³‘Žp
+¹@ÜàËŒ·Þ ÆnIýÖýºâ…úå9í‡-çØv„\œk±˜Ù91ãö 
+Žybm*6#—z§VƒO;ÏĘ&³EX’5„¤÷,“/6ì V\"¥£,ò›ÇÂ(#È9ßi V?mOÈþ%¿Sv ã…PD<øÖÑ1£_K7k6³-uh³È,‡ÑÕ'Dl•>¥ÚÌNÈsÞžx†,=Eئ>š¶©±íhØ 5ÿ§½jšÛ6bè_áQîH-¿Õ[›¸M3NÆrÚCÓM±ZÔд“üûØåR¦lÏ´=ئÉ],À{x © ´Ä~§Sc*SEÑ8l h"æA+’m€ïl=sÈSÖ_Éà†ÔMM0ó7 šÄM>fñfj).©£a†µÒU[P7ÕÎQtÎ+EdzAߢxoG?â—…ÞÀüMQ~A̤„Þ½Zaä UØ/*ÈãÙæÝG¬uft¤ã¬ß«¦g·2&1U+Wnî€C+ÐsLé­åœ¿Db©W
+Ö²»œ’áÒž„pEŠÇRK\ؘ‹ú¯>O–4b÷+wTapÏ¢ô[î=K¼{Ž†M¼³™c•]|ц )öÓ&W“³{ñÓJ¯ôR®ú#–† »ÐøÍmAûó8BÒâ™p=ÙGzÊmJˆ5„\Wqq(û†4N\*$šz
+uJú S]˜¨öC§/>TàÑ„ƒ™Øˆ°cápùÓ"àã¹ôŽ¬1v µ›IÚª:S­Å>ïÎ)­úÆzº©Ëº·½ÔhÆl—*ÛUÂ_‚òÆl—N°˜‚\®iFrî-pytrÌ"cQ)"µQOп™ çˆþ¹4µ8§piñ:—Šm‰N28Ý®ú¬„ø©n7\ïÀ­n÷ÂÖzÅV-%ïÑJsHú\ƒ°yëˆ
+´–KWß_9 1aÿQY¯©ª‡Ë¡Ž®„ÿx
+§¬Hj Ï<’z|w†9bxoC/ÑÊCç; hW& …Ph!ƒ‘sŽË[¼½p”I«”‘W‚ò4œPíB‚hÐ>ª‘¶/i¤ ö$–ر#ª™Ô²xž¡&Ÿë(`[$d냱d`W;íH ÍÉõlYJíZí¨ì÷OTàÍCìEÖSG}Δ(¥\Ö#{5o?î8«Äå=>ÑqÐ@ƒ"ýÌI9ŠTb#Åú&C)cšˆ%Q óÓxî›íEPVV2Bj~†êQÙªÇ"²¶Nâ‰tåf:g/:V»ï‚¡w§Ñ‘§œÐ¹AÓõR-14T—•‹¹¸¨mr8¯åÞ£
+áÑäùaS ¼šùˆ?ÁÀëW3pä3pþ2Ç“  ”¬›£úù?úgXÊ2mà(
+UË6§`%•/µÞ
+“O…Å— ñ̵©©Ž„¥Ø>Ñšxãóí‰>¦~p´  }B7ã­”x×ú.ÏíNs&$½cd{p5®ùÐÂãDZø¹$*fšù3Ûó‰$ þ%jxàÞÜçÞhàÞ{Z@óè×ä R|@õP–u?í­K›3;ËÞêÞëšÉÄU†²qÒO¸a¬sîT•ÅÇ=e¼@}2psáZOóø)ü“ŒæÙ°<-;O+øÍs¼cQb%»ª¬w")i2¹ç x"݊Éi4ÎØ…õŒúzºL"7^óí9™&z¨z>äêòÄAç,ضt)}¢/øzÍoŠý=«è‚Ÿ«=6óÇEM¿öUçzåñäêòÍ®–ë$´¾m8<˜VÏÜ -æ<€»ŠÆ<zr¨ŒÒåŠ û\ Ò2ì¡Îk‚@%ÓñT5â-cyk‘ê`qTb(Èg¶!'{&‡áN$âk2FQÉò—3Ju¹ù¿3ÅÎKV_9_Ü£
+gMwÒcM¬’Ê oÏ„ºEH‰»½ºÔnB;ú<k\r&w™'±ÏuÄqë#ŠKŠK èÜ®*«úQSÁ£Kò,±E€É
+”.Ã$€Ì(ý?o›‡³ë¿Ÿ°ë+
+yuÁM«~cbPvF15 ØEi<’Š‡WðÑ,ó,“™6¡Œ¯ùÈ•<IJS!Ìdfæ®;ò%_æÁUÕ´
+Ê´Ðrçév•˜°ƒö‘FPÞ¾a³0ÈóÊí^¬ŠÄd}Jö˜·6dž×Ò´HxײNÕµ;̦üãùøB¯”Ë£Š µð#(¾D¨Ô1v…œ[06Û®®öˆ)¥’gšL\½Õån¸jÄï%ü¯Î¯ƒ
+endstream endobj 698 0 obj <</Contents 699 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 699 0 obj <</Filter/FlateDecode/Length 2651>>stream
+H‰¬WÛnÛHý•Æ<‘ƒÃn6›ä¼%Š6ð kg-eóY,™–5%­DÇ“¿ß:UÍ&%ËNf±0d^úR§«êœ*¾™«ŒÿöKõË»Y¦–õË\ÿ;SZÍoUfYaxB­
+—º,ËUYë47™Só{©xþ¯Ð²"£Z(S¤.¯URi¥s5¿QÑt>»àÓ¹úÊk›ÒæeEV,-7UªÒm®ö­ú¤6êÍ|Œ{‹½“ÞÌã1DÙÒc4™`ü,vç32kÊj\sõOy‘Æ:²i¦~bí"':Êð^㮈ÿ5ÿ €ÿA cRWÈù‹hôؼú]”x‡ÈþÅxmÒú»ÉË3†Š3†2û{<²ejBcƒ­ú3%»œš*ÌøP”7ÁŒËSm¾gGsqŒÍ“Ópqþ..£e:¼µ¦ð"§u–£dÓŽ®ß=oÈ5ý‡ìøˆúë<j‘;ûØEܬ¶…·P‹+2.S×q!óÖmƒ·‡Vi\Í
+¨ïc ¤Æôò5ÄU ]€PW—>¶VæS|+?®îc££–Ä»Œø_Èøp,ÂáD†OD5§$ÚdrÕm㤠Ë9´Ulp)ø‘Cüšý¼¡;¼v)¼rÑCqÃãퟘ¿xÀ‹ñûn/‚.éÅÒoñ{%œ
+¸M²5ñ˜)ÛtQ
+ð}»hW_©´äô›tX'E§oÀÁL“"¡ßÒª ˜»%ÿôî86ßb]G; ePŠ€ëRæ½|^¾ãy3¤Ô5»o¦Võ;íãT­0ñ+ýx®äÛv<ŸµÂ3ÏšòfÄÄ+æƒ?ÎF§ŒäÜ«ØDç‚” 'Å=ší²ÏÔ—Ái!º 2>>po‡ÀQŠÞ¨vÕ1öêØã(ð½‹8©Å¤LQ9Gà€|½¨®ÝóÊfѪí^5 ˜j6ao³[·{É&tâ²ÅÓ‡¼:ºÜóúçù²ÝA?Лܢq ˆ ˜B Bw0¤.貎*Â
+Áª•’ª ~FìjIÅŠ¼
+ÀtÚ·$šMoR ÉÈàm¼]öd`øÜ‚zÆê4S[vÒOìˆDž©‚¶ìN¤c}íŸûlå`­ÄOX6‚E¯kÍY ÄÉfqÉþ!9A¬Ü`g ÛäTIªÞÍÙ)gÉ9 ü:êßw{ðê¸ô2@Î>@~9Å0ôá\~I´ê“hmF)•r¢\W;qµ€öàŸ Þ|\vÐLŽÿLY²ÿoj_x±öà[uŸåÄðW}
+]B­Û®¥u»h©1meRm'‡sÔ¿=8‘{Ÿù_õÀ$xõ\Ú#®ˆ–ÿ
+åéÙ’!s… /­ î=©¹$ô¯ÿ¡‡°è–êi ñÃâèOLmÌ«Q‡+z¯w„‚‡Ñm·eë6HwùW¥yEžZ0Ðæ &Œ¶8«¼|ûžqß÷H}ÃZByµžam¨TÖ¼ÌÚ<×øÔ±Ö‚µ0ÉlM¶û›Õ¦ñtUøËíàüGßJáT³ÕjNøVˆ,qÏ›Vˆø”¡I¯_$¸ÎÒÊöè>IÄŠ«“âªå™‰xø†W£å¢)o‰¨‹Ní0Ä]¬LBïíH_ýË {ÇChhohWØbÕ­šNæËØ7äÛ‘mU{"ª“Wߟ× ±âiÈC2šôVä„Cù
+”ɘ2óŸÁ~‘*"$×j/™¥°wÁ5´
+©¹=iB÷ss$«?iÜÖˆ3®vUYr^RI«]m…7Å83ÞÔ¡¶l7Têªä¹ßá¤\-†ïSÝTS½LM“Ô2˜H5˜õ®ÝP[3KÏ•œê%Bª@&Àž³²H~íŽ(ÁOœo‡á[þúìΦ#²#éKe±Êd)•?Î?ÊÿÑÇÅ“ší†~ìfµ`†lÕi¥Êbô1¹ãš¶¯Pœ¾Ô'—TH®~ĈÓΫoW‡%Ï6‰G<þ;ù “Ífƒy;UR¥'w¡´àoÝ󬻽Ù/‚} ûŸ£/pAâ‹uAɱˆôLm¿RKê îÀFAÅù«••|±Ýlø,´TüMÆ3ðØyÅ?ê ÈXßÔ~œhÀúVpÂ+V/U|Tö™n¨Šø0(+‚S‚Æb»_µxÝ!]o&3Â¥ŸÞñ×Ü» Ü”á
+˜é\ýW€
+endstream endobj 700 0 obj <</Contents 701 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 701 0 obj <</Filter/FlateDecode/Length 3985>>stream
+H‰´WÛrÛFý•©< Râd.À`à7›R¥lÉ+1›%µ‘ Ì,E2
+1 ™
+ƉÙBÈ‹Ùí%¸˜‰?„+REÂó@ZR:nƒ2^MÂE]‰_ÄF¼™­l›Bö¤SóéÐÄ(²µÑêhã]Ô;»%‰±2©Á¯ÿŒ*12UZü*ã¥M&Fj쬲ä·ÙO0ødrf­ò¡7Ùý¥µ0ô@>}dœ´€DùÙX¾±ªø"".?¡(;¡H§¿&#]¶ kÒ^Wñ¿©ŠRŽUenìñfp)/¾&ÊÙåüY”ÇD‚ì~H‚|ÿq&÷S ñ[!u’É‹Õv#ã$¡›vá×â†^ówëªÄnS f‰âßÚi£Ñ:6Ԩ̹vâQšl(¯c³026¨BÙ¤âöi>¯šfù´&›2äõ®ªKz³O&©\‘K°¶5áÒÌ’‰è™È­!ÑFÌÛ¾ùÀ£!3Äïô÷“àm¼žd¹2V¬Å-‡ÄQ(ô¦ šŠ!òÐ:eC’çIXª=>ÉSÐÒˆ‰MUèGƒGtðö4FŽ1Ò U”Áit‚Ö&O… ”³YP¤eÐôªeP|M/½
+ü¨d%Ë ôAxŸ+CÓTåž0hí|ó- Z…‚œÞ"`3‡C½³9çâõŽ%×(2ðØ(»È\¬=¥· N¥iëq'f%Ñ/•õÿTzâ€ÑRÜ\M;Ä£=ä ù9 1ÄšŒ|§#æ81ðÁë– Öå8Æ*=†ª“I„#™>xÒz,Óø
+Ú—üñÞT{Ô²6Dx]®YåZ¬6 ”àa¿*÷Uw:F«Z·* 6ŠH‡œŠLSH¶n]ñ‡$åÈØyµˆ¡h7+1ò¾AT©Ñë þ€’R t˜Œj@A4 æT9ÚZ‡©¼¾ŠÈ3ÿ]Ï?
+X æ›Ú[ ,‚½•EÎ4—– 0¢!*qü÷é®ê%Y{±%Í°ÙϪêÎ|ȯVþ¶ðИ§÷E@–¦2í*œÈ! ×Fþëñô³?6Æþ‘þ}!+¿kÀcô]¡0Ú÷‡#ýëŠM‘È} ãì]ˆ× Û{z!{H6Yé¼û‹j¿Ô±ŒC2âKZxª¼‚+;#ýU²U&4Úñ)È‹?¸øp÷sÁf"÷&ð¡XzÖ¿äÙLV¼Ï³Õ}Æúeá2.åîŽ ‹ø¸Óµ¦Æ-mJLjî #Øðð›ùõá"+åER*Ÿ“îש˜ŸW§fQ1Ñ¿ƒ©
+H†?I+xwÒcíµ ´G*P"Öý~%^8 æ“Ëöo®:òj&ç]Å|gâlÒï_Èê©+õ2g8¯–ËÙîQAMÆPñòr ªÏ’5I
+éímÎ),Â>OsÑùù,Å“ít5jw1ž‰:Ü5Ƕªemër{ÐS៼_!˨ êïÝQ(rPø¾Éb¥§±ìÞ¤&ÛT3O§"zƒÜz©ÀFÛhyæš s‡…ŽÊK#½l$²óuÀ›çOÕ lNEž8ò:¢}M”ÕYì¶ôC)N_¯ÆÛYÿ© „àd àN¾68#óíupal¿ «äµ@–@ ˜s¡V åÿ's;w(Rs=±‹5fI¶qcÒj†1ež[0=žÔKlˆ¡È÷C³D‰~Nëå@5:¾¢Ç‚Ùåq;Ü?Àt ±/w|õ/P è›Î§ËPAL+ÄÛÊÃ;¤®çúIÇp5\JMóÔ42¨«IE„ñøTHÄQNegãM=\-x
+
+i¤¿Ñ°ÐiˆLG¿ ==)dïZVÇibH‡•CKœ¿¯¹˜é™ÜWÅC\/d&Y1( ±¢(!“E'³¸Ç£<ŸÝ4
+n·æK¨§Z€?gA_£“‰,spwéá °JdC¨ýögô¿
+endstream endobj 702 0 obj <</Contents 703 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 703 0 obj <</Filter/FlateDecode/Length 3425>>stream
+H‰¤WÛrÛ8ý<‚)“C€ HΛ#+)O<vVV6™©-Z¢MÉ’V”7•¿ß> €¤dÙNf*‹$€¾ž>Ýx;)ÿÛ-Ä/ïoS±hÅ/SõŸT(1½U’¦¹æ •ÈmbÓ4E¥’L§VL„Ñô/>¡Ü‰”N`i&tžØ¬q™'¥ÊÄt.äxz{ÉÆSñ_‘U&!áEIZŒšŽ¡R’-vø,ÖâíthL
+©9 Þ$z“ Å+ù©1Š6Ù^ tþ”'àX‹8PQ$iÙ©P)¹þ¢¯+(Šñ¨èã·cx¤ó‹œÞ
+¥#•Éœvà7ÿv’HI“¤â)+u+™â»ÂSý9ý-›kØÞØìç‚áN##GâÁÐIõj0²â„¢ü„¢Ôü t銬1®êï©rRŽUåfèa¿w©¨õz‚ó.Áiñ$ÁÃbêó›½Jùñ£ <“û&RZRéü¿ ¹‹rÙâa¹Y N¯v»þTLh™÷­š_ÛF(üê>ÿÞNíìtÖ1Ó¤* "Á=5Eņòsol^Œ-Š€&ƒÅíãlÖ´íýãJDU¥äͶÙÕ´°â\.éÖz¨îKÅ
+…æ|«(Ä1•€ñŽMIj.¿Â…X®£ØÊå~Yï›VPóPʯn±@œbà†%b™ãç1òq‡÷ï‘¢fÔ6lìšy—“º WQ‹É˜u^EŒcrwÅ…<š5—ws-úï×~_.Ç8&èUËŠéÑèÆ.L5k]°¹{¶Rìñ,
+Rd"z——m¤ªcQN
+¿ck½Z¹
+Ñ¿øÈâ
+J¿ƒðÄÆáhƒïRD²¼
+`¢<÷Øâ
+ÛB2ŸÀÎ¥6"¶™ãÛ#‡f‡óß""
+ž·n Àì„ã‰õ_óÕ‘®uÐê\Ôwµ{Ú8EÝAžDNšl@ÈÝ['ÜÐTbê#ðÙ,PÜQϸ¼÷iG×ân„ɸpLÉù¶]7·œÄU¾a· °†]Öápʹ„†§•7¿ÿΰ<¿¾xÚN;b/9ëŠÙr×(’"S¡öÐ -@wX¬:,êÐïŽi”ÇPåéŒ×qgC›¬0/vM¤r:›ç›[ìí6Ž%üs}gÉtÃSÿü,\ëATÈ®M ‚¯\ð[†…/©å¢cðÝ`øåôÐãœ9 ÜQo¼œ2D1Ib.¹8Ù}ùSH2ˆAÑÅ€16}ã°5vƒ‹öˆO\ìà€½¯žý>ºÁœöðï˜ï¥}ïºÕË«O¼ÿ…ñâ˜Ùr3ùÎ:¾«ûýŒ±BÓAí‡Ã~æÈNÜnF5nu ¾×.„t½^'yù ¹Þ+!íàžÉõ^örÿ-_Å$+‡ãlÃWÁ¥¯ +ýÅ Âœ,|\¸Æaûø>ê¢A¡`ŽîˆÕÝ5öGNúæªCs­JË7Ås[EÁLݳÈmb)Ä"ËŠÄ” “
+oI-8ÉPíŸÖí㌨½ÙÞ?®8OUIøÚ’ßhPžN5õ´#*ÍDU%•Í-€Ç^¿²If1™@ÿ5_ötWÄ/ÿYÑUöŽš„kçØËØ"3ö·Ð/û«Këɳó×À±ó»õf÷P¯œ‡£Íz¾¤¬"”ö¹¨­IŠîb5¯äTg&1iPÈ>æîZç|‹7»ùrÍ`£~+ð÷I&©`‚ FWÚ~ >­À¬KÐ8ÝëÆ͉§cÒ©Í‹1QY¢lH±bÙuÜAIä¡$r¾äºŠp^_yW¹«ˆ<´jOþ"ÊáåÖ
+R(zN µîTwmu)Š´»¹âÔŽh¸n;KÚÁͶ·ÉÍ©|v`4?±ƒ4²Ž¯(‚7~xˆyBÕLÇ9¨Û€ºû¥»Øêòéœ÷‘ ˜;Ý#‹š<#ô]¿…?ÁŒOžŠóžôûñ#¤ñ0äÿ¯š7a(øW|L»
+8W«ª—^Øžº=°„l‘"X#¥ÿ¾ofÀu’vÕCcƒí÷5oæ#´J…VýF Q­u¿b!Äç
+³u7nÀƒðúqp
+Ž!Ž…µHè
+ꛂü;½¶E•6.yL“×rŠ2®å1h$yfv'0Þˆþ×Ê™c-Ý ¡|‹É B„ÉMJ0Bh·©ûéhD$âû¥mìÊ!5Ù¦€ÔèèÇ~þÜöíXŸ…¹Ã[ºþ/84áÁáóœ`ìïŒ!D E X«¨<+7ÃÉ~ë/¶ä¶ M«{6ñ˜˜ÙGÛ»‰,hˆò,ÔɆÐcÖyrbì@I
+×ÀƈýùѼ6ߘWÔ}™í•‹kÈý¼E¦½ø)С¿0ÌíÃœD¦²ÖlõmóéºbvÁ’TJD¦,PJ{†Å£A½¨°*wx¼„O·Î(~^Ö*lÀ$Ë­©‰'˜,+A|Y¿D¤v+¯—dS3ê•&;,¼é†QŸ.fRÇÁ™X<2lÿœ?—ÓéÁÿÌw¯V¨ÚŠ~UNT
+endstream endobj 704 0 obj <</Contents 705 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 705 0 obj <</Filter/FlateDecode/Length 3673>>stream
+H‰¤WkoÛÆý+û‘,B–Ü'Ùû©±]#E¡8–|o¤¸eÚQ+K%'ñ¿ïœ™åCŠœ>‚ Ö’Üç93³/gªàíúþ|Z¨»­ú~Vþ¿P¥šÝª:/
+§yC­œÏ}Qê27ºðjv¯•Î~祜(è>-”v¹7µÊ*—W¥Q³•œÍ¦¯øÀÙL}P¦¶9 i±t\WyéUYpÕ6êj­^ÎÆÖ@¶¶uj>í›("£ºߊÞÙ”T¤¥Nœ²%~ú¯¼ÈÓ2±y¡Þ%iéfeRà}‰•K›ý ƒßÉNëÜW½Éæ«ÖÂÐý
+õßɲ²¾ÈòˆC’ÍyZ%È3¹o9F}ÄoƒD¶©K¶X,7k•–&¡èÚ.ý…º¤Ï¼oÕÌñvÛ(F‰òíÔb§XWÃÐ"¯«PÂÎ’pdC͆òz0ÖU#c êd;¬¦‹E³ÝÞ>®TZ×eòú¡içôa—f.YÒÖF„ª—礰Ôê“R¦ÒЬɋªT™)éWeeÈ-‚;=f²“ÙZÚbX±ö•W†ì¬;,,&ôd*ŸUÐ1.t>¯Xß-e»iÊøkl´¹¦‹{~/¦g^CÊŠ,|C"‹ÜVÊûBHå
+/ m‡ü‘-|8ô·™’…¼ Þ
+v…¼Ö´ºýî8¾½|%…çÄhŠZà¢[ ‚wŸ^NˆNE2U'¯Ó¬N&3z4ÉYJï~•µºä§7i¦‹äêl:ë€þEH}ÐyðâžÉõ;ýÿYE¿JãTâ]-Ð’ÌõQ@8숎Fà9g+ž
+™/þ™³SZ”Ʌ옞±·‡£rW{ç¥ÜÁLSyòZÉ!çǽ—Ó¤uLSAä¢óUÀ¢&ì”Ô{kôÞ·ÉORP¨ÂÝaõˆ?mJÅQ¡ÏQ¡û!Í<Õ#öÄ%Ó”L>Ù`×vøÚðÎϼVp+°ˆ9ïØÞò–V=t¢ùô‚Ï47ûJsů§Ã–¸q+røÃ
+æ*ÃBE;gØ—ÁÀ\¢ÜÕŒËtÙŇQœU´"­mŒÎŒ~Ÿ’êd¢–kZ-wËù*m²U;Îlx€ú6Í,Ôûdç`q|Ù¨k<?¥%Õ÷­€¼›Îê’ïè¿š÷_Õ”„>4!¥YH^OĬ³_å— ô†iÂ÷iY#"Ô«¶"ù…Ú±a{Fo7{F.jy¤ÙNNr5€`Àt (CË÷ ã(€Wé¨?ŸR
+±ˆvŸÄc#—„²¶•XûD:M)TÌ ~ìi4
+dO¥éEšUDµéY¤R˜>ñjõ9‡L@yǶ7ÑîVvGPs⩪ Õ¦‹¨Üº¬—(»”l ºA½O^
+þÎeå2’A"¯N¯PÆ
+d£âÖhÂùùt2`'ÁN_ ¬Ï]ðbz¸ô5±¬.ŽJ¢é+#²rõ‹!Æ1bb°6q@ŒcĸçsX4ÆÙ=ÄØqѨ{ë©_ç¡
+Ï Tkö
+Fpâž/ÕAÁhç7Ë4Ü]ÓÞ"óȘ¼REz9‹Q±à¾*e…•µêò’ÓB¯Þ¥\ÏÜ™Œ+L\]nHã-T–á7FÁæVÀð
+]ÉzW˜x¥¦§WïRkæ».ªz4á¡çƹ7}äèºi†ÉŒ/ ÝØĵo¸v\ú%ÏÙE7Ÿ!yl|â ƒ]6îÉåÕsã~WK©Æä!ôÓú)Iû ™¤(┩ ¼ºâéÉ¢¡¹Y/¢hF± @£°qD'œ„{0⚗̇Tuxž®ï§6öSï¿ÊŽÓNÿ’Ed‡ÿv„z`‡y†…°£vÏ°#áE­zŸÒ Ð>D´h}œ/ÂWyáÇw\C8Ñ_ùâ%¢c_ɚŎîìϾã«ÝSžøžÁAÓCGzøHÿíô L™²ƒà¬ø~ˆ´qcùGüÐ?Ì?@|hi‡7UŸUùåM•K
+ß¹¨p¬—¼DmÁ“¯y±ñÕ”ît‹æfyþÐã#JWO²}2¥;'ý¾î#×Ì¡*s€ßuÝsýLÅœ}í"ªˆ¬
+Êpsé–bkhš®ÁÙ¸þÉÁ¨y¢ŽS Ô[\q ²t=“Ê*Ò‘/ʖ뽑BŸ1ûÄÔ‰gj«+„~œXek6Éöÿ
+Å-å)lq¿ · þ¥/¬¦ÝÍdpæup(í«˜kÕS8c ·Mëká T)6's?yX?˜„‹U©9b>TÉ£ Ï퇃‘G‰ÙE\ü)»ÀoB/Š©kœR…Ÿ’ÿhß…åi²½ð;÷Ãò€D!]Ö‚êÍÐmø“óÕv øž#Çá5
+ìC­Îv p*¢Øob†¶ÿDÛV2ðzqG]Íx3zædHE«NɘhÅÜþ¶Â
+endstream endobj 706 0 obj <</Contents 707 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 707 0 obj <</Filter/FlateDecode/Length 3834>>stream
+H‰œWksÓJý+ýQºëjFïýH±µ„\Û\>ÀÖ–b+A»Ž$™À¿¿}ºGÃ¥¶(œ‘4ÓÏÓ§{^¬)”í=ý~µ
+é¾£ß×æ?!ZßQ„abeCAI¤aQV˜ ²aJëòÈ_ÿWN=ò |ÚM‚4*h‘'An"ZoÉ{¹^½–/×ô™¢"Xx–³–˜Û<0)™…S[Ñ{ÚÓ‹õÜȶ1d/5OÏMT‘ÎFªTïzÅ*|c½„bƒ¿ý©/ßxqÒGÏ7©gý…ñB¼7X%þ¿×ÿ„Á°É‰µAš&G?µ†> œ>²Î[¸€¨üd.ßØ øÛˆDÙ EÉ EaüÑŸé²[ºŠÿO•J9V•¤s§7“KYñ+YN¦,gßeyÄ)ÉÑ•Ÿ{77È3»K#ú‚¿Ùú‰×aQ7{òMäqtã!ý!-ù³ìÛU%Þv Jì”g§U;Õº††A‘gvÆQœb¨¬'c“|f,CÝ– ¦Õa³©ºîî°#¿(Œ÷ö±jKþÐû‹Ä«yk ZªË+Vh,=E¹…Ž,Ž‚07´ˆ ÿ¥…É‚Á]29U“ÅZÞž¹°bæ)Elg.Øa.¡×.¡ú™2ëÒ™ŸrÑwÇÙ6*¢4 ,6Æå›yÿ ¦/R );¶ðqNijQ%
+溗Ýâù›o˜.;
+‘ð|ð^˜ž²6r²ÏÕ˜P1Þ¦†ÉøP+zÀ½Ç†Nóe¤iê/MwºE,âŒÛE62xý2
+×¹GS àMï¥αäF
+Øιs@ÞˆV>~1Ò&—zÛw#|¥³õŠq•ÙrF& ÍFŒ04 5XRœ$ØQ’ ÇÈß
+ñ-÷dy÷´"iâB¯nÏÇ£8·:¼%‰™Æ£€†ò˜‚f¼éØŸßt;]ÜM'tßî›ö¡Ä='çîÔì·5ƒÔ˜{ûî»Q#TnIOwƒÊ¸Àã òZF˜žÊÇqÌÙ1ÝÊ¢
+¤SÚìLÛŒ8´¼–ZÄêcòL!ÏâéÜÇhàܳî’ñÆbÚɼ¯ 7ÂJ'ÁöÉ—ñ¯ÞßÓ]Û<(J›C»©—$ 4koa6$·¸Ÿ%!æ±ÜعAa\U{¾_ž¸«MÑ•ÿ4â|yÊÇ
+ò,ÆsA']$îDJ Ün7F¹¯¬J7o4!cR%Ÿ82å´l5u•DE÷‘DVÑÊ#allªÖ]r9²Åœ'AE¸!ªó®u4ô’úñ€qªÙßK7‚ù³›b{M¶õ˜|{ïG 27`ŒN¨œÛo*s—*î#[õ®¯èª€¼j2àÌY³ß¹ÜE^; Öc4¿¨7LeO»J÷‹(ªêIkËóç Hl9²º|ÇiõÑWlÉÃÿÏpJ ±ùÕ‹òpЊ)0¼³G-“%VwÃ-èfÌÔ»ò–9}„²ëú3´œ¨þ-Ó×Ù­cÞÅŋχjšv“±#Å‚ê8Èr3 ZfU¾*
+¡¢ ßV"’oXP³ïOxyÂDã-ãaHmÝeK™Vë/1¹Í>ëB‘k7® e½ãH=Fìùñ€üÆõ©HûÔl•ntéžäátmP½Ÿ˜r¸år“M· *ç—ðê`Ôw5)0þnÐZÌïŒ<LþÅwùõ¦DQü«Ì#T²…glcwŸR’¬ºZÁXµRŸ²@²Y‘ІDýú{ι㱡¨€=3wîÜ?¿Süšc
+nëÉ=‰c<“fõ¶ÙìŽÇû7âd[Œ߀5–Ûº
+Zî³-}³v¡¡hpaÒä êMȧóiî‡[¹ëŸL¬zƒ×˺0ã
+ÍT5„Ÿà|[cJ³n4››¹žã!ò ã@Ž@æIÞ”\ìÞ}wq.j™à¢Uá6Oúß@7—ÕÃÝæ}”’¿÷µJf¨rD\ iÊÐTy]¢ÅÂrf0žcÞ¬ä>ñ‚ÇTƒýW>÷¿Ø>å‚U„›-MxðÒy < §2™À¶îT¿*¬-ç
+ËYw6>ió
+—ò½Ï*ÌŠ%e¦î¦.úʧ±<é“ Ê1Íi]H©´†Æh!{+¬«œNlØÄÚºÔÒó™{Ms»Ù<·‚·Òë›Ü(9|Gÿíé‡$2m¶—;Í"sú}œWÃ0¬†¾scP5D¸úioæ¡Œ^4øWôÈMЂÚpÂT£:<÷•_ïöº{D¹?îŽÜ–ä™y~øf¾ÉÔ÷jRÿÉ”;OãJxØwëѶۜ-ö s· íoÉÐü̯+RâÒZ´^×
+>ÝX@¿uhû¾ßFéû~—è0ÈÖ«­e*XLº25¸I¨Rñåk‚qühyõÁ}¼îF…Á¨²UqT€«ªŽþÝÇ›ßÆÅ b§Ìf¯TfWhcɶ¯4.kJ„Òž! IfØÙ º£J«í¢GÛDÎé9âú1fúF˜€„]EƒqPÔ»†ÚHƒ­ñh¤û¨
+ßF<lüi T£Äžÿ 0
+endstream endobj 708 0 obj <</Contents 709 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 709 0 obj <</Filter/FlateDecode/Length 3872>>stream
+H‰¤WkoÛFý+ó‘,B–óàk÷Sb;F‹Bq-y»@R,(‰vÔÊ’MIqòï{ξd;N·ai4{ÏÜç™73•È_s£~<Ÿ&êf§~œéÿ%J«Ùµ*ã$Il(UšÅY’X•—:¶&ÉÔìV*œý!'´?‘à—ʤqfKi\h«fKœÍ¦?ɳ™ºW¶t1„ç´87E¬3¥WM­~Sõf6FCÙÆQvÔ©y8†èE¶Mâ1¾÷zgS¨µ Rå4¿­úŸˆC¸8Q‚Pg #$œ×¥áﳟ øW@N‰³¢‡l_DK Ç”ÓÐQk/?Ë×&.¿i›?£(}FQâ>„#]¦×ë*ÿ™*/屪4_
+q3\É–±ù¦“íàäô‰“Çq8øØž‡ypqA7ãöNügÕ'~×ôc¦ÁŽƒÕv£Bm×uÞOÔåØͺDÌ^þ[¦âR?Køs½®+BÙÕJóÛ Z æØ(â¦4ób +Oâ<£àÌ {:ÁQ9¤fT8TkÜ: Bã‚
+C|¥v¡lÀýh„a”Šl°Áªª>á³ZÉÉu5çê:„%_©ýG¬Ôjç7ßsåÀ[Ôjã'ðqÁ¼ óÑuX[ÎùŸ­,Áó²ó3{èòÓ”}‡Q¬W"ûOÂ;Ÿa* .¨Ä]K?8½R{®ZµZCÈAQ°^×K‘Ömm!œŸO'¯Ô*®ãvF<AØQ6'ô€Ëâ4§XѤš‰Óµlà¨à®È¥±vVE:Öiν_
+ÿâ¤i}¨7‹V¶Ä²Ëû$‹ZicƒNâŽ[æÅ\†5áÿ½ ±±1ùפ4»8Ë^ÌŒü(3ò!3ÒïÈ ÝfFþ=™Q ™¡‡Ì0_É í3CûÌÐ_ÉŒåVJ­\‹b…VŽS¤³¤Îú:hóÂ¥Þž>+®ÔÙ‹ù‘a+é!‘îsDÒ£Ï 9° ¥˜Í(ò³AN
+O1ÅãÄ°mbämb¤ßœÔv±Ç$øž¼ðÂþq^˜!/주`ZÄ=Ÿwþg4þBe‘ñ)ȲËK!!2î)Yx ŸG_¢k^Ï7Ûæ¶Z«°,Lp²Ý,Wìò«-7;õÒ¤³bb²çˆO¯<.qʉtõ½ªîø-ëÕ¢%0u,  ×æ·vBréüÅÒ±t|ò¬ábN"–}y1½œLnµ¯9ûÉÁð̓·T»møùÀx•Ñrµ¹a`Î*n–©›z¯.''¨ç8Ô€ûloÕ Ç“P£@HòÎYù²#RÐgo¬»çõ¦nPÉŠàY£{‚ïu/Y=5PWtògR©>Òºµº;HWºÛJ1“ÚbØ”R¿a%<Uó®Ù.ê¥ß\«~zïÓ±=Ò …¥ì K{õ"-»¤ª6’ªˆzi‰(ŠÓKnYl»jàS˜ís?š®…‚ÖlŸ´OÙÁþ-~h Ö%Qv²®—¥·T„Õæãб÷UsÃ_ð­ˆ (Œeö_TmÁÊZ+%ã†ÔG¿åFí}ÇyÏN‚çƒTåå–÷niC ;£euíft<x”çK~ n³dË^P«CËùj±ÓÂw
+ÒG…§çPâp ˜ì…‰¹Qµg0éE$>ÅÏ+ü‹¼¡&Ík_–*³­+¡Q.ÂjaðœÚø×Æ#õþŽ²ÖX‘}ÊÆJ:·ZzÒåÈ~
+?µ¦üÑî%Ç SÑ t
+ùÿñNÒí;IÇ\ðÐ>lÓ(Í㪰¤"%]c‰J°¨W½„eµ¯Ž[Ãèue‚¡ÂcïÕ,í+wõ$Ul›*Ï>¼F=Ýu&¶BÈf?°ª€ \ˆsNYPNüXêËßjZ@8¿ØR¤ùl!e5ÉðjYûÛÌ9_KïêNÑ>öŒ˜ùpçš
+b)üOSÔÕõ–ê—¹ˆ³Y¬Í1Ô:=,õnw} -,uðîÔÄ×5®²ñªÏf"5Q—çPˆZü ”-Hû”3I\¼Xƒ :óØ𨚪7³'˜Óéa»Ë´G˱²iI„›È@à'òa
+.x}yªüãÝdÆÂ~†4N‚ÿ†V£euÉ™<~Í<æî¶ÈoÔ™”C„˃O0Û³±¾ qšK.x!6á·«›Ì­ )Šð¿LŠá”¬}•¨JUézÛ<H ©šîÕ³¯úæÒ¦cœèDÂQ—qn³Ž¡0æ„ìÈèÁ‹ˆ?N&±Ô a›míÀôöN´6l9lpxYnâ'/_·zfj{ªa2‹ïØÚ–jÌôGaæ'WÐÕý
+ï&Þt…Ò¸«w|(È«‡»îþ"½jzÛ6¢à_áQ*Ü%µËö”T¶ÀPº
+Ä=H2‘Q­Z‘Šúß÷ͼý’bE|°M“ÜÝÇÝ™y3ÐÌTžú+6u¸9VÕ—ºEKTáƤ|Kµûöï2œ½œ{;ÀV¶0˜n2gž¡V Hy¿ëßJZç ÊþE]W7Y~bU{m±Ð)ï-Y_Ø'BkËŠßœ­£O¸MÍéòØq”èš5«+LúÏo-Ò†"-Š”ÄÄ<u—LG¥Aä]ä‚'úèq—q.úlùh8 vÕW¼g•ŒfaĹçp»K€#y„×£AH‘)œ¬®Éär›‡dP'5>·sœÝ;
+O~}÷¾ú0£L1*Û}e¾OÙ§pøáâ'h_áBs˜t¤¬„驶(nê;AÐ'O³¨Æð¥.ál-ÌÔ&':й !›Ð½ý€ã&1Fâ=1¯Ã„1W¬²¼ªä´+à ƒ‚«‚1Ô?¨ƒäúOx?$ÝÏ(àJ)òuÚ¹Ve¢ BIuAzÐF<§þŸ4¯8¥l1 ·›Ô‡Sªæ×'- fFl´i¼œLÃ$–No¤¸[êÚ³[\>á·ìÏ¢žKìü© .B 5C0dÞc /i5KŸ ½©µéâ¡4õ²“‚„ŽH°‚GiLH0@BÏÁ‘§@‚#¸`ƒ‘˜ÌDá€}ùO¸ƒa€„Þ_ ä*N«Ú/(
+@qúæ¿5â£IÁÅ!#
+ 6œû3Ê»R‰¾r¦2'/*bX¹d 8 l6 :(^ %\]Ý.2xÜ+àIjÐÍÄ
+Ì"d^’ص^ñ"¶³Gx¹»®
+Èô„Lج‘%fÈô„L2§ª!°}w™®T>©F§êÝ9Ùðß+þD6vˇÇ-ôV¨:î(Ëu¦°jIšg]HÆK¨¸p±]uC–‹nÇ«ûš èUÕ¸%Mä_Ó7Væz|Ä ­ûƒ¹t«ñtÿ'PZªR—°6
+FÊ›ßÝ×ÚÊ—û¸Ÿ²Ñªˆ¹½A{¨øÿƒ®Ï«j5²W#úúßãz/½˜´Ã6lC4-=¯§"V«ÆZnúV%Êëž­˜ç gë
+endstream endobj 710 0 obj <</Contents 711 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 711 0 obj <</Filter/FlateDecode/Length 3448>>stream
+H‰¬WÛrÛÈý•ylXÌ·}ÓÊŠJ©]F+ÒIªìT
+A
+ ÊdGŸÓ=ƒ‹DJr’-—E
+²¹ ry}Mq†ù–hÄWú­)‡ ‘=4ûVÊHx×áÅ –yß®.ékW f‰žâïqj‡“Ñ)ÂGEži‚©@#›Œ“Ÿ'¬I>Ã
+¦ÛÈ
+7ù (Ò$u¾¡ Ž*MŠ×Aåb„‰ìEù@¿üg×Tå-?ÔðA,'mz¦CŒW–µ©B ëLLžé‹U”s¼¼‰IfR\—Û¦Ý:ÙcDÓÒâm§¥Y)=sZ© â²nëC¹#ÿr«ø×”Ú—¿Bð¼ƒüZ<<âçð°ï‚oû {§wk×d("·xm#[z‡=~ªzÍGƒ¬ ý^Ô->–·»z]ˆ6"½4í`3˜PÅ€]tmP<sª%k@DÂ|y„Õ5ÉíE„
+^’ørömè†
+ÑÉÌŠ<º)%Û¶¦þÒÕúƒ5 ¿íè™×)/­ìD‡e•Ém[â·¼açá{»pòQ¯Š1Õ;¼Š³Yà™WšÈ´|¬ªºë6”Ž…’~
+"/4*ŠÉ/Yd©Ð-O•ÔAf´ØžùGÏiž
+ƒ¢‘SOòx,Ͼ¸ºe‘dX­(Q…â(g}T^å¤ “f‘¦µW‰êž¿ß;èaªIʃÈ8²Øç,Ò$T¬ % ‹4hæè‰2\ÌC¬CnhÉRlÐ6¦ö5¹€…½ê‚S&kTe“’Éh™¯^òfqîmvëls¦åðœ²YkKî8¶ÇÞZ ÊÌL…)“©ÚZöÙÌT;YjRž]l²¹‚Xí\5| ù3,|8±ydí J˜Eð«Ü.z݉ͧ[Mʽæ¤ÏrôAêÁ¤!+þõÙeæò
+©£Î(y9¦Íóåyu4y
+H<ƒ‡ÙœÇ8ôØ~hª£
+
+å*À‡œE‘ÄÓ#ý9
+‹³%#ÿxáÈØk·ÞôO¯ƒ‡5sÔ/0 \×Q–¥“ŸpAÄ5·F~¸ù›8ª0ÈüRûP†Ž
+ÌqÎQ¯7›¦jÜZ;9¥)=Öñ?ÉϲÙÐ(U~¥!¥ÙÑÀ„+ x6¤CýÑJ;ÄÏ)¹©¨&â
+"?ñ”@LCEÄ#¿‹{ºðöŽµuÄÊ’Þ·NÅsÇK«øyÏDoy4à­<Ù´bã¦Ñ…†‹˜†–â@\ÐÇüÏÞã?:éë|§2mŽø´ªï<¢µ•åððôßÓ¨@÷Í_ç~¿™¬@eNPw8®9;Ð<Z¾
+ý¬åÞ,ø:wN—IÚ×ðöš;µ›!6”èîàؤ‡¡yp+èÖ¾ 7O¤‡Æ–9ÛNeqœPHk?xxq0næ¡Å/ÃägXÙOÜñžsÆÅY1¿ezŸCV³SŸLºñ è’<WV?|1¬ «Ž™Ö騡mÚBë1RÉ¥øÐ<£(¨ðáš ¤=¨ìTÛhóQ]u m H^ Ú¨CÆ>!>K~áNÑ—šÚ?ù}¿R¾,Ý3·ÎÜ]IÛ¦ŽÄÒî°xìøwÍŸüÊÀS]ÆmÛ>R¨\c½aŸ!l ŽùŸaÛ±ÅUôêZ_è:âÑ8=®Wò‘Þß
+%‚<çHïcô\BéNò=ìåá ŸÑN
+6ö#ˇ¸i~œe´ S‹ÊS¦ªMœª’y>.}
+«G¼“^¦æwÖË—Ž¬9½x{—“žyH+‹Áˆ5¢…_ï–4`÷ˆ»+ᕈ9-I†wñ(¥ÅŽö:,S+–Ÿf24„5»ÝÓ}Ò©}IÛý•'tã[þàEh–'!IÖ3•À+ˆ)EíSõ¾àÊTR>ŸyF+#{‡ó}¯i+à^R[ê ©ÌM¦µp<Qý þÍ‚¸ø÷‰‚Gs5Jžbϼ îƒ4jzF§¦ŠZ‘K¿^9ïâ‰ïÙ>·&RJßcÅÜŒßíÒLÆÄ GẎfv ËÄ}Ós­–­[¤ý
+•ë¬Ë2Ú¯.d¢ä_ß6Ây»Ìãö9ű®ãI|ö<t'_ì…%ûH€û×ò˜îP`ƒF=aê=Œniù™«±;>ÒîTΪEAë2w`ÕìÜ(÷¤µŒ·“M¼¶ƒBÑÍ]0v3©s‹MËz ºd<Lš&µµ¼¥©¤.˜úS*
+G1×Ý¿—›´±Æ²
+EÔlš(Ó¤eæË$J퇄þ{H˜‘ÛÎÃÑ'ÐY¹.¢\ÓkÈè‡Õú?㘇Ö3* àõgì剡#Ĥ°¹ž¶Ã±'jf—TÇ%5N¿ÊÜF¾r'„AóiÊyÒÜjâ”4ÑßÁhüÚõôÊ|¡¼~ ˜òMÀ›Z¼°–³W€‰ê³¶aó©Ê´bêÚ…ÔQ;j
+f r2/&ߨH0F† 9ü…í$’ÜöxôáMåRŽ¸ÕóiÓ
+ã$Ë–ÿîž“
+endstream endobj 712 0 obj <</Contents 713 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1499 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 713 0 obj <</Filter/FlateDecode/Length 4298>>stream
+H‰¤WÛnãÈý•~$‹Ëæ^Û0d‰­IìM¶<Ü•I…¢=ë¿ßªSÍ&%k.H°XHvwÝN:ýóF…øoxR?Ý>„êé ~Úèÿ„J«ÍV•A¦”*Í‚, c•—:ˆ£0S›gå)óvhÙÒþT«( ²¸T«"
+«M£¼›ÍÃn6ê¿*.“€Ï ²’hUæAV(ÒÙj0꟪S?o–ÎðÑQÂG¯&+_Ž=”­‹Q(.þ*f7JG¾Ž¼T%šÿÕ?äEàk/ üoþÊ~ý<KÊ(˜‹Ã ù®cqîÓå;Çp`øαP}ò|{QèëØÓéÒ‡4Š8Ήo:À¶k…Ý'½•Í½œŸ.Ï×QPf?䉡ôŒ¡0ùä/lE~–Ì•þßLÉ)§¦ÒrAt)/ý]CQ:#*W¸%æçºÅ·~á}øÀ˜¢ð!ü•ÿ5þJ{ƒŸzþÑöBi#YÅP Õ=}ƺ©øíÁ( 2šëoýŒœŸš\BBÊ,ÍÄ9΢ó/‹(ÖÉ¿Íg?bWtBýÉgòYñsÍ`9fM-Z0ŒÚý¡zj•Ý“º(Prr:#Zà ÉÔÓ@‡é´[­iË¿Š=uøìg^µÛ©G•IÄê…üÄ3 ÿ’Oo¾.<5ÒíñC)ZåÞÝ•{¬j±Øtôml±lë¯ÚGßFì —l5ðkS©–—*zy_8µ¼¦­±èó¼IayÅŽÁ
+uhM£ªÇþ•wÓ®Ý`ªæÍ(óG —ØÎÙú:oÎ7mPoµÞNO?͸JÀ›é· i3W»lŸ3º ŸTóÎZ{ „åìbJ™tAÓZ»]k” ‰ƒ”üZÖ€Ò^x5eµô^èWØ5
+¯9<rM}ðWQè]rÿß®ïn'tP䜞#¼zâ•ÓŽ ¯±ÇÏ=À·ócôµJtE¿ç„q>…×UpÔ£QìÐ@…B>pE`©¥³:þ!–àA<âŽùQ²ZÔLu½ÅOìñêÎâ?òv»–Íð CPâßÀ¼EüæØ¢…
+†üYB,uWœŸêåÀU<½H»ö-zYZÎлYmGhiÚº ±Ü„
+1õU#Ú
+Àä;[yG:"LYv`RŸ”l|1uÚ~0;4(y¼.§~|cªš“+8qAhQÒc×mcÔãZ䔨ՠæGõQjÌg\Þ¡È¥g{ºôž0Kú•£ÂS&%óÎÇ胴á_2s‘ …Ï
+û…~ñS /–Ÿÿ2ç0ûS(+—TE<óÊg²FͶLÅãTÊH GXíø7Mr¬ÞÚ~É=šv4ÐĺD¥„È%WýŽG:þÜkmÍr<‰ÿ5Î\ ye)YÆk•@>)ôT $Ùò ŠÜ›aËØìêe;Ô¢M
+TØ1ßB3¨¥ê6BŸê%‰Hñz ¡y«Ö×¼`–=Sai&¡²Sÿ‡Œ¢Þd2¿ð!@­Å¡óàqrË•6“ãïÞùjkB½¹Ìó®E䪷·6%a]ÜÄË.§ñ¬/Âô}GW¯( ëóU¤'ë8{ô8<AIûÄÞªøÍ”î‚ìfÞ-ס Ò;ZÀÿ5üR9EÖÄx´}}Í›Þ`Wg×F¬U8{¿7Õ àÛ©k;?…Ó¼™_½#1êvwW©˜o¬ ˜´(ÜÕ•|Ýü&¹ŽÊy÷×.¾i–Y2]|×£›²=ÏÐ]ÃHs·¢‘õFð¨LUÛûfé}…DËY( ‰hLIh \¦Ñ¼FV_p¯è
+c4J‚8vŠ`
+ñ•-™GQε‡;Ž{A2óE(‘Á›$ÄTÑÑà½Ä5•ÝÁø£ò´ X·=ÿ%®æ0Gˆ¡ß1ÎñÍ.rp,,î»#.ss
+âþîJá%n±Ó‚½{ƒçWz .€nï¹ÄD3æP::'G~amÕ±î¥kÛ3iGÓS?WÀ_p¯¹¦OîÞK›;Á¥¦+eÑið«y^
+8dÑe.«LÞŒêq£¾rX‰]© ™>#bOÓsßèaÓXohBÙb“J­ÅpS²æb͵Xðsœ#µ
+¶MˆÊS²$°C
+O`‡nã˜
+ÉlÚÅ$Í;2{6 ÁD£ÜG­é)¼Á^ø×Òã ãÏø1ÈüßU
+W—Ì8})¾nB(ŽÆÞï$­KM ƒÞtÞºáûwlËÏ‘ƒ—¹å0ZÖQ»^Šåh…DO;r—¿MEÎO4Ê|oûÍîùX&gUWƒIí1"+ŠžŒ™ØÕñz˜áZ#`pï³ ^›wœðfu\€.‡ìgÊôç` æýOü——W]’8¬ÙÒ‹ïÞXt‹»ûóÁïÏت¦3rsZc¡öV°rßfáò£ä°pÙX”,+Óýä¯ñôÓùð|Od}ir×Rù½£
+LA3œÞrÍ¢VY“AP­B²•jxÍZë…(óf¶
+²#ÛÉÈâ €Ì
+_qDÉ4]FÙ€ ék5wûŠÕöŠM¨Æ¡…?â§üLÒ<‹´Í®IPŒ³]´óÜ0áKC žYéÜòI <XŽTâ‘d)´›V§ƒº™I¾jûàê7•ïõó!|öž}5C%-ÉþìIvÊLÄ‚˜C.ÚàV‹³vb:õFT
+endstream endobj 714 0 obj <</Contents 715 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 715 0 obj <</Filter/FlateDecode/Length 4212>>stream
+H‰¬WÛrãÈ ý•~ ™2¹¼_òæ‘]ŽSkybiff¶R´DÙÌÒ’CRvÍßh6)‰ö8—r™j6»4pp€þ´Tÿ5ê—«…§ZõËÒÿ‡§|µÜ¨Üõ¼8๊7ñ¼P¥¹ï†—¨å“²”½ü'ïðe‡G;ði¥‚ØMÂ\9Yìf~¨–ke].×¼ár©þ¥Â<rIxš‘–ˆ¶™ë'Ê÷H¸jJõ›ÚªO˱5Díôj^M‘ÚÆÀ¿‰Þå‚TØ~`Å*òñª¯2áÚ¾¹žúnÙ~b¶ã[æ}Œbû÷åß`ðßÉä8Ü$3&‡ïZ CÈ»¬³í‘åû›ÿÔ#a:¡(žPäEßí‘® 'k"£+ÿïT‰”cU‰7>áf8Rš$Êñåô$Êc A¯ìÌúüq¦ãGÀP½à·D ;¶Z ªÝVÙ~h‘w£>üžº£Ï¼®. ̶¥b”CüµÁÈÎ\’'q"ÆÁ‹Æ¾$ ³öö]olß·TgGÖ£[¥bÁ£ÌÜÏqðÀ sˆ¦ôùfÍlß³0òŠ¤¨;%“Cë‰^î1[6$¸¥ÿG>§XϨEGÃ=¾šGG óA3S„|?î5__ªŠý—Y<ØÂ’UM£=FkÛ!/¯‡OtL'%3hXªÙ-ysC¦x†súW×xÒ\@ö!„|ùŃìK¸;ï·µ<SÔøõg<V»A°TËæ<?ãXë3…aAÃ?X xF‹f_p®ö}Ud”û>ýº~œŠ6dÚÎv«®éÇϬW(¬Hý³ä\U¬ºJ>néµ¥°ü…Þ|Ë(!·ºQ@‚°XëìG(¢>!e{}àÖQ˜ü¤7œÊò’ÜDi#¾$[Kµ*ë^È­já’†,Š­¬Àû° T_d¢ùBý•mÿažußTk–wÖ ¿£ÎyÁ 'o%X¤†trP!¤£ˆí(Éõžþ {1p·¥_,*X/Þ
+È5é“ÐÃÁš'$Åôî/—­ IniLÌÍÈ¥ÿÏD†gâ)žÉOh†üòžÑ+z¢¡WÍ4 ÁöJsLÁ~ ¬{-oKùR²ÏM†’5Y,‰S~Z-Áës*é \½Pú“,;HúªZ$ÌSºu„Jõ'›’u»Cö8ORŠ†|Ö¹ÌkP±(Ç™gIn™„1
+b¡.Ï=©YQ,†ßi<íñ¨ÉÁY U„oVWö•KR…«O£å­°I*ØæÌBpÀòkâê‹fU˜~ÀBo+¿/Œh±‹ÑýÃös«ÉH˜-,ºVE+‰Ë& ,‹Î­øàˆÌQ1¡€:‡
+bŠgÎÅÓwó!ÇBX™9[h}=êûû«ø.@[éQ3•¤Ñ¨—HÜÄ;¼èHÎ&i"x"Ö·M’6ÐZWRÉ7L†Mi¹¢]ãfËÝΪhÙè݆ÓãŠ\ù"9³…õhB>7­©Œÿsˆ0úæX>ìðADój~o¨ãßJÿ Z¤¨ÄTE›?x!!7džðºéÄäN
+ŸŸw¨ã3Ћ¿±—z4+(¥Ð¦f·4{ss+$B§¹¾À³ouB6¨åV7åÜÒª1Ý›UÛ裥…Ñæ­j Ùš5,  Ölä2a07€ŽÓoùgãhªêâ¾F_õ6bŽ¯c’².9 ˜žDuø­¢è*ò¹(ú±ë‡ÉI™ñ’«²âëÛú¬Ïcî_æöi³wÔèõìñ~³M4{.'׺Çxw´ÅocwA¶ÝAÇW2gÖ£Wmö,Æ\d¡Ð)Á®õ<·?p-ƒí™´åGˆ‹Òߦ“`˜1öеJR‡<p¦+·@±O¨XEZ¡U6†Õ;õžF>.„¯ŠH=Ê —-î¾ÎˆKð¯nIü³¾÷fr·EíßmùÂûy×r÷, Á}Í×)5*‘&OŸ¬ñÕÃÖ1l`IS¹q–°0%׃H~r9ÁH:˜Ô7¼„´l§ðhÁƒ‚2ÓØÀ ¡g”1BÎ{N{&- ¼dœ­ïní'!$>
+4ïÞXÃáHÍ\â-Êãð2>õæ~ê¶.±‚0P/Ví½hË:±iäÅ:Éè¿õ‡~EÒ¬~Êc6¯’´ñÇTÚª‘ òŒ<E³ÃÈ@çЧ“y\™"½jV °â^Ô—,cÖÐ͘_=÷\Õ3ºí<¼à |Sòë+
+;/¼Ð«0X'NÁÃ!4^ Œ—1ı\~Ryç@OÌEá!
+g^%ZzGã.UÇOž]ï™­ä(JwœF)ŒÓÚf:/ÔÂPHPe g »ÞyçnYYz”‚ÉR1êo(e•,£ç’Dµú G]Ù1*¢ÛÌ°‹$ü03ÃþEÚˆôЉ(KnÌ}y±Z©œ[M¼¿žC›`¨2p“ä’9ÎÃî\}{½]˸qNÆö;YÓ«éf©iMã´0‡u­ñg€°8?ÆjÂ8ýH—©…±ÚÕغdšÀvØÖÇCwcÅ‚D’HWe£§¡÷I,¥@³ Èíšû™Hb™èÇ\BG¨¡7÷æ?
+endstream endobj 716 0 obj <</Contents 717 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 717 0 obj <</Filter/FlateDecode/Length 4589>>stream
+H‰¼WisÛÈý+Sùl XÌËß¼²âr’•½×ùàÝJÁ$H#¡D-AÊñ¿Ï{=¸HÁWª’rÉÌÑÓÇë×=?-T"ÿöõãËÛDmZõãBÿ#QZ-ÖªŒ“$5²¡TigIbU^êØš$S‹;¨pñO9¡ý‰'¸´T&3[ª¨HãB[µX©àjqûJ\-ÔÊ–.†ð¼À-ÇMëLéÂÕ¾VW÷ê§ÅTÊ6Ž²£þš§*z‘Ž&ñ:¾ó÷.nqE¨M*§ùkÕ[?‡:pq¢~ B&Œtp^s”†¿/þB…Ê©1qV *Û/jKEO(§Ï´ ¢Î!^~:•¯M\~Õ#6Ÿ¹(¹(q¿…“»L mÜpWùß]奜_•é©QÀÍhR^~K”Ó1Êù“(O8Ù¾ ‹àÍÆæ;  Uü­È}˜-Íî^…Úð®ëߨ,˾m]q¶­• ÄŒñïô4^O¯]IE“¸,rM=5päòR•ñ¨lZL”ÔóØ@au{\.ë¶]·*,K¼~¨÷a” Ô¶SÁ§êÍK\¨ú¨”…7s8×Ù8)´Š¬Æ¯Š Ûѹ·s*g^eÑÛóέgE¦ì °ëzyÝÔúhš.šiœãx\Èuk[{aÊf)v¹Ø`×òN&ï¼ÚQfâ¢P[h÷‹²^QY–ø|J‰ K$Š8[ØØfXv8HóÒØÀ<G#±ÁØBd°>‰Ý¬Ÿ³Ö
+™”×Ȭ·¯1,ƒ¿^!çt°À‡ n0ÿüòJ`}Θ‰O÷2ƒ;%Ý©¯-
+àœ¥0*›Ö¡ ;м‚ó"•#7#ÚS²ö¼ þÜlŽû0C’»
+ßù¢KM {æÝ=”ïÐjtÇ‹ 'ÕR¨®VÞe‚<p¬G&öo°‡ûªî[ò0ν¯z$¯TµôØäFV%ü>ñôYƱé2é h_ùÛö’:5cv¸XzÎñcÓ¯åi‡æ²4_t<œ® ¡jz½šñvöyoûÞö†XÓ»»LGw°(?V˜冤Úc,·Gü¿άiZ6²i6eS=°)æ7dQðZu¦G±w"‰({J¤1)P3ÎôOµhŒž’e1ص€{V
+a×ånï+ƒßo¤šÝ"p,²ykа ×ÈQþ~†u90H÷(J]ö>îÉDø±òÀÜ‘KÐg|¾Åøjö“)²ùû
+Ò€ïüù‚ô¢~€FsÙ;ðp’zÖ§–›Œ<h…‘z«ZBÙUšÈ'h_SÔ îNz9# Ám-]‰ß/§w”ŠÞ ®½ã7“WN 5´ÄžH:’>àÚÅ ¡_Õ+®ODÐÝeÐŒ%oègëˆTé‰}ð°€ÐåCsá„×EßsÑ37×,H—ˆ(ƒÝGT§’ ˆ_‘º_|¡".ø6ç; øÿqø
+Ü3—‘ʪtý¥kÚƒz½&í°’¢y>ÔêuÅ%Ç2Ñ"«ÕbÇÉŽcö˜™nšcÑ4ïï.$kt—ÆLYغ¢%þ…Óu3Á³cJùyðA­d¦æÇZÎÉâ}-Ïȶ?šÍœ™à¬†F6­ÎO 'õòPïö@‚HÄÏ%Št&+Õœ¼h$ÂJ±´à]á;Oƒóx-›³ê"vÈ’1`<àËÈÇ-õÕƒ*W,ëV{?#϶YBʵ.æâsEîEÆn_^‡ñé`Ð)˜ÉÓA¦d(Õ</dÂÈ—cQÚ/Lçr~ôíKè©3¾ŒLÛ¬<‰ÔÁ;qä'_XI†ÈŸ)ÒÄ4÷“x2”jlâU%–¦Æ#g[½ßÖÏÔ+F9bøn/ðqó
+Ÿ¿ríÂoÙw•ŸzO,9ÍùÅl¼vÒµ‚fëæQZ]ø‡ïä%áëÒŽ¯>ÁR÷ô³òŽ}N+¹g ¾<Džƒ+
+¬/†¤r}›=©¬#ŒTÒ* ¾Ô”=™‘ZnŠ¸(òIA,{-ûŽ,ó ™¼3¤)+{ú$z\×”¹€ óM™P‘ÛŽ@³$ŸÒII6ÉÉ&9Õ¯% XE€¶Ë1(zà%-Ý]äðFE{7…WKãwGÉóM#áã°¾HÊ£c£Úºm›Éƒ¤Z.%aú Û]ïчj_A:Û1«Æw8rî>›€ÜÛ×<dÁs®OKHÈÖß$`ˆ{›Ê± J“Á/˜b’®|¦"—K2Zȱ9Ù!‘
+ƒO>#[U{ä÷ÃÃn/Ÿ“ãûúY“c}¡\©GÉJ ·Œ˜ß¡þD›»¦³ërö.:8Â4ȵÛ[ütìTLw®Ù¸Nõ™ÃôùãÅ¢;È&/<¿g^}®Ñ‹Æ׊`Ôu^ú¢Å DÑè°Æ œèb„!š]ÉP½—Ù¿i|ÿ¦„ß'd3t©‰"X<´§M*&´y
+^ÿø›oàÆ&qäF®„õh“ êàßì¹&3Grò¯yrçJœöôÑxö,HúÎüÅwR¥¨RU~O
+Ü3½ðØÁ§çLöÍŒiM¬µûß1æ܃ëŒ/¯.þÃ~Õô¶mÑ¿Â[dÀ&Èå÷1°s0`§A¬[‘ƒ,Ñ
+ Er)¦…ÿ}ç½Y.WÔ*hÑ¢‡¢ËEîÎÎÌû˜“€ƒ”çq%–àÄ•[aBF#§Ó0âìÑ–ýi y´É
+éHlAÆEäük¢¤_Æ™qž½Ó)t‹µ¸yVIö›`XÁõÔÔ/WêÁήk—0ÍX畳è(4Gž
+©wu)<uwSuÉ$ƒïÛùâ²ÒÒÿ,-ËÕA8Ÿxå!r®ZõCP‹ñžiñqää¦\f¥Ùó~ZÞëÿÔÑwJú62d–2+y”›U®$žv’´r·îÚý ‘`K†jÛ%ƒ%‡ê™@b+šLÄÑŽ´c
+ŸZë…kQ<§Ù|/+ÆØÓB½¦úeÛ2)æ«ÅÂXž?ÍO.—Ö=¤§ÏíK‹ëv¿öhΣœ,sA”q]Xù\€k®–¿Ì77¼¾Ìˆql` Ýðd·XËêë /+‚Lܾ_íàáózòAÊv•™Iú«ÅÄÏ gPÇDÐBΙÜì‘tN“£$]&é¹í–.šb6„ 8^{ŠP‹C ×¾üÍÌl‚ªb“7^9K[NÁ\oØÁû턬tÉ $±9µOPµ8’Š
+¤AºƒÒdä´ÿ_j3ÍE•õx}gšJP,<¸|¥¬®ãžw4Ø^FÇ…;RëBbHŽâ,Û^XÏeEX†;¬! ί«C¼4{fyœÔ.u‘3?ËaXíl,Œöù Üå?Òbu~wèÖg.JÎÝÏç|9\vîJÖ?ùò™?îéüæåêxƉiTIË÷TD‰>·Á‡úªœ|LVjåïdí%²x‹ûò—Pñ÷žÖp°ß¥CB½¸ ¨3J“¸J
+&™FY ²éħDw*Ü–W­Á¦!’>Û|Ýc¦ùûù#ˆ;Ük_ùd“#d êÆÝÀý½…8NÖ "”vú‹;r
+ç)Æk¶;Fðq>9±`3é‚MlÂ0œ¬Ž8Ó®Az Ág˜ÃqpeŽÒÅИ܉sþ3ÈZôs†ëú Z2ódú ÿa€Îf5 £Þ^
+:‘/–ó+a´“eðJ«¤MoŒ®zÀU+ôÉóV4I\6Îd<¨Qo…·àOäó~?xþêE=ùQÁUè6r‚’¿‚’CÆkæn˹©g®¹‘c —)fîX9ÑqÖQWy×¾ÊÛ!lL6[e¨‘SgÞæh¼˜ëjš{SXÐÚøC ÑæÇWÜ%‰›´˜¼/!,aÞÄ»]»vx–èÃ^!>¼E÷è·Op‘Ñû îò£‡³?½ü Äi§çFž½¿&DÐël"MhåiV~lïÑÒºQc,É˳wÒK â–m'<k^‘çм~=‰+u³Xjg12GWIóN¬n/b ?ò¦\Qú¦Äm™pË›´ˆ‡ïJ”Sçê…ªà>Þñ ùBêrèÛ±s—ô §ç
+endstream endobj 718 0 obj <</Contents 719 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1464 0 R/T1_3 1547 0 R/T1_4 1548 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 719 0 obj <</Filter/FlateDecode/Length 3133>>stream
+H‰œWÙrÛÈý•~ªL º±çÍ#³\LʲG¢'3©€Š`@ÐŽþ>÷œ E+É”èî»s—þy­BþéÕOïCõxT?­õßC¥Õz£Š à …JÒ ÃHe…"¦jý¬<å¯ÿÁÚžå–*e’
+µÈ“ בZ×Ê[®ïW<°\«©¨ˆžå¢%–ã&tªt(ÂUר¿ª½úy=·²M Ù‹QÍ÷s­ÈÁFZ³z×÷¢Â×ÆKT¬ñ©_í‡À×^„êwÏשgü…öB|×xJü¿­ÿ ƒ“c‚4w&GoZ CÏÈÓÖy‹! V~2—¯MPü׈DÙEÉEaü»?Óe
+±&vºŠ?¦ÊJ¹T•š¹S›ɥ¬ø_PN&”³W(ω8}ôsïËà,îÇ0RßðÛ
+/[‘{\.w7üã7~zä±{L¼¬•«ñ7êy F$Œ=ôNâ¢¸ë ¯¢®«›Nõã&uh:ÐvϾ‰Ä+„ ¼Yd4k’x’…ňL/(o÷BÎGù§¶„ú(ð«]‹Ÿ^ì¾b“úº–çØ»BïÁÓ[Uöâó"óN²^ɪñªæhéœy¿àÂr¸x'ü8ÔR¤˜/\ÂFuO¹·÷Ád½1ŽÄÙÌ_è@'Ù
+2ŒÀc¨¦~7Š»óo¢Õþ›|¡ÖŽÖ ä‘TA¹¬uèÚªAèkì‚Í\jÔäáL)ørìQ³TÕ.UÑÐÅòƒÄRdÅ(5FJÎlÜ‹€-½é·eßÔ€Hmd‘[[fó³¯ ÒSv=`¸”‰K °ÖîùŽ‚UB2RÎÀö >|‘§ÉòB¤Ý ŒH¡\ÀÀ:Î;¢TÑQ6Ý°,“$zÅ<¤ã@ÞÄäk‡ØJ°Éqw8';3› C]~Ùž¯… Y2ªmg¤ô +XþX
+Y
+|$ßBó£-VRd^ä%`X¬=¨ñTµ>ÏJéVò¤Yj†±³¤YŽ‰gè,2Aeâq`®åIÇ„BœûŒ9¢zmN;õù€¸t6 Ø%¹³‘8~\Þ½¿U«¾=[°ˆa63sVÆÃx4Ó$ouÀ4ɤ[v"ß¡qFKbªÕí¯Ÿÿ²Tv½ø=¾/mâK>‡„1òŽÇ’¿°Ò Æ~”¬ÜŸʾùˆx†4HP´†ÔNçIb=±I;²L'$ƒÑÒÓ‘eëŽT»~9੹Ž©”!myµ”ìT¬ÿõV(Ø€¬¹ØÐ|ÃýÃbO:ñµäfu(»R<×%¹E¤µ†&wÍx1X öƉ5»k*´1_³pØ™w®0wðé¡R ÏR[¨l#²›CÀΓx¯€°­3cuš€±›P¾
+ýÕü?\Ü!µÇQ˜ïšMÓ±œhŒ7×ЩëÅÑãúÝ7 ÔÜjè'èÇlÅCËÂ,P
+ºMá(Âq>ÙÑ¿•Î¸k….©Ç±–>ËpyÀúN®ka6Íý`LßMÊ
+"XãBÇùXR¢G{ßÊLl'óvƒUõv”à]³í˲cÌ̉i:ÎíàžQŸ îc÷žsö¬Jhb5žê ¶\EÍ‘,æ=òDkn3idí`¾4ýr–_ÌZ|‘g¶•ÆÂ㬰³<žÝ˜œ„ÂÓ|>Î zÿ°o»g „_äÆ»i÷õV
+nK¹·?^Ìg¡ÿÑPçál(_±‡Ð_cuš;VGÈûéƒ8¿z7(Lí~CŠKšŸ:H,ûá½åÅìÛÏ' q2§;Zïöê
+NRã=@c†“ƒÈnhàÆΪOÖL¸!2ØiIäŸüá\éB†ŒÃmñUÊHT.ùlõ 3mSÎL‡‚Õ<ß„ÇAÄTÖ ´X)¬ô˜>J‚Ü—ÖVÖ‘‡ ÚàðŠ©DÒQ
+[Ö ŒV™•þHÝåpçãt‚NsÕG§êÂèñÆY¥5Óº‘{’Âpµc|Š|âmG[¹of:ü‡îjÙi‚¿âk©
+¸j{¬W(|€E, 9–ú÷ìÌÚ‰ƒÊ%±³‘Ÿ³³3ùÄþµnû…ΞåÞ;&÷ÛÀzÝí*]lcºfÄÔØLDh\„(´v´Ê(…XÜ%¯ú¾•RŠSœ<Ø™çhPøŨëW!²pêþ@îb¶kíšµ’zˆ›ÄÁ®°s‘ÎÓ>àT̽ÿ‘×Ð<¡@P‰ø'™oê»­y–ËT&U
+]aX-úá“£¸Ù-"Ü2õϹ®$vÍŒƒZ"]v]OTðÊ\ Æ™æ
+s“!¡ˆLŽxñU$¡÷…½ˆÈF‘[à`s ßØKÞü™(‹LªÍ¤¸óènMšÝ¦äFÑ:YᜠöF&X•£WÈ>¬¹=iXGÒ8ÖØ>*èwP[¾@B÷u"³MöàÊ*[ºXµÓwÐÝÉ¡ÓBŽÄdtü2ƒÀ<FŠÖ`ôŸÄ- ¹ž
+ÌKS ¨™PC‚WÌ)Ÿy´P
+,7ÓŒ¼tæW€
+endstream endobj 720 0 obj <</Contents 721 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 721 0 obj <</Filter/FlateDecode/Length 5193>>stream
+H‰œWÛnÜÈý•BžÈÀC³»yÍ›-M ±ì•Æ Þ  8ÔˆÙÑpBRöêïS§Š·ÑÅ›†G$»»îçTõû …ò¯ÝÑÛ×!í:z»1ÿ ÉÐæ–ò c+rŠ“ CGingÄ6÷ä‘¿ù—œ0z"äX*ÉÆAârZeqG›-yëÍõ…Xoèßäò(`áiÆZ">n³À$dBNmE§½ß,­lAöjTóýÔD9ØhCµñ«êÝ\³
+ßX/¦È௣¿é‡À7^„ô‹ç›Ä³þÊx!¾<Åþ?6Á?±É±µA’M&»Z CO(§ŸXç­†€¨üx)ßØ ÿ݈¸ôEñ ŠÂè¡ËælM4éÊÿ?U*婪Ä-⺙]Jóÿ&ËñœåôY–—…8'Ù}ð3ïógä™Ý$Ž¾áo…D¶~ìux¨›ùÆyÝhLHW¼,ûöU¯]ER%vÎÿ`§U;Õº††Až¥v®£(ÍÅPyž³…±\êüÊÓõCYV]wû°'?Ï÷éXµ/ôþ*öj~€µƒ
+Õ«¬ÐXúNä²0HBŽóÍÁ]9­ çR‚{ý’ÉÎPŒ5A˜£ÆòsÅäâàf{-£<òyv9äS—)eÎr6c¨ƒ,‚º[Nö \ó.†>›UÞËGü®L”AÀžmû‰\”QÆ!â|e|&lFn’æ2¤ /çA$Þñ6þE¡òºer™çzJ~àùK®Z.Â8W9Š£«W—gƒ¯ºÎ^dì¤a}€ËK¾Z^bß»‹,zlÃX]š<ŽÛÈ
+î̼’_”l&/cCÑWÙÏ• ½f+§ÏšCMP.åDZºÅÇ Ѩ.`a$ÎB™èÀîZEuÇoøËZ<&Óæˆc­¿J¼‚zfý€¦8¹%‡Çcæ\$žg(l¸hpAN¼;XBg—Tà\_}%ÞuÔKruÃ[wƒ§²Úâσ?|¬èïæþN@žìªE^wüŸ
+’²I¸l$¨x°f*Ðût¾¦³O\›+sq²„KÙ~®ñº÷¹^K»Bþî$¨§€–¾½ºsŒZ´¨.)Mæ«›l(ÓÝ4
+.ƒ›¸ VŠ9°ÜB ì=Úp!eñH’ÊFL>HóÓ… qêÝIªé©AšF3¥Q²È¶Ù4ìÄ©ê[$%í£$‰Käqh#}¼…Q²ÒÞ'ûž€ÆŽJÇ9%ãñ•…®©8øL[ê|D9÷ŠýžÊæÀO=WtQöxƒƒ¹ì¨ž¹Ž:¬0ËWo6¶¯vZoWä#}n‡ ò
+O5UùšOý{Å=·˜¶c趘H—¾aÏRïˆbªÊÚçÝ>¢(k_TY® ~{ÃÆ~â7F{u‹:­Ú¶ÚRÓn«–¾û6E²1ùÄì“N!j¢Ü\¢49InkL#%Óõ€d ô1¹Üò@UÉ£¾E[,VjßêwIOµPõÅÒ |/_°­ëߨªïh X­KA©¬E§£(þ¸ãoª¡“
+9&K
+FCÿÜÜùsü´q ðóP)›V6–é窽¯û^™˜~@ïö;mIŒšSÎï»paL6á"Ó©Äñ
+»<HÓ‰¢vh‡-Ù<àéœÖ’{ÌÔ§K†U ¸œïx§}ðz}Æ¿H8¯øéqÚHp~¦2,òW9Ä—ç‹–),ßé8M
+&¬²§âxl›c‹ËÄØ1—ØBÙ ›GÒ‘`$β=jݯ2µ :wBr“ eÙ<úÉøõÛçö#.eq,nê=ßi*Hd]ÜžaOg]¾ Ævªà‚ºáη;蜫–(!4|”¡D~ßVB ÅV Aß~Cè„} Mø“¯'ßÁÌÁ^»ÕÏŠÛfÆ0ÖfK]>ƒw¼ËÆC¿@K…½eÓV$ãh¥ÃP
+bçX·¿ŠÛÛfh'W‹(§ÃøZ Ãÿl9Þ±>bl­dEFÞ "ö¥y—±Ò:¤ê¦ªTàP:ú2fD’õ¶o^¿yqL³×n^âx>ái¸wÅÓÜ>Ôb©et_)ggQ©£5Äî0sfh‡ÖSâ}”åýI…÷’ìo *ä÷¦:­Ía|Ì”’·$¦Å=ò1d-9_?†Dò…ÓòÝÈ|Ì£4èTò˜iŒÇiÆ.†ŒNYI¯d7Õ˜„Tä
+ñ>"öÜÄ3ƒJ*'2Q
+™kXÃTð$Ë¥pÐÈÓ¹oÆ•ã¢àøKJjÿrõ_'ÝX;>ÇÑз›ŸfùÈÈšúäfÕ^çaP€âOÏ™P'[/èújÝú®Ó"Ø–g± jk¤™õ\‰LscÀ¨Gc„äÖÁB5V”OVÌdÅñ<Yúƒ‡®­«§N8ü‘sˆUòcO¦Kb˜8žç§Fl"+›—ñ†ˆ¢µ
+‰W’ó¢ÓØTXwZC©¥ÖÐÀ?"ñ~Ý~#Ñ2ëaáeÉ„“A[HÌpl<Ù+j•†â£w–âìÎR™¨7B'Q8y›©ç:†®Ñ¥JUX¨0Š0©l WU‹íãô:'Ç„9PmtvyM€L®ñƧÐi^=Ž*!ÏÝ4Àû߸v7ÕJ“ ¦ƒª©gÞ:(m¯]N»î°GªUe³§nБ&8äeã˜T¦Ã„"®®Am?džIê<— @ÀÐÜ›\†pI¹rM³ÛX~eo¼Ò[! tàÍ->v:0n–°Ø Cò–3¾ü·t¶‹†ñ‡¤‘¸¼ä
+G³f•|µ$5o‰P®çx®Ò8÷K¸Ïði2ëîäHYú\Ì’û^ %«yºð\ào’šg¡0¨¸èÓ]ÔHÙlz²[ ¸’è3~îù²Æ'ÞìwчNþoöáÚgtÅöR¦Ùð9{9ŸçiЈ÷ 5ıq\û†!óºË„«gS®¾5åçFóXgµÆlb®Ð.†)ÃD”(æE~9J÷»? $}…E¢ð‘
+à†³çå…GœÔØ­¦ä–gGuE¢=Õ…pŽ_î]yÇJÙM8¬f¼­’ÛÖí^×ЊšµY72"úÚT}Óó'$£GÚ¥àî~ÍÇO{2ã¨Þ÷M´³Èñ.®Ü÷,#Õ·‘7£‰N4¹ÖÕPSì@ÞWt'#‹(Q¼BήLÙé @\ ÜDˆÞ䥽ô²kûâ,.i~y»•Á ½s—IMÖMûj¯#ž\U=ÙR9q£wá’ 5‡O7§ü¿‚Ðœý3Àâ«'hr<8?ðdêË»n,.¸qE°‡>㎯rýœÅ®ølÜP þf§óÐ#,@N½³´ê¸Ô9Eôõ•ˆ¥Ï-3SNIçÓ™gGkÇ€f¾Èé’Tf–þf…v°ÝÏ"r^ gñ³6÷Jrh°Šä³aÔ›¢i¡¦g%è-_ù³šX?¥wf}8x;vÿ G9ãK3¾ÝÁQ­ÙRzSLž½xU ÿi%:¬,C;ŒE]{AÚÉ5²Tûßu€`ÉÃ’9Y
+ý»Œþ+À
+endstream endobj 722 0 obj <</Contents 723 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 723 0 obj <</Filter/FlateDecode/Length 3604>>stream
+H‰œWkoÛÈý+ƒ|"þû-Q´ARÄÎÚJ‹E·(d‰¶Õ•%-%;›¿çÜ;CQŠâ E™óºÏs_o¦&•Ýyõî:5w;ójjÿ“k¦·¦IÒ´pr¡1E™”iš™ª±IæÒÒLLdâéå…Õ)^ðhn\‘”YcFu‘Ô63Ó…‰&Óë÷ò`25˜¬É¯jpÉñÜÕ‰-MAÜt­ù§Y›7Ó¡4¤írÒ6_ŽET’^F—ªŒÿR¾Ók°ˆ­‹
+“[þÍÌ?t#‰m”'©ù-Šm¹xd£”û–_Eüïé
+ü D.œKʺ9{VZ
+zl@y}"]4òQúžuIóC‹dÕFÅFiþ[<àåH“÷¼šÿ•R9eUæC¥€›ž+éógø¨kÏè4@_Ï'{÷é“°ª³ÄUˆ†?BTÝ#Ê~(!ø ž
+¶Í
+™^ ™ ’y{xz*bJ5+” !ð?I‘7礈®&&ãi¨êǵ¬)amIŒ„IF Є˜=j4›6AÖTd9vyÕ<[@âŸãQ-)å¿ùÓÅH§†eØEéßâQ™ëVVs=_£¯4”¹<Úð`ÁŸÖŒe±æÏž¯;Y¯Ì6—õ¼]xŽ¶R– ¥¬vº‰”¹¶»[’Þ+1¨rHž´öL‰扸@3*m™
+é ‹)Ä6URÔ%™åÞ4ïoc ^û8îcðhÍç8¿ºèêul €ä7Ý镉YbcWàÍË<‚D.šÝ¬pÒBYy³ážáE¹²Ýn:néÍIj«‹ŽßBçŽk3[óÏâ)uF±±÷,äR'Õ;0x ï¶ÝFîÌù» r¬•&”—Øj;}KypçÅø³åV AYlÅ»íâ ‰¦^qƒ/òŠJÛ°_T}Åeô¼mt…/“Ú<G,1”.ßN ¯\b…@¥‡__¼UC?Äœ€@¥~&§w´}iö÷ü+;k* kóYi_>¯/ÌŽ»³Õ
+)x/ÀzĺÓ,£Ûú˜r\Pª™¹žþÑy0¡Ý>PJùâ½v°QÖ÷DÓŸ`±>=»Û±c¸óv¥æ_Ø8/IrÅÅâf>óà‡üÕ'®g ²âõG%ò‚Éé
+ýGû‡î Þ<:ÆÉŸ âé9$Dâ{Cm¶RD¾ßóÝ×ØõŸÂB@XíEÎ×TId ptHq„ÆÚ?X As—Ãp*D—7DÉÄ0®%
+>yÔQÿV¶õÅ|#]÷·ÊL8 åk’$»…TeÙÎa$ƒ«×!!I5ù»
+Iæw¡²PÀw&$¼Ñöønqd^ÃÝ5U"êÙµ³…0Ók7íФ=ÞìˆêÛâ¶ÛÏ:†û^[sÃ_ÔäFËŠõeED¸4–1GZNŒ”ÑÈ£´^Réf*>J…šñw!硼-¹µoûB(Ô–Êì+ßøžlä;¸=8ÂaKßD)Ñï³sI]VìMÙ.-Ø« ·ÝrÍän}öÎÅÜ9EwÒ¯¡¤l$Š™
+gfò˜Ÿ ­Þ”7f¼ÜªoJïr6^A
+‹Î±Z×Yž‚¬Vð°
+6ƒ"(5ˆ"x‚3ŸRg39
+ª0ÞC¼ù¶ÿPeïÀfÝNên©Û3ÿ†rÚÒ|Жž ¦hE›<´
+:ÁõÓ©kØLl”KëdoëôNTIîªçlåC"•
+m÷E”JàD-ÖúïƒNâB/“Òc'¼Ù‘#¼×Þ7_·cÓ+|­‰ª'à5„S9A ]¡UÐL{@âÑ«‘\ë`1I5‘½TDöVE$DºÇƒ±¼ñb¨òb¨oFm,p<qÃ#P^^t(zlØ”¨Y^6&™øξtµ¤2A&&’>fÐáÛÂeœÉüéiš–¾@z˜šOoTÎ-r§³Ú„‡×‹ rËË»`íÙ]pû¿ƒGY¤Yy¤Y³"¦ÐÀØ"«K0­ŸMQf¥DÐäù<ËŠfÏ»*³µz¢™šKï» ú§yhôníXã[³êöcßµ4N;®›ÖU V&Ôd¶XÖ´¨ÏÁ¢­mVV©ÅÌ*¶}löM/‰ª&æ‚ñ©h_å¨cY”Ø¿Nd—³¬(ýödfd…G/9ñ¯c5 ý2W†ž,Þ‹S˜D‚øDR4H lqì:ît´æÊ}ã$l´íK…»!Ñ ® j FË`Äk©ÞV1Pû|¾˜œ‘ÙÕgãEùÃoÖ £–Ô“½Þ Ö>+ï’ÂÒ÷Éùâ_ÑXûJ$Ö:&uPú,Uu¸‘\=`•-ítàì~­¡luB‹æ,—ó$'÷Ú¸pû9ÅÝ ëô>(ñËÑw¤p·;¼ÕïåB1H_œÕ“L#E!Pö„%†nõïóÔ^=’6÷(z.>øô¬t§àH§1qNÓ9CS
+endstream endobj 724 0 obj <</Contents 725 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 725 0 obj <</Filter/FlateDecode/Length 3613>>stream
+H‰¼WÛrÛFý•yR‚¹àæ<)Œ¢Ò–JR(nöÁÙÚ‚APbŠ"h’ËùúíÓ3€$¤õîÖË€™é>Ý}ú2?/DÂÿºGñãÕC"÷âÇ…üW"¤X¬D'IªxC)Ò,Î’D‹¼”±VI&Ï"áâO>!퉄N`©*3]Š¨HãBj±XŠàrñpÍ.â‹Ð¥‰Ix^CÇUËLÈ„„‹®ÿ[ñóbŒ²•ì¨Wóõ¢é0ªÄbüdõ.HE(U
+#ñW‹ßí‡8”‰ñGÊ,Pa$ƒß%žÒ🋿ðo9U*Î
+Y¿‹@ȧOБsˆ•ŸŽåK—ÿÑ#:ŸP”N(JÌáH—* ñºÊÿM••rª*KÇFo“òò{¢œQÎÏ¢<&âd}Áý=âLæ ¯øÛ ]˜{<¬Û­¥È»¦"æ´Ìû6M…¯ûF0KÔ‡SYœ]  I\¹NI<2yÉ@ùy
+M0 ¦ËrñœÝºxÚe‘+Í4Î)*qÁêVl'Mè,6šXÑÆú™¿?[äQ¦ eC
+‘e‰Í©üÐ`#‹ÔT?ˆ¦Yfè$LL!720”6(“pÆx°°7=0e²""èŒM†%ÎäùíÌÙl×É2=‘Bià™²Y‘±äŽs›ÉàÄY«ˆ1#SÉ”ÁTe >ŒM5ƒ¥:ãr™’$I¬²®ê?@þ ÎÈyå¡DyLÞa•àÂëF¬~˜f·qìfšOóEé<.Qq³‰ÝóûæŽR© f‹kz*‚[Ê11¿¼ç—9òjFJ×aTòâsü„ l£Šÿ ‰œÑY•·t’—dP®àô Ÿ</¼e–f¶`ÀZ]dD àLË8ÍÆÝ‹•*Õ›Jü$Õ‘Êb*=¤¿%š×§àW›‘T"ñô‚Ÿ.¤ê"Ð2¨Ú| £,7øÞ⧮ø²æ—-~ļٹe™]æ)fÃV^ëø}#v½.+—Õ5Ëc1ûEðÚ®ÝFª.Æß6À/X mxKçbq€ÐKìý«Ç…ÏôþÒšý•Ç UôˆRÅ8!PYðfä¡Ù­ ;IÃa] Ó{A:)ˆvÃŽÍu¾É‚Ö²û؈ÏxÿJ*™{+
+£ÙXb
+¨\îÚ"Û±ýË5ývM— ýÿÏþFy¯¤öˤ°Þ펨5–Ejž]Ëj~
+e>Fž ª‹¾*5ÿ5/Ñ—%ÖñVWFN€Ï ƒ rðrecAñM루>ò Ɔ•->=âçƒ0$# §>m­¹%I/ôg×n‘\õýVÛÇÙE
+^‚Áïˆ> MÀøVbgWê!í| ìõ
+.d(cc¸Ò8¸ÅaI<Þ1 ˆêF%Ö0št|؆=Ð,? MéuBë¡,Eý£ ÌÂL‰2‹‚òÞÂõ‰kx¡q>ëŸ ªéz-¿ì §âÞE%ãÕYÃè>Û´giÍ jäËÔûÒ Aš[^½Øù±øµuX˜?¬s×µè.e
+†´èRHåçP'D"bßxWk+9å7Õ KXZ"nÒw~ïP
+ Uåýx2¶Tž€ük¨²þ=,¹‚¦ èpZØEU×\Ъڥ!Ž…ë4}ÑŸHv—¢€MW–=ìßêMu2nÂq³Õzèõln¤éê—Óñ‚à€AT3dÛrr
+hD¡ì­èëªàñ”ùó7—#4Ãø„ìÔÑ·í9z@ «Ë ¢PUsàÎg{™-™òÔkm;1÷xŸV×£>x±EùüÆ Í%§ÞY¾[»NfâTCË°÷ ¸Ž;Ýi¥ÀtKI6YÊô¸ÚôšŠØ.þÈÜ<ia¤\ø¨lºñÏûm‹ß=‹õ³}˜Rl†9™ZƒÑ^ó”Þ$ó­%l\¦¾™| ¡Þ •ûµä0ÀºIcí}gºõáÛ´#r§ˆ‹D ž8ÄàbHeç'•øJM/9ãלý:ØžLíg
+NxnÖ¥†ñ˜akiP+ã2_CÝÄ"œÃzòN‘øo_‹ÿ+¡ÿ†–sž›ŒàCkª©={‘å6$ÊnHM98ˆ¸3èÁÖ„¯º7A¬Å„G¢Þ"`À ûªxòÝâæÏHð;„¥;¸¼ Xâ:—|;‘OZ°™Sß™ÀŠ)¬X[€gN\ËÒré[GÌÓWôçYùFµdÃbÀîQžÍùÌ,é,E2J*ÆQÆ›"ÚÉÞª[Õȵ®ÿÔHyÕ[êR2ƒ`DBãhÁ¼„;rèi¾4Õ§œyO’Ó¹æs‡´Œf"º^s~Á˜Ÿ¦­ U°¨:0–
+a,å¢/>²<ÌÖüwU V¸u%w€ÔÆ1=Ï‚o£/Ëͳ
+©ˆ•ÃÖÀý-0Z¦×FyB¤=€mP z>HÝ3Åyè·××*’Óh»£ÆS.g„ÐsR:ÂvO£^Î!w.ìn1ß~à–Æ]˜uí’ïuê^£ÓC¡8»¡o.ÍÄä¢-¡¼NÿîžíÖÑ~d?×íá¿Ï-ß#.‹•ÜÙkž‘Öõ£­I£¯?“ÿ
+endstream endobj 726 0 obj <</Contents 727 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 727 0 obj <</Filter/FlateDecode/Length 4181>>stream
+H‰œWÛrÛÈý•©<$@ÊÄbfpÝ7¯Vq)åP^‰Ž¼© ‚S)ƒ”çësNÏ`
+ÃF|2v°–!EÂN]ÂÜîcq^µ±Ã¥tLÚ„Ô3¨fº½ö– 5Ä ävãµßK‘ÛÖ‹€àü¸Îô›<ZBX—¡ŒèVÔj%ýds»ïIG™Ü>²$•EwQ]
+Ýåe2“» rç'ø<Î6b5sÚÎÀÛÝ? h+¹&rðüJP€"r4.»ù¹m}nŽ†14ÌC šò4 _j=žÔuÀÑýÑ^òh —®ªé¹w€)ö4ºjÄ•G‰)\ó„ªÀ6× ¯;”Àçmâ„œqH (Ê糌ÍBÆZgC'á܆ïñÆg(8º´,F—u·ÜÝ© ‹âð*\8 Ž±vWd§W·á#Þ­ùsûÍN®±¦=øüºã•
+ÓCXbÈÛ/;à{Ó«¸®÷»õ¡ùQèê¹Æ(µ£MLñZW ðä¡[ŠËÑÂÜòWþõÛ¶ù"‹.‰¸ÏTÄì¤3 .ƒr9Åò9—¼ª3S̤5õÞû“ݫΙñ,L‹1šB»ì¬WÔ¯[/Ç¢4s&‰¦sßu;ô}èrY*Ó¡;°ÉT¹E^Qž_õXoïø;Üî]ÛºßH|D¹ /·e’ç¯4iÈ_S=i_EOšQÚÿ(Š èè—Ï€#•X0
+”<ŽVîæ=›q¹Ü8óñòèO2_°{蟑§‘Æ”K”r"¤g·™Tz1êw¾º÷Py’Ûãt¶•%ŸmFá)§7,“sÞ^‘8`£ž:]t~ððˆ4î H-Ñ?$jìÈQOà‹Ëá‰ÿdN¨£YÛš‡&¾*}ÛZÕåèÀŽNjùÏ÷¦®zP7å~ß;ìÔÃr-Ôa+|µk¸ÙËG¨íäÒÐÉèÐ)­<é×,«-ó3̪Ë;âãasG€ªutŽ6¡‘ñCÄ€‡vjì´Sù»x†È¶oJÙªPYY&ÌÃ…Õà†hÁÞûrì½ççÁm°fšډʵ²K«Œ²9¾} ~²dj»;Æ¡XH’SnI£ÿUyZÊ–:AYÉrj©U{#ûü¿( A¡‡l¿àÍ-?m…ûÞat0i…â'µ{ýÂ&ÐÀ7¯èB®`²Éh‰‘ ¼ªrE3å´ÏÂú …’–ŽlfÉXõŠ%ŸšÎ lqs‘!¼é.–'ÞvrŽCƒÁ‹CÙ=g:c*±§¦[ˆÇ˜Ïh¨:™&‡ú3Ó˜¬«µ¶K¬2£åøŒËdú&‡™?¥6¨Lì1
+y¯¬(•^mþ Éž »ÐdTùó±gì˜'¬©¡½?GÖÑÉÛÕÙ¹ômlÅ/N?ÈÇ‘sò2ý­ÙÂd 5³S„4¡ìkæÊZ—Êj‡:ñè
+íáq¬Ž{ĺ"ÔyƒäW™.…aë†6†+?ì0(“»´ý Äqçá$A"EåIA_Œ}§Ÿ<ÑuR5&±Yíl°’ºå
+¡“Â'åMÚ{1.–ÂádVl¤íï¤ç~ة߆êúBI•‘â{Œ¶_]Å~¸Ø ¹#“€+SaÌ9%Iˆïo958áÏøì|ÉP’"Á[Ñ…;S2~õ;TÖæF8{'Ìõg!ÿ'S !—ÓˆÁ #Æë´ëÙDCŽz4œœ6¾°³B}ñ®¬lÂÝÚ å…Ä­”X9c"÷´e>G±>ah@ƒL4°ÔÀˆ(ÎlU¢Lºsц{þÖò:Á×ùÒ}ó„Ô„ìLÐgÔHÂL”¹Y€G{ŽKoÜÉ7žHïàè¦.A½AMû˜áDULDÓüú­ŸÎo}×ܳáôj{Ø
+.äç–Âlbi,Íøؽ©°=2"5CÒ¤^Ãó?B„¿½Q]r…{‰¤b^ºXèòÒØ…v ÖEèm
+_â®XÏWOXY8¬t
+ŒáK-¶T¿íEž;,×L‰íŽ&"Ó\v=±m»–‰ }Žµ·²óñT eiLÓÈz<$<“\¨_…©G¿èÌF­»Ýq{üþÜxó8‚>Gê쿤WÛnã6ý"O1ÖÍ–÷­ÜÂ@»’ì(27ËBˆ\EпïÌrDÉrÐM6XY$5œ™s™=º€¿Z5 cîÍ›mf¥eb`Åd|°r‰Î>y“¨z‘‹®Îoã (My:ÙúÚl‹p9 ³Ð0‘°#M£½½LÛÜM—Y¹ÊH—ãzV'rð´íÄuì˜ÎM]qa‘óŽo1tÎ8ûJÆ(¹Á»o¾¡©¿d~ï\$Ù ·oêí×r{ò¤™Þþ±¯Â
+­FqYÑðZ˜K±¤ë”yL «™ºûÎ:ÎDéɽ¢
+dÖ4bƒ{ƒ¶´zÛ!íµmšÁ8à5¾¤Íd'˜úÕÁJ†œ‘Ú{eÞÜÂÖ޳±k”®:º–šiNXø·Õu“5š0‚©×Aþ“ü„÷qoQËËÔÈÑô‹<P‘@HL}R‚²ùk vðÑ;?ñšÈÒ»£#ÓÑ{ØÝ^’d0<]K#(-àoõw’ÍÙ5»3¶ºƒMèü—|ëP
+Rn¶#È+w6#hG®#¶²û'ó¯
+endstream endobj 728 0 obj <</Contents 729 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 729 0 obj <</Filter/FlateDecode/Length 5858>>stream
+H‰¬WÛnÛHý•Fžš ‹C6oÒc&kÞ œ¬£Ùy˜,´DË\È’CQ ü÷SçT7I)šlö2ûV÷:UõóÒ$üë6槷³9˜Ÿ–é?“šåƒYÄIR8^X˜¢ŒË$ÉLµHãÌ%¥Y>k¢å¿ø"Õ‰¼ÀÑʸ".³…™Í‹xžff¹6özùñ†®—æ³Éy,Ä«¹pÉå¹›ÇiiÒDˆ›®1¿šùy9•´]Ú³Àæ멈JÒËè•ñ7å»ü(,¢ÔÙÂä)þgæïºG©ÍãÄ|²QZZÍR›`?ÅWýcùü7¹p..çƒÈÙw¥… §äë3éìÌDéSú©‹ÿÖ"YuQqQ’Š&¼ÜB¤É^‹ÿŽ•R9gUVS¥$nF•ªÅx¹½\}ãåi ŽNÎÞFsûáü,êçt`f¾àGvQaøh÷;¥™ëæÁý‰¹“cÞÛ65va”¸Ñÿ^N7‘ÓAΩ˜‹²(ULØs´t¢uôæ!JkúÇha#<}¥©}/Ÿ‰}Í
+û:Js»”ufo¢™³ïoEÀÊ^CÀÑl.wÅŽÞ1ô TQF´,姴õ†Úh¶àÚàJ¦v''}$/kÔæ©w|ÿ4é÷¦G}>‚îö†âï£Yf;9[·]³êåʳÜÐÝžòìUÍM÷ENÚ•W•ªuPª©…™­M ½9`nX4Û¦)l›˜Y§…ØùÏbÃÕQ¼ÝuÍNþQa#äsûE6¦¼²×ªÞᶈ˜‹÷Y7}Ó=ENBüqجͽ¼,íKäà"•Köiþ[Zé|]Áðàœöt|ìת"%›DJ6D
+aë7ûºƒ3js³nv}Û¿ ¯&ñ•äá2¯Ì Ä¿†™ÍáQ$©·[ˆìƒWÕÞcýCô}³Æ†®¬ÿKñ%!þõTí(ˉ E–_‹—¸¶>|*»Ú#Ϲ§4¦h%DWußÀºòê{uãyýHõ3(Ñ¡7«½®äg+ï•4Hr¿Ÿ
+ó ŠëÅÐj·[•äŠFk⼊ùýŠÉÃÌ™Æ!˜Ö›œÑ$áñ„ð¨ù¼o¹KæÖK‚ÏY¸ÝÖ÷AòF™š@,·{ŸÁÉòObïW´b/fôB–ÞQÔÔ>﻾ÅR]ù">÷»Í¯ˆa8“w•dÌ,U
+JKôtVÁá…à° XBb†¬WÜ<®›Ò.$@6!}åœ`cV L"ªÞ®¨&´˜þ¯Bj·ÿŠ_&÷\léD‘ÂJv¿î¥/$L6i˜1RhÜÈÅÜ\Çñ2˜<+Ï*Í,+ãy•š™‹‘©k×`Pˆ€±j›;éV ç RU¼a€T`Ýl£‚á«î
+8ßCiñ«¿Ê%‰,wX’=::Kœ’Ùé‹4÷OÌÅsDkp9ô,jNöþžDÊUA„7^þ+³Öë”|LÊ“ËAv ©Qw3–I>}FBçý·¦š‚‰îlî“Â"àÛ Tš}‚ &ÌpWŸEÝ‚aOféPGÏIIAÂ¥ºÃ¥¦¾ K1–œ(ÝBºBD8·ˆõ>
+‡¸ŽÍ’‚½d€që8R¯®X‘”í;‚ÞE`¤õ AOe°èFïi5œ³½pg°© ‘ø#{
+kì‡s«•G:´V1šíä¨Ç ºwLBÇ nˆ_‰‰KfÁ z9:¦„c³»©ÅŽ¿sûÖ 
+9ÕÑ +ñôªyµÊ示ü‘…þ°óvY\Y08RCõÎH
+¨M|ÌìD7s jõív˜Bq°Æ¾kG…¹k”
+1}Ã\ŠIu ‚îDÅ–ÍõVÜi™¤ò_8ÖžðRzϹÄ{… ‡
+˜?øþ²ûK_OÓ€gRy¦Mƒ
++dØsïñû;ûU²ã¶•E…ÈJj”q&{g¸« m•ôÆÅRТZR%ðß÷=ç¾IKqœMÒÈÂ0ëéw8áݣôÅõˆT“qA/ØfNsË"l³g¬»áIøºíºgî 7ÿ‚ž¸´‰·…·/«ô$ôƒË‹Ø9³ÀÝ;`â¨Ô±u]ê QÿOüh}ƒužR%3­o„l%š[£;'­2/­ØÕiܬz³D!f‹i{ÀÅö? Ktï‹ù
+C‚´×€ª5É=ëD_Õ$P"ÉÀ¯Ë I‘§K¥Åeh è½»¸vê4кTA(בöi£·›~÷µ@oí'ü+e²£Xë/Æàëi°S]µC^ä 7Ï€º”Ÿ’™¹•ˆ]iI+TñMÛ«&M–ü~¿í8¡{©F±
+Gã»/Ñ¿ùçø4ŒŸ Í[Fñì#"­Ë%'C13õqÁ»I§AÙÞGšn"Bä€Ätï/ì\ÂÅa\hÀ"ÖÊh€Í5ÌÍ!+õYVD~ÇP,<Kgÿ… 0ŒÒæoVûó°
+¸sE}ƒÕškV“–\jí]6üĮ۲%Y&{L𬧭y†¶¥icQL#ô™NOè‹r§éAæ =%M­»çÕ¯ZY«ÕÑzV!
+P uñðó%n%•«ÚTé…‡ š&H’ ‰-"Q;
+QùR©ì‰I¢\.ÀY×6TÏq;a“]×£AwB';y
+SeŽ*•&$’sªý£ìuSùgY.6ì4.Šì¥$âvšÈW‡nö¹¿†1\Ù΢èè0tô
+ÂNôDáÂgkªºžçSoȯÒyzòè8X
+ïÇøõ´lη>*É]ù¼>ŽHõWú0l7>óoWÕYás]÷e2ûe1GZäëÒú5It*/-|s$1 ’Èd0Ñ`pQ…'îïGN½ºQ¾p´ÁÎR£™È°~E*,(òýokŒ­Ý¤Ø+ÚÁqîL)¤çáC¢Iÿ
+TÇ™
+eá Ô]»ƒ•˜”Öûˆ{=ãÏQÕ ÇÈ»mwòßcw>Cªô¹ö:+kvÆÈhb˜o0:VóüítþJNÇ3žÕ´¿þA÷SϹŸ㜧ƒFÜ<j×àuû Ÿø‡×=ŽýKVgóÿaq.4ÊœÇɾÙãT7=N
+ÃJiXgQ]°~’ÈFÕÕ2†0tóTéˆ>²Ú…Ñ“‚†ü)FJï°q„¯')Õ_j(¥®ÎŠm]ªÂ*j9Å¿+]PäìÀ@li¶©ØŒvò"Ë&íèPp73J²o©
+Ãɇ"I ­òBħÅ‹Lëµ™}9̵…JrvÖâLŠu78¥Š›¦¡c:8ó8k]µd¼m.üùÍFfþ‰Óç}Ü¥×Ë“æU@ÑÒb÷ܨ0¾¨"°¾è¤g ÷›OË8ˆ¹3´I¢5ŸÅi‘^ÑZ8cÚD5ê“ÍË]»³bçÎCc„6ÜSudЧ¡›oرw˜ÜŽò²…6²U‡jNú¹Aqù[…:Ï«¼ì+TžÌ4“Þ½‰
+vaWC¢hL‹¯Ö™PùšµWšÍœÒ¬%CiâÔšêÍŒz³ÖϾ"xYo®‡éÌBW^˜Ù|*A´ó´;_ТW°ˆÓº €Üyz@A÷épbZ¤b_¼êU¤Wù:½òÏ·…û’òσû
+ܱªÛ #ù9ìB±É¯¸iC¢ñ¸âŽ„D“·è™¬<°µo¿GPLË–¾est@¦-[¢eS´lcZ¶4säæ Ú[„Ý™«P¤ÚCŠL}€²’}äafò{ûK;Œ­èè»—øfe¿ivÂhZÇu™Ù è•ý!jPoÿbÙ®òÅý*[¶‰VX™„Í,¸çU'I3œ°Y‹à <O¨q’ü¸UÉ¥òJ>{zÑ=ÓåG„™ O\7¦ÂÎf§m “²©LÊò8¯Š³:ýlÀzá¥ÈäÔ}ôÉ(™hŽ'9 v(–Š3±4,Sµ[è}7ŽÀúOËRŸFi²1Öu¾ŸðÒ?…õÄmôZª~R:ÌÊŠ¬hä]ʹÞDRæký|6•'\ug$ÙdŸ çf‡€ìðLÿœ3qiŸÒš”V¶Ás®šTi<ipJhɤRÖh]5–ì^«Äfëym;{)Ÿ í–žÅ=£ wÖß>ö^ûTŠïÝ·.¢ó ldÕóÒüÖÛङa²ctâ/Ã˶8Ku6¾Tk=²j¿#ÚKW¸l];.3(„‡nbÐGìmfP3”F3äĦ÷ß+П•ªÑ ’E“@—yêéAE2sÿ¢9xÓ¸¯Ì£Âv<8O Õyš %EW£Â'ÎÕÉÆ[ãÕm ô¼èa›¨=ô­r`ö%@td§sºð–N7wg*²¸U`RñÖ¸?tÙøìÚšAü±7í7CÐ,Þ´°)È£eœ¥iŸ¥»³Ò*ëØóØ!@nþ†ÔIøú/Ÿùy<õF.¨¯-ákiÂ8.„V¢’2’”Á+éV$O—bòDélDbÐt-Ý{–=Sxgzµ4rUiÛêâ9
+\UÊ€È2io|Þô¶†.sâ\XJy“dÂÜ _üèþx>·
+‘É †¥òj‰Œ  Ì—k
+ÃÒ¨``äåÓÅãH9*<Àµ+39PU¦À°–ä@èX¥Ü„+v[và¤+»ÀÒ¥Nš0»Ã¹'LÑ#ÓíPiÀã3&ïCé=ê¤ð2óÊÕòÊÄì,‰ï§×‚´éúÒ>üã/‰°¸Û{_ÔNu'LzšÆyêŒy_¡ñnC¬Ú2²seaïf!6 !V™?Àכت± ûgÆÖÂ[¬´±ë$é둪
+È–C=J8–Hg¾ØÏ6rRº”fØ-ËÐôà¹yþ7Ÿ´ØÁ—WÚ'ª‘ÎwÔµHò9jµ;þÉ^¨¥0¸žã3߈¢ÃsÓ‡µÞÕ(¸¹ˆ‰«•…boKw"܉ÍÃÏW~Ê1Ìš “Æ–ºݦ&뚸) ÄiÍϨ(ãlDÒ×ÐSŸÅŒ¥¶5p/sØ-s±Ž«uzî-Tæ¢ÿ J9ú»þpjƒ9³¦6uÙ]g¥åË$a‘5/…¬p±ÆUÆ/Û ¹›9C1ª{ÆT,Éûu™µ%³r˜(T¹k¢r;©´fÏ»$Y£{¾Y¥ÄØl¨ŸýOÀ9¢¬^a¨h/¬ïÜÕw„†óªrzä>š“×tN.¾l[¯ØÖ®Tš—Ê<'ˆ{°û*ñ÷@¢Ê¢ÖUùÔ‹ã±åÿÛ†\rÿýO€
+endstream endobj 730 0 obj <</Contents 731 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 731 0 obj <</Filter/FlateDecode/Length 3803>>stream
+H‰œW]oÛÆý+ûHËÝåRdßìX R$v"˾mq¡J´Ã‚]‰Nßsf—–U·( ‹ä~ÍìÌ™™3ç+•Êßþ^ýðö:U÷õÃJÿ?UZ­îT™¤©3² T.Oò4µj^êÄš4W«©xõ‡ìÐ~GŠœÚ(ã’Ü–jV¸¤ÐV­¶*Z¬®ßɆÅJý©l™%8|^@J†í¦Ht®tŠÃÕ¾RÿS;u¾šjóMƳg½˜¯ÏUôGMêuüÅË]]CD¬MäT¦ù´êÖ$±Ž²$U¿F±Î#Ït”r\óÍÅ¿­~¦ÂŸ ²3&É‹Aeûª¶Tô¹e÷‘vÑ,ÄŸï¦çk“”ÿh;?!È”f¿ÆY¦„6Ù «üo¢ü)Ç¢òbz)àf¼Ò¼ü7^v£—ç/¼<âèdû6.¢ég\?Zõ…ÏŠŽÜÇ.:ð¥nw*Ö6‚u³Þý©ZbZÖ5Õš£‡J JÌèÿ §ñzŠvšz¦IYÌ ÕÔ€Q6/EOyuuÅDW¾'úª³ßwíþaݨ¸,Lô¦Ýmëxuu‹ÉÝA‰p
+µ“ð²^(Ì" Ì]îmC'"mŽÏ^äeÏ\Ô©õ#ŸòÓÔ›õïòRÁi4J3izt…–;:œZfþŽî™ÀT'…8,Ü4Ç©3mµ‹.ÖÝZݶÍÓC¥–gÛ}çWPîàmoм|Ý ù<M´™T':.#õ¶ÚUûuCÛž4^6Ͻf¼<+CŠáñ+ÜÁEŸá™J…{ˆÝžøû›ÔC÷ÃÊä>že°÷ãð.£›jËÇŽ’ÁJÕůCŒ™Sð‰žGßb]Šñ
+ÿ+ÁâGÞ¯Ý4Ës½ÛIZh0QǾ*±æ ÌÕÅŒ ®óç\äÖ$&Keð—œýÛ÷jXXK&.F'a ¥`9-ÝÆ-Jæ9¬en«$o|öž]âú¼ÊÚì Ú'꼕#ï¹j<‚ÖêËÏx¯ò>Õm°Æ{Ö†¼|€W£Eµë«34KÌÜ h3çí¹ÄÍ”ñ‘®¹B€q„"`ÑaòÓÍâ:Œ=‰ŒMÆ›(}}üÀ›€>®´¯6UýEîŸÊ_äéÁÍ¡é×S§›»$-ž¥NC»_?1SîžXJ]="“b¢c˜ÕŒãê«¡gË·ˆH†4õ³¯r,îÎ1•j@-CŠÆ#%Ñ€á¯O•P!‹©h¬M­½Æxw0¬-mâr*å$ž_¼¹ ü‚Ó L.ÃìÏÐ9ÅÝ|„Ó(
+É&’†l0ö‡’ÉÉ=iA]èHÎbAS°<'u9w“®É<ï9Kfòó6ƒ@Ü4
+5Õ-¸âü;9EÃÐv(Äy¡¿2el’õ§˜¬­5G^yf¬cÆqÊ>&‹Ií³¼| ¤ç…¸>(ŸÃó' dÒ’pw8m ”¶õ2•þµÛŸð³~éþÎÛÆXÏß³V zqæÓû‚ázÅðzóiu¡–‹2°\õ4"w æI‰[HXþÛÝZËÅ'~Þ x×\¾ê?1`8dˆ'gÄTiþ÷uj1 of$I=¢úͶ(Yβ¸Y6ÌaPK¿4øäG£î¾{¾³ôb˲÷ÐK±3B‹`…¬x!Û0ÒÄ‚5Ù3Ê› Òñ)žù'ššôqÊ4Õ¢ë$f¦í᣷Î×£y’—’@ <õS}ÿ´Gž¬˜ö Ó¢ÅÛ \xtëPŸLtë Èä0
+^Àú„oKœîÅG»fïX5*0ÝÜ Iâ,l¾Æ‘œ‹6ÛoRó37òbûÈan•P¨Âå4Õ4Õ”f†ü @¶Yé/<å•(¯ðĚ̬îêu7aŠÅSœŽªÐÉ0cEã¸õglq¼òŠáðÕûy~
+ßÍ2äjÆߦ!¼·¡ì½ÈéÇ–t­‹™d:)Á°‚nøP£O¾®# ËO%ù½‡›æ?'yë(¡Ï™S¬ÐMóêCÝ)‘”oüW’]%Ç‚°œâ
+C’2—3ÁPçI‚OÇRu[Ïð³œÊ·¯l´ð0#F&æŽw¼,GB •_OºýZ(‚¬óɾçž0ôÙþ ´Ù¨GmÖ‡îù²1Ï˲£d¿¯ž%sÛ'óI\ 1¬µ¯%ÞHSŸtm’7v 0zcH>o ¨}¿ ÏO6ä§5!6fËäRF²x
+]#ùà ºî ½ÿ?¥{üOÿI¶¹ñxQ6m?w+$ÈS-Óo7áã Ïm‰q˘-ù àáxŠNüä!Ú
+VŒÐ(›g~|„;v#¿ÞCU·ÈùÍ"µâÍVÄóMã„9¾p¦â’ò^ŽÖqHkܼ@òf÷S!ãM+n¡;x²t&Ⱦ8Cíä/#j¶r.@³ôå“Û]//Œ@oNîu£H‡ 9ˆI¤¾eݵºC5ñWö½#סƒ Žô×c›¦>t lpC¸¿Ô;ô¶Õü¾„,ø/ÊÀ˜7¶.‘X›·gÍJÀ:þì)õ¼'XÇ\G "“h/Y&yÞ‹6’.<ìÇÎy­Ï¿aHeéSYø\žSÃõ?ÊR^r70ÌÒ^Ï íɸPɆm 1Ö+F´+¸qu•ãp0 UÔ•{¿}IûX²€J´5ÜF‚é0é†)þ7­”­˜ÃÖ2óÜ=ò··ObÚ|'À™øtfœÎTÕ©§h€’5
+:š¬É/š:‹o^¨Ñ}š&aHuØjt©ùl,‡£‹Jeµ;ú\säå@ðzÒL°×W‹Ûï*®}ÅYªåD(CÅ‘ödU‹Euz\Ïèöqi»|ôd8g+ð+qïê{ŠÚ‡›éƒ&ÜÏ‹[éN=iéJZ €8Ê–ç;×ùÞr@Qf ˆdŸ]ä.{ÏËeV©J7I÷¹\ c€zPñŽÄÒš¾sJx×éi€zg ‚è¾åßG3ä¬ ‰Ìÿ:=Kpuì2_ɘY®&؃IoƔڽôù]"·ík™›v1g@û 4œL•Iˆ—M|Kd¡Âò‘¯ÑÊk˾ýÏ·wÈB‡Ë–?Š=…dgÅŽö—íWHœ<¯ zêæ\
+ôÉœ'¥*’Ñœh…¯ûÃñ¹ÝÉd/ûmJ‰°¦ŸmgÍ
+endstream endobj 732 0 obj <</Contents 733 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1500 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 733 0 obj <</Filter/FlateDecode/Length 4432>>stream
+H‰¼WÛrÛFý•yÁÌàš7…‘UÚrG¤“Ûµƒ „-Šô”µþûíÓ=€"%;û°¥Ì¥ï—Ó¿,UÂû[õÓÕ"Q·½úi©ÿ™(­–kUÅI’>P©,ó$±ª¨tlM’«å½
+T¸üßÐr#¡Øj”ÉâÜV**³¸ÔV-W*¸\.®ùÂåRý[Ù*‰xQ—”®›2Ö¹Ò WûVý¥¶ê—åTÐ6)hG›Çc…¤“Ñ$"ã{á»\‹P› S©Æ¯UÊBê õ!u˜0ÒA‚u·,ü¸üþƒDÎŒ‰óÒ‹l_”‚o?‘.ˆœA„~6¥¯M\}Ó"¶8Ã(;Ã(I?„^¦"iRÏ«úßX •§¬òjªÅͨR’ÅÚ|ÓË£“͉“§q8úØ^…Eðö-ÜLÚ§ì?«¾à· #ìÃ,èñÒí¶jêSë¸ð HH¿iëÔÙ‰€BñDBò&‰e)ÜL¨›0ÚM[c¥o•Æ¯år<ÍÈSFÑl‘˪”™òûhzI=ß26Ó9¥j¤­Î‚ëmwèêzw©~kû¾«à¶“ˆÉÙËI\•yÅ|`‘¢>lÏǤPtÂ'ÖDM]µÛv_oÂ2²ÐÄNêƒä\—ÂUžåb¼#5‹G~IâgÁy¹UŸÃ( èuFiÀ_;<ú0¥]~]ƒûAŽ_ãÔ–^½âDË¢=%¸Å1d»PfªL¥iWG¬ZÕõêÀ[ªíõ'¼m¨~t=X)!VÂUßѪ&&t[õf#+[¬€·jvÃæv¥aR‡Îí€#sãÍß ‰Ô2»ZtšÍÕÊ™CÁ}h’
+zùì"°ITᨬ°¶Å£¡šq€ pbÇKÊ®¿õ;í+µÛ«§ÚÒåýcHÙÓá\Ï9Ýk7žS«v ;Ôì澡MpÑEÊÌC 'ÐÞnÕF8Ž„£xس{>} %NŽê b2ì˜$ȱ [°¿e]^¿¬ê*‘­Z² XÙ`9Ã}ÔÔ$ЉzQ –>~Ù8r·©Eá«6 ù¬B¾,ǘO3‰ùߨ ~‡[gsŽŸ2íX„­¸‡í8Ínöl±G¼Ô IH§ã0¢¢HÒŠ¹gPf´ äÖŽ)óúŠ—59ùзâ4¸jÒ~»åõæ<Kµ›0è\Ù ‹ËÉ /.NT„¶ðyEîæzeN³ímÌbuÜu$ ájè…~¹Sä¶"™v
+ƒÄX<4 UáõÃF…U¥ƒß?Sã ƒˆP“f-@õæŠR|TÊ–¹ÊÑsŒV‘ÕqR’‹Ø”hÜ‹'-T\Îò²¨t<͵ˆŠwes—@2¹‡dÈù‚dd[åII|4.†KÄl !´”-¨éã %I´jîyϨ`<·!Ù
+ÁI¢¿_µ+«•t{{%â×ôgKx@#£[r‚g ³Dظkî<²•3ß…’‹c<<&“ã
+@kçÑû
+zY@Ò‚
+çÔºI—gAé¨RVÇ“.AöΨ°CSËLÉI÷êts¼x‹ËÓQÆÏgø1«ƒ,?ã“pá ýQ!Ä)”B™mÁ½bÜÅG?4µú–™w¾f)Ì:eHL)7£ÙýD£Çx%,ǦœÝ^Ól8#^ \íœÿ‘_2ï(Y°7À×^‹”7»†¿ïxÒíÁ†{›ºgmpL‚Ë—­Ž .}ÆÕ
+¥O, ͉¯hïóÜ ™Æ\¢ÔtD¾žrmèg¿çºÈ¼ù?fÜz¼|bëÌÅÕ“!NhÍDð\¼^qA' v\ĦR¦à”KuRb·«ØV’Ž ‰|³¦íœ™¥ÞŠã=ã`BdY‰q‹ev:2éËv: *È@È÷'j·½&N¦+/]é#ä›ö ×
+
+ŽkVÚÍ©k  ™Mïdìå¹–_Ç‘”´‰¸¦Ñ{ͧ\HæÁ/6ŒïN(ÑâÞùÉ“7¶<cÂ`ôœ±®ÌZäÚnù¨p3)=ÜæÈž¥éiTÈ_
+†ƒ—òÛøÛ=zŽ·â-Jc£§áYz/³›#Ÿ“:8Éå·(’ÌC|¹t’í(¥ßp€^ÿ8ÀÎ+çþ!ÃíI†×45žÏí‚Öeûë»þ(ÓçÓÀuAË´žf¸cZœÍrMuñ½Y^ Ynþ/Yîe5^Ö„e5:Î( \f >®¤,ÉcYœIÓ] Ù_g%Ù_Á†®ÛUG¥²JÍPñ*þ'ëà>
+Bå
+ÂóÁêD‡ÓLäJÑ8Ó\=“H,"2x›Ô¬–°Ï“Ò? W²7ºê1‡¡Ðy¿¼¤ª„AÕršôJ(qüן6fµŠÕ³¾|>}íž]Ôü—ôjÙmÜ‚¿Â#ØŒøGÃqYga;È!Ú¢dfiÊ¡¨]øïÓU=3Y²w\Dñ1Ó=ÝÕÕÕ&Lå
+A0;|ÙI4¼²žŽzÔ•!±ýº¾AÍÈv«VºÂ
+cÓKÈâäÕ,ý#l‡U3£:—à•YÂ=Òõæ}¬÷nöa@îÁç×P’¤&¾—¦1‘¨t^êZB¥ÍCbCã?ÝÅgX_kÒ“)ë$§8âra~ÓhŠMã0Ñïƒ%åÍf%ì•t²rTF•ð_aÈàòJBˆMO8ª ÝL“ÒÑ4J’ÂóÓºƒGƒ —Kþ~Áo×wü ƒI™9—Wz¤K_¼H¦zK‹(浿»'°Iƒ$¼s–…3WéVNjh‰þ½§ó·öTËë5ÏÑÙ.pnß¥ß Îm3°Aà–Úø`l×­p׉H3“cù‘03”FMåË–Yµ%šb Qà)Ûæ¦Wœ:µ¾Áë÷TÉ$»Nveôc!âòMC­¡}®œ…õ*ux¤œ&¥ßRÉŠC[©¾F÷Å›«ÔÔ$×|ÇQš”ê©KÔgÄΣZ_¥PÎ…Í÷|´6t“†ƒ/eNcÅÙ«Df^¥T²c¨˜¬Ÿ€Ê÷PRþ H\-jµ
+d+Seݯ„¢Ÿ•à9å¬4Æ̤<í‰ùd­Ò“ßù®Ñ'ãߊ²³¶Ç@U-B£‘õ ¥¦@±¤{Í]Ä~6ó"Zq0/Ô‰·|‚d’O‚"›ü©CCa$¦ø`×|Å=JƒÏBQ/`%>ØâŸg£{{Ün0½40/®mõ«ì„X§´ä‚/lê.¯ƒûnÀd´añAÍ i}ÃõžÙ3h-ù?êzʈ,hãŒnÆÇè~f¼{‰è¾"+÷´Ô±1Ðç{¹ÝAÕè5‡;õ½Ó€Ô~<©žç6Õâ8‹­)o zË „n
+à¥ð¤TÈÏô}¯mÄ2üÚà›>л %×'>=-"2‡§ðöb9»ûç{„¡$Qsîs¥vŠý’ ª…¿] *Ë“ŒÄá%.¢Åbâ¡ûP-0Y§O¹{xsqùÆç“Q΢¸pM:˜B Ñò™]ä–XXñÅÖ$ßÆÜDxÁ‚%/WTÉg¨ö€I±Qvku›þ2cÉ]Ì4Êï+ŠÁ¬À 8{Ü4¼yÖK?NZáÛyn6xò}èÁå5Ç¿Y剻vHAw0¸Åñ¤ftr)©Hd<ürØNZ-™Šúå:ckŽÍ{”)L¸”ÒSì=ÏR–¼Må3¾…Ùaƒ_äZŸš£
+ðùýH­±éÙû¸s™«|.¢R†/¯Þ‡F “ñEçdìePM‡ˆ¾:jþÀ‰<*K‡½üI'e©rEæÕ¹“ó¨8Œ$ƒVñqE°Î‹iX(Uƒ—Yì%Z•ÂVZÕç[×jûŒ Ô†˜÷RR[þ'˜^‘§ˆÕ Î]Ýÿ 0
+endstream endobj 734 0 obj <</Contents 735 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 735 0 obj <</Filter/FlateDecode/Length 3898>>stream
+H‰ìW]sÛÖý+÷è0îÅö¥²¬(ìØŠ+²ÍƒéÐ$$1C‘
+ÆãŸ=g P¢?Ò´/N&|?wÏž=»÷åÜ$üog^\Ísטsû¯ÄX3¿5Uœ$¹ã‚ÊäE\$Ij&•S—fþ`Îæ«;Ù©¥qy\¤•‰Ê<.mjæ+\ÎgSn¸œ›_LZe±>)å–L¶»2¶…±‰nöµùÑlÍËùØœí2œõ×|<6Qìlt‰ÚøNïÏäŠÐº 7™ÅßÔüSâÐYœ˜÷Ah‹À…‘ Œ[|åáOó¿Á࿋ɹsqQz“Ó/Z Cäî'ÖQˆžŸÏ·.®¾ŠH:9qQ~â¢${Žîr•X“ù»ªï*=åéU“dì”ðfpiR}K”ó!Ê“gQqrz–ÁÛ·ˆ³¸Ÿ1€©ùkræAƒõnkB›‚nÖ‡?172Íu›zѦ6d‰âßÙéÔNµÎÁPbcÕÎªÈ µ€zS 'n÷¦NÃ( nÅ\ÓÞ‡EP›Z «‚vñ!ŒŠ`³æ¿îñýÚŠfeÁVV¶f'ßåÑ^vO#S.àÞµ¸t'CسàîÍf--G0c–;œ¿Õ9gÙ®õlüË´úý1”-r€ôä–V7ýÅ×FÏlÂ,0˜«ýRXÈä_vðÃ醿Ór™Yl½ 77a4 .>c¢þÃ0,Ç!p¤Jb"Û\¾_ ÔuCTsEµª¹X㢚ÊYE5W»×wø\cxÑöÉÈ 8ÅUŠÎ¢°03ùW\™e½ÙÀ œÌƒ>Vñõ—cÈ.f²gñˆµõY¿’îméˆmÙ¤wuBíKm ú'×wAoïž‚+Š©sîñÊpˆhLéÏP6]†Q˜–,Ä%ÚÆÜ0f¹áE‡ÞѺss¦åÜÈ &‡ò9Å¥QšÆU•úPáîéõt>=m¼Fâ¬7—$ÄLrsNpö*LƒKeÊøY‡Âú¶Þ…ruc.ï)r2M…#.F6¾ú6þeã÷4ú<ü0œ£ ý¦åþu3Jë?˜¢•ýÊC&UwˆMÊ)zI³Íl»(
+©N”Tžú<K¬
+çËeÝ4êì›"¼ÂO}J1ÒQÏ•ã TïÔ©A°‡=¦­¿Œieyì„ã,o„.÷‚8…¥FàD)¢rߢU¯ %%µ¤âbÉ+RdŠ€HØN$fàd" ®¼:8Kb9ÞÚtéç„>åS™ Í%­§6de'·¸!‡šýk1à$äýÁñ¿å.Úì–‹VœxaïÕ 7ÏÙÁ½½¡éSDî­üÐÑÛÝc½–ïàú™Y·F¡’Àj­ ‘¨Î®§'}̬ո˵E]¦CIµ}BÄþm#¿;|·¢·\M±ùTcÌœ¯Vø[cYsŠ&O‚Ÿ kEìÖ>êêC·û¿R85\îÔîçuá– kEOïÃêDÂæÁr›*γé[€útøw@.æ÷˜ÛÓ˜—£ãî%Ç:fggÎÜÄs_/ëõ¯8ͧ×ÓÔ:ç”æÓµæ(¡6Òù8—ÎÆQ½'Â_ñ©Ëõ3ÍtÍ&½<<z´=êŒ?VŒR(/ûª–mz¬Î Ç^¹–Q’öÌرØPÀã¯Xÿ©vÐhºÉ&læ–-[hFƒõr 7x0V=ù£kõp\d\*ÄÁ`bÞ9üµ?ÅLëS<›ÿé[ùUU¡‰Òëõ÷²øD—R¯¾I±å=(•iœ‹r+r‚tfÉÚ´ 3{EçálTvÞª¥H!áŒÄ€´qBùîR’©A.EŸùB©f¤\Τ䵚™2L&•ý5Ü„^T°ÿŸ^´L1lÊŒg¬°–K:ŠLH‘,ÀÄw‚øNFñíÎÁºÜA2ê '©/ÉJTE<Ír…UÐpÐ"¨½K™Q1Kø]èóŽœqÈrË‘Ÿ8ÿA¢äƒ¹Nˆ¾'¹¥Ã¼5©óÿh)>•ôS!;DK…Ã¥Ö,¶Æ‘|#ð|xäÌ­Ìl Kw'_…ï÷x«-ɳç„pCZªîõðå‡ÆußõTîÇríÑÏaÙk¦/ûUÀÎ e¥ø6Í‚£]Ô÷‹¶n¾×ô­öIÝ5¥¯Xr×-@*U9dV¥Š¥E±ÜÅÂhŸK—欨óKY»§æ|ø¬Ö` ªq‚ÏB4¸ÿŒæhõ-ÑGr{¶ÛD0Ó-8®›eìA#›@¯ÝÖM’M/_~wŠ;οD¾DmOÒêH¥ØTu• O°xUŒ\¥Å‹Ío_ÁÐÿu†}g0j
+`šBy¡ig_QvÐá9ÊNå¹PvÕ«9È #[KLf J­ÍoçΘG`qüòÏ€ÁNc›b¢Òàù8ø€:õ>MµKÑF§ÌºN‡wˆ>JEijnk>ò®µHo{o^­%íÐ&û'žeIªâr’ù¨±¹Ag“ \‘hýÞ<îwËzuØ×£Æë+TˆôPé²®‘aØßüàƒ³Üm†æw!0{¤…¶ÑUp·ö¾67Ýföîäæ{n‘m]ýùlr<mYl%/<ÿ:»©Wˆ»¶å¨»Zn%q8¹DQdký¤ý8õ´}áa« ´ñ<ék.úZRDsfäóÇoÐâk¤2ÚG?o$¶çÀåwϾӵ7¾o.™$y§¡¹
+ŠNžyôÇO*Ñ“%qÃ'ª'ý®¾Ê>³Yp¥»EÑ_´mÍ!1ªB‘—Å5/9£ý|Y1ÆEÿ²’¹u»–G«å”ž¡•·bÁ†ªR7Z63ÔD˜À;öXHÓ–zÛ!ìåT TŠg.Óþžã\Õ˜ÅàÓÑåºP}Vc+ÒØw´Ú
+k”JÉvÅ×0M¼Û.{éÛzÿ°P*E¹Ê¿Z˜z}®¯aÀ´Y£óëöÓIŒK1ÅÚ8ÍóQ}@: í) ©RöhýÞ²‚îtŸÇþ€wW‡¹£VS¶;à±ý­(€­ñP“ó‘£çnA/žlVÜHäÛäE\WMZ%òjÃ’q®Œ£bÃFË6?r‰ÔŒÙa¹¬%M$YnHóÃ#ÜÙ£b´}E§‹\»ÝaÆ\]ÞÈÔù56L£¼ZvÇà¯ð(‘ —õ8›LÃädNÉ4²bëµY`ÿ~»ªIŠžÉ;”D²›ìîªê$fA“:„€Øý*’K
+l®ôÀ´³F¶Œz
+ê¿>mªrS~Ü­Ø¥HP ÔÒAZi„2YöÒu­HNâ”À/͘=Ý΂‘SnŠJ«¢ $Ç÷ßÍ|½ep¯kȵd+”­'Ê
+ýê]•à>Ê&“l:hƒvÂ{¾œ1Z˜M„\''ÂŒ£y¦—O
+‡,ƒG›ÿ&Š¢¨ÓÖSÝ3/T›ÚwHŸâ¿ÞzÕoöˆ:
+ª 6DãZC$¹å°ÓI£´g€Þu0[¥öo·ÜżŠ+›šÂ<þ€={‚S 9ÝE^§j3Sžá×óé`U Í?àêó=Ü0÷Øob9Ýì‡15áÁ}ºª®$¤ 4$¶ç°*Íýä¥BkõûŽrj¿Œ1·WÐ#]Qó]¯kÕ–Ž~S¯×PÌWhED³¦Å ¬ŒUüO«ȘÂvj¾~à‰ðûŸî¾Æ6ˆó7e‡+·°/ÎC­Ê,^¡ &²¨5&Uf“jR*¯5ô
+ ôpÁ9ñYsƒ®=}¹} b­¡¶Ì†Ç”¬à. ö\A·Ñ²EÛkÒŒMm‘¥Uîg4®ƒâŽ6)ú‡g¶°=/Ó¨Y*qßAØê_—1uí)áÁí³ùW€
+endstream endobj 736 0 obj <</Contents 737 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 737 0 obj <</Filter/FlateDecode/Length 4528>>stream
+H‰œWÛrÛFý•yv 3 €¼)º¤´µK+"µû ¸¶h’S¤Rqò÷{NÏà"ŠŠÖ.—E`0ÓÓ—Ó§»œ©Lþµ÷êýOÓLÝïÔû™þo¦´šÝ©:ͲÂȆZ.uYfUYëԚ̩كŠT<ûUNh"à ~Z(S¤ÎÖ*©Š´ÒVÍ–*:ŸM/åÀùLý¦l§^V¸%×ÊåiV)A¶jõµQ?ÎÆÊP´ÑÈ-ùõ¹†^bPÑd^Å[ílª´‰µ‰
+•ëøãìTâg¨‘Uê¾Q‹º×BëZˆÀì…Vý›
+Ø(u„[Ô/Q¬]dâDG×5ŸŠ±j…1©«zÝì_êE•žÇKNè%Áÿ^~1–¯MZ»·l·å‘‹Š#eù/ñè.SC›¼¿«þ¾«¼”ëJ=6Ê©Ë:Õo^dŠUå‹xŽq?
+çOq]]W0?'²€òßùÛ0m\D;>¬¶%á5~ß©k|–}ëfÎÕ]£4Íÿ §ñzzíxYZW¥àNGyY‹¢ò<( ÊâÙ¦
+«éÓbÑìvwOk×µŽ><6íöqRD+<P[ªpç°Òþ>3\fª´6ãËâ:J ,Õ@u ’HL¦ëèFOð_}hc‡ÛŠè_ù»™ï›¥:‹ yãWqÎb×eÑ,Îem¾ÙÑ“wqRwNF©ÎežÉ®‚îPî«R¶2ôI טJ«Äj&w¢Ë4'¦Ç\,Ü•‰±Øít0ÏE^( ·VõÌ@fÀßé$àÏÆÇ,5D_‘–@QZÉuw
+ïÈ•kêÅ×µºûÛñl,ÚÐö5Ęj°&¹Òâ².IÎ
+•WdM½¼¤GþwÉyÑW–åòÔ{³wœShÑùÀæâr} W¤6.¸¤Œ»¸ŒÔ\Ýœ«„O0@ôÙ­$(÷`£  Ì&ZÈi‘“/~ëÎ5ü¾#_íbËÝ:—úìOã}§ö[ñá'qO¨]Cé{
+óè„|>¡«=6±:ÔŠ[`0ø5#ªtÕ3¸ô<ßÀ%üPDó{šf«=]óYÞ®¡ÃD<yJ›Uä1°†ëžð s†ºŽøíž–Ub$B”Gˆøm'Å›ï¹{¾^'YCˆž©%k^·9àCùCyÙ§ “æì9““8©¢©€>áuW|?£CoÑ(4ílžê²òÒ"uyžJîvÜë¶ IG'»
+¼ˆ‘x¶êCd]j œ:=¹ºìF–Q Ñ ¯J›#ŽE ˆ|5§*K1½S‘+[ªµW=¼k>îs$³½R‰­ÒÜä}’ð„®ì¶BÎ>:Í]Ý©õÏâêò®ŒyNô:-À{Vïg¶±¿t¯Zt}rzÄEP¶“YxÕÎŒ\D÷Ôp¬¨X!y“—LOŽÅÁTý%ÒpÞ†,@˜gl/ü)&¡ÒYÛ; ÍžyöúÅ#4hTa[¿ŽŸŒ½ÿ¬>† cóNÐø³ñ,*ËóJ*ºŽQ Ÿ€LÍb̨ê äÑùu—Úw¹¨»QåTh{.UcÝìºë†î½we틽NK0×q7]ÃQR•<š“Ûíï
+¿îwß0"ìU[**K¿WŒ‚ f±Ý¶Ëþü\4ó·Þ$>îú±SÄx”O‚L´ÍòÝ3½Ñ,~Gƒh‡QÆ•Ü¥:sã²›è_…cNŒi•6iGÁóÅ¢gÜâE_œÄõàåÊ—ûêµr
+|Srb’Àù­yz8?Œæ¸>KI-CâùÑ¥m~¥t„Èzõÿf!¥ íÕòȤ*æ ô¡ónlÌÑdÙàDÔ]"êƒDdQ>:|<ï;ë´°eç
+x‚`îƧOŸŸwý YGÝ0Û5fö»:³úE*U‡©4ê[e½Ï'ãüèJmØý^‘RÍ´ƒTúBîù‡}‡÷Í8Ôo+ó `|ßñ8o÷«gž5,›·5-¤ Ÿ…\0Ñô}»Ü4êd³ æÿA*˜(?FM™¬à,«¸|[}$e¥£2r
+<¹Nj„ÊÅÀ«îIúR=M0¼•‘Ï÷<wë6 'PRØ ß“°>I²Ù4´­@;wÐ>¨¡8€%CÈ{@J²ÑVð¤+Ç:‘„‰dluA"ùo:F7-·¼–ön׈%ôÎQLëøïºDñîrs–ÅE¾ï ÑcÈÎ+Qn̪ÿá¦#EïëS…ÑævóB¥At3¬>qZ™Æ ÷°}{âù%¼$/¬¼‘ÊOZÁÊ[ÁRŸ.Cnû—÷öÏö/çhçmËѶ¹Ž6å¡·Ö/t~Z1÷ªí¶&HÔÍ&³^0,6dÁ_¹<ÝŠñ[ÁN®?h{`EiQQ…c4~Æðð'€ËkƼ(7à‚˜”×Ãä‰ÇàŽ ¼þî¤(›ç2L\šò-Ÿÿ+ÖÖÖ¯·t
+µU¼ÈwÐ~â¼Rï-–ªà@b'ôY·D2¾þÉ£@–XÊ,©œ,gyrÛÜɦRéä
+Ñ­_6?Àзú…¦$ú«^½4“ckû±5 Ž­Ë" 6Mhâd¾²á1ÁỶ0 X«½³…sÁÌç«èªù[îÁÌ4OK™R¿=Þ6ÏS-òh’*dÓEæQJÐB4¨½'kþB‘ÚUM˱Ðz“J'žë G§WŸFNÍ°~u–&‰ó\û˜•}¤÷Y: kq¡ (“ý,`Iɯ‹™ZÆþ¨ƒzŸC†>ƒ‚io΢owþê|~#·H£>RvˆÇHŸ ”Ö8I+{»ÅA¨KÞ)Ñm`ULØÇ› ½ ¡¿qF%ZÓðDc›CP‘KçqÄÇÛ~Ë‘ø®é’Z¾=¸ „\T¢"x%lùС o¸*Æ£¨y­|›KãÑù®‘N*… Q™«þ9•¹<?…-F+ȬCdž¨gÕI,uù^ éÄ.­Ÿ›¨Æ‡Q×.)ŽÂ]ëBŠU«àîR-«ÿõ…å•ëúÞ»ŒˆGÔÞÓû.Ûºk+q²…LÍ;ùªgúå@ÿû|©çÝ_ÇØó¥R0¯f‡ìŸv ¯Œ •1‹MQŒiB¯
+n|ttè$1Õº…õ
+i‰4Æàgf‡-ÀP
+endstream endobj 738 0 obj <</Contents 739 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 739 0 obj <</Filter/FlateDecode/Length 4480>>stream
+H‰œWÙrÛFý•~A/ØæiJöhJ¥($=~pRS0 I˜¡HIÙå¿Ÿ{N7-v””JÄÖ}×sϽýóReüÛߪŸÞ.2u{P?-õ¿3¥ÕòFÕi–å† j•i‘eV•µN­É
+µ¼W‘Š—ÿáíwd²ŸVÊäiak•TyZi«–k/Üp¾TÿS¶v©/+Ñâd»©R](‰pµoÕ{µU?/§Ö@¶qôj¾<6Ñ‹ 6šÌÛøÁë].DE¬M”+§qµê_þEëÈ¥™ú-Šu™8ÑQ†÷wyüûòŸ0øW197&-ªÁdû]kaèã
+a¸˜Cnâà¨,0.cÕ  °oFà%—$ÞÁe‘ç]ž_Í‚Ïþ;}–4+caÏK>ãŽç>‹ÃYðÖdõÔUqetÕ8‡SWÝè©@ÊÊ¢.å¢E¬1e:>Cü$ü²XL)„SÞ£)enäuóóò Nòb¬ó-¸‰wIÒ΀ľJÎ.¤³h~.ͤ(¤f•¿ÌO¯oÎçÄôSÊÍ<_Ô…('_ÀT[@¢•Àhyž6/’ÌØU´ÃþDÒàD@¢ÓÊj4¯Ñ›îöh‰“:*býMuû8©Xu° 5èPv(9y¢
+¸ß·¡„²›ûa»ô’]ð+þ%2Ø/mw,=
+dLôFö/t(fbJ+ÕÒÙ[Ê0údèâõóÞÁ&w‡ð· ¨<`SDîûÚØܶòê8¡ ÀUäŸ?þì“G+vÂn׿4VNÕŽÍG|Þt×èUгƗ”°`ÜÊ×ósÎs`MáoçÂw§P䛽çVyÝ«®‚‡CÃëm¯Ô¯èÒŒùÁ;{¤½òkflr Èsí¥Ò±›NX‚Æ»3ÁµpÍnùƒä¹ê3"QÈÎz`x°/'Aˆ·Q‹vÿYt«V*{hnI…À‹? ÐjÁ¾4ך°nŽJΣ‡Ñ2›äœÑS`È+·¶Øîø ù­À°%_¨Ó£\Z ƒg2ìh<A¥yÛVìgQu²¢žçª{žF½±ûfÝí&wˆ™.ü(êmžR0|퉥Éá—ïR%m90bõ­ùUCÓü'Æ&Êî8§B˜Àf:?©‡O‚«è¿xXw{²fàóØÔïõäA~`ÀÎgÜ=Lhíw;f5tL'‡@št´8½¾x©}š±}r’Ù§ ý“Óp
+ÒÕ3íÛ¦c3ÿæ´Z^Éah,ºJ°
+ÞzKåc‡ ño.:ŸÉÏ’9VËÀ§€”‹¡–ñy£þS
+óÒ}é7”‹ŠcžÊniü¢F”|KN]þMRʹQ«šƒ’ãEËH¬° ¡R^Œ83çÚÊ¿8çNΚo÷ŽTØ@–ê¢R…ψƒº ž»v[ïÎòTÌ2¸ˆe”G<ƒUËMìs=¦Y¨•Ãª ß`JJRÒ°íS)`MvXÖ$Åð¯i-œ4–®÷⧚mT¦ª]ÌŽ=ªN¤Ö¶°žo¿ºÕKšgÉ•¯ßÞoX‰K›‰éa&̲V)pÅ;úö" #~©‚‘`P”º0& c’†©4< XØ^Ág)7ñIzDŽ²!
+>®0fbzô^`°
+*£_ÁJ‚ž”’Ì`Ûv)Äs«/9³Õ³;$öŠ ¼#'‘Y|‘¥ ’ tÅ+Þ1ên\¦‘†Æ”—`‰s¬DE©j2èåa%éìÊFµàí¥™3MNΧ§Õ Y—‰­…ûzÇ®$˜h´K^ÿõŒßCÝ«ï»Ë“LwK•LÄeî3ÎáêØÐ'kz0 â†Ž¨@íÖ1õ£4N¾Ûz ^‚rœTM¹SM O…Y‘z®][ŠpoÄËRy‡ –âEZ€S35I›Ý—jûÍ cš_ðB¢Åd‰SŒmU ²ÏÖ”ÐÍ Gµu×Ñ"e¹{DôúÖ:)eb˜J_wLÙŒ#3U_¿$E N©ÐÙ(·vïPþ뙾Iöñ?T§'7’ ò—[ò—ÉŸ¯'ù{KMZæ—!ÙO2?§:¦—g×À2£&lMOž U™b<¹§žl Å
+Ê<OJ&CGqS­vO¡=Ú†²Ð÷›AX²aìjÕWÚÛÁFàªär£ûD°EÉÅ•‡zî$@¬ÀÂïäø YXpE‡Ä$F„<¦‘hF*Æ1¡ |c zY=»×_Èæ$ˆ2S¸JÙäC=ìóÐðõ^É€>ÁÍ}¬éÊ ÊPþï­G'VÎK‚ú¸R¿ƒŠþ
+7¯ÈN€‡Èzü$ÐçW|qàÞÉ«Þf#¸àCnxm‚ò‰8ê¬ÉÃi0çu¯Ä&ÍÁ½d™L5lQtXˆ[•&6tZ!1pÁ½¶¸‹•^—¢^'<›vYëvD(þ@mi T÷FÑL16'S©ÈÊÞ
+endstream endobj 740 0 obj <</Contents 741 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 741 0 obj <</Filter/FlateDecode/Length 4559>>stream
+H‰ÌWÛnãÈý•Æ<‘€ÅeßxÙ7¯m,&¬[™<ì.”†‰,9íÝÍקNUó"YžÑdA0‹lvWWWUŸsꇩJù_³Vßýøªõ^}7ÕO•VÓ•*“4õ†'”ÊgI–¦Vå¥N¬I35}T‘Š§ÿàZV¤´ŸÊø$³¥š>)´UÓ¥Šn¦ïyÁÍTýKÙÒ%d</hGËM‘èL锌«¦RU[õÃtì lÛ“n›_]“ÁG“Š?˾ÓÚ"Ö&òÊiüZõQ’XG.IÕ/Q¬³ÈÄ¥×xòñߦ‚Ã&—½1IVô.ÛÏz GÈ«¼‹&! bßík“”_ŒˆÍOläOl”º_âÑ^¦$o\¿Wùßm%VŽ·ÊíøPT7Ñòòœ,û!Ëù«, qH²ý1.¢»;䙎ï8V½à·B"›ØG{<Ô»­Šµ(º®Kªîé3ÏÛT3Œî+ÅUb†ü?ÍàgYô~f¥øYf>?ÐÞÕÌб;W/c££6Ö:Rí'Ô\E®««Ÿâ2RûX»¨Æ·eìøÃ÷Š]à”Ø/M
+§y;8£ÕÄ$°¼$Ëõ~¯U\8My¡„ÑòJ,ÊWP&á#)iâØIG3‹ÎÉzë2º½ê7×asz:uT­`f4J"˜Qõ>ÎÈŸ yµ¥Óì≋ZÕ<Óóu<)ùËA˜õ—j†Yyûñæ>žøèsKCš‚Hº–ϹŠ’›EØLlÀ\¥vzÇÓ(š5Æ`t¶Ùn{O‚k5ÆZ1{çÑnˆ`·­–bKñ$
+t*kuìĬ¥ê‚A6Ï'oªEU¿ÀÆòbȤɻ`¦Ѥ–¶PhŸK.©4èTªmf«Ž]Ó ŠO‰/»çÍRÍ+²¿|¦×EEoôû;Šˆ|ÀRvUô”¨÷mÈÄlƒòÛFêi‡gü¯‡ËŽî¡–O=j^Í7¸( ÝSKo5ý'{HEd›s6ñ$'oŒ‰.bz7Ia:Ï\âi1Ã:&¦Âp¥¶ÏóªQ;)å=eç<áidˆON ÕW­û"-$®âýQ`ó>°%¹o(®|ž_ ”:2Ê“äq+ÛâQVòn€;@ ûê”of‘¸¬.ö3\~¤dÌñP5(: §§ºv–G £‹þHZîoæòδz“¨K¸ÝƖᤉŸ 7Cµ\Žü|Ñ¿U —Äy8a=A7_p–¿…z( Ý÷!RØÜb= €Ç)辪
+DæLÊ‚ ðÈ#ºÁÓ+ÐgÅôÅ òÚ§˜_ù²'/>áÖížñ½;HÌ+ž€¤ÍN™ êè"¬\qëã‹C¸¾æ
+nøN¬ñøUÈMÅͲ2ƒî9•‘I‡1RBö4v[Ÿ”† #
+ ¬Ø~1ì½Ä`*ªÞ%0HÝ~¤QÝܸå‡KêzÒ#î
+¦ï÷3ȵ¬§§½ÚÁDðd|v„ÏŽgtÛ¤v]D ½Å4Œ¡n3@4ᚺâ—~ð¿Fc@l*ž¹Öáíˆká`ZgH5­û$˜˜Ñ=Í¢pŽ¿|5„2Ò1ñ‰>‚–$µÞî8
+XŸ[ËBÙ B˹ ÆÇš…L>F5g •¸†{„| Óºò|&4ÄÀŠA™m
+G‘d+áÐ"ªÿÅŽÍt†·çY%r©žÃ×IΟ7 tRÆr~Óè79 MyDé„¿žò›¼Çûóïæ|ÙÂvØzÎs% ³†¯ÖK·pǘs(gHð s\4r2JòfòÜ·jßVxzB†)·:Þ–j£Ü~ ­–Yâµìâ× Z¦Ù$ç«Np¤{ÌPÕoÄOuÃJçBŠÏˆ:­ ;D„Ô‹¦šau%9ðÈ>#e9ãbÆðò\¤w$.³ÏÛÙéÝIÖñ¹4EGéY[M¸è°žÜ¸——ÙÀþ=¦°4aSUлÏTíÄøƒ–ô_֧ɊNÉëà ߘ¥Ç1íÔŠ£ý¨ë’‚‚.¢“ª±Æ— G{¹(zp>[ü“ïÔ¿«f—úÙëîÉX§ÞËø2f
+ô‹]Fk¬îÆœF(°¡_á-`lU/Ž/Ï$œä¸aÛCd •;Fî›–± „ÐÔ´ ÊöHÅÉЕÜuÖÏj--uhß>ÖÒµ:øÿ°µìOÚ´”êÀKÈÈ!+Ði†kDŒT}ûh中HÊB¾n™dÝ©ÖñUþÊėʼnæѾn?×8šá@yh­WG£ £x\ŽšG 1Q…‡ž1¼r™öåa2Ie–˜#ÁÔÖÁœIþYøΤæ žw¾§ÿ# ?«õÔ"`(‹€¯n=µ/DŒ=‚ ¹?»õÔ¹AräË·h=_‰Oð_þÍÔ§7ž˜ù[ð©¡¢Lû£ÿóiO¡L%´õ@¡âÇ—éX·èp OîL˨§PÀ&½ïAt^\nHë$æÌ^g'ѽl#Þ´‰÷åèÆœ Sò]^¢ø¡Äg¡ ¢ ìÊüà?5»…èƆH­BkHz˜¬¡øDU¶5«}ÆWôYÄ^’Aî.Sæ-ña+”HXI”Äò#k,æÝ:ö¨F•ÙkQk%~– ®ÂWš¼…iÞq/˜³Ž!BÐ 'Ž.TÍ!]3´7ñŒ cE×jŘ­;@Çk— ?º_ºWïrµ©£p™é ¾Çþ%%®%®}¢lC(jÔ™æÞÂóÿÑåõ;HóȈó«ç=© Žyý§ç‘0œ{áK|¢D…'áQwÎï˜1ç.çBKÉ,žLÊ~ÄÉ
+'1·Eâ ’GטJDç\Tʵ|sÿ¶Ö=:h¶E]sL×ö€®‹]cKîüU—HY÷B=cÕ„Xf‡çÞ„{«s€³U®LG( ¸/„Þ¿]µÇ˜o­w¥It6¦^ÔÆ™¼k}.Ì1öé€wm18Ržt$OO:x7eÞM;Þ¥z;A¹†(wtc³Žn!¹pai´Ô‡t{ÍV¾ k©¨¯`^Òô<Á‘óiñ6ó"ÖêÓÈSY±!NGŸBj¦¾½/ ¼tvXuû‘›û·üp‰ûu=h’GiÌö¥kYrS~’Ø{ÇC½z„Ë4´cò“5/«1…z­]è%eFÅôHˆŠ±©xæ®uÆnÍÚ:,Îa¾5™Lz¦‡pŽ¿|‚ÿ^mK[AðWÎSʤÖ*ëfIy#@¶¨Ú…6û.„
+ƒ²Ôƒ;’#˜ÈòÛò¯ GzÃ+>ß™@¸;7¼hgV‘hÞ~÷b)›iØûÉa(nDa9Xߨÿda5ºîsA°+7ê®ç>w¾Í8{"p<ã°èÛ%ѹøc™œ3a:žm;·íj^=ñq½ñíáxi÷ómôé ö†]4P"”çA¢™Ú}‘Qlôí^><5ѬĹb_ÔÆ* tŃñ4pb¼VD£!U«6u)‚f‡òB1Ž^Dvx¨KÓ’Æ1ÿãOWïî;‰Gà=¨0ˆW¯6þ®¸R{ ³I°qon_SnmùIÏ=B”$ hL” 4&šÔG4ðÅ…øâ<Š¥ù^¡DOs*óߎPè,Á¦â¡°¢óÙÞÁ‘ô$8¸Æ„ÌÒ÷V!Fh´û¦¬þÒâµû§Þ¬ƒWqˆGAž&ÓáôEcß|­ŒáÄlnÍ¢xæw¼è©÷þN¼¼˜„ûhýΆgëÛW’ÂÂnM0YÝ®Kˆ•MmÛTOm­"ÓM=Ô[gÓ?Lu7B!¢'Å\5#{SlçÈ3DËÀ©Ï@*쨅eÚDááë…„h
+"—î(´|d
+endstream endobj 742 0 obj <</Contents 743 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 743 0 obj <</Filter/FlateDecode/Length 3276>>stream
+H‰œWÛR#Éý•zìvŒz».}ó ,c ³ ?ì:ÔÙBÂ’€˜¿ßs2û&Ð\ì˜Ñ]U•×“'žšTþmïÍO·©¹ß™Ÿ¦ö_©±fº0U’¦™“•Éò$OSoŠÊ&Þ¥¹™>šÈÄÓËV¿Hñ·fÆeIî+3)³¤´ÞLç&:ŸÞ^ÊçSó_ã«@xQâ–€Ï]™ØÜØÂͶ1ÿ0kóót¬ e»@Ù“îš×CUd«£KUÇßõÞé-®ˆ­‹2,ÿzóY’ØF!IÍQlóÈÅ¥\·|ÊâNÿF…ƒÊ™sI^ö*ûojKE(_¿Ñ.š´QùÙX¾uIõ]øâÈEÙ‘‹ÒðG<ºËUÐ&ôwUÿßU*åíUE…¼L*ª‰r6D¹xåq"Aöq}üÈ8Ãü ôæ…rgÑŽËÍÚÄÖGðn蟚l˹USsu×É7Ä¿ÕÓôôÔsœŒUžåª&ýÙkš;XÝizQ3kžöÐ$®"³YÄ6Ì>žTÑ=\ô;UÝBï\þ×òvÏ3PÚÜá5‹¾ÄÎ|ýiŠu/ל\~Çõ~ÆÓjnfõ3×EʶÅ'•ë+V fæüdöFW~¼ä÷\­W+yá3•3û­jºˆ'.’/–±ffO%òè5¶¡µe;§(³WÍO¡òUŒ˜Ë÷>¡’ô¿ü_¨ÿéz—&!ôJŸ^1v¦7,­º@9žÀ83±°´ÐOΠ[=Öü]®ùk.×Ðg. Pj&[{9¶íµeƒí³ÁJ6‰C"·™Ës³Ü!É „—ÑlõŒß¹¸£™ë½PÂÒëÏçXà$~¥®ÅW'ÌÚ³.9à¤sQf-k÷üúƒ©)kÞ ;æ¶Ì÷åE<}…z²B$6w5ÿ:0&—gÔø­±“å2 @‘„,tæ^ÒK0#ÀÞYS2­Ù ^y—â7W§ú°{жD†æÈP6õÿÈÏJŽ}‰q`ˆªë«¯’¨úäEuUMTÏ<-‡<½ooëÅ(7·Íœ!a¦KT$"]!Z)Dä
+|¸jkg¹ˆ*]ÓHã.Cð»[~˜lÉŽÚ¥ÕÿR"¤Ï¤T2)ORï{ˆ:W½_c§ÑjÛÌÞ"2[*,
+‘Œ&f”; 4ÔĨ3x@„}ÕÇLvˆ©Ï[“!OM§hmÖ}±1$­…>Çlv(,¸ã½Í08m­ui56¦ ¦º¸065 –zäNæ)ª7·ë@•†wŠ¹‡©Jj™¹ƒ*EÒ^¸Â+_Vfñ—a&çIØ8ê0Ÿ3Ùá°”ÓX—õ׬ìÏhç7¿ÊÛÉY_T‡ãìá|ãËœ¹æáuCÿkéUošsI–J'/Y¡DŠ_”rL8×L8 ã
+,>œùµh$@Â~x,kÙP6ÍÄþVÛS¨ær6%ÐÕÓ>ü\æ ¥P`Uë~l J¤¾6„|hE7á…òê\á²JøÓ±i¶¯]
+f«à˃iö%µÑF2 ¶Lh˜OÕhß=š¯ÞÐ&5K,ðý¤™gÝœG]"ö  ¨çõhv ÀzÏ"¡®^’>{ðÊçqñ+=¬ 3×Â
+X¤›;tÚRܵș÷7ì!.}/¥¥—Lð¾œqÿAès¦K*ËÈ^­êöz‹è¢Ç.)ùŠ¡—'º±ÒÇ\ñ«p`^ø霩oþNÊãí­xœ§.Úɠ袤fìôæû¦…µ¼½mAú?L¾g ©8ŸæL‡±cŒ~Ò•´O }†1ñã–“OáT”á„Êq§ ôЗ-ÔÊèPÀ²¹×o~v1”fųj|Õ ¥¹'Vf8Ín˜Ú›!¹n!ÒÖêø¸ì0t˜Ùºa(•ÈÌû–NÚ*¢jUY\ZЃPTÚŸùÜSÒ
+jXvpKšS§Á°\ñ¦Ù5ûQ¹wƒjUæÕ·=å öœ±ÀÄ2¼ͺÙ"xåWšsè½’}Ë+>ó Žøi[¶Ìô'e*…Æ_ÞÄgì–²‡®±ó¸ZøÔÂCг³f~ ¥aVîe‹É‰tß/Û\rªl8l«AÇ:žÐö{ªúSÍ ÿHõso?R­V
+æ±Éâ ïÉ¿¬ó͆Nµ¡¦zEžá<Ú–NoD°ÞµD‰æ;臇kèǹ(ìÛvÊÇu„o¾ÒÇZätt10Cæ„u™±žKëDò]¶ÔΪ5±‘b#Ÿ®øÌ2$Ø”g3ª•˜¥èªøËdy÷¡ÅJ¢ñPÔ<yºÞ¶ÝeHÕ
+endstream endobj 744 0 obj <</Contents 745 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 745 0 obj <</Filter/FlateDecode/Length 4257>>stream
+H‰œWksÛÆý+ûȘvÅ#ßl™Õ¨ñ(ŽÄÔ’N&A -E: $ÿ}ι/JtÒv4"Ø»÷ý8ûnebùkïÌ÷—·±¹;šïWö_±±fµ5eÇÞ Ai|eqœ˜¼´Qââ̬L`ÂÕ¿å„Õ1Npkmœ²¤4‹ÂG…MÌjc‚åêöJ,Wæw“”iæy))Ž»"²™±1˜›¶6ŸÌÞ¼[͵!o—’÷bó|ª¢²ìut±êø«Ê]ÝBDh]àMjùLÌ?ôCÚ bó[Ú,páÂ1¿[®|øÏÕß©ðÏPÙ;eŨrò§ÚRÑSÊéÚ‹Þ!ÊßÏù[•é‘$?#ÈŸ§¿…3Y®„6é(«üÿD)——¢r?7
+y3™”—ÿM”ýåüU”ç‰89¹ ‹àãGÆæ§ÀÄ<ñY3mèƒ#ÍaoB›ðn:„?67غ]]ñë±6’%nŠ¯§›eº¥ž¢q¡j–™ÏTMúsÔ4s°zÐô*\¤Á>ÌÓÝã·6”›O\ósgøP[d*ÃG%ŠïðkƒG´dQ›ªX`Ç×otñL͹Ѭ…5—ºÃ•0;å!ëpQÛ]WoÂhUOäÍìÜ=<E¿NØT{Ù¨Ö]#[r|i…A(IÖµiDÆ~à'§A„B|]TÂÎ ù›p‘Ð#7ËÛå
+_=Œbt4Qü‹$e,b³°‘õHŸ÷ðùC˜S¬£­%~’ º›ì:Š[Ô½;ó™:±9j@!¦ÕNü}C¿]Ó˜‹È|âËýChÙ‡ÄðUÎnæ|±«I _3_7G=úM•;õ‚lKGùO5267×âû e·»Á»>óÄNy’jž4TUól²üT˜fŽ†Büo§êu Åê;Dà"¤¯¿}X‡Mý&SbIoò(k+™j+-F.¶$ù,a[Ý€Û%Îî¨ÝçŠsÚìñ³¸z?²›•ª-†ô°V¹åè´=7s%†,Js¿{ÖÜ©P³Š`½c ±ÚHo"³ê+«@ÀÆòBÎÚ FÀò@~1$¾™Qßê ó iþ•iÎð—¬6¿(çø÷-ûÔ5®gÛÍI›j»¥±õkHZmšƒúõºÖ¤¡ÊC?Â¥ó1ʃxÇœ¨«¶nåDE›7”[·ƒ@x£™ƒ`j ám­ÚZU ùt «ZfN16¿ˆ×Ð4Ȉu_*°âš•F>H=ˆ7ž sh殾sž6P„R‚¡~ÐX¼1MTG'J‚ûœWé“×ܘ9ù˜Í’›f]u} ó!=ã3í“1£´(L‡4Ÿ2ÚŸfô˜ÍC›{9|Òqøxå'c}ÈŒYJ¿<0¶Òwa»öì{XŒŸám¯ £؇¦œ#ññ»9<˜ÈqiýÈ'iwݬóõ'RÓ7ù^#òâ«,W²‘·J›YD 2 G #)Ý)\é„­øÊT-\ÄLç¼EóØ2A:ú ’´2wÒOÛùR· 6I¢ÃöU,Åï:ï]Ú7‘ !r¾G°âž6DÉ,J‹$œÀ¥A*nÍ
+a/ðØÈ»½ˆØÉËN³B2˜<îTe(ש9F,;ô /«‚»>sUOV›W‡O Wv³µœ¤ÿ,{© t¼Ÿiq³d$oåa@me,-üÈIt-Øí'.?IX?í{~¸ä¼Î¦»Dv˜i  ïgZÔ¼áÌËfÍHxÕ#½\ÒõÇ"4GE¯¹”ÍP~³öÏÝÉg=y±eSç•I‰[^™f§m1M8àÓž)¿Ùâl4#Ñ—”éÙ–Ú7†^2kjr5è/}gó}cCÎ}`Q åë—àrSÉóNÑ7VZñþ1ÜÙ(N‹×XU&Ì_Ú¾8îÉ`|>‡«¾ÜýÕe÷m¼²HÓ(÷Å Þ›µ¨ âÎà­~#>ÃYÙ‹É1ÇY/s2—tÅÇô´³ôÌæçUÈú‚f€ž¼NîÉÓ<˼'ZìîÍ¡»¯[ó¥=¬)½Þ<¶5‰~x•DcéXIÎ'µ¤Õ¨ˆÞS=ÕIz¬pÅëŠYÏ:2Jºaµpc¦dÌZ|C´¤púÒCœB¢54Æ;;L C UÙ’‰°iØMÓnÈ®|ÂÝ)Kø£¿Á”’•Ü\ú¹C~ K½äúñDÁmÛlâSU§ªFbÿèh?Euvë³’±€]PØ
+FA =Ð.á÷%™”"rDN;z ²pS‘TSÐQwæcËúYózÃp‡–Á¸Ú¦uœ¦¡Õ‰Â7ËüÕ‹Ê‚ªsü”ÈÑ…ÜxáÅÈ'‡«ˆbÐ#x®JË•è››KXÕŸIŠ8B†ú„@ w§ÄFùìå0±Í­y·š;DÜMé‡~ÙÞX{€”˜/!æó.AÖõ˜¨É t›[&0ÄãQÜÖünzn&ɼñ6Ƕ5ëùÈ_T_A;èö³IÒœ83ÉÀ4Ãä9ÞFnIá¢<3IŽ›¡Xç#TAB`‰}—”3ÃcpøËÏ™ê0€Ii* ø`êÍõEo«îc7FfXÈÑY[]Uœ1—Q:µØÅ^Lš,Ng»ÍðÔ`ï&‹Ÿcš{œ°à\eòN¹”0 €w W
+^E1S*èb0Üá•/;³ýšÍÌXh‘"™ÒtvÒ:UGÌRsN¥8ƒßxvfA ‹QÞb&ðLjzAgc•`Ò0Vi^ŒW‘_â”ÛþЖʼoÞ©æúûS2$o/0vYµ½IÑ[¸W°.—c‰_ߪNï6IQ"y¡ƒ9ÞŽ¦.>öi; ÇÂa:D{{äßš»ÇVú FR¾cõƒ¹á>\°“j›é?l¦C;éšJ»:Z©ìš­? { Í€Ó߆Nq^ÌË):Ú-Úú£ì­AÇÿz¸Hå*ŠîúˆÞû…lZB$‘„±ÒóÁŽAì΢é‡Ù•¤e?»8Ì÷ìõݽŒ¯Z”⚟;™À¬¯ uivÅG´‚ä¤,dÆý¢ˆèFÀÕõ8÷¡p4ëbB° ò<e%kZO×ÂL*îeÝ Úøv<yŠŠ°¨„;õ?bö*.±t’²•ÜÂÃ'9ºµ å)[™„rÇœX½‘‰Q ¤‡±šÓP_-»ÛPôWˆ®ìbƈ–äîROP(²¦˜µ"щ
+$%iþ¾÷œKR´Æi×Ýdd E^ÞÇylciœWâ&Á)¬o‘N/H¶ª‰4QÊÎÕJ™ù6jE*é.TO*Þƒžî`A©ÖZ5—“Òö;z¬Ú…îxÂU™ÿ”g ™‘xsÒ­>iµ]@æêtëñÄüqBô¦éñŽŽ¶¡_åÿõÚc•î§úA¿ó7µ­j茿º9fÑÝ +£AŒÚ,°VuP@Û €ò9Õ‚VLµnøÊ$¶æᛚ ¾¬OdÊÌöh˜«È¹|éUKnÚ®‡g1m,{Ëf~§ ª;è>•gÂUp=5db‹“E*ºs!˪Pè1“UãP} e°áý`OÖ¯z´äàÕâèRB)Úâÿ:)ÕnåË]òÖ¨ö9į.hçÛÿOT$ í‘匢3KDñ ïoè©¡ýž×ÉÎáÓ¨ó¨ N™¾xòól¾A®ÎAH'ÓwM`—2L’6»FÙjóøJ8´æů}KÕs¥QnÕ+e !?z¿+>Š„“©(é*¨©zº÷Œ¸¬î’P“â
+;¢<Ç›Ñ6=’uòµëíÂòõ÷°{Bî?ðïŸBê7a¤¯œn÷'àWðÓÞa‡ô±a°Xš~B '¾âéĺ-ë…ïÿÒãã¹ÿ¸¾“foÁ¹ÎŒ za9eh6y‘Ħ‘""NO?‚ƒ‚ð­¡Ç4Zë7bÔƒ—˜æ|h#“Äržˆì®L?Ðè¼®ÁtËtïå•fZ¸ú³T—+„çR­‰a¼£åèc÷ xP;—K’Rö õãˆ;ƒELy;×eÒuÂ7Îa ¾3¾ŒùŽ!í´ãî5˜÷5‘j ”¡ªÚ6*¢¯©VÐïêTÆ¥»1ÊuEâ~bŠÍàW(”ÜÆ© O•‰;YqÍk¿5t ÞªvÎýé9ºÍà¶GŸÝáÏt»rr×݈:¶¦ŠÁ-×~1£‡åhª:gætFhþTe>Ÿöó °‰»AËŠyr²!U­Je£½«¤›žL/’x9-ZZ’hEHsz~ÓŽ¾tÍ4OIæÆä gG €Ë„¢±"õEœ©¡Nõºê
+mÖTÕFþçÑ­ V;'wy> šª´´®…Êð‘k¹ùnþ`
+endstream endobj 746 0 obj <</Contents 747 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 747 0 obj <</Filter/FlateDecode/Length 3482>>stream
+H‰¬WksÛ¸ý+˜~"w",ð¹ßÇ͸g×V»²Ž"Ñ2;²¤%é¤ù÷=ç‚„hKr2mÇc›û¾ç¼«D~Úµúñý]¢Öúqnþ™(£æ÷ªÒI’YÙP©,×y’8UTF;›äjþ¨"Ïÿ%'Œ?‘à?-•Ítî*5+3]§æ+]Íï®åÀÕ\ý®\•j/JhIqÜ–ÚäÊ$®ÚZýª¶êí|j eÛ”²g£š/ÏMô"mâmüèõÎï "66ÊTjøß©¿û›(Õ‰ú-ŠMÙxf¢„ë†OYüùŸhð/09³Vçe0Ù½j- }@9ýºh6ÄËϦò!=)¿WœP”P”¤SM.ÓE4Y]¾®èX‡x©ã·x¢ÃVð7 :*]}3½'œñR^**ò©3¨ÌCЊê{ê(;ÔQqTGÓR?”‘{—ÑÏ?³’àTJÄ©Ïü_³TÚ8‹:>4»­Š‹Œõ»X`‰ºÅgÙ·©\íj%uh6Øi'qÁN“ÑNÈ„ÅF 5ö`ižhcGKKmóØ$‘vÚkÀ³Šg61Utñi»kcSD‹ ,R—qí¸a»jðÞóW‹ž§_ú‡Zýí1gYt‹3pê†+Jì§Ýn‚í–HûèVy–ûè² ‚Ù®Ò.;¾«HõqÕ0º©è†ú×®ÞâÛŠ&tjqØrߢ»+ØfÒH="Mè®[àŸ‹ÖÈÕïFñz£üwŠZYÖÍçqkç¥óÓŽúÔ±ž æø2žåÑŸo>üŠµ2ú c%»Þ½—óW^Ìcl“s6Ɇ/”ÕÄ6êñšD´±‘'
+Û‚’†ì2òy„ "›M¯Ð)eÄ•Åf£Úx–úpìÏzÑ»öc¡oüu[wuï+n(®e¨74Gª]æ|>Fûv·¬WO¨†–©µšKèXÐñ¨á-ÞVÞði_…„£®ï¥kz¿{(µ‚É5C ¸($׈(ŠäïB–×R†HpG¨‚®~ªQi{xX¯P~"çý™ã ò^Af=ñ&þºà°L?Ø í$»£7üHïªÈ?©¾"„¡ í„¢Ki˜‹j
+èHyHÅíФ~gð´J=FeÓöϪ"P ©‚–¨«¶•¬8tÈ5WÀI—‹^øô!KƒwU™C?I‹ÊkáóAKž1æ-ÚçÞ×[Lµ Ñù$†…ðÙWÉkæ «ðâ}’üظj -t8ˆ]óoÈ0¹ž¸ÆÁ»}Ø*kK?žð©•ñ8’ñ3€aC!µ‚ :ÿ5À nc]Oï)¬YY~ i rÉ°©6•yTÛ«UÝ×K2–ºmYs;ñOxBãyÂÖÛÈË@Ü£¼¬xäÁZ¸È”(ÙB¢ô†þ3^š4yJ!¾
+
+é<9qÎœµ aÆ>s6=øê5L´4)QS’­sáò'¶8'[å65±eVhDGnh_7êþ˜ö<P(s®<h%˜t#÷I2–óÕíí¶Ì-0ãFÐï¹¼ D{’~™(;oB;%ƒÖP–G4³,QäÐÉÐ%ÃEýˆÍž ãA³@Ìdp–Îxùã
+Ü(#‹§ŸÔÈCKúÃlryÑL»øíÉ7R0¬½ìæ7ÊûÝUÓ£6 ÿŠÅ)H ÂùØD½U”‡ Uꡧ,)Ú $´Ýß™±ãdÅöÁ~~yž¿9ß;×Å¥ÑÚC䨻n9¬¾Öl°
+Bã¹ ”b)a°ìãŠh ÖóG› ‡£¯ho|ÜÉ
+endstream endobj 748 0 obj <</Contents 749 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 749 0 obj <</Filter/FlateDecode/Length 3269>>stream
+H‰äWÉrÛHý•:"ŒZ°õM-qœí–8£ƒA‰3\4 %…ÿ~^f-(R”힘ۄÃP¨Ê|¹ÔËÌ_f"çýƒøps—‹‡½ø0“æBŠÙR4YžŠ74¢(³2ϵ¨™i•—b¶‰HgÿäÒžÈq‚>µBY©1ª‹¬–ZÌ"Ïî&|`<ÿº1„W5´Wu&K!s}'~[ñË,FC²•!Ù#¯æõ¢é0ªÜbübõÎî "•*)„‘ôW‹Ïv!Keb²\üž¤²LT:’INë’žŠôÙß ð¯€\(••u€¬¿‰–€;OŸ KFÎ!V~Ë—*k¾ë]QTœQ”›ßÓH—j€Æ]ͧÊJ9UUU±QÈ›Á¤ªù‘(C”«7QŽq²¾IëäÓ'Š3Ì7@-^èoGìÓ"ÙÓÃj·©Ô ¼k|øsq‹Ï¼oÝÍiuß Î5ÄßáTN‚É(‹²)‹Ò¢$w ¥‚Ñèd™Ê<‡GàíÄø6ÉmZ%¡=ç'1™^O®hý2•&™áƒN&éH%§b“6
+ú…]&¹ìÀMáÛ‹xñ\Mî–ä»õ%¹I ´–Éî~NÄí9v…ÿ£Éõ¹ð¨!ïY‚n2Ý4C|Ælæ#@À ±))6 b…åøœ°(*¿‘»Ù r˜óï˜=O!á(}„éß'ü&Uò$H¼î"õ#7ˆcB5D‰³§'ev «s«×HÐÁÝ¢b
+œQL­y·¼›²ŽÎYÉØo’ÞJãS´°jÉ5o¢nÉS{çj¾G¹ÉLÚ5üº‡?Kº•%n¥MÉn
+Tpš¸Wä¦) }'sóÀŠ9 Èª:â¸y…hï “Š· †övýì}Öñ/±L‘ ØUf[eM]±÷%š S5\ø9ˆ’ª¢ò¢ÎT•i
+êåýv×oæk‘65²Û.VÈÊÀ:ÙîÅY CÈUù­šTµë¡H唹ø æOô—Ö«v~Ï]ƬxjâÐêEí˜, ¤1ÖÆâH!ºŸ*¶±NG§š†‘×Ý—ëe~èÄÌV„cÞåså=Z6ßöhÞ`(¹¤-“ qÓm»ÉR'ç½g‚÷Šoy¯¨°Çxñ3ÎG„4GПñØóûu4í?.ù®Ú­Áf¾|/Xs¶ËÈø'ëŠÚJj»EO;ˆ°„-¤”ŸËwuÕ1Pôñ¼^ù ."7i°"¿õГî}·ß¯ø#‰¾ž%ªduX+c¡+"«äk*æ:Ïët]] 'OÎ~"ÆI‰jtò°µ5›ëâ–˜WÜÏ™t‚“€>ÇDk›Ï‚Xì}‘^Ñçrpì¾ã]Ïõ¢u†3¯.ðqm·î¼„ŒýÓä™´ƒZÇø„ÒÖfWX mv˜ù=âèLØÂsÊÇEh¡ê*8剽Ú3Ùïø¹¥›ÑÑςߟíG^Ï{þ»g2æöÐvËë¼rà¬\ÒG±‹´ðÞ½=„G«JìW|öa;§Å5¿¬mãÆy@›@zTÙÎ’^ÞÖ“ß¹£²¤i-¾£Š||÷ܶȼå3ñ^#“O¸²\‡|+|Wn§×Û(D«ø*„®¸@˜¦ÉjÌ#-3´{°âià¸óm|Œ™Y,g´Ø^JiÑâ¹0…аÁヱ܌ßñ­ÊL-‰ôÀö9”“¶%æ'Lè“gM# í†7öóA]‹5Àý*´0¢Ö,=*Æ%MÜÃât­3 m Ó¢”¶‡…y†ŒÄ¥k E.yÚéRØzsÎøsÖ*ÌfÊ[«jg-hÙËßÙ\ JÓyÎ\ÅÏX ssg+|I'#caÌ`¬2ŠÜk[5¼¦p¸0Ì1`ÑáäGX´¶[+ÈŽ°Œª Þa…kF¯k±üiöâ,)ÂTÒÔïåŠ*rª;
+œ:)p~K—ÙCw¬²åç–znš]—$•?¬¹@ … ŒqðmâJ~â™ð;3çNƒ«0‡h]Y'Ĥ~•Ò¸Ëmá‹­¹&ù}¡ôx0¹\ì¹–ØúÖ¹*Á»¢çPmáåNÜåÎsmIÜùÓÏ0bxMv:º¤…hú̙㳖ºpÐ$UÚýã£1‰Ýœü?ž“¢òéÏÃL–?z
+|‰Ž¢TÖ"Ëp§8q$jYü8´ uá¶YÖq½¦·ô\˜”<fRÎ6ºÉeš'Ñ‘½¡@ÆRºª€S¢MRŸ5­í™ÅŽ[O›gÜRo`
+KÚv
+%h.ƒ’@Û2ÆÛ<aKʆ«,{ÜñˆJn1©ýFy÷JnÛtºayƒk :Å/r ßnûÝA«¯ŒM‘]ŒòÊF„Ió¢e' óÜ™wÞ ‡ Ä¿¥ÌËÌkˆ—é¡Zl²#=#œmùÓÀq;óaQ™T“ò,‡VöñÍý0
+endstream endobj 750 0 obj <</Contents 751 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 751 0 obj <</Filter/FlateDecode/Length 3838>>stream
+H‰ÌWÛrÛFý•©}R‚™ÁußlYQi7%%?D[[0 ÊÜ¥I- Æå¿Ï9=ƒ(R¶7O)—E`0Ó—Óݧ{^ÏT&ÿvꇫûL=îÕ3ýïLi5[ª&ͲÂȆFeZf™UU£Sk²RÍ>ªHųÿÈ íNd8ÁOseŠ´´Jê"­µU³…Š.g÷×ràr¦þ§l“§^ÕВ㸩S]*A¸Úuêڨ׳©5”mrÊN5ŸŽMt"½&s6þæôÎî¡"Ö&*T®ùkÕ¯n!u”§™zˆb]F&Nt”q]ó©ˆÿ5û þ&ƤeL¶_´–†(§ŸY%'¿˜Ê×&m¾Šˆ­Î(*Î(Êò‡x¢Ë4°&ºš?§ÊIy®ªª§N!oF—ªæ[¢\ŒQ®N¢<MÄ1Èö*®£Ÿfœá~.´êwþv ä..¢=VÛŠµ€n>„?Swø,ûÖ]ËÕ}§$KÌo§™ØYŽvÖ´2a±Cµ--³T›ÁÒ:5MÜD©†f,kPE‰Ét#ö]?Z´ßbËa—ѼƒåYôÄçí¼ÃòBÖ;µÂæx‡‡>v¿-6ôÝBàØ2NšHŽbåcœä‘ê?àÑ ¥ºü¿ˆ“ûé5½µÎ[磥»™ HS¥ 3'xj›Ô–ƒ§¿n㤌V þEþ
+”šVó²Î¿I%c Ûȼ¶°’`ºNs¶+Ã~k½D2ï7,ƒ ¼s‹5²M#'ƒ 0;£æ– LñID° ô‹2yÎS#’H/!y
+Ñ%#t‚=tw7;ùDPP0ÒXª;Á{]"?‚Ï ½'Ðl[#4&¯Òª|ÑkP !*Ê
+–h(0ð¹2a*&Eyãv׫ª´VÖY”ÉËZ-¿;iD’wºr\
+àƒÐMNÐ$8—L¼Óò©±Â´i#¹‡Ö.¯§Ãës<lÀCŸâQ6®‹œÑàq9…¡
+
+'x$rŒÁi¢™:o‹^]üóæ6ÖUô|“G?@Û7W‚ée`ñãñ¸€sP49]æÓ9{l$Á”O*1؆ ÃŽš¾ÒWf!}Ècý]¡TÔj³êWbI‹5p¥ïî:GÀ|îö[plp ”ßˆË˜Ñ a5`è§ú”.ðHrNê¨KÑUÜÒ¼e®¿lÑZø½MÔcKñM¿4g!x¹sc}|1©å JÝ3œ/£Òœs2jô«¶ïöªéîë?ìHô2ÀRþb¿Ø©÷|ÿk4Ä}'±ÁGÙå¤>âUµÈ
+ÑÉ$á¯d ëÄÁø1®ØÁ ‡ÌlÔ>Šþ^Ô™tq“
+Dcsuw&i³–.gt–‹o¼¯ŽVô]ë’jœ1®Àéiþ}°«ö•ðïãœvQ’¼Sh»^+—¼Í×òxÀãÂáÓ;Í!Tùd¬ ‘2)¶nÊ!?ÂDô†IRE[™+6Òt¯ågá& Í9È÷^&ŸÝ¹)J7ƒ:)j0Îeêúò{šZ¿`j
+G‹©6Õ2+Éá+À²æ°ð¾å2ÊMtø“\¿ùSJpÁ·ZRTBŽŒuíaÏ)åœJÃ|¬ xÓT8Âòc¡~rt¯Ü
+U¾~>ÅÈóy€éÊÉH…§NµO(짋IÍÛCÌ„FâbÔªAœpOâîƒì~@Õ?rÈS“$¿š+.l¦{׫ ×ÓÖ²öLÔn¼ä§íŽT‰Š½Lm‰é²Dóc»!ñd¹sêb%‚¨ÑõŠ§{ìRó-ùØ®ø$ç Ï£â05Ç-#ǵA½æyJ¾f€¡|†hùg½žÐÅ„D%‰7ÁÅ6?ÝÌÞÔ52HX¨“÷~µ\ugËâ$10äèI6î,o¹“Y>øšU’!rÂSOÝ1´Ùy÷D¶æËv)½1d‰ =p ¾¸ÐÁP®·’“”º€7ñÀJÜÃõÖ¥4­»VrL­·s0—?ÇFOÓÒµŒ]w.AÄŸ»n9´ë¸rñ§eÛC´Jѧ¾.èšëjïâm£GÉg„ùY&Mj.Ä—¼í2ÿ}du!ojµ³z$¶R|·£î‡X¸» PŠóU+ö3Ѹûíp›L<¶rù›`¨`ø$iŽa9·¡¥ws ļö†Öç U&éjÞrœXÉ/×uŒK¢Õï|_ Ù‚°ç¤REÆÇ Ž6]²L36 fífg7ñÎ gü~èfÌ*cÈq†¥ ±Ÿc*+hMÏÖ¶c«“žœùÆêf!Ø㻫 3ù«Æe¶ØL]N[ì+¾côÃ؇!â§Xf=|s†“uábè®ÛYB 7nð &®|.Ú‰ét±ÇÙÄå.²fDR[䊫’?Š›¡±«SböÀŠh'àëBlaˆZ ¨zß¹ KàÇ^°€Ê•yÊ\2dî[‡°[îŒs½2Ìž•eÜ5¼GÙÐ2od¶Àh!¾µ|$ WdÏ„Õ&#çò­—ÍgI4ËC‚g† ZzI$éÚ€ ô›^ ÔKBp¶Ýr6~TàP?´•ƒº_$.çk©e4G%Šôá·Ü¶™v—ñ>ÂKh“çG-æÚYÇMä…±{¼37œ4uyÔÿ€½+ÕÂϲåËä“;Kã 0ÚC€ÂyÜœ÷Ÿe#ðlø4Á8 ÷®ÁQÃÒÒÿv1'Œæô~qi!\jòÔš0…¡]ªO±É¥ÃC{ÅéA,@fQi4Ûq…E†Õ[©ŽéXŽzÅGO è¢qëB/•¤\L}Ûl
+ü®[R¾n!”ö^1\¥Ì‘BwÒßzá0ªÉç…8ü¤«æŸ\3ÉI2?„:¾gýžÇ·§³‚AŽeï©"Ø’ ê3o‡PŠéMFÐÍL+º/·Zæåø¼÷ed¬Èuʉö¦\1¶Ðölî(€SÕPž— ,ø­J‹#ù¨'uÅ­
+Gbáp8² Çq\‹†+îæ+%íÊ´k{*},ˆt&.íáκEn;È
+AøZµ 쯵époðmºh#ýð!q \{Äõ“õ,ZoyQ/úhíÁS¢X´=Al—ÏXòãHA/üFÈ0¼—q>·Nu?N+ýKð x€d皇 0P©·s÷ÊYª¡Ï«™’®7ˆo \2ÿRGúôÞÙ.\g¥éë-øð8š[s¹yI7MìœÅÏ^qáwp&DoÛDtšÁ^ÑAõXmîy¼Nc²·)9ã: úFÓÁãîÌ¿&ƒlàö·©uf÷ˆ{#3|½çŽÜï ¶„G'¦…kØÙÙý…zðÕ<ÁKt˜uÞ‰c1\~‚ ߶\¿à }ŒÃ{~{ÝÝd¿cÊ~ƒ¦³ã2/~G\ÒÎw÷>Y´¿ä»oiíÌ3X­\«ðŒ=¼v}'[Eú CA´Ü%Ž®²+oÀ±‰ç
+endstream endobj 752 0 obj <</Contents 753 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1501 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 753 0 obj <</Filter/FlateDecode/Length 5266>>stream
+H‰œWYsãÆþ+SyRæÜ«#[JbÉ‘¨øa7•â’1È ¤-ÿ{÷×=3J¤´N©sô}|}²T ÿ÷êÇ7‰ºß©—镪åjt’†4ª(u™$™ªšTg&)ÕòAE*^þo¤r#¡ØZ+Sè2kÔ¢.tfj¹QÑùòæ‚/œ/Õo*krMÄ«š¸ätÝÔ:-Ušq5¶êÕ«“e( h›´ŽÍ·}…¤•Ñ$"ã'Ỽ!qj¢Bå)~3õoYÐqå:QŸ£8-#/Ò(ÁzŠ·"þÏòïø_$raŒ.k/rö¦´t߀|û…tÑÂDè!ýÔèæ]‹dÕFÅFIþ9x™†¤É=¯æÿc%T^²ªšP)Š›Y¥ªù/³—«W^qvrö1®£Ÿ†ŸIýœ˜©gü¶päÑ/ÝЫ8Í"²nîÜŸ¨kÚæsÛv…Õ]«8JÌì+§ äÌD¸¦,JVôò•†tuò-‰x}«¨efçñÂD7粬\ÝâýÔ}+Ú7ÑéÆÒ‘5=òhuÏ”øDWÛ­êèDõôµÞòë½nâi¦&áÌÚ@‹,ÈW¶¶Ë®oʤ:i åì'–ä’þÕÙ@4«èa‚]§ºàfÑÅ&ZÇiñþ4à9zvÑÒƱKÁ­¦ò;fêâüˆZµàLp/ÓK³¤íêi7d¦<³l(ÑQ¤¶ç
+¹ÏÅÔßbS‘2y4‰i‰°š_[µz|‡Ç'V¤òD¿-ýªõê v03¾Y æXäNášãe‘ºhrµHu
+… Â3Y­ŠÈk99-…¯« ^äMÁD÷´§!Œú m5ÑM¼ÈHXºußÏàüR–É?¤Ú½¢03ÈÐãƒ=QÚ=òîÀOÙ›pI]3Ël<ÉÎK"×ߘB7³²GxW£Rƒåym˜–|+–²#/ï„Ón=¯8D»·?÷¯b±¼;öStÈ{Še¤nðìˆû=^z<Vxl·ð²:b»Év=uƒÿ¢Øà¢uþžº»®=×YК
+ˆ’gº bì¡b#ŠpÔ>8rea4ª®ýe8zz¨Š
+…!µ¥#‹‚•«[6á5Uõ€¤Ø±CIOªH.2jÃß
+–#¦˜(Þ!GTŸm
+Ä$/Y~wzØPa‘3”6E´7LsÅÂ^óyH„›r‹IpñèÒt€‚Ýš¿ñê*À¾hšò“(‹Bdqbt̘¿pnš,pd.׉O¼32°­‹R%a¯;RvÅ–EõÜNàEz(”ÕÁW;>úÃ[U5¯}8 â}CÏKæŠõ1Fò”Ñðe…ÅìÅÅÙw”ÍBW„æàbcÁlh_È0…˜tCkÀv£gÓãhJ›¥V¤ë¼ ðª‡óÇvÝ>RZðÇpçŠbC›HLoû—îS¥‹·íÇn}X$|;|l©ý²ÛÕvXÓ
+®ý¦±Å‰¥ï‰8P×­žÔZÝб;'ÍØbÉžùušý‹­ÆÕ¦Zý[t…äÖƒôÝwÉò¯d/ïÈà÷½ø‚M‚v=ôXäú Òm‚Äãƒ,1®Ë‹
+
+ßÓ:ÂÆSsà»Üx.]§}u]݉»
+’A~م߬±ªè÷á7¾<‰Ì@F‚  Ÿƒß ç ¿
+g·~¶·xPd°d3„ð8ÍغÄj„aý ÷Ë+liýuÓïìã‘(+Â(Kl”Y?‚Ö¥ÇG0Ï‘ _HÚ"òÒ§Èæ[x•iŒ¼+¬Á•¢f†Únã”d#Ç9†qÈZ¾’x|æ‘fá€ßF¤‘~m¤w2’²fÛÀŽ/&M–v`}áîad1Dã«üæº"Âo̧‰o–†›ešé¼.ƒYÑU£o»Ý¤˜2òȈâ“1cqsÝ”©£w!#ß¡iÅ +è·/æ•Å‘¥´ò}×Àb|§J¸S¥¹Nêzo`™¡Ï$Øë»hAoGî{ýÓT^*s¨jÆjK¢^&aïã+ÏÝ<Õ˜}
+åóYë&ï†ÏZ7ß1¤úFN]!Ê#hÕL‹w­¹ø`šh£¼2;¾á
+êïµt5‡^e,N­BÚùf‹ Ëh5ßÏ·±Ÿdµ×eImûù™ü³Yr§SSi6‡:ó=·Cy~+f¼\õ© æÎÍ”©cÔÔ`ÈkPìáúÁUã#:-Í|¡¦ãŒ L‡Ô½YpWÇ›!$·HŠ‚Úë®27 g¶ ½PU|%(.‘.Ïåâßg%-Û4Ü¢ø 1ú Ô¢û¥<¨¯z2
+ôv¡–\…úÒÚê*ÅFÃ)ª§ÜäYˣƳ9Ǽ0wì¾ß²È¿L¶ÒUOR"³ýâ÷\rÙwܯæîD({ÜvŸ²Q· û`O¾ƒ=<HÎh1)Ó}Ø0ÍÓÓ½v·œ9ÓÖša¡4ù¾×@‚Á¥m“t*ãV |–Ø.$í«ƒÜ¬Ì7‚§@ëi˜‹G]N4 ¶yûjTÖfÄÂÈÓÛ{ˆ
+Is6y^¬+s߯áû˜Ú±B… yôꉜ/¦wK°×”Œ¥c̺ÌF- (X$U‘E§¦2/9-ý–ÀHÙZáÙ9u
+8Tr—Ïjªçžd>gIE‚Ï5 8ŸéÑ
+¹90¨¼x“.*ÊT¥Í“ªòÃ4ÅŽñì„“„H²B¢2æÉþ?yº|f–Õ0ßzø•ÖBITñíX9<Ü @¼ÊQ_t/ÅÓ")Ê~A¢'Y‘Ž¸ˆwØcˆ„”¯`"8´ÃQ•âÔ×Iæü }?HæºÈ„ +êÖ–›ÃÓÓf;p_"cCG#JÀ¶%éW¼x]d´?åʆÀ¸ÚýT§V/@s[†(‹¾›"ÜÔÕ¢sõÀÇÁÍb¤
+endstream endobj 754 0 obj <</Contents 755 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1462 0 R/T1_3 1547 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 755 0 obj <</Filter/FlateDecode/Length 3635>>stream
+H‰¤WisÛFý+óHfg¾I4ãÒ–,ÛÔÖzk‹"!‰ ™‡ÿû}¯%ÊëÊ–Ë"0˜é»_¿9Ÿ˜DþmïÍÏons¿3?OìcÍäÎTq’dN6T&Ëã<I¼)*{—äf²2 'È «'œà§™qYœûÊDe—Ö›ÉÜãÉÍ…OÌgã«4†ð¢„–Ç]ÛÜØÂͶ6¿›µ9Ÿ ­¡l—RvÔªùzl¢Šllt‰Úø/Õ;¹ŠÐº 3©å¯7¿éBÚ ó)m¸0²AÂu˧,ü÷ä4øLÎœ‹ó²3Ù×Zz@9ýĺ j¢ò³¡|ëâêFÄ'e'%é§p ËU°&ítUO•JyªªL†N¡nz—ŠêG²œõY.žeyXˆ}’ý›° Þ¿gžá~* ôæ k&rfÁŽ‹ÍÚ„ÖˆnÚ¦?1×ø,û–õ”«»ÚH•¸>ÿ®·ÓV´SžÔÊ*Ïrµ’áì Íœn ½®?ê]˜ûÐõܼ Ó`Fið×buX™óÅÞ\O÷µè¥>?ˆKÞÆÅÚ’­«¤b­Í!Ù\Œ \pÁ§`+Ã*f{hXàÿ—°
+êe•Á·ÐYôn«bàRÚ7˜Í¨"K”I£áæðø¸Ù"Ð{H¯aÿÜ\סÍq‰Ë]ze‡)÷MײTÏC …ç ¼pJÀO8©ð!îz@¿`ø8ŒàXÈ@™ÅÎÂéL¡-Œ AÛѱ,O—KsËUÉç³XL‚5ÕqÚõN‹ÎÈ–qQ8üÆ6+Ô÷Û M~GætdËÈf7Ô´æ'F!î%ûì ^%&r1_CäÅHÛÁ˜C«\‹CduIP£:Ëà*Œª`„ÍñŠG§â ²éı‚6$ÁLV—8.RçŒ\=w2ñ¾A*µ•Åpýyâ³.ñÇIg·¼EYÐ&Ô2W,¾ñáÇ’¯/áR#ò3,ðgµ Ìþáâ.zË+îÎÇ\|ì*æi›Dë‡s¢ ~,
+¾êúÜ ²”€K;ˆÂ§P‹€Â$å'Ýí3ªøäâ2É[)ìÛTû¶öÒæúìܼ‡Á“èƒU½¯ùb~›.²}w²a]×°ÖÖ#Eo-[vLyf¿‘œwÍy‡Ø,B+í¨Ýºg×êÝ5+úŒuuÎ'óÈsSóH@0¾‚9J[£TZ½•"®F*í+±QË€°„ZE„åâÏN}—`§Ð.©ui\fþ(µ+¶Ü0€z“&^h§k”![W°i¦;ÁŸ‚ª}0[
+JÚéšhY† znå`e ®Ì$VKÂsV˜ÈXóé¾)‹ò…ñຩœHA¹ÍÐAçò.1Ú—5ìøR ˜ŒX÷ë»Å=+u«%ú5 @§ð¤cU®™C•·C8ñJèU1ìõ¼ S>èä§ð¥Àå1R¿}÷úâ×
+ ¤úð?hÛ‰ü˜£XKÉívŠ;÷ˆÅß­‰~Ú|Ô
+hÉʼn¨õ(UÞšXÏþS¤r‚}Ã).°õ¶V=BÞ¶’Hð5
+‰¼ô´V!5i»Í…|¢]zìþ8ŽN"}Ünf5G˜0ŒŽœÔÈɺ[^™vìô°c|Îöût#Y“(¬ìņEÓ¦üh6 ñˆ”I#€î»Ç¹l0»…œ½×c¡öeE"ê9¼nh¨%§v'0:RÌ!û}ÌLq/쇂`¦c)Þf³z·»;pU6x÷U²ÈUõxb>«’¯DxšX\嬙­d=1×o` Ê쫑וt¹Ç$wfiṅ‡ë–ÿŽ_Zà?Žâ"YBRj\çÐÆæw³~.'M2
+íáËw‚£³ÉÅ;k×ã˳‰ óø5áؼ>@Òµ³ô¥]q7FÄ×cž›÷ï8f¯nÆý‘´¥Ì«
+ƒûWUé@¹;^6Æ<·Ã?±#³­!(ä#„ŒqÃhÑ/ij˜§ž¸Ô6é˜Ï®xY¹ÑÑL´:‹8ÇõJKÛxð«¢^dõZuP.Æ¡áÅðâ¹Ó]vÌãŠ+Dš+Sˆ_,QÇí¸Qø-Dè1¿SÖ‡TÕ±2†Y›Íä…Íó²FùÒÍÿ2^»mAôW|4Um0˜ôU9XŠìJIO=Q‡$¨–ì¢Êßyof‡Åv¤â°Ë³³oÞ¼wîO:¯…bJÄÂ971y”?æDåA%%XÀ$æ KEн%,×WÞÝ·ÒžåÆ
+’@Ñ|9ˆÖR7…`Ë Zÿ`|JÒÊäï SÝi\H}Ù·Ög%×Mj*é 8餷€¶¸Âc›5q6ÌÞA& Þ m>ÏKY«Öµ˜>xq𯩊¯i×ÕܤGIÉ¢R²tE·Ö€æ‘Äu=‘. ÑÙ0 ö0BtÛæ
+[•î N¸ôGpRwÆó¼ ÉXvÿ wdÏYjøé’‚µDôu^°f`¥"–¿òÜv; ¤"Bx«o³Aúxž²o Gbqi à¦ÞƒùØ*8ö, :©Ö] |ÊÖ=G
++Ï€œóÉ!ÅÅ G È9'ØšˆlÝb˜ªMÉD"…õö.n â´tÐ@>=4WS‘z;Õ#ñü–„(°Ô
+â/b²2ÌJ»‡•“N倬Ú6þžg &wò¢¾yJ‚>v&Ÿ׋×þrº¶£^z?*7ÚѱÁH{îÓ%Ä–*Oi,¸+ßxÔŸë±þøE2AÂ.}©Hâ6]L#Q2´çhJõˆ!­Ð?ÅF¤w@Z«’\P¶´n²za/‚²nY¯¶I¦íêÅ“ƒi¶± û–J­ÚÔ‹8»ÿ
+endstream endobj 756 0 obj <</Contents 757 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 757 0 obj <</Filter/FlateDecode/Length 3713>>stream
+H‰œWYsÛFþ+ó¤ƒ9
+¢h}$Š<’åÏX›¨Fô¬cm°˜/_vÉ¥¿ˆ¹L c'çõ»›ZiüæÜHyO$HĶ©D Ê;/Á‡Á<>§|jEº~ˆu©íS\Fµ"–ytkÝÑ2‹.ãÄE籶јÞMt'ytwKòÑà¦÷a
+ÿs8§Ýž¼w®
+[¾ÓÛß]0ÇBá÷â6äêdT8ØKÒ…
+㬬˜"´©ðªäøbMš9lVêsοœõ­Öenâ0$n[ ¶_fpëæ4^åͪÐð‰\µ6Èš@•F˜õÈÞãwäÿ¨ÄVâF³ÔàFý@Õ.èåÅ6”sú§þ”rŠM±´Q¥~²gšoH­]<¶öÔdåѪV#œ ˆsL{ʇ˜á;AÎÿ»¹”¹à-{œPhpšlU/’‘ïÂé¹´z‹’0ò¥=B¤6Xä;(õïAiÚ¥Y«ÍU}‰q£‡mŽ¨ö@GN;®I^¥¹ñ¢Ðø)Îsôå6:i {0ûè´Ôe°F?†šaTE¹®éª)‚G¶ß‡!Kaq,•DK±tÊ.6v![œ4¹ËoÛâ8ê²4w¦Õi¹fŒ<„‡³ä¡SˆŒ)w`­ú(áÛ ëhXGø½ë˜} Á®ö©)Bü"•Vh‘Û¢$í¤Å[9"Wó`˜›Zm÷JUditöÑ„RdŽ¾£BŠÃæè;ïÉ—õ/|©×ýwý­ðÔÒV¿V%D¥´4Á,Ï]€”õ–P\¸Ò¤‡müË€åæ+îƒÈ˜³z1ÿ“Ç=ÎW@fonºœ¡ß`ÁØÃ.@zY6S?†º¤QC$.,eÝÔ\Ÿfò&?¼5ÅcŽ“+Þ|âÝ5Ó™7šLõ©]E¯›¦².›±…~i^Þ=µIËnäiæ€ÖÁêÄHL­7‰öìÑÔ-&Sž”¤ßBV¥g0Õ–|WT2¡`š§©ù/ûCJjÐëß¿l0—ÐrìÝÐh«’fÑù‹kžªF„ÁX}SÍ ¤LÅLliRíµš>ó~¦†H(²ÊwůØN´#¸S 5RŸzr²Z•ÿ
+¦Ô©/é¦M ݤj’g©¥&Iý¦^Ž©ØÌÑ”¦\fɈròVI?ÍмØux®IS߈5 @œs²­­2bÛèòàEV’ÏôQ2œ
+KâîI´÷plvË4bK-ٻ᩶¯›í‰Ø iéN l¢ÙA€o“ûæŽAìò||M«’AD ©Õ•æzÀ—º:gT7Ý.ƒZµDÕjÁÚ_åÔ5èÜ  ¸:˜¶a‚-e‚M5iFÞö)7Œ],ÅÄa>ç}q„… ÈmæÏ >Ò=QB/Þ"cÖë'*2ˆól,,)}šd5†bÃgÇ.7Ò'…¶TZmŒ‹yî`ŒUÚüŠR1Äs‡ÇššçZ.r%Éò ÷7MErÜ_ÑÎ|Ù”Ç 'kH}J—.ÑÄ5mî•Ç'…:U0¡TÏz\a:%èÆëfÇG Ã7,ÈæA:Vú´P˦æ9f#7Ö{r¥R2Oö&e¨rº™h©O£rllc–ëh{µkHýü|‰ÎGtSRóÐ&(¾%*•Ç/ î_°¿ÃëâeœbÚ;:Lv«ä!ÝZ
+¼I[Ñr_Ó„ƒßÝÖÌoö÷û•½*Üt%ó¨ÇRêôf•…®éÕª¾ZƒÇºÌgõ±2<¡ïõ–+þ¾žƒá#—k|ùŠMŽWZáÒÙ ©,÷1ðqÑPâ8b$gØTusw‰à8ǘ1æL¾ÜÝ*ðŽ¤±á·è
+¨óò/ê«m7m
+þŠ•'[J-|Ãá‘
+&#m‡ôC=sžã\i
+_髱 |~&¸$/ ‚bUÑjOÆʳãqa.<Úôš¥×ú{ãí½;fÈ£ËüéݸÑ2|ÚY¡íªSWn³;Oo{,pWoE>õ•æî`‡4Š"¿°b¼‰uzŠ7±^Ê4Æó=ƒƒ`bG0-Ø2‹5¹ýÀgv@µ9Sô!­4QŠ½L×FÑÐøg·®÷ätÆ5µð8ˆ‡þ\ÏS9Þ©Ñ_à/3_ÜÜqâ/ÌäƒIê—í‘à6XðéÙ0~Y0ÎæÞ
+endstream endobj 758 0 obj <</Contents 759 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 759 0 obj <</Filter/FlateDecode/Length 3362>>stream
+H‰¬WÙnÛHý•z$›UÅâ’·´bj JÆÒL?¤F¢ÝjÈ’Z’mÌßÏ9·È"µd™ aX$k¹uêÞs·_æ*•¿ýƒúùÝ,Uõó\ÿ'UZÍïU•¤©3² R.Oò4µª¨tbMš«ù£ŠT<ÿSvh¿#ÅN-”qIn+5*]Rj«æKÝÌgÙp3W)[e „%NÉ°Ý”‰Î•N!\íõ›Ú¨_æC4”m2ÊuǼœBô"[Œ&õ?ùsç3k9•i>­ú—HbeIª~bG&é(å¸æ›‹ÿ=ÿ•€ÿÈΘ$/dûU´zª@Ù}†.µ
+ñòÝP¾6IõMØâÊAîÊAiö{<8ËT@“…³ª;ÊK9?ª4ÃK7ý•Šê{¬ìz+V±7²}—ÑÇ´3®Ÿ‰­z泡!÷±‹|Ym7*Ö6‚v³Îü©ºÃ´¬[75G–˜Þþ-N3°/<A;M„ÚAU&彇‰—,À,qñxTFj²¹ßîëc '-£ù¾Þpêpßì•4°€Zª2¯ä$p5+*ßû“L–fxR¢ã*RïšM³¯×ÐË[ضK
+ÚÃv!|DwÓq \æ1 ç/¡I›ˆ I™yÜH$º(˜±¸˜aRGlµùY|?‰›Wpx9ç8TÈ$ToVHÆSñä¡Â0vU)®
+yÆŽ«¸ \®²zOIÅëo?0jß½<ÞxßÈÐTù¯;,z3ÝÞÜ Ømòœ|pEËjXYj3Ùuµy#š¯Ћ$Ò²+HßúçøÍœè*@T6Ú+{4°xù54_w/ì ÇÀ’Y*Œú?¹ûåãPS”å9qÆÓÎñd:Éí üì´•Èþ;‘òq!WЩ|¤Ár8´Vâÿ×.ÐèåSÔE¨Ò”
+«ªÕ¨H*eøšqª€×êþ§‹(õ#Ô¶%|‹•ÆßBmçx7GC ‹ßbÓð‰ â3ddG豇pëq @õKN(ž¥ *Ç8öãagÈ¿H=Ži¾üB´üuÚ»f „ðÁ²@#.Ùžßã¼®ËtêóUVdgùJxƒÃNªª‘ÉÑÊÁYuRZíK•[Ÿ¹Q”=ðí‰?û˜5Š•ò¢zÍ„E &îù¾•%(|ù±’/™B²¹–ƒ,gõ&d5J¡ÁQ´u“øÂk&c‹…|°ôa/RdbM˜JdìøƒÚÃàxä¼²ÃÈv*AûB•”pR†¯Ä²9êŠ7‡â-g]8U« ë®ãª>6R]X7¢ ô v<ÏÚsË7¹ѶƒúÌïÿÆÅÓÁ  ¼e[Ëçë»:̪ ÷²îÿ¥—¾—É7,§=>YòÁ{±ƒ µ“²i&J½…¾áÕ^–äŽU,œêŠÑôc¬+¶P†mëwÕrË£\îäâwS6NDN_§¦S°‘ÆO'h8¨§üÑ7¯yj–±æÎsÔ^xµø¶ <Y#FkhBì!ç–êÜ#WéXšµ,åŠý4ª=öŽ®EÔ*NVÔ
+pÞa÷š¾ò¹æ*÷^®8È53²m*;_™Ü{뵸ì(s û£a²F™Ï’˜Î8³X?áw)yy9,¿¯¦ÑùO¾Eͤr:ÉwÓ±òe1«OUKõ¼èEµ}8|1Ë‚­eVuzk3ÑÕ:AŸÖ y0…Õá‚HZ'UJûk滈#6ÑÆ} ùžžÅ%UV†ª‰ E”yÃ<ùŠ)ð@ÒF¾ZÛµ­[Þ÷&
+IÐÚ¤¬Š¿= ’ðe ¾>ˇŸÄÉëC[¥–EG™ýçåÓ“0Dñ¯ÂQÛÐ?vÛ»šxÁD¼yª¸*AÁ€Š~{ç½™¶K-Äx12Øíìì{¿‰…$³cß­}4}C5Òd‡P4;„¢F¡‘M¢} Ý‚•ˆ dœPR†lrÒ˜Rk¹Áàk
+ߣ– â^,Ì&•Ë©oz¶ý$µúÚÜM]‰Þn¹
+·rnÕÀ–"Ó:Óº…PÂttÎr­QC@‚#$ ð:Œ’$8ç³wæý‚ð"fyV†$8’²é¦•vˆÔázœî·ÈÑi%µO³G$¨&EÒseoÜL_bÆqòýœ+Ã'\¢!oÏKˆÍJÚHz’’031˜Oª’Ô´èôfáCG2dÿý¡æ(ã¬CAÔ~Î)H}
+ÿmM¹«#{ûÕÁw'³çz£—Ýêåç D;È#âË‘ 6À+.R§V¯þ¢II)£KØݧZKÕ(mžl‡P²?ÁÌüÛK=÷#ÿ%ÑÇLõg.3½ß’¿Á«xbwXo–H8(QZĹÑMùYccQF}x¤M¢Ñ)Ójö¨L¡z¹„Ù‰´Û?ç³ê Ï3‡Ùø³.ÚªòqpÙpE9þT½"&Ëëã[ž±f¥æ;ﶫ,ƒdÙvÓzî®XMãþ{œ³E UW
+ßÐÇLñϾIÌo›õ'9úA
+ßÑX'“4.Zé˜;¨+¾2ŒÇª·U¨¬IÁç¡-\ÜŽ~
+endstream endobj 760 0 obj <</Contents 761 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 761 0 obj <</Filter/FlateDecode/Length 3400>>stream
+H‰¬WÙrÛHü•~&‚˜¾Ð
+R[«à yfU©•QÞ“"9`ÈÝS{¼®2.G!+a=êÁ(ç,Ÿƒqš8í‚Y ˜»9Ä åñ¬ÙTD³ìžN.ÃeБÓ@ÒeE€‘¥v#ÇL%¦ ”–p̲¼‚v.œPˆá9;¢œS;T—d„×—C
+T'–^ÅßË‹­«`ú è; WöÖ׬y9¢°;‘ôZõƒÜ}^ÊmYžçrÒ&žLw69í ü7Ùé…}ŽƒJùp(”XUÆJƒ}Hh£¾àÿm[hLÊ ;ž–*CE±]©Z«Q‘U`ÑðëT Wêî—óEû©XTáÿFí³H Î
+½jŸf×›;–Œ¤¬©ñ€¯%G6ˆ«"R³î’P^FÔõÕiÖ Xy›çAi|Ÿucò1ÜÕ‹zIGÀÖåF.ct­ñázƒÁšBá;‰Õo“ïë÷“>L:t$Mœ¼®rO”'¼|^ð¶9i¨ç’1Ç íêúR˜ÉÙ¸XÊõ ¸†òºŸ‹1÷@E˜iEkѾ>t,ž „ïÏû
+tÌ%!>îpˆjjÅÍr8IœDJ{ÞX¢æÍé#ç–K¶?—óC­¾aá¼+x¨õ@võËÆúÕXˆã‡éNhô›©÷YdöÌ.„Ù 4õ÷q }·(m
+Žï*Y`7à½ÉrÛvÚ¼džp\|ÚlÑÑ­TZ•6¹Ünn—`´#ûóØÏv¥6Þût«m²eH‰~›ÃV½Ë‘Qß­öÂ,ß;ÉNîO?œœo Ðý8V7õby·\ o½£g<ü‘jÓ±*Cõ2b.wh4†š2Ãúü¦Þ ÿ\Im=—"]áŒÝæs9DÀuŽÄ[WÌšéB¶ÒfðBÁn3ªsƒK2˜Ž>i|Óþ¸¢é~úŽª«zºp ]Mh¡’‚xXJ#tتÃnÎîcËw§äWn›~ÖZéªæ¼½›&i,§}7äˆpp]öÌÓ‰àr©¤7”Vñ04+ÔݦmŒø<¶âóÆ,&/Žµb+-ìÉ ΫüÑ÷±+i<߉´
+Ò¤I§{xGâÏåK,Xˆì›þ3““­Wßè±fh9<BruJˆ…úS†åØ4°õ>^6TQ/âU"+Ôv·¬ùr@¯cß*œ¹ÇÇiÜŠ«åæ¾±Ð>SitÕ•órâØ
+“Úrãq¸‰VŸp¸3®Ÿ¹PK\~1opL‹®˜~‡徜“P&z<™£6DöIð¡p
+dÿUJÚÒÜF­#ˆŽ¸ßžìäœ%¶Þ#êøŒ&çØoÒÌj…¤œ“V¿WüOâñ"*{­ws0Ïnˆ50Aì}g`›˜Ð "0a—äç_*­ÿT:i¥)kql<ð^|­&UÇèxEâ
+|B¿}í¸¼ÛmÛý˜Q–Žê«ˆ+š7õºçϽíînìÐ}ß½¿òĹ~ý'¹‡î#h£™fLêÌF¿¹\GüÔúÞ´j TÜâžçEüˆ +~!J|•™!áèžBÑ3jfò_ÒGÓpŽáÿãî2Â"U¨‡è&"ã¬dŸå“IJá)týÈ—ïùÏë ~I|SáPˆ#X/•¶`3Q˜qm
+endstream endobj 762 0 obj <</Contents 763 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 763 0 obj <</Filter/FlateDecode/Length 3388>>stream
+H‰¬WÛrÛFý•y¶ s0È›-É*¦J²—än6[[4 JL(R!A»ô÷{Nn¤e'•ÝR‰
+ªªfOIªÁNGÑEt\õ|«#5òÐ¥$L¤6øÖ—q•ì¥º…, ñ*dš5X)"J&žb [‘ñ(™Æ‰î ²«^•0#û¯îUw†‹F/z£*1*i­Jtªó2˜öºæÑ’ÔüQŸåAu3úÏF ¦IĘxÚÉ v™,úM†vÐÀ¸è ²aK‰"e%SÝ»q­ÁOL£½¼†%²"“ªUŸ:ëªÓ^Sù ê§ÄÎõ;>Ú2}l}[¾
+˜dz xøˆÿ@OÙÈÀ6¶\
+’]‡ãÌp–Öiu–ÕÈÔ |éHÒ›aä®cÁÌ*BE²öïC- —î1Ë¢˜Esî
+I·®ù®8¿“º‰—&Oº4jj,[É6Íå”$‚|â¾–i×{ü_Ñ|ÕUÔßUk£²^§Ž^W@“X>µ¬dz ¡åÃ'êWüÿ¤d˜Óˆ^Á^¹U3é2(¸€Ãÿ“¨Ò“˜äÞaT«<- ÆÄ ËŒ}&Óifu« ÞËE˜a/Î}™f~L›¤©Ø¼RÎØÔã$°…õ<iýmÍÑp¹Ò6SlDSMº6÷×O?©Get%®
+à;`Lb³TLÒÞŽç¸|öZ³sß7ö¹L -RÝñÃéýUkªÌ‹Sy,†W3´©`*øÁˆÊ” HNþÈë¯éä\ê18üOŠÑUÕŠ)-_ÎÅÆ8ÿÍÀŒAãø`¾O¿{ˆÏ¥Ãéoø¦+ Æ}ËíF|D=]]ºòp͆:‰Qª§ÌÛ+þÎY%dðžŸïñù!6XÁ&q»"zË%²‚²JqH„¼•ïÙûÝâFFúT¶Õ·áe‹ÿ¼l‰Jë$¬9gˆÇÕ}0Ý£, ÞÃË U€—q„×_CWs©†ÑÝ¡IÖæ:—*Ò¢'ßQ‘ åF—@Ǻїóò%˱aÛ.}aQ·1<)0“ßGl–ô’z¸•Åè™L,­ßž­åÞwCŽœßdÎÉ Ó`¶¬kÌóüÀص-iAú[rOF@Îò~óp
+M
+„‘:¼ýø0ÆŸølHHÙ§B.~?qõ±›
+Žšc~•o&Á6¤8Ö¶Ìl.47мç@ïZ. ªÃÇ)n)©¬ÚOnšÍ¢ ³A÷/̶ šoG'9³P×î›Þ\…C”|
+Á|ÿaz'ÌúmH|NËì‡{¾¦q;)ëgRÚÈìŽÜµ4øHópãâAŒ8Ö"˜z’tÜןQßòœÚNï%(—´÷ª'Äéˆ0ºž0æôéüo­0EÜ$&S쾡nWx Sjr›ñy''½%5 3“|f³aÅŒV{íXΊžÔVÂ&KØœÓfßÁoj°ØnÃÀ†dr¹ב©®B›ÇaÏ:Êå@?÷ruø³7ðóŽ’Õä†R㻞îq%1u(j-q&¨¹Ã!Œ¢µsmp%&á6“ðGÀýÂk¡\·W--]€ÊìÂÅêânƒù³Ëͼ»¨É)9¿4…É—'A·@æM€ãÀp}0Ç;ÓG4Q·[RÏO >TìEp*Ä8IbønrýFÐ>’3PåpEm%ÁL쾊½ìV×ûîRÉkám€7ºx"Õ†%`Ñàwx#êѹéQ28õ6¤ó#;kk7* nTBåã[.(x¾»N‚S¡£2“ˆ?_$Xa(°çaáz/¹'¹ªIX|˜PôÑü°èŽ0uĪ¹ˆ|Uî¢r‰ûòNË–Z€.Wy§f($7¢ @^Ù¹ N«%Áˆ("]ŠoR\®'¼…‚ÆOÞis™jæ²G5=žò
+Ž}--tµaYa‚«„%+äž÷È
+1,H,ûœ¸#÷˜îO yþw®·«‰ÁBùZJCNˆº r•»È‰ªçc!1¬$†—Äðâí¿‘É9üB'Ä5ÅõgLY÷ÚœžÄ ò] #,ɦóÔUgY²'«1pø5©7£::³YÕ»¦yáPøûÈ°ÛÙZÖdF]ø/[ ÃoóóTkö¡ÂK¡¯Yț͚Z¼0Š Õ,¤<°J4ê1›½Q]#¸hAgb:MÉv¨ih!9¦3Ëß´V½¥Öà–cú¾-È|hI×/—Þ¶a ÿ &ô¤Ä£›A..øÖ“à*…Š¦)bûßኤÅÉÅ–šÒ>¸ßL‰cML‰è³^RÌLgÃö+Ã’ƒ„¬a ¯ÚÛN[[Bû%1éZCT†ê–© ˆ Å1˜×6úR1™ÖXHÅÂєыýXuùªj~•hJ^þS U:×­Nûýp8pT¬¥ƒi“þdß±ð  3$ë¸3öˆ dU²Ð0)Åê÷n¤Mï7[0IÝVö„¿Ël›ŸŠ cþÜj†èZkòÝ>™ûþ@C1µ$%öh|öÇŒ+§X‡è”œƒW²•¯*ˈ•þb3ŸÅ­¼É)q°BlÚYû”•±µ›ºÆ+l܆ÿ|~â åƒoÅuHéÙL̘|ŸBq!Àþx¹…‰û…); Ù{”1ý7r0K7| dÉèÁ3é•î’`ÒPÒÓ
+H¤ª½^z&0$ZGá#ÌyG4qo“BŸPi×Q4ãOÀ^‚•¹¾[¤JÔ+ÇUÕ˜²nR®Xå
+&®l~^IßÄ•.rÅ-q¥û˜+q¦VћԕqÕÙ8õÚzÙ—ò8µ”Ö%äi¼7yÞ:ŠÂ¾#ÐÚprËKä‰ íô5tù8!È¥JC5‡~•>àÅœ=8èÂ+EÕyžtzJ´Ö´¡–½¿‰XKâDS. Hž©,â
+¤·<Zl±*ªîœéO’Ç×ÚISõþ˜´ò¹`P³û­o»¾û¶TÈëiÛÆë¡ÒjX„«ÝoüÒ|8ß<-ÂæžRÆY¯
+©…E-,n®³edöbd¹Êüêów]Ï S1­©óEÛy¤yaQ,Šb£2(ºy=,ê!YÂø¾6¤»Ë›]ö_€
+endstream endobj 764 0 obj <</Contents 765 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 765 0 obj <</Filter/FlateDecode/Length 2722>>stream
+H‰¤WÛrÛFý•y¶ 3ƒkÞlIV1U¢½³yp¶¶h”˜¥H™„Öñßï9ݸ‘¢•l¶T"€¹ôôåôéžw3“ÈßþÞüp}—˜ûƒùafÿ•kf+SÅI’9YP™,ó$ñ¦¨lì]’›Ù£ L8ûMvXÝ‘`§Æeqî+•Y\ZofK\Íî&²ájf¾_¥1„%NI±Ý•±ÍM Üìkó‹Ùšw³±6”íRÊŽºc¾«¨"[]¢:~Òsgw8"´.ÈLjùôæ:‡6HãÄü„6\Ù á¸å[þsöþ;TÎœ‹ó²WÙ¿ª-=v ì>Ñ.ˆZ‡¨ül,ߺ¸úCøâÌAÙ™ƒ’ô×pt–« MÚŸUýµ£TÊéQe66
+¸L*ª?ålˆrñ"Êc Aö×a|üÈ8ÃüTèÍø¬È}˜¾¬w[ZÀ»iþÄÜbZÖmê9Gµ”¸!þ­žnä^Më¨&DBa+zb¤W4Obë:EËاaÄ[ȯD‘Kl\B‡5þ÷a®º,3ÙbÁ*Œª`§V
+
+VuÉÌ"sÞ_Ѧ9ù¬ìRú2t.˜„. n™;Wü1³epÊÏ÷øü:¬ˆW7ašo¹DVpBV‰·ò}÷>tIp%#}úêû¸ðùŸÂ…M«Wá ;„Ä÷Üu;…ö¬Ði"Ë!< ÈŠ T!•ûëQ1'ꌂƒJ'¹D4ɹÕþÏLjã,©ûå1cIzçð6é¦e¬G€-e!MÀK¶
+Lä÷›=ÙMÊ÷£À»ÈGçÈdäéäÍÑZî}7Ô±ã>¥Ê³\ë+Kmàˆ àGŽrÅKወƒ”ÑëUìõ>ï×÷ÏZÈÒÀ¤aTo?¢ ­vœã³Aå“‚|[sÅ—g®>tæI
+Óß_²t=ãÇà8ô¬ž¨Ówa!sW/(LEá…òV”÷¼1»'K©ä)8:fÔÔ¢Wüˆ;1S¬´be šCà´µr†#³à꘧0Ê!ºd¥ÎƒE½äã9äX Ìú`Ö[|®›õ¼ÑYÕý+³{ÝHv=ÈÌÜ\N¸ïöêB1òÉ Þ¸½Á3 Þ*ÑpZf?L~±‘IY'œ*“è‘pWMŸh>=4¿#µ¦žltõ
+F‰b÷šFm–é‹©idæhT¸Â±:Wº¤´s¨ÍèЄ¾$¸.[W¦0‘ƒé·tE/ð¢Sf2…áø¼ÁoÙÄéÌäßÕvrp®“`Pš^Âò”Úùû[Ãð†g4¼ìtæ75˜o6:€€•Áb#þ{ÆëRCÙ< {V¡ôfi°Ù°EËNpº`KÉfrE©?Šu…‚ËöàŽSðcë"+â^ÆR´NÓ6˜Z‚ñGþ ƒ’5¼ÇÐJé¡2[ÆeÕr/c2þQ†(°HËŽ·è1íä·Ð–@\póF1Ù‡Ö½p"åsö7ÕË €´)sõr×jèÐÁÂEkª¿e§ÉNåšù;oð»Û¿ðSöøÑ„|áµ™@c
+Ì‚Ïü‘þàÖ¨äÁ4’}ÿe¬YÖ‰¶™ë[„3Ž~`ÏS‡ý’g:´Si9ÜZÅJ„/ÑÝ×ðå†Üþy·¹ ñSþD“ËS.xn„9űÁïÅÁ5æ€È<P$fÿÍ纽atÁ‘gAá[/ÍNÆ7Œà7`Çřʩ%c› Wé¨é±,ë·»e-g×Lø^~îý‹ý-FÀÍÜràÞù½N­N€Ø¶Eƒe)Ì( ÓÊ,ë7Ï[N2]u!zé^¨µ“…ã½ý¤ÅÜ"ÎÊœ1¶Y¡%wg n^L_ B2ûµøGCÀ·Ì¾ˆÿD™YEÊBAŽ„t¾ £éÞE‡…«÷h¸k½SâˆH’ðçl?ïpëJÅš™ˆ|Ò~à ®’¬Ó²múqÇ©²WÜ}%š Œm&Ô†ª…'H»,RN­x¿Ð$kžñ¦¥ŸŸFr´J4 ²Ç4=éfÊåñ{åXÕ ¥ò¬§ò²erâ­Nrx…¤ÐD.âÂúq&ÿ½d³-o,-%U¢ÛœC-!Ð~ÄYo;®ò¢…йƒ܉ŽŠRÖ¤*`—XdÎ SãÆl… ¥Ý©€à*Ø×oèêCè)–¨êB(}ƒCæ‹.J·Zpc&ê*«ÅŽXɃ¾Î½ ¿µ=«”Ò<.3;Š>Ëö5ô ;¬€–¶`W`ÙqDê°/î'<˜uÑ Â¨ï Š ;*²ÕöÀÇJ
+sãºR ¡»!ÛÝîž6ÆøßÞ)»Ë%;iXæóÙæ¼Ï\õ+zó*'nÆÄE.¨[ßбÝ<4æsßÌt­;öÔ‡ZZ,sXK3ÎE}ÒØ^<nuJóŽad#¿• ‡6fÙshÖÃĸý:ÖlØu#ÓÛα* ¹|ÙÅ^|šè»ÉrÞ^½ñÖÅi{ý”¸¶Äž@xûy»CvÀ%U‰{·E×UˆF ÐË˸Û÷DÙFñøÆØé*€³ìŽœ
+15fþħülÖ‹¹t"›:>Î7:-?)÷àåJã›èûp ^’±QK—zàòç§Ízûo½t>’(·æê÷ÅÃ|{_ë²!!ŠÎ«yõºWƒÝøÄØ’ó®ëm½G÷Q¾¼Nvy¶’ï&>v½E3‡’ã“åÓNú¾¼ëœZJ=ÔXé°V”–’¯~ªBÞW½|äqÕç䢽„jK,Wèb*re¿ÃÅVÔ6ª%úfwZ,ÐÝìÍn?vpÏb^J‘õqáz×ä£Ì/”ðÌœ: ÙUzcÑTí®erL1\kŠ3ךîVÚº|1¥pŽ.UÏ®B„>A…,Î_*ÔÚÎ eç„ga)jÌiå^þ׋¾&–èÒ¼\rY*”-Ô|ß.çkNÄÚTüW`Ǻ†(
+endstream endobj 766 0 obj <</Contents 767 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 767 0 obj <</Filter/FlateDecode/Length 4761>>stream
+H‰¬WmsÛ6þ+˜ûDÞ„,ñBì·ÄQ\ßµrb+×Ì´77¬,źʒ#)IûïoŸ]¤Þâ\¦£$€ÝųϾàÅDüÛ¼Wß]ÞêýV}7Ñÿ)”V“¹jò¢( /hTYåUQXU7:·¦¨ÔäA%*ü—whÙQÐLM•)óÊ6*óeîµU“;•Œ&·W¼a4Q”m\NÂkOZm7>וÒ W›™úY­Ô‹ÉÐÈ6²³NÍç}Ed°Ñbã/¢wrK*Rm’R9§Uÿ’yª—ê×$ÕUbÒL'¾kŒÊôß“Àà7driL^ùh²ý¢µ0t@Þ}`]’@D~9”¯MÞ<‰ˆ­O(*O(*ܯé@—iÈu5ߦJ¤ªòÕðPÄ›þH®Ê맽l{/—G^±w²½Lëäõkø™ŽïØV}ÂsGnÒ2Ùb°X¯TªmBèºÎý…º¡i^·:œ¸”ÛÞzK[¾$¶]7G¶‹À#ãg-,ÚΔÆÓô&ùFä " yãk ùš¸ëê†ð¸¨ô>·enRŸ¨ÛÓél»\ª´itrý8Û´4±K³2YÐ
+DÔoiÊØ”œ]@‘S&÷i%6Wd™‡ÍU2…¹0ß2Gó‹­"ˆHûnÑîdV±ÑŸ#
+ÊW‘{ži±T½}MŸŠäÇ´I® EB˜ž8b˜Œ§ ÎÅ\eØ^r=VL^ÂsãË‘è£Úôvt+KåËõÔÔ›d»mYØ{œÔv¶‚=;2OÍép|:¡ö´K7‰êŒ7iV‹mj·–ÆLR”NÎb…$Êm/ ÉH¸çÁ.ìãm¶Ûfª°Íä óËþàÌ)¬Æ¯®ÑñG„L‡ CS?0
+¹æ>5¸ä’‘}¾rýÔ™þFj…^{HÃî«Õ\\­9G= í€
+Qàì1äÈ%Hܺâµ8-âÿ¤{¶jfkWÆ|­9hö]X“ í9ö=@\hl]È%7nA_üÍvÀ:øêý·KŽPFUý-TxJ5ü5·!ôeêY·õ† WLËîYØRµË­…H¾¹Ç'Ó^Í](¦+Æ1$*ßÙåÅà7q56e‹ N†RÑP¥ ÍWðM,Ä—ŸºŠi¹V¸X+ª¾VX.r&¡‚£Œ@»Záb­0E(8 ÿµÒKu5ã 4(û`6̦Ê}å†<¨†ÒS‚ÈœôeÅÇ÷vµ¥ÿ9rÇ_Ä.a„#Fu=é%ä®AÝoÕŽº6%þ¶ C¸«I†_îEkïýÃÏl{ëö´
+Å4Ù}äãÀç}77ï|ßÒ®¾~E,Rn€4©ÔøÀevÎy½®»ÐšAž7MLÐœâ¯æœ5QîAôÓ!Ý×lÍõ1úOâ¸éâ8úCÇù>Ù¥R–ªŠºOÃ873h@·Áܘ…†ëSÊ­¹ánYs¿*‘ÜAñ¡kc¥AÜÉÜ3–dÜŒ/„[¼·"‰cYTqÛ;íÐn~¥¿ä¹NЉnpíÎY5]:ÆA‡´ ×[Ú‰ÞØIkì)b=Çr# ®CM‘:BT¾Ã;劗ŽytÉÿ¼€.µx¼Áº·Ï:¹‘ê^š±"i }‚ÖDØÏÝ)ªvVž©ÚUOŽú9ü9n¨ŠQtùßžJð±3Óœ ­ÍmÝ j4Ó÷ ¦³S é>œÅ¿ÓƒRù–ƒ¹y3Sk®¤qMßüGïY+A/– ½·XI½7¨ ·Ä|É
+t'÷ ºSÈ"aÛIàbn•Ë–'UÍ
+ÉÐ&'ÖTÎUe_£KüŸ&£k0´‹g@;:L=Eå s¸ãN«Æ»Ñ6Ç`¡Í¦\x¤•o…ÇêïÂ_Ÿ}aÓΞë˜Â›ö™p¹ÜKàå·íšs›•°!DQû]^‹Ø>Z¡3“kjì|Òõ´Ab¿ÌQÀôrèTÉlÌá¿Éð§ ߸×òðHÉ„ßÙXâèŠS¥Ï‚‘ ºskG÷/bBV(þ¸¤DŠm‰a5½ 2ÞwÓJS˜˜g¤­×ËU±7Áõ(ÏZly«GÖvñŸLÊŠ/±óž¦4Î
+¤ˆ¢]×Å_â`ZŒz€šsÛös"4E¾ãIá’<0 w(N“k5Û’Xf‡Ol1«k~>¾ÖÍ bÜÅîÙ“÷j-Èf#µýþÈF”ü·ké7ªëKšÎ[›Zââ‚ØD}í‰g ©›Ô:ÈïÔï!ÿüñµôCÏÚ~ ›èŒq·G–Å8ÚíÉwófªÚsÚsØZM›„Šã4–Z.ØÉjŽ_D:Ã8HC'½Û©Œ bGc6pµQ&têüÀã(3Š“daKqšì(YsÇfç D^³ ßÔk6TTâŠíFM,‹»8a®‰á6ks¼íð)ƒjóÃe{1f^œþ]îšåD[Ì’Sô0 Ê(™"jYïOº(dr¡ÊXוúÌÍ(¥šœöYÒäxYIMÛ‹9ï§aû˜Ï‘%qÝš+9ÜMH}&õÊi»ÏÝ°£Ï¿Ðã‘>èñH,=¡jõÚ¬Ê+%uåöxAk—y9í ¸Y$æ%¹·’Ú´Zkç0JDÉÂÀo,˜ŸŸÇHK=¤  Ñ^è!­òªÏ â¾|k„£Râ4E·gªÂ5Äž÷&b†˜Ú´·ÀÃ6¤çF˜ ¢šr¤˜…·w;F£ôW¦ºÃ;vIë(:Ҡ®Û½ú?1‡ó­¬eG.5cH¡Â³„<ÒS¾ýý ήi•¬wA»½…ÓÄ7fý!¼iÚûÂ_ÇÐ4¾tŠoWøÄj†óÏàUwûœ_C®0bJ£ÈßTþ¯JnL€‡ŸæúHÀ_/ÿWœßé…~HúQ'é7~”Ú @UKg.XÐAKKõeU±â›C­ëd•é¡2¸îY$N’ÿn‹S ­L¸}¢ªuýŽ{|=W÷%¹0wÍž/buZs¶±ùÕVˆ¬=W(¡†XÊ4!òï$ëA°ht%xv½'
+‘°±¼ƒç ÐýØ5?:h~Œæ›qëq…OA"ß{‘”WÅ×= ß30ÌÚåoÚ˜Ln[y÷nìx¸ùÈŒµ0…`oñ(öÁC­é`“JÃÔ°Å‘‚WˆÂü´­$%&o5ù?‹oD~„•‰ùeo0‹/,³c}­# VVBWÁÊ»äžr8<‹1pà í2cÆà”óÞ%Hÿ±0ÆœÉt²µŒÍZ»À¹ÚˆC—¹‰-Õe(Id‘¯ êšÓÐ<QjòÀDñe5¶r6ÅDŒÕ·>²RÛ±x¼©ªÄÑ­üª!K­ìœ¼õ¹‘zjø&â<ir¤†8»Ëç·†½‘Á’%m°¶´BÇG†Ltµ!Nj˜btîlwp9x‰œ¾¯åB‡v©C[ϹG©á*w>r†ï êN=–èÐEj…=ùIÂPm¸tÕNb½]È9>ö¼äc¥í5ó‹6¿;§2sS ÁŒHÙ3;•W4†ÞÜîž&Ÿö8æ"Mùã¼{
+µs±¿dý²Ö¬Ÿ²•üVý'À
+endstream endobj 768 0 obj <</Contents 769 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 769 0 obj <</Filter/FlateDecode/Length 3258>>stream
+H‰¤WksÛÆý+;ýd »X¼úÍ–)™±EË"ÙfÆÉt RS¤LPrúï{Î]¼DR©“ŽF °{ÏÞמûf¦"ùÛÝ©/¦‘º«Õ3ý¯Hi5»UEE‰‘…JÒ0¢Xe…c¥jv¯<åÏ~“Ú툰ƒS e’0 äI˜ëXÍ–ÊͦcÙ0š©¯*.láY-ÛMêTéÂÕ®RÿTõf6DCÙÆRvЪùö¢Ù`4‘ÃøÙéM¡Â×ÆK”ÕüÕ?Ü@èkφ‘úÅóuê?Ð^ÄqÍ·ÄÿuöäĘ0Í;Èñ¢%Ðç”Ýè¼ 1ˆ“Ÿ åkÿÓ"qvBQrBQdñºL4¶ÓUü5UNÊ¡ª<
+qÓ)+¾ÇËIïåìÈËÃ@ì_ø¹wuE?ãøV«'þVtäÎO¼š/«íFù:ö`]Ûº?Rט–uëªäh])‰Óû¿Ái‘§ n‚±H“ÔÁ¤=;¤©Á©[¤ó?H¼-?ó`†E%CûU?(o·8’Úÿß•š_]ä}ð oìÖ›àÓxïÕxrþñúÖ{MÀ3¼&ÞøãD~>{'‹^O.Fêz4u>N¦#%ã÷/g®ë?±wGMP+<5
+M»õŸyÊæ€QsÀ#E<V£ZœoÂ$JZãÍ-`n]àå°´õÊ}ñw]}}ÄscÕ²WÐ`t¡¯[± .k;ñ<ÿÆzÅð€u=9S°Jîñ³\¯U½‡öÚ±²êÜuïÜT"¬]Kßûº
+ý¥ì‡Ef‡©¥Š GŸ¥Br*ú[_'G©0’(˜pËî£{˜ ©Çq&ÃCµ×ow«÷¾1H±½§[vª*Ü¡œ¯//Æ>«'JGh/;M‹íŽ+õe…·\ñyÇ­ó‘Z¯\+¼/øw2WrÇ 0š JC‹dºa)¶Yø€GƒÝÀBü•ò(8µ7åq 9ŒùjSõ™×5¿† ßÞ®vXbš*rP ÐàA6+ä“÷î
+KÓdpÙæaœ@Ï»©‹Jj7ÊB}û¸f¦ùEn¼0;>JI¿¢ ÜO; *Îs*IMáZ-î:z}PÚ¨oJ>ïåΈÓ0Wk5VÑJ0QæÏKh.s{xsh @i#ïJç © ó|H|q–vÉ­²ymZÙ˜hr°›Ûc06*Â,U¼Éo`ÅÊŒ›s‡a&â8Ç]
+`æ<—‚éæ§ÀÅ‹r
+¢PAÔh2ÓÐÒv½¡ÑŸÙ –èìuÒ¶»òì´OMœC
+Ä‚ÊêJ=5÷„·æ@¥„=‘o¥$=ÈÙ¿‰%.îohy›ª€…m"¢Õ¥
+ÿ•QWfƒ0`<³lš(êÂYÔÉ.RÓÉ1Ö˜ö÷÷žsá‚i’®@<îÜçÌw¾Ð©41t_ª‘µÚ ~›'^Vnƒ’yI­T‰Ò‘1)òMºÎ1Ð">¹VÂů/§.¾ÕG—/¨×-ÚGÊ'~]Þ¥ÈÌôj^¼Gí¶d&’Êòç-×;ÅÙHö(•`ë…Q–!rµ0M;ûSäF¨B©1næ æ¡qA‰±BAÐ…Tpw³ÛKÅ/—VNû}_Ç^ßšÄ7‹à«ðy2sÑ:Y9_(]ƒdï›Seóà·IÇlûYâ ¨‚ÅñÈÓ³úü[.ñÜ]ØÿÝ«ïnFÑ »´gœA­~ !´êˆó}ç€Öa…7M²¦^OBò.ÖxRg~`%¢Ýþ› TÿKqÿén8I0æ/Ìö
+H÷güðSÛþ qÀY‰ÍÏ”¸i‹Z„ICDÄ!-µMÒ£?$‘QLöymêØDløª•  ÆGÆzQ5­!©˜µß§4ðÉø£½ÿâLí¼£^'„†
+]$'5 áv9 ‘é¹îdÜr4è#Ó,­ŠU‹mƒ
+0
+endstream endobj 770 0 obj <</Contents 771 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 771 0 obj <</Filter/FlateDecode/Length 3108>>stream
+H‰¬WmsÛ6þ+øHvL†
+Ÿéd–¬Ò²„ð‚e­.Wܼ'e´Q_¿âs¤é¨R­ÕŒ½1H0I¸ùËöA`’'l¹&…r'c¥Ë!âS—å4+‘-iNɇà)qšV6…6¸A¬X*cŽúŒr–%}#ËèF”˜Jì0äs˜cÉ¢Y”’ôRE&qó³cÞc–Q¼ÊéÁŠMs§øÍÕ™S]æ :ò"©nR(–ÀVBKW„WaalJ‰liþ‚ðS µ`!ÉK-”,MHfл@c* 0Å‹ðxÅÃZas’ÐΣ>5Œ+)•W…WêSð!ŒÊà-E¦¡¶ÁLÍ.f³Ë0ª‚ø¹¢S³9-HƒŸnäéYm“J®Ë¿Ëoß`]Z2Z/`;»hÇÓÞwšI8úî»<“’ÿÍ7=3 1’ž+JÄq–K„Áa¤´úþLÄ"ÐaˆÒþ
+,»Ð…胊8r£“kÄgÁѹúáxŽú+^K’ÿÝ«ì
+zªe‘Ž5ñŸzŒOÁÍÅìZvÎ.Ž$5“pRËMþ7sÎÍQg§€Ÿ>Z‡`íì*gÙ‰TDK•ÊšŒ
+W¶×ZEc¥ÂÆbnŽƒÈêRWbõ»0Ê)“Si¹Ãh‡Ÿ-A×(KMÿFE mc î*Ñ,4„.•†ö;6´å¢ÇâzËõÄ!Œ×,šåäø­‰Ÿ1ão‹¿4?ºdðÄÚ)–ñ„*A|
+-AÛPÒ jHlb·0ˆíž©…ñ UÎݹ3 š”ƒ&Vɼ9ôФ­‘w5Ñ¡«ÙÌ»Fu!¬×kµÝÓê–‡?2.¡W*–Ö0Mul)û9-áHÍÙh
+ôàýåiˆÃýn]y’æÙRì‹­Ò¦lË`?›zÛl‰¾ÛgjaÚE£$=| M<5§Ù©—`7•3nÄ]´qh ¸¡a;‘àrÙàÙ·`QBç”Á `SíŠ"JÕlÜ3@¯Ûu}»žª@•Æ© ö͘}¹ÃþY{·¡'ç´D…;Ÿ¡Ac:`ÿÍ¢ç%xaµzRœMÉåÅ)æ§ìñPK쇪N&Sƒé#ÁQÃ: D!†ô îB
+Õß ÛPâa•k¦ÆnŒ-ìá`qÜƘF©‹>{½–P¬û!!åÁ–uÓôcNfÕ5û‚µ‘¯2ì9né2ï¾`ªñ¾¨|q óÏÉñ×!©¶G+u Ú œb9Z‚ÆP\ôx…‰¡™´Î3£$b`É@‚a‰çˆ9+§dœó¯×Ð"UUÈ­î’¡.±cèùˆï[Fþ–ÔBâ–¿c‘jþÀ°'ŽGý#±Rìqý™>ÔŒ ¨Ž%k¬9å-ÿ÷È;ßÑïVXᾜT ÙÇNÌËqÒ$W„eªAº æõ© éC&ó ·´ÓáSYïw[~kù? ãy¼A ¬‚¯ê—ZüU«32Á[ž‡ÆP(h‘²¡læWõn킯à5'LÉ–1X¡tóÌ3R²«¤6wܲJüÎÒN%Ýtów/%¤“” B¡¿€ËpL×£Œká•°lÉ  âÃlYŽüõ¢;ÙãÌ«ty-0߯oë5ešBCšÒÎK¸îœò݉â¨[Ǩ¢ò´”÷zg2õRÚJW+3©•T'?²6WܹŽûoèD×x> ùÜ éPïXG5Þ~ƳzäGÎL2aïƒá Q~õã²Q½¬ù¤_l—,¶fÍox ”Äæ WsßU®òR1FWl3)½«G>e;З±¡Ž¡…ýHÙIp`¨yj$ïq÷ÆãÍ’_ZvùæN¦è²‚Šî"\–5GÈHn–…ïá×Óá«Ÿvk>C–¾~Â)¯¹ìƒÕp°F‚Ió1)vc³æZ_Doš1}R™ŸN]í0é“ù+ðDI’\Á=Žàüá5–C%§lz´K‡ˆPãó$’z­±Ñ<¯ûZÉJ)ÑP³C¤A5T½oÃsp¢—zƧ솜ߋ5Þ…Kìá±’®DjJîj
+GIßNKâÿxâIo:Þû=ä¯OèjÛ,š§^j­zäüÒ1-Ÿ/%Ø®ùµt…$ÖËphÀ©pû²#…šcúdš'°ëŠÓé™9…4Çü‚@Ü6ƒþöbݵ,²œn#Ÿo?QÛG=®ô>õ:Ä% ÝRŽ0;ãc³A³'ÁÆ€×¢ç ¹!QÝôÊ=›5íÅý‰/ž εEœ§¸}žrÉd†XϹcºeH"Y!سó/¸BL½oú‚Ì^
+w
+ß3ê)ÔãÀ +œ¿˜z,»U'×+0nãûŒõz¸t9..œd'žpšÄk̹g¸G|2¹Uñ°,`·ÉâŒzõÄ[œÉíU͆Fönh=k¾Õ®[×Ùb‘¤Æñ¶Ä?¢˜{Q—®@Òw¹Pµ«¶9tQyŸiK`­¨Þ‘ñèý{Ü[Œ: R;€P•ùJñ­Â¥UœUf¯DtLŸldbsMÛ p>²!pírRãxáJšƒÔ?.wC1¹ÔàvqJmpÅ’Ny¤^¿Yª[)Ú“(}Á‹ÝåN&¹•&_¬wü:éÆ_‹ÀÑ×Ò_§è®÷µÆï‰Dà,Q˜+
+í‘(ÄÌz5’lpnYI¾õ1é«:nˆÉ<Ö©Þ‹ÉîL¤4tË”âJQר†™¦:~WuÇU„F»ÄígŒv®kq7¾;‘“‘©»uñä
+8ËŠÚÏ Á;Ä@׎a²¡û—Àoõ×8ü\ŠD—bò1ÅäÒii'çYR"¹
+#g)º®c˜ôFcÑ™ñ¡Å¥p~4\ŽåîÒûL»«Ô>K¼íé®v܆az!r>’÷fðÒ¥½@ke04@âû£ä##KŠ²†aù~\8ŸòÉ—O~lÇ\[­?…šÝœ{°;À›žÈ&îýQ6+„57]VTò°i¹:`·Ã%« *5+UEÛ“‹òR9©˜¨ ¾å¤H¯ÑÌË{AòöJ·a…Pí̪1òÊ'°?"ÝÇÎü^¾Õ‰##=Ȩҗ{¶  >çª3rIó­ok!JÜ$…MÒÅuYå5tñnÍ(7ÈU®6¿‚ ¼ßìip/hƒäšõðp»”Ä)à2¼±£Ÿ!ØóðyÂX3óût*Ø—e­Ã³Ë2›O`îE¥vöàK•ª£ŠCü]%…³½†³2—Q4
+endstream endobj 772 0 obj <</Contents 773 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1502 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 773 0 obj <</Filter/FlateDecode/Length 5549>>stream
+H‰œWÛrÛFý•©<UŒÜó&Ù\—¶"Å+2Ù;µ“Œ,DÒ$(G¿Ý§g EÙ[)—E`0ÓÓ×Ó§¯*Á¿Ýƒzó~ž¨‡½z³ÐÿI”V‹{UÇI’l¨U^ÄE’¤ª¬uœš¤P‹G¨pñ'Nh9‘Ð þ´T&‹´VQ•Ç•NÕb¥‚Ùb~³…úªÒ:‹IxYÑ-7U¬ ¥®v­ú·Z««ÅT–m2–¹k¾«("­Ž&?ʽ‹9]jä*Óü›ªße!uʼnú„ºLé áuÍOyøÇ⟬ð¿Håܘ¸¨¼ÊéwµeEˆÓ'Ú‘uˆÈϧòµ‰ëz$-Ï\”Ÿ¹(É>…“»LMÚdþ®úï]%RN¯ªê©Q”7£IeýÿD9£\¾ˆò4Ç §ïÃ*øðãLæg`ªžø·å@îÂ<ØóC·Y«P§y7sáOÔ}ƾ¾mxuß*d‰ãoõ4£žÁ“5ë"/DMö§×´0dµÓô·ífMº’ùËv;tò²¹u¨á ½´êæ*ŒŠàf®H#Ìgóùõ¯·j¾ ×4¸¼ ‹@åûchtÐîa`4X{`9j£:™|êÖÀÅÆ©.6•)«N…ú1x–Ú³_Â:hú^^†0 6;Û‰¶kú¸ £4TÓïØ}:hVϬÎûR5Xâm+e¿“²ûø™Ï·;§iMšBIvu*®Žœ‡—¬ß7¥«¸*jÑ5Xܼ¿v d&¥GÑÍ2» «}À,Êt ¡”Žu^Ší×3v[öŠ.¨ƒ1;5|×Æ»îîòJm›9°yl‡–ö^È$wŒöªT,„R%¯u=S çÅÊeÄF~)Wwª†]÷ù@ï
+|AùC-‚£$BðG>…øñ‹Í·§HÑÁ§Þ˜*œ~9§ß¼Ý=ÑJ·l§„\²vÿ5ÄJòÐ^øƒ¸¥Y¬©&_ûvð¹8wGr‹¥w_-‘,b¥G‘\nœªM·†½Ö3¢4) ºU‹=?t!Òñ[¨9¢ŒŒ‡#ù¤:ðæîë¡p¥¤+H‡AÏÒžù
+ê<Œ—vkz^ö| Ç›Ô­y‡WîLYe•½Øf긪JWóv¿'ó:Òƒü®Z~èµùÜsb‡œàäÔG*^ò:[|½^ñò²á·´3µ˜ê1é€ š2µÊ§ÕHáÓ‚uTêU2b¥>JCW‚Ì¥'¹Ki‰¡F!KŒ¥Í
+µ,Uò!-v0˜ò›
+XáT3Œ~KÇX'.­ËÞÁe\`†]†ªÉºú“,Kùê`ÎÊ›4Nx yÿ#È]ú±éêÜ}œjBR1œl¶dHÖ
+±P ›jgx ó-qéÚ$„5gZtyÁ„ä0ü–¹EðÎR*è¡kpû@YØ÷V•*Y6àmm;7>¶“áºåP|åµß²§Äç—ÉÇýÆ}Åڲݻ„­D,–•Õ’]T²‹îø÷’}êÂ[¿'ñŠKDïÆÚ†íau‡‰ÊÚòÈIƒ ê`Ifʦï)/åm'ÖúÜ>‚,/^–’\k\À‘ºdüáÔ]h]Ðïø„ÍTÚü³ö NY$ Qݬ5x¼g“ï{¬ñ]ß·8ø3–&]ì„9ë8#Bd[çHD1©²4¦ä•e “}·éQÞg’ ä³õØ\—-%Öào+eµòõàVTN”9co.Nè> 1î8rmcùšG^Ûà9éÎbÊ)M«¸[ÎÝ¥ú…Ìè ÐÎðD•«®W};:q¤JB<¢´ŒS“¦µÆè´Yµê7’0<A>ƒ42(‹M‘¾D ¸Í÷õŠS"ƒá³ìáG0B…ÔX‘¾ ÞHaHü'SdaÃîkd ŠjƒO.Öæ(Öôu ödwßA‘ábâÚ‘ã *Gâvm–‹c6;ÅÐ~ÏÕr>Ä™q.I^çØgÛáùÍ?”™/‚ŽÁ¾¡ˆßLšõIô¢c
+RÂF¿÷=Ü\K‡Êˆ¿ÔÓþì›`"¤}j B DHÜ°jI„3ÓžmýÆ8¦s'LB‡G!d¬#Tj׬º 5˽pÅ4`î„ê^¶#SBucUDbˆ
+UÈMuÄZ8äÔM÷€¶GÎåܳhêÈj¤$éë”$ñ½ÓHïLˆÚÓ:óMmÏ¥V¢¯Yš*œS–Jâ“ž†dq-‘Èm xäK…Æf¸ jø|ú3ßÀŠoN½–dÖÈ¢\hzƒxÂɳ”ÚQ»V˜ÅUu dó÷Øöc™¿Ð¤[ü¼Ø&Ö<³‹ÄiK)yƒ ßB#ÆÛ‚G)ûB&¶“ëäMdÃý¬â–÷A.¤ V©ÑIVU±Ô/Ý~˜x!ÃiæC/Kt¤¯&z4´@„Ž¯þ/ã’­úÒÎ7b÷œJë‹^\ù̘7¯<hšòåxE¦Dì†ÇØÒ›ãGGÇT§ócŒÁ¶û…æ1Bë¸tõ  _t#O8RJ›Ü7»7Ÿ´ ¡~Ënå›ñ6
+{*Û™]Y”»Áäx=U…è#t±á"wpQ¸(ÊnÂx}Íÿ.{Äá« ïTxxümšg©/ékÀ7K}Y2m¼Üƒã[év­JùrUòù¢ÌC±s‰6pE9Æâì»M(Ö½ïÜ&½,ñ{†œï§ÐY^iFK=#çAMÅ?Nl–‹Qs×A•zµ¸
+“ê¬ÎØåš«òrCå»ÅeË]‘/X ¢Ô3!zc–>dü°rñqñ'ÁÄŒø‰’0áÑÍ)8X&W"*j1
+å# I
+Ωk¾<á)Pú®ãU‹p¿ÃÞê:,ŘËV±ô Œ¸›z»m»ÝË?ýZÛã]nÅ)›Ýž*e f˜ïÎ9{”$áÚ1ò?bÑ|MPKþüCv}ß ÍQŸúÁoþêöÃóE5¹Wá&
+u\)ºjÀ™‹l•fZ6¡ß»*îl¿ŒFð'›“ÒÍWס«Þ5«eiîÓ¶&ÉçVÆb})µß¢¿[²çꣵs¿ƒÕA¿Œu’õxú„3ùÿ·%œHŠ_øÕ¨Q]†Ö4…Q˜Ê-´iZj‚VÒMeš¸~-©Œ
+F±ØÄÂ5_ÉæXEïìwêñðòI*ÙíÙnÏ Q&I“†;ï1¼Ï¾×¤F Ûüo)
+”2 mª2áŠÜ:¸Tã#†ïší~ç &Ž¯/»½ÌL¥ ìifê’ÈMj’©tÓ±+À9IR¦jšVf«àÖ8ÎWOXg ÿÍhø×(Yô¼o†øçFÈ㯊´ž^ò@ŸYSñˆyÀÝ#q˜Ü.e¡5Õ_R¢·4à{©ŽÓˆü’Üó—Cž`’ße±ñ¹èÙ¶Å^ òï¨ ,4ÈZ¯J/ Gz4dÍw^w+éÛ+Ä«—Éâ4à+ÝEÁ1²…^îÈ5j;®m‘5¡ú[CñËwÜØ÷ð„¿jDI CÓÀÛŽ©Ô(oR]îûû¸§‰+Jõ€"b5ž°]£'dàÒíS"»q9¿R3ªCå >ßÑßPºÏX±af>ÛìvãlžU:yiäðzq0³¡n4ß ïÚ]¼Ù«Ú²§£šN›JϽw*!ž\ûm—ñ8/;ÛÓ:ÖlŠla²„ÛÎ`v‘M`¬‹Ô<tãë
+H7 (%D1
+W=E¤f~ç3í•Fœ^
+Ò 11½ï]ƒi†€H’âßYnààýoDâG .¯žA<Á „õ€·œ'Qý}¢¡šÐU¢{ðÉ
+:¬l£Fª›N|lÙ©k·ÍΉ®fÂ7r¢-¿Ã¥Ó4x„.¢¼·{5 onk,ØSV|‘ã8¬<ÚŸ;“OŽÓE·¥F¤Ùz0*²ʱߖqnŽNFÆӽ؟1Ÿqëä˜è-{N˜3VÍ°Ò0ãw5ê1¶°zÝïê³$;™ÖPÂG ÖÆ9="k¼=Ô÷‡F_ ƒÿ, î¾?ô—Á+ŒV…0µ-é3ÕüSÚ¼ÌGq¦¹Ó¬G¢Tk§~L"þ\œ.aÇu X 3¨äIöhÝjwWÛ5§Fa‰½å`òjÒ— ÖÇ vÙ¸Låxòœ&¢¡¯åFFíµeøÚã«Œx1ýØæÞ 3ª‹TñbÆVœ\lÞl67ÿz§*tsK—ŽKï%
+ý™¤zf.3@GX»
+z⺡kêA{JêöIÚ¬EL*~ 4°.ô ë6¢Cc|¡x™R‰4*ƪ$
+ þ(„¼$eIm/ÌùÙØþ:U™VÊræà¿u˜ÊUóx‚Í
+endstream endobj 774 0 obj <</Contents 775 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 775 0 obj <</Filter/FlateDecode/Length 5588>>stream
+H‰ÌWÛr¤Èý•Š}ÇÀP܉}šÑÈc9FZYÝ»~ð: Z8P·fõ÷ΓYt‹ÖÈ~r(Ô@]²òròdÖǵ
+ø¯Ûª÷ŸWÚöêýZÿ+PZ­oUáAò‚B%©ŸA¤²BûQ¤j}¯å®ÿÍ;´ìh¦*&~ÊË?בZo”s¾^]ð†óµú¦¢"öIx–Ó)1ms_§J$\uµú»Ú©ë¹6ÆíÇ|?TQDÃ@tü‡œ»^Ñ®DÅÏHý&¾«ØÔS't=í×xKÜ®ÿ
+…ÿF*'a觹U9zU[(zè@Þ}¤ã‡ˆüd._‡~ñCDÙÂAÉÂAAü»;;+,H›ØžUüoG‰”㣊`náf2)+ÞådŠrö"Ês NAŽ>»¹s}8“ù10ROxÖdç&N—f¿S®Žòn<†?P74ÍëÚºÄh_+FI8ÅßèÎAÏÀC-Zi’Š–pgû£1 Éh«¨¯.n]­)whŸ3¸±sçêÀ©…#¢„ØÄG”H7$庫=׋úþÁõRghöxìð£~{Ä£åº+ñøŠŸ¦m†g{ÈÌŽ ³'…8‰Â“dáx”ºp½È9w½ÐQM¯úzP–8ê'rXä<¸y—–°ÿ<·à—ȹwÀ&iáP~Å£u)²ç‚s‡;ÚZïèG 48ønø­'·¨ŠÙÉ­¬ØLùPÌœ7”m«X>Ÿ¯d?–Tí#ýnxŠUstV­X?ÑÞc×À Ôšâ!“Œž¾¦»…N+`cì< ž†þ÷ðÑÁTݾª{‚$þýåÈBrê#QÙÓ™ž†˜—ûa”*/ô'¨ÿÂ)¶'%ËpŠ§hN”˜6>1â““~¨hzÄ•Gösô º«st1°z”Îø(Þz
+U4Îô9@Ùk
+90[P“!ôTûí Gý'ûzg—¼d…A·Å×Ö089Å^”- ¯‰wä$ÄÌðÉ"Ú×6'5ç¤'þC˜€?8Q¨$`mBP‰&¼•_[.À!ˆ¬“3ÏÑÚ'¼6­/zL\b6×9S9±H‡s2ñ,—äºxKªÚ€pIVDcØ?´-Cª*ñõžŒ¿©‡z÷x×Iú% SŠåá%Z§ŽáIòKžü¾\©ÕùjÅR¹R«5M%·yª{W#ip)qLýn¤‹ÒÈ6? ý@mï0+¢Ðx;Êãƒì0§¾AÓT? l¬/Â9³Ó`“Í2Û‘ø ÍìœxT°Êv°I’ï¶R¦¢ö´^ŒªûøMßô"M¼« ß]†òÀòfJ…ºG´yxQº§’OŠÕ×Ã:©eÅÃPoèü Ñö¢06›º£Áa¯îÀ®.H
+g
+k’Hü ‚¹Û‚…÷Rß¹†t§xÅ¡… ¥~D©iiÚƒñR{ÐØŒŽ$£ùŠb]\®¸Œüå ©œH¹çÊÒךÁ@j©;ž²2à\Îýx¢ ²ügôw‹&t'ù±G•úÀ
+²?a¯­¢Ñ€Iñ‹s£×Ž6«ªì¹ëÙ‹Ä^Z4Òµª{‰J<L¤ŽÁW;€=‡1Ýàƒ¬â~“ˆ«æ\$eÞ~wôÃIi =åœAº¿ü#MÕ…é½âÄfé#SÛAMÂ9§èI–Qƒ{š›taÃ2ÕZêA¨…í¹+––…EÄ”4]]Õ "DÏ}‡›$Ôh}Ã1˜Z5Ê|ÓÚÁì£Ö.7•$5•ÒV$Ö”˜:|Òh= *™ˆfÆ­ µø9·øì@‘†ÕWL’g°„׎W­±†&Z~}Üpïs2vzŠ](ŽB+È—;`þaw´ ê ú ë¹ÆñÌR#´ ye~ÏY }ál `qBÁ$œÊ]$
+^<R»“1 cÁ:ŒÙeÇ.eCžGæ ï÷¨:Õx‰y¹4qù‰’g³]pEnP3‹¾Yƒ¨¯à9Ž,ÞÎñƒÿ œÐûš§ ¹yUxå¥×ˆí/W+<Î-@B´o|éM§‹¨àQ_‰ Q
+Ûf<_ iYŒÙÕ“YÉæ–àÑNÚñr¨ý"³­_] c <#¸Bb Ó T„îjßm˜ã¶Ì t
+³BãO÷+K‘¡½°þ‡öjÛmK‚¿BäIZØ„x/^H¼˃}Ù†¢É#QÙõßoWõ¹Q; –y9$ûtWWU;Š„ë1êšbPIãEð8RÏÝ»K¥”,‹KéÎSïÀH‹ß9›ý ù|ÀÏÄ[Œ‰v’ˆ×¾áÿUÇ™ 7µM! 6)l´d™í-¯ä\’ :¾¶Úóž¾ÊŒ”gnFúuZ+rV'?§µùÜ[iíqŒ²ß Ƹ°¾­yh<q÷˜GŽ9Fë½TB^ÇIŒOÊÂÄ{>yccµ7º¯¿eJ7P{Ù¾µmH`8K’„ãÌé|BÂS)p*²”[’‘±Õþ¯F~ÔK$F
+{*SN³}•½GÊW%²sª2 KégŸk³«Q;’CrÉÉÆD‡›Á*ó)“Õ&qd›Ð¿$f™Q*¯âÊ£¢`Kò;dàÁ¥a!•ú(†Ðu#FtŽztK8WÊöžm‡…Þìš-qõM›=Ï<
+)#IÊ®ãú¯ Pþ$ض¸ÑoÜ<b³ÝF
+5Öš‘±ÞýÿJ_
+"&»%TÔ:4Ø÷š “j:±ã^­QLìLÄëýÆΩ™›SÓtb&nåŸiÛínÙoVr}í[¼võb‡$ñ¼¬l¹Ô™ëgâ.ŽŒUJ'Þ"…|££Ž#Ø·GÜ4Œò¡/hD8Ú¸ÖÏ&¡Ÿó½ÏÍ‚f|‚+—àDÅJcÜ6Ùåžï°þõ;%7‘½£ìH°º•…|çêü>µ§|˜©{üŒUÑ‚¬,駹fáíìµÃ¯~õ ¡Œ\ý¿1Mtbû§9Vˆ¤è›KEñ
+ŠÖH£Á~N "‡Œ ×,^*ň8‘Útÿþº—a¼p‹h;ôF¼¸±7ß»
+½Aê¼ArêÓ å
+PÎP¹T“\µwþ¢lµ_eü͈‰FìHk<q½u ¥¹Ê˜†þ8å‚áŒqÌ×Ä ±®ÑxËÉ Báe1°â^ñF¬õÎ…qšO&9™zˆT
+5t× Üóô§ .æ
+“7qY§#‘ˆvIJÒÎÊî»ßwæSÂƹ"Å€zeœžûr ÛG[¥.øˆYµ„(²Ð·$¦f§†CéEK!Æ„›ÇÝtâæÙ„CY:‹Ë™7•
+ßzç‡ÃÀ)L]6qØ‹8º(0JÌNk!`ËÂÎX9
+ãÈCOáªÚ@O`pf’ì|”ìo0þçËÿ<Õ4Jª$„Ìʆ¹7V”'+z˜Þݽ0šíÞô†Ë˜ƒMB¥zú‡|øßH8{æ¸ýÎYèÔu2¥x7OÑwО¿ݦ}>5¯ÎiÓ¶›ï<YÉ­.ú¸n¤‰WÇ-£Ðδ3ãçUúã¹ú½Àd
+ù8|Z^éSOì
+endstream endobj 776 0 obj <</Contents 777 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 777 0 obj <</Filter/FlateDecode/Length 4699>>stream
+H‰¤W]sÛ¶ý+˜<‘‹%Àï¾ÙŽ“q§qrE¥}HîÜa$Úa+[EÙͿd9M{Çc‰ÅÁîÙ³‹³…
+ù×Þ¨_—¡ºÙªú¡Òjq­Š à …JÒ ÃHe…"¦jq«<å/~ç
+mW„²¯–Ê$Aj–'A®#µX)ïbQ^rÁÅB}QQb<Ëe—X–›<ЩҡWm­~Swêl1EÛ&†íÙ°Íã>Dk²ÇhB‹ñƒÝwQʾ6^¢bïHýj_{qªž¯SÏø3í…×xJüÿ.~àÿäĘ Íäè›htß\}€Î›õ±ö“©}m‚âo=eG6JŽlÆýÉ^¦4±Û«øw[Y+‡[zz(áÍx¤¬øž('c”³'Qžq rôÚϽwïg9~Ì
+åó6É'`ó JƒÈ/<õþn»[.kyp±·½Þ­åÊ/rã½½¯[ùQus(_wPQžc“L˜eB­–·}:Ï_ (mÔ£âO Ï´l™«µ*•Á‚ ³ 0ÿܾ3HöÐ(í­ãYé|HÊÈy>9K”Š>ˆ›rì¦UMŽ;®Ÿ‚‰Ã"ÈR™/1¼³˜^ž%ɱÂHìqœXŽ#t›Eb=W3öïËcQ$ÛŽ
+–„ÿTí¾Æ…)
+’H"«-© ÁïÕ)íüâÏŒ÷~~qDâLH‰KMú/Ýׇ:EõºÞŠqøî©ëöËx‘Òvhëd,õ+†£)gÉ^/Ä# £zWksÏDâ$ÆÉs]ô'÷g‰× âÜài‡Ö—b¥b4^ö“?K=%Î7±x_‡ž},}ñnYo·ÍKîdr&fW-¿Ô=as–õj²ÅLLÕüÜî8u¹äžbõ8s lŠîñQsJ[q 
+&\Ö‡1³adXDÛßöñ‹EÐå”öQÝ‚
+Ù`߶ãõ#v壗x¹›Æù€q~ª~aûÛP¦„Â+Ÿ—«5ῇ¬¦’;–Ï¢<0i>ÑLïýÅ]æa©uĶöÒ!›I¥9vNI±äeé¡–!]×Ê&9ÒðÚvY¶YLÄiÇÞ‚íolC(©ò0*…“+˜ ]¤»iFWÌp(‹•†¯ììéD':ÃMFàp9-J«mÓ¦b¿i¨õ·ÂMSžßöí ÓAŠ
+ ›#îºåÒ•ˆÅK;߶E¬æ"H8Fùª/õR/—î {c×Ø»×V¯?eDz€n˜ÊB(oUˆž­ÚŒ¾þŒ-›åçƒê8ѧHQü´8ͯÎmC›{Èi¤pÓ2Ò·¶`QMǼ¦
+B–ËšQÛn±ëµ½™¤d…¶±gbÏñ}Š&Ž#ÒKo ‹kqB³µˆg©SH×±á¾j¢%iWJãö¬’AÞ/Êwœøöª¼Ø×6b>·À
+Äaö:EØ«;¿a_º™=É{û9FI૾—…¾jµl¡®;“kGbë¥+3öÊõ5ˆ;•Ü í¥h5Ú:¬ ¤N÷I½‹Þ}¶]§»Á.Û6ÉÍáÞ]6Ö¸ÁÌK±Í¤»ŠFO™U£œñj×—,¹ÚÕ¼ù¡žuˆç#*ÿ¦ýƒMìFýq·a}“’̹»à±wÞ°@òBÐWÎÉWàÔÚ¦i!'y.œÆYî”U´Ë†MÞ½´“ëç|éÂ6mýÓ¨6‚½T8™HŸ•‰oôØÞTѤÉéõä¤ßªˆ‹/Á$l˜eŸE[‘Yü
+þ‹§ 7¶¯¿YªH»´"З>™ÄÐTà ' òï{fÎý°!±j«ªR–uìûqî¹sfæ,ùè´/¶‚u£v†ú<I`Q‘}-Bruó,†¡yc“9kŠ“ ®lÝ`]‡–¡‚EmŠŠGPO3¼¦7ųÃÒùþLîÈZ饄±Ñ/ú e®¡ÞéîXvòÀ¶ªÅÚV%3àoç0 ÚR\Ï1kðžr{h,²}Âì°ÕN*8)CÜøÏT;ºìØMwgáíK´öÝÖ¹×_ˆ/Ø3$)Ü¥®rÕn7Îô3i@«…=2
+ý{­µµnV
+`Y±t§øqÅÙú"zDØ-oŠíV=¹oU›(§=Ö‘4¦ð„2R#‰î×ìM^ZÎè¢3Ýå’=é†<¼R•åð'>÷¶OJ„Ê83´%X› ‹oÑ–¤™Ù,.2‹¹Éõ×çd¥ÞÍh•¥±1f,2y³‹H®ì|3±rfBÀLØGêÛƒt9+žmH ýwU=ͲxVŽí“ºÐ(Å(Ü>ÈÚêÄNžO^¯Dý3þï:mä®;ÔÕ=…ô맯 „Œ?˜……¹ÎZÍDã{/:?G²i|o%ô”²SÚm#Loèí!B• &ÃuÊ…­¤uu!t; ê[<-|BÞöÐÕ[!*Säþ*p’h!‚,pZùà©mö’… 9fÝWqRUŽ¡äJƒ1?¤je‰+3îÕè”Èw¬c×
+VdŠ ›„ž”€©àyƒ®gÐyI©ï¯ó£Ö„}éÿŽä?äHêÀe Iµ—Í_gãJ×ù¸!QÂa›à4d­žg_RÿÓ¾$Iÿn_¢7Û·wÇ„•:n)ñ¤•x«’%c"Øm¢&Z­yùüÓömÇ‹Ë´¬ r9’D¯F2ž!Š¬bl ò|jzkN`!ª‰'&Hc›¦q-m=ÒVóe–;µ!>º§ÄLÆñõ{¡Þ!ºE¨;‘W[¹®¼:è<4Þa XžÆ(Ö\~ÀXpàî5y(Hº$—‚,ö™‹bl.
+š‹‚¬¹r…»(FîB¤÷€½ð]lšî·Y°ßg-Þ¸ŠÅù7µ8&ëgPÙ
+endstream endobj 778 0 obj <</Contents 779 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 779 0 obj <</Filter/FlateDecode/Length 3845>>stream
+H‰ÌW]oÛÈý+ƒ>‘‹Ë’C²oŽ£^¬Ô’Û‡¤(‰v¸`,­$'Í¿ï9w†’åÄÙ¶@aXq†÷ûž{æåB%ò·½S?¿ž'ên§~^è&J«Å­ªâ$ɨTnc›$©**§&±jñI*\ü&oh÷F‚7¸µT&mZ©¨ÌãR§j±RÁl1¿f õ»J«,†ð¢„– ¯›2ÖVéÂÕ¶QW÷êåbj e›Œ²£^Í—CHo£IœïœÞÅ*Bm‚\ešß©ú›{‡:ÈâD½BmF:Hø\s•‡ÿXüBƒÿ
+“scb[&§ß´–†PÞ>².ˆ|@œü|*_›¸únDÒâ„¢ü„¢${Nt™
+Ödƒ®ê©rRŽUUfêêft©¨ž“å|Ìrñ(ËÓB“œ¾Ëàí[æîg’ÀT}æwÃDnÃ<ØqÑ®ïU¨Ó
+«$8ÇJ9QíýuÔMˆ,k›òö—B?R~Ç,|æj{¤bÎxØÅQ:c¬Íà%*ұΑ³WÒ¯,¤6̨3öXHtt .Vb³^5êf¶£ÍK*ªÅdg€{
+·Q%ŸBc‚ -¬·ÍŠó¹††¶kzÌ7º0*ƒ¯£yÕ`Ÿ˜gÒ¸2Ì-Pùw‡ÂhBÜ3¬{tC¬bÁG>`/çL?xnÇZœ[3Yò–ºAJ™Ké% Åz½•DùqË_wÜ‘§O¾ÒÇI`íDÞö>¾t€ò¼•ç+
+|I-8I¦²\(µÊR±†s Uzûؘ,©âÂâ|! eÝ(MÉ7 æ X w0â¢ÒKÔNâ÷çG†Kö¤ÖN^Y|‰á¨ë ¿¾:÷¦»}„˜ ÓÑ 0,¡7b:ƺ®/îçlÈ°0èR{4l§1|l…IŽ­PÃP× u…˜1vc
+ëFµíÀPóñZÎøŒúm°¤w4Ù?lÔþþjLÔ@y«Þl-?ïH
+ -…„ÎÄ)jÜ:ß\¡œ…º¢¦}IçÁŒ\ÏÑ3°]¡„$^µ(¹" F>áLÉÐtFxÌ⧉˅'ã…3ú½ê
+š½V¦”¸ÛS–BYဳÀÊ©»Nˆ©OÉ™®É"è%^×¢lrm*%C¸°$eÚÓÑWM·¯)Q]Ÿ©_ÛÝÞÕÄ- å"Õ%¼y¨FgÚ yöLbtò†“ ü.42q©ÍÀ‚/fª&[ lÿ„éÙÈGµðÑw¯eàØ°%eº¹l{!ò¦&GDNSå\¼b[œf#ùulj؇Côy<p…/ÇÉa­{åfƒûªtÛ,›Í¾u?Æ{ZéKò4¤è¦õQ¯¤˜Ï¨Ô#®DÅ¢}³î„áä×%¾pÚ:-£­Cj©QP¨”ÁûVv\ó[tÊE3ëA™ª»mS¯¤…¾²hÝšF|kxf_èp“DÅ‹‹«½¯"š“䜽Ù_˜•CTgÖô²±#*°öÇÞn\?`Pç`¢âo倒Õ-Mª&à09F¿‚nlOÁyèÏkAnÃõçú
+™Ï¸˜j€¹«æ o„Ä8¹æ!¼ÊÒ\|^¬ºÈ–r<XV Ë Yx o#+Ř“K QE¸‚DÞ…JagElÁo¦…}ÁÔ
+z¾`9Tâ[ÁÒw&©û$ Ð/;Y>`éPX>Õ£!p4¬'!røO›óìÿG…øÿ‰XRAë¬6±r8×ÃE_-Å0“‘þÔ
+ô-õs
+^âCÈ(ÃÄ–…jZ»çgå± \´I î·£#L­e3ÙÝÜžª·ý.áÎï'†1 ü@ ´qh"=òƒúƺÛA(ž…*ªâÙ#
+î}l™‚<:ªx•ß5F—'ZÕLþÒ›˜sº®«ä*ŽX
+‰˜ÈÕõ¢´õÅ‚ÚRì×,±’ûœÝ_d ‡ßˆøÍiêÕv°¢œ…·©ŽToqH5˜‡ŸH¡†$O…(ùSRŒBý¾À¤øjYàbö 1Ï! üä öïVþ–ÌÖ–(¡0´»]ñÌhÝðx,M^¹Ì£Äˆ ï«ž©¼ÕÞÙOVFçB ¾Ad–ԇܢÁ4OHoé@ùóÞµ6¢ðÈ…¶êô´Òår÷ºá·ÏCi¨ÏLv(øÀš¯ª%1“¡…ñ9gå7ô¸šk‡þ¼C? ôÓ;Á³µGw^JáHp8>ù=-ͺ$¹\e侚¦ (뺰p‚kŽè¤u«¥‘¡‹i0ýlň̟„ô6ÁÊln0Û‹Rä ÓóWžaòêzÞÓ/ébÓ«¦žhÜuÀGbN"»Àû13¡­Ù†½… ” è6œ=od{þþ°+Ê5´À„RžY&' ú&"¿8H¡£ÁQ¬ÌO²òq¢»žÊB+­Ž”¤-<eY”OØ´srÓeðO€
+endstream endobj 780 0 obj <</Contents 781 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 781 0 obj <</Filter/FlateDecode/Length 2354>>stream
+H‰¬W]sÛFü+û¤»øΛ-3.¥"YgR—ûê
+&!…9Š¤ È.ÿûtÏî EËqêJ%vgz{z>ðr¡ù;Ü«Ÿ^Ïuß©Ÿú¿‰Òjq§ê8Ir# j•q‘$©*k§&)ÔâA*\ü);´Ý‘`-•Éã"­UTåq¥SµX©`¶˜_ʆÙB}TiÅ0^Vð’a»©b](À¸:´êwµU/S4´m2ÚŽ¼›ÏÇ­I‡Ñ$ã;ëw1‡‹P› W™æwªþmoÄ¡²8QïƒP #$¼¯y•‡ÿYüJÀÿäܘ¸¨Èé³h ô˜@Ù}‚.ˆ!Ö~>µ¯M\“‘´<ã(?ã(ÉÞ‡_¦šlðUÿ3WÖÊ©«:
+º)«ðõ-?‰¦^éòIŒ§2¦¯oná‰W(ar:C¥}W°dÿ©5uPR®C¨p°oó§ñ2#N&Ÿh¡ÌBØð‰ß-Ey‹ ãÅz·UòÔØU”r¢Þⱬ۴ ïv­Òü6£–8cÁÙ|2–õºq
+ë•ŠLâžÏÏE1'ú3Àë_-ð·×º}êM@7)%<@G¹Ð5ø* .|>X:Qû”ç(ÄHrŠbÌ* &J3˜‘»‘@cj20å L |å#Ë}-©Ï‡Ô¤ÚË è1½ ®Â¨
+^"‰4.uÌÕ|6Ÿ_†Q¼áÇ52MÝÞ¼z!KøLƒÙ ê,)j ]ñ·âöÕ¥•°uBÛŵ—<b§E„cìþVdRÄß|52“ƒõB¯8/l†1`
+Сó)Kˆ·6.D$X¯zë!u-±îmQ´p¬Bl"ÁåiŸÚ¿ó  ?ûΓålÉGï<A½ø°Ýš}˹ØmWkä+el»ó#:Gaß;òà3L–y—×®ZÚ±·Eré{E,ª9=¢x«‡LuÃ'°:³ģ9êé+f’"öW/)FiÖ[5ïwûI9IÊáݱ~žÇ´Èx1ñk¾¾n·í¡±ï‹g8KÇSèç8KñÒ•UÞüµ>pe>òû°ßu¢ &š¡¨r¿€„¬Ô\*Ÿ Ær–3k…`
+ŒÏ¹ xµÓ0¤.™SY£;)1‡–éú‘ d•·Ëté߆©ƒû @q§S;â^.yoÍw_Bƒ'Ü8sã ˇ8r†Ãµ.iñ±ògoÔ=‹µOÝvT’HÔÒ)ÆÚÔ²¬ ¥ >
+¨Ùuñ¹Rý lÚ¦³Í„#*:f‚ÃA6ïw²tÍÏ{nŒÛi‰?^ p0xúÜÑ®ÐeEå 4
+;™Oe¼?HM;Öä 7Ûr·¥€|ê嶶ìë–="]Z½#©Y=x¿ª olÖ[Þ‹%zál¡þ`
+endstream endobj 782 0 obj <</Contents 783 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 783 0 obj <</Filter/FlateDecode/Length 2711>>stream
+H‰œWÛrÛ8ýÔ>‘S&C€Wì›ãhSžË^KÞ}H¶¶™¶™È’G¢“™¿ß>àE’ͤ‹ ttŸ¾àí\%ü·½WoÞÏu¿Soæú¿‰Òj~§lœ$¹á«ò".’$U¥Õqj’BÍU ÂùgîÐnG";ði©L©UQ•Ç•NÕüV“ùìœ&sõ»Jm‹ð²-™l7U¬ ¥®¶µú·Z«·ó1È6dGšoûHÑ$ã§w>¡6A®2gªþå&âPYœ¨A¨‹À„‘ÌkŒòð?ó_øŸ97&.ªrú]´
+`5{^.ëÝîîy¥BkupùToò¡ £<hd
+£L¢Õòчñõ{£ú¦øŠéH§E\©•šÑ“”±5]¾Hò„'רðÒ1Vºê‚15qU†œ%-$/ˆy*hÓ*K&7„wÇ`²ÄÆe!ëÅ·‚7ÊhÝ(M…F|Žãdr¡Y”ŠôJE&ñßg/y,{¸-äAàBÓ¿žžyèN¼(ÐM
+` NCèZÚŠ½J#ÁYNÈ–„Ûð…$‡(TXZ,QšÁ€l7Ð Œí%–èíõ¢=²Ê±Yh¾ìS“Jø§…-{P‚‹·9:¸@XÍÔl2›‡‘ .ñ3U³¹ L\…: z2gI,ƒÇŠr×+dK+éÀZgÓŽmüÜ»L“{ƒË~È!©¸Ý¼êQd‰ôBIþóÂü$ Õgùûµ‹+]
+1„7Ç‘)û-dôœÌG1`£WË’Ay÷ËË©é¯8äH~Ú™NÝà9W™KÖˆµ_êþ‡àz2»rûg“²™I˜Í
+Sü¤É¼{ رÉ`¡^†½ŽÍµ_©mAÙ‰+…™”¨ 54—Š•ïµ;ÑP¢0Ò9 ø
+IK»cݱÿF…äp)*÷=ãg+Õ¦V¹Lš ù{•ºƒfÁÛÐn4 Ô)
+Í;Ö²…¢ÅbÎ<áG=uâ8·¬o½YL%±¢’Õ.9–JÃçî²øaxj+Õ‡Š»Ó_H‘”*àý Ó¥ãüsX¡ŠËq§™·Á\6æÁC(’ÕÙT5k5m³hQl³`§Z²Í-ðGŠ²ƒ3ùÉZ}ÂûŸ!ì±s ﶳ³æë½ü©…Ëà&òX¼K˜3—Wò?†Úºâ/æ©ä' RÇ\æNMW½ÓS Ž
+j¼““Þ<mÖ¨èÛzY?µ{ÙÜ1NÚy© ©
+`Œ&q[–<Xðí"N¼(ÎHÓRÓîÑUŒC)Sš&:â VÙÁ$a,V+Š^§ST+ÌÉßféœc`×çÁç ÆϲS<‘’HòéN8Ë[À*÷NØ¡J²ž#} 
+2~_ÎŒéËY”–Òà–×… ™½rÉr×Jã./<cõòõP52‡Ë²$wGT ãŠñتvÓ%Ž¯òëBuõ̉¿u*¦ÞÖH ÜÙÖ[÷¥Ë>Eè½ð¯È
+ Ü}lgˆsîdþáÌW
+`VàÆ~ééûvˆõY½ÅÚf))^ÔlÈ‹5/1iPÿÑ~äV¹}ŠÙÕn}çàÎ?¶,“Òq>iëóQÀã|Äø¤”¹¤´—vù¬Ûz+kF°ÇÕα½›ŽÒüœk;ã–Þ¸·!F^»$‘-‡µ`GÚ·PÒócÓ*–†}¤þô¨…¾rÀÜpãCåéTm·Í†¦(öLáj¼ øTÄCpË@Ô¬Á^ Ê}¶wg\H:C<$}*H7‰wlrPO¯eûn™¹‰K´}}‘•¢¿[ðÉ ÌñÈô²Ÿ"ÏYT—ž ¸Ú‘‡[²½q<½ƒzL®„‚jD*GNn<dÇ9M Àö¥ÖCð­8‰ šp¹YÓÅK_îOØL-zJ8ia7‚&odçý
+q횘î–sÂ}W‡4H+#.z èmG"(8…‚)›ÚS1Ë•kÈ–¾FU_sÓ’Ò)¥ñý£+ùò ܻͣrèqù¨9+U…ήª“«Çi8¢¹ÑÂÊ‚ÅpQ?Ó@£ï#ê÷%gþ‹¸RÈÕu(KÖíÞbêvõ÷<ýZ²b^`Þe|0Ã7>TÐ8‹yWŽ¸.?¿ÔÅ.öÅЖ¤sKaî«ýh¶ìªÝŒŒ#w_w†
+–NÖØ?etxy2ãËé·Uɼª¥SÉJë¼;­¤ßT u÷ÐA§òˆN?­7ÛÇ…T [™àl³¾mB×hIæÚßØö’¹) Þ¼ N •IgI§rÊÞ¸U‹'<ù³j–‹OH í¹<:"µÙ¡±ã-Qç¢ÄfîŒùX¡)ªX›¤ìÏh»¤•
+.Þ
+ñn&ê·fýEjظ:• û}+š´ˆóbdEkÔ‚÷õZn¾+ôÅÞ´ÎP~ÏdF”eü¹K·0ôÏíÓfGV"¦ •w p>”î È ˆõÈÚÈ‚õ—Ðå-d€WA»c=¤¢ðíya,Ô ó„„U*éæ¾›4Îu’_ê¡k,™u}k³u/[¿h!LPýÅt`=ÃÄu,““®í1.ÍôÑ£ê?‹ל?G8
+ãˆ-Ìpm2=_K¥ö8JìÆçWø„ê^NØ–~掿c–Ýo±î®JoBÿÙ]ýVõ\qS/©V£»úkw¹Üú”¯¥ã¾`.BªZµ¥t3-zQ×r—èG™/pƒ‹]½ë-aúî(ÉúBÑu¤–™]ya]⯆l*iV6-¶/*€.°Ù65-o»Ê†}Žå‚…œt…‰ÚGKd]šÌÕÿ
+endstream endobj 784 0 obj <</Contents 785 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 785 0 obj <</Filter/FlateDecode/Length 2935>>stream
+H‰ìWÛrÛFý•©<)Æ\pKž,™Q9˲Hí>X©-ˆ%Æ©”µþûíÓsHQ¾U¶ò²å’9¸õœî>§»çx"2þ·¾/NÇ™¸ÙˆùïLH1™‹:Ͳ\ñ µÈ‹´È2-ÊZ¦Ze…˜Ü‰HÄ“?ø i¿Èè <š
+•§…®ERåi%µ˜ÌD4šŒ_ó£‰øSèÚ¤d¼¬hCŸ«*•…ëVüK,Åñdˆ¶•íÄoó¸ ÑštUf1¾·ûNÆ´E,U” #ñ«Å?í4–‘I3qŲˆTœÈ(Ã}‰Uÿ>ù€ßä\©´¨dýY´
+m¾5·2ŸókoùÁxt f©ŒkV¡ŠïŒ„ËZ6:Œ×HÂð4
+Ã~œÙfR¼Af»ž¡ndàxNÍ)ß™l8tJùÐI]BP‡J$ 65›÷Ñ/¶ZSû¸Áêÿ­cê<"§›Ô‰~Š“"oâD™è8®#»Ǥ
+*úÏD o«ˆ)¢àg‘GèK¥`Æ«=_‡»7Ʀx2Š 6ûRL6ƒ9E v›®S—™’féÀ-bëºØÚÝÙ•9¦¼Ûu+Î÷#—½8½m~â;ϤOjVqIH Ýr~"§ Ù¯ŒŽÑ-6qmÅjŽ:.VKÚ²«µÀí–@}Ä ú]7°•ýÍék<<bÇÚfz‹ig1kñév21ÿDËÅò¶¸qËVÑœ"pÊrWÔêUŽ¢À Å1¨Ü6ëv-Æí@Óª¢fk[dçl±Bz ü]Ëm!Ä·g6¦˜oÙ_3úg#—Ð PÉ
+%AšÜââýcЫp”[Ú<Š#_²Tt}Ýr\(Î
+OºÉÇ3ºøà‚=£vó÷,š©*g¢ÃŠí‹ðÕ0Æ—6GÄŒ—±$ÂÒeýÌõ<x‰áö>­Ñ‚#Ç­C‚A¤Sð¯ÍøÙçŠ#¾@Î@äíçbÎ Ïß“/f‘âhnc‰ÙžÐOh«s&¹ü2V2:¯éåW¤Û”Ó(WÊùìJãòž5@ ˜¶÷Û…½ðÎï9ÎÉæò@ò£ú \}àûHÁñ5B÷JrYPL!ü5=CK²ç#’Dn¼"nÈÐãHø iŸ!JoP'c_|t/Ϭ6kÒ&é²öd«ÙšÏH½ãÖsúL,ˆ!/-¤ï×è—EéWÍy*223˜×âYMÔ—Øéìhø˜ïŸQ¤NÀ” j;ïJ•šŽl6ÒèÈÆfnøiˆ”Q¯R»¶âJúÊtµ† «ä"®Ì1€ÄTÊ}IMŠ†-ò"æ>XÚ‡🽴ï5°!fljJ…c ;×ðÙÛcÐÐWTŽ;ÔÉñSp¹~Ïkõ{‡à€*vzâÿñ?Dgžo¿,Ûplx¾,„Y› OûÊlØ1þne \ߤ vKE$A ¹×Çã/ öKÃÐlöOÊЙ¢²T´‡Š½ÙZæ-ƲÅ~1è6/çà!q¥Ï1³éíBºxBÔ™Ça˜‰ ‘ûŠYqù¤^Ä·ýCi[Ù‘ƒgÖôýjM¬\ùoOb›p_D{}{úΠo½«ïúV|b¬¢·á°xHÆÜÏï`¦åQ*qºgEEø°ÄýZO§-{ek}0ÇÝŽ+ÿÂë÷*b>â«`^x=ø¬æÉÔ¾©/R‹Š1`8¢qó6–÷÷ëÕý‡1m°½“ª ¦Âîa·é ÏàÓl T†#|•ÀÚ©CŒ†G8(yÝ6Ä Y`ôNúa\•õÓ®ó*œ3ÚØÜ‘õ“Vöú àÙÜbh5#{Õ&œb{\ý€_¬"wv¥3Ç/Í‚çÊŽîºÃö‡¶qÆ[‹ÑðéfË/q¢,•¬5 µ{Ù+÷ªÅšZìOáÜšq ¨,9Iä"•(:;¦!Ç«ån~gƒ&W‡&×ôà@k ]m ÒŸ÷™Ù?i¿Êr߸¬8úæ ãÏ–€V•>YÞõÜ@A3iñpÚÎpˆp±_<©ë†iËúó°Ã5la®!=™£NÈU._8œTÌ{?_ (*[¹ d®ÔUÁ‘&ÍLYSd2»y‘Y¦©4Ë4/Ô;BU¥ºN5t¹y@1àÄ’ÖçÏ‹u¥¢·Ô˜8L.‡ .ï×¢:­‹¼`
+9ÿ›fßPŽº­€_µPE‰$µ 1«øŽeƊ݉}
+.jö)€ 6pa¢Ö‰³¦·ø¸3 ÍD¨]Hp>Ë„Õõé™øò f~ä”Ä™eº‹ 64w˜’Ô]Ô6<ó …5´˜”
+­XJqTÜ@ýî$XØÝÀ´—Zb uøÌá]s´®")ƒ×&ÈiÞï%m,é:'HIÜžÄM1û†Zغ!Ô€¦khγ„tP±$gäV=R#¿„Prv Q
+endstream endobj 786 0 obj <</Contents 787 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 787 0 obj <</Filter/FlateDecode/Length 3466>>stream
+H‰¤WÛ’ÛÆý•©<.Æ 7ëI»ÞlÑU\IKÚ~ˆS)ÄRpaÉJñߧO÷à‹Å)•¸
+<O*Œ 33Wj¿ðÔ}½«eK6±@Ÿ[˜UY1p‘&©øäQŒ'~MŠ½$¿V/GúsxÙw~Joû'_Gžêemyã‰G—|ô3¶ªö¶´ÐøÖÃöžþò•i%ñv€ûrØWõ†EúyL5بú=É'|®»™uì
+ŒÄFjÇØ8ú©¦Ž,¤³gŽ·âÑOx?ò-û1šÄ̲õÂùöÄùÖ; ÅÑùΟéèÏ|ÕϡF Æ
+üöÛhN9¶
+Új_T‡ôý >͇ðÎÅìtuþò° ¾Nü9Že_3iH?‘¦CMß”}}Jq^ÆY‚ùQUÏ)õrõïøDbTW¬w‰Ô÷É]ýYpŸ_
+Ä¢fD b4ñÞ>О÷®Þ ܧ!æ²]‡«—KŒk$H#?ÒÅÕyD3sÃ_*Ã_êÝAàýb%ðå G^˜H
+Ìy*$(àwè*ÛVUœb{!3 JÆsSQÏõW0±´'¿m»gû|”†Nì X-î ä>6§äéèm©¡E1–ËÃ×yd|{“d`Å]Ï®d¦;§Á2ÔÓ˜á˜}Œ–Ùí/ã”ñZ8Ýè’Ø ;¹5 mýਵt"*;÷‹×¾NçSßHr‹ÙÁ> } µå0kíA™+„íF-Þár7s™D˜«7›Í¡g³rG«›3’7Èg>û@ÃÁA6¿ìycƒß-X`¿Áˆ ŒÈëòP0é|¦E 9ͦơžÇ'Ÿ 0†8dŠFªPÐ #"c./ÄžüGvÈýfœv—÷‹WT ÇÀZœQ q.ÐM
+º
+: ¡SvÒÅÈv‘ýÔ~^€x|,Š»Pø>Ìàìå{§›Ò@ê9ƒæÄÈ]q’—¬í†[†•Ž‘pÇ0SÇ°(ÒSAN†Fàr àÑçØ"QŽä€à<CsÍ⺮ä¿[?‘šº4ÕÛ±FÅú¢Ñ0.ž”„s«W®¬ºÚJÓL_Z*…ä1g×lÇ.Ém{éŸå`ñÀ™y°ö¦?5‘cvÑxébp*_Ú²¾´ê¤tˆ+«±%ô´lØp|É9Qp2žÑÐX†(_J‡„Y¯ŽÇf^ú¨DŸ#Z_Õ j*UαÄqÇ̯tqÒüÿ´qÍ–0Üƹ•óêþ@1‚©¦à)»æzâj ŒýÇšÃzÌŽ„’ƒ_>–XpŽÞíù>½Ð¦ÜÛõãÉ%˜|ÀeØ€Èó÷ÈÚøÒ!÷ä‘?¿ÅVëN¼g:ñ3¾ð;K“Žt´G¶@ɺ·D;f·ø"•,Á¥ýiuºæµÞ’NÅ—M§§þ6ô
+w»•4—Ô5—tÞ\@PÒ³æ’"°2i.ÿa¿\zÓ†‚(üWXb ,Ûõõc°ÈTQºËÆ"ˆ"9Pñ¨úó;3g<~»U»È¦‹8âbü¸sæ›sF‹Î”Ä9ÜæÍk„3ŽS
+(˜¶±kã§9{FÇ΢:E[³âp$/Ìø,ï³'Þû ±Gíh¾èõ¶ä6 hÓèk÷uË-7·4¶,Rwå Ïâ‡Úc™úüQ¹øC«Í«ÕÕ`.†k‚áJ7zâÁ·áÃ’&k·„\›È®‡:9?M²ª˜/+¿Nsuq˜KœÙœ_ÙÈåÀÉwNüá"¶Œ7<— _ñ\Õ¯$.æ ã„á½xQ\â®*H¢è¹|æg®U€ÿ­ŽÖì9^…LÑOû€ÈÃmÎ+{ZÈNù±h6—²“YR5vZÛË«ðŸ“Ðɧ’£æM~h/f35Ÿa–(l›Í­çz©ÈÍMuMœºNß=ÌQWö
+š‰"t8zßzhHWµBÙ<&Gb\ükwºó’I€˜#j…á 3m¢]2´ÎvÓñHµHêÜ#´\ê›…¹äµE2~†¦îâžà;MD–T ùêA?»rÝö‡*åˆ §;'¹ÏOþô*W|õdŸ‘ŽrNG,UFùT4Êëh”OE£Ð’LÞFZ˜Ð‚!D·F³2¾Òù¾|ÐñMn.G,Ïmõ¤'õdXê}çЕºS©ûj,¬´B–?ž?Nj{ºð…ƤöÁ?áiv¹ž æÔÛŸ0ªžÑÿ!õ‘2ïÄÝ8©òP¨
+j£.Dxy°‡LqÓÙÒÓõç#2Ò™E/bø MñI/·å«‰Øåº LàÄ$ÛÅ~†¶-RÜâLˆ ª_Œ&H„ä{¢­Ö£é% |›·Š2AQÆ(Š“`ê綮‹àN?Å~B†jJù®­ü†)ì*ß+¿É¬ÕnöK€
+endstream endobj 788 0 obj <</Contents 789 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 789 0 obj <</Filter/FlateDecode/Length 3077>>stream
+H‰´WÛrÛ8üTžÈ­C€÷}sÅå©XI$yöagk‹‘h²²äè’Tþ~»
+5»W
+gŸd…¶+¬àÐ\™<.ÒZEUW:U³…
+F³éµ,ÍÔg•ÖYŒÍË
+§dXnªXJ'Ø\íZõµQ¯fC4ÜÛdÜ;òÇ|} Ñné0šÄbü§=w6Å¡6A®2ÍßTýf;âPYœ¨ßƒP #$ì×låá¿f¿ð@Ή‹ªƒœ~->6 ¬>ADÎ vÿ|¸¿6qý§IË3ågJ²ßÃÁY¦š¬;«þ¹£ì.§GÕåðRˆ›þJeý#^Î{/—O¼< ÄÞÉéUXïßÓϸ~&LÕþ¶tä.̃=«íF…: `ÝÌ»?Q ˼uÛ°wß*‰Óûßá4=N]§´,ÊºÈ ‹’æ쀗ö@g8%œÈ͘ªîCdÒ܇E°
+Ó`ËAÕ`¶ Ø\À^óöá°²Û»P'W7¯Â(n¦¸BŒx…«ë©=„=¡ÎÜ™×<óݸŸ8}/·“ ÝURÞÅqšfŒâ0¿OGJÐVš{±hXˆK€jÕ¡ÅÅtŽiu°"N;x£š£Ȥ‡ÝvÞ.ŽhcrŠ™éG/i„1œ¢{ícRyŒFì9‘Žu^Z¤Øª”­JluË{g0v¼ 7Ç°!!?Ðdíü°Âx|áäµ4¿¡Ë"{,žZ‡Ûp4B]!w
+Ü%-P`¦Ì yµÊR¢ÉI
+ ƒ»§`²¤ŽKäRVÆðF™X9Êž+ ’”IFÁpŠÝ+DFâƧ'ÀÅ‹B/g€×~8¸!#õ
+󬿆‰gS7cÅ´‰G?µú„ÿ¿ú¼Ó%‡Uä4s=Ø´Buï2÷^•ˆ¹”˜×ø,%aïþö$c­©tçèâ9G3!q›×ú8úÍŵ8ú-™þv2:ÃifGƒÙ~Î.\ÏjKóí ÑE)išè©m†Z-9WÂ3Ä}F)•gš¼>à²^
+¶AïþðRÁ¾ˆP;i2¶°Õžg°¯Y¯ÕGk_,¥FAûåyËeeË‚ßvê·PWݹ̙’)Ó‹¬Nc¹`±x©_`Q=ÁÒ]äD\&=¬ö󚆃ˆ{ÓþkQ\oi¼[Yî•°í ADÚ’"g(m¢Ç՗Э ò×ô*í¶¡×æ äðÖßbscÿ¢£úž5ò¿Ýï-†ýjÙ 4¼Õzmí¸Äº—¼ÉScqHFNäÂ/&°mé·÷Ç…e@ºÞ"¨nêÍ{”t€ì¹úRòýìoT çtЬ$0äêÃq{t›*‹èƺ‹ ׊i6pz—?:s6vz•F¦¦_}‘0ò2˜ŽµR˜F)¬´ï£‚¸¿Ý䮺Í÷e{Ü£í”@R? Kð=´¿öêxCàÒý–•áV(˽³À0¿Ïö@¾äqÄÃé°´¡É…4¶líœwH#N„‰x9I5·|yüsc×6<l+ù,ì¨ŽÝ ‹æ¤"y¢I*`{×ä^Ðé®ño³ž ÒŽ Š§¾—W
+90ääÕ²eS5ò:‘?B]ÛÇŸ«æÐ"#X¬äÛ¥‘w«êQÞ=m¼´ï
+G²$ࡹW?B4u\y!g²ÙYfqV%¥=Ò˸[CO}”ÞeŒ£Ó+Êiƒ ·wÌqHÙ;æLëØ ï¨™Ð •”ÚïÂórŒbÏÞH˜4¼wå}XWKoÕ¢þ«&eœ›á‰±»¨«v5¼îÊõ‰MgÁä»ÔUGy ú×GÍ=âg÷°ÝKÉtix°c].ö‘ ôÅ×^×®^Ÿu—{yûmŸu“Çéù®za úW:Ê
+”—³¥·d{,…¿Fªy9O4O,Œ?ó\¼|€º[Z|K^ÏÒs“z”pG¾Dò-ÖEê äå$xà¯æV]£0{S»Ç'ÊrV
+endstream endobj 790 0 obj <</Contents 791 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 791 0 obj <</Filter/FlateDecode/Length 3506>>stream
+H‰´WÛ’Û¸ýÔ>‘[&—
+QLzŒ&ŒïÅï|F.bm¢BY¿¹ú›<HcÙ4S¢X»ÈĉŽ2<׸*âÌàß raLêª
+ÆK¢®É´Z~òz1mÔÅ·xœèÜQ ×j&õLV¦µùóNƒÀÕ”ñÎ5rÞ:®•®ºªÏMZUCe¢½äŽˆÂSÁ›V6šRC™½»c³:-­'ÞÄrt¢m…/ ± Û±´bJ’“õJ%&óïgײW
+6’£P¡‚5E¢4}
+(vÎÜJx¨Æ¬çθ̹ç§Ã,3Ì9Rœƒ¦Høe¾³óM`Þ`™Œ–º­EŠ‹²†š¶Àa×EGÖ*>js¦@ýVº–úý+·²{üñ³‹©ù«‚H@õ¯qâ"õšÈG/bâ‡\Îbªs0¨I°`J£†­´ûžÀ΂¯Ú<ÞàGmÉnÉïøá²YyÇþi“*¦ç ‰g<hÀ fcül­øë-~šs
+ˆK“Atî0â"šù`ØÅc¸x¨ÖLEa¡6`}X dEô‘æ£Ûl7tÕÚÅ¡a‰Û«ƒ’[ \bÏvUÊÃFÝâþk¬ëHíÅ
+Ö)s4“‚~½ò±±´õŠv´Nкè†2ÀšB’B·#^7¦‡“™|3Åâç˜$å~œ²ÒD€+T30õx-¢ßÝÃ)_)<†Åz­–›Ã‚rD#ÛÌl¼îŽÀ< $ëõî Ü·Dß Œ©É†~ÅWýöó\¶_YÃ…£SK}Ň
+ù³½üy8„&è{*RRUÊÊÃí
+¤>™¼º*ŸeOƒÏ+šk-bòŽú(”"ŠÑÐåšéØÉŸHå3u%íÅï&ðö‚ò¡ó„: 84ãÐÍäuDfÑzçCzë@ï‚S_;èÈ h¾V· Ô†àE»jvÍjn% ri]žòv±G€—¡,LÄ“,H^µ(H;q°nXÞ«†—,¸{¡4Œ‚êÊøºZ5k†âýnËèi^Z6ÛC+7l I褣@|±–b”„}J×t ¶ w{Ü27„¥/fÎæ(Z|žš/Ý)?ÑüA“
+,‘º†ˆ@I†y"@è;±Ã&™}Ÿ;
+¯!ÓÒ¯ÑÖ‡Yt!‹y—E
+‘éóÆ‹•ó#= ØÄâÐzûŽO@.œœœp¬qÝYaPdᘒ÷lÂJŠ+:1÷{$ëðxŠõR{é¡í•Z´ß_‹ƒ ˆ¸u¥8HÓkuÒË8 mÜžœ_hY¨ÁáæJ ÒÄ×íø¬
+]+'Ag ìA,ëO_‹ív÷°Ý¡Üß.XŽ³åúÈ+›Ô'ºâSS¤~êu+P
+ÿê¦öpäÛŸ”|ÖkF4Ã]þO‡-„¶>‰ìc'®æ‰“%ǵ®Œ™¶îÇLì+ש«CÛSy 'NªÎ'FNúMÆ2—æõ`äïh²¾Yv‚§Á˜LÒØgéуZ’WiV•çãZ!ÚÝ‚Ô/Ι—iáÈ=›§N]Œ|4Œ.O]BµÃV²Á™ÓõÊeâà8íWFϽhª™ /φ–®gÕ¡g-úvðÔlXvê1ž›"5”ŸÄo°“Çó^ö#úJMÂÁj™•HJÙW7Õ6 -ª“¤z„Á‰Ç4$À»³ŒÝ¨E蛫+† vŒxË‚» B!9}õÒeŒ7Âøõ¯+ÇÕ–D¡Äl—ɵ*\ê0¢Kë-’ý‰ðV©ÕiŽ|½ÛìhœpRÌ»ãšÛt]™èÍ–‚VqkâÜ^-º^/K ¨ÓÚŽà²÷O¯Útþ%ÿR‡táp³ÄÄû_Æ«m§a†þJÄLêeÝxDh ½€´ñ¥P©¬(Hü=öq⦷‰—­iÒ$¶}Ž=âÞ8Òü²¹&´t!½ €&µÓIN×Êèpxyd ÝvÓ¢T‡/böË{Iìçó’D}Pè!’2D°½….¯(ž®~¥äÞ"¬.
+&g[Êò< ÍQâ¢-e–ÊvÇŽ¶á–[uÐ8ýÎá)ÂÙ“øþƒïYWC\ï8š($|è‚r`͆y~‹ËÿM!EKëÿ@0rxÙûQ‚ ¡êu0ÐÙIûè-îK™4ÔGX6ƒ¡û`ºí.óUpتèòoÃwzä/¶¼£ˆÐº»£‹É#^?Ë–ôcä tjËèýcÌië†b]øÎ#N9Ø–ËÒ¸ÁðÛB#Õ‚ ~|7ÇËJñ8¿8É>Â¥ß#§ÉTÎ[àÞ‚”Í‹ù`
+endstream endobj 792 0 obj <</Contents 793 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1503 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 793 0 obj <</Filter/FlateDecode/Length 2483>>stream
+H‰œWÛrÛ8ý<’S#ðºo¶ãñz+vK³ó0ÙÚb$Úæ”,iH*©üýžÓàM²lg§\¦@è>}A÷ÁùB…òW?¨_®æ¡zhÔ/ ýßPiµ¸Wy†±‘¹Š“ C«Ò\Ö„‰Z<)Où‹?e‡v;Bì৥2qØ\Ͳ8È´U‹•ò.ókÙp¹P)›G„§´DØn²@'J‡®êRý®6ê|1ECÙ&¢ìY¯æÛ!D'²ÃhB‡ñ§w1‡
+_/V‘æ¯Uÿv¯½(ÕgÏ׉gü™öBÎkŽbÿ?‹ð'@Ž ’l€l_EK ‡”ÝGè¼Yç'?žÊ×&ÈßôˆMO(ŠO(
+£ÏþD—É&tåO•“r¬*ϧF!oF“ÒüG¢QNŸEyšˆcí•Ÿy?2Î0?’
+8™«±ßxO¾±\ýÚ xíÖ·.ã}ö>
+öÕVVƒ Ïþhé¸Y\,³.pÈn)\¡šé@Çç;ø¯däýYì!úþ fs ¡˜n¡!õZE S ¦%˜¡'© é#ØîørF 2­–[Š]‘{H‚7;NÊJ]qPá ðåÿª•o´BBz æšbö\ÕTò;¸³˜ëµ›d-;=²r‰t#ø¦öœo|
+F/»Ê!þŽ:/›€Iú®KR ‹ræhÍø¸$É)eBqØ ¸%À¾Ùpm‡™àølëªä ØŠ++FìsœGõðÖœXWΙñ¨uåÃæ¼?Ì©~ý0'Ñ´ÖÉa6Lƒù~¹,›æ~¿V~žkïÃg[“Dî슇´£P”hN´S±2aæÚf‚ª•&ÓÖ~Ù„»+àÔF}SÊf‰J ;­V3 R9 LÆ‚>?*“b§å¹^›˜ ‹D¯!
+t”+Š±ã$ÔJŠô“$T°}D³›%hvlYø_ èFAÆž
+Dt¿JÁ=›#ÌvÇiE|”œ¤:é›°î|„ÓŒ‡Vl£ÎG¿SÌ#ùáÆ3
+T´«•ëXâ¦6§¬±£ÏBñYäQꬡ1 ;f;z¸¨™×/j6ËȦ5+^þ²ÙÖO¯i™ñ.¶hä,gHt¤ys²þcª2¨LR2®Nå­”=t)„òX£s¹òZLãg—ÑÁÂÞÖo¼måI9 ãuH²0 ÓÁB+5œ%‡ã朧 Tõ5EÒ½)§u$í™äo82 't˜jÍštUnpÅ]-òd}Éi&̓h`§ i0.}w{üÔ»m#5m+]¼OmÖ‹¸+ù1|äÉ ÞYÁ4<\tí‹›wõýGä±j•¬ÆH\ï’'A*V:T,I0\ë²$îÏغì+öoéP®n)¬.ÿÚ»ÌÀwôB
+H Rà{C¤­½Øº¹i ¨¢‘íâP
+“s¸ϧ#xÐA7sšxó –”¶’Â¥«òžã¬Z©ûm­Záj²ù£l]mQ5#¯ÖJG²n¼fJ}÷q DíˆÕÄCàêâ§ã¸ÖÂÇ¡ÄJ³Üné…Rêù¦¶u%ájIŒÉXb@z0'aô(bµá\ õ~¸_ýO€
+endstream endobj 794 0 obj <</Contents 795 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 795 0 obj <</Filter/FlateDecode/Length 3333>>stream
+H‰œWÛrÛFý•)?®
+2ZmB2 Rª†¡}*˜åÌê(˜ãìbé^¦uòçŸD/¬/$~N}æ·e·i™ì8XnÖ*5.s‹.úZ]c[έÚWw­ìÛ!üQOôì¡6‡ÊM]êi
+íFÈÒÁ//}ð ¡bµÉKÁ¹s”û0·>\4S®¨s œYŸÛÚ¨ùÇXÛ®_Â[(X¢þÁÿïJ–¹¬ÔDbÚñ±Ö0¸Öå•ÿn6ˆNÇÉÈ*ª£¾T¨„—À·a1’›1_`vÄסš
+SNVêæùéä,Bnöíï U"Íéé 13/Ï.'(Y‘¼8 ß Ô‡×/&ÃôMš5É[™M¦GÙÉÖô)
+ÏÛÆqŒ¶®úKÀwØ¢J6R\꺎:ï ûØ…؉™„?b ,†N1–q\0lÈHlë
+F^u‰CcLMÐÇÒ: Ê
+y1
+dÆàeŽê2”Ù·céê.˜¶>M¼÷l4ßͧÂøUåQØƽÝÃûxKºEt›ðéÛ—@/³Ì#V%Üïäè»ä·åíý6õè9E¢Ê4«Ñ/ê2ͬNÎRS$a8I«„ª¼H­O`GËã+RÎð¿ãLØÜ‘áfÞͽ€œxUätÏ''æXo;ò7—  mî¸LRrߣ]òÓ](z FÖ€lD©ãE6N!¬L>P تå:Í|²Ü/gûv§Ðጉ»wÜØ2>Žæí‚Ÿû4.¶ê=ç_SƒŽy+FepÐ:ŽÂ¡Gû¥påÏ©™º<K³* °a“kN^È’º¾x6
+ 2+>¦@Ó˜98ª‚2ËÚµ2_c¾‡+Ô†wÎ$VZóà+ZwÏÕy<Oµs€¥' “½àºxŠŸÀèR‚ø˜qñì{þ
+›1Çv¶ ,óÁ‰¦/FîbÓ炊״pÏ|uß…°Z¨ùŒ³Ý¢Ï˜ÎVÄûý@³XraNÔSûÀn %˜o ó ©›NÚõv8´
+ÇZaÿ“Òæ·ØÌeü,ÂRlw´½d"·yµyÖ$wðá³:j í¥¨EÐ{¿Qoƒí=ë«‘«¤Î‰ƒ^¶TwNðWÂêÀªg’P…ÁdÉ°‰žêj£~ígJVÛٶݪ«v.îâÿlû•à ú»]|6±Æìô§‘àÊs0ºBõV»´”¥Íýj¡fóùf»0Ñ©4<ºž*úˆ,ß{׳˜zÉ—™SÂ0ö÷°“tÉï$mL ÄNž¥¤q ‚)kÌ”&y{8Dmj¶Z j Ùoö¶‡Ù? ~·yPáÞã$ó!qJý­>d+C*?¾ËÖ0Éc¡ëT²Fºb‚[»hôÛf«úø_o«ýr.°Ù«è(…é´œ?ðÊ+(ž¯Ý®%ãV2é£8ð'𜠴¢@ ­?lDðBqIrn¯Þóm1. U1{c]‰¸Ž#ÖÔ|!à_)|¶‡Œy{·ÊÄÈÊ'çĹ°?A¾P½ñìCz\hÁ…-p½*•ä]²Û©1TÉç>JïCNnÛ˜Û…”·-;~ÈÒ|hïÅè>4à 
+™ ½‡{›èqIg(,ç•ÊÀ–ömf‹ˆ Ê’°·ÛÏ€ÄOÌ„xÏç.Eg˜xsªK¹†á®;n´™0(“[õEܸ”µ, ÝÝi¸:™™I»ÛuhïׄPï°ø‹TÞS·Â!lðBTŠ^À³.\ç6Ádxv¸qÈ·»Õ°l öÒµà’=º­l}†ë$EBS<¿êpWÇöü•Ýt)]vÙ×¹9ñüìŽw½ô V‡Ù†‘â uªñyêöWÍ=Þ»nBvu¦AIøÁÄα¦~²ë÷¸.Lä>Go/åݵ‚¨Þ…[±X`Žþ\&ü—µõ­œ™odoÚ¦£I°Z¦d¶Ô,¤† Å­5·>ÇÆm“ÿvôtrÕéÁg+ÂDêšKvA£Œ¦éX¿CßÌáÒ’.Žšg¶í(ÍƯ›aMíåþg
+TÛª Ï'ŽUésÏׄ«K<£ºç Þ[.w¸þ©·ëÝýò^îp©¿¹_±:¥Mm“?î€4 IJÖ£ù“¯*mò’¯*çu^ÚG_‡®¨Q”+ñ:ÔòÆ= ]]?
+­É=H4ÞŸ'Iʼ訌ümo•sÇAeå1¥¦â¯¼yñhë¥oUgñáÃÖ [<PÀ¸â§'"L“­Îqï&…Ìók©lÉ
+›‡Wžˆ8{>(cu7'Œ§¯è„1ÅØ]>á@IY®¨Àjg-ÙãÄ_j’Žç’tYÏ„¶ŸM=q#Ïcø¸Œnå^j†­l¿¶ó«7ÙÆ^…”2G)×üµ!o$F?"¡ä‹öPB [fwá9«Aqö(r‡À! ÝŽ*ì¼Ð„ãU`µ+L9Y©›çÁ‡~+º‚îN¢Þ²½Ñ8ë8¨B²±°³ã®x¾¨®¯/âÍ1Lß°¼¼•.'š‰múlƒçmãBoK”8ï;l j…÷û¼ÖÑý×Wç]
+dÆàeŽê2”Ù·céú÷ƒõ§£é
+)1´Ÿ”–8ÕI£Šdã«õ$ĸôJgžA X¥wA¯ßâ1Š¾}?| ¸ÈAë•5š"ªR5iCiª@³ˆöIiÒ߉šV]jègŒõ½Â ,¨•×.wL¤î+IòÔ¾ºcw~<ÉûÌ—œì$Ò,uÉÇ<Z(Ž4â—¢B3‚R3:Dy7Öj½í“ÿ(Û;J0H'î ½Õ¡æ=)—;)'S^é\k°FݱuFÞ¾1Ô Ë*õ:…KfÃå8qˆË=8LÍ£3ðjÏùaÈm£ºé¨ð†‹"¬ôK )ÍÑ¡;ûŸ© 8„ ’$µæ1ØÛŽºŠY]Ýl–ž·ysËó ÁG8g°!ç(ÜÃ: Bÿtæˆy4ÄŒbäÓ¶4÷Œ=¶éÑÆ”¯€êG8zš.ÍsšN ëÒ Mç<Úæ£;¿×­åç—îcw„88Õ߉Ùó2¶œuü–+½KõŠkÛºÑÇ>±Â‚»áÅÿ'À
+endstream endobj 796 0 obj <</Contents 797 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 797 0 obj <</Filter/FlateDecode/Length 4660>>stream
+H‰œWÛrÛÈý•yR&sÃ%oÍx•’%Y¤“‡ÝT
+&!‰)Šä’]þûíÓ @èboJ%r8—žîÓ§/s¾P)ÿîÕ/橺?ª_ú¿©Òjq§Ê$M½á ¥òY’¥©Uy©kÒL-U¤âÅÿø„–)ÀÒRŸd¶T“Â'…¶j±RÑl1¿à³…úCÙÒ%$</èGÇM‘èL锄«C­þ­¶ê|1Ô²ƒìIwÍ·SEd«£IEÇßäÞÅœ®ˆµ‰¼rßVýK&’XG.IÕïQ¬³ÈÄ¥˜×ùø?‹BáO¤²7&ÉŠ ²}S[(z
+ ŸiMZ@D¾Ê×&)ˆˆÍ_¸È¿pQê~w™2Mô
+rC
+ªˆKՊ蔶4UÊ"¬bÿ|l]B]†‰/ZWfä`¶Î„6MˆM!;íœ&ÛhøŸp§ë
+’\81“ÚMùÞð†ÒІ$§²­±ë´l!I‘3Ò' ý‰ìõ„Ì«xÔ½
+o8ÝÃ;† á­{ ¸ ÏH?ï xZÆظèêWíŒÇSÏ(
+ô†®$cÉáHhdÿ‰âÜ I„—+;KN²ÅÀíÔ¿“óº;_q;‹_Û¬‘’Oyºõï`ËÈÙéXãq3ìHm‡w–ózTI¸뾻ˤá(—sÇQX-®ø‡TTzyÜcô„CŒ®Á³C
+üïèÇÐ<ÓÚ>Ð ð¯%ï©WÓ3‚mv¼R58µæ¼—ÞøzÜã“Zi,£ëV4¡s¾TNŠ¸§0['ÒÎY¹e{'uÀsè¯ø4KE­
+XìÕH¸[zöøÆEw€I7L)ÌZôZÖ•ׂ;¦~[Ü^MÑÌãŠfM}õ="Ý+«{,Пï0b« n;Im9~5µ;Çš›Å--ò.‘znm(rÆÁRA 4®x8=GŽÔDíåõ-,ïm/pßõ•š^¼áý’ú·šgYç!üôy6—Eoéï]t<Vm' wQ?I].ó¡¥^lmSwç¥A^µÀŸ6µÒ%r+›ÉÆ îëzPigƒ—\ÿD´¾K|-­©»8;?âM1¯›§½ºäÞÕG˜j^zd†•ö3…°ïžêb§æ‚|*|gèêFP/¬¼Åø Ði™q/ vÍiÎô¸¤¹vt¿<3Zð-ŸË„âØØu$Žj+U5¢÷rÃz?Ñp%ºÓ»oœ]°Ý3ÇÙø“7H°ä£#Þw{I àíW,QÍ¡‡å sô;8£jÖ³Mõ…cs}”—ck䊻60Z© ­«Ï³wÝpz¥ÂAX°ìCÒ׫þÉÜ©ÙýuÑ9”Þgí› o´nã' ?ï0`e„çÜŠ \¡òd@ÀŒ_yªâO>ôˆ I+#ã–ë†Ï‡ÌC½©y# ùÂèÝšߎ¯½EåŸx
+Žß·‹¿!‰ïª®ä:R¾3þPC/6¦òËpÉÜ€n<O){½cl˜ØßbƒL!Û~pO3a†î “›ØJf £¿áöê°âc}¼æ¥^¶‘ ¿°9ö®äAJ
+S²à øÊj³NŸ¯Š`½n{*˜?ÌtûêP‰"$_ì…ÐjóÔ–A$ ’ €ª°L T]÷Ùê‰iLvPêíÓ×C° 6»%+.©ÿžï“3’d6N’|œÞqG%:Å9ÄèÎvJD°‡z£Ä©3¨1l>z›@7d“ÐáyQ:aIoˆ/…r€få9}ØãL 0å*ÉÛg;:û–Ó©õXÇ©{ѸÍÁ–‚…¢»í­ŠHH´mÑN¾›ºMŽsK¯¶Òv¡t†ÄÿšRðýuüì\ÝüI{Õ55nÁ¿²uO¦Ê¨¬/KzC*œ¹’—»<[%þ*Y$uÿ>Ó=«]ÙŽ»T0’öC«™žžî²Qâ‹+¤…û»@«:Êyqâ_¡¤QÒ¯ÖàĹN»ê.Ô3$Q
+譪Ū)Bqƒ “4'øWñT‘;Ê"Ä^¢þ(qÑ0IØ®1i°âö+˜z}½áÜ–Ó€ `äfˆõ†£O|l‘0%ãNÐÍadJ -­‡Jí Ö3Š>yÖít‹–žÌîi*³Vz÷WͱµN×—é ù]úåŒÄµ}‰êTš$ˆºÛµÖ•R±D¢ØÌ—ƒT['Qè‰xe4~¢¿{
+õ)/'@î…¹½$é]KtnìóNÐßsä
+/‚žÒá*ó1ÿ壓x){uUîUXQ¢°ÀQx54õ£„w%eŽ¡aÀmï+õû8wïsŽ!íÏZG‘§išt9¸R{+ðo«þ5RuûÕ'%‰<fâNàb‡~V^"šhù•î)–óCGìÑ‘¨Î‰bö
+ù,IúŽOKtJü åÔP°™
+´ünÙ©Gòµ•Fù^–öV{±~Ž+¼Ä.k+èúh"hR‚v‹'Çn»c‰ï©™$
+²<>Lù=œ)ÝܹÝáòÞü+À
+endstream endobj 798 0 obj <</Contents 799 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1462 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 799 0 obj <</Filter/FlateDecode/Length 4591>>stream
+H‰äWÛrÛÈü•y¤D,w<Šk—)YRH:yð¦R ÑL(R!{ý÷9Ý3¸¢dÕ:yH¥\¦pœ9·îÓ3^¨€ÿêµúéçy ÖõÓÂü-PF-TáArA¡’ÔOƒ RYaü( RµxTZy‹ð c¿ä ¼Zª0ñÓ¨P£<ñs©ÅJéÉb>å“…ú—ŠŠØãY.»Äòy˜û&U&㪮Ô_ÔNCo`;Œa{ÔnóõØEkÒùÖÇOvßÅ\¶ðL¨üÔŸíß3:öõ«öLªCodt€çW‰÷×ÅáðŸÄå$ ý4ï\ŽÞôŽ'_Ÿx§G.!Ö~2´oB¿ønF¢ìÌFÉ™‚øWo°WX¾¤?ùY§™ Æ$mÓï’ï)rÒ9{Qäaö5Ž~ör}2Kô1ë©/ø[¡Žµ—è.6ûòL¤%¹q[ý@Íä5×m«O•b“„}ùŸá #½›ÆºY¤IjÝDå:OÓP¢n=U²ÇÁËtµR7²íÆ‹5nn…-"»-ÇÌ®²{$¾Ô!
+m¿êZkнaÁ$ þ(ösaV×V³Kn<FSª… :Òj,›¿Úº±V§íË=ºDL´
+}aâ¨-×êÿ«\q_.s¦\‹ºÜöOûZ~
++,;œ-Ò@g%¹F0Ì-P$ê8zPt\ÚV&=!ÓòˆòÎFTtÛ÷Ÿôx#~ïVü]«éõ{Ø%óÓÁlœ+cÉ«VU¹DK}¢
+¯i§Q
+=ã«M3@¨…æ7Û¸ldz¹}–_®®ˆDóMD;°\ÀÃö_HÊ€¶cT&@%ÕLønT†]v;PÙ:‘šÂB­øOBÍôqæNêšp¨C3!C‰à«þ%ÁâÈI)µ!¡±Š(¢Ûù”œì C¬™WÍ󓵡ˆÏlöÎ%Èt`1 D~2ÔŽ`»1ÁúRNÝBɘ°
+×VÞÚYÖ
+¯_LÁ+2)èýî•:ÇÚ(2~š3a'Ÿ3ªçämõœ«çÈ­p ,>T”Ëvƽ„ÎÏ)ª d¹p³2~ϬŒ_Ÿ•}^•ñÎJ· ï
+U‡™)Mµc`frZëzVíFtR72#–­ä¥ý˱º/k ÊH?VM…›óHÌ;sÄCêgÇ@<™=œ;]Q²°köØé9!ÆÇ:Wd¸„;ð(Åœ Ëˆo)”1Œ—] ´~…ºÌ±ËÊ.–¼fö¬´ñ0¡Œe^üi-Ï9§RÝ<ã1 f°zQ/°ñI7½ÐnA7‰ ™§ðBžŸÑ ÕÙJœ˜DußÞ_„S´g¾PÚ ›ötÄþ ¹}uÊÌÚxéXÇ.öpˆ×)߀2ÞÆDz‚‰Ië
+^õ›·‡B
+F†r|j6µhƒLr9PÅ#ÁPKVOÛrYµƒá©®¾ÈÅfÿìAÙ§z '¾¡}žê=_­$C3/ê¤{4RÙ¶XHå 5BÃmÕ“[¡µá[\;±z¬â>Ð)Ð+ˆ7åsdšh¬Z…‚oêjYm¾°ƒ^½Ðt_›ðŽvÙK£®™!weZøqað÷°"[£
+‡ÉÄB(×cŸ’£¯‡ÕÂVøyK1}°˜õœ@<OS'àà|?+hE™ÒÉ)"RG«»}#Tº£‰xòÈ]*y9ƒvN6½·¼¤z%.dòßÜ]ñ•-é]Md‚‚(Èѹev¿ÇÕÜ£Î9$jPµãMdmåêÅÑ¢•œËN†J ¿9&Õa§10l» »oŽãZr‹šx2Oå¬À„Ï/_?ámë\ÿmß¼>+û#nÐq‰º^þHph¹\¯kXY—;•úЊêß ¥·Ÿq‡ 5Æ£^<rrd=dÝè™Å8èÎʦÂA÷g]Ÿ–7òøf8c*öÈx ±z¿m;¶\£‰køU­]ºB.ªÔªlJU˾jOJU;;ÿ­¡¾ù™½5cëòËxL[v,[εEüljϊ¼1ÉG6ŠÂúî4²ÞNþrœô¢)ÓÌ®>;ü;°›Ø2e?ò_ðÚ«¤v~Ö§§â÷}³>Ϭ'ÃYó}5âþôcR7>Æ!u=¢•ÄtÀù°\ƒP« „ÃlT ”\¼àøTx „•ê ÄPªm]ÏOrmÀvbt…µ\׆¾½hö8üžÄÈ[æÌ)1ò¡ÄÈÄÈ-_~œ(Òå=û:*>”¿á ˜x”ؤWDª
+Ig |Ó}K’ì‰
+u·ÞI* <Òƒ[´"¬ì¦€Ú…6k—%]
+®Z¼{w3)•rKD‘¤ñ±-Æfbª=„€ÕÔÑù¤\ʬdˆèñŒ\²Rilƒ±!<á­”¿Ù¤à]7¨ü¨*ÈðïXç1 ç‰_Äù€{»P¿&{êæ(ÌÈ?‘H§ ÕŠxXo˺‹Ç-b.Õç}aXÕ×9%Gø1]ÅþX!Œ©2ìQ_ÕB&”kúóñW˸½x+/“3÷
+ò²üÆ¢±*
+› œGî²ât6˜DÀê'C;ÞG¿ Ÿû‹Øæš,Xï-›ÃËλ>4OG ´yžúY’hG §ñ`GÚbᇉq…³ë«ç±WC“À¢Ìˆðb•I¨ý‰c?
+cÇü \5ž8ºM«ò¢D‹+L­O½
+i, :ïLÖ<ö;
+,EÑP "ŸT JÉŠ¼f½u£jÖëžo¥<®fOEþŠ<v‡ï¯”¨ù¾ô>\³Ú·5Ç;ëLê$€Çãà42§ U"aŽf[ˆíóÊï˜áE¸¥:F¥nÖ1Óã“Ìi…HD±å~œ…}1Ũ¥löÞûÔ<­p×ìå„å¿Ý ã›d=D™¿ˆŠA®,Ae%.Óå5FÚГt‚s÷Ín]V>ª™‘ôÚn_XÖ©ƒ»x’Hìj¨éx»B%ñ,cöæ´;ÛQ¡“¦®]Çy¥> fë‚ÔŠÉ ‹áw‚jï
+Ç £{@ ½Ù7{Jk­’ Ë@ ¸…ÛJ£7ÕÍ«ñ¢åºFš1 uhËCÃ6ÞAß–‡î³ÆØBi7ïðÁ%¶°y»âÂœ%ÆÐipgv"—s´yš¦{ß_=ûÌ€1=Bû3ŽÊzüÌUÿÝ!÷7›f”¸Þ<ÈßV›“È=à£íÆ|ô
+endstream endobj 800 0 obj <</Contents 801 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 801 0 obj <</Filter/FlateDecode/Length 3472>>stream
+H‰¤WÛrÛFý•y¶æ‚·„–mÙ”CÑ»ë­-†‚dnQ”BJvò÷{N7n¢.ÑfËej0—îžÓÝgº\šBþí¯ÌwïÎ su0ß-í¿ cÍòÒ4yQ”N64¦Œy,
+oªÆæÞÑ,¯MbÒåä„ÕNpim\™Gߘ¬.óÚz³¼0ÉÉòüTœ,ͯÆ7!‡ðª†–€ã®Îm4¶€p³oÍ?ÌÎü¸œZCÙ.PvÖ«ùöÐDÙÙè
+µñŸªwy©uIi‚å_oþ®yj“æs’Ú˜¸4³IÁyËQ™þkù7ü3L.Ëc=˜ì_´–†>PNY—d *¿œÊ·.oþ_=¡¨|BQ>§]®)r;¿üŠTƱ"[øé6-1¯Ü:ÙN.9y‡£ý»´J>~¤›qû þóæ+ÿ¶ôã>-“››I­O
+ Dƒñu•PàPFkÖ×},Þ‰¦oF>9Y±Él͹ Ù‹pE•ÿI µ†/CÖ”y™">¹ÂM°”@X¾ôj
+M)øUà x(¸ð4
+ ~ Š” ´>öA³˜§YôÉlŒÈ^7C«×Mg(&Ì–†·ŒBÞ¶—=¤ÂŽ¬šxÈÖ=ˆÛè!çŽG‡Èúàáôè¢ËSum"¦yEkc^ oŽÏÝEÄâ.±®™ŸýÄ,›ÿôCš•e2Ÿ¥ÖÊÌÝ,8~Ÿf¾IÎÒ¬Jfºo9¥'"£®7WŸ§—Ï ÷r,¨ÄG–žž¥´1¥a/1Ôk°ðp ý+:£×0“K~
+gÁKoÉ×à.†žúäš\ né·È’#9n§ÛŽœ54M,£V<ÔP2æ@‰X/¼¶Z'ùSF&ïŒà,ËK׶Cõ-ë•Íïù³OQÚ™RÜÓ ˆûP&ædǵ/üYaR¾Ö²§½àØ,ZùÚÞÈÊꎧ6ò!{ÍLÆ×·üݶ²ÜB¹f¢R=©âî‡Ù6Gm%_1E—”!s[#gE¶®îGpR,È5
+V‡4A j1ôÖ¸o·zÿµ–žÈÛý ¾Ç–û¤ý«éöÎ`ùœþ80k9·ÚÊ-1Oñ°ú¹Û2ÿI,ýaΓ'oFÓÜ
+“|!þ¤]†9V™S¼Î /%:t;è?ÊI:Ÿ”•©c"øp $Ã…îm8®T¸ ÖMrÃ¥¼:{ nRƒö#Á…àÄhê\i{‚{HbfCŽbJK¨]lÖÌÌØ22Ûè›ðñÖjÑQÜw‚ÍçDŸ8ĽX¤ÆCâ/z há
+˜~ò
+ajêÐdC’y›—T7m<7W÷{)œÑVDFWÑ÷æŠ/ŒwkÎrýBŠ~ö˜uÂrŒOt ߺd¬É8#´•Ò ò¯õû–c9*¡:SÝ9Þs¥÷òdq‡îÊj)‡øÿ’š@÷7·²‡ÇöR FäÒ-=]­ =‘·ŠtšÌim¶˜Ïôq—‚ ÂXlî6«­~ÚõÆë+´®K4¤ÑP£ÉaYbñÑUCÆ„ë
+5T=*T• ¥dWyüžÚºïuZª“]ýE0¼šÔ*ÚLz6“ÓNr„ÍU„mùÒ»6Ž›?×ÁvJÅlÏØ2¢fxà„µ¡®Ë«ó·§r‘ÊÅ}›ˆä¿|WM¯Ú0ü+>©B1$„ûP[!U‚§w©zH!T‘D1¼ßß™ñGòÚ
+ñ:k{=»;Ójuç=ÿ
+“ÙžƒBR˜+I9,ûéœÿþŠÑÛþÝ"–‘"‚¦¹l$
+Ò™oOSDç¢ìèB÷*C7ÓÕîÓ_TçBsöª̆¤PÚWw l+ȳ¥ö"™‚X§ n½Àà <fóëòüår—ÍU73Ežßàçšð¤ûc8˜T$GÍpðÉtw£0DD?è !PQÿe®9,(-è²ÉÎBTä/¨‰Rd •ÿF ›íi¥ô-FIi“Ö²kF,f]—žòfûÏ/Î|mº XéëÍl¯>Cqƒß;wg5œƒ 7³ ŸAÎŒEs9VÍP6‹j¾®*5΢ô•bû%ž ´óˆì nM¾nýЩL.0E3=6Ú
+.~aÚ>—båÀ:ÉUâç®݃&yôþªÐ)#ÓßCs;S~±ŒÑvØcÙ7  þñgv<$™µ=ÏŒór›¸ŸQR%Eš{úÆÞžéGÑÔ¹P6¹Þ€Dë£Gn%O& +¤ñQØ–&p|äê؉ ¨~ Í»3ÿm!AfäI z)¦Yæî;½ïˆ¸+ßBé4™J1&u¦¥sË„nÒ, ;œ”è.+Ü+Ú¶'¤Ó™)K·(w±|Ðä…-z½ ’ût8ÌX×kÆŸ¡¯³ šuK”Q’•Þ‘¼›†ÞÌ©åãˆæ?Ðþ+òé§ÄÞbå—¢aaiX™Ÿ4•Å¯ùŒ2²Ï¿
+endstream endobj 802 0 obj <</Contents 803 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 803 0 obj <</Filter/FlateDecode/Length 3428>>stream
+H‰¤WÙrÛFý•~¦zÁ6o6Ãñ(ËI+årRS4IÈP¤Ì%.ÿ}ιM°¤¤fJ%²Ù}û.ç®ýz¥ùÛߪÞ,u{P?¬ô¥ÕêF•q’¤FJ•fq–$V奎­I2µºW
+W¿É ío$¸Á£J™4Îl©¢" mÕêZóÕòL.ÌWꋲ¥‹Á</ Åáº)b)€¹Ú×êgµU¯WcmÈÛ8òŽ:1_«èY¶:šÄëøÉË]-!"Ô&H•Óü¶êÊoÄ¡\œ¨_‚Pg #$Ü×\¥á¯«Ÿ¨ð%TN‰³¢WÙ¾¨-}  ÜžhD- ž:æ¯M\þ)"6BPú„ ÄýŽd™2‰õþôäyLéÄmBØ Ròò¯89œœçäq>¶oÂ"¸¸ ›a½ÿYõ;¿kúq¦Á‹f·U¡¶Àu÷µÀ±Ðmê5wµ’ 1ƒû[=ÍTOQÓy5Ë,ͼšô\¯if`u§é
+blp–A­ö¡N‚]U_Ÿð{FÐVqy³ æ‡ªvÛ-i«c³ÃÍ4à/µÛ75ÇÐõµ"eFEp‹=îÈ`ÃM³å^Œ«ÙJkh…õVxŒKoFYäšfh$ƒËK±CÖƒ!V3°ZCŠØe±ìjyªªúp¸9mTX–:xÿPï×88†Q
+½Š€˜S´$E"B’87eî…pmµ2‰4ÊI²6Á»3ï
+Õâ’¸ýªíF"XC»B«È&qáT¤ó8Ï\6C€ýù½ºSË΋¶÷¢Î4•zJ›•¬tÔÇ á=;oòÇ8D$%Ì Š üf*éY!(Ž‰¡LjO­lŽ°v*+s„–VÕ½ìó3Êlì
+µuL8›qBkE-ëxͶj1áF™2¯¶-m\œæ±qD5%ˆQ{Þßõ§ÓKePé?øøYJ’A˜úøÁ`Q$ˆ>‹ó0/‚Y—¡BÕ{µÒo àY¯F¢ÁL+QRO«ÐŸyË3yÎ[—#ÄaQ<í/2kýåc~pƒap†!Î|ÓÎýÕ±/Æc€Gæò8)Fò#í
+ì'ß.~$ÝwŹ±[æøÀ9ï§ò:9jão ã¥×CͼlólöǤ·
+Aä://CcƒÅ*I
+_Óáj&{ê-?çüøZB’(’,d÷2Œ¬ >̇ÃU+È’¬ Ò’<Ž™üb4<[µ<§‰Þ/†Dž#ãz—è4¡&(Å¥¸•NÁ`˜g÷8uÈ€´=÷o‘= 7‹;m{oÌq,<Yj¸˜àÏ™@-¨¶XsÝ‚M„Q¶l\Áû0Í‚sqî麶“L¶LVŸDÀ´¦o5ÌÉøg¥åFš¢” ƒI2?ÿlnO{¶O´t•AE riðµ ó`6˜WXÁ6i‰X£ïzòN
+“±Ü‰æWF.êSʵûUñ¢0Û×_NÜãÆžÚÕ×±:ó¼8V•«ªµ¸—Û4v¤6"õ@¹G×tcœ•dIN:Åäù# ðÖfC€ ~ËIë(Ëf}¬Õ‘Çĉ’9E^ ¼¯ ÙÚ€ýAâIÖk™ã2a¤d_¶es ¿Na»Y«Ïüý-ÔôhÍ+×~Ž‚²ºW[ËŒŽç KDF#Ò·ärKs×[Ôäw5ãçŒ
+ÈjÉ~;ÿ¸DeÌrí‚Ëbã|¹’Ÿ
+ñ¢9‘"Ñk2…õ;uAwò“';Š<á',°°h tÑç}ÔjÛ!M•—o–çœS³Ö9bZÙÙº=/óžéiJæ]™‚ùs-Þ†Ëö2B?ìhûµ({Ç4ɚͤMܯ¡f(#Âw‚SdW‚ b®–Ì(
+úŽŸûû5¿ÌOUr3Øfw:Q¥XúÛôY¦ûW™yùU–&)ãW™e½ú¼ÝA;¾É
+Äín{Ý„^QýÓ=gVϽh]á8ó´"Ï}P©õ¿åcÓTëϲ¨c©ÍÓ—§Èèañ¦Qºv(z$Ε£¹æL.«SLwj±¾nvj¶~Xn6r&³z·>VwãÒ“whfåËh: i©ËŠ5"E½©·hz›¾uL‘K{äÜKÈÙ2Ãû¤cÏÆ…†¥·“GœGQp=°o+YÞHeðäÞrî6H9&üfQ }"õ¨”•¶hæØ5ŸÔ7Ÿ‘ ¨™Â­':‡v æ²HwDþeé±ò¡Ð)*¾ëÅ1!¿ágoAå£fá°-M£Í9{µ—N1ž™ïzö
+Á¶ã þKòj( 7R½IxûÅu_eA?áwìí¼ý¼XÕ=C¤) i¶+Ô92bõ]ܼäF.%ˆc…żj¬Ý YSûæ©žÛÐ]Ùw¹KÛ9 IÒ ÅÝn9¥!Q²€ÿÌ:·Ü‹Å€ï*Ïϲ¯vúåü´Î’~œŸFšö©ªêÃSvX–:xÏUº¬
+LÕoøÿI !·1²E%Z*_lËGOC]€I!LLò"ဖà9hùÛßBÛ”ÏA›äxËA©‚ÂtÉ·#Þ”7E{ ¡Þb@3 0jË»÷oxø~€Â¼t,\Qû“ èÔ*Ô;¯–Ñ6¦âpÞš‘õ’;½Úó{¼T©·¼Uùƒò“¾àƒ!êZ§<_ᑬ{¾º“†Î3¨'îq#÷,ÎgO¹EWA~lW°Œ ˜Ê`b­éqRû'èrÅuý=â³!³vè;¹Ù^o÷…q"ÒîÀa“gœgW%EÛúSË›¸OðšÂÔ7ë¢|¥RCSPš¢õ6W?ž±|¿gs›½ºx%ÙùúìßcÎ0‡®xú“¢bå{‡\ö$«Ù¿Ôb~ùOæ“ m”p³)2˜ À‰0Ëú¸™¨?$ÞJ{f¥û̽Åù¼WKoÚ@ü+>ÚRŒØõ£¦·”¦j¥QHQONHRV0‡þûÎÌzm ¸‰T¥Ìzwý=v¿1X¥a¡MtÓš‚Ï÷-úÔªÌÛªwžãÖµìÍUß¿({\åT;m‘§Rðš 'úJ™ákKÊ•³óâ@u«žZpÞs*Ï7\EûÎ
+„ÖË
+»¸YN+¬¶ŠPÉÌÚâ” Qz YébOOåNžL©1ÀAkmûª¬A]ÛM©HN=uÎEsÄš{æ Õ`
+j'TÞö^2öœLr¶‹× ”cžç¬@–kÎ\úã¶ûR¹«ùÉ•nlòð;®_Íw¡ßÍpoã( uÙÊ”n\vO‘:m"}Er_*ºG¥U+Š¾]M] ƒc¯}´“÷êéZ.IÙñ5ÍÆlÛå»?ÃÆ¢øÜÛ‡«jó\Ó7XÄâ ºClS"T郅—uÖ©†š6d›« w´|uŽÖgü¾¡.føÇùÇ
+endstream endobj 804 0 obj <</Contents 805 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 805 0 obj <</Filter/FlateDecode/Length 1301>>stream
+H‰œVÛnÜ6ý•y$ˆ!)Qûæ$®áݺ^¡}p‚BÖÒ¶Ú]ÉÝ•ã|~g†’V¾ÔA Ã/âœ3gÎPþPæŸý-¼?[k¸=ÀûÊü¡Á@u^ií,¿àÁå*×:…•ZCµ²ú“O˜xBã ÚjÀ:•§’Ò©Ò¤Pm@œVës>pZÁßúLað¢D” k«
+‹ û
+›¯
+¬¡±²2S%$@žºyV©ãÍšLCŒêPŸÅ4ÜR·cçs©Ð®˜‹) /~‡C}àLJ®Á
+uXµOá¦íZš@Ým0§nÝ “bÊ‚ðX@£\jË·M’Û¯²²2Ò 8 ]Ø×[¾ê7({Ë9~&Ê9¯õúŒ«ß°ëk®ÅAf"€§¡Â
+
+Ãa·ìe‚{‡Ð‘?€I¢eîp éc…É`Xæé\5…¸!›_’$'ÔO+\´qx!J‰æ;|‰»;´dõ-…Æ¥”§ 9ŸÙ5³&ö¸-a39#j
+È)R®Ûš3
+óüÖ‹¯ãúž¥Åúò ”×±ðK; ·ê¦é÷›z¬ÀÐOõ¡è\ç ­¹§–ˆôçžjÞƒ£ÀSè˜Å%Ý
+X‰Ó%yEŸ€ò‹¢1Lÿ‹ü#À
+endstream endobj 806 0 obj <</Contents 807 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 807 0 obj <</Filter/FlateDecode/Length 3140>>stream
+H‰¤WiÛÈý+ýD+š}ñð·±3q¬¯GI¬ƒ€#qf˜¥ÉYQcgþ}^UñÒH”/Z]ÝUݯŽ~õb­bþìnÕ³WW±ºíÔ³µþO¬´Zߨ<ŠcoxA®|%qlUšëÈš8Që*Páú¿¼CËŽ;H´QÆG‰ÍÕ*óQ¦­ZoUp¹¾zÍ.×êesAyšÁŠÃv“E:Q:†rµ+Õ?U£^¬ç§!ÝÆ‘îÕ`æóáEeFË»ë+˜µ ¼rš~­ú‡LD¡\«A¨“À„+Ä4¯iäïÿJþGöÆDI6Ùž=-ô@ÞýätÁªDôû¹~m¢ü‹ˆØô„!ÂPì>„3[&#=ƒß‡!ÑñÔŽ“ù6“•4ÿ'ûÉÉé‘“çq8ùؾ
+³àÝ;r3nïØV}¢ß’ü¸ }ÐÑ jj
+¹ÙÀǪ¬ÉQ¢<(ifÏ»;xPU¼B&îHK©úµPSv‚®Š[,+Õ¶¤?›]u +¸.k1õ94þʘ®f\drò1JÚoA(†vOi>³ ~§ƒmGÃ$"ç4˜Þ’ƒŠ}+ éT?«–ÍCZŒæt>ÂÙ;Î[?˜¬U»S›–®º¥;V¼=›m7Ãî8§í¨Àœ=ýîb³iw[†ê–áj§{:;¦žæ˜Y9*Z©ZéH;/*öahƒëš²F9Ä‹›…E<ËŒGéËu{µ2‘¥$ek@‘2z×áÊ5%!t>WI Þ„+ƒ¨+Uü}K_ª¥ï^Sð>þÚ!ÊOŒvUìIJ‘ðbÞÜÁŒzàQ¹eE¢ù¿2 âÞzÛBïÂÅ;;²ìúŒä”òG åá•'‘s*q¹¤•w_Qºu6ÕA…cUH–Ä¥QœÍ’% ®¯w¸ Ü¼>{œ´×Ñì
+ú‘çMˆ$-š-¶GVñ!๡âB×Ý5½¦µìâÿjT<^.Z®KJFˆ7õ› ŠßªAAÇSpdžqÜÃÚnˈÄc*N(»SêÅÖqqpÄÔĽ¤‡N87ȉßÚ¿Qùýf¸iž ´mX
+âi2 >óx’ÀÇ~ jƽˆ³3YlîB´&¯‰‡6ÂÉ2á[;¦Ñà¿qÏ߉‚aé%Ów IȈ¦÷jØ&ùŠxâ²û9ãËFcéi[¬rÑ Ÿqh\0’ôaã#í +ÉßOq[¨6»žjoŠº¼vh]NœŒ\ÎSðeø«®z
+ºo…‰î£éùeGL4>²Ø§’Ænë©Ua¢›Í-…Á¦è¸g£:GíÉ}KÃŽƒH{ù\hí¾Î†ôT9¤ó€E“vâÿ†T)ÿœ]FDÝQ¯š[ÕÞðZ”=÷`T&ª¢üW}fÆâƒÿµi\z¹«XN‚ ãF6ì`CÉOá*#½(¦Ü6sþí£D¹ ½Nü£ôÛK¨»,…–¯§ß1ñâñßË¿c¡Äsã‡üÛ¡
+f~ˆ~“¦ã‹ž§ßYö£W-ËWLt”G4A§(ôÐ¥NŸtÃ<»·?ýó[ªÄßÊLÒy`‘÷Ì$ø`ix‰O’—¼%æúÓ¿ùyƒ«ýŒ#47í.DN}dR<Б }áM÷÷²µ'!åÿBã‚ûºÚT{aOÞí/kŽ±î¥©? ÂOhÞ’x@sAüÍÝÌ
+O€³°m$Wžúúà·n ÚŒßn—Êeºå(½ÏWí×!lHÖÌRðBPÕ¥p•v ¸q”<‰ñ â¥,= –iä”z™wbü¢b•#‚7:
+Ü‚½¹¿àPÒ”À¼²S-·/ÍéŠ  æxÓ:R¯yù<k›V¦
+NðZ4£zîÛYkÈNçV춙ùÞL‹ õ, ¹æ¶º¹)wôÒ–Í^btׇ¶DâÁ±9¤‹ú¡œŠ:®E—&}ãn†Ö,?f©ogňFDãäÅ`ƒ³P,ùÁ@!× Ag¸SZAî¬NôwR&QÏ7º°[ú»Aj]vøâ¼°û”øû[<‡–͸3-ž[¼ä\‹gqådÌiñ Z<Ë~yœ)Àó¹¾jäÌØÈÅg9›˜‘z©GáDûPµ?ü/¨¡@Ä1é&òý@QÉCRê~2m‘e{i9ö4'š
+iQ<ZÍ}@°U´zÒrM#”m´ t»M{_‰nÌúYlõ'VŠw žá]Ç[AçC¿…¥Ý“$â­63HGEÈô9 VÙ„š®É1<àèÊ]WÁ6nˆHŸä Ôö!ó ÙÓ×&¤—$t2óxÒS=/ï}vÆSšjûÜSÈfø™¼áÖ‘Ú!Ï '÷˜÷}ꤥ¶âN³ì¨V¤ä˜ uU:àÔêõq‡«é'kŠ,=êq WЖ;:ip;%¶H)-v§2%-oÅk;‰¨”¢ÀsÏÔ©j¥Ò4Œé+"Ûqdhô3TE6Tq-|o°Ù‚ÕÕetRŽí
+r†àWrLT‰iÚº7H¹æ
+¦>´f¼Û> %¡ð‹õB AŠŽÛ¾Óý1qÍfòíÔÉôÍÈÔˤ²Æ!v9„VN&ôŸŽ: s¶{ÃÀ~÷îØAî­6R´Ê¬’£Š„œŠþ•=æcß]eùóÃ\mÚª¢L| £E‘Ý€‹¨h¶H¶TÕ¯ºk½Ê7Öhä ÀP7cο9cícê&‰n'eImÈâðÞ'ôØðÌš%!+ýYZHY¬¹;¼-@]Zø„(ôððýh¢¯u'z.îÈö¡‚ âï†S¸ÉÊ)¶åº@OóÚ×ÖòŠÑÆ‘ekà‡0‹cZ„n®ØÊàG€
+endstream endobj 808 0 obj <</Contents 809 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 809 0 obj <</Filter/FlateDecode/Length 4263>>stream
+H‰Ô—koÛȆÿÊ|$ ˆ™;‡EÀΦ©‹\œHÝ¢HŠB+ÓŽ›rH¹Ûüûž3Ã!G"åMÚE
+%¹e«;–±|õÅ¿!ÂÞ@iä)¬ªØ™ ÅVW,{¹Z^ø^®ØW¦*]ÀृY4¼.]!,gmÍþÊv¾JWƒcKc/â4¿.1 Ù¯Qò°ÆaÞÕ¦È…Ì Ó?û9üPä"ÓgŸ²\ØLæ ‘qü]à7“ÿ}õg\ð{X²‘²°nX²ztµ¸ÐÃôo­.[ôÆ7éøBÕÉQåÌDff"®?åÉ\²â…HŽß|ÇDaŒã‰/Ó=6ã,eõ”K6ã%—“KN9ïX½Ê]vy‰× »×þþû'~Öxmn²¿lw Ë…Êàpu¼}Î>€ìŸ»­×økW3‰L¯ßVE'fy!a/ÖÀ–NmEø­ø¨ÉNüx¸ kvrñòÙ«¼ÌÚÝÃ={»¾«Ó¥‰¸„“+˜ÜXàhÎŒ%÷%¬+ÆMjXº{š)çÁQødo—x uW7›ƒmIO»ØVà±mI­¼µú)dYè“û
+—w8‘æx¢ëæ¦N'+bþûñ<¶Å-ÞÌ0ÇXzêžF[ÉiìôÎÐÈöà ‘}Ë•Ëîk¶n®Øxw‡“„±Ýd;ŠW…ó4‰“ôc·à8]û¿á{³Á¿u^eðՒ§tèò)[µÓEøa&\Öwëf¿Í…Î6¹3?¦šŽ ˜ÛéÆ®ênƒ¤oïÃÀ»ÿ&[ÒJ¦4jñ”P"'Ó‡a&[zÑn÷ÛÍúv‹7'áæ«éR¥ü4Ã
+“¿6,œJ‡ð^ùÇA
+N®²9Îq¯Â¥ò¾LjÚd™~•²RûÈ 4[úe‡—>fU! Å„ºÊ Ö¯DX*÷+ù[.Êìe®³%€Æa¢…¨¸…Ø÷¥ÞäðÃ_?&Ï@ÏÀÕË
+*ªxÒƒÉF|9âCɈ¡E|9âCÉBøòW+%‚U§¢×PBnØ)ÀŒb#`ÎÎ;LDlµcç>1±¥ÿØ?Ü{˜ÞµgŠ$ÓjzN0Fõîj{í³ĵ×Û«Ï„‡„G?®¿žv(¹°œG~ß
+²ä#‹²pŽŽ€„¦dD˜Ð"„¦ä€0¡F„ Ù7DðSÉKÈ@Ðqï©Üo‡6bZ¹ù‘'¨²äÀÓógxIçpI]à~Ù;l.ò$ÃÍ&O7à5;—­Vtå!»
+Ù½Ø×è‘;€"c/»Ãè+$‘¯J!¸êJ•@9zIè®Ûïü{ÞxÕ°lξ_ý üÆ×õ¿šÝWyíxüùX–%kCXˆËÓåÈ¿±Ryâ-ôt¸tÍIÐme½Ð)¹”«ŠÔzÐ)¹”=è”ÚƒNÉ_™U$™u¦p CÙxº“jà|«ýxÈžsø@äüù·m·÷pãÝ"àö4à¡àjª²Ä4żo† ½¯ò9„ü¸vô€ƒ„Q†ýæ»C´‹!70¢_Aó„»ß=Üo››1ÙC\jo‘w[¯;ïŽö”ý~|+¦šø0ª[ßa‚Â"l|P©ñÁÞx,­ñIhìT¶¾Å¯Ûý7tc1&·¡ü [s®r¼•ðmú­½<{ñ'†}¢Í¾ä‹2óß6û´Y}&,mC£á£'V#â.œW£ =8/E Ϋф 8/FÿÍ«ÓJ{¬ƒ„˜
+6FVƒ[Ýè-È"çìâ'¬°û‚ÄÊ,–ÖîTe}
+h+keOVÖÒã¼Â¯Ÿ¡Ô—Rš@"Ïê„$n†ŠÏ×1¦0¦<`=ìŠÝ!FXØu÷>c4»±3ÁQV¿ƒwÍ­ï4Ø/õ±­ãÑzå¾­»z0Öžy?øïÉdå8D•ÌV³›Ó8¸9ñ‹ß¤!C8]…ëÔ
+B‹¶ äè JÆ Ôè Bž±†š¯v¢+L¥0 xW )Þž-‡’#Ô'Aoéã[³ùÜîÙÝÚWò[¼ó]“ܺFÖ‹æ*Ìõ~ç¯>;DâÞ‚²P¼ü±‚?$AQTZ»Þ|ÒMͧ
+¬“„Ãea TB`ÂÀ7R¹Ið…Sç4i¦Èxø] ¬ RÒ(¹'”4JëI£äž4Rö¤QjO%OIz(p¦á€›…€'‚ðåº]ûººÞ×-ÒÔùØ»¼RÖôÄaa‹Rœ`A‹!‹ØfÊÎÍæãÚÃUÿïúˆ¼ö?Þ&ñq,„ÆPlØM½©½EBÆ*]Òz ÇGïá îð$ÂA”8ïåãìE¯w-ƒì°\H%ÆP Ï~Ê~Ùí?³kÜÏóAûHŒ>0ý\Ò
+¯P~²us•øV˜£¶$˜=[¾Z¾ý”¡D«a“Ûáh}[Õܤ…R5<ö~‡lY@[r25ÀíͦØIVC ,c# qP–K”Ü–”Á°”Ö–’{Ã’²7,¥ö†¥ä¯ÁƒL[ìs”CÅéžÅ––¤¥µuøe´ô_ººe—·ÞÒMýh«ÒÇ zlã`qì‹x¿[ï·}-?4
+ÕÅ \å*[ûèÒaLËEÚšù6ôcv-k×íðéÍv{hd·»f|ÿ¿’´ ]òitAôutÎV†ûXF+BŽtQ2ÒEh‘.BŽtQr ‹P#]„<¬ª)K éßÜ—KoÛFFÿ
+—Tœáð•ÖQ-;E–¬Ì,ÒQ$ù÷½wäPägËvS´]$–}4#qæÜ—çÕªÞ=r}¤>N†ëº¯Zýôpý½õ T5·í#·z<oä¾6Ç%Ízóêšö¢fO‰“š½D•[XYDe†ÓÀN„YÀœ8
+$ש8Ò4'«“ؾ?8ÎfJQ8ÁdÆשžP8cím'ô튡Â
+ìFØ( ¨Sà¯A–PNdªô Yªwü q–Çžåe¯§¹®7d×ÓŒ§€ÎõU½n›[}«zx8·ífi=¿O|–é¡Ìgø³]iìêúoííæ •d~Ÿ¥œR÷õ–~U^&µvÏ£‚Ž’v!åÛF†DïI>)~
+ÛÃæ¹v¬^ÿ«(:Ô :vuÅ#PÂõB„ï¼±It}î·jËÙœì÷ûàÄìêOTëÝf¿á·®)݇Õ=¿Üì¿s ‡2i(Í…¾ò"¢.•~W©} ó³÷ô4è_à"OŽ"/SQÛ)Ýeè¿+¶zxÓÔÅ vÓÈEÝ4uA¨‰¹ièBnšN ­¸6\âÊ!T”ù#Ïr± téøN"=ÔÞEõ`д^4_ÚÝ–Þ\ñ‹°åŒÝô·49½µr¼hŠOš€ø\9ï ‰b©Ћ"ì4B˜=̉°3 a£ Î%€Ç2—I›D™ÐÓz6-ª}|â2ÚrV¹?°YÛz2% 3Èeðú¡Ýí7z
+ûçZ7äÀÎ'„Ù'ÀœO
+z”g´WðÎî÷,B6Ôm?ÒðWWg?÷UïxöÔZ-«]µÍ©¯ç9‘6>Uüêþ ÿð¶ùÑ^%²óJ>ãUªDO\öȧð3‹>Sáj6ço:§.J†›»¦ÝÕý¨ÑéF7 p1Ì”7x z=…È¢¢ð–ZÁZn|…t4åÞZk*XË´èv.žª¼µä1ZX–üKéHo•,M2=¼¹¥<9úÇdB
+endstream endobj 810 0 obj <</Contents 811 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 811 0 obj <</Filter/FlateDecode/Length 2881>>stream
+H‰´WoÛÈý*û'Y@¼ýM²(ØŽ‘ªhlÇR®(rEAÛ´£Â‰¾8ß¾3³»$Er­ÞŠ
+¶H…L ÓÿWìg÷"KE¢3Î~IRa™.DÂñ½À'“þký7 ø„l¤ÌlÑ…¬ÞŒ=L y¢K>!n}3\_Ȭ<š•Ïldf6âú—t°—,y&é7¿c#·Æx#Á‹á™
+)>Ùh;g‚ãta±(Ž`šN2M:™ KÅ{¼Ðze7j°Žpf÷ÙàÌ¡ÍžFƶi}$ÝþÏ»zO½m‹Ã£ÍúdPñ)Z`¯±Ä†¨WÐôs(ø2n™ñ^ ä×z¦:³Õ ²B7\eæ°ãEí¾åÅí€Ú¨Ñ7½¨Ýw½¸Ú^Ôìû^Ô>ÓøŠ³=Ϫ܃Ì÷¼Ë4Oîï›
+±sÇ®ONÇÅsU®vÕS*xR·8€-( øñÿœÂª›Ââè.5æäùùqƒšå6]¨¤ºÁ—“6>PUVèw}Oú’8jÃÉ€T½#ïè)zz®–WkÜì’U-[¾,ú¯ÅHÈPóO®VYßgi¡2mÔocBCó8+¸¦îGï5bí€óÖÀˆˆù0o
+l˜·.D¬Ž óÆÀƒyë7†­™R¬´™o1ol¡»†«'dÁåP_›ÈÔسuÃNkv]?ÖÈ—j_ßåÓœ–P²Û ùûfß"¿Ø¸ƒY·¢¼D–É?H2Ã\#ݾãÂâ€b(lµÉ2¶pì8*±GÉ(*M!û~&é“!,cf˨€³ydÆÌšQ3a3fõàŒ™éþ¯LÍÌBNJLÁ1x¾¥_i=N®ñîzùõ Öèj`ú&*Eß U| «²‚š%1À]%^qæKË–žð5H©=þ˜`—÷âVªºäv°E é÷1’k›‘|™¹5þ…ÆUõºmDè= ~×ë“dà‚Ö`=5¤‚TÀ‚“3Èñ_S\Fä= 䘈ˆ7z³±^G¯h1s`AÌŒ,ˆØ "æÀ‚˜Ù± b ,ˆ˜•Êb0&±Êå€EÐHXÃaä
+Ê“å{*¾€hà=wÕù2fª¬;h ‚ıfHœ“™”ÊzÅalLqHêzÝ­HJi’½WHUÄM8£TNp“¥µ?Ð'O^
+:­{é~V½ìáÚç:ÏÇ´| ÿ"Ït™!€T
+q†Š}òüüHCìºNRÝàËÇá4½¶ÍÝØ-Tީûn|ò„Ý7»ÁL“$±GVË«5nvɪ–-_£ Èý‡ÉÕ*ëTi¸X•Æ± ÀU¿QZâö#<Çœ[Ðßq + ¥÷5×îsV!,Zzç€óˆ·°$σÙèL·4ˆx£¹è/j7²$æZ–ôÆ›! 9ð Š8+R½³Â  ó‹e 0Ó.?COǾ˜cAÏݶÏÀ93â=gî=uõ˜Xã«š%¾JÛ+å ¾¾AÿÎ1"͵Rî§Ò›·Ï^Fr1ÙЭˆ;r Ã=tˆëjûP³›æ…”æ]÷„
+—ûôF‡»‘ïh·î|¸º²š
+VÇŽh†ãìâÖ˜œéüõù±ÚVm
+­nÓl‡gÒ
+øD#ä/äû©zE³mšûëÔ$'§{êÑ”wi:ý}o¨wT¯w¶MÆš{ºªø%ýjðƒƒ"<aVÀßÏ`Çœ±Ÿ«Ç÷n³§ÿ$°ª¿î@QúÌò˜fÝ™U ÿñ>7³F´ö5Ÿöˆ³Ô´U°Êô˜Ô;â<cüÝEÂ"u,*D7;ä(Êסç~-ƒà 5/a¶ëo ad™\Ÿœ²“Õ
+Þ,?\|<¿ÀÑ»f×ç««Ë‹ÕyZ ®9zܲèÉ¡´p•¢3`¾º­¡ÑònkØR%_aÍÍd5F “§TŠ¤ÞƒðLðeõ
+÷g‰þ”`—pBE$ùôù|åß/˜ZN:Ê€ŽzŒÅèeáØä’• œ ª­@»{¬’N·Æ{””r;Œ¬Æ˜oñO»iðPÛ?#4  ü𬯿C×f&7®EüW1À‚–N ÜâMZªà Š.?P è!üi‚(³ÀéHb¢.¨V·€”<ÁÀˆÈú5= ‰9@&g‚ /}I©‰E©E
+¹ ‚)?%Õ
+$Œs#`J°6=Á:S“KÀÚÀE(1tæR‰
+Ì©HM…§!¢(0
+endstream endobj 812 0 obj <</Contents 813 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1505 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 813 0 obj <</Filter/FlateDecode/Length 4903>>stream
+H‰¼—koãÖ†ÿÊùH÷Ü ìµ±q±Ûllu‹`SŠD;
+,Éå¦ûï;s.$%r$Ç^A$®_qÎež¹]L÷ÿmïÙ»·œÝ7ìÝTü›3Á¦w¬*87Òÿ bÆ–sÅ\%
+%¹eÓËX>ýÝ¿!ÂÞ@iΤ)¬ªØ¤4E)›.Xv5½½ö/\MÙS•.À¸+a ¯Ë²– ÆÙ¶fÿdkv1íïmK¶'i™?ö·LÆ=Jöø5¬;½…%r!3ôÀož„?¹ÈtÁÙ/Y.l&ó‰È8þ]à“Éÿ5ýnø'ز‘²°e»eut·¸Ñý ôoì.›Ä öMß¾EuòF”YÈŒ,Äõ/yo-YñBô®ß¼b¡`ãp!Á«þ™
+žÛ_­ îïf¶¾¯ûk•ª‡¯8Ž7pì8~Áv·ÇDzÊM]LÉaâôGPd;
+‘}ËU™=Öl¶^°Îuû‹Ûåà8Jªè#§d{ ᦳ;ÿž×sü¬ó*k×€£BýpÚ½ä¨v¸ ofpÀÛz5[ï–¹ÐÙ¼!Oæmª›Ïsx°EÝÌôåc0¼YãgïH~Þ;‘xI‘ƒÕ½•C¿fï·ËÝr>{X¢ã$8®hºR…Õo 38F¦¶èå—°oy+óç¢Ìšfy¿®i ‰ëB“ÆúûÎ\—ì¹JkÌÎq¨¦ Ã?üåî@4R#¦llé¹=ú²®ŠJF"~ïUaµ/Í„,!‘T6ciróYCΧUÃ=4¤MÈÑQ²s”VmV¢XéSwác$¹ìú¨†ªÝ4³ûšM±iû–C’‚üä='T!«ñ]øŸƒ\\õØ渢-ªÊáfb“Úv´½mú]J°Ê+|€.µóÛ/}ͪBZ ]#4,îD¥’i'?çÂeW¹În5 M¤$¿ßëyØáë‡ðÁUj=ÂW”ôSé¦Û8ë"äD!'‚(9DÈ‘ BMQr$ˆŸÌÁ° 9ô“ÜHbmÅ›§*HA¦ÀˆMÝœ_4XØ­/M;èÅ~ܲOùÄe›Åò}¼ÿe^]àÓñêQ¶¼/QÒþqÙìêŽZÙ;ŒhËCÞbûcËmŸp„Ûž‚ÛÛƒ–C*;à|eíÝ€óÄ®÷Æ2=±x÷ë TpÄþ
+~%¤ z}?T9…
+!§P¡ä*„C…PS¨Pr B6ËgŽ‡ŠÂ-·ÅàlŠùn;[7›íÎç¾³oÐm1žCÏ `$¯2ü¿tìAp·Ž…Ÿ¿©‘m‡¦È “@ø< ™×ig#eÜaæµZÁðIã$•ï ©ÌKÈ 'BN8Qrĉ#N„šp¢äˆ!àÔ¥“#4Á£dGÓõ3 @å*¦#äª#ɘ’R¦8Ï-LlLóå ¿vP?—›u—4FÑ
+òÿÅ–|[{7š-.}‡—|`õ>[„œØ"äÄ%G¶9²E¨‰-JŽlòSÀ…™Jø ^ê½±ímÂÏTj¿Ëìr¶›±/›¬[Ï+ßw6][ûÄ„ö{M{1'æC>Þô+;ÈRÁúi¬‘1‚0e+¢)^FS¯ç™·óš=:¯UZy€e)Í
+K·¥éòxô£Þ˜’#À”&å
+=g×8«ú ›y
+OnHTADàIÈ OBNxRrÄ“#ž„šð¤äˆ'!4‡ŒS*áKî:Jï
+WNÛxí´ƒFøÁêoœvДožvTÛ3ª£ÓŽàzˆ´ŽI¢uôHšèx¥iVWÚMȉhBNDSr$š#Ñ„šˆ¦äH4!ÑIrpzárdyŠèPàB®-‡H»•³p¨6×Þä&;ÏE™]ÀÐ_’3ù‚]ï|û·Â?ŸŽÛe­í
+Iœ´â¦q’CÑ“b3©[²õ4ÿ¾3»³\~è¥Ù‡¦‰ö«]’;Ï̼3ÊûM³u•zÅÉ¿KnàU,î¦q€ðñÞµI¾m¸¬÷÷îHâRY»°œñþ$3fžèâß'¡áÅ\à¡¥
+G: UpÔû©ä*@©‚dI Kª
+’%U€üàáOò,s©Tå½,ÏÀ9N¦Ì´…š½øù»„Ç=õ†ýê®ëÉý³Ê³œj{Ü.ƒ'xªíÉ4_<Õöd­í±“¶§Îu¥‹Q­§Hê €3®$Ñäy` €
+ÔÀ+’…W y±p[S³!è`˸({7v]lmZ—lZy¤$¼éSÉõ†>3¹^]Ñ—íybßÙ…4¿ÙõS:øfZ^.,îèFÓƒu
+È`zCr
+æëÛê2iç­§`fÂxÈÄÂñP;Ì"ey)”™bLw>QÎ(fU†Û/e@”!Y(²PÔ@’…2 ŸH™®-mÇýÊSöù(s®ëgƒ+\tÊFC¸4•…§ºÀ…d É”=\Höp!Uà‚²‡ É´Þ=yiè4”ÔÜF'†ßD‹
+èmT­h«Pñ½·!Vß,ùëæ¶á¯ë„yø´N>º?w{Fâ>y¿™®ÿD…o_©…n'È‹õõÍWBM¥ßg…³RÛûsTˆGVêg]Ç>ñ_t1ª®©A¨•s¬pD²@dÊj${¨‘*PCÙCdq1Š~Å­OeÊýúˆQÑÆ0ìb-TI7Ë£éx˜7K‚ú:q0ï¸Fíï§)Žæ"Ëñ mÖñMï©*oènI—gC€8ÏDV':€¡ßÉ91=Æ<¿ëÉBG9V÷CÍïT÷£Êja3œtÊìsûArH ‡Ä@²$%1€É’@>Õý¨¼ZÔöè~Z§ØŸ¬ÝáüÑ>¨—!'ù¡á]ŸÍ13ÆâT!ðl@ªà¨÷SÈ!U€RÉ’*@–TjH$Kª
+–HõXÕc DÁ©K Š—µzQ‘Zr™9êde,é j{ÄÈŽ˜ÊÞÖÊÖ‹ªò{—ZìÂÓæ£<â¶4‰tò
+Otò:‹å¢ÖD¥jX\*‚µ¬Ú Ò`»TKYm—VÂÎR,5”ôĸ­àÖ–¶»6çŸv*[À¥y®¨¶KMÿ‘%5ÀZV ÝY«»‡,‰ƒÖŽÕ¸ô_
+endstream endobj 814 0 obj <</Contents 815 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1565 0 R/T1_3 1548 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 815 0 obj <</Filter/FlateDecode/Length 4496>>stream
+H‰ÜWkoÛÊý+û‘, ^( ؉nšâæqm%E‘cÓ[[rô¸Mþ}gfw¹¤Ä•òhû¡bI<ÜÙ™sfg.¬¤ë;öÓ³«’ÝmØO þ÷’q¶¸euQ–ZÐ 5Ó¦0e)™­y!EiØâe,_üƒVp·¢„]3¡ #k6«tQqÉ7,›/®žÓ‚ù‚}b²Vln+°¢`¹¨
+n/as¶nÙ_Ø’],†ÞàÞBáÞ³`æ_cÝ–ÞGQ:ß9»‹+0‘s‘i¦8~JöÖ=(rž©¢dﳜ›Lä3ž•øœã7ÿmñgtø7pY Q˜ªwYõVïy—Í|@Üþz¸¿†¿ßjBO˜(‡&dYØu[ÔâTÌ¥=´C»ìÛQïó%Q—äW‡·Ç¾ÎG'^F+¶þéÈ"{À¢!Ñ#‰ä³¼Ê^¿FAD²ßñ³E¢¬smðK·Z²œËŒ ÷Ò«d—
+eKÐðƒþ€ÿ·{ ª°f
+B¥Nía|þÏÎ.Ï/Øó§ÄΡ”äÎ $õEn}ò†¼ ¸·)êÚ¢-¥ô÷ÔwÿP<$®ï+eÉW·ê]V¢à L úê°~ýز\ˆ´Ù³Zç‡;£g´'”Yø2ã‡iK¢‡|f³]>SP l¶Íg‡<«zµ
+Ü¥ìwx
+;¬–÷_rÎ3ö¡Kœh çqqK×-*XfKÔó–u(bú>0jãõ”Õ–Ý­sn³Õî‘B—ºÌB9Ô<D²:(`Æ‚½t Ô™’‡ËŠj4=טõ±TpJRIÁ^* ØK%©¤`/•<–
+%S`<m!k­’J15^a¡È=iv›¼Î\¡~ߎȃƒCÀËãú^\W>©=%}US¬6e f«šÔ×ÒB”“™75¦0Y$S°Ï|
+ö™OÂ.ó)Øe>…úÌ'a—ù|˜ye,øá=í»SÑméSÿ$7ÐU¨¬Ûv× ¦á¾ÛºñUNï–+üØl;¬×Xr6ôZ>“šWÙ«ãœPèk}ª¦
+Ç™’—4Ú¤jªÔTTÁ¾©¡£þ+—9ä*Ÿ¡'3¡„Î:p{MµkK¦†‚£Ò\ª ô1ær\ERpàR\JÁžK Øs).¥`Ï¥üɱƒtpLÀµ·lÖâ¬`Ù°»çšÃY•ç@›—ÐN±ç;ö°ºiÙæ)Ö^w·~¹f±K<´×®otÚ¼±}C@·'4ÏÀ…_üèî[ü¸¡Fz±bWôs»ÃøÈ^­÷c¼R¯Ç«›ît³/¹†êùk·ÙÒÏ(‡a#£y,¤DQcQ‘&^õ¢ê»sB9Šª­,*Á)@4iÌH9Ø~˜ì#Ì Ý†å²u4Nñ-I;ž7öû‚Z =<6"}Ñ- ïs")N‹?`Òç—ç/!Çùlxë«Ø0ˆ‰†ù@—‚+J›¶@ïýE´*pÙ@YY(í»WÒ… Òи¥ ~„kWñbïN™FC˜FCH ¾L£¾Lƒ¡$P_¦Q?)©,‚jÅÉ
+À«žÉ“¡‘Ú~ <{­êü³á•¯¢ò ýë¦O#ô@é›ÇA¡‘ M^À— õ­¿4 þ›H'nqËH\* Û”ðïHjŒ¼Ú¨]V‘ýœqi¾Ò?ɳ:ª
+;ֳؿ ¦TI†E€³íŠÆö½<¨L§g×ý¦-T%Ud {¼n•Ee?€ü ƒW­°ýM+¦dQéÚJAM]B`ÓhØ4–@½À¦Q/°i0,zM£ß;ÒêZâúÿ7ÒšÿíDKêü®I–VþX$HY%¡¡wƒA¯+"{I¤`¯‰$ìD‘‚*R¨—EvºHÁß9Àj–ü¯°2¨›j€ –Ìâ
+Âõò 6‹î«Ú‚QŽ½±:ÝÅÇ›²<ÔœÛ-–ðFDwÙ,ïZöaµ£Ëô&¶ïà–÷> CG\[£µ{Öúóáî9mâîüÔñÜô0²âö88Óüóã}³l¶8hv«åðLŠë‘Õo9“[›>HãÊ*ÞŽ‘cP™jp’ÃÐvtmðùàÖPɘ‚ÝÎ)ôðΖ±i‡…»ÆƒK¦ªÉäãýÐ|ΰgµ
+ƒ 6®2
+°hyìmá½
+¸ÊhI‡ÛÃî-W[ÝR7æ·`ôk…/¬$è ]!ü}øÆ•‚½mîwîY·¡ªŠ$%FNMEÝÕÅÓö±QjØì›@Ç¢­ 0Oñíê>Ž_@c¾%€ëöƒáB·mo(47Ͷ¡FÿüŽù!ü~÷à"x»‚(S h}0¾ø`?ÆÅ~t+ROGî
+ ÒnP}Šãm‡£í{Ó­^ãŸm·ÂS,f—/)Ob†ô>§²÷«Àš˜?®è—AD qàXëâTkâ-o{×pL¥qçë@¿wK<^s_ñ‡~.ï¨.h›uK!„"qÓþ 0˜ª¨ ¨ŒÖ-ñlíõ–VR€Øãƒ6÷¿ñö&–„OÌŠÂTLjÈËœºaI%º'¬<íÏ¥¦¡Á³õùü§g@’õj÷È^6í¨o-YÑ»pÒƒi‘»]ö :í+È)ØQØ|]3aö:8æë5ÆwÓ.¯G'œºÃ<¡ÛåØ …ER|UªÖôT<©ýZ¬tñé£MÊc“‚YªKltO¥.êî°1rNÐô߬WÛnÛFý>’"´7^‚Â@â¨$@m§@Ѿ02ã°ÈD’Ñäï{f–Ë‹¨±¤–)ÎìeÎÌœ¡²†bó#1EüµŽªö.#9_Äû.ΟÉh—Z>“¥I',°¯©}æOÿÜné³F±›$¥A.F ¹¾à¼ÙRo³›Å)oê]Õ*TÛƒx<öiÎøìUõü`wõaKäo¾zǤ
+- å gë·p=¥>*UÎM%c…Û2£yfhέck­K\XÚFk&”`
+ŒS>,¬Óéºn’1.ÊdÓ]ÏÖ l”.Œ¦ Ñ8pU0v댮hb AµÑDë3ðhÜÝž²±Ä]æéM›uYš1ÃÑWMßɇñòZQÎQ1”Ššï ´m9JµH)ï‘V49:fÈ©ëªÅ¼ô©{¤ŽÙÞÊ
+¡X¯Ã¢·XÌÄ_’aO2^[Ç»D+ÒñjL¿W÷x£Ž[ù=ú¨ùåÈ1Áðú _³øG¢A×#½ø…m®“•‹?$:¾$‰‰Éc_{$„\§oÒ ô¢‰F,Z¾ŽŽ¾"«hÛµ´b½=R5*â”à/d5Ž?ô”©~ªÑ~^¢±æ-„eŠŽ÷Ðtoéîh'í«èúär¼dwJŽø\wˆýe¹k`Ö¹¤[ø@B'õnxgÙØSòak Jç\Gƒt¼oyðzÀ#ý5´Íöž‹À§ºÚ×ûhGÙÞÝÕ¯
+endstream endobj 816 0 obj <</Contents 817 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 817 0 obj <</Filter/FlateDecode/Length 3094>>stream
+H‰¤WmoÛ8þ+ü(- U|—ö[šf‹Úl.qï°Øª£¤ÞKìÖvvÑÏ¢DYf’mQT‘5œáÌ<‡3¯¬rÿ¶wìÕÛëŠÝíØ«ÿoÅ8[ܲ¦¬*-Ü‚†iSšª’Ì6¼”¢2lñÀ2–/þpÜkTÐ Ñ’ ]Ù°¢ÖeÍ%[Ü°ìlq}îÎì+“*aÜÖØEA]Ô%7ŒW0ζû7[³×‹Ø²-Ù.Â6M]ô&{Eå}üÝﻸÆ9™fŠÓ_Éþå?”9ÏTY±YÎM&ò‚g}çô¦óÿ,þAÿ.k!JS.Ë'½%G§ tÚÞeEŸo_Çö¹(›g3"í‘ô‘*õ1öMUò(ýú;6ò67âœÇ16ã.¶y ÈzÙÎ@Žy8b,ßæuvyI0#zåð“ìOúÛŽÛ\g;zYmÖ,ç2CrU@¿bW»u÷]K_ws$1üV–ŠYS•¡ˆž‹„»H\ r™sA/} çg¯Þæ6Ûn¿°‹ö¡‹à².Õè³Ì
+Ii99`ü%eD̶÷ff!nWûÕ²½_rÈE§LávlÌ0ÓxŠ™GQŒÔT/¹ÀŽàåÍTâ ¸“œ×Ùn·º[wi"&ò¥}‘pÍYQÐThK¯7c´JSE±.ZŽ=QPÜQÞNeZ¨ÒšHª­«©Oêªàö2Q‘¾r\:tb!«¤Lr¸!ÒbÔë´a A–”XW¦”iípBÜÃ'Fø¤ª.†ÙýÏû³ìŽN
+Û6ÒA­ã…IPÑ[™4¨è:l#Ž9o¦ªò„27Æ!Ó‹¤r;j;F$T!£/A\+ªÛ£j LB["%£”Št¬ëÙ”RµµãCÂç@¶Tº Ö"Ö®ã­Ú$®'ùš¨šÒ>"•{"ËèÞ¨<{ãjLå^Çñ’ñßMñ0<(2D*egɽ¦Lí®Ëþ,àœ•ÖµQ×¢ÉÎ?°«³wg'×øvÆN}OÔ}†Ÿ\¼aÃ}'ÇÈmØ—‹§"0ÆFGpídöSØj‡þ‡¹ûô!U9/lFÛ;ˆ;¶¢£åíú±KdkHö9ÎÔ'ü4¨ÞgxO ?;Ó¼0Ùf5¶ß°Íö¦ÛºS¾÷Ò«Ü ©Ђm‡9Î÷~´÷÷øF6Ôe>Bi‹jž-Ý7ZÞîÑS@³7xNKØÒ);òþwËýjã\¤_%Œ>‰CsíS'9¥®b
+Â,ñ)z³Úº×› &û™B:½P‡Ò+ê#6L‘SÔ€˜uÕìê®ÙìŠpÛÜ­•¥µ…³_Щ«}»†[+¤ånM)nïñJÿW„âúÎ¥ýS×n»-¼2ÛÜt?SO‘Ê å
+kÖ”_„ê4]Þ…
+ofæ÷ M1»:Ü.M´D*´ïg‘8šŠÃ¨RkaÔSÇ9LnÒÌš­©pÖqS§V?­«1vq˜FA†¾¥¶IõÌ6­JM±|BL%Z%ÅÔÙ"ˆ”XW–JvRì"NI YcÀëù%JA$ÔµzÔßÑ3
+”†Ý®½ëØ‚f©o9jÊ’’(ÙaFêG0ú·­‰±[ëʆ•ãdÆýHU)E¼€+îƒ~éoÄÎh4+”T·þè–äÈžŒŒ#Ù€²8:“yqÍáËØ高 Y ABH÷$Hˆ â@‚”Ø“ !=B×L` o„I“À¢ÈjÝyFsØ>î:V³‚Šk!¥ŒðTOÂCš²á<àÈP‹…!8m §\—ÖÖa!êÐfÛfFX¢iX-'^"‚5! °&ÄÖ”¸‡5!°&ÄÖ”ØÚÎaÍx¶yV#¢éí ůhàoÝ8‚›óÀüòš ŠŽw¡¥éã-Ôìx«ŒópÀ¹µbÄ[ŒVcF8bJiþ ,u^iꨧ;! 4Hˆ Râž q ABh{$¤GN÷È‚yÇ9°@óèþ'Xi¤Ýdø
+ûݤ@Íçâ8)ìwsc‚©ÒœPؼN”†„,p"!œH‰{N$Ä qàDJì9‘N9áW\•°iR`U)Þå…ÎZzìò‚gŇþ«“ v餸ð"
+%³Ñ=÷q^@-çµIºÆ¨ÚuX‰£Œv×’ûŽZ•âîÎ%T‚RªÑ— 6¨Hµ¯P)m!Qäi­pïGÊ}ýJ)“8½s_Ý’ÊG1j÷Å/™0åÖGÚu¬Ý×Æ”6‰µIîíKgRy.Uûº*£ ¶ò„jŒ6¾˜âw5®"”¥ y_Oý}8+Ë&[9jbð©”mœ)÷>Ú(*Ôæ÷h»aèÿ|—Ínƒ0„_ÅGsA@Rs‹ˆ• ©Hzj/$±ˆ¥W„÷WfÖ¤¡UÕÈëÅö·&]fOúùU5¦2ë=ÚŒ*w5ôR™ƒ [x.{:†ÁmRü@’ó`rz€³…¾À…»F…øÎô'¡ŠÃÂ$Qh¶·FXåx–d_ƒSÝ£g$²ŽÔÿH Lx›†I…ù„PP­X·øö,|yZ‡¹hå熌?â¦ÂŠÅ5yÂ+­ j9ïó×µT¥{+ŒÍp(–®$©u6ž)¤,–Š;›qµáHòñgz`æ´ŒêÄ×è<5÷+ÕlRåcyòß»J¿c¡î›æ±xi.©ü×õ,z„ÿ™ŸÊE'¨Û# Úv=qÞ~ ÈÇQgß â¶ì ð%ÚŸíŠl.‘€!®Ä®glö4Šå’=YèP~`ƒ¦:GØsüÍÑ›
+endstream endobj 818 0 obj <</Contents 819 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 819 0 obj <</Filter/FlateDecode/Length 3548>>stream
+H‰Ü—mo7Ç¿
+_î  ŸÉâØH}HZŸ­ôP¤‡ƒ*o ¶Kòµùö7Ç}ÔH®“W‡
+VÎ#DÁaJK&MeUÍfÞT^(6¿eÅÅüæ2 ¸˜³G¦j]Apça Ã¥¯„e‚Cp¶mØ¿ØšÍû«ÁØRcìYžæácÈ´FÉã?Åyç70E)da˜øW±ŸãU)
+]qökQ
+[Èr&
+Žß üdÊÏÿ þ',ÙHYYß.Y]-.tøÃèÑêŠYz!1¾éDzªO¾åLdLÄõ¯eo.YóJô^¿yÁD1Æx"¯µ·'À¦›ÅÕÏI²é’ì&IîsØåX½+}qu…i†Ýë?Åþ‹Ìã¶4Å?¬6kV
+UÀËÕ9ûœ]ƒ~wß,ðÛ]Ã$²Ÿ~g*xa–W¶b ìèÔNDØI؈šlÃ…XXJ»‘Ë‹WïJWl7O_Ø‹‡¦¿
+Q|-•/¾4l±¾e]憓ÄØ~²o»»1hʱ·pÞtñ9<ãçõŸMYí°S(½Ìi÷œ­Úé"B˜Éoš‡Åz¿*….–;rg!¦:c'»mvKä|õ%Þ¬ñÙÛ’6¦R¶Û’xN%‘“éc˜É–ÞnWûÕrq¿ÂÌIÈÜxS’ÂN×ãØA)‡cf»sªŸÓž¤"†™¬ûM)|±Û­îÖ Íñ*0¤ÖÀõ0_Åø€e0?Þv{Ê9Ça¡&…b°ÍÏ#ÑÀÉq¶''‚¯9:X×p$’(9ª°±r²Th½HY ‹$‘2ÖdKÊZ«@%!î°FSjÚ4!ȃÔiÕ–#l÷ã¯bËtálät~(%–”,î6G»öµ„ê…)¤VàLÌ%þ$Öæ\õrÎqFWqçp1Éž¶^¶·Ì°JY)…uí„݃%™µƒ>PV*&€_[ÁÒJ
+!óJ~)…+.J]Ü
+ Übe± ?+gÊxSüTÖÇŸÄŠ+OÙ}™/®ÑPWì|¦P&øztúNØ©ÿ—ª®é €®u¼3,yŒpîµ<¤
+ônpF-À‹uªUh<»ÁDb0ʾU½Æ…tƒ3¦Ä`”Í`êáèD15Úóþ¶Ç ÏSïLã®?ºî¿ðtˆÁ@^E¨…ç#B> wƒÓÒcVkX ±ñÔàZ­l88NC˜ä¿€Ó#Pà«728NãÒ"ŽÝDwRùô¤Æˆ8£Ñí-æSq½Xß5ì·Íò¼¾í®G°à7š×€ :²„álaìh¶v]Y £‹.N^ 5no0KŒ1ÙÓÅŸ_îÿ#½jz‡è_ñÑ9%ŽI ·p¨´¢Z¶íe{1`ÚH$®Ò°Úý÷ûfòáHWU„Øc;ž7ãç7…©áÌ}Ÿ4è¾ÿÕÏøTÏ÷ y¨…´¿È‹¡QÓ¡ä¢úÏÜfÏ*ü‘&£æfåë¾÷µ©ºhÍM[jñÎÍŸ@!{œk‹QªPkr$6K#_É`œÿkÉSø*ÈO¹(ÜD¸Q°h–Ür4 "ÒÓ
+z>ÂNœ<Oæxªû²wþS8U¼Fò¹ˆ«“ Ô³¦í±‰ÕØsìˆuìucÕýˆOîÈÚ¥0I>`iߌºÊîš½©L}eáñ›âÃöã)¯<8 Ì`›¾ÔqŽñä] ~€n‚Ù/ith%¾ˆWþÈl¥ùc­YÍÔÙPgdöë\AÚª>ôÏ)æ3…<‰>R‘`霗â÷n­xöRb>x•?çb³ú~¿øöpG­û5b1Us¹YýxäžMÉÕÒ‹%Ý#NÕ–aú‘#1Ó—ŸHX¾Beïm?HÉ<PJBú@¦Ý$’úÍ FX‘‘@âqô°É–*@ÊmÑLäß@AÙU4ð•çÐHǦÚ%©¿%_*×è ¡"QRTNdÅ¡ÉטFQÑAÛè/µàI¾#M% zt;SÑ%
+endstream endobj 820 0 obj <</Contents 821 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 821 0 obj <</Filter/FlateDecode/Length 4206>>stream
+H‰Ä—ûoÛÈÇÿ•ý‘,N̾—üÑñ® äQ[¹¢¸…N¢]ÝÙT*É òßwf|H‹Ql†_sgvç3};gÜÿÛ>°7×wœ=ìØ›¹ø'g‚ÍïYUpn¤ÿƒŠ[XÎs•(”ä–ÍŸXÆòùïþ ¾àðJK&MaUÅf¥)J¡Ø|Ų«ùÝÿàjÎþÍT¥ XÜ•`EÃç²,„e‚Ãâl[³¿±†½÷½Áµ¥ÆµgÉÌס‹aÉè£äÁÇ_ƒÝù˜È…Ì Ó+öKxQä"ÓgŸ³\ØLæ3‘q|/ðÉäÿ˜ÿþ+¸l¤,lÙº¬^ô ÿúÀ»l$¬oúë YT'OD¹CfÄןóž-YñBôŽßœa(¬qhHÕß`ÓYqÕ” ›.Èî(È}»«ë¼Ì>~Ä0ÃbÿÁß5Æq››l‡ëMÃr¡28\¢ÏÙ-Èþïë¾ÝÕÌC"ûáw€2s–¶b ìèÔN„߉߈:Ú.ç7bÁ•v#7Wo®s—m7Ï_ØûÅSÝw@h^”ºuá¤G ØÌX/\¢ä…îLÀßórZR ùeŽ6÷ÃPïêf9Ø—”Ü—‚³÷xi_Ö†dJ&¤+ôÉ}…è ùe Ý.š‡ºo¬,û‡xÆ~ü/íGI݃Ñøó;¦.«äqéÄõÆhd{H ‘}ËU™}©Ù¢Y±.tC#aíòh7
+J{ˆŽ‘€SZ{ §³{ÿ3<7KüYçUÖÚ€BíèEN»)[µÇNøeŽ6xW?-šý::[îÈù5ÕÈše!Ë£­êÝA_ oüÙÛ’†Æ»èi1¥”È#óa™£-]n×ûõrñ¸ÆÈIˆÜá¦$…®\¬çcØa‡{~OéO#¡Ëù}‘‹2ÛíÖMM3F.ÉõQ$Fâð`f0WÝ^2dÎqh¤ŒB±ð?`›÷¢R²(û2QïHe¨×N@×lùäß?1«àüàé1>ÍüÇð&=ÝÃƵ֞’h$«{vŒ“øñËNj ^FÎÈÙ 
+[bÔ(Yž
+(xmÌ)E[BÅɪ#‰3«¥¡W2ƒIdƒ)þáyp}pryñ Ï$/Ú¡Èp‹áÇ…%‘Gȉ<BNäQr$“焜ȣäH!T̲«˜4xÞh;ñož·pý„qÝüœ‹t×ÀÒˆSÔôÒ¨_µ4êï(ʽ'įšg<æ3áŒv(8¹…7tY$ä'!'8)9ÂIÈÉsBNpRr„“Gà-œ8ÞtZ¸tÙö4LjB+—Ùö¡Þ#¡&9«ۺͫ¶n8CÌØ ŒÆÓ>“Ñh‡`ÔV¦»:PJŽŒRrd””£”=§äÈ()F)ù˜QÕÝŽ};²¥-JÎ]ºAXï àì2·Ù#Κ‹Ý_>å3 wû‡¯ž²+NCvñ+ö.&AônèÝPËg¢6üùúþ`G{Þ0~ÿÙçLu+¸°~ˆCÈÏð%dPßaž„‘x6¯“!ö53#('eHŠõy’ìPbuwwQ¿d!§ !ä”!”3„“ç„œ2„’c†òÙbàuªâ3Dý¯‚ Ÿ—"öÿ‘!îµf dO»ú¥8Ÿ™Ñ•`ÞX:;9e!§ì ä˜„œ<'ä””³ƒGf×Í8Ê‘ |Ž×¿ æGx\ࣟ|Àùg=þƒ?G²¶9$U³û²ØÖ â²÷y·i<Ü‹µWo‘±°®_M†ŒÂû«ôìb
+V¬—V—>᎘uîHÛæáüO>õ>Áˆ†ã˜ßÀx²_ÀÚDÕèü÷ Žn¶>¯Ò˜R|°Çu>ÓÙ=ÍÕ§9žÛ-X¹@3[þ"exv1Q“YöäD(
+§R2 h,ãɬø…?OÈUÇ•ÉàÒ•'zæA9)‹#gfq´Cd±ñ a7°ûáHÉ1‹)9f1)‡,¦äè9%Ç,&åÅ”<Ìâ@f› R’Ylœ€•R€¶f²{{w‡¹+0¡á½¯¿úPãëŽNq@vl?7Íýfû¹³Ø¯ã2k|eèòÔø»ìôcaöáÊOÜ{têYª:ݳ*ß~°œ,vÐJg)¿¿2STÆõ§ÖÍ—ýzƒß6‹Güõø 7È~«'W¶ç]½òÆ×÷¬kïR÷‹Që†5 €/?{öÛó¾­,Òt5ȵ¥«ÙìÙ3ö#W¯Z»Ç‚×¼Û§w¹Pð¤¯Úhu–† X{›÷QÕ…V6”Ú¢ânt$ gã*¨SªHʇóªH²CUî
+Íc²Aþéá,@É©Šrª"”«!'Ï 9UJŽU„Gªˆ2©ŠEV]¡ÕTE®¯n/Þ³K¨%%6‡,B»?Ÿ°­ãË-ú4m´ÆÔW=¦Ü4æTøž©Õ¤©uf¡Ñ}ï¤j8 -'ÑÏùL:£‚N]YxƒÛÕz@'%G:)9ÒIÊNJŽžSr¤“””|<©
+™àä–†³tøÐT±ËÕ¾vÇN§B›
+ |¬Â¶†d[kÛo·x'kv¸*Ž«¸pƒkô'^31ã,Kͱƒþ‡R©Ù ]hwÿZ<>²\rWeý§eÛypÞî7ÊöòÚ,}‡|^ÕØ"VÐï~ÊEæVÝ"B·Ç²hV,tXì­ûäOýñ¾-FZµß\CÖ
+×E™±½ E«ÎOsÔïV›§ú¶nØ-î<
+=ÑÑÆG–ÙúAêÝúh*]ƒxÿA_I¼£j§D¯ôÀÇuãT4•ŠhFÈÇj¸ó3
+ìâÃ莒Ól$íl´¨ÓHšyÍبŒcàûªå¦zÄ‚
+ÞP¶·cò’%æF5óÖ?PÓƒ+ž€+²œ¥†lP§°<ó¶
+endstream endobj 822 0 obj <</Contents 823 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 823 0 obj <</Filter/FlateDecode/Length 4346>>stream
+H‰Ô—moÛÈǿʾ$ ˆÙg."€©‹:ç³uw(’¢`eÚ§À¦IîÕß¾3³Ë‰ÙMò¦0 Ñúswgw~;§s!éo}'Þ|¸–ân#ÞÌÕ?¥Pb~+ªBJ§é…J8_x)(+U-½˜?ˆLäó/4BÅF ´ÚÞTb\”ó‘ͯÏiÀÙ\|¦²L^XÅÂp
+å…’0¹X7â7ÑŠÓùØœ[[œ{Ö-óÇ®‰qÊd£–ÑÆOqÝù5,‘+9a~ñkü¡ÈUf )>g¹ò™Îg*“ø»Â'—ÿcþW4øg0Ùi]øЛlŽZ‹†î Þ³.›¥‰ó»ñüJÕ‹'bÊ ¹ Iû9­¥+Y¨Ññ»oX(α¿Rv¼'ÀfX¥¬^ãd78¹œ8yÌáàcó!Ùå%ºvoÉFü¿ôã:wÙ–«VäÊdp¸¶ó¾W Ó{÷M¿nAè±ûKOÀzYhØ‹w°¥—¶¢h+´3٠͇;ñ`K¿“ó³7ò2[¯žÅÇú¡[ ¬*œïMxÑ‚‰Çâ{kfbä/º¨[‚íáu·rw!šf²¹KôC³iÚÅξ´_ÚïØWœàؾ´WE5xO—…}q_Ñ{» Ñ4û ]Õí]3^ xÿ®íàxyl;(aXB"š/¹i¸Vz;iÂ4Š-Ü •=ç&d¨Û1¸nw‘8w˜lÇè*ÝY§§nî5Ü8›ÝÒg|nøÙäUÖ¯‰BRTìˆ,_³U?5‚¦™lðºy¨Ûí2W6[lØÑœf:'ƵéÆnšÍA_>ƉW-~Ž¶d!ˆv¤^IôdušeŸ’OÙ»õr»\Ô÷KtœÇíïIsØÙª,{‹0?©Áè×$§n€9"€»FŸä*d›Íò®mx¾˜s€ Z”~⅃簿(\‰7ÃFm ÞJäEÁ¢(è¶y»':maé‘ìJ:—ãƒm1$‰d{T•Ç,ÉÊÚh|æd£B¡yâ±ä—¶Ö¼êdEᙓӞy:ðœ5}$Â\¿Ÿà-Ö—àMº7/r‘A$õ]#æX«=ç˜ &‘g•)L¢+ñuDïr3r¹ÄËBzƒÆ¤Ú´/dGf’•º€*§Â!Àzðduó)ƒS)jE()D2ľÔ!ÏU™å6»
+%¬3ÓFUï¾4‹~ØâðžøkЕdUTwÐý øaäŽFNüpj⇑?ŒÚñÃɉFžòs4‘õø*N»Â£YCœ§r°ÝŠà“kñ |å&?¹Üô„H1ƒÆBúóà ŒCW-·Ï9ù‡ NáÂêž8ˆú©Gj ß«¸S=xÏì€7ó¶ô;°UÄš²`ò]»‚üªÌ„3_G8S§¹ãŒ‘gœš8cäÄ£vœqr⌑Ä)J_püZÚHš¬R;JYj÷úiÓPÆ)
+ÁêÖê‚CŒCö»p€ƒ±’ÇAz8¾á~Z»‹#w80rÂSŒœp`ÔNN80ò.tÓ•íº9ÃÇ_…qòQ¼_å3—=ä³Õø´ïd-´«â¼Åÿoà‘~[ÄWB¶¥kŒVà4 ó]|7E¯OfŽ…èÕ ÎÔ*¢ì+Í!›À89‘ÄÉ‘$V$qr$‰SI¬Iâä ¬2XÅ“ÊB÷$]¯žÖ‹†˜˜SSîH5>®ïší(‘Ù~åq…ùŸ`Ž9új ¯n7õºiÑÓ[ñ.÷У#ë%ýÖ¬Ñë£$çCÛ$Ó]|{¦#+U¹º mÐa,¬ ̳v±º!#¡SP¥Ñý¾›2Îäº7¼ esMÙþÞLLYãaw©zÃCÇ“X4£³@—-z?þ3ã\ÀÇaW߉9]âñ0×3ƒGjìx×w±ï…hVÀÃ8A¿•ØEÉaÌ܇W/¹PgcÇÓ*ô^rëàÒýáèlŠ
+)Ž‚~BŠìpB~)Û=¶
+GZƒ3²ÞüÇ¡›ÄÒÏÄwt“×A”¿ "§:‘QrÆe1r#DœJ12AĨ=DœL1ò[­¿†ÆžŽæÙ f -ê=:y|þ,ž°@Çñ–ËÏ°8˜ °ü,_l6m‰(q8ÑpJÞ‹Ó‹î‘ÒÑô¢{$†UœñOqlYã`bä&F&˜8•`bd‚‰Q{˜8™`bä0e&–%• |XZ>§™‚µGŠ*Ï‘1Ga£± áŒÛCk2áº*ðO7Óa…7Gs¬÷7ªW%_D–ÊsëQ²TŠ‰b9'YœìÈbUG';²8•ÈbeG'ŸpA,É“•Æð9OÖuÙ>"NÚŸu|ž ¸ïÕ›æѵª$])t·ðî‹çMP–äÿé•M¼h~©4ƒò`ÀÙ•ônAÁÈ=ŒL`p*ÁÈ£ö`p2ÁÈS0„%ƒñ@pµÓ#0Û®lk´4¤?ìªGÈ~‰ÁÕâÃÈ%ÃÇåà‹VE[Ü£1*ñð¡àKOÛûÃÑP3Â3tÜ€.ßÜ€Àiˆó¤™P+{!À’Ô$áW¼\@£¼žÍsÇ?Üʪ»ºiKsô
+;À?.®®?ÚäÚŒšC÷ýf[SwEånm-&m‚ÕÿE”ÉÞE”NÀLòDI`]'÷D12Å©D#QŒÚÅÉD#O[šꌉTÌ=u´‹ùß78O®ÀDYvòe8øt¸†,…£{žJOÛòÏ@ Gñ<pÉïä-ßÅD^ŸñV±¶8r¼1rÏ#oœJ¼12ñƨ=oœL¼1ò‰j†)§Xàdn` øºú´BÛ®Â'àl7ÆëÈ©Zöe}Û´÷h¿Š®B`›:(Τ‚AZïÝ/èÖjŸÇ_9Fíf=³Ã3.üV|ù$‘ÈF_ÿÞàË?ʉ…t‘pÅåyŽ›ƒÝ`ø†ÖŸÛ9yîÏuó„q¥—¤M’ ÃÜ…P`‡Ýi¦QY—?»ý¦®‚—‡Ž°Å¨ñfC; –Ã&´è“+Œus÷æ¼oßÂuQM½}ÂAeÂünÿý(—RO¹¨êõ·÷°±oo‚êvêƉ)Úiâ¿‚yįX(ŸÐ›‰”âtÛÄ à4<¸Ø §ï2¤$÷¨ÛN=w¯¢±«öl×–öj[Ö]äãaÓo·§#­’þj ºO5;¾ËA½KÞ§I(Ñ·ƒ\ÁóA—ãdêrœìº«º.ÇÉ®Ëq*u9Vv]Ž“§]Nìžms±<¸B^ÎÒðövÛØ™6ÁÕÌ„ã ‚‡®mgï˜æÎ]/mÎåUÃMŸ£Úr³Øí¶¶Ó‚3PañÜŽëÅøHÙ‚qÐŒ°vƒòëâ¡6E2­ðëåÊ:”Ë è‚åÃÜÇ$NÇA W×¾3ž, i£^WR …g‹‹
+F=Q‰Ou6)
+£#%!ó" ™ôfsYw养꫶ÁcÒaW5ø\ãs†L«FE*Í»ùÂ5=¶?[>œmR*66ë[~…Gkiü´>2H'‡»¯K%‡–ã&§v“Ó„ûà <ƒ3¢xäû±ÌÀêO.Ÿ£¼ìÊöÞ6‰®+7‡H«é¶‹í]Á+G÷wsgÝG®ç&]!K_WÎÚuš°åŒV5&ú]ALE!‘éÑR*vf-ªP¤&
+kЯ¥VÀ¬•Ê¾Nj¦Qðk]£`–¢è÷œÈhü_©‹pKA5 ·c×c¸@iÉl´ô`ÃÔ˜µ¨¦l ¨?qk§ª_ú¯
+endstream endobj 824 0 obj <</Contents 825 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 825 0 obj <</Filter/FlateDecode/Length 4054>>stream
+H‰¬—ûoÛ8ÇÿþH`®ø
+$m‘ó¢i³µ»‹C»8¸Ž’ºuìÔV¶ÛÿþføäÇ$Ý&( úŠäó™O§¬ ÿ6×ì—³IÉ®·ì—©ü_É$›^±Z”¥UლY'\YjVÕRhU:6½aœÓÏa„Œ#JÒœ)+œ®ÙÈ[á¥fÓKÆ_N'ã0àå”}eº6&¯<¬b`¸òB:&K˜œmö[±ÓéÐœ[œ{”—ù¶kbœ2Ù¨Êhãû¸îtKRqËŒÄ_Í~/D!¹%ûÀ é¸*F’—ø^â“-þœþŠÿ&[¥„óÉú^kÑÐÝ £÷¬ã£t q~;œ_*Q?x"º:²=²Pi>ƒµT]
+98~û Å9ö’Ò÷Øô«øŸÙÎ
+)9:!ìý 8Àè²ùF.Vó%žËÝeƒmÙ—èSÉ¿ÇsÉÓD:ÃúÓ1>[]†½)™6
+Ü…io›ÍÍ'hÛæ2ì±›ÈèþëlÅly½ÞÒóEû ­¹)F
+víÆ ոʺ}Zx£ÀlZðf÷.£ì|%TÆÒTµK%'ò(9’Gª‘<JŽäQj"”#y”|„¼<EƒWyaºrvÉ~‰¨­?Ζ
+8òX§”d‹¯édBÈBNPj€„š1 ä„!ÿlE2Vxßå’fÙ%oÞ\² ôÈ+,Qç…Ò¡<±Ðá,Úï1iŒ ¨§¹¶ü“¢õ£ÈÝ«{È1Nš&‡39„œÈ¡ÔD!'r5“CɉBþa`Nkè¬%ó%î²ûà¶Êp•½·dðVH6Ž†K[|Hp=ÍÎOÏ'ìÕ"ôÚ_°-V×o~;¶Œé :¾x°Ç7^Cgݶóü~‚´r·×ËãÉï‡ñ0¡^ÅK®Pý»Èª©9dÕ™4ªà4sª
+˜Ë7£#m7!gT 9¡J© UBN¨jF•’ª„ü•9)`´”¢¹®„Tmú4xH*N‡™ÒAk[v=ûu½X5—¡=?ÅV°=…‹`3Ûà_üs/¶Jv‹b¦-5ì¬Ï½H¯…ûç¼aã—[|<à·ÏªÀ˜­5â«v¹ÔûIu”CéÛÌ’µë00|ív/³ÿ¾Á$?û{µuEÀð»e»˜Ï¶Á®Ð³VqÐ ñ/`\‹=iÜÎÍÔ^ä·ï
+.²C—
+§²¢†] ªˆ-Î;€/ÏÀìqÌÜÜm[Ö± Ðu÷±.*Ö«%4?’³Mÿ¥ªû@“øiÙ­‚q»i¶M,JÐLµl€†çÁbU?E=X­a׬ë»Û°ã~DÒ \.k™²Œ÷žáÂÑŽØ(œn¶.ᇎ
+#ê`|øè[{¾i>7s,»m_Ïz\àà ݧ™Úa
+î"œ&pòg…ç1%57›Íö:kqËðg0kï¶è tO ‘ü¦ð÷Õ0…Ö©'Í/ê1ùÅÔVXEã­Pƒ“Õ»m %g`9C© BNÀj†’0„|$¿˜ÐŤ¡lPðT<çpô{úŠ‡§¯¡†Á]íÍ£¹ÐÕÃ\ÄÄrr{» ó¼Aaýˆ/—ÃÞÛv¥»Üëò]œ2¶ì@øÕz3hŸUλø]ªÂ“1öv
+è¬eã»Ñ^³]¦ùÅD„ý…MÉ£]ŽN¼m cõÑ4H£ìá{P6âsM1R쥾ãjù¸š8&Ä„ñq5Q|\Ìjbø¸zänÚßÃ$M°tòd5ÿ´†{@{ñ*¤¿×Ôšñe³jí÷”ï´®ä“ä»ØÑI8/@pHsX\ÁâfxÕËÍ&Ñ
+ƒ9ÀwJdAŽedi˦îr}f6è +[Ä*;‘ošE|÷³(+z‡¼ÖCtÿ½µà$ö×bbìeùÃ[}©òš8{\Rw™5ô£IÖY“ñu¯ Õ‚ 2tŽÇ?5†qºWY©ßñíæ| {ÃD®°ÃÜEvX‰{qX2˜”ë^íªòòd2È©=2àÀ8U©Cï™$R¾ªË•ÐΫŠt¦î in^v…!ƒº•÷òqÊo6Ù3ë¨1$«à|⾑e7µÆO=4Û™ï{yY«’Á„Cr(ÔFÖƒÈ\ÄÝ u•s/9GPÄÉ+„HvÇkUË  ŸÕnMÏa0Üõ3­çZ9tƒÙåÜ›²þÀ
+Q¨9¦æÚŠM+ž‘‘ËbPÍŽŠY÷ÎÅÃ|
+endstream endobj 826 0 obj <</Contents 827 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 827 0 obj <</Filter/FlateDecode/Length 4233>>stream
+H‰ì—ooÛF‡¿Ê¾$ÃýË%P°S_êC®—ÚB‹CZ‰ö)°%G’ÛæÛßÌì.I‘ˈƒ¾:%ýÄÙÙgfgÎ碤¿í­xõöº·;ñj.ÿS
+)æ7¢.ÊÒ*úA-¬+\YjQղЪtb~/2‘Ï?Ñ2<QÂ(-„²…Óµ˜y[x©Å|)²‹ùõ%=p1Ÿ…®MÆ+«x\ùB:!K0.¶­øE¬Åù|è ÚVmÏÒ2ºLFU|üÖ_ùT™Fâ-~_¹ÌLQŠ_³\ºLå3™•ø½Äw6ÿmþtø'pÙ*U8ß¹¬Ÿô=<@zzä]6‹ìÛ¡}©Šúä‰èêÈBöÈB¥ù5¬¥ê²ƒã·_±P°1^HJ7Ü`Ó¯RÕÏ ²íƒ\M‚<ä°±~›ûìý{ 3ìÞPü´øÿ·Çmn³¾YmÖ"—:ƒÃ5)ú¥¸™~w×6øí®‰†¿ª
+à¯r%ü“ÂYØÒ©­HÚ
+íDOvBöp'|évryñêm^eÛÍãƒø±¹o‡H£
+å;Nz0‰X00Z3ƒxI/ ß/aÀwÿ¼¬<\ˆÌL6÷ãÐîÚõâ`_JIDýë÷ <µ/Â`_ª*ÌÉ}…è.DfÆ ]5ëÛv”\úEû!OíGÃÊ
+%ÓSqêóJM‹'<‚£ØCbÈìK®}öЊf½}ì ¶ýd;Z—…§¤µ
+‰¶·r&»¡×ð~½À×6¯³n ¼)‘¬ž³U7u¢>Šäu{߬÷«\šl±cwF6õ›%¡ñÆ–ín¤¯‚áÍ_[2¶*\_KŒ|N-Q“僙ɖÞlWûÕ¢¹[aäDn¼)Åqgj¯ŽcÜá g8ðû97Ô‘P3¿Ïré³Ýnu»nyƘ£@“n‰£G1>èl…o—ý^M]À>«ŽCšP,èvys¨YeÎ^µ•.üÓÂk­¢¦Ê¢rA”®Æ÷œ¬´.xUK¼cyÙ+"Ž‘±OÉVÒ=ÀÊaËŒ:‚¢ftW‰ð²ßðX/1’”)’ÿÌV €4·­˜c³ö%‡Â5‰¢*5”Lˆ?ItáÖƒp—¸bUH8-ð 6§]';p“¼T…6†Ê%œ¯ ¹úÕ…*$´ºEh*DôÄÀYvžü;—Uv‘›ì,a¡™RÎBÁûÔ.røbw¸w€s„­ jè¢Ò9wÉ×ãÃÈFMøprć‘>Œœðá䀣NñQU‘Õ<>šºÓˆÏ+pC­àm»ôqƒÅõæq íT‡Š|?gHš3J1“…4°ð÷Á0×Y³Þ=4ÛvÁß‹7¹ƒROñlVô]»Åà»dÍÊŽ@âªg0 þ«cpH+‚ªOJîÊ¢ò
+š<\Ùÿ·¸œÒªqU§˜7[LW<øþ(0t‹.ž a|dÖȇìêÇ7bQ²Ã#”&=§)-çÃ[œ~õˆ/[Œ*ôª…ÏÚèv¨‹ÝB$1c4U¶Ah∡îÃ<¾WÐÑ®÷÷¸ ÁB’nh«ðäúÁ*lhž…_F÷–ÔOÜÄ…–b…ÿ׃ó¨û=ÑQà˜ãð(àwôá^ý:{ zK›Ôý&ã¡ ‘)ú"E¿–áÞ4ÚQ <ôÒPMK´rp¡o ¿ëÖëÊœ†nƒ-sPB¡7ˆõ Ö8{ Ë'‡2Ç©±Ì±r(sœË'Ç2ÇÊTæ8õs(\Âi¸=@§þáToÕ3&+¶:íàÀR!¼:;ßa“-®©ãÞØùnEßìFMeñ£3Ïš`ʉd¤¹0cKû¸@šªðØ¢)ËúKJ&­q¡ŠHlDÝAÉ„Û|f<t#œ¡ÈT:ã vÆPÄ@”¹»99Bͨ jNŽP3r‚š‘Ôœ fÔÏ|èÖ‚_^”N :UW8儲‡
+ðºHǨlÊ ï™1¸–)1Œ†œ8{ó¼×®„v6Ÿ¹ìS>«2z·Øçõ83
+ɵkqXÊÅLÂW$û©B6H÷šÈ?u_csÕíT6OÕ3OÌý&ò}¢ÎPjs4-­YÖÂK¸ªÃœÃU¨oá9ØkšAƒ¦9Økšƒ¦8hšƒ¦tBÓE[_\I9Mƒ?ÎLw| ñÕ©Z—8qv4™ x7€¨é2TÄP–5ÖÙ/”W*³Ùâóû~Vmì%µÊ V-.ªUeÄx¾1R ï«Ê‚%’TÀ@–HЀ ï9؉A‘8؉‘8‰ƒ‘tjÔ­êÇþ¿%RªqôÃáÓæ+–%ùðð
+•Ð(…üO„j)w‘q:'"¡.6ÏUí»¦Uwð ]ôh:|Á〬‰¶p—í$ņf
+ñí9—š*¬Ki>¯«B:+ئ¢¥PiÖ;1p¨ ;1p°{1°0‰C'ÄàÚ*±/gÅ àTpJ¡«>üœÜBgZ<-¯¬O7‘ÃxÆRÝ‘¶æGvJ:%½…^Ò¸·1äB×V¼3~Ež®Œí¥ €A L'4Ј Æë2†Õö,c‚¥ÒD[øônp !0”¹óh!»Ñž£\´¥ûÛh‰gu2æ)ÌåL›^´ê¿y`8pfºÑÂN´
+º‘¢‚ÍÐ º«¼ëßyä¨tNÍýÉ :áã\»èC©Å À¡ÑïËoKp—uÓ<ß/³ÅOŽqcEO›‹ÐJïð>؇`DSYçýyŸÔÍ*ižÉù#ú¯Á Ñmiðó7À±¯’ßËÝÙ]«ŽôK‚ªèŒPò˜¹t*ë–ö¡Èû(2Zu»SÈ;-5=,À:a¿=¹º0Ñè¿i0…ÉŒ+>¬í1Pa|ýG€
+endstream endobj 828 0 obj <</Contents 829 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 829 0 obj <</Filter/FlateDecode/Length 5444>>stream
+H‰ÜWkoÛÊý+ûqY@ w—Kr/Š
+—f™Õô‚¶H‹,3¢t*5:+ÄôEH‘L¿ÒÊ‘Á(š mÓÂ81©lZ)#¦B^Mï¯éƒ«©ø.ŒËSP^V`%‡Ïu•ªB¨ ”‹¶8ŸŽ½AÝ:GÝ“hæ·u½Êà£Î¼Ÿ¼Ýé=˜H”–Vä
+ÿñ7ÿ M”ÌÓL|–‰*¤N&Jfø\á•Mþ9ý :üWpÙjUï²Ùë-:ºž@úzÃ;9 ñúíX¿Ò©;˜Sî0dwÊòÏÉÈ–vYªFé·'ò:6 )UŽcØ VJwL‘íPär«Èc56ï’J~üˆe†èsªŸÿÆ¿5Ö±M¬ìðb±lD¢Œ„äæ±ú™¸1½÷\ÏðiW ‰ÊüÔÞÏÉ’,u•sè§å¥#GézpÖV#g]šL*©ü¯wWï?\œM¯ñöíH\¥åŇ››³ÛK|$È´m†©`®´O‘+láS„¨é ›n£á)„h䯪E ¸Õò%ÑJÖœRâÃÙˆk±H&ŽîEr£e’Ub¤ø·…ü‘èLŠ¾ø+}s‘L
+y «¥Xùgøõ2™äònÛd¢å¼†tã{¥ä\áÛ‹æ1Q™ÞR9¸åBè y Ø XÕ ÐY>I0VÈ}·Bû ‚œ†J.Ñ©WÓ³yÝù¨ÁÑcA
+êÑwÏ$œÏV‹%9A©V}Ò+ª·NµŠ.4I)Å @={~^Âwõ…Ï@u ªW3ŒËÊ'¼[‰^©Ž:3ÂÐ
+VZLTªrëUßÁ'· €Õ}–T¬…˜Ï:r{Iɽ`ÕÎ(È >î0ðßÅòÕ¡ìŽò)«!eä3Þƒ> ˨d¬$@ÐXùn¨Ëõ
+ó#7uW7óµµFnÿl„^˾u‘cLÑŽ.áÏ‘ÅܶFº6­ÝÍš§zmšP©ýùÈHË¾È L‰ º·“áy¨vùôöÈH
+wàÏ58Ÿ~$¦’ß ©7bkÈFí
+S‚n‰ózþ" l覙xWúøípõçy1¶£ ‡­yQæt\íõÑ*Z:è¹ÎÐO’ª’6MN¬Mž:ÍŠálI ÿ5F Aqâ#¶€'»G¢fÄÇÅô½—*f“*
+—7Ñ{R˜~øG³×U’Ã,5Á‘†í4tׯõÜÏ<Ê(b~ŽCÒOÄq°³…cïÌ :´o)RqD*#ŽHåÄ©Œ8:Έ#R9q@*#ÞFª.‡SÚñH…ÃÔŒ¶Y8YpÑ‘íl%t‹Ã°÷Ë×F/èz£!<ï-¨"ì
+ÓKkÂÁÑÂ2kºo0g7³•ÀõtÙrf zV·³ÑúaUub0€´Ö?ô`Óa1‚º¼J‹²,% Ú %LvN>âË,wkDpÄ—Ù<0ðBIOäA°Ãð@aÕùŽÍˆ#qä'<`ÄÑqFyÀ‰ñ:N.ìT
+JŽ`TéHƒ÷
+f·£à*q"|ƒ¾YãßÆq„/#ŽðåľŒ8:Έ#|9q€/#þNˆÖÁ‚‰CšÒiqxÑ,± Â-ã}£¿;;ïÄt)ÎkqW?×8q̺ú€ð~Ñ­†yê]8LvôéÄMÔkÙpd´‰î îèXWªbL&°ögŽ²ƒ:Ÿ–tjª5†áA; Ћ ·{H”•À£Hðp"‰‚Ý$ÂÂá¾±+טDœ8ˆ±bO"NçÄD¬Ø“ˆÇœmlUÐb©2…é?´Yî—H#B®ªF;æÛ»ÄúEó.<£à¢¦‘é.^=×À-ì¡Õn¸÷¦¡^¦?£®Wõ‹¸¾êÖ—…ñ"ªLjŒÃÙI¯CߊÓÅpy\.Æ|Qbµ¤)E®÷Ðz°SЬ÷ǃfÿi–K¤Á#¥å¼{‹óã¶s¨)0N©p ÏŒùf’Wg@¶?'9X :rMorͺ‚×Ã\‹°9kÑõ²
+ˆ8‘FÁC£3Å÷oFiĈ#8q #ŽŽ3âH#NhĈûYÉ@U¦1LJ6Ûo†ŸWŒ…¨‡Qé ñpxè<™æ+œ—.g@¥Çôö,oOãj²Æ›r7o`vB“/ÄÞ½3”gÏÿršþáw2?åÆü(þ(È¿`‡áŸÖiU 0OÖøLj#ÿqä'ücÄÑqFùljÿñÉó´ô,û¿˜Ÿ 3ùqƒ{Èá‰À vàAÚ²Ñ.é»ß
+d¼ë‘•çóÅô÷—'…µçÓ¤„w-Òc¤äXqš”\FJY²N¤g\ª§Rb`'%vRâ`+%v g`'%¶Rb๔fv¢¥Î>F-¥x NKç@¶¥Ð×› óR÷P“D\
+tþ!¤šº„#T`/ôDØ8Œ
+´‚'|æf`§v*à`«v g`§¶*`à¹
+b2AËhЀÂ+p¸Gª—ÑJ…ÝsÕ?ßÝ`îZ´Bïägôð^±kV/>_ éß)„<þà¦â£ºw§'
+ÁÆa„ ÁîéØ 8Ø
+ÝÂØ ƒ­x.¡bÍ+A(Ø6§¨„»Û_ÏÏ!÷cÞ/{¼\²õÂÞ1ñ/ˆseûl
+ÒR*- KK»”BH·”9E“L†]õ¿jƒÂí}gâi*œÝQ4µ'~"Mm†¦B@A÷ÅdBSv4e`GS¶4e`·pv4å`KSžÒÔx•ÂñTf<Oc ó¹ŒÝ9¢F«L
+~‚QYeÅ ¸mÈä5># !7½Ò™˜@?ÃVÃ*aù*sŽ¯Bx[]Ky4O‘Tà¿£HjÏûD’Ú8 I㘌·»ËB.¡8VŽÆ:
+3ƒ†"î`¸g9ŽìÎŒ–*YûÁ¹Æ…øÁŽÿÌ`„s?:f[u0ƒç'/~ ©aÂh¡ÓÖ¨Öb|¸N„ÜÍ
+—ŸM²ÄƒÆE‰Gå¬ðÝÍÜÙ™1bå$w‰â¶lž«à¡}G%6N]ÿÆ5
+îúk”õC·>ºÓ×HŠ°Ú¢ÅÁ‡å3ÀUP£‘ —ð£¢7@zè;ƒø™†ß# \íñů4¦/;ܳð^á9:yhyëæ © ¬Ôл")îxø9ZªkÚ­OÊ` ðnVA¯–´ZIo†vÕK»){LYp`Õ7|¸¡·Þíšë–ÖLxßÕÏÏUÐ\´Ç‡ª"¤«6UýŽ~\ÓY™Ã_y†ßR:ò•]Ú
+L™NÌú.p{pt÷˜á±%á?zŒ_„ÍOÁí5-äÜ_«Þ%døälÇ7éBÓ‰À)œãÉ_G¥<œ¸’¡ˆ‘Ùqi1°Ÿ–vû¬!<7xå |Å¿×Ù<SÚy¨ÊŽåóKûXý0„Ê)•èÆ5¸·jÓÓHJ2Ò
+endstream endobj 830 0 obj <</Contents 831 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 831 0 obj <</Filter/FlateDecode/Length 4960>>stream
+H‰¤WëoÛÈÿWý´,*†û$™oŽ¢Ë¹plŸ­ë¡pŠ‚–hY…DêHùùï;3ËÇê±¶Û ˆLrvÞ¿yì§9Kè_³b¾Ü'lÕ²sñï„ 6byœ$FÒœÛ$Q,ÍE¬dbÙ|Ë8‹æÿ!á8à@Ò‚I[•³IfâL(6_2>›ß_ÃlÎ~g*×1O3Т]f±°L$ œ5%ûUìÓÜ·eK²'½š?Mt";eâl|pzç÷ "’¦þUìîC ®ã„}ã‘°\FÁü.ðÉDÿšÿ þL6RÆ6LV¯Z‹†¸¬ã“. N¾ñå çoFD¥g™3Šý-òtÉ<‰…~ó(r2Ž ‘ù>lF-iþž$›1ÉéI’}Ž9V_¢ŒßÞbšÁ{MùSìü[b›ÈðÖuÅ"¡8W÷ÙOØéܦ,ðk[2‰ÓßÙ)dRhhçYnÐN0ÒiN†Òóh¬É<có8š¤\¸_ÍîfW7Ó‹ù%¾Þ\³(Ï$ŸÞ|½½šÍgŒ @ÅÊÃE)w¡É­±.4ˆ–A¡²ðÚ+œƒk†?G–¯[Ï’o#‘;!*üh^¬€^²5|ôµx@ó
+¾ï!Lì^3þ=‚¶§cÏIJ/šh¢9ñïÙÝ5i˜²}M,gë
+ÿ<A~èŽB™‘þ!Stÿšíñ­ ½¤s﨤Àeˆ¤,ŠýšÐ8^-j2Žäî°qÆïË%¾A¬wÁt©“}­À8&l"c ý ñúŒÚ ­MQ¯á ü!¥9¯>:/-x9$Hû B™üd©ojÀ·Ð9yàà²LøuVÆN YfÐO¦%:ÃúÀï1‰€ÖU‰„xÄÿk´³Zá7öXMÙ°m$¯—åG ƒ*
+?eÎTè[¹Ø§AŠtV7kª…îO”ËÎ<êÛ™ŒeÆlªÀ@Á¬A˜¿QÐÂôÁd×3Ƀï65ÐzÄ^Î>|‰RÞÔ/;v]lK¿ ¢ºÞ„7-r ×I9R̙׺D54êÑà@ö¾uFÉ:qóûRÙ–ÕâÀC)ÓuD¸xÝ“Vûa„óúM÷ºLžj#YÇÚîŠjUÌg?ì
+yÕ1«„ñð‘àÛ[y‹Nžî$ð F»ö=Rß•¬¨–ìd`$ÞÀ
+ Ž©ì4%ö¡'úuÏÕÂõÁœ{©r{0Mßã®=æ$å8®ÐoÊmQí×ؤmÐ;’©ÎÈ]àüZ–í¿Þ9Áu…¿žGÆ¥‘¢Å{šŒ<QïÄœ¸4mÖûõ¢Ø¬÷4¨¾û•§óü
+¹ó:@>\3‘×ak.ý]ʾbŽÊ¶-V%›G°ûÁÒ&°EQÚ`7×TÚ(¾ÒÜ'‚•V,¸’Ùþ`Ê£44,’RiÙ&“ýÑ"
+g°CÞãº'µý
+7
+ˆX¹ƒTˆÉÙ¨ÚÂ¥×WÝ.È d3
+‡µÕgîÐbÖ:E`yª…³«Á€ —Ñá’ƒÜgÈ#sså]j‡òÜëPNPéž¼{zwÛ“*}4Ý*˜è4'Iô<Š2Ú«™P. ( Æ$Ï$¿›]ÝL/æ—7×ìögÕìöâνÿtÇ.¯àç×»™Cµïš¡‡Fl^uHöõ¸L`à<ƒÜuª5É·‘°3ã¼Ã°ýf¼d¸Q'ôáOIG+ í# ‹*¼ZØ^%¬»{:ùL\Sœ¤× ³} ‹&}Cözèìb˜Á4=……lë¾À_€¡Á…sQ²»(I8¢¦ð„öäü‰ntܦÜà768îk´ŽíšrW4Ã+qëM¹ŒýE@öF(²bÒ™1f¤ºMâóºAÉå7&ðª‚V÷=›^ÑÇÀ2|×í¾šAÊCN{å)mܜݡ£)ŸÆxCðÇ ×?ÚX&$ÌÄŒ¢•÷t2|U‘£›÷ƒ[{
+»…ë±,¸'mñ
+T/˘Ò)Ħ&0_…1O‰³…;?1×Íš²ß½ã‰!”Ðhg™ˆaITÖm´Ö` 7¾ßXÕ—`âa×ôHNGɃï*Pã=p/g¾
+šúeÇ®‹mÙëÿ,Ðœ`ÓìMxÓ¯ xz”#Å®ôz2‹]§×£ì§o¸*u@É:qó¶Áø¶eµ8ðPÂNöƒîï {rê×çõ›î ÐF²ŽµÝÕªô5æ4(~Ô3’òšgJæ
+`ËŽôD¿î¹ZPŠr‚ˆø@Mßã/ušC#H̉—÷嶨ðr]· ºG2Õ™pW;ulY¶ „þzçÿ—õjYnÜH‚¿‚#érÑ/<|ÓJcÇDx¤ I>lx} )H¦-‘3
+mOmµ©òµÎ'Vk ’ç6#X’ ?ß×ÕÑÃÁÍâzìMuqÖ¦ 7l´"÷)ÂäøD”œm.Ç&g{õKÐjo{U‰µ˜!ý|åJPÓu›§&»§2êu ‚öøò '¸Š²|£÷UY¡O«²
+ÆdZ•õ5™6ÖÅJÏ–.©ÉªqMæ,©ÓÍ–fr¤ §Â)¬‹9ŽxØR ¾Ñcp 
+½ N‚WvX+t6däâЖ<êíI-uZʼnÁ
+¦Û(/t&8™FÖé¢û!m¶Âs2²¦"eb¥ÎS4víO“™Vuá
+„h»Ã)Òu0y­{rWQ­ÁŽªöT¶Øñ²æPüc¡ð-^¯—«r¡üw‘ݾûéæòâþ=ý½¹Î–u¥?\¼ÿéçÛwžÀé´é4Ö~X<¿µ‰¿Ç=`¿ãlí:œÑŒmüËR+¸ÄåªXÐËÍà&ÛÑYâFôÕpË=#N{öþäÿa%ŽÔðwîsÜ´Üù˜Ý.ËÅ5—»—xÊŽ‡l·$çqàòˆõã¦Ý/—+‡^ô’^lxLïè´Í§Ïô@3:¢ªiù‰CÒ{„Å•Öd›ççöï½;Ф3{ÃkzFÀæaí7uňž
+ÕKô>†5îŠÂï(tK¹ih’[úBlŠ·ÿ>»½æý¸Œ‰²§üZüºèÓ¨,§¦ê’6óš*Ûu"“Ñ û©å 3‹ä_í—:/ïôÙÑ<÷Olô~k Ëm†½6‹ÃCó=` UѦa(î·§µ5Û#÷t„hd‡–^4Ëþ?µvŽ+ØJC>Ê6‡‹ ìÙߨ_• { rž^]ŽÞ+<Õpu½û× Q{øü1»Þ¼4±–ý„ÆÒ¦ðæ ’óžŒë£œ ìO{§*éj
+ãØœ¤ï¥úkzf4Ž5YæZÚÞ®ÙoG+Ôš¼Ð?]¡rn…º°4ŒƒööÍöÉœŽÆ±NG»Ý쟚tÄZA§ÿéÂ(È)gF #ŸìâÂ\ÎÿÞH]<vz2¤8CSÒ2(ÞëÒT‹¡ýC39ÄÇ®æ×dŒî“UjÜ×a
+oâfxMŒYàeY–à>˲,À!ËÜgY€¿ù´›:)ñ(Ë-òÁ:M»­æŸ]qµ°R ~¬ÐOGW®¦‚ÏÜ ÔÔ¨AWÁü°'Rà*5Õã‚äE"el;cÔŠ`«ò3107…,("À"ÜSD€E8PD‚{Šð EB)uŽ0«Ñ\7-Q¨fÿ¾»ËŽ‡ìæ™üãÿjNènp¥¨6ÕÅQvEwÿxh_@‹ qF …¢^$+›>l¯ñ²Ä· J…pƒâ3Câ]^ØTfJŸ~¿± ¦6;ØÿÒiS.vûd˜hЕ¥q´^Wº¦KñUwªeL¢*YaôÝ÷ß¡å/JýºŽ–“àM *ÉB;(•ÖrS›È©îÉ F&óJfp^0Áù½QD¬ƒ80X€ƒ%¸g°
+endstream endobj 832 0 obj <</Contents 833 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1506 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 833 0 obj <</Filter/FlateDecode/Length 4908>>stream
+H‰¤WmsÛ¸þ+øH~C¼’È7Ÿ¬É¤ÍÉ9[íõ&éthQ˜q¨TTzãßÝ)‚"!;—ñ˜"±Ø÷‹Ý_6,§¿ÃŽ½zs—³]Ë^mørÆÙæ³YžkA,Ó&3y.Yay&EnØæ+KXºùBÜsäÀ¤-:3Ò²E©³’K¶y`Éjs÷–Vö_&­Ê@xQ‚ì¢Ì¸a<áìàØï¬a¿lBkP¶P({Ñ«ùsl¢ÙÙ(roã¯ws*R.ÍÇ_Éþé²”'*ËÙÇ$å&é‚'9®s|Óé¿7Cƒ“µ™)O&Ë‹Ö¢¡ã
+N˜oJ8ÿÐkäXCè®|:#jAy ÈÂþf#
+•J‡ª{üD˜%·3UjîÑc²Ü29¢iàîÀaVJÓ%Ó3K `nÍh¼-Ôÿ›g£ÂÜ!7Æ<C˜;\÷QÐͦZ#9ºFƒc᧹²0
+™ 媰$ŠÞY9”³S´0– ÷Ïj”-Er»zw³¼Ú¼ÅÅ›5[^­—«wìjù÷õÍï4ó½[]¿Y sß0Ùå¼èíàâ’Gº°Á ÝÐpŠSnÝâ¬FW,LoÊ7Žu¸XáLëXÇ6µ4¥áNœo)œ³{²î ‡JìJ-‰t0ú- N™°¸gG¿Öú¡O%ßáó€ÓßÖ±Û÷a7‹5ÛñgJ¦aljz¹D†„>î·Õ±Þ ™wïüþmu²qëO£ä©Ïöá’ü4érÆ5„åº>Þ-HG0ê5º±\ÁWç Ò„rº¾>‚‚-2@‹:e n\`ªv‹~É úyvñ愬É3s@3º;0«—w ÖÖê^ñ¿ÆÌ5;ª·÷®:¸ƒ”Êdÿà^c€–p z^âk0à*qRn„'°ý¡¦Tw߸ãEj”K¨§LCõ5PUͳíê0¡Srr‹ 8Â(§.ö4è¼z“Éaÿý_GÓ*W+IoÂ_œé¼”3Å£®™—KR¯ŠKþì´*TDÉš¸ùG׺f;òP åï'$!ç‘9(Œ<) N=ë]—È©*#}rGªn«fçBu–jòϺER.¹%…¡â×ëÉ_2œçnÚèx3Åòåë)•%vºUŸ¼ìrÞ')sì¤AA^€±½èg  }¢§o¶T¢RN®Òòl8ªx‰»ÓᎤLâûZ5Ç:…±m/NwBNe–¶Cýȯ×nøõ7/Š9W¡G
+.®|@Šâ/)2ÓáÒ‹™¸4.ƒ“§l‘qñcë$—à ý,6Y'ç‚õÇóåÅäâ̹+ƒÚÚac$^(RNÓ5‰—PçM¶†"Ï;¯1$¢“aW—c™»È›ë¡¥~誻ÛPž"ä®ÃŽ‘±‡¾@…–ï—»`g„¬ó`”ì}ŽPgF°¡#€Ž16‚)k°(v û3äÚ¶Ú9¶Áéê)…*ÊÏM2+­ìç¦`Bƒ¹«[öxL¢è7³÷SÖB(ìȼLêOCÛˆÁ`Z[(-9T°/n‹†QÈ9€r-Ê9ŒYYP †Æ_a#w0ˆ‘= ¢Tƒ¹ƒAŒÜÁ J&ĨcÌg
+}jé±>@Àé bzà°RÒÙ5µ‹ žÐò®ÙãO‹uzðtï´ rÄ!i7§›ò pøÁA©8HÝãË
+ZïÊõD$ûò ¯æ­n²¯ÂÁtUv
+"´õ~+
+ô¯j.mú<>
+æÐË!ö
+öÿ}'cç÷ª®iôÃ$µámGßNóO'.WâÄt¹•q?UTdÂë‹Ë±úëLÈn~æP+O˜T‹a®
+*y)˜PÏ@3¦X†h×Ì)™ A#ôù$Ë„,Ù¦k›fˆÔ!Á#mà;$xÄ <â >±C‚G<F‚j[½¶Ù7Ùju#tM‰ZÎæ9 t«ÛàöÇHiå\7(ÒȳyòZ©-:TÜòHcÆ舅G&zH$3“ ")­Vë¸ðôZ);áM¡&EuJ»ðŽ%J?Ý&‡§é}æy+Mrö°n¯CÛô^
+Ón/¡ÞÛÚ@qz/¥˜-ij†Ž6@õlÎãngDÈv; Oï¤4ï‚hi3ˆ¯E¸/ÆB`ÛÍbâhpômžv{]rÄã^Z¤ 3‚ñJÒEJþ  Ò%……-óWûáž.à%n30r/9Kx­Fžk®hÒp]aŠ»«Ÿ Ýê¾ã!°!7ru 4èŒ ÃÓdïÉi­Ô)*í´«—ÜÃý½Á)VÇȧëïO_ÖÕúÈÑt[W}Ÿ J}ÿÔ_ñÉîõû ¢DjMáb(4i~‚×X1=Ïîu6¦J“‘ÐúÄN³G:¬åR&;þ6ÛÐÔ1­!¨g»Ý­¿Ï4ÐS× Q#{³u MÖ–ñ\·–Z/[¶x wÏ» ªAý ã•SÈ[Íû îZüý r–ßEðßõ—gûm{YÕh¸”.rñTÔXåƒ>Wè))=¬¨.îžÝÚÈa˜ü¡HÇ7îÙ=!}E‰
+¨éãõ”É)cûw‘Ã#öFÐ^“¢Jž[]*Ë¡º¹ùdJÏò0Â_°ZÞ¬‚Y‘ëðòãÍíõïÒÛ…eÍ
+Œ¨ËëÕ§7«k.myÜ+_yË&Õ9oŠa‡½[
+endstream endobj 834 0 obj <</Contents 835 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 835 0 obj <</Filter/FlateDecode/Length 5454>>stream
+H‰Ü—ioG†ÿJœY€ã¾g芣…íh%:‹ÀY,i$00I‹¤ùßoUs²HÚʧ…arÄwºú¨§Ž>›2îÿ­Ù›··œ=nØ›©ø/g‚M˜+87Ò¿à˜±…å\±Ò‰BInÙtÁ2–Oÿð#DÁaJwLšÂ*Ç&•)*¡Øôže—ÓÛ+?àrÊž˜rº
+Yè&Læ;¢á4LZȯ¹(³Ë\g·€‡‰&RpÉïú.‡¶8|Èœ¤Ö»ð
+²rÐêŃn¬ˆ@„œ
+xt! 2zÁ
+¸·€«:àʶâøxÀ.ØvåÇù¹Ý]É ,0³—åj…«|ðgw¶9ÁHÅ 7£Åq×DKSSb°®³ËÓsˆ”Ÿr43‘e'r'¦rEIwÆVðEf~JNqBÈ)N(9Æ !Ç8!Ô'”ã„ûÅdp)rdküC 0Bg‰]]x÷ûÂ/]Ÿ²÷yÙq¬’h=xËå%ÔË?Î(LH áê"ƒ'£éVÀ˜
+èפBN@r‚’#„ Ô%G yG«éclJQÒ<hðA§Õ<Ÿ=or—…|Ÿ»}øƒ—'Ç]a)!³Òž×%x¸=!=(™„œ<OÈÉó”=OÈÑó„š<OÉÑó„<ö¼rMÊ—ã[FÓd©ªÓdç6[Cžoçw3ôÅçùök.DÆ.@™ç‘ùŸ!?‡ökŽ…à’v¶ñ¯¡¯´Î~ÞÏ ¤0mÌ¡^K¦›Cè÷ÜL¦Œïªéø¸û’˜"Û/£-ðH³P¸N´í…„„Õ›HÛ=ÕR6*ij’Á‰Ã݃Q5í` Ît'JwFµ3”JwG†‰Á•½Y¶ÃZÔŽ„﫵†ªÓØÙÞYW{VjwÕ¼¿êÄàj;6†Ž7ZÎâ%Ôš2ÒŸ±zzr¤'
+ήKí"›Oþô‡«Í#{ â®®õAì¨ 7›ú `p¡p7ÁëötP•WrUVîh>nºþN¿¨7qW€¿ˆ‚ë–NI}@j½Ôq¹ñ¤í $zÒ‚ØÞkÈEÕµüWý;îÿÐ<}×Õ®è÷݋;èÕÓ¾¢a+#ÇE#‹´sbR§¯R4g\©}ãÏ:Üc½_ÂS˜’âφg­<žÊ¨¢v~Ô«$iðƶÆÞX‹ö=–I,ÿôÅY+ÏE¦WŸ„èòÒÝùÌ›Ê$kð I]×ø6ÓEô¹Õ~#üUt5ô\LZQ³#††ÌÖæQ”¤{þoŸ÷k.R³2ꥤ.“>c c^o6UßlfåªÞUûÓv†Ú±>Ãc›zj³(b“LCu_û·Ÿ­aÒƒ¦’IMŸœF¾¦Ì¨‰{kfÒâ°=m×ÕãöÄýóÛ`¢ )üé7ôÉžãg*sœ…Ž•ä÷ß—5“¨Qp$gŽÇíþ³1p^dÒž×àº&ç¥z—•&˜ÛòXO眒Êr4 A»£>³Òdq®‚©l`Hæil‚¨ÒÆATËâ9´qD ®‰6€Ó$ç Á.Ü
+ˆ,žâ$ë1·Ó¶ÝNþ=ƒ¢pE‚”DmY 8<ìT½NÄ9®™Œg¨)£€é4.?}™!g¨ãL
+m ¾ØlõÓâ±›yÏ¡Ä,Ókµ´Õ¾’QŠ%£æYit€E8TbQ&!ƒÕ$€:PÇ¢jY@[à–E!ر(
+ñoqþ{º€êô·%Þí˜èwuuÀÍì¨è5›ú ±o£o˜¶¼n¿t¦¼’9¦,
+endstream endobj 836 0 obj <</Contents 837 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 837 0 obj <</Filter/FlateDecode/Length 5153>>stream
+H‰ÜWkoÛÈý+óqX@ çIrQplÃu±ëzme‹¤(™öª°([’Ûäß÷Þ;3äPÔXj¼è‡Â€,ñpîóÜÇ|˜²‚þÖìÝÅmÁ6ìÝTü£`‚MïY…‘ôBÍŒÍmQ(VÖ"W²°lºdœeÓÒ áNp¡9“&·ªf“Êä•PlzÇøùôö’œOÙ3SµÎAxY Çe• ËDÂÙºa¿²–}˜ÆÖ l©Qö$¨ù÷ÐD'ÒÛ( gã'§wz *2!¹aZàÅ~qòLpì3Ï„å2›^àsßLö÷é_ÑàŸÁd#en«Îdõªµhè0€tzÇ:>ñqòM,_ȼ>UîQdö(*ôç,Ò%ë"QøÍw(r2v )bŸ€6½–²>&ɦOr9JrÌÃ>Çê"«øõ5¦¼×”?Åþ…ÿÌã:3|ƒ_«–eB•î-Ì~Án
+N»
+Ö3ì_ Ø–
+2{¯°Ï”ì3¥Uטpîï{»&䌪$äì'LRƒ{³™=4lŠ{Û· ú´(J€Ò¨øŽ^Ȩ\Eì.P£ÍµAS ¿§vKmd¦´ÔæJ«á Pº‚ådÒúÄ¡ÍåÖ ›#,Ì›ìö¦ü–‰’Ÿgšßfìs ^sàó
+z Úa„ŽÈåaëTˆrWd=}p OôIÁž> 8Ð'ú¤`OŸ<¦OÏ1k{í©ž=¸ë|`§ðoÕn›¯™T|»a?.6[L^‚AÅà •WV‘¥É4 0f¢M¥Ç,¨½Bÿ^! \¬dÑÇÈIp I$IÁž$ 8$’¤`O’üÌ`Oáh!À¢yupÀJÑïGãUÒ†)jÜ
+öe’€C™$àP&)Ø—IÅ1_„모Ç5P
+@– '}Ï,ßÚ2ÝÒMC·>0t5—”sß½ Ôˆ –L,R•#F@dô¾ÕÍÁ¶¶¹°b4„<#R°gD
+öŒHÂŽ)Ø3"{F$aLj<ž®!Ê4!*Z¬CS|ö#»€úžâÖu=¹>ûèÂNݤêò?ýÝ¿ž_š[Â<šl´j÷&vëšÈê–¾å—fM×½LÄ5d§çðH‚œúÛ¨£ák;ì Ä“D<å‰7±µVI²ÙÚì¿'xÚº ÃLdKÀl 8-{²%à@¶È–‚=Ùð÷’Íèâ=Ù>E¶á4:Ä:¢æñl“µú²MÇ6ˆºH;«d6ͶØ–€ÛR°g[lKÀm)س-Ù&«~±I³MBmÔÚ€j?²+øœdŠ_ãϸú£01ífÜÇBÇ;–Vž®o¢•u´*¬.=­ŒLMOÕu±RJÏ+#Ƽ›æ•yîmðŠÞ5RpàU¼JÁžW 8ð*^¥`Ï«ü½¼‚;Iw±ÿ_^éãxñÕé;¬© ž‰å<{^¥`Ï«$ìx•‚=¯R°çUv¼JÁû–ó2ŒGiFÄ2ÚÝç Ø\Ñ«H¬ÛDhk¸ñ9d7YÍÙÍÕ)»>;½fôˆ^kñc›M$¼ß¾fp™ÚFÓtÈ·E{¿êggÌ3•×µü#x殞Ä3q€g†MÖà\T•â¿eÀ±s¸Þf“¯†R¦»ª]úad‘¦$«¿B ¸[ìC…ŒOj&ŽŠÒàb`Sæñá@ÜÄa S¾¸Òø«?x8pÝ ·
+6…ø´§}ê4À&:Mx0_©ˆ ¤tW±å¡h§®zá{r|Ú×Têô¸?ì+NïÞSkx)eæÂë,VšÁŸ®…;ú›ž%ù¯ ¡@[U`p»;Ö¯¬ ŠŠžè‚FÆ žT£ê® ùͬ}h‚®ŸQðYäµÁ!ˆÞmr¬Œ¤ì(ûÄ¿¬^°TÚ»P+¤Ȇ ô :ûŠÂ¡:»ëTìµµ÷:Ê!gôÈ'cäÍùקÇY;ÛfÂòŪ}Ò ´þ7>¹³iŸ€á0ª.÷qnj æ Ž ,°òÀYo3=ïl†‡J›„½ä:^jT¿ÓÈñR¿p©1ë+,5ËL`Ïju«Ìɇ n0®ïB—Õ¥ÀúÂ&þ¾7ƒùDCGñŽªåË’µ«œ­î±»3/‚ѯ¾°f+ºÂA=À'nKØîsöËìñÅ=[l蟄Š%!å}侨{XZxÜǦ–ûPd´Š[Pˆ{â´Ô¤,À²’ØRFOœÞƒ¾¡Á:î_£…C¸…£®¬¢ù«¡0ÊšDÑ÷N–® /W!ó5Œd K†ÂEãúäâòê¿Qøc‘MÝNxµßXm 05(˜Bþÿ=« Ÿ%ÃOÉ—™¼Ùà:ƒg
+àÕ ‰ŸàZæÊ÷¶*ð{öøHÁn1ìK3[7kI‘|u×ü
+Û¹…¿!:˜9 ™²cÔë3+k¤š.]<í¡îLd2ÍjÔ®HrªPyÙÝÁ.Ïß]€‰ëÕË»š-›ÁÌÓ7¢`ÂA ¢Ú‹§IÙQ<˜~¢R¸Z=º@­G À=ÚHÖÈÍë5–Á¦içáj†WÚ7z褼桄u±î=”ý}EQ\#cu$läâÍŒn3ÿ0²,¶Ôïð¤ìú×ÄþUŽ‡·Æ‘¤¼G%u/FG…qG‰)öÔ¶C! 5ªŠ?ý‡÷rÛmIÂð«ô%9€öÍæ`1@`ØÞ“Ù]`n‰– ÈTFb°ñÛoUu7I‰,9Ú1ö¦¤Ÿ}þºê/ˆhíZ Û9×·›_‰K@;¦KÈ›Y`Oæ#ý÷ŸÛE„>OÐÍ×°#*!µž_&Ý;5„ÔÍd•õsÕvM
+¶cu`—G}ê™>­gïxaëú°ÂÖ|ó£E1ã%™*·aEòg‚ÙÔ°S/Ós»Ú7]³ª¶MGyîåÈã–T$^Dæñ˜ÔÁ9(siGP²6—Ÿõ2]¤Y—kjžEf»°Kˆ…êä°&Û¥FGE¦Ha—§^ëXÀ1Œס˜²Î5Ö¥\t
+ží TíƒNµi ®Å<ôn_WâæMñÈ÷˜h6îS÷ší‘¯Á¢<,™íaÉ%—¡Ô‰ï±îŒïÑÙ9rà¡OŽ.O=q9’ÃÈ‘Nä0r$‡‘#9œÈaärÊž)yr”[J…hÉí¾‚$ÆG&ßñëÂK2:ÂH]€‘~˘£ßÌ=kKÉŸ£HÙeæøøÃÈ‘"FŽqr ˆ‘#EŒ)âä@#O)Òƒé‘gL,–*‹Ý¥6ٵ⡮öx«§†ÒÕ3œÁš¾®ªŽž»ÖŸËBY8©û·°=E¤!¤G!•ÃðüÈ|©…9òÃÈ‘Nü0r䇑#?œøaä~ŠŸ’ç'³p‹cþº~>Áß¿(m]¥‹"yI¥LVÛZ|¬‰—M÷ä‚ÆÈ{@2±Ki`Ðk,ãÄúñÑ×ø¦»oLÓÊ)ò„€Y÷=Zc
+*”]Ÿ.þ0mÇó§JC¶œ~‡Wà`Çüqrà“¬ìùãäÀ'þXÙóÇÉ3ü ø)?åò¥´¿Ͷ˜ùv_«-åA¬ÛP°‘Ê©B3Å(Úò‚<ø¦ÁËØ·²SªÔ
+ÝrB­ôÔÏߟE»[ŠÝ#¥òqoâ?©,ý›Ý•m­èžêÓ÷(`$ýÐ-Åïþ°ý^ |6z(
+ëvÙÇîa›ñMÏÈË$†l&œŒE T«£ðëÏh¾1ªÅÐÅq$ GÈ =£þL4*-¦&<T­?×,ƒnÆpððPŸÎKWX☢¤®èsß—´%Ì,2RB:Uº ¦ï«ûÛÛû;‘–NAÕ4dssÏF¶a~½wâg C'O0Ds@_XF%“ú.l‚?VkÑ »£—ð_Mo¶ tPȉ¯ðÕ&/©t;|ñ‰Ú\„j>8Õß~Dºw`’=‘Lc›P¿ŸÀÆc³+´ó†['¾mkñ­ÞSÓªŸGÝvâ¾Éä]
+?ˆ/ïE³®ýx ´ÿð‚:š‡¨öO«Ú/ÅM7Úß½_m
+endstream endobj 838 0 obj <</Contents 839 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 839 0 obj <</Filter/FlateDecode/Length 2766>>stream
+H‰¼—koÛʆÿÊ~$ ˆá^Ižo‰í¨M×RRIQÈí°µ%’>Aþ}gö‹¨QÜ( KŒ^îuž}göÕ’¥ö_}Ç^¼^¤ì®a/–üß)ãlyËŠ$Mµ°/L›Ä¤©dYÁ)RÖ,bñò?¶w-RhÒš Y°Y®“œK¶Ü°èb¹˜ÛKö“…J ó,‡Q4y ã)tÎê’ýƒmÙ«åp6Ø·PØ÷, óe<E×¥Ÿ£HÝ?ºq— "æ"ÒLqü–ìƒû!‰y¤’”}Šbn"Ïx”âïŸtü¯å_q‡)k!“wS–Gg‹o m½7»hæ7Äõ¯‡ýs‘ßÜ™H(UŸâÁX¢H>Ø~ý¹>öâB ×Øô£dÅs‚¬û g“ 9ìc,_Çytu…a†Õ+?ÉþÄïãXÇ:jð¡ÚmYÌ%ÌÒ½…ÑOÙ5Èö½ûr…¿6%³ˆaø³ÜFǤ‰€µ KúÖR¸]Š]‰œ¬Äö‡+10—n%ó‹¯ã,ªwOìrõPgÀ•L2ÑMá›3˜DÌu°7fÄñâ¹HrÕ ¡`îùóNåx ÛÍdqW‡²)·ëѺâ”u¹Ž­Kؾ»!D–¨o®ËEo<m¿?Ðõj{W˳Óâä:8¶)T2!E/ýV˜úc%¦Þ‰ý¥hd-œ }e=–lµÝ°>tãA\ßùd5vÛEG À)ô]ÉSÑ­ýtÏÛ5~–qucÀJól‡Êž³T3DžMù-ʇն­b®¢uC®Ìö)ôi< £…mÊf W®ãÝ?KRðºéWÄŸã$b2ºíe²³ºj«õê¾ÂÀ Üà ©B&F
+KÝ{L>%›Ÿ#?HJ.$}à¨
+KÙŒ'Æ=‡n¯cÉMEK û Àò÷ºüã©Ü®€µKi5Ù]”lgšw
+#ó_OL!N"¶Ž!F [‚µ%b9CÉžBöÄj †’=1„|àªÖßÔŽÀ£$ì^€ç-¦§ÕvuW>@Å^á­lÕØËÚ†Yñ<že.ÏùäØ'C•¹lˆ7¼ûûÝ—X¤XŸí'»>Ïaƒèx’eÜÃ&`SÃÆyÚÑfòâ
+‡Æ‰ fƒOøWAóê‰]ÝÐcDØ#ɽÇ@i£´3™óªÆ®Ëu[ípñ[èë7œüÙe¿ãzm ¶9î XPÐdÝ°™µ6(¯/anYtS#«5{6=³ýÃ4S`ÕšÙÂ.QGw[ÜÕ=<â_…Ù{gû¦\ÕeÍð’´Û”¿¡õžÁ†`I©"Ûn‹·&Xªm©QN`»(cÿ|£Ü$SþO€
+endstream endobj 840 0 obj <</Contents 841 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 841 0 obj <</Filter/FlateDecode/Length 3888>>stream
+H‰ìWÛnÛHý•~$þ‘ÍyËØFàâxleƒd±P$ZÃ…My(yþû­ê ÙU’û²‹
+ÃîK×9ÕÕ?ÏYnÿtköîÃmÎÖ[önÎÿ•3Îæw¬Êò\ ûAÅt‘y.YYñLŠ¼`ó–°tþo»‚»9¬@hÉ„Î
+Y±™Ñ™á’ÍW,¹˜ß^Úsö“•ÊÀxiÀ‹‚åÂd¼`<㬫ٯ¬e?ÏãhжPh{Üü5Ñ™ô1ŠÜÅøÅùß‚‹”‹D3Åñ_Éþá^d)OT–³¯IÊ‹D¤3žäøžã“Nÿ9ÿ;ü „¬…È
+Ó‡,F‹Ž7Юދ.™ù qöulŸ‹¬:¹#²<àHp”«¯iäKTyÆ£í×ßáÈÙØwÄ…ŒsÚ ^Êê%EÖC‘ËI‘c5–R“\_c™!{eë'ÙŸøouìRlñ¡Ù´,å¢t_aõsv°ýî¾^àÛmÍ,ID\þÒd9T§È3¹R:•
+·©ØLä$k3) –>“Ë‹wÒ2é6OìjñPÇp%mÑ|'#˜TÌØó™°¨^Ü°Ý»P9æü"UŽY3“ä®±õ¶n—£¼HC¾%/gàX^BW¶Ýx¢ÌÔɼ\õÆŽ¬™}G7‹v]ÇÎLù–dLéC&#…Äð{9¦vªHƒ¨Ä´sZƒ¸Èv 
+ž<§Ò$5[´+6nìÄÙ6“t$ìµ°éh„÷¶;ЛJîì¯{n—ø[§UÒû€Ta3†²©ò%™ÓLˆa”ßmý°hwMÊU²Ü’‰Y›ò€Mí©0ÊkUo—ÈòæÑÞ´øe¤4ÏÌP<Å_ÒGÄĽ33Ié¬kvÍrqß`á.’™ªàDy‹ÌœcÌÔ\g²’{Év ^ÎL.ö’{Ÿr“l·Íº­iû…&¡õ‰½rMöKDźa/,s8O9ÍÙHånԼʌŠ`]Ø“ïèZUÁvzPäYY8”—ò,$< –¸wGàÏbV²²ì$`«cÆ}Òêë$†:)Ùw%<õ÷zéû ÕH¨ØG,Q Çöv»X×lŽSÛs
+M
+ú“-—YUq¤ïÊ~йŒ¸£Ç"“%†šû)µi£0%·#m&¥H€Ðžfýª/I•‰ŒÃ0¡an„ñ‚ùPT†qûP~Ky™\¤*¹MgØäf@Ghëv íñ¶Q©Ôò0TŠ‡]î%6°‡€{8°‡‚={8°‡€{(ر‡@°‡왎W={¤R={æX¢j°XZîècÜùÔŸE$uN1§'Ž9IœÂr
+gjñøxi@KÅcï[Š#ulÓô)Ó@vÖû<Ç’@ôä":‡tag“•ƒ†ßò ÂhiI“´´Š²€7ž‚pñqc¦`/-
+öÒ"a'-
+öÒ¢`/-¶Ò¢Ð©´äИ9ݘ‹¢ÄËØXZÒJë&-’ú®v»ã~_”˜©¢öœŸÒ˜ü‘íÙü¨öŒ›‰’¤8D] mL©1‡8pˆ€‡(Øsˆ€‡8pˆ‚‡tÊ!7×õ²§8¤Áª‰8¤,‡šõºîØå9N|Qk:³9Åñ[sùßkͶÕþïud¤U~hŽöptQCçÊ÷ÔDÀAMÔDÁ^MÔDÀAMìÔD Ôd¢bÒ•‚Â1}†k(n=»\Õöš+’”?¢îþ¸sRT?PSÕIM座¦‹ª4í"¢ç)aaŠÀád×lÚFpÏî6],dœÊa™íåJ8"¿ËqO²ûªPYñJMä¶ZBZ#¹=w4ÇObMP°×{M°Ó{MP°× [MPèTFô5.-
+…6‚(>A•Lrfo…—0¤œ§³x2©Ä †¾"ß-?˜ä:¯¼´ ïùë™Jýÿy… Y‚û•1™ÈÉC†‚½ (Ø Š„ (Ø Š‚½ HØ
+ŠBÇ‚rô e¤ P)û×ÝæÑ6ÓõÂ3›v¨/z>8s½èH×˾«»mZÅd׶ê^“¡ç'ŸzÅ‚|ùÑdÍžPbáî‡ÎŠTÀÆ$ã/žÜz,Kßï£ã‰ÓD'%Uõ^Ë^«;«ÿï•?­µW]Ê”¶‡SJ“XM]”FÀAiì•FÀAi”FÁNizHi’Vš(ñÁ+í#çpRÙ»;ƒ§M{׬Ÿ:Û÷¾
+°„½y ý fNê¦r×$ pÆ!’=Þ¤3(¥NhúÀ>ªœ¦p—…p…(Gô!à@ô¡`Oô!à@
+vô!Ðéä#E šG¼€¾ulÕwì3¸l°·Ýßc¿®—;,`ƒo w_XFíš@.¯£^ÂÇÓÁûÕª«±sŸèÞî¨~CûæýÕ¢<rµn”ò<œ\æ¸ú÷0÷÷àÆ& _#ÁñՔÜ3¬ ¼$–"Œ¼ô°.£¥³ÄR!á¹G ÜþD´80šXŒ°éÑÂÆ-ö|§¬Û°5N9ÈÚ-e¿|Wñê b5ÂQàÐgãµNJÔÒ):,õ:Sû²‚ètáÔ…j°“„Y8MXke ûÁ·t´U°§eeMÙçÁì1A¬ÌÀ&áö¨Ä5"¹½8û|s‰¯æ¿±ŸÎ/ØÙ§ß_ã«¡Ï«A5B÷N5d"Jde1tŠÈâwt³MqŸA‹xH…ÀQ „>+|¿XÃ5kPUö;ü©ác'R•ì Õ°ov”NܶvøáïvÍŽ)W©€—¶ë´d­ýŽí~ [KÎ(~Ðz“ÆZzƆ³@|Å–öƒ<>Úµ]Óâ×ìî ñeêf8äæOûApÒ-ìÒU³aóÕÝaÓƒ&™ÙmˆG®~7%÷}J»í¼ép¶ƒV
+§2lQ Þ~Ïììj¨Þ§–¶Ä·mï+8R‡T?_–öòô%a7W[™œeØÌâ›RÑŸ ®à3k†3¿q]òÂj û¯[›æ=<â_Øì2MÃ~ÿ­^t°C~:ü `¨˜±†Jìº뀧†¶Æ6ø_ °M‡/êÔÿ¿¨WYßcÿ`e‰Ê¥ù
+óÆ\÷4žNMÖ¼Ž8|yñîCZ&Ýæé‘]-êàÿˆ€ÛUÁÉ
+l‡ƒzOVnPÞt"s›"´ŸçTÂ]³†v¶bC!ÇNœms8')
+Ø}tPb°Á 8Ð’îì¯{n—¶IõÚ•¤„áSË—äk[Í8kf’åmý°hw ŽŸË-™žµ)ØT û‰­êí¹ß<:ÛÖ^Ž†”m`Šâ/é2bâÝZÙ§å—ä¬kvÍrqϱöTe¯}¯âèا5pŒž&‡ˆžÐˆ Ç¿¾\ÎÌ$¹÷)7Év óqM“‘Ø/4éÚÔ¨Z“ýQ­Ta»¤©€;“‰l NFòÿ_-»mÃ@ðW|´
+XI½x,R‚6M‘¸‡]WMÜ&q`;(ú÷YR"m‹FÐK/~h¹$EÎìÎThP™ç“ë6R‚OΫn}. ጞ\:ÕàbL:\š6‡K…+hÓ3QÿƉðˆS ’@µ§VQûRXYÖÆÝ×/¨Ûí–÷ÝdAC¨XŸäÎhêZ/Z8Võ
+ÄÙ¸`á¼G+‚=S‘=ƒd0FûTE!ÝöCïÁر•UËö³[q#âUñS78—1×æºSéÏ û*ËC$‚D¬A*ìA÷ H„=RQ‚Dø:Ò…g@PrOCszÞw÷Û ò}½ÿ#—üe»¥‡Pæ*ª¼™Š(XØ7(ÈcyÜ8y|ùüc³}BßY²b«A2ê8Ù2¹Êu­Eéi¯áf h#",ÑCªœ*)£eÂJ¥5—
+;&&£Ž‰©ð›ÀD›d¢‚’*†Ž<^m½/äÚïÀ*‘?üvÑÑ qaÂÌ4¸¬k¸7wMè¦6GUºÒ'U”Ò~ýñ[ÕŹ­Œ1 î,ð€þÏÄ’Ao$TýF>ÉÊñ©,luÀ§zhfMÔÌ «6âÃÒoˆ!Vóo ± ¦eL*,¼IÄzޤž7‰pÏ›DØó&õ¼I„ÿ™7ÚàzÞ|ì\Í¿Ý/÷¯»Pþ¥­´o0£Ô0õ!5¼‚©K)^ºTQ™þ@ÂlH'Xÿ"
+…ncA°çþÒšhý=>HÎÍç v»¥¤-'»W<]­:™ö;<r‚mÇg/›g™Üͱa_BÚmVMçœèk¦§7ø¾dªÛùùcÉØ[5jw†J2}Ï^õYHÿáàÅ8€ëÈÛÉ?yE¤ä2l(
+endstream endobj 842 0 obj <</Contents 843 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 843 0 obj <</Filter/FlateDecode/Length 4760>>stream
+H‰¤WmoÓJþ+óÑ^)fÞmóÛVˆ+µ°mV!5!¨uJRöŠ¿Ï9cÇN<“Âu|æ¼?çeþ˜ Éÿ¶+ñâõ«x1Wÿ•B‰ùgQR:Íjá|á¥4¢¬Ua´ôb~/2‘Ï¿2‡
+DZ
+oj1«\Q)#æ·"»˜ß¼a†‹¹ø&Lm /+h±`×U¡¼PÂŶÿ­øc>¶†dkK²g½š¿M ";µ 6~zç7P‘+9aý5â_áC‘«ÌR|Ìrå3ÏT&黢7—ÿgþ'üO˜ì´.|µ7Ùœ´– = sY—ͺ€ùn,_é¢~2"¦Œ(rEÒ~ÌGºt- 5
+¿ûEAƱ"¥íØ'ÀfÐRÖÏI²’\N’<Æácó:¯²wï(ÍðÞrþŒøým(ÛÜe;zYoZ‘++Ã)ʾ× ó¹»fA_w`è!ý:ØÉÖÁ Jo^;kï|°“R·7Õ%ó!;Ïg6[ç3 £f%©uÙ’ëM>«³ö¥¸¾‚->;¬žÔšª$éÊ>"P}õé}ð”­éȇLœåZfW¹²YÄ°Åþ(´RÌtA–Ý‚ç&÷0Ìe«6W2[Üá•þ¯ÉÌvEßħf±m¶â>×&ÛÜ6/A†¦*ƒåÐÄ|-¹Ö,™ÓE‚Øl×çî7hn;ë¸'”¾ÐÀ¿ª
+[)á@óX”ës€@c…åQ´,¼íðæâÅë¼Ì¶›ïâjqߌK\YJÕÞ„'-Øçã@or¤8£²PL\µüëYÍ/¢eMÜ|G˜ovM»<ðPãjð7= RNy¨]Y”C$u‰?ÏLæTË:Öv½hWÍX#fÍo§Ž…ÈSŽôqˆÞë‘4ÆžJÝPvz:¶X`¦âU¥²¹©²‡F,Ú[1éGrÔ
+b&νÊU•ívëUۤјˆ‰´Vê£tMâ¥GɲØaBUÔZA.z?àÉçCšSu9PÇ6èOóJZ:;Ü,} ªRQ'IP5$’àÙ(›¦•e‘æ´¦œ“d'uQ¥îýM» ÙÑF7,ªšîY
+Ò~_×4D»\]RršÝn±jÄ<WÙB‡Bsâ|!¿µ¤ˆ×‰KúLðÖGþ ŠüWUÙ„‚B$MÑj&°1ë:Ve 8wGßü.r‹]eF]jf¥îõµY’!$ä;!¯"ø`ª¯Kˆï¢µ/’)j‡€™¤1RÔ)r‡€$9 EŽ `˜K09‰€ª‚¼}µbIü²ÁZÁ©zÓrÈ›jøçûÝv>-ùÏš¶jÚ¹yíVN´0‹õóœúÉÝ
+k!ýr?
+ùî·U˜¨ËêhÌx3ÆõsFúÑœñöÄœ1¥Jc‘²2‰ ‹MJý8FSXÑÇŒnâœDô¯£Ž5âíQgÖº¦¥³§V–ÖÙ1ç‰>ôToh“qD&xËŠ6î½É5¡i§¯‰H™Š†Ø^1£s´èuhŽ3;i0½fŠëdILñF¨oWúä}ÉñtôÆÑî;Z×G5Ä•cj–€·’kÑ–¶¬Y¿²$ßQ»Bª‹|VeŠŸºTëJg7g]¿¡Oó÷âòíù…¸¾ø“~^PÍ~Çæ“Ã-UGjO‘&G%½~ÐÈýJ8ç­ý Êp½ËKªü¼ÏµÆER㪀o‹¨X“|† _n[PQgâ~Ò:©QÚtð ó\_QC_0ÛbÏ"¾Ós÷å²a%Ÿ©eЇ;·mèÛæeUâq#âw ÷Wn²kü}C,Áþ÷øuööò’õ¼¢VquÞ;„qÂAûÄgØ1|-øPˆêlX­èÍ«nëA÷1&l=çh(Ôã4ZàŒCᨵ¹ìq½¡†Ó¾„ãé³³!SæhÙGÜÜz( yT–‘ô!g9¶«\Ù¬ÍØ¡Y£7ö¦Q6©ñÝpóuh»äðâ¯ôMf¶+ÁŸšÅ¶Ù
+¤Ød›Ûæ%È‚¢
+Ë¡‰ùZr6@ÇÂ6ô“ ã(dmØÀðã¶Ø·Óoc˜sš‡ :+ÿ‰Û«r}¬¥™ Ë#ÐjĿž¹xñIÜn¾?ˆ«Å}3Üd¿¡Ø06ö<i@¼îYˆ<Ò
+¿WSÖÔ˜z=8/«§<Õ6¡eM¼|·¥ðbùZ8¨1¦¬ý]ƒ”Sj4ŒrðP—’“¹œjcYÇÚ®íªkDgÒ¿ïK9噂z„Y€ù©Ü e§'*ƒÀL©¢ÏüÈM•=4bÑÞŠ!•‡J‚ì*î“ÑØo*R Fm¯
+÷(SÔÒ÷÷¨KúLðjõèvV;½©þrfªÑåÌø—3g©}}m–dÉ# 9B¢e%LµµbjØþ«Di¢´.ýqZÈ}”Ö%>J벧…”Gi‘|óÈ—tÝH¤ÛV(T½¯Ol„‹ï»píå¸Òµîs"“r”D’ÈÉó…sf8¨MIû¶*Ç9äƒHF½Ï2zÌfÛ bú\R,u2—¥fj4—1ZŸË­Ïe”Öå2Fës£õ¹ŒÒº\Æh¿Z»2˃dnun¹[´]._q΋?îCü±§?;šžš®&xçc(6eTöv¿0 ÔQ];©kãúÂVrTØÞž(lSª4&kýê DïƒXøMiü…(q^¢b˜öTÇ
+H¤®í è¿ß™!iQ¶ÆIÓ=Ä‘ô’Ãy8œ±¦0îP‚n\£5r'KÑYš‡ ŸÊ-˜™.-™¢çÁ¼ ‘Mgó2‘ô«, k+•|X-ÞÜ^ã§ÕR¬ßݬÖîmù^,VËÛõêƒ#ùl ˜‹ÙK É-‚¿…óZ$ßðäBâŒÙÓãLZHÞáïgsÈÔà,Õ÷ 7¢¥:?ˆ=6€L¾Ã]™ˆ;x­ð¯_n|£. š³8ô³¹ID‹í!nÔ‡æÏh0·øãFøŠåƒ³EÒßÅÞùN–èySZz@»b窘8µºh\\ƒôë¬rBO³¦9ˆƒ›05X/éß"Ìû/&u,ÃÜžç÷<sUÜÿööm릴‰fy…»µXÎËO,è|P,üÒTDš.¤ìW"M¹L@‘
+×ëI„ÏJl;'ûs<V• ™Ÿ(l°ñf®àÿZ\mwO·õ]Sïšx„‹7é·ÍÈ°m R
+/ª©²³q•“G…•,!: KÕ°€êÙÊJ3£‘­³eÞ`ÍÚì›n3Z¡‚¸Xªß]¡³ri…
+ÂL6¬î3ýì
+½3ÏG#[§£­ëG¬ò´øý•‘•K+ƒtv$Ã!ŸsÜpòÔÙx`ÍÁ{
+©Ÿ?gy…QÝmÅàÇñ Îv5½ \åÞUŠ*/?
+£‡lr"$0r ‚‘œì©`dO£*8ÙSÁÈTDX<Lùˆ^
+
+¶Å^À Èá9`ÀÈNö0²Ç€Qœì1`ä×Ö
+¶Ëdƒënó€áiۈϬ›‡÷~CQAÇWE%^tUL¦•dÒÆ×Ö¸+ÙT‰ée­À89ÀÀÈNö00²‡Q œìa`ä ä
+îä*êÐazËáQ.LZŽYLo”Û•FSCçÀÓ9—
+A22îí±äz—*‡¡7@eâ=sÔr{–Ó:£¡mÜ9@Íô.29š¸JС·gžë=!ý‰PþDàaÈÎÁPÇ@åÇÚÁ&:Cš ¤Öf”wŸ™.-™¡ç£)i10…eÓÙ¼J$ýæ™ø°Z¼¹½Æ—ÕRÌl¥’õ»›Õú¿8ˆã9ûë|ãž´›½5…q³Ç­>ŽZ!UìI|ƒ³ØîgÝÁ
+Ò%¡2˜ÍË?Ö÷ 7¢ÅE𧡖(‡«;x5(HÒØðõYÏæ&YÎ$åâЋƒûNñjîí°uì.Z‹NvЦp«©AÛãØ¢¾ëŸpÁðßïÄC¿©1úà„°MJ!ˆ¶Œüù27êö؇·8¬PáH%®®€`?dÉ&Ý•X/ÉäbØýü”˜äK–©ÀÄà©-6ù' Ü X³NRgæä2F®~€­¹P*Ò>Á6µ°ã÷×xÄ¿çÙÝS}×Ô»f'19ï·Í:iKïɻԯõ5›õÄP<WNÖ“?ý;¶h¶é1Pþ'À
+endstream endobj 844 0 obj <</Contents 845 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 845 0 obj <</Filter/FlateDecode/Length 4425>>stream
+H‰¬WioÛHý+ý‘\@LŸ<æ›ãhïNlÇV2X$ƒ#QŽ2åHrþ÷SUÝÍCdKöÆ0 É|ì:_ývÆ8ýmïØ›÷·œÝíØ›™ø/g‚Í–¬H87’^(˜I“”sŲB$Jò”ÍîYÄâÙÿè„°'8œ@hΤIRU°In’\(6[°h:»½ ÓûÁT¡žå EÃq™'"e‚ƒp¶­Ø¬fog]kP¶Ô({âÕüÕ7ÑŠt6JnmübõÎnAE,dd˜ø­Øgû ‰E¤ξF±H#ODÄñ¹À_&þsö/4ø#˜l¤LÒ¼1Yµ íNXM\@¬|Ó•/dRœŒˆÊF™E\;ºdÁÑ ¿ù?Y‡Š„4]Ÿ€6øzFŽE›c5Èq—†mŠÕû8‹®¯1Ë༦ô)ö¿«x"£ml¢]7•B›$k +øI«ŠÆ*!VYq³V›šÅBAHÐ&ETã쌩\ëªÄ§»Š ü–]3MéIy"Á¾Ô€™§L„‚‰¸‘<40[/¦o0rÛÍã»,ï«^ˆeË›pÒ‚=¬€ëCd9Jõ*4Øž?¯ô‘˜sטõjWÕóž_RäÝоÜ/+à˜_Ò”çUÈ,Ñ'ý²Ùë+"1‡ŠnÊú®ê*Ëe’ÿŠ;xžsG‰"‘÷©4µE,‡šŽ°‘í¡.Dô«<z¨XY/X›º¾+;¸£¤² tò²·Pq:ZÒ§ý]Ïñ³Š‹¨Ñ®æª¥cö?Ó¡¹· çÝmu_ÖûU,t4ßÝ"™jD¦pTèyµ¨vsdùêÁ
+ÞÔøÙñGƒi›:-žÓGä@½3pé|»Ú¯æåz…i“¶N™é<O²_)3+à/´Bxçž3/GòeÅ œ;‹Eív«»º
+³0/i ÞK× ^²“,­h"e"-@0´ ú
+F7Ý5=]29ñî*y³¨®N(»x¢º¬ÎÚXýšÑŽ×ûïû‰Q®)Žíi™·§ñ0÷ņuôPn÷l³¤­e úªO›PÙ³¸-½É'¥®¾ëæI K÷]O4ö-¯ª@áÓj§,3à0·ñ¾˜RÈG2±ovºÈ¢Z®jŠÄ‚­ð»îÄS¶Çõ $´ÈÝB‹@cGi#©a]Š¾(ýgÒ7؈œc±ß…òÎ+1ÎéÖV…æô~³°×”¶IÊh$)n|‰.7”™Nã¥@‘!åÃí^ÍK”ý
+t]ªÈ%à–AK‡ROˆÀé~ ëj¡_Ú°¡¹õ‘w†²i¯cqײƒ¸ëÙaÜ6í îºvwm;ŒÛ¾ć[·[†ï:†¸¸Î}z>„¥4Ç͉WìŸÈ…õrEÔ¸¯jüw÷zWÛ<ˆõ‚ÚļÜo¶˜ÛAO~Åvü¢e·ø•eãd_аû›Ô¥õ´I
+ÁŽ|!Øq/[ê…`Ǽ숄-ïBðÈ%é` ²NçHcϺÏÕzCK
+’C¿[Y:Kò¦øŠD$
+jHPMŠ\FïÎfgìóÕïŸ>LÙ ÖÝôúêfÆn¦?Mogm!vÍGë ü¼)R“ZG0è~ Y–zý3XLô=΢ÕôcÅÆL‹<îÇ9|証¼b¸
+zÀvøl{ðúCľÁ¿Yô„·¶§×¾Ó‘óx’E—lO
+þ~?"´Û3Z·P)§óyµ£–¸"á“5n@$ð þcû-­6esêâ¶Úï+º~0ú,iÿ+aQÏìÕÄž'ms°ý[w— ÀíO»ºÃÌWøl…óâöŸaÌßÂÛ9Ÿt÷1Ùß&9íÈÚ¸|µE?ª9l£0ðÀ×4ú Ãu~Ù¦Ð2ÐP‰P»ü
+
+<Ût‡m:ój3º}‰ØÍ%¥àv?pñp3°ÆÒÊ8!ù`&‡R Æy f­`õ¸«±õ—ëCF× î4¾Uå¶Ú2ŸÂkÔo
+gÙRž·_²[Dui©UŠ#Ø–)³†ÍŠ:™xG ò§"€
+Ií)JP+Tªµbw:c Õ9[è\au®0]Í]¡bW81…feO™BÒ"P%Új$¾oÅƉ4Ÿ’g¶ï´3¤0‡iwº»d=?BØó#D[~¤°çG·üHaÇõüÑLD€cXÆ+e© ¾[.ZQæ͈’‹4=$±õåÕ‘êPp“Ó¿†?ƒ/õîyÊÄ…*Xó¿ïõ¡y¹f±•Ñ¤íÀïËcC<÷¼]Ì}1Þø™€½ëˆ²MXŸ£ZÑ‹¸Ê2Æ„›ÕÀøÂĸ?Ct©4_@-„HÂ5ª6á>Z2{Z¤½’“žöÐ
+ÑZ)ì¡Â-´RØA+D=´BóÆÄWèñ4#-s®Ô ÔpWDR$Ø|F|»æ²x…ó9YøMFµx¹@v¦%•‡Y)$òîVLû»¦ØtêïnãܪƒInª
+µ½CuF*QØ+SeÚ„< WMÍíø6e]ß°·è—Ü'ÙÛ¿öìVuMS{\C|á¿íe×ô2iëé·Ööô£Ëh¿F­¹½¼þÏ‘‰Y¤Æá7r£ü‹™Íèõ‰é×`i•öœÄfD¿vôKQO¿vôKaO¿fú¥¨£_ŠŽK¾ËÇy*›‘k§guF·É‘¾àWÁ»Æ€Î)Êúêžüiq×]uWöLu7¡^@"¶ÕÝ:•ãÞ¹`\25ÅAg)‚ŒCš°Nnk]¦OEN_åcK‹ÐšÂiµÉ ¥Ih¨uLµáÔ`‰ƒÆ-gBk¤¥.ÓÝ6õ JMŽûÆHñh¯¡âfY†áÐÙ¨µXjŒhÚ/Úá¼=ßBãѾ©‡ßL©Ì0=&žfjcç!u’’AIFžê?aðZDU5É"¡€d]V]ÍUë‘F´éÀ ­ó
+‚ú¡~¦Zm‡®Q¥†¾Ãã8ÛNFyFòx*î{Wg £™¹;×ÇlM·?¿ïò*gUUÖÕpMx8êkÖäÚÊk‚dŸâb4¸«£Kf#TÝ3mýœgÂÞ$$<¤°ïYˆÎíYïΨ€OS5e|Ú“ ì>ÿ¹Ð §®Û¼`¯CûŽº`’1Ã{PÖȪܤÄc¸ÞU½ êG6C¾‹€¿ÕôÂ!À!Ï‚%ÈgÄI–.ƒ/ùîÙýVù­rd¨Ú#msb×}Ø–®Ó{>ŽÑÑ0I´û.´Ö†kÃ:ÕãåÏEh}"ú9©2‹‡¼Î„QÖÖçع]ƒ‹‘dÜ?÷}­,¼¿iÙ’d‘âOlŒBªÃ›ËûËàËÇ÷Ÿïnq˜ áöŸëû¾b›éæŒe_Zo~§}ïE~… + 2N(Ðû…Öh*<’H£ßó'2nAIö…ߣH8è×
+‘fó€¯6üµÐ¨á ½ø•Û¬áv ^“ÖÈéõ­ëˆiQ 3
+Œ2ëPa夂œ’+†sӤNJšÒûôe³qS¢ï<õGúu·£ž~‘ÒlyÅ^!O¢iŠm°%ÑÿÞà™MÅ,Ü´{2˜(ÈùA¥æ|´óI4Ñ×ÖëkrYxÅ‚'œúkuÑ+xFù–ÚÉhjyYD3Õ´A,›m¸¡¦¬yßë˜a^÷XØ)Îá¿
+endstream endobj 846 0 obj <</Contents 847 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 847 0 obj <</Filter/FlateDecode/Length 3440>>stream
+H‰¬—ko׆ÿÊù¸[€›s¿
+VZ $R©Æþ÷9—½p9KY P´^ë<3óž³%ãñßã-ûîÝg·;öÝRü‡3Á–Yh872þA`Æ6–sÅ\’ܲå=«X½ü=Ži‡(]3i«[xÓx¡Øò†UçË«‹8à|É>1t“;«h.}#,&g-ûÛ°³åp78·Ô8÷¢,óÇx‹iʼGÉÓMë.¯`‰ZÈÊ0-ð§b?§_4µ¨tÃÙoU-l%ë…¨8þ^à7Sÿ{ùwÜð?`ËFÊÆúnËjv·¸ÑñÆÑ»«ùBÒüf8¿M8y#ÊYÈYˆëßêÁZ2ðF ®ß¼`¡4ÇáBBÚá™
+@ã°ÐBJ öýÞ^×ð‹=?$®Rë#peY¡*7Ý%YÏ!~9óC©‰B-üPræ‡3?„ú)ÎɃõÌk´°3µ%u$]L˜œö½1űåfÄ._Ÿí°±·+ü±ŸìçíÝÓ=4§Ø«ØؘÉFvÛRBvªäå]M6§â;ª.Û‡íã¾/³GJ¨?>_w@
+Šý ¦ÕAr(€i&9ÐÓxº¸rIBÎÉA©)9µ$%çä 䜄
+×àãÊqÛ‡äØéO¹
+‚š8R‡•5¯.cû=ƒøì 5ö«”í|#îž@ž\ÆÂÁ}|ìÅìK°_ìÛûøT»8ßk¸d5P…W'¢ª0T {,t©ütÛo㸘N¡›œ³…À‹]¾…½ýõ+õêóf»Å­}ć#‹W½Ã;€_öµêÙ‡ù´ /‚¯Î_¿{ý¾Ö±1pÞa/'Øš“ØÛ`cVØSrÆž’ö¤±§ÔŒ=)'ì)9aO©cO‘
+~‡œä`²è™-YWÊë+ ûŒ]¼áÇ©ÐÛ÷­îAöö!œ°º’1àÙ>Ø«,;Y )ðN;ÄoFXoàeGZJ.8rÆR„Zp äŒ!gõS
+0³ß6±
+ž~.
+ÛÕ¨©Cè€qs)…±ºX Ÿ_
+U·ÎÔìvëXÛÙÕÂÔ¯Íl¿æ£ú’ á‹›6iÚFƒG0ÁÈú ˜#5¦Õåt"ä&!g0)5I¨LJÎ`r“PÌOmàNAº9Ýg¹ é1k¡‰Ûsù"0gzt·Ž6P€¸üš-cTo'¿­E÷é±Î Ǧ»òqº»´yÜVÇ7
+·Ð.Íê1Ü„\à&ä 7¥&¸ µÀMÉnBÎpê¸ ÷žj,ë‚4Án´Pûꟛðé?¯Ûøx„A$Ÿ0žww_ð7)
+qÛ³©]þfZb•|öW›Ýýz‹f{ÃÞÖ¶ú>E¨0%ºI„鶇4¸äļº¯=<õ:¨ãJ6úeií £Ë¸|ÿÒ*+m²Ü"ÆÑ9µ*ZQ¼ÁÂI©’0aê H|ÆB"™cOUîÇdr!“3™”šÈ$ÔB&%g2 9“I¨S2áz 7|j;>¹„ù†|b-÷õ¿”š§
+v Ò% èY`%‚O‘¿?Â'Ïß7×ðÃVÃYR#Ïxu„—7ñ¯ÃK=/¸i­I¼L€²päyšñ¢äŒ%'¼H5âE©/RNxQr‹R?1íã¾ìtÁ㥜èë\w=!0Nqëû-<2±2±¿­ðÇú®Å7±÷.·ì2þ7¶ä¹>/ýñªÜ­é©¬™L§5B5z×Õ_Œªê:²šñ›Úx]ý‚þæjüU½6jo«õífûØâuðŠ¡“t94àoô‘weá• ¯„œy¥ÔÄ+¡^)9óJÈ™WBýÄÀ-‚­4&ÑÈ«ÁS~‹";Ÿµð®M³w¡;`x½a‘Ó Ñ)NÁi·–á÷Mè¬JÔÂ?É{b"…q¹?4Ÿ—µ© ci* íZ‘þS °ç¯ßÀ~nL çèrºõð A‡$W²GâÀ‘Rr3蔚@'Ô:%gÐ 9ƒN¨ã¾¿è=Œï´ïÃdR#Y*>w"Y¾¥ÎØÅÛv ‘
+sŒÏûÚ ;¬u¼°#N5g•š³Ò:äæìù´9‹Øœ‹õÃ…½Ê²“ا•˜ôi£]ãgú´ràtòÅÁÒú
+
+›ˆò´Ší#ì$äP=™úàƪ½üKpªdŽqË'äô%Ô3ˆ(ú°3æØë{`/ƒˆêŠ >µõôV!€Yö
+f,§iûb-×ü/O-¹ˆ’êy8’’Y6‰€ü˜Z„âþX‰øN!»I¦F—óܽ
+m¿XÓø†ôÒnì5Ìø©BøB{·ãÚ캗H!éÄTÛqÀúÃ7=ìfbŒ¿
+endstream endobj 848 0 obj <</Contents 849 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 849 0 obj <</Filter/FlateDecode/Length 4834>>stream
+H‰¬WÛrãÆý•yR!vîƒy”w•RöF^ÑI¹âTŠKAZ:µ&%_þ>Ý=3
+¯Fü3Ýhj]ÁqŠŸªZ…JK¼§\ýŸåßËÖo‡ÃÝ ¤·O`1:‡ôö•nâó'fr3 IûS=ZKG9>m8½×/”l/¤tûäG²Q!6êY—´ëI•aBê8¢NÍYÝV YŒ![+]AüüŠ×®^¨jW»j_6÷[AÌêôTS«JŠ
+ïî;¡ðªÇôÁ¼l4øâ¸ôlè¹>ôÌIJ‡žxØKïÉù雳:T»ûÇÏâýê®ï@™@¤å-<»ƒ cÉÀÑšQ¨¤žÁK+_`´.Df&Î] ݾۮüÒʡԿܯdà)¿´1ã£Ó¡±Ï'N7]ˆÌ/ôaµ½éÆ‹Á*_å¾/Ÿt'„F49ù\BFš†°Ò1&ƒ3jªú£6mõ¹«í•¨;\$Ùn§î´*E@p$ùl{g«kúLß·küìêXõk@Éó†²bQdx‰«~²‰dfâàew·Ú>lje«õžõŒlš›zα«n¿F¡o>'Ã÷[ü¹dm;fϪ—¤=­©dfâÒÛÝæa³^Ýn9 Ì"ÍB&6_“A’§¤édlZ;8÷’*6ÃW23qî¤Vmµßon¶/Dæ¼Ð¤ŸÒ59/=" ¸H­»4è<¹>Ä ‰Â†e@W¤Û§Þµ±‰:cð~ð T>°˜Ö¶1ü«ÚG3F3 l UgŽ’4w8¤G …z·vÚ»ð©¢à(T}‡Ütûýê¦ËZ9 r¤%¢K™&“ûf|VÉÌ£o {¡ÛI©ð»5å¹ØèF5hŒúAQ/ Éëü¦‚#†<?ú#Šï´¶Õe½Àµ°ÊÚ
+´xù‹Þ=P …µ3ÊH(žv9¨><2÷ V¸ç`äžÁ
+÷ \¸çàÌ=îøûyš µ’%"k_½‡ñ>îïV›-îùö
+¯lÔÖ+üúp¿Ãf™0.Œ)‡3ס}éîO&ÝÀœÃ“S–à Y;"Á
+錤3X! éœIgàB:O^Ó·ÒnfX+JPT`²¾=9G¬¶îIVMƒÅÖc÷žÞaÈëòЧ¤÷Hj
+à \æàÌ0†x†a3´˜O0,[há
+Ã8z
+3¼av×íÑÞ¾^@ôRÄv=4ò„Û¾Ñ_èujô“=ª‹Ø„Võ 8½Èä'f/:í¾AJ+ ×!œÁ!…êö±^øj…t‹tFöz±f‡ÉÀ°‹êü8v
+uؾ¢í«kŸì7¾ÿ”Ó!‘ö±CŠL…9“MwEÙhD‰Àª)Ÿ‚£ß® }3:ÎQlv‚`UžÍNJAϡ즎!;1XÉNŒÙ‰ÁJvbà’88g'.Ù‰g*›(kùì$5TÇ!;E:ôPÃNàú®TÐ(üVûýÆÎj÷¿ššŽ~2)BøÇë2–«\Hœ.´t£©Äª^[?bv«Ã¡d¢È%­eõ án9¼ãž•ÁŠ8õÀ`E \ôÀÁY \ôÀÀ3z8λ³zpÌöz¸ìn;J¿”0ï^`T~‹Zø Ƀú–ÍÃušjè T4dô“J0©S1ŒüH áJ€ƒ‘¬\ é—Q‡e%°0(ò88+…“88+ƒgú–8(O]+Á^QÂûÚÁü".»_;ê|×À{øýî#°Ã¡ŒAK@=+h_,#7'$·'5€G¢y „´ù¹‡ÃŠ85À`E \4ÀÁY \4ÀÀ38îGæ5à#4¤e†½èvw«-¶^ñ"+â¸à *ΑÂ4Ã
+¸¨€ƒ³
+¸¨€gT0ÌMÒñ*°m£eQÁ)úhxœŸhõЦ?tM«g'ÚÕáH›‘2ŒA#3f—ØGp““lËä„301öMæéï8&‚ÇJÈcÐÈvé |d¯Ãã¶êxÜ\$Ë8RùÑxDá
+,Û aÅ©”•A©Yã;øañ<A?Ógú¾¦S‡gŽ£ÔùÆK6J• fIÃqÎC%FCt*:–
+ጌ3X¡œ çœIgàÂ:ÏÐ>´iŠoÓltPÕÆ´wiNÖ˜ÖT÷{›­î¯FE¥ à …ø:)Dnb‹#)´¬Ô¬$Ö N
+6B†aê3‡e)üŸý*XnÜF¢¿‚šUµV‘
+zY‹{SÝÄݱp÷߱ü¿¾8‹Œåj< qÖg
+Ìl
+[RŒÂ–’¹Â–»Â–Û–»Â–q—r­¦.MõìÚ÷d±ºZxrÉÅe$‘€T1)—`Ô~exa3\*Ǭ‹ªò½h–¦)ýæ³Î…ÃMDšž' ª¬\áÜR€ÂÈa!Ë¥Ž4 EÈhÅ‹K³¬ëHÕ£$¡MbB‚kMqŠ´ D)UÓĆ";AÕc,¡­öËð⼤ݑ³Sî‚Ø„ÓËš‹´DSÚ`ZÇW—±mà„öœ8(;|k׸ÇÖàB‚7Ý 2Tª¥!ŸÛŽm
+ ý*Š" ¨Qµ$óŠÍÿ$zo"Ü àN9É `{DPsG ²Ë­ŠÊœ3ô#™‚Ž7U.sý%cS¥œ1!¢£¤¢Ó‹¯=ÄÖî‰{Æ™•Ÿ³OÿÝïÚ¾=q‡Á{\
+²Õ&ŸXý–7YÝô› w}‰—ó¸3ýT¨M}†+Loò+ºîÎsX²YÄbðK‰ÝÉ éLÉÍ«7~F:ç5=‰Ûïf4ï2{"*p{FÌlíf.ZèeS’aFâ8ð½Ð0±=ŠÕ'Áäç¥ÝÙ±imùËžHq¸þdÑîêÖÝZÅB{¢¤ëÆ…1¾L_Þˆ«®ûÚÒç–IOß0ÙÒ¿ Z/‚«Ôà*5X­F[1Ûnü ÍœïçÌNux ^tìN‚8­¼#ÏЗ ](Ü€žÓ¿#²1
+@(ÄY™Œ8±ÊCóD$g……ÒT£6á@2¯LR /¥úlfÐ9¯<#ü %O8&N­sxªÚºiºr]5|O*š‚@ë°Ú,)°*-®VôåîÓåƒX4µÌî>ÜÜ÷é.`KGñém^}éî…i¢ìx฿€˜nLH.€î×…” ·Ì¥MFëí3ÍL`à ÿô pôœ0ˆ5~šì÷…»]':l
+/¬{‰îãšhGµ8Y[½shãd“½Ùç`ÒRó'J<¦îñØlyÛÓMÅ öåÙœv/¶}´ëÚ¾ÏZàN…á7;º ­>Ó"?—ß×YE>¨}ì–ìµhªR£ó.KØAÏti ûÍ[*A8¦¢G””Â%Ygï1F°÷.ChËs0f¿ Èk:š®¼ñÊ„D‡#o¸v´¶ŒHr®@ÐÊþ7Öîø°KxEæñäaÂS^É‘tvŒYÐdUfÏ={u‡¯ô·%!ŠtÕu×Ä eiÓ½§9çeoàh°^OníO¬YÚ™b8ÐB·p¿iG·YŽeì
+endstream endobj 850 0 obj <</Contents 851 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 851 0 obj <</Filter/FlateDecode/Length 2986>>stream
+H‰äWïsÛ¸ýWð‘ìŒü"~«ã8©oÛgërÓ¹ët‰vÔ±%Ÿ¤ô&ÿ}w
+1OLökÙt³Tõ!$—ÉÕ€ä¾;ŽÍ»Üg——H3To‰?#þ¿ ò¸ÉËl‹7ËõJäÊ@–á-d_Š+€é½»f†O· ‘è>ýH“…†B\ õ<W‡¢:¨ 3(Ãùð¼rH[ÆéÉ«wy•mÖŸÄùì¾éO¯ŒÁIS
+Ïf0 +x4g&zd©Ê]‘R÷‡íÈýy0Ê°¶Kä Ù6«ù^YZÁÛþe…
+óx¢«Ùê¶éO³÷’z(À“õTU¡{K&ÑHŸã©ÛSz ÆpDb›Be_r㳇FÌV Ñq·?Iˆí‡åx•^jÐSŠ½íf³º†ûÕ¯M^gípJ8Sôö­)Õ ’a^7÷³Õn™+›Í·leÓŒÄÔc…-ší•¾|×+¼öJ²PD­»’Ô!V¢Ó‡0ƒ’Ž7ËÝr>»["s˜ëm5ë=ž(ß.Íà)i–²ÆÍÕwÈ6ÂW3(î(W>Ûn—·«†"³^RÛ]ƒõÒ=²L)ªJ‚rD…²èuÜô‘üµ+"Íò#m ÔEDË¢rRp¬”Ž…µ[v5‹´.~¨5t.³p]‘¥1pª—#;ºcÇšÖŒð¬dF‡"O´3OëívvÛˆ)öj_rð&°%¢ N %Jl5ñu€€“›ž¢%Îè
+ K ÄÞ´md{iElaLhC`LIY‡1¿e ¨BAQB¯-…ˆ‰@5 ú˜ÈßsUe'¹Í®ó :ÛDy(x ®‡ƒúZƒ´vDQˆ!EiuÛ Õi†“f85Ã`I3 œ4ÃÁQ3 œ4ÃÀûš!¥(¶t¦ÅJÆPC%s~t=¹|ó íkñ>wOéôZÓ6}± ¢Œ‚˜(éµü:”1*€¯$-»õ²v_ œTÀÁ¨K*`ऎ*`à¤:‡¢èÝ]]?á°M+ƒ³£SqMõdß½€}`½Ò û
+:WÉ{
+/‘$bþò‡Rï¿z\ÍQï-ÇîyNÔs0RÏ`‰zNÔsp¤žõ <F=ß繪,|û w­]³X†åï–kü]‰Óþ.–ó\Él–
+&¶¬«ì"÷/ï
+tŠ,¥Be\(¦k ”’#JѲf•ë¦Ç>6«LQ;Þ$8)…ƒQ) –”ÂÀI)•ÂÀI) <l
+a Ò礪xÍÀjÈç4s ×÷(˜‡»f‡¤5‹¤i<(¦þ¡Š)_ X?Ë)ÆxÆ+†“b8Ã`I1 œÃÁQ1 œÃÀCÅhÛ*F>ÑO”â%Å\þ¸öç›åÇf“+øš¼Ü¬o–¹RÙ‘5âôM^ÀÃÍz¨èøîYšU( R}•x”N‘ðW¹ÊÞnš?>7«ù”¡x ¹–ëÍr÷%×6RLÑJÕ
+OY¨¹1,oüüƒSÌ™ï!ON¾—šÓÔŒÊÓ*j…é¡F6öåÉÀIžŒòd°$ONòäà(ONòdàCë£yuSHÛ~äNÞå¦Ì~Í'V´d³Mn²wÛ‡õ†ÌLœÍHUMOža/Š¦HG‹Å¦A¥o[¯ë©í{
+ÂAnöõÕKžïí$Ê´ðµiw`‹‚¨¥wô® ¯Ž×¥Ž!Ý^d”º&©«N¿½ m,” >[ÆÜOW pÍ¡ßÀßÕ­ …ÿÔÚß±,:`öK{|†T™ÂÊf8î.HlÅú†Œfñ÷lÒ•®:o3ݸà6 ‹*±`-ä]7b`ª‚$Ô‚•^ØÂß™˜Ãz­Ñ溉¤‹&Cc¾ïjw8
+ÀášO\6Êw þ½À‹ø‹YâK»Oôàêü¸§Ï®È|¶¢ÔÖ«»àƒ³ì6Qêtx/w;z¼è1&U›n݆»Ù¬1‡û|ReÈ”Ê>áß Õ )‰á¨Ë²n³Ôj°ÚØNœÃÿ"‡õÅÞ²V™˜=<Ü-1Ãfx\÷´[uÖÕ=;½<ë‡p…¶tVà¦y,h8¾,I@DÁ×=˜zê#«f<ËÚq.KfÝ̃{îY4ƒF‡æP0hŠþÌ Ñž94¸3ƒFsfБ֡3gY²æ\ÚoRëpzI¦v‘Wa›i•¶Y4;MN­“SÛàÔ5gÔ{";Ô°ÝÿÚ¯Ýáv øÿׯÓvÿž†­[tmʵÛ3êÎM·MgÜí¶«F›v’ƒ­ïq_N£»í㳿B‹}vŽ}6Z ÚßaÖWUÉAÖ‡~€ßcÖgkG‡=„6Ví·§Í…Áý8,ÚGÿcá`€ƒ÷-00ë’¬e-ÐzX9Ýö§(®¿Ã7RXe²%ôÖ’døø°Ú!,ª¨*ö¸¯™ï¥Mü`¡êÂ]rT°sLÅ}»ØˆÖŒ8¼-ªÔåÃGèQF¢LºQI7ã#•^l‹–UÑ›D5>VkغE­-¼ïFÉ1#]ê *¨Wh$S,|š˜nZ%K|¹ô:>Q·Wp¥ûƒ£š™Á€öƒ¼÷fNZ<†vcãF°5ZuБ¤[ˆR8´r[éÄ 0î¤;Dð®¢}›BÚª¦PtßŲe¡Û½ºÀ~UÑb€`½ÎŽasáƒó·Wï¦t}.^_]½9>ºžŠ«“Ÿ9_s¿š®Ÿ²$ÒSJãe¶\àµèBîUX·ú§+45
+¹_¡§
+}d÷+ô½
+ý°Âã‹ó·„\½ÿÖ*aãÃöþš*Û/¡ªz¦J«áÏÑ*«¯©òê䧓ão¦ÑhYÔZV˜:¹Ú»òéu ¦W * œý»·‹'WgP@ç¦2FÞ넸üÑœLKÐ4ŸPG‚ß}àß[l²éÑ}®±I®ŸÍn©ë„&
+”^ ô0ðtE] áï2û’kè¯ ·Ã×?ņ_ ÷âš‘sèÅzï1M|E#ø¡Ô‰ ŒGS-ðzÎÜƺô°q¾¦”Ú7ë;|㯳ÕX/{a ÿFX _a-³ƒŽºTZ Ò¿ïÛÚ8;Є´pwï]¯OÝs³h•øš­Fé,èaÞ.‚Åû"•V;K‘‘‘÷;•ÅÉÙ´D'2àƒßnl-šå2sà±®#P®v¹ˆÙm›e~>ø^Ø$%ÖôaYò;“(´‘IòÊ\*§—°“nî?ÖŽög›±.œ¬+¿²‚(%Î+Ê €€ËHK îLøUË Åòd! #œí©zÅ<RÏDW¼-I˜Ñ½Š.‡õ*¢ÆG€
+endstream endobj 852 0 obj <</Contents 853 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1507 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 853 0 obj <</Filter/FlateDecode/Length 4022>>stream
+H‰¼WÛnãFý•~l.Vö½™·Äc ¼À:[Ø`1³XÐ-3°)G”“øï·ªšWQ-y.X †¦XÝué:uªú§%ËèßnÃÞ}¸Íئaï–â¿lyÏò4ËŒ¤936µY¦˜ËEªdfÙò‰q–,£"ìÈ`ŠVLšÔªœ-¼I½Pl¹füry{E.—ìw¦r‚rçÁŠ†íÒ§Â2‘r¶+Ù¯¬f?-ÇÞ n©Q÷¢3óçÔÅ ²õQfÁÇOÁîòL$BrôÀ¿Šý+|HÁuš±Ï<–Ëd!x†ß¾™ä?ˠÿ€ËFÊÔúÞeuÒ[ttz€´ûÀ;¾h$è7cýB¦ùÙQîˆ!sÄP¦?'#[2ÏR1:~󆂎CCBæã˜
+DÍAuˆWú@®.ß}Hßm_žÙuñTŽÊ¥^÷.œõ`–° àÀ&g£t gAwoBƒïþmE95DjfÁ}Ä4”MY¯&qIaÑÀ×ÇœŠK(¦Á„t©>WÈÞÔ©94tSÔ›rlÌgé·¤‰öBcŽŽª·3‘!•žKÓPUrN¤ðÙÊBð×Dyþ\²¢^³!uS#A·Ÿ…™iQ§—ùN÷
+Nó{z†÷z…Ï2ÉyoBõPç Ý["µs<±Åa|·åSQï«Dh¾j¢‘N5× lÚÍ$®uÙ¬çÕsP¼­ñ9ŠHkâÄ."ñ"‘3ë¤eÑÅ®ÚW«â±Â¼IÈۨδw©ý`§€i„›ÐoiaGÒÔÌ‚û1ž7Mµ©Ë8 #ç…*CQM²5;/9Êäå2h§ôeÐ"¹ŸÊ°·;9’«ˆªOíÕ9pI+ƒq6…õƱ”ŠN8"VYŽ”»0ÂDÄZéTÅ]ÓyžÆMw1GÄm–ä%­zJž@IPêÊb¾¨Bº|ýTBÓnšbS²%Îl¯ 0¥MÀ,ç‚wMËAh\¡E›
+­Ñ™vFíÚ‘›JÐ@›* ˆ†=
+ $ª(€´= åS\·d64Á@q ˆ¸PLÜ("î
+¯ïaâ ±Ï}ý¡z4¡R·\ ¾]R”Äüz`~‹ aek}©V¡'0=ñÕ#¾½¬KŒ´õŒ‚éµiƒ‹Ú¡ ¡fû
+f´#ïÃ_þ Ö<• v¸J^lP}ù÷Ñjª\XŽ³ WÇ]:¨(—·a?\59Œî$¤ÆòœN¤ÂŽ #Aßb9‚Êú|¾'ÀæX
+Êã#»+‡‘xè°£
+p¾ÇŽÑ ?/Küq~J³©„ãþÂ)íÿÐÔ:ÛÕÍPû®Ÿ¸^š’|gÕ=5Ãt#Њ Ãí€(Xµ.ë}…w´=2Ãk_ïS7… = + þÀÖ8ãÁ©óÇ—ÃŒM[Ã=™?‹ÝîŒû‡¢J—BsK7sê,7£1%(Ƶ:…»„ÀCË—ä"°…îàÌ ðôü7z†wj–{œRø*IE‡íG·¡\¥bÚ~bâ–?bâ–?¢âÀ1qËQ1ñGLÚòGL<çÑ=#ÎÚoyF4¯¶ôÜ¿"x  Áݯ@ð4 C0\ÕkºŸ¬
+@±å°˜øe¡\îSòSœò¶Fö¤¢Î’ŠÈò~ˆqþØãt¼ ijÖÎNØ:—G„BÚéÖc‘Í(ö½ÔhLë°¹C`d³„¹U º½Ns;ÚÝ4²ÅfðÜ~F»[üÆv;…üÐïéäÀZtÇŽLQ ýfŽŒvðÇ6ƒÔû±ß“¨»Úˆì>&6·•£‘šƒ tëÍ›Zê´u &”Ì ½¡™@å¹·ÄÉØt¡ÐH½º”•_ˆVP>9–ÐÍå-`´/$=ªÛWvæNz* ƒfö%°©äØH*¨ó†z?~zJ`ô/ å ߊ ®(Y…´K‹ðTœÁ]†ºPü‘õ+Nìn‹ŸH1´5Øõ4\@§º†Ñ•Ãæ5ë×–ÁúM»
+WOWö^¾ ¬© Ž-½íÊß_H.!ÏzýÅôgɶ#ç Ú#;Ûu í#’´¤Q,BÂ7+ÚÎô£Mè|ïáê†;ЉJ¼Ó­ð±¯¶ÈAõ0‡û–_ 5‡x㟩;8霴ëŒ;‹ ?µy»¸FxfxË”x6˜‚ Ù÷±vCÊ.Rˆ0£JeE‡r Œ )-+:ƒ æ÷®,v0U<!nàà
+Ñ5ÐR~zîþ9¤« ä±˪¿ŽýÊê®®³Ñègz‡Õ¬#’>ø®€¥ïŠæêòÝpq·}yf×ÅSÙÙÿ<
+xßö.œõ`Ä,#»AËáÀ+gR3„ª3dø3¡J±Fºfa~Üè˦¬W“¡S§ß )ÉN(ÁÀŸt-}¿!•sc¨jf즨7åØ L=Ðç¾50Òr*0¬3¦ñ„Eä²GjƒBl"Ý
+¼(ÏŸKVÔk6¤ï˜n<hAà!ÐØY;0/A=ÞÓ3¼×+ªÐ~Ä£JTžšiOw&LÂ'õ°©¤fåmùTÐýGóU tª¹Nç±W¶.›"¾zŠnú«…¤µÁy£I¼…]äÌ|P3 ébWí«UñX퉪_Ç%§½Å¹å‹ 9µI
+N¡Ò„ѨNâÌðåù
+jfÁý˜À­i€ýË8#ç…*CEMÒ5;/9JС„LY óäl¶›
+ ŒÖê´WËrÛFüÁTˆÂ¾°Ø³¤ré`ç¢[N°KtÑT•H%ÎߧgŸ €!œŠ}‹Tï
+÷ûËVÓ9)t«¦³.–»¼E´êbSÒŽH›kißÓ;Ýl•FIr‡[ªô;ñS+a—´û9ç)Ëyêåó<=þÕç±ÌN¥ÇN'ìÏI¯ÜQM:ò_Îß[LktÕeÓ5·cè»|Ãm{ïf½ö¤Db`¹ÐHŽÉÁQ#Y8h$Gdá ‘5’ƒçùþz-j¤°+ÙO(w³1õ'üm7ª&­t­Ô®he¿¦•ÝZw•Y+ÅŠV¦u—VžÑ+<›î®x6ÚJÁ{6aq\¼gãàD!NâàH!NâàH!Nbà…6Ûe¹B¡Ž!Qèôõ÷”5µ#´¢ÅVk
+}ì}ÖØ£ƒxÛ>³G Ž=Ê ž ôc½ËvÄa¥²Úe¡Û¿TŒ­ZUcSn½Í­C•O¹Ú©ÎÓÊSÃz¬Jëò¨¢ÚïÆãyL*4áŸ|Ñ/Ó¦¼èy8U.Þõµflv}x{—c°F>4x£‹¦~^ŸÆW˜€áXî¬/Í2F·ÎLºKx0­Õ®/}4ˆBqçS„LH°ï?`ðÙ×_ýgøŽ‰ÂRér&¸@’ï=Ö…v¸j ˜–®]‰Œ¢²*º¾É˜Ñ´°DF½YŽÄÒè„Aî\7‰ŒR´éûk Â1 2Å„ZIÅ¥P tÓ-
+
+Æì‘"EΑð Ó|£º1¡Î…J¾¥Få[]
+endstream endobj 854 0 obj <</Contents 855 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 855 0 obj <</Filter/FlateDecode/Length 2799>>stream
+H‰´WÛŽÛÈý•~l!;’ô›W#“deG#dØA ‘èÉ‘äÝõßçT5oºôh²v`˜C±ºëzúTõO3‘ó¿Ýƒxõö.{ñj¦þ %fŸD•å¹Ó¼ Îg>Ï(*•{1{R$³Ï¼C…9vh!´Ë¼©DZº¬TFÌ–BŽgw·¼a<ÿ¦²”%¬Xl×e¦¼P9”‹]-~ñÓlè éÖ–t§­™ßŽ] *u|üìÎî`"QZ:aý5âáC–(i³\|”‰òR'©’9}Wôæ’ÍþBÿ.;­3_v.›g½%GÈ»O¼“i“ ß õ+UW3bŠ †ÜC¹ý˜ lé*ÏÔ ýî
+:N )“cl!öj‘u_d{Vä!û›·I!ß¿§2#zËõ3âWú[Sw‰“{zYm7"QF"¹vX[UTÐÕz
++°xÍQ×;Zœ94žy
+¤Mëu='×öµ`,êÞ“ÆŠVX·"+yV•…&#
+`µEÅVø½O‰+†ªL!Ä`.¥˜Žï >©J-ߌþ:y‡o¿$©“ÃËøæíX°dÙœb^åá4;»Æãgkw†4ù˜TrµO<("E„O‰¦J(*‚—ô}þ€µX%iÅ¿=¨VJn 9$FŠ{üôò[¢Þ·Ò)´á‘÷ŽPóI¢¥˜wÛ–âdluÚ, …Í"65GMéåË–öÃ0qØBB{Æ„$Œ#y>€¬YCéãj™.i^QÒr‘êLPà ’s“¤V"f D¦Åëä‚‡Õ–Û¼Ó G=êKb”’“NùÅi©×  b‹ÖxÁôø¡ñ~4!”4i¹Ä×\"$ ²cmÊÊFÈŠÎŒ$Õ!©ì’’Û2$ånõ°çë5£aó@ˆ½¯ç»z'8ïÛeýš«½åÔÐâ %²^ môk ´Ô]e¨&qn5…¾0|’¼£så\+×ykÎŽu¡Âw_84¬ô·ãWÄ@»í×/b2ª¨ÇF[®zÐ%þ˜NXˉa)T«
+›• ÿË—õÓ ÆHÕy”ï‰Fë}½Y¨ACeù½-Ϩ­·£ úõ²Zž[c]§Ö¦óÍC=´X”Dtßky.2£Ü t.¿Ò|BËÑ穹NbMß·Ä”òK-曥8k9GºËË‘U… Ë{›º5°«é4~âgxß,ø|a÷çР#}6mñ’ëÏÆŽ æ,Ê»úi¾9¬eåb uš :K—³À–õ~A˜_} ŠA6xB²–\èCR/¡}f>¨9 i´[V‹ùzu`¢þ6<t¶ô™þßyl’öŸbå”úz ö%Óè…j±–sL¾IT)÷{0Çb$[.¯šótT¬³léA© €‹:•þ+(sð¡|::Mbç1,^Ù‹%Î7BÌYª|•iL𛼠a9*F#2qÃÖ ^qå¶*˜Ø"â&âˆôxFåIÀt“0 Å'¬p8C“¦\?S}x¢ÚÏj1KxÔK ¸jèÊ)‚î’—+5˜RÜ)ãúLYKÎ4·Íîj:p“½DÒM˜B€Ì²,Øí°‰†f k¸:\ÿh®ë<qJ·žü3Q4"Zy¦(Ì:¦À@W® >hû)ðʼ¼€­FŒnT´™îÎXŸˆ¬…ODÜÂ'&nà·ð‰‰øDÄ |"ÒKWÛN\漫uð=7NÄÍ–†Í§$ÅìHo«0Þbx¼ÝÐï%^ùÛ",)åwìèÎ…²YWòçg0ÌëÊý@P¹T©×Æÿ1 !©ú aì+mŸs‰HY ¤ˆ¸RLÜ
+¾þ¿’pa®²°ëO|ѵ¯ûš]«Oâ0Œ¼mT Ñ·,Þ(ÄjYohŠ¦øà[wÈÝT®7ô8ß‹9lýJ-É–ë¯'>ênúWÖž5óõ|÷PïÐüç›þ¼rhE¤Áؼrƒ®ÓZƒªÊ¾¿
+È?¢EîÞ½ Ìh*ÊO`Æ3êâ3jÊpö*>y`ÆÜò虇÷^“ÏѦZŽ­²$-¥â'x|<¾›Š¤*µ¼¥O“þ3z3»}7éΈ“3mXé™
+#Ážù UZ>%t˜h¹§o4çÛWt|x=èHåt 6ÁQ½çC÷ú„¸ßÒ'V z®Ǡa„Éw‚ÁCÌûÍKÑ­­ƒõi³ŠV¯ì¼üÚ{°ìÏ3sÑ1÷i—å•m{Óa‹Y;—«ÅüPÓ}ÑŽ—[(ó¸‚^%E½ÛmwôG7Æûº¦mbYêÅ}‚µ„ýÓôa»¬³A 1/ž‹’6Τè]Ön’Ô"ùaGyBHŽhÊÉÃjKóÎæ5Ú-»6ê oOñ*?"ðŽf
+V`|ušeà1c
+oY˜Âò©¡,•ä)äƒ3F8P2AHÛ\g¦€ ¨S
+1*j‹›CŒ).F`u`
+endstream endobj 856 0 obj <</Contents 857 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T3_0 1478 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 857 0 obj <</Filter/FlateDecode/Length 3773>>stream
+H‰¼WmoÛFþ+ûqy81ûN²ßRÛ0|À%©-´8$‡‚‘h™…L9’Ü4ÿ¾3³Ë7Q+9ç^„¦8;o;Ï>3û㜠ú·]±7×w‚­vìÍ\þ*˜dó{V¤BXE
+f]ê„Ð,+dª•plþÈ8Kæ¿‘†ô4P´`ʦNl–Û4—šÍ—Œ_ÍïnHájξ0]˜Œg9x1 ®òT:&gÛŠýÂöã| ÚVmÏZ7_Ç!z“!F%|Œ½ßù¸H¤â–‰5ûÙHÉM*Ø'žHÇU2“\àw‰o6ùïü_ðO²U*uy²>-:Þ@Ò>ˆŽÏ†xûvh_ª´8»#:;âÈq$̧dàK"•ƒí·ÿƒ#oãБÔr˜À¦÷’/)²í‹œMŠ<Äa_c}äüÃ,3do¨~šýŽ+¬ã6±|‡/õ¦a‰Ô6×´ÕìÄ´n]•øuW1‰–?ƒˆ ËœHäâ,þ:“Š¤T(=É„ìa&bé2¹¹zsd|»y~bïÊÇjÔà4ïB8Á¤bÞÀOÎõ’™N3Õ¹0¾èTŽ‘™Ir°Õ®j£¼”ÔékÒ"}q*-eEš¹Î…ÊRs6-_¼±#2sèè¶lVÕÐY–ƒ—×äCNå£å ¹ô\™úc¥¦Ü) ÑÈöp.$ÿ–èœ?U¬l–¬/Ý؉·OÒÑ2å±
+Û[8q†ßÓÓ¿7 |VIÁ;jV ÏÉ^’ª›Af& ÞUe³¯iøbÍŒlê#6³T»IbËj·@ ×OÞð¦Áç %c Qõh4ò%T¢&î½™IJÛz_/Êu•SP¹ÁI3ÐÝ+Iú'OšEšÊõ’&v¤\ÞÌ$··‰ÌùnW¯š*ŽÃÈv¡I7…ád»Ô V:§d€ª].Á0°= •û¡U·³[ŒüŒ®)ÒB¡"Š"©„î‚
+؉Ê&¡6Gð.i9ˆ¼
+¸lvT"ãpEw{E88¸N
+I0þf*Ž$ Ó±ˆKD‘¶HŠ‰’"․˜4 )"HŠHÇH"üHÙÞÚTG’ÈÛ;$½c—›dfùc2Ë4ððq¼AdÜ4ø{ ¯ô ð,¿ö¤±Å‹&"É
+Ãßÿ­|d_ÅGÒQ—¡
+nòéÉmQE¤-Šb•ˆ8 (& (ŠˆŠ"Ò)IÝ‚HÄ'>]7Ü^鬓™æ›ÏåšÝ¾»˜Ý\bMú±¦%ÞÃÒ3CÍ9¤¨¢%)ώẠÜܳDA|ÿPMÝ#ütƒM èË3™JÌ]ý±¯š%j‡wct^—
+òÁæ™1àí"±üüŸ%š#C†´ŠÌÏQ¤û+g2ãÆ¿\œ¸øœÏp+u¼³ÚL¼"óYLð‘¶ø‰‰~"‟˜4à'"ø‰HtV×1Ç ü€ÑþÞwØ‘üDAç‚íçhw•=v²sØ9ãy;Ë:èhç‹’`0Çç;+º×ÇþÍõUtlû£ŸuÍäyWQ謾Ç&Ôï@Û³¬ï^#‡dX½¬¼— ¾G‚øÖúq´Òf½ºß‹ü¡Ü±Ž#8ÿÛ5T¯Ÿ‚VÝÅRÓ½.·«j ƒ@Ùô'˜rÌÆ­ÒˆÂú‹·ƒKLšgûNplqEW(@á~Àô
+ÿÞÛÒtÇ»EŠ(•ô„³xñŽ%E®øåÕÛ‹ù ~üùí¸¥($Ÿß¾½¸ê™¯ >%’2@4 ¸ªî.5§3ô
+QðߪÒo=Ù#ÖŸ6eIBl6?°‹ ‘1š!íÑα÷¤ZW Õ Gªl×€µ¿0Wà´£-L¼0‚
+ÂÞ³¹EIZEj ¢ôÐã&ÙP¤- BUõß÷½±½kBµêe1~žñ×›ñ<n†Õì쬾;ÏêüU,
+Ñ·q> Òo¦¼Ù¾Ž—â;´y ˜•zžvžãaªÓp‘kö$ᚬOÂa× ØßT$xój£³³äAŽ ßòœ±fÝÝñ’ÚççfݪEÝoV{¯WY W¬[¤Â¸cæ
+V<¯KAÂ8pΪ• 8 ¤`O‚H‚= p A~…Ã¥‹4 P‘ñzi«: Ngµ½dýþÔºãgÍÑß‚°aöl˜%ØPEl°ÿÂœŠyƒ ¼ÖéphEqʆØ€R°gClHÁž 8°!Ÿ³ò#°A§Ù 5ÖRŠ,Ù°Y¯Ûƒº½é:b€5á¶"êþž
+¦
+endstream endobj 858 0 obj <</Filter/FlateDecode/Length 168>>stream
+hÞ²0T0P0SÐ53P072S ¹
+¹Ì,€,° NÎåròäÒW0³àÒ÷P03àÒw
+pV0äÒ÷ôU()*MåòtáúÿÿÿæÿðÊøÁ
+endstream endobj 859 0 obj <</barb2right 858 0 R>> endobj 860 0 obj <</Differences[0/barb2right]/Type/Encoding>> endobj 861 0 obj <</ProcSet[/PDF/ImageB]>> endobj 862 0 obj <</Contents 863 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 863 0 obj <</Filter/FlateDecode/Length 4023>>stream
+H‰Ü—}oÛȇ¿Êþ¹, Þ¾ò8pl7u‘ø\IiqÈ…N¦|*b*‘˜kîÛwf_HŠÔÐJ|8ÅáZ?qvfçÙÙ™WK&ÜûGöÝë…`öÝRþK0É–V¦BXå~P2›¥™šå¥Lµ[>1Î’å¿ÝÒ¿!à ”ÖLÙ4Ó%›6-¤fËÆo–‹[÷ÂÍ’}bº4)Ï XÅH–•©TL
+°Íöû«Ù«eß4­$šž¹UÀæŽ=ôƒ‹Jxßûe— &U"·ÌHüW'ÿ\þ=ùøb2f¦õE¡cS® GK{ƒ¥y Ö/‘¥2k—€Ý|f 7ïÂ-Gáz‹£pÿîãLÉM*ØO<‘WÉLrßK|²ýà­RiV´žé¯‹Ü¿=Œ|Ö‹Ü"
+}©Ò2{.rŸXÈžXH˜Ÿ’ÞZªˆQ»–ý†…¼áBR«~LpºUòSû\2m—Ì|”Ìþéêr©_'¿¿Gz!zãò§Ù¯øo…yÜ'–ða»«Y"5‡Í51û‚ÍAv¿ûP­ðÛCÅûªŸþB¦bÉDªðZé¹P¤ …8…ÎF’/m$·7ß½Nr¾ß}þÈîVOUßiÜnžu`”0÷¾,ytø$T!S´Kp½x6_f¼33ŠíÓPªz}–‚”Ù—Äå LÅ¥,Ø.¡rŒò¬ä/äÌ š¯êǪ¿XájÖ âq¦âѲLóÞ–‰sŠdw¬ÔøJpOÐÈ8’ÿ–肬ت~`]îŽñ¶‹Q8Zé@ƒUÀS´½‡gøÆ}úçzŸURòv ¼þº­4ù9qfcJåÏàqt‹êiU7ÛD¾>a9›ú„MtcÕCuX#æÛÞð®ÆÏ^<&ƒ¶ K‘çÔuâ"E3£®öÛf»^}ØbÚ¤m”"ï'áìÐA%—8Üù}Îít"ÞŒP¿/YðÃaûXW4`ÄV Iõq&NnÅp  ²9>>t±ÂiÊÁX.à•°(”
+÷an¢•Ù@†^ãÙ—M™–*ˆJàAvªÌ³´0¤¬´ÆêO¨ZJW¹)9·˜)J6VOÉV”˜mRAò€<È•Ñm-ÂÛ~|ÅûráÎFLçÛDam@Éê±bKìÖ~K 4AUr©•-û\âÏAbmÎu/çWÌRU¢«"ôÜmƒÞsS».Z¥ZûFh¹q~û·Þó2U©„&ÂB¿m ®@/Ÿ«èʉÌùMbø"™aió’ê;({øRä½ÃØSlyYã
+,uªàÔ
+Û;`ÏäáHø¨¡O]a“'9•hÉ9‘w»3e @ýypïºÚþŠïUîèlýLº«ÃMæSÞ&C™.$tcÚ¹®GVö”Ìòø7Xq4»¾ß\-» ôzs·AË?§ÏÅ/ï¾™w1t÷³´Eûó§Ê¥ôÌ_=âþU‡n p±g]ìÅ(Í/«†ÕÎGøÁ%~®:ªÝ?iÔ8ðfïk2öý~ý"Zé‚”qßüö;×›•ÛŸG?_ÀGƒA°ùÝÛt[×sBöwŠo>ï›_ª} Ú¨ñ‹ k¸CO[Ýaë³
+#\!À^o׃ªØ»$sÕ6ín„vŠƒ“£L( ø
+ˆZ༹¼‚·þÿ³XÕ¨:C™2‚¬ÎpÌaΊW1œÓ¢8*Ϥîë3)‡Më¾B“z(Ѥj4­û"MêÇj[xñ&5¥—Dlò T[|ˆ%øâîr1»¿~ÇÞB
+'ZP[r,§oh?yb*íDªS<Öå.ìÂ(Ågð a8fãôÝlKÿ &%ûÜSjH=)ûÌSrH<%‡¼“²O;%ÇŸtÈŽë#©¤ÌuI_\ÞßBÆ‹?6ãÅYÇÐÕDÆ Wz·3ÆgœCÆ 5fœ’CÆ 9fœcÆ)9dœOœó®õцNy®`À­ÏÅÅÕ»†ÛÃr¸‚ ¾Â§m’ó G
+§Í ´¯BЂ/„y¡äÀ !G^9òBÉBŽ#(ô¿nÍŽÉÔ_¦màÆWGm¦z3èüò»ÚÕkQ¾¸>åàÚ¹7ÛÐyaçÒv🠇¶HutÌB]Ÿœ*Z²ŽœñVÞxÖú“1Œ›*tËÁ” åñp>µp¦íá°¡¢WŽH8! 5NÉpBŽ„r$œ’á„çSk T€.…Â8ŸPe7 jr`´V"]ñ¢œÃôu™@Íy…ãè| ð_šƒ›ÝÜØü6­[ßÊ7WH¾)#-Ù`D‰¾‘—̬j8´ÆAç{7_ú¡UñÛ¶W~op$¹8yÄÉUö \ý…?`îèwKÔpZH2•qrd°¶kôQÜ‘,-Å£CÈáÀj<0” !ÇCÈñÀPr80„|jT ž§[Y¶£tXðo¯}^Tjt›—·ÐGL4H”ü=ûú\2œ•&zBö°32£€³ßm+(! 5AÉBŽ@r‚’„|bŠèxÈiDÛÑM×oØk8éK¼îïÝévÝ••²-+Êo(ïù¢úô¹ª1…ëŠÝÁÀùŸŸ~ÆÏjW¢·0¼µnÀ•/8/¸£ÏäL9Îôyý'lòļbJü:ä@ÁWÇņ’=[”Ø"eÏ%¶(9°EÊž-JþF¶L‘ãÕ²õîÿœ-s[¸É‚¾È æ9ër×-Jljd‹’[„Ù"äÈ%¶yÌv ±}¡ÙÊÜ
+×ËáŠ]õWÐõâÚõ5x™óð‚de÷¢VŽ>
+/BxjÄ‹’^„ñ"äˆ%¼ùTžÇ‹QÙ_ÖÕ,àKüiàk±Kf €}2“|Ìr^ÁðÅæwWìþúêž¹¯ÜÏjüh’™‚_ÀÓ—D ÞôîÑ;wnë Loúeè€ý=(óÃ&R&ŠiÊ,·Æ9påEnùxƒßÀè·Hf-ÄC^;ê|3qq'ùÄÅIÈ>BðQr€#|„á£ä
+¾+.M_E‚‚“™Òå‚
+`6 š_Tçm¦œM§)o¦ûr©á–ÛP¢êî±Q÷ý³$ÍÁÇó´¡4<“` úŠ ×Ú„÷•¶à¥gÖðЂôô[îiÉÞ+-NÆOw?ë®X'Û¾‹}2i~¥õßøäx—}Bü3ªòr..®‰Æ–hã˜C€éoðŽ6o®B)l
+¶LKäQòõöšË²©…¿í±,¾xÏeYyðSN ÝSß?|XÛÕgtà®2âB56g°º~¿Ö™ié¬ o?´êÏ'Õõ‰ê¤Xüxcwu–;¯ö5=Q?×G‰ÔFÉMsáM£ÒœKQ±ÇqxÌŠ¤šÃ{$gÌ« c®!] .Pg Õˈê’!F4Dw˜…Þ½î{‚Z¤ó f³ Ž"”|õÜpVÈ Á‘OŽ[ì¾n­½ÈŸF¡šγÊ,‹;LGá6KdÈâšïaŸgÖFTyª.5ëèM
+Í3ÏÿCÍN ˆaÏpºížäœµëU’ª,]§[Ö•ˆ’÷ K—6Ô6UìSy̲ü©ÝÝ'ྮJ½Âë?í¶wî4b£y6tTÙ×Ì×6"í³„Îë'¾ÎeNЫÓZ§«æÂ>‡‹õ#ÈL9 ²‰Fvv  k$á=>íê…“jÚ[)´9«AþÕ™ý‘•¡K"a'ëoÒtÅ £SMF5NÕØ,‹ ü¢I*²Á©|ájØóÀ¤éýè—íÑþÉ<DÀ¾iÿ¢ûÂåÄ:‰\¥Ò«ÀTªÀøåy]Ž0PêðZtèêµö'àñýkúW±
+endstream endobj 864 0 obj <</Contents 865 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 865 0 obj <</Filter/FlateDecode/Length 3275>>stream
+H‰¼WmÛÈ þ+óQ*jEó* (Üm[MšÛ5îp¸+
+ÇÖ:
+¼râ—KòïKr4z5í½¤(‚xe?9|øóãB¤ôo¿/îR±9ˆ ùŸTH±xE’¦VÑ …°.qiªEVÈD«Ô‰Å“ˆD¼ø@+¤_‘Â
+„VBÙÄéBÌr›äR‹ÅZD·‹‡9-¸]ˆOB&ãY»X®òD:!S0.ö¥øEÔâÇEß´­ Úž…m>]ô&Uê}üÍï»x€-b©"+ŒÄ¿ZüìHb™$¿G±t‘Šg2Jñw‰O6þ÷âèðOà²U*qyë²¾è-::<@Z=ò.š5âíÛ¾}©’âê‰èìÌFöÌF©ù=îí¥Š4‘½ã·ß°‘·1ÞHjÝ hÓí’ÏI²í’œM’Üça—c}çÑÛ·˜fˆÞPþ´øÿ–˜Ç}l£>T»ZÄRGp¸&d?÷
+›f u‰8{ã#€yÁfø¸îbÕEb!Ð,“°)}@˜#Ð*™ä}ØÂñ×›üm@•¢ò*¦ˆ•, A,¬Sƒ®°°Ëñ6:¥ìrpaÞ³4˜©3º•"ìõ#)2¶?ªÎ×±BiÀ’å¦ œÕ¾Æ L J”Z©aGës‰¯$Úœë^ÎSÜÚxÐ̦í Ûs“¼T‰†ZÃ%@ö<3ä¶_ô[<‘0AXa¦'8…¶žüË,ºMô
+L80%5D¹^xŽÂ?ì0§=<¯JñOüRaK;oy’®*CϺ>¤w¼•‘?½;ÄMu9c
+nª~fS¶©”Á†Å}Âc_ÕÏ¢ºNrçµ[â$èTGn›,5SngZ_ 6Ü4Š Ô†#5ùTµ8P›µ9¸¡6jspÈy Ôf`˜ÚU¢ráÀŽ£…Kò«— ?´·w¹È PÁØ
+,y7ž†æð
++©Ü£z{c†ÈB‹†”ëïQe_÷*Išúì¢óˆ‰tN1é±QÑŒäÚfcÞa.Ücœ®‡– 7F7Ôc¼càÀ;nxÇÀwìyÇ w <åÔá“Zv¢piœfžvw@œm<ÓÑîÝr+îßÜÌæ¯:‚H Í> wÏÁ»S¤…ºF‹¢¥…¹N‹‚šòüQÄ Ó.:¾/§Û·%A>ؤ°Y+«hîö˱¬×h¨\÷XŸºFF£&橯²=Lªa˜Bú£
+Fîй¤2ÉðÆÁ2rp£Œ,ì•‘ƒedaRFm”‘ƒÏtäQuUF˜Õ6ä»8ï1‡°7ðÃè
+YôRw
+™_SH{í:£Z…”WÒFÆW à|z–: 
+V+þ®cUž8¾·Z™Ã±w bàÀ nÄÀAìÄ A |¦·ºV>.0(…ÙNÝ{dô%V*ÂýçlÍ;öd×Øs<ÆKw–·äÑ’#.hÆ ür½µÂö0׆þñÿi­¤8ÓWµØvEŸµät(ÉeQ=bê"íj%ºÆE+
+Q­K˜¢i¸FIøÚÖùÐMi»Þ/b u{ý;ÚžF>úyˆ–úhÐÒ·Ëý¦Ü𬻒¥Ð2¦Í˜Xßõoß5À gº.4htâ–\•PÀ¾=|1xó“9^áÓ?¯ðBxÄÑb¬2K2¾óåV¡ ¸s Tk±[Û¨
+³XB²K¶[ٳѢ³››á¶q>§îm-
+.JÕ_ìÅŠ[ hÑ[,“þÚFɘµˆöBvÏ®·˜tŽ[  ë¼rðj?I
+2‹Ï¡ÝÚF"ÍX¦†w]—8F#a2w^½rƒ>Aæ³$5@¸áäͬ‘aMüQ‡]ÒžvÝt)'z‹°£.>4R|¿¬7¥x·;Ѿþ }
+ÙW}fЛûô⾂r î®xÃì½0óå5PÚÃ@Q( ƒçªà7„’#ž†ÐŠ›£Bès[Ï …Ò¤;g¨‰eŠÄ"S4R!M+é(&˜c
+F9kk“‰Ì40 #’`ù¶ºK€W‰ìúìmBrXÒ¸ÞÅH­êâÙ¬'ÆU-ìùPíËVüÄÎG!‘¶éÚrw‰®ÜÝ~1œôyêO€
+endstream endobj 866 0 obj <</Contents 867 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 867 0 obj <</Filter/FlateDecode/Length 3844>>stream
+H‰¬WmÛ¸þ+üHµ"¾J:r^#u{Ù¤^_Å¥([»«À+'¶7wù÷73$%Y2×ÛKdEë‡óòÌ \²ŒþíïØ‹×7»;°Kñ¿Œ ¶¼eešeFÒ%36µY¦X^ŠTÉ̲åã,Y~¤ÂíÈ`Bk&MjUÉ&…I ¡ØrÃøly3§ ³%ûÌT©SžpŠ†í²H…e"ál_±_XÃ~\öµAÙR£ìI8æ·SH¯£ÌœŽ¿ºs—7pD"$7L |*öo÷"M×iÆÞóDX.“‰à¾¸2É—ÿ@…ÿ*)S[´*«'µEEOH»Úñ‰wˆ“oúò…LË‹Qù™ƒÌ™ƒ2ý>é%Ë,=÷›?q“1<H(Ý· hÓ’—Ï ²é‚œ‚Üçacõ:)ø»wf°^Süû‚Ï
+ã¸O ?à¢Þ5,Šƒsuˆ~Æ
+^³rŽ/Ww
+Ä´£ˆîU£ eò÷ m¨ÚªGfÝZ“›õ>˜^ãl…lÉ7ðÂ<%Ðaßç´ ›BZ :/·I–­S2]8§ÜÔwÈÂÕvKm0Dàíո̑|·©~
+µ@ÕÚc4è_<¯Ÿ9 Ee#+ßa®U³>1PÂ)ßn “ò”RçýXÊÏŒåø4’5<m±jîªþ‰¹Áû­–‘”§,SÐÌzÇd8W=qΤ+Y§ã“ .5&'Q(·_UðO[56ê‹'²‹ó–(aÒ’,÷uýp_aBÞÒ_·nÖ”¢X1»TT¹MeÇñ´™ÄP;Zœ˜‘•7Õê9Ö t…õ!jÉTgdjOøÃ6Õaœ¯?9ÁPo°ét&i-úÔ‡_Ï(/rt¼32iº¯õzµÅ† µúkl–ªºi¥ u$O—Jú9ƒê™P81™èý*? ²Wq¢E\"å8g]1t\LŽËMg«V …¿È
+%ƒþ€™·Ј<í£Æ‚Cì…½ÚÐ`Lïe–B3$TX ²b¨Õ•¬2Sv¶9®c°–%Å6ÃKÇU FGàñpPí°sÿoC"‚ï0šÊ‚I!šo©iz:Vw[&4|B…úä§3¡ Å %~.DoH1Ãj ¢Á`ÐÀßSÛKmOMÒR¦Jkª›ÀõÒhRÛm©f5¸M¸8Âý‚yMðFÚjòŸDÀ
+$™)\x’¿\¸»²P“ø+åî``:†j~¬ž­Åyú…3M© zöÍg‡µp;º‚ Ø ûL}²Ëb&€>e;îh#)ÕåDÆ& Xçly6ÿí íê÷f·CSoç75.î¦`òŽì¤ÓJ··Z·³™o/»}v$ÂäèçÜÍÊ4ñÜCÙ¨Áª°†oktðáÈÚcu7W‘MSNÐÅîW[ܵe*º˜ÔMoûp.[þ¶ï+vÀqj‡?TÝu†¾ëŽÄ ݵÛoª=[¡‡x½cÇ{\W
+¾û°Ú²Åõt2¿êøA—Ù<\!ß·î²ò+Ê–ú2+J²æ·,,±ÔFÇ·A:¸ÄäT:•7ûýX5ªÇ›é3;èŒÜÛ>ÖY´N¥TV©.…s è6k{µîu=jA÷¥?u–I½Rš¯©ÿ=n¨‘=ÑSNÙ°¹ô›|(ÔpšH¾ºCñÕ_{_Ó
+=g´ý)ïšqIž0©ÈûŽ
+ªÙ’ܸJŒTh£)R€lTóT·¸·"þžÎý<Ü8ó<ëð¹:¨
+ç>ÿâÄÁ&/§WAëiôÅ–tσ~©ú]݃VV­;Ë’l>'0iTfk±ùIŠ1©ã/h‹7ÖPC£{¼€‹âYÈÓþÆÀÌ™º>Ñ,ÂYXÂYÆ#ëešKÂÃ57ž®E™ÝØðMÒ ˜zº-(Sj&a‘…™ïw
+^ßž”Øhvb‘ÓMã2ÓÊ«ÚÐt׶Bå6ÇƺÅX’iÜÊ k¶MÝ“lp§ Bõ‹Œ{5w±¯×n>`C]ÕÓK;6ˆcB¥«k©/Iy×Æ=[ÐÖ©ÅA¬ M¨:ë–í ÒN¥!zr—él§ÈÀŒO^¿H—$ÅH r™ñ`ßQš—bJ~O¶âÜx׊2\ÝA,O\@Î ܽÿ >ÿüé–‹?ýªîÖ_¾®ï#K<<H&JbÞÊ Îô£×i¶g\j›º”ôC{RStÄ\¯vø¢V ¯ òµðØ’#.?ê¯Foùá³èÜ­nxCÒÁGÒØcr"ëâ‰k”q½¯¿Ÿ(¡é£H÷$n·$U m*¶5}ѵ‹ÿZ±Úõ¾&û»BxO"õ¿\¢¢j¿Ã’l%±=…¬‚úº¥L—µ·1þ2ñ@ô%À¤aŸV7rxuГÕôºáC"/ƒö(?Lšà£ÛËôu¿cWÇs;§2Ø~ p÷Ôʇ¼Bé9ÀŠò)´h Ã÷H¯Áuu×2;€Gð¯a˜„Tò±®zpHT0AíëwÃSÁ:Á“èµL­ÞE3£D[êÏ…z5¼ó‹ú)œ@ä
+endstream endobj 868 0 obj <</Contents 869 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R/T1_4 1565 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 869 0 obj <</Filter/FlateDecode/Length 4860>>stream
+H‰¤WénÛH~•þÙ\ŒöÅc°`;Ƭ‰'c+³X$‹#Ñ6w-Òåo?UÕM6)ª-O†Å£Øu~u.YBÛ[öê—ë„ÝvìÕRü7a‚-oX'‰‘ôAÁL§I¢XVˆXÉ$eË ã,ZþN{"HZ1iâTl‘›8Š-׌Ÿ/¯/èÀù’=2Uè˜g9HÑp\æ±H™H€9ÛVì_¬a§Ë±6È[jä½èÅ|ªhY:ebuühå.¯AD$$7L ¼*ö»}G‚ë8aŸx$R.£…à ¾xg¢ÿ,ÿ‰
+ÿ*)ã4TVÏj‹ŠNH§÷´ã çËߌù G=¢²‚ÌA‰þdÉ"‰ÅÈýæYû‚„2c›
+«¨àƒ ìdVïHÀí LMçJ›™×Õ¦lvu$4_uAË|ÝÜãi\…˜¶®º»~°ŒÛG&éÌv‡Þ$ñ’Ú!gâ-›™IgÛzW¯Êû#'!rã+Ä8©­y÷#ÏAÓ€9£xÁå=i/ËffÜI$rÞuõmShÅ‚1™, Œ’XÛÝ¡ ÿŸZ6³†}
+©‚2¸ˆT
+3W¹Æz"kc‚4€Â'—•÷²ö‡|fàXÃz¿‹$¡.o+¶ÄÙñ{uJù^èüƒ
+÷É´
+#‚oéÏ!²Ãsˆìð$[<‡ÈˆçÍâ9D=P1ÔÞb¡ {>B(ËpPʨ&½°ž²‹7_!¡:ߣ³¿Ü¢Ó¡E‹c-ZR}ú¥¼©Ÿ¨ZÝ÷À¦ÁÄUP3ðl1 ùÕëªÙáðaÓ 3ï*Ï&)z/%ä¥å߶ vÓnYIf ¹°„>ûÈ¡ùÀZ- ;9_áS­ê›R £WììÒ‹“¾„áó&µi³n7%Ú
+\$o~b7´€ÀÂI™‰« ãŒ{(·¸¯H¾zº/ñº÷ªþ±Ï:‹,Ö*£vH?gÖm|Áú6ç%ÉÃy$ Aô>•hË$ä>ä>Bd—G2åQ€æò(@ÀÒÀÉ|
+£ç ì ú¹Cɸ+›ii_y|̾F2áwåŽÑMÙD¥C|èËv[ßRª6%ùk¿²ÍZðĺ¦ºmÉ–ºÜ‘Ÿ×¬ÏsÞ¸}ùsU7·ScYCŠm+Wk±k¼ÆSŸ®€ƒÃuRLë`Ý0§a—´yˆ*$ö§ÑaWVB§EV 4Ø/ Âø£®ä„Ž"9ó’¡ÂŒåº‚:ŒdØ#{2Lhrl²«WÁÓ@6žyFsª?å,thøftà3ò5U» ¯e:öˆÑHñ‡]1”ÏnJýg¤ÀIbº(=R
+µ)¿EÐÓ¶ýÆ‚MÈ@Hp ?Ãw%ttÍéHÍ}ó´aM³–šŽkõ£'7ÅAž0Âï0ŸAw‡NCïêŽ.²Ê×^Š÷œ8äuKÖ…Ýxzßò=©Îï¡ÓR“°ž,s‰z?â¡Ó¨/)0EŠUCEÝÀÕ ¯LÆxÝ_zìØ‚w]@ÝÕÐÝ{^PŠ|ä‹8Zd\Ð/4ËhQä’¿ýõìdy¯~½dWçoO–‡sœîß°7'ËxùÛ‡óë¥ßŒ¤ÇŸÝi)á³gRtãYN ¿ƒå¡°€ñ`ƒóD…ð¡}£Ä”·@¯‚NÐ Öá€\xÕ‚³Ïð˜óï8 Á΃ŸÝÑ‘3´æ’UõŽž·ÑïZœ5Y§kû5lmGP|_qŸC%²\[’p‹UÓLw0àðU‰s².»®îv%
+X9¾˜<|WÚÃȆt±\7ÈÕjÈ®.鋳^K÷úÃùOŒ^LLð+Òàüd4 7m«Ý¶®¾À]¡³ÖÕª~¸Ã§-ŽG`Üÿ‰„ŽøwL°½ž
+EóŒ|‹±g7£,Wí×fFKÓéúM}ª ŸÂF/±ûö´¦âßcR†:LI뺗’xªV¬Ò„7nF)]>lÏÛu³ã~/q}álQC¢ý\öCÒúG— –¤]nÏ!̉ë2n29Èm1ƒ†€âø´oãÅ9.r)³ÑmŽKw¥5ñ†*63Ò¸}cU½y ;NjǾEe’F6c…yÄ,©“ÄW+!s®Êœè>f&ÕJD1ç™|,¶Ë:bžæ¼Õˆ;àF07$U'¥_Ó%µ§Só©Mîhš‚pÄQ|o¸çªV~žë½b®r'Ÿ¸fQ—e­Ý—õúŒ‡3A“t¡TÚIOŒ9ŠýôÕ!Mx+Ìô¥Î+b±/íšvrîMxþªiPÕ‰5£gWîÀ:¼øJˆ˜]%DÌ®bf[ ³«„ˆÙUBÌl+!bW@â*AŽ…[W *ƒ?W ¯ë†Øõ ¹µD{KcÄ®Á%“ÉÍCH_å«.÷c„¶cÄ-Ä`ûí{{bQÚÕXÖÕ˜“õk¨biô·©;è!ã†Êä M;TµÊ¸¼”)¯ÚÔcEµŒAbéáððÃ×êE_Éš‘8pŒœAˆÍûgòþŽ
+ïvq3F¥Ú'É#ÈÝovSGÑp` íd—lAX¡ú“ /{¹„óäú{S²ëùüÕk;ƒ`ÝøÔ8|Wáú*z®l
+–<áJ²L“Zž¿ðó{M#Ç™&‡!°P`:,YA1¶þrAŸ„ÀŠ™-°bf ¬¨Ù
+À ÜGàXù›1© “Éa¿ãF9ŸÉ˨î\ †o˜ZÎÞ»¶`™²9w”ÈÖ”ËÇ™Hwmè|p¼£ Ÿ³!­ŒI ‡R¤OqF>/õÿĬŠs†$il¡UH’É=Έ˜gDÌÄ"¾ÚqFÄì8#bvœ3[Έ˜'dYî\Æ9Cðášq¿k‚!^b”[@%ÝÀ°bµä  î‘2h®=O,fEˆ‰hÕãéÌåÞJ×-˜Jf)^¤æmPžR»òÔrº‡_&á^gE
+1>(ïØƸ<ìï·Ôm¬w­,Âh\~ÄëGáµÃ(Ià]šïÒyOåb(£ÅøDù3]þsÜ5{#‘(% FŠªEÞ‹ú39™µñœ¨Ôá­”SÐ7ê¢Ô&JI>±¶^wbÏÚu?]>cfë9b7 1>fMVQÞ¹$¥jO™ÈWò­ˆ{spo‰^ Ñv@Ž«¸6•ˆ_P‚\ŸD¹¬;?“BÛž’ëeÂ|þ¹ÙíHš&!l@ÃÇÓáÚý™Ÿ·›äü™~XÝ*VŠª}ØÂöQ¦×M4MòõM @û„¿â]4ø†›Á^5çPzמ/l ßÓ»4»N4VßWÍ¡ÌsŒvs×KôµÄtT–Q§–‡‚ä|à}¾ MÐ~4 @7,fÐ^ƒF¼æ…ݦ7ôéá”p×&YêV<äV<äü÷‚®&ÈØ6‚› ³{+b)èên“V¥*jŽvŸ%åEÉÑBÎOÜ8›=ŸköËŠ&¤Óm—çqåddN•¾]ñ4{óØW=ó‚ŽoÞkÊN$EGP´fIÝuÌó}+ñ4¸#謌‘ÕRs0g–•$ÖÑ@dõ„õZ P˜ËĆ£œN£å< ô$]ÖìŠw¾ê,P£õ®¢¢Á ©’é«7—‹»ë77ÉíòÕâŽîoy•\-îx±zKÓÙÍjéA,w…–‰Ç²Á%ÖÒíà…#A'5Ø””ðã×™”OP:ô®ùk „]wáúGË€v­Q¨
+endstream endobj 870 0 obj <</Contents 871 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 871 0 obj <</Filter/FlateDecode/Length 4807>>stream
+H‰ÌWmoÛÈþ+ûqY@ ÷•d¾)¶k¸ÍÙ‰¥ôP8EÁHkÒ˜òQJþ÷™å’”¨•œÜ—âp
+ÍáÎë33Ͼ›³ŒþkVìÍõ,c«-{3ÿΘ`óGV¦Yf$}P2cS›eŠå¥H•Ì,›?1Î’ùW:!ü‰ N hÁ¤I­*Ù¤0i!›/¿šÏnèÀÕœýÎT©SPž`EÃqY¤Â2‘rÖ8ö+«Ù»ùÐÔ-5êž3ì»èU¶>ÊÌûøàíÎg`"’¦þ«Ø?ü‹4\§ûÌa¹L&‚gø^à“Iþ5ÿ:ü\6R¦¶è\V'½EG÷H§¼ã“6!^¿ê2-ÏfDåG ™#†2ý9Ø’e–ŠAúÍOò: e‡1lz+yùš"›¾Èù¨ÈCö5V×IÁ?|À2Côšê§Øñ_‡ul÷ø°ÞÔ,ŠCru¨~ÆîALß}s¾Ý:F ‘}ù[?¥÷“¼ƒ ÀQ|²ÂûYZc½ŸXºÎUÛ·Ì¿L&š¯“‰§&9š5|?»õ&™”¼~ËîoÁË/™G³j€ª mñϨÐ}²KžÐ%~òÀÙE"3~›ÍS¯†<¶©ÍØD¦èÙÎÌ Ž¾ª‘ñê<âÿkt³^á;öÅUkØS"ß,Ý[ƒ¥‚ƒç`‰ÎÕš[ìè¤A‰ô¶iÖ”çöoüÂ-[ïh&äš0)ŠT‚Y 9aB чX!}X
+ÐÑz°âÌ=UõnCj±ÆF:Õ¢Å^TK·] ò×Ï^ñ¦ÆßA<‚°}ý´xÍ”‘#ó^Í(¤‹f½[/ªok¬„Ú ZOEšÿ`ëíÛ$§Ài„ V‚{ …8R/¯fÜ4ßn׫Úšɪô(ß+×(_rP,­Ò†1PÃR
+P „~ ”Ç¡&*ô@l¬¢9wòp†¤³B¤ðŠ¤Â–4#b)-%9"V©8!†­TÄ•kåI`Dl²ì”òuDÜVJ÷•ÒªMÈ»&‡.SmkKQmÍ~Á"9 NÛmµrlŽ¼ù%ICŠJ'ä\#€—ô9ˆz*cç¯MU.ˆ¼ø{Bw©¸I^ÊT)œq ¢ 0“îÐSlÎ
+MÓŸk;øè9”õ®B»ÉaŒms?™lÄî(´¥ÝK5~$?ÂÀj9<Ú…£GQ68)1!£‹Øñ“GdýÉv”ÈÃP‚kÆú‚^›Zœ!&— ÆÏQSùä¡œ–…¥V€¡ü¦$UôÜëÒT‡yTªÐ0ŽJÜMïï.¦ó›»[–”…ä÷Wï§=ô=ÂñÉë‡e¸~̱ɮpá]²Ëé|Êþ:½yÿéþªßv²
+þì`¤.Y_É}#^wq<&܈úC«p
+œx¢éMh‰ÄàÇëåÕŒ‚ƒýY Ï_Õ.ÅH¾P¥Gù^¹Fù’úÚkƒuD÷…#ÞßòÈÓ‡•î/¬ÀšàÕùÇÄ-Á‰[{²·„<&nIwTÜF·•]*ý­M]¦šÚ"Î:Jù Ém·Õʱ9^ö^žÁ„¢ºÑ…7ðÛ_hñÓ{Ãío·€Ê"ËÇxstsþv7‘J…+$ðp Ã-뮄ÅàJ#Ëä&ØW·@?v¨äB·C-‘(´é꺥ÇADpÄÄ-" ˆ8à &nqð?Ú«¦©q$†þí­JÖýånT¦8ln; d ì©$³Uóï÷Ií¶;±;Àìî`ûµÔ-éI-à ps%¹‘ãFªç0tí»Ü¥ÑáǾæ€y‘áä@(ÁÐëÅW'}»,²¹Î•¿°”ÞÜ//4s-z þ´»zP3„]v&Ì ¦Loh}æ
+'U¨)PHCà ë4-L(ñ§C1K’Ž[Ó’Hœ*x6$í¦%  –HßVÇÉ€ln;w'Œ²‘9Ê26ä©Œ¨açÒv|ž&Ô“•äšñ@Ù.ä¸÷/3“YúÓIM6Ï(T‰Îé¨Áò‰Ó—Y7x‚ÐV¦:/Y?º`ˆî/ÏržÌŠXð¯IÁײñ ½-¯WëÛË{~^Qö,£ûõåòîúË:² ®øßkVKËkß(ÊéÒJœµN /¿ï‘Á*~IŠx»GBG܈½%RàŽOfYL«gÀu´¥ãEôSóÊÈ!A¢=à5£÷À¾°Ì"™™x™ Úè°«h=I?Ñ…Qï¬Î†GúÒò8UÚž¡:l[!éªÛ+¢u’³ÖþÏÙë‘~ʲ~Pìˆ4š¡¢hŒ—W0øj»ã9gÕd`ƒÓ\ОWÕ)U 3™KÖ7là8!=NèNàN[/q¶<^Ì©„uGä¦[¸¥)×á«Ç)SP– Ûjì®^_­‡(ÑC]íà3xFÆíc}‘ù-;ž7½]ôöŠ¨ !$'ùsP^PË<Gm@²½;©LèqÀúð]æ|‹ôSìï_qÄ]ûã{´¬ÞjTVe„ÍCãéÖj9Ùøh(…¤rçöÑ0 xÏT©»±®‘™ÐÈYïëfsd¡”TFþ­…VË9 %Š´,”ùQ¿w6˜ãÝX×énëªy®ý‹ü?ˆÕrÎ2…ÖÛ†Ú„sûôÙ²«I'ØI•
+=ÊÏD4ÁTMx°¹l²DÁç6FÔ ôã-z*lükŸ› çhß q.ª"÷y¢ówÌd†r+w|ˆ"•¤~«êÊt¼ÙÍcjBgÖÑáÈ°Çz¿!Îo¿[Å(8øõLÒFâ.ï-)/r´;kÇm±ãf(ß?ýœÓ% ŸcæIL
+ΑÒ`pI‡Ú©%Õîχ˪wIí~ò_‡Éð—Á¤TŒ£5ò—ôb¶áø”Š&5NÇà¨k6YNVŸβyᦴþ¸m_œ«s°T‚U`EÎÓa.ÍÃÊÑÍèIÍ9ÝÎè
+ñÈ…eg ¸®ÈÜ tK“²¹*ÔÉdU¤“•pƒ•RÞ`¥Ó3ƒ•QEì¯zC'9’SÁ#jr¸²0úÏÔSmº DÀŽØ!wDÀ¨#BÇDÅ@„0à-Ñóà¦yjwoàŠ*-Ú¾†ø@=²Š«fÿDÏԉǻèæ**¥qy¬
+E©?X(&ab“¹JqÂó FŒK…†Š4Ì…~­—Š
+ù‘ ÄüˆR|¥†X!¾„Y€+°cEîX€;VPÇŠܱ"
+ºD>Y&ô§Ê„åƒ2yŒ6·ÅdÔ¬ pJz† BÕÖRN¡m÷ éx¹¦í`Üê…ßÍ:¤ .z´@žû‡v$ lÝ™:‘î8’.RZßKƒA¾ÙEC£Ù¬ð·.}aÇà€4ÁþÁÉãñ $<Âû¥7§¥–òef2Ky:+âdYŸª~ä±\õ’‡SFå¬Op&4Ÿ©ÎKVÅϽ.‘óÜÙeP9OfE,ø×0·,d|CoËëÕúöòžŸWè»âet¿¾\Þ]YG‹ÕòšÓÌsß4ê ËwíFPVwµþž'¹—¤Œ·û„K9^ß)Ñ
+ŒøV=­£-mÍkè‡ZE7@HÅè¯4[HGZøÂ2ëå‚J@ÅbU´ÿ¯›MÍjŸ¨–ЇWR°«éÛ÷¶aåVGKvFmÝ,¯Ñ›¬¯êIi÷K*Ö€›<ÆO3°ä.âR$ù…¾CËÕÍ£3@Ô·š4Ó!Øt~cûùinnY  2nÂïƒ;¯PŽè†”è«gì%oèç°m©\5ð TeñbˆŸ:¥fü ‘tÌ¢+4G÷ÏÕW¦0rw"Ž½pJù¦O£iÀeó.¨^_·|gòÇC]íê]Ä–·õçävœ7dM½ÁÙ.þ
+“d2Ëàš,ž“ëúZû
+endstream endobj 872 0 obj <</Contents 873 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 873 0 obj <</Filter/FlateDecode/Length 4344>>stream
+H‰ÄWmoÛÈþ+ûqYT̾/yßr¶b¸hœœ­öP$EÁH´£@¦|¢|¹üû›Ù]’+R+åÎh 4Åá¼?ûÌðÇaîo÷@^]Ý1òÐ’W þF8YÜ“2gL ÷BI´É c’Ø’çR0C„’lñÅip¯Á@EK"tndIf…Î .ÉbEè|qwíæ ò ‘¥ÊÁ¸-À‹u&r+à'»šüLòã"Žm ‰¶gÎ&‹¯‡!z“!FÁ|Œ¼ßÅá"ã‚j¢8þ—äŸþAžqªr–ý{ñ7Œì'ˆM•6ªM` §"à"ñF‘Ð.yï¢Ì­\ˆ¼<ésæ\ñ„v&9¤"›qMwÿtœg¦è]Ë?–š×§6‹RÓØûÁ>‡Ô̹ÆJ{Ä‘>∩YäK”,çŠôŸpämŒqiãœ
+úþ=¢²WO8<¿âÿIw™¦-Þ¬· ɸ¤P\Õ˜‘[»÷6u…OÛš8¬‹¸ý¶pÝ1 ʉÑÒ¹T<î\&r’‰³‡™ˆ¥Ïäzþê*³t·}~"7ÕcGÀ•Ä³Þ…p6‚IǼ‘σãÅ ‘ªw¡ öâlÃÔÔ‘33Iî=ö¡nëfy—ð§øÏçå œÊK8Û½ asu6¯#¬áÍŒÝVÍC;+ìËúä œÊG
+•GØ9¦Å6 ÇJLG
+H?-ÕLŸ²Ý%‡F‰¡QjØLÅt3Õ2@Ü’®eo±G5Lj²È¸¾KA¹Îq¨^É¿+÷:ˆ¼
+Ы»Hþ•qK癢w€5Žf‚—%°ß—z™Áƒ=ªÁ¥T꾂XÂNÕUº?g‚âA q‡ ”8 (!JH;¥ÄA ñAgöÅAÒ-«Ý\kî·»G4R4ŠFÁÊ­šöïýâH®/‘s URÁ|Û§£P¨K«ÏaIx01݃I‹˜´hš‰T:
+þk‘ª$"
+>PýH›)ÿßý¯9I¾Œ“ ­å ,1OÒœ”wXJˆ;,¥ÄK qÀRBÚa)%XJˆ§Xâ²£$–ÞˆLiñ&@é
+
+³È‡•]åR×ë"·à›‹Üh9Ýü#Óä,ù%ÈQF|G"B凃6%ä˜rLŠ=9¦ÄžSÒ@ŽI±'Ç”ø9š¾÷é}M[#—"$Ç9ô‰Óß2Ü$r” û¯´w™=G禩ò'ÏÚ~š
+H,1MËÊa?Îs£É…ø¿qã‰Õ1‰5|¨qÛóÁs[»ØÉúyd(Aïf`L ŒgØU݀؟Â.õÙíPmF1èMNwE~E­jó1´è—;®Ô â‹únªÝC½b¯šáD;Oöú+uÄÞ ¾¢r­Œ‰˜V6´î˜á+‘7Àr?ü§iA¿¸«¿‡­ÐÒ=ŽŒ¡àÉ’émKY›‹a+QxVˆ9ŒÂA5°MR—[…ëM'×&/ŠH=°QRåE/.€ â¸Y%µQ®ëFŽÔ=™¥Õ <«ƒ:t"NÝ“]ºjŠç¬ˆ—±v ä:Êãر‘¶çÊ´öù ¨T鬄µñê
+Êݲ…Xz¿nÞ¼»}ûzáîßá:{C·¯oîÞÌoÉ›×îñßññ?nçM*2úŠñì'O& 1EÐŽ °—1ØìùãïÇL
+w†b0q ±ø­+èí@A5’™¦ûõãm~€âIC/†–ë1ˆéG`é£ ¸rý@ÉVá'Añúhì¹ÈG¼w°¤ABÕf³v`v0Óªpý#vx»ª
+J<u”…ÎPÀñ9ü]Óç"Vw\\]Ê®-Ý\)9jrJøµ,*UZ¤µï•_Äàœ¨ƒÔi†@ª¢4U äÛLTàî4vŒèñ¯S }?ÚïSû4‘N’:µëM¢x}Çò,1ˆ#ƒ880ˆ#ƒ82ˆ#ƒ8ØN®=f4©³¨x lÿbÖ/»×ý-rƒ-@¢‘EP† §hºã+>c‘²åEî
+¤¨.¹)*ÕUenqIz2iãÉTÃÅrd2&°i^K+Ïäˆ@¹ôp´÷ö‰<pˆz‚<Xøu:c­ÏÉÃÀ‘<ÈÃÀ‘< ÉÃÀ‘<l'×>'QFèèÛÕØõä)ËB¤»Ê{ìƒÞ°lði‹DG[‡¿×ðHï^ü'u~¢‡Ô¸6­U•þ0‘D¯Jæ–*õ<ª\}…GNLѨ¬ cYI‡7Êj±°§qp ±°\ûJ# ŸÔ¢â5HÖ-HtÐû5ïÇ–Ìá­õŸóA€x5Õjè±&øÀÀ‘øÀÀ‘ ùÀÀ‘l'×óA¹äjÏhñ´îeefAtN~Iž”\M¶
+\^ÊŸ¾” ÈX/z,êuÎßX¯{#aêK4f›«-s¡¡ÞTŽ¦¢ç4W)€{QC¡, dŸÂ ü
+¥»¾?ÿ¸¿[~ÂÜXÞÁ'òåêÓC’3ÛP•²H"ûåóoˇU¶\-°ùXÎæ6¿ó¯z­ÓÃÀûÚ®¦N Â_1èGÈ.POì~ŽØHÈüm}ië[žy 4Ú" z´¥"/²cKyÚÁûÓ ú¢gJRh¥Àèžè³ ¹Ã´]¡¬d§=ÆÍæ¯`ˆé'¦»õKž£HPÙšgüŒ¾}ÇÅB¾¸6KsÚî)\ÕDû½ìš¸ Äq
+{~¡Ÿÿcs¿/êøh&ÿ¶@î…ç
+endstream endobj 874 0 obj <</Contents 875 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R/T1_5 1565 0 R/T1_6 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 875 0 obj <</Filter/FlateDecode/Length 4088>>stream
+H‰¬WmsÛ¸þ+øHv*†x#Á|Kd_Ɖ“Êj;7I§CK´Ž™ò‰Ê]óï»»
+ë§õN £”ný¬
+]X?±tƒ«Åxd>%Wí>©¤YÚ]:+’.-’×à›ß22‡fd€¢ukT˜Ó9ú †ý¹ ÝQ¥w§¤³ñ)a‹[ªLæY:ybÕ“¿ÅIŠg¤&2ôr [ïÀ«²²éRž'õ^ñ›ÎʤÛà7vßÔûfÏS!“ݺy b6‡2@T\%´¯»)íÔ(VÀvû–rî~ãŠf1Ÿïß3t¸É”á¬Ð
+0/k„g¬‘®I˜ÿMßt«£´¤ê‡#´Z.E(Š<c„¢„?/,æÔé:µ¶¨»MZ4åO¨Õr)2)T6š‘Óù\`Ã1Íùô
+C}ù˜²œ*‘|M¥IžVQBŸá£ðç…÷è4`«ê4àº[1+³-ÄD´A¡-0È̾Áþ÷@OûÞ­¨#¦U4
+lÝô+<hí“U¼ëð„¤´ÀÛÐGÄ_ÒÓÄÄ:i™bd¾oíªÞ¶)DT%aå·‡c›¤àÒIмÀ¾5÷òr¦\VÍ$¸7)7Iß·›®Y_¬Ö™|i®]O<ªÖ$_"¨  Ü/”V‚ƒbèWô€PN„šWؾG±.JŒúòæé®B¤pc“”—ò’XHNª#b‰ÉSq1Я2®\ÁÍ—ê\_Ò탎ˆ]¡TÀ'G
+ÂÍ”åI ñ¢ª2a|ÉÞcš¾¯7 [¦\CÑ8Ú!‡ÔG’p-÷Œ§È¤‘Ž<dx[ 2ž¡:ŽÌI‘R¸½\e
+`í–þŠ0¼NУ6«™’ºL
+ŽAeDruƒ?×ó%£·Û_>,Þ¿YÒû‡t&“[¶\¼¹½ûåz1œ‚’C$vúbXBçr I&¿‡k{˜]ª0ÂüÃm“.~¯7°¢a-öOZ‡ pŠ;àH²{ø‰½]ÀɾßP'Òߊ´7lÿ–Ží[@ûÖá‚9-€sKVP ãæFÕÃŽö´­>à _ñý óÒ¬h}o¡É¯Fôm‡‹ö4Ý>âïúÐî:7³Ú2
+Ÿ¹‚¨}ÎfБdñ
+2t…$4
+ÔQbÐ:YáÔ×lqÉ|¬‹<Yò*ä1$ ©a®€ ?¹ÌoÑ«±dem;Þœ„Vös¬-HÙÀ(|G%8ñNfHJg‰’rm65I½ÝÚ\oà»oê=†Ð³[7¯©¢;J .îhZXaöá× Ó øë<¤Ü%LC ËF@x–ùŽ“':,'—éƒïÚ‘
+æ³WïÀÅýîË»­›{s%qõ.|ç(jµœ>"àܼŽ¼h­¹y.ÔØhuMÂüˆÓMÓ7Ýê(B!vÎŒÐj¹¡(è6ñv`ºTÏFèŠ9µFºN­-ênÓ„axüñÚY-—"“nåÑLþ̨K'0C¤&?ƒNìŽÐa¿¦Ò ]®»ø5ó'õ\$rnk䌣Ð$8‘ô´ïÝŠÎ(¶Þñ,JS†8Bt9ÌȈhÕL¢¼këîÐ"ý[õgD!Ïè,Ž[7ý
+1ß>YÅÐp¸
+CRZdÅI{™N¨¤eZ·É„œ9U;V߆Ìc›¤à(52ñw*—ÿ·—˪™÷G©¾‡ößÄÁÉ—¦n¦ÕšäK¨Sî®K™ž0ºcá„Ø;:xy3œÚ+Âä Å ©}Lì¸{LìØyTléwLlùuLêtTì‚Žˆ§Ãœ¤ÚSÿàñiNÃ!©ÖøkÔô}½iØ2%Ö}
+Z”È u¦ðÙût˜ÔŠLi¿[È,M^ú•~Ô O”Rú9ø4N›né¯Ãk {wH?`¥’ºf?9ÁÆ<Dg?·®ç u‚ˆØƒ "ö ˆ‰"b‚ˆÔƒ &v ˆˆÏ€`ÄÀô~0
+T†ªJy?²Ê ¡Fñà \mñ&{üDÄ?1±ÃODìð‘züÄÄ?ñw7‘¼B
+àû>ðþ[œ%¯à±{¬[‹›n[œV5¾K%r%Ë°¡€O²/é(úgwHRqDäSí(±GDDì;DDÄ©GDLìO!Ä€PC„ªª€ à0¶…%»ûz ƒé|vs…eêE¦ýY//Ü*ZL0 Y¥\À‘äæ~sM}ךåÀ£uVIE-
+?¢¾ëÿ QÏ€lt–iÄú Žœ¤„* U÷~ÙÇ(UjÈò²?ÙÌ®D'JçDÛ³]€#“¬¶øöeÝ`Œë ¿žôtð 6v59,¬†piÍcÓãuÞc%ê jmþ¬cÛÆœ\±„òèâÕá<B9öUV.Îó¹ÁUGÙð©€* ¢ž?Óƒ£L@â0&ô2VÍ“ðÞÁx³ÅîB(+Èåé}äÜegjiC“YYz§Ã
+ŽØÊU¢æºÝÿVSٶ쾇“ðZ„m¹ßWãØŠÖè<u5»KeRTb“•`›ÿŸôªinÛ†‚…Gò  ’ ™[ÆQÓL[§uœ™t¦F¦-vl)‘èÖù÷Ý}
+™ëkb¹D Ѭg‘ÜÎ`Ö|˜Uq©'F#˜9„ÔMå1ZýŒV4
+™W@­¤@&ä/Î* `ž* `ž* d¶0Û
+X§
+™mÌ Œ6ãr¦Ãµ ñÇÕÂuÅO‰‚Šk€1Y­xY!¨r‘Õ:Kky]+£ Ÿç5*°ÂÊÏÿÉk ¨ø?n'‚{«™Öj‡éÇ^\†ÛHnSVsæÎ!•çûtz/núÝÈ Í0ÊU7ÚvtëèùÕÌ8·ºè/Îîî=ºUí43/K7õ¾;ÜáÂ3n»ókR½ÌeÖV ˜ý8µL«RkPÔ6¬¿³ ‚‚z:àÜŽgÿ)Oó“¬jÜæVê_^É¡ô‰8,Ù} æªf^jñ#¸6luöJ§Mã-·ø\N{ãÌ
+G­ÌÓ¬ñ?Þú«-¼—ÓîûÎ8x« ú…W/ØçÕ•§ß2ƒˆ­®´ADQÚ€¢ªZ %ÍÎÙÕk£ôˆ‹¥èÆÌüŸ7S 6!l›&«&ÎåYU@Á¶Íã¿þüŽ—?Eæ÷‡÷W¿¼¾–ÿï“U_rb¼þ„zWñů/ß®£«õo×®g䜎Ǟ=ƒ¶àA!£Ê PñíZºm LŽ¼èÊ×¥Ðh¢¯uÌqhl´=\’y|°sèû8øŒWKTà0q+k®’Uy3ð:4î)î9nÎ…1Ú I+ûà säû· ø Ãû2ûõ‘‹ùõQ|øÍ÷›A& pccœÜq\÷ügpDÎÕ‰×ã°çRŠ hBqÀü*i/›øšQR¹ˆ×3öUû'ˆøÍÎÆ I½Ã+ iŸšS¶Ë§l§SZìa –¾øÞM-Š)<+•µËÞ°»6ÝHeþN”–½ì)[ÜÁ¸À½z\­çŠ+õÏÈtéÄÝ;¸¥éU¯øTÆݘðCÝEë§IßõÈ@Ê)â/ýbikhQ¸yž*å x;5ò"WRÏÊ÷yZµq;ÌKèH]»tq—<`Ęøša4´ƒšdýÞ²:G èfé“Sc“Ii€6@‡úâÐÎÔ<ÿ²?*Ù½2Ê:šìxîÑl¥Ú/ßȪáÈÞ¨ÍÛ€Ò‘¼‰Éæ=E³øë)«æ”)I™‚ʪK?eu¼? |IÅtAsd‡ ¡XÌ»cÂêÃ’RFÄô /äU.y"%ÀõuVùÉs‰+lâvÒ4’Šö´›“Ôº¬¶F¢é´ûYeDô”!í2„+ŽÉF†´È ô¯{´àõ„cI¸µÉ„ͺŽeHÒ!óLå؉SO•2aªNŸV3Eú¥]•7Âí »ê
+Øà $ëø™¶*¼ÛBeSS–§mUxÚ-+àé\"šÓUƒß4§pç²7 å@ev FëY‘>$Þ
+endstream endobj 876 0 obj <</Contents 877 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1508 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 877 0 obj <</Filter/FlateDecode/Length 4541>>stream
+H‰ìWÛrÛÈý•)?©ÆÜG¯Ì8L²²Wb²Ù²S)˜%º$P¨ý÷éž 0 0”¼N*/)—)Ó=Ý}ætÏk’›í yùæ:'7y¹¦ÿÌ %ë)³<—̼P©2•çœè’fœåŠ¬ïIBÒõ'³‚Ú9¬@hC˜Ì/É¢YA9YoI²\_¯Ì‚åš|&¼×x°œU„æ`œ´5ù™4ä‡u¸´ÍÚ^x7ÿoÑšt{d¹Ýã{ëw} .RÊIÅ¿œüÍ>ÈRšˆ,'’”ª„¥ šäøœâ7™þcý'ÜðO°eÉX¦Š~Ëüìnq£ãšÕ'»K.!Ö¾ íS–•Of„ëGrÆQ.>¤/Væ Ò/ƒ#kãÔåeÐfð¢ËçYEÖ“"‡<jÌߤEòî–¢¦~œüŠk¬c›Ê¤Ã/ûCCRÊH®ðÕÏÉÀæ½»ºÂ§]M IXX~]˜ê¨<c‹’ÒS¡PŠ‰„O"1ö0{é#Y-_¾IuÒÈeu_‡; ‚gšõ[xr“ŠY'>Ô‹,+DïBÀÞ‹çʱ#cfÜ;¬CÝÕÍfƒ£Q~O\ÖÀ¹¸˜±Ý»`:OÆe«7vdÖŸ:ºªš›:tVèï«“5p.ÎD6x`(¥ßäÁ¬ÏO=¬FTÄ3ÒUÌxQÓ8@‘ÉK¾¦¼HjR5[2ðalÙêÀœiíJ.pÔ›ná‹dg>í÷fƒŸuZ&½®Ð!ã„~*Hs5ÝD¡§¼{Ÿ\×÷UsܧT$›.™±Égl*G±Q`ÛºÛàéÙ?XÇ?ƒ¼®†ˆèsä‰M¼+§¼xŸ\´ûã~SÝí}á‚Ó+Jž)ñl·α]R…:Ô÷œÎ8S.kfÜ«”I×íoš:ÎÃH¾$•NèF՚䋵¶ÁöµÎAÿ)†£e> ”Ý (i‰r<ÀRiŒúübQ+ÈòL+‹RÍÏÁŒSc:sLžˆÃÐÛuܸ€NGe.ÏÙöAG`W( +ª!P•NGî(n‰/ÙX£ºëª›š¬S*¡h”¢:™²QH]¡¼[ó.Í]=UÆ nŸ[Ê- ˜[Ü›eÆ2š¡9ŠcIŒsæÖR,,ü«¿ —©H®ÓŠÕBH“Ký©ÞàNŽhä”C!fhâ`ó–OX\"D`O„쉃"°#BõDˆÁŽxJV Dˆó€›9Ö`ÍîÐÞc+TZJK–_RÆ“Í­éóðˆ¬^§ÒSç2d°’kqBÉ&t‰6&š€ |PžL†ÚóÁ8"GBLE…ÃPy†pËbù8!Æ„ˆÀžØ";BD`Gˆê ƒ!"ð !Ê©„{@Îø7Ð
+/áuµ#Ç[w?½ó€Ñ¼—'™•\u‡hoùåX[šÖ[»Ú©ì×_“Äí6t’ÛDq9.<%õû_-MˆÂè3Ú /.ì›aËíÈw§'ÙÜ%ÞÖê6Ìát2´’÷Zû-4L°¢ìÃ_ÿÞ¹Gu§I‡•©nÌÔðûSI†“N®Ëfš)]º0çSƒo’á3Åì¹TšLÈŒê06Œ÷«éTÞ×óµ!]‰¤£–tCA)
+j³å¶MfJjCä™Ö~óa!‡£À„+$¾ˆ–µcUw[™úÝ‘õ0 ŸÌ\¦û›æК~‹»ÎqBÔFdR(Ù"Óàž²LIçé—%,ã(u tµÅ¹ßtò"ùd>í÷MºÐ | 6>ÅÏÝÑ$\nQ­@0‘…/;á‹ÁNø¢°¾l…/†:á‹ÂVøbðŒð Ç6WQá“DJyá[š[‘¹Ÿ¡¸€°ÌŠ÷šö6-Έ³âW9õ£Z³d}î¨ ò§2˜àþGò7sjNäïÌ¡‘ƒêé©ê=vµ ìwÄtwŸ‰ÅPAâ0ø¦‚ˆáhnë戟ýñ+*&¹­p[]°¯bX?ÝVE~ÅeÕÝc ÆÃÄN…èUà®joê´ÛÞ¸z,"‡ùõYÝÜÑß©’ð'ª‚£%Í¿˜B×–:‰®¥f ëq©²¢–;‰.G¼èáÎw¸o§?ÑÕˆËÁ:Häx¹Õ§øòí°*†nõ+ž5A³¼—áj§oÑ切{Ç<«­üÅWÏàÃj§Ž"hðùT••DÁdÉJ¢Õ2 Ôg¸
+$‘
+½™Ôñ7öbÖžz!uŽã³¬Ó§b±R4òbmœxA]~¸«šÊÊ„ä$zTŽ¼~KLvm<&`ž:|kZþ1(T1>pÉ‚6z~-ìYÃ}Cøã
+R¡Uv–#èLÏ.'iV𫀸9Èg‘û,¯vÇÖ*n·«[Ìu|І *„Œu½Ó6]œÚ`p‡V×ámzØéÌAôÁðC[›çÐJÌolQá„4kÊa€,}¯_¡Ê7h}whïÑDä6ײü‚¿7Øàçõ´þú`ìöfÏM10B2æ]™>{ë †Ò´ƒäè “/Ë°Mä¤ ƒlà!’]êúIÒ¾È†Æ „ªÎòÆX&˜\]!ËjLŠlIC§¤°3ÄT¯zfh¤×ÀŒ¶þühæòî8ôÛÿÃÃdbXLí•6`‹¿
+!]ì§Ïç‹`‚éY‚•Ì‹8K°“ù‰Q|e¥ÐêAƒAÁ‘(²š ãÌì`'ÝÖ’,²z}N³,•T–|fºrý’K†í&Pä T¶@–ÁYY(3ã%B^äöû`‹1˜9rm¹\ÂABùü'}÷—ÕåŸÃñ˜ùŽX…¡öT»üÃÛ«_­Wo/É2ÕÉßÍÅæâ¯.ßàO¯–×ïÞ^^ÛŸž`"hßÊ›ÇÓq&üóê·¼63ê-Ü‹ö]*Í5‡%÷)£ SñaupMöé¢4¿ ~ÔæÍc
+sôGø©’¯)˸À‹·fÍEºPÉe
+#=°óhŸ]¥øhû|#•1YãîÞØl×»tÁÿÍ{ì¶Ñ_ÑQ:Ø+R”Dõ$nk´qR§ºÀ^\Gm½ˆí4v€íßï›!)É–Gi‘¢‡8²Ÿ83>μáïÉ êœËã‡-¹æ@:¦o¯“‘ßÓ00¥•ÎÍ;òOæoäþ’ƒ?ã;ËŠóþ‰âyË/1„Ü·W0-}z•éL ¹Ÿ@ædBŠþÃíäÆå4ZS2ø&ï(ª]b(“e\ÞfdÊÛÆøirgûbõHÅ¿^RñA:7ˆòmé|Ö!?fÎ÷‹§Ãà ÐÜthn–Ғ‹
+ÊÐœ2VÆç‘N²¦Ž†Ï›G”)n!3øfõ•Nµ—y²!Π/1m!:ÞÞÕ¯À‡2Þ2UèåM³¯?b:ù©*bJR[¹¾G¥EÓˆ4ê^P<'ÆøäMÐY¯±=ü®uÙÕ)“¿Þ ÄÇíÓC4[¬ë®T&—º áÙNwAgåÈñØU–êSãCLjNïžðƶzÛ¼~¤‹³«7˃jT³êÅ;tV†v¨ žÛ‚¼fžÝ¡T…³uìm¾@Oîz´åo8;gehg™†kݤ4!øinÿ‘#6“ž`'ÕV”§Ifã‡:Zlî¢ö
+ßGòw½36»aÉ ¬UU¡úý[/iÄÛLP"†‘¿<œ’Ÿi„eŽ$ÀA$ÁžAì$ Aì$À}¹ê1jõâI©*GãhšÛæËöqF³ ­P¢£É‰Îâå7næ(ÑôÂÍ(ºLsp¨¢(ž•ùsÒŽDiÞ(׉ÊÀ¢ÊhzÀœŠ£Êêà­“^<"MŠÓ×"i•ñNr]qnH#Áž4ìI#ÂŽ4ìH#¡ž4"ìH#Á'HcÒ(™3Ö;ä ƒI£‰4s?œÆßé‡'Lt‹ë;&†Â¼²ñ '”:æ%Ô¡ªêÈ Ž
+[œR??SˆIR
+ÌMV.D$À@ì $Àž@$Áž@|‚@U+šÆDÒmçB”¨(&晇ÆRÌ=,£ +âÿŒC¡;êt•$ÿWZeù‹šZ‘²0¸d*µÍy¥O¡
+J³]x&,U¥¡»à¼@Uè¬4Vl2Dwƒ$œ·¶QAW{K«mJï7«q’Ým{ŠK 3Dޮ못8Ü
+73žE“O¸ÃY|þölöf“ñë3†ß|;Ÿ´—Ö´7Q5æ•ÊŠE…±¡}dGßH¶ìP;p!TÖ‰V1d06A?.¾®£EÀ/ÑGÍo’ôÙ£sEŸñµˆ$:£=½øל“ø™%(9ûm´w¿Íä¯+Ô±2ŽlrÁ"Šm>Ñ#;ÂÃrÁÇRæO÷`-zغ7LÇüí5‰¤Jñ9h:”)œ]²ƒ3ª-nãÓ+J6Åñ–#B¾ù¿Ï0£¥O«2ÜáÓh¤Æ
+‡þñù£ÙaB^>ÜNnȦ‰£5eŠ©À
+RXÆõØᡪý/À
+endstream endobj 878 0 obj <</Contents 879 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 879 0 obj <</Filter/FlateDecode/Length 2085>>stream
+H‰¼WYoÛHþ+ýØý@¦o’yKl#ðq2–°‹…3Ðí0¥DTf&ÿ~«ªÙ$u´ìÝ Ã’È꺿:úíœIúÛ>²Wïf’=vìÕ\ý!™bóVåR:M*æ|î¥4¬¨Tn´ôlþÄ8ó/Ä¡‡$-˜v¹7ËJ——Ê°ù’ñ«ùìš®æì3•ÍAxQ‚ ìºÌ•gJ‚p¶mØ¿Øš½O­AÙÚ¢ì,ªùkßÄ ²·QË`ã]Ð;Ÿ
+¡4wÌ*ü6ìŸáE.·¹dŸ¸Pžk‘).ñ½Â_Nü>ÿü˜ì´Î}9˜lÎZ‹†î¸¬ãY ßMå+WÏFÄ'¹Š¤ý$&ºt%s5 ¿û‡Š”•SŸ
+(á?º…O+axÓ¡ƒ8˜cpYŒæ7@!]•¹-óàñ,”l6G¨ yj-soc¨¯¯^½·›ï_ÙMýÔL‹YY“z0áY †Lìé Rs6)
+ºeNAô*<®âtGåî°íúÜPâd® 3ÉJ6@P Û_60Ýq00W°¯9XÍaƒc½%6·ÒEKþ-`ݹ–Ï
+#=ÔÙ€ ¹GPŠÜ#(IJ‘‚RÔAIr@PŠ|Œ Ð=²q]< ²yÃp[?l¶O0hjlÑ
+Z4»ú[hßi˜C#`×—ÂQŠ
+GÅ6C#,Έ°óì—6ë÷GÔÕ©ö’F‘Tg
+~u¸ôœQšw>™Õðýáÿ½å÷S[DÞÁ\>Ý$æ•>EU°?Žœg VUX¬åHv¸eM¸# ÜH.j‰…0aŽ M0#Ù²½9àî1œâ.%ž¸!“S·{ˆ§fU.Ë©êjÊ+ Áä©áƒ s_)æ䑹¯}Ô
+ t>” Ú
+y
+Uc ˆ UsÞpƒ0a-¬JO·Q~Ò‰¢ß£,i`²Å
+zÿöýŒ‰ªÔ|v5›Á›ë7ð\)ŽsÀ÷›ÛùXgz,UÆ­T©sŽ¸RAˆâb:‡7ü3îžÔ;Ô l›OB+Þt"+8¾¬Ü° ‹áGC'qÝÁúÁîáÑóBÃÕt‡?Ïn°7ÚÄnÃäÛÕ÷+R…X ãpúú;m*(µ£Îc çÀ«zµ"Íø a‹ éÂgüo¤¯ÝÐ.]ãç2Øú  /0:Ó,‰§YN5ÞÂ,|ƒ½^äØêBdC:õ°åS<%Ë õHò%Äí²ÝBãCåí&,òž¿F?aÓ²cÁåýÔÿ>‚ˆ"=A‘-¢Z(I`¹ãìöL+øEŽ²7‘ìšÜ^iôf$ÌDha·œQ BQ¯à'þ·˜Ùõ#…義·Í–=á v³l^ãÅõB†A¶œøÖØì1ÌŽ„mð‘l³ÅèŸñD³Ì‡Vû
+endstream endobj 880 0 obj <</Contents 881 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 881 0 obj <</Filter/FlateDecode/Length 4337>>stream
+H‰¼—ooÛ8‡¿
+_RXÿJ|s@Óv{9lv»ï‡ÝÃAë(9/9µòíoH%ÙòتSEl×?kfÈy8œ¹˜³"ü[ß±7¯ v·aoæâ?l~Ë\^F†8fln‹B±Ò‰\ɲùã,›ÿžñ‰žðÒ‚I“[åج2y%›ß0þa~}ø0g_˜r:ãe^4<.«\X&
+0ÎÖ û•µìb>ŒÆÛ–ÚÛž%7ÿÛ 1šÄecü-ú_ƒ‹LHn˜þ]±Æ/òLpìwž Ëe6¼ðß ÿÉdÿžÿÝü „l¤ÌmÕ…¬ŽFëÝÝÀðô^t|†훡}!swrGTyÀ‘9à¨Ð¿g_Ò¹l¿9ÃQ´±ïHÀþÖØô^J7%ɦOr9JòÃ>ÇêcVñOŸ|šaõ:äO±¯þ½ñy\g†oü‡åªe™P6W§ìì3Èáw÷Mí¿Ý4,@"‡é/Ëø+mo‚YK:µ–V¢F+ öüJ,ÄÒ­äòÛYÉ׫§GöSýÐ #Zæ²êB8Á(cÑÀžOÎù•È«Þ…†Ø«i§r×Q03ZÜ'Ÿ‡fÓ´‹uI)<êç¯+8¶.iÜpëd™ë“ëŠÙÛuÌì;ú\·wÍÐYeóòEë Ž­G —ÛžFéòÓ0êF=®ÁÞÙÎ…äÏ™ªøãNÖ”ö§ºÁ—óoZe4pt•Fä¦ßHQ寈]?ÁʾŸº½é]íÚ‰µ§’*WÁ‘p.Ò&­¡th~^ãçvá_›ÌÁjpÇ`1•î—.Om˜_ÌŒ2uÝ<Ôív™ ÍÖçé€MuÀæÁ…Ý4›…?±ËÇhxÕú×Á’´Ù­bJM”#÷ÑÌhIïÖËírQß/‚ø´ƒÛQ¾àˆEÇà3Âúâ×-nÊu| _ÑÌhqo3QñÍfy×67GÓu`¿Œ€®JÒ5Ú/9H–Žõ¯, 7`Ê_x¥Üî‰JZ¿½ ×Bð RiüúËRÀE.Øâ!|ÿÀ¬öç´`÷øi¾‡oÒ§[XœV.à‚~|Ïg‡~Œ­Â 9$¼9‰¢,| ª°.Ô\B–Jå´ª
+ï±Ì çcÁξQ† ¡Û(Ë#œ›¢Ô!êøÐoÒ™ è¿ ´ÚБ1 ¶Z¸È¿2Qò™æ×€tŽfH UöÏf‘Á[ÿø>ãð¦õ$ŒqÏÏÄýŒ0Æ0àW"%´+=¨„Œ j•’TBNr•’TBƒ
+üÂ¥ 9Uaˆ@NçWpgúþ÷’]u·çAáˆh[‚0†;WâI)ÝB T%R8³Nºò\
+)ŽTHhy•ì+$dõÂçj¥‚¬ÃÝyÝÀãåMÓú÷ír‹ë j›ä?Ãàùª˜V'0…½æÐU¬ õ?ÜCŸRNBwûLDÑ…¨€ù«ׄ(!#¢„š¥dD”Sà„œ¥dD”ÔFÙ!z`ë-*zD'8D%dÒ{ÑÔëf ¤®¿‚º\àu ;ÑaIò›¿÷Eöù¬(è ¨ñÁ6Œ<¡p,þˆ½êÒ -@u²ø®Ý‹Ë/4ÚnÛ˜¦3ÙF?ÛÖÙÐ *%G¶)Ù&åÈ6%cà”Œl“rd›’Ï-¿¶*a»Û—O쪖g ¾¿Ï ×K`”·wŠw™…á³ mágQÉ}YöéÍ躌¤û¢PYÞ.›µGêíþ¡WÀ]L+ã'q·ÎLœÖRæÎÃ=ù¡p/õ±yŒ’wBM¸S2âNÈ)pBN¸S2âNÈJ¹èK¹¢q·v0}Î {Áëuý
+hˆÄ€u—"9£oð›ZLb6mÿyÌ&?³U&3¢¹¥dd–P³”ŒÌr
+œ³”ŒÌò˜YUö½£™-ý~ †0Ñ azwûì‡°æ± I_n—«ÐhôD’-….cOñSVò§Lð‡?šu&ªqóÐ÷ þ‘Wh°6W/©Í>ÂNâSv&çè‡âÜ–0ô¬Ý㜑sBMœS2rNÈ)pBNœS2rNÈjsßÐ%͹©SÜ<ÚÏk’?4l»ŠMƒë
+>^C•fïëm=è›]‡÷ü/Ñ„ákÀ¥n7·ìr64‡À¾z°ÝK‡?¿û…ž7æéL¸Ñ·¶ðFvÅ”Œpj‚›’nBNr‚›’nB>PÄu_Ä- ·*s] Šx±_ÄÃ\÷Ôn—í]´»H_¶·«õCæx½]ú‹`匀òUJv)J<¾F‚låê„6Œ½‡Ð.á‚¡k¶6yULÂ3t&Öè‡ÂZš@=…5!#Ö„š°¦dÄšSà„œ°¦dÄš¿DP™:—þ´2w¶ï¸emB¿Ôõ¾¬Kš|a‡ä_\]3@Ø}ÎTÅÛÅ׫v¹žWí¿p(úæ°¯¨éÚûxXêÔõÖ÷çÚý#_z^‚=€¹ÐÖAÞ ÌÃãχp4FçÃJ{äxHò Ç3}æñ@?Ôñ(l8ÝÒ2BMǃ’ñxr
+œÓñ d<„¼[õc­$úC0ž6­ôGBÁfù$ÿzåÛsßÂh(û–_³¿½c—-pÀoüËÒ¿, lòÚÚ®üë:Öö™¬œô½ 9r
+ƒ­<¦´©EÂytæÔ¼ÒÁµ¯ã¥u|´5bD$l™žÖ‡àæžI$ú!ˆÔN…¤Ã$%G")‰$åH$%cà”ŒD’r$’’4Ùý0YüŸûªémÜ¢EGhñC<fwa IŒÈ—ÝMŽÍ$*²Vj+ÀæßwfHŠ´%bï¡@1 ‡ ç½y3&‡’¬%ðÛP’‹¥ÖoP•éKßnÖœÉåv ¥W¦šþ§’¥¼0âåW*‘ê mˆQ±ã¼LG.\ÍqÀKW²a¥ýF>Œ¯èÓ¬0¤»ÅÍg¯œÌþ°T‡‹ïÓfñu~ŸÊ,c(¡ÊûÙýÌ lÊ3±AÝ“’/¡ª„g\9ö4@qÔ§`Š“Ôþ9ܽžwN %#¬Ð{Á cƒ!b¶`ˆXbf †ˆÙ1;0ÄÌ ó=«Úò3›å
+Hc9€0ÀÓÏȺ«%5ã+$ã?á5ôa¬F•.h ¼çŽl¡ðââÃ#¡uCù_ƒ"¯íRV‰iP0È
+»'ýÛ1þ¤©x9x´NVÈIÍ,\,‚í ­9}ø]G@à),ùV(|økÆÓl
+ïeíMƒÁK¬°Læ².º.óxåC2Ì•ì™8·çÄpT‹*ÞK8èæÓV‹òi£yÄj1>mu1O[Â#V ðië¸Ù1囋ã.²¬Ãf×to{¼û†‡¥ºÝC‡S)þABÕ
+¾¥‚*3Á‚–ý-]¡Ë³‘ƒ9Œ¹ÙJY5°¼ZR€>Eì¯éêëñQ³3¹VZ÷-Â8L·4]Nÿè5Þ
+¤¿¦Û †œé&VSðÎl¤Éb>!™Ë+¨ù^˜•ö8ÌÃf½KºÝË;–S<h/Lß–ãBhw› ïmK«·Iû8æY«l¤¥ßïõŠ*ÊòUÚ«TŠ¯¥£ÌŒòˆD5N:HÛ.!ÕøFÈ,/̲ »ö’ézÑøã_¡ÑhZ„£VŸ‹,AáËLŠ’›šå9Í{Âñú—«ÒùL")C¯jŸvÝ^ûÒXWÔÕGG ç±®;'ºæL$e;·Šapµ´µÞš-ñÆí†y£v}Ôn¹7n7äµÙ×ã)ç"ʾî„çyeطчV+æÈ}·¯=Êßõ¡¨=<c }Ç‚6àïƒz*cpض({6ë¾Ûãž#:öL\þ*sCˆ«*óÝò43.©–M*ž«ÓjGR#Zô¼†¢É?RôîâÎ+zwN¬èAx
+'_9˸œ²B“E»wvˆx³*Çgg.á‚ÊÀÛ&âÌ~ï`®*<É;;8E¼L·˜4w4̺<ô¶`‹x“ 볇¡hveŽ ò£ÂOtˆŽx£¹yx¯î1ç ³w¶\ O'ˆc€±gLÀs#¿&GŠ -Ô‰ܬ¬”I1>û½8^º“r ë²bV§
+endstream endobj 882 0 obj <</Contents 883 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 883 0 obj <</Filter/FlateDecode/Length 4775>>stream
+H‰¬W[oÛÊþ+û¸|ýr™‡Žã.ŽKíAá#Ñ>:ˆ)‡”[øßwfvy©•ú Mqvçúíì7V,£Í={÷i™±û–½[‰gL°Õ+Ò,3’ÌØÔf™by!R%3ËVŒ³dõí~G;P´fÒ¤VláLê„b« ã«å%m¸X±L:å¹+¶K—
+ËDÊYS±ßXÍ>¬ÆÞ n©Q÷¢3óßC½Êà£Ì¼·Þîj &!¹aZà_Åþá?¤‰à:ÍØWžËe²<ÃïßLò¯ÕßÐá_Áe#ej]ï²:é-:z˜@Ú=ñŽ/BB¼~3Öoàù³&ÌÙØ„ÊÒ|Èzžò¥œ«|n‡´Líè¯ÉÈ’,²TŒêkþ;^ÇÔŽÐràr°’¯A‘P”ÏP4ú
+‰êŽ·ì“'tKn9;OdƯ¡yêÕÇv’ÚŒ-dŠžm`Ï2±à˜á÷u"2^~‡Wü¿E7ë{üƾUeS5ì!‘Šï6Õ{ƒ%ÇÁs°Dûj ­Zïi§A‰ô¶k¶”çðWT›à5<O¡…äÂ¥Ú f_<a†0] ÑS¬>,€ÌR«»\^¼û”ä¼Ù==²ëò¡÷
+ûÐ=ý{½Æg•|t$0„|€‹Î_¯]^Í,ÊeõPÖû-v©u tª#:¸Y`›ª]#ô·^ñ®Æç($md:ŠH¼¦ËÈ™uÒ2…Ê-?o¶ûíºü¾ÅêI¨ÞèèéBÁÊŸÃè¡MRp
+žFØtÔV$õŸ¯i™Çv–ÇÛv{_Wq,FÒ…*Íä¤X³tÉQ©tA½¨g!(†Bån"4‚nÜAl¬#ܞܜ!© BˆÖ“TØ‚öFÄR©4.UÀ,Ì qnN‰5Üq©É3Qqˆ9"uÒC´ê;’®)ÓÒ:
+Ä€ÊòFÕ s•=ê`¢|h˜®>╹Ù4U ”ªíiáÉ’˜·B±° rõF@Q—t'º¤<è’ k•L
+mN ÊiuapÒ€1„EÄai‡°˜8 ,"‹H;„ÅÄañ!¨¶E×ò„˜ÓýaÚâK‡0b?—DøŸà I_5X’~ÔôláiùãŽ~ÔOì ßA*Ã’Ýšþlá©yéù~o 5.´E´Eïe(®uòÏ|è ý:‹ƒNã(¿‰#â
+Ç?÷WÝ$=’2á‘T¤ÎÆ€¤L¤BC’–§¤äIŽ/ÅÐ÷!åG…BNæËgÇ7‹Ωî¥XåØp@áñ½RaKè¥Àf w=¾YÍF†a­oŽlŽ5Þ¬qí(]ß‘ti1ö">Hu‡þã›Q
+~Ž6CòF›ÃÙˆl>"ö†ƒ#§=<-‡8-½\úÓ2-5!»aÇСƒ ÚqAzè½×eœM< Ù&Žgðïf'ùÕ‡«%[^,—ðéòó5ƒ3…¯«Dñ³›ûëÙå/¿¹Ž™ÎŽÈû‘+ðÂb©0Ì{ïÔ_÷§EÔàw°±mƒn
+wA‡Ú.BÓUç9Öì[{:Ä¥l‘dyïZˆºð’nwf¶ü¯ø‹~Ö÷T‘oUÙÀ¬©V|·©Þ#nÎ! ;b¤´¯Æتõžv”H/`»fK ¿qEµIûþƒå8¨1íüÔk©ôLé7VwG<Ó%;›O€¤¾kŸû ðòâÝ'`KÍîé‘]—UgÿWð@h‰wAç‹o2^ËÄ°ï2‡-¬·í6s/…*uÄéš…ù¥Áü¶U½>ˆPBó„¾ñƽ–SJS`£ïìÈü€öž,æÜéšZ»)ëûjlÑåoËåIÑ°”ÌÆ5ùRá†S7Ÿ!½Â# e~Ö{N”ã+ë êxhÄëvÇcRR…R¿è®¼[ü Ñ=ý{½ÆgÕ>:’ʼr{ æ¯‰—ÚÌ¡¤få²z(k¤žš¯Ûhx¤Sщìiئj×ýí£W¼«i&BÒHâ‘xM—‘3ë¤e
+àÝ 1n`ÛtG=ž.€'èŸÃè¡MRp
+žF€î!6‰Gýç«EZæ±Á}éxÛû®âXŒ¤ U ø?,Ö,]RO9½. ‹g3¶w(œþ@Oo dÖ‡cëÇ„?&ö”>& ¤=*ö´<&öÄ;& Ô:*1GÄGË,µÍ±t¡bWX¢ªmËûŠ­pb£©U XµÊBwCkñÚ'ôUWøï°€JNN@áǺ…”… {m»ÿ‘^5½1ô¯è(°«ùFêm71Š
+­%·¯ÒePPõôX•s©¤/d’ ijª§ ëÉG½h/´bàìÍ`f¨+"gꊓ9$@ëq]#bW׈Ô×5&vuˆ]]#R_טØÕ5"~wëb^é°®Tƒç2å³™[<¹äõ`&R~šÐŸ–.YI žù3<u•~êyF.uØûõ¼*'Z_¾÷qƒ HâLïkeÎà!JLJVàD"'…BÝ=ÓÊÂX~è¤%æaèØakZW*"4½åȱGÞ´²ÂèÍÇ’ˆZ ìpQÆ•*kú6H—Em$]Ä ª0âñEì0=­LRÚejû“[<¢<!t];ȳ„#Í’8UÐƪ •,½®ý¢©¹•p)åÚÔl‡Ÿ[9M%ßO5À]f
+N×èÌt&Àt
+{Ú¶{ ¤4”Á¿‘Š-žgÁkûäÒ3¶tˆ:Ýu$ŸÓTLgv«ä)/ÈÛÝO0¹=p"7ÝvOæwà²uq=@KwDÁËãùOØõè—úuA4T÷ÛkϤáÉŽ.ÜpØþLιs( +¾I
+Ü!„™õégK¸Dú‰K|iæC‚¬«eú…Ðydì[¬·ƒc
+•5 ’H+Hö‡-ÙýO_4÷ó`4†æŒÊ+;u¾»‰QïcŽÆÛ£„ô¢kÁ«ÅÏ¿f&=ì__’ëõsî‚»n„7킧ãËZ9r<ZE%°
+ö~0Èóê{¡JñƶN¼9P~Ûf·E(¥ ºÿ`„ÖʹeQ‡™”fDwÏóÔÛ:öv‹™Ð„+"Â?[9™m)˜9]•ß«ÝÐ|òÄ¥58SÓ?ÿfª¢Un½»O†RŽXÛÕtLJß!yÞߧ`9£©ôÀ¿íónc~]©*NeUó–xyÚŒÁfN¢\5Ïë±UnÚhxlSMØœ ì¾i7„þí‹5Œ+/ >$]ŒÛO¼eÒÈ÷ÖÌIHfé`è|åý¶Ÿ®%ØÀÿéØ'8‡ÏB”4Múà$õûÿ¯—5sÜâúm rßÄÑÉW!x¥9.×I¾¤>^” NyB&ÇB%™.bÌYK™g#~ê4Ú<6ÏüþÙSêäÉ=ÍXù oüÓ‚Óªf¸8?BV4
+«Mm3Lσ)QŒg^fU*3jÙY]Étùq¹JV‹Õ
+¯®>]ãò¾¹üp·Hn«›O×$XØ #plÊžBK]r s~ìÏ j*µ?æŽJauÛb%̽Ÿ3)À·²™Iéåú+ÄM²¥žçèWÃ_î é2̉/ø·$ÒŽaÒч¬s›ÍŠô:éEf Ø#ý/ûC—tVL†^ñ´Ù Þ0køåÙÝ¿v›=Û¶‡Jö<°‡æ/ú¼!åÎÀßÈP ê,?ÒÁ\®9Ñ748/ñµ åF¹Ä,h(ã”Ähðnð>guŸ°Â%lÎúyøŸ
+endstream endobj 884 0 obj <</Contents 885 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1477 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 885 0 obj <</Filter/FlateDecode/Length 5670>>stream
+H‰¤W[oÛ:þ+|¤¬Šwª ¤I¶Èâ4ÍIÜ=X´‹…j«9>häTrvÑ¿3CêbËtÒEeECÎõãÌÇ7KVпöž½z{W°ûŽ½ZŠÿL°åVæEa$-(™±¹-
+Å\)r% Ë–Œ³lùíaG;P´bÒäV•láMî…bË5ã—Ë»+Úp¹dߘ*uÊ+¶KŸ ËDÊY[³?XÃÞ,§Þ n©Q÷¢7ó¿}ƒÊè£,‚ƒÝå˜È„ä†i¿Šý3|È3Áu^°O<–Ël!xß¾™ìßˠÿƒËFÊÜúÁeuÒ[tt?´ûÀ;¾ˆ úÍT¿yùlF”;bÈ1TèOÙÄ–,‹\LÒo~ÂPÐqhHh5 `3ZqåKŠlÆ"»Y‘§8k¬ÞfžßÜ`™!zMõSì¿ø[cÛÌð_6Û†eBqH®î«_°[Óº¯u…_»šHäXþè§ ~’w8ŠoV?KklðK7¸jÇ#ó‘_d Í7ÙB‚S ‡f _ác·Ùf‹’7¯Ùí5øbù9#óhVMPU -þ ÕŸ>9$Oè—|äì<“¿Î„æyPCÛƒÔl!sôl {î2 Ž~ßd¢àÕWxÅÿt³¹Çoìs]µuË2©øv]¿1Xò<K´¯ÁÐêÕŽv”È `ÛvCyŽãŠz½£žà\'Ü Ÿk/˜5
+Äæ/F´œŠPš’ú{´#ü¼°˜sk¤ëÐÚmÕÜ×S‹ÞýrXÞ$%Âs<Ũ,óç!ªˆêùÌ"}G0Êvp¤$ÿž)Ï÷*¨t +G0Í?jÐr2T#±[÷vàç…óùˆ1Ruh¬jÖ£½}e¡Eù„6©"øÈ>gmõ =Ã{³Âg•|ÒdP7†¥Ýsùøìlø5³ÂÝÕU³Û`ß]ul6>¦:Õ@Dü,°uÝ­ð0oƒâmƒÏIHÒ;‰H¼¤oÊ™uÒrþü¼Ýì6«êë¦äŠºTS(¾èÔíÛ$§Ph„Í'ò%œèHµHË<¶³LxÞu›û¦^Ÿ,Ö‘t¡Jc yP¬Yºä¤Tpæpº
+¶€ºj@Șõº­; ¸Ý@rG@@¥¼$<@þJÅâ¾qŽ”wžz”œÎ*eKA
+|¤ÍGp`¶ g4¦:j
+«M…?ÀpnÅSB&
+*aÁ¡“T%”_&¨ŠüÙ ¥¡lE PUaç­¼CBÁö`H‰#ↄ´CJÁ¡)4`‰,L™
+ROèê9P“ê© é~OÇ^ ‡ÇUAÙGº¡Çz(›Ë±†p‚¥+g¥Œt¤”º_˜.«’'Ù§”'ÙgBËšöeM‰cYâXÖ„´/kJËšÿô-Æ´Þ+k Õ Û#ænta Ù
+O¸ä+ÛâŠÝjK¦‚lK ¦&Ûú®«QÅ.ÄCkZh!|²wºçÝô3fþê=,äuH4•¸Ò«ÜHuM¤ºnhÏÅv»%¹D§ÙC&JÊÄØUô{²'yNë&6 iGVDе 6.Pá7¶˜™]^á¯`JóšÝ^“Êó êáü0öÃ#|„.q às¬á5’þ|ÂÙÇ¡Q¸ÁµŽµà;šú?fºú
+¯øƒ~6÷T¡ÏuÕ­R<q]¿1˜òTÍi_ƒ±Õ«í4(‘AÀ¶-~¨³ø7®¨×ùÐØ¿1ç°9hî–úÊ0ÿ`ͱۮé“]ÌïB¤¾kh¶b¸ ]]¾z 8n·Oìºz¨{û¿ƒBK½ Ïzp¼å-†CÏéíx_ƒè¿….T©ÖH×,Ì›óÛÕÍj/B ƒúÈ/F´œŠPšû~oGº=Js²˜sk¤ëÐÚmÕÜ×S‹ÞýrXÞ$%ÃR²˜bÔäs…Oœ™
+€;´¡ï™òü±fU³fc÷L[Û*–ʺa
+pì–Ø50kšYߧGO—Àõatß&)8O#l>i+úW‹´Ìc;CŠÞuÀÉë4éB•ÀWäA±fé’úékos]̸߾pv ˆÄñôf˜0VG!CXÿÒ«¦¹m‰þ©­’†ø Aæ6±SS9ØNY¾lÍ\™q4eK)×Vþý¾n
+zh³;íx‚Dƒò3F"gâLwÅ×>è«u“Š`¥²'&EEÝE»¨Í™A±ÂºößvM'ÙÓ&ÇBDT%‹ž:= ÖŽy Ày Áx  ‘x À'x`”2l¹¨íкûžÒ»Ùm1ÞTù3åí~µo9Ÿ/I1SrœS)ÀG[ˆÐ,ê꜋D@;‰D@•IˆàÆD°ÆåèN»ÎâˆðC[™×d-£Ç$à@$à@$ÐH $à$`y‰OtQ62 Y=´oš+_zîe«¹‡[%Ù´CBLµÐFÇ$f3¥]3ÉeÈv©>”ó
+홼"AêL^8äU@c^%8äU€C^4æU‚C^øÝM^ÛTÅ ¯²Á—3Å4÷ùì’gĹÊù5rBzRZšÆX<ógx*›:¿9ˆI®{û†º7¥P÷g.€óuo4_‡?0ɤ]²Ñ§P¥D¤°Z9?&¸Âµ˜šìkCÂö
+¶v¢ÇÆ`©š#¡1G¼=»Ø(fù=ʹI%¼{.¡¤²Ë30Äó˜ä¯Œ–…猟x:n&z@Õ⸩´&6TqÜDŠÚ¾_=´ÙÝL•Èº”Ÿþ0Ï8§¿d¦D_­›t¤TtåÕéL©´
+#%f2Ž”õçÿ%†‘²9ž(M”å„BˆˆÑ'X`©®‡Àñ@€”†1+ïy Ày Á|‚¬,ð‰.ÊFæ˜]x@Ê|õÒ·œ®¾4¬rŠþE’OëóIù0˜ ŒŽyÌfJ»†ÒéÒtrÂKX´ñCô›]×Û i…ƒ¶ÓÊü7zœViИV iàVi•àV~wyŠ;7¤µC6¸-SÌÑš¹Â³Kž0ñkä„þôtÇj`ðÌŸá©lêüæ #(I•MK¿A;9Qù¦Œ¥_TåÀU)}kÜ~ ®h‘M½¨’86úÈKoŽ@a­r¬Z¡¦f=³„¥èw4“‹MVÖ K mªÄjj40RZê*¢\\jÿ/R¤p'W\áj9Y ÙŠZÿBÒ2½ Y`BDè5Bö-4¡ãÒ‹)‹Ð
+ÍFx[ù¦f–›%¨ñŽÖˆ0
+endstream endobj 886 0 obj <</Contents 887 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 887 0 obj <</Filter/FlateDecode/Length 4925>>stream
+H‰äWûo¹þWøãnqÚ,ŸË=ÄŽáúç|–rÅ!)
+E^;JeÉ‘ä<þûÎ É}hEI‘S EĦw8’ß7“ËéßòŽ=;æìnÅžø?sÆÙè–•YžkAJ¦Mfò\²¢ä™¹a£{–°tô‘4¸ÓÈAE&tfdÉVg–K6ºaÉÙhxA
+g#ö‰ÉRe`¼°àEº°7Œç`œ-+öw6g'£v4h[(´=n¾tCt&}Œ"w1¾u~GCp‘r‘h¦8þ–ì÷!Ky¢²œ½KRn‘x’ãwŽ+þcô+ü;„¬…ÈŒ­C–;£Å@»HÚÑ%!ξnÛç"+÷Þˆ,¶8Ò[åê]Úò%Ê<ã­ë×G8r66q¥ÚgØ4^ŠòGÖÍ#½Gnã°ycyžÚäê
+ŸN¯èý$ûŒ¿+|Çeª“.¦‹9K¹LàrUxýœ]ƒ˜öͪ1~]UŒ@"šç÷q
+§‹ŽÅ•R'©¢¤@iÝ«m+X¸„̤e‚ÿY:(­H.O.‡ìÍ{Ÿ.ÒJ^ÿíâ5ÆyήÏ~s6áŒÂÁ0dëºByé.«4Ú¸ËBüÔ!H†FpX™|€K›®RƒQÀiïSÁá8Þ”IðûøvTl
+AÒß T´y’u
+1½‡?Mò-yÂÖ¸ñ霦¼N|\´ÌÃõ&ÿ ð»½ý:-`÷€çÉ)¬Ø˜4¾¤\%c
+ï#,¾OÎ<ã
+ óÞá#læÉï{:Ç»½Áå³YuK× †HF"·\":تúì_Â}xÙå#n™­Éêt2^­Ù°¢ ¸}:©èÙW©Ü¸öa:0×8’ÜÇ)š8_NÉJ5YOë€~ÆðN_7 T­Ô—£
+³ª1<S–3£1 ìIw¼Î"ÀÒÍlGöà»123*°÷âìÙ9°d¹x|`¯Ç÷U»HqI96„°7‚ú±:~• Ç k%v^趰‡•ï-ÞÈVï˜W˜µ«U5ŸtN(¸ÎÀÒOè¬ì:¡ÐTŽƒQÀ¯³ïMûšÜñv=žßUmVþ€·sVvLòŸ;±}o×Oô;/2¸§Ì¥¢o©´ÉCÅÆóÖ+©y»¤Úíg’Bf’Τe«’.+ÌJ·ôÓ­çÊSTYkVJKWYcµ8伦×ï83½S«ûñÊ ¤É*z<²)·ØÜz°›j5AôOœa¨,ð³u$¥yfp*~H¦=÷ÎLïH§ËéÊÇlº¦âö­M?UB_*¾¤]Ÿd`>57˜Mj橘'y¿&3½Ã½H9´
+xQh:r<
+
+oá´QÑ8½õ§P:•ëñ+ü¹º
+_ߤX¾tò<ž+„ö¬æZ7´†ÂY¶X­
+É“³§Å5ˆóŒA ­&ëöPˆcñ×#ñHþz?þj[P9 ïÇsÛáoLìù{þFÅŽ¿1±<&öüŠcâ~Ç&¤ Æökœ)Ý¢ ‹ÓAàçó`P$ç
+ÿäÑFÊÿÔlcŽmB?ôß<Ûè\@Í?ˆº„GR×û‰PW>Gg›˜ØS7&öÔŠucbyLì©;êÆÄGÎ6
+HSüÏ6æûG›@Ä£f›Ñ_~ðHƒà5›<ÇQ.ø‰Q°`ëÎ_ø²±)å\A¿ÛRŒŒhsðd€Up­ØQЬ™%f6ªÉUÉisˆÑîß;/ŸÐ¥D/VAm6M2£¤6òIDŶ­Üy•mbÊ[IJÏEr3Yt{]“ªÖ
+]:ãnQj7\L¨„´ˆºU—4bQGŸéûªª^ßðÿ{Þé‚­ *¢2ýíp vÕÔRÚ8jâ#Ï]òvª/\º©¸¦qýN7²¸æQÕÐWª(ô:¨ƒàSït¹‹0¶íÄw2‚†ì@)Õ¨rxÊfKÍ‹µ°ÌåVju”
+ÌÞ~gnT&ïH6‘V.ϱ;¸QpZA#~²Â•ͽ^kKR
+A™TYN†ìXmMŽy±¦ûmÊz9:¡„–@jø'tVöP"ùènù"i‹‘©t{1ÖÃs5¼Òï=[Ùw0¹ û“™”sÈu}ÜÉÉ’ÎàšRrCŽú:SyüXF,:OŽq¶óÝgRRygá¡×Në’RÑ-ÿºçzI¿eWm8(Un¨dwTÍ^r^;UÌlfrÊËòaQo*JTË&x<¶©vØÔNŽvS6K"õè Cˆ =<’FG58‘xIž‘“ÕÙÊ6-ÿŒ×éÂûjÃeëë¨ (Tbõ·qt¼&ØGO#l2H,, ¾Ý[lez¶×$"›¦º«Ë0×E&ÿÇΚ\—¸J‰Äap
+Õ¶½¢ƒF[Z•x»w2Ô£±­’Li<£‚Ú;„%ÒÙX ‰ïaùz¬Q ¨I™4AØ:
+$¿ÏåÒ)’aÔS$ÍwðËÂnwÚÞ¶
+À-ƒpË ì€=ƒhˠ쀟'"QÐuˆ¨0/)É„ÊÃ$KáÁ®Qº®›ç%¤ rBÓÜ>ßGgUý7§óúnTÁvQˆ—ϪfCüíù9ìòŒ [LgdÑD(ÇÐ÷E‡d&ÛC<fƒÈR±€iÓC"ƒ¹s#R=b+7‹¼Fê]¡XwGÏSø@†y*r’¤ÁL‚=OC°çiv< ÁŽ§!Ôó4;ž†à§ÈbÛÆ
+”×Ç•_fšÓºÌºH‘Û‘B”Iu8RLÆ™¿+JþãH Àm¤à6RB°”
+ʾëÚˆU_ä‰(eKëÊ~Štè˾±Ó²¯¸ì«Œ#办?AˆÈ”JÇ‚ëu‰ãF¦Ð¾â-·É€‘o±ëÓ8óðÜl¢ŽÓ*ïeMgv¯ê{–=ÑDz)‹>ÒDAÖÐãºl8{׸¤xUÄO~¬•õŠi ®ê2º[SmX=?&½báP¸B¤ ¡ü…¥ð¶yèŽçѼmz®ë=E#5½0¹t
+¸ …
+ôBVê`(vXŽŽÏ XäRÏÿ¢hů< }U¬yQdÀLgþFrEF㈠Ø#
+ÝgŠ©¦  ÞëÔ;=„:ŸPçò
+¹ÔœéÁTϯÀ\Bm B1‘Wº©ž|©„vSs=Þ°gf`ªŠèXÖó647³Ã¹š†.ŠYº(ͺªÆ[öœÌ%ÔÈÁ\9¼d¡¹S´ŸêÃEmSs#6±¤eq3:u1·Eç_
+endstream endobj 888 0 obj <</Contents 889 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 889 0 obj <</Filter/FlateDecode/Length 3833>>stream
+H‰ìWmoÛÈþ+û‘,*†ûNÞ·Ä ˆÏ'ñ®8$EÁH´¢@¦Q¾‹ÿ}gf—o¢VvÚ¢ŸŠ ¶¬Ù×gžyW°”þ6ìÍõ2e›†½)ø?SÆYqÏò$Mµ 9Ó&1i*™Íy"EjXñÀ"_éw7R¸¢:12g³L'—¬X³h^,oè¼`ߘÌUÊmV\Y ã)(g‡ŠýÕì]1ôu …ºg­™?Ç.:•ÞG‘:?:»ÅLÄ\Dš)Ž¿%ûÍ}‘Ä<RIÊ>E17‘ˆg<Jñ{ŽŸtüâoèð/à²"1Yç²¼è-::N Ý>ñ.šù„8ýz¨Ÿ‹$1#Òž1¤ÏJÕ§x`KäiÂé×ÿ†!§ãÔWzÀ¦·bó×Y÷E¶“"qØ×X^ÇYtw‡e†èÕO²?ðw…u<Ä:jðÃv_³˜Ë’«Úê§lb:·«Jü¶©D ËÏ……(˜5i"°ü”ÀbáÙ$kN F`À‡6k‹²ÞTl8®-檵—äË™›#-'Æ>FŸ÷O˜„z=Š/sé-j ö‡îœF6 J5 Jó×5ü¸ËIÇ$¤ù÷Ç]Y—Glb(ò00ÅõÈêæ„32Q
+Ð5ÀŠJ¬3ÒqÀƒâ!Z,ÞÆ6*n~¾e‹ù/¿Î—‚ÅÕo#*2­"œ‚0ÚÜhã¢ÅÔ¶N|Eëd˜WÑxÓ
+Ý«1¶jÕMy›áP ݬ;¢¥¨ \2`Ë!+‹F_0UlÕÀÿÕjpcpl[ÕøùH…­Öø9ÁæjéìÌ8×®i
+4/>ÀØ-ºu=•– }Ø4ÜfÀ›ù›khËÃþé‘Ý–Õh¶Q2±¢sáU#À”œ–ã‡afª³£ €ìu3Îk¤kæβUSÕ«Q„Ö‹ü?ŽÐi¹¡ y¢³s©z1B_Ì©5ÒujFá¡ÅÌþjç´\ŠL
+• ̤8 ¿fàÓuõ¥g`Ê\«<Ç2‹+FƒGWɱ§;;’„ä»b¥&ɲÖÀ¡Â®¼§Ÿîs½ÂŸÕ¸)ef‡€¹àñšé8žÙ)b€Ðª‡²>n‘WM0<Ò)Ïè4£ÀÖU³Bðob˜ò¹†¤´€m³‹ˆ¿†g¦;i™Öíê°Åys·=Ò»õ<Ú0r™õcÛ$—Щ¹A.é‚£ÁìÇËåÔL‚{‹ÃiÓl7uc _\ʦ՚äK jh÷Ð0åM&űPó)u0ƒ‹Q_¾œ*èövBM±8$åV^ `Qu@,1y*,¶8±Å
+^ƒ°T§ú’î6è€øÌ6×<›ÎÙÒA\çYÑ—ŒÖªªiÊMÅ
+\Ižq®}ô[—8l÷k%$0‰Ìülì °ÌÒnÎȘÁhÃá´úÀ"¥ðwaTW
+A«“ä™FdÙ!²¬2-®Ò³¸ÂKÆ•…G" LHÜâ* nq{\ÄWi‹«Øã* >C0XÎÁó °2Guë×Z*Ù5,-7¸S(,IÛq ‹s+•6îö<ȲýA€G6*n§^%­y{òr­!h‘†km8¤=Ì!q[뀸­uHìkûZ¤m­Cb_ë€ø ‡d=‡„k sSÿüßÜ1¢â„N͑Ƶ·ë5L¥@ ¥Ã
+îþµÞJ
+bpu‰šdVÉwtv% â’K:õŸy¯Òiˆ…O¢³Lf&Þ$HÈË‘…È„ –gñoQ-[Ö‘˜{ÅŠÝ®7ý……ÄŸ!¡ÒtLÇ/GšG‚­×7´Ç
+endstream endobj 890 0 obj <</Contents 891 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 891 0 obj <</Filter/FlateDecode/Length 4432>>stream
+H‰´WmsÛ6þ+ø~C¼“ý–Ø>oÎqb«×¹I:7ŠÌ¸ÊØ’+Ù×É¿¿Ý@‚"!¹u:È,î.v÷Á¾¼›³ŠþÛÞ±7ç7»Û±7sñߊ 6ÿÊš²ªŒ¤fli«J1׈RÉʲù㬘# á%*@hɤ)­jج6e-›ß2~6¿¹ ³9û©F— ÜÕ`Eƒ¸¬Ka™¨@9Û¶ì¶fïæéiP·Ô¨{Íü1<¢WÎ(+ÆOÞîüLBrôÀ¿ŠýÛ¿( ÁuY±Ï¼–Ëb&x…ï>™â×ù?ñÀáÈFÊÒÖÝ‘ÕÁÓâA‡$é½ÓñYˆ×oRýB–Íш(7aÈLªôç"±%›ªIøÍ_0äuìÚ¦>mz+®yI’MŸd7JrÊÃ>Ç꼨ù‡˜fð^Sþûþm1ÛÂð>¬6kVÅ!¸:f¿b×
+'!qÉEÓ*­~1½‚CÄ4ÂbÉèœ{I›H—W3rîm!j¾Û­îÖmž‡™xaBMdk/™ä
+ØÇw®‚R-@1 úW¾îF4X9{ØX‡^Ö °2€²*õ¨pê,• ÕXaðt†6ìòÊ5ý<j*sHwt:‡DÉ>QZue ÿ~·WâtIbÊ.1G-tîÝnqײ9nß ¨RP (s¢×äï-}иJÈ]¡E[*J\ÕnªMŽI§”¥RXßþ@B×0œÌ:¡O¼)e)`œ009€ÁÂI4°×Ä“ü§ŽŸšß
+þÙál¨8L¼°nú5Óþ^uãïß^Œ<¯”yU1‚´6¸TY¼†]Ì9…
+Q{€Â·ÈeWrˆ•Œ Q"¨€:¦WqºÚBåíòiµÁ¯ÁüO¨“÷}zÍ>S ]%*¦ŸÁ@¤¤N(©÷(ù‰³k ·ã'pDÌ÷
+Ïe»Þ|;#ýpÌ
+® ÕÞjZ†~qøo…¾¯ïðûÒ.¶í–ißܶ?a:O "Š!É­±uÀÞ W"žQú¢/ËbF„$"÷…'"¤™ÑK
+[và¿A “ÏVퟟˆkí->—]Ç‚®ð;s0Öp3 `©¡ºÔuÛ_Ø:VŒ*¹f&½R£vKúà½qïØÅÙ›óÂñíæù‘½_<´ÑþG8Ð
+æ›îGOԬĮײgØW¬h§–Øó¢¨ßU}ÌUh
+QJéÆí­£jpë‡<â¸^9ήðø«œ9FéR™Ž!FŽ¢ˆ!ʊ̬†´§´hˆª‚öq·Þ@_춈žy€
+&ÛGNë!#2pdDŽŒÈÁ80"ƒFFäàÀˆ <®)}Iø ë²îøpÊ=®{›/‹{ØW 줆Ï`—½8-DH¨®ÄË|E+êÁªòƒHãËŠ¶Ãºbk;UW^B ˆ¤¬ó’þäKJŽÊÀ‘@98(eÐH ”'š $Xä…sy‰g”8GÀN·xÞµ4ëk9/+)¢k:îhÓÑ]Ejª¢@w=@ˆŒ>@J]¾¢dàHˆ  ‘ƒ!2p D„ÈÁx¢¢4ý”"ò„¨\)úA¼°| ) ñY#&M)ìz IÁ?;\‡Hò§ÏLKø{ÕíC{wòTRæUÝ Æl˜°³\ªô ŠO‚6‚^0ÒlZR8‰‹¨±PÕáHÂiaDë¬5Lê‰ldè´,¢¦×lÕžpàoF˜¶‚^’˜º؉nŒuj¸Ie#÷§…MOþw–ŒìÚˆ[£÷ ÚÀñŒõW…òhýmÑ5é
+¹?Ø)CJàÉéÿ³^5Ím1ô¯ì‘ÊŒTí¹¤oŽ¬ñø 9‘”Ét’ -³¶Z™r%&þû>`¹$-r•fÚ‹D»ÀxÀ>0j ³«âçVWãFó•—MˆÓIþµˆÍR-Þ/Öb¶7óñjîX
+½Z¦-chq&¿ ñÍ&t[Ö]Í7|·ÔõÎ1«£™ùÜ:×h†äÙ~¿£Y’»â¡@H™PÑᱸDœAZ\6~•L=5ƒ!Aî“hBwCÓVÿ–F!nS\Ò —wÃ_>‹Ò—Þ´ƒÔ¦tˆ ŸÝW¬ßuªÐ„<Lïæ¿ÜâˆÇ÷W±Ì_
+oÿ#N ž`¶òGøá :Å߱봜v¥ïí@€KÃÛ1ô÷#WÑF‡­±®ž›ŽTX§¢Ü¾ñP)5Éþ³‡NË%UÂßÛQö ½˜Ì¾5Öunm•—OE×bjÿ‡Ü9-—<Ó
+×gk†Æ%;MÑŸb5Ótr#“h:^ ‘—¢Màîtؘ»YIµTäoüëžË-×hC¿¸uj»8o¹ì&#”lj·‡Hm(è$ÅK^4ÑötuêI ‡7Ž=§-a~÷ê£áЈҺdb²Ñx$ÿM{Q=묥Ÿ·Ù‘ù/¸/÷ý¿»5g2gósÈ|k“\%Sü¶wE½ûçÓåÔôœ»É4:Ðþ‹0ñ"žœö³Õ‹—2ç [g ]Óÿz+ìÑïš¼]Þœdˆg-Ä`»±ËÀCâšc‡Ä5ŠQ‰Ik²×Nă^Ò z2 z:™6ÔõK´ §SþTˆ P<å¡EqÚ$B—Öt„ÖJÏ-’‰NuMS²D´§Ö¯lç1é¦,Ì]ZÕ{Á~ `]/ý•`ØÐL¬%šØïÅ–NR‘’s !"2<¥é8Åçv
+^Aíëã§y½L8Gù0då7ö˜Ÿ&.Ø.çʇ8ár󼡑 ±QÑ‘†]q´¥Ÿjw @”Wbµd/fmÞâs F_ÁÂ=ÎÚ¬J“Ñ\Œ3
+í’æ˜úDÌÛ¥?Д©ÛTŒ’›ºF¹K‡ù~Ï©+É)ñPäÇâHž«èðX\A±\”iqÉàg/¹ÝkÆA‚Ð$Ñ„¢×tÖ
+endstream endobj 892 0 obj <</Contents 893 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 893 0 obj <</Filter/FlateDecode/Length 4571>>stream
+H‰¼Wmo£Hþ+ýNg†~£a¿M^4—Ó%3›X·:ÍœNÄ&#g³³óï·ªºÆ¸íÌæ´Š‚¢ëõ駪Ïæ,¥¿íŠ½ûp—²UËÞÍùÿRÆÙüIšjALgI–¦’™‚'R¤›?±ˆÅó¯´‚Û)¬@Ñ‚ d²`³\'9—l¾dÑåüîŠ\ÎÙ¯L*å&+
+–‹<áã)(gÛŠýÂv6÷½AÝB¡îYgæÛØE«Òù(Rëãgkw~&b."ÍÇ_Éþm_$1T’²/Q̳HÄ3¥øžãŽÿ;ÿ':ü3¸¬…H²¼wYõ'VïyÍ\B¬~íëç")NfDš†ôC©ú{¶D‘&ÜK¿þ†¬Ž}C\?&€Í`%ÿ3áxÀŠ*?ÄEôɯŽQ¾¥Œ¿Nz€“™À N B(A†aD²ßð·B¬lcµxSosAU‡°”Ý‚˜¾[W%¾m+F@£ rB@–&¢È4s*NAP rCî /} W—ï>Ä&Ún^žÙMùTùp%#zNz0©—U°g3b&x.’\õ&ø~vç ‘šIpŸ°U[5‹Q\¶_ñ–¸¬‚cq ÒÝ›&Q'ã²Õ¢õû†nËfUùÆró¶:YÇâ‘B%ž…ùúT™† %¦üŒúÒhd;Ø<úË<z®XÙ,ÙPº±«;ŸD#!Û¶:Z
+ã0/͵ã¤Qµ&ù^­
+H?,Õ©>¦» : v…C¡”ìi [þ-ié N›¤+Ù5Ö¨‚Îݶåªbs¿ÇÀR@PT9Ù+8âwIŸƒÈ
+иôÀ¢Å,‘T¸Ô Ãýäì¹I^ŠDJä·oèÆ’Y¿èsT$"á0Nh˜NaÀ`ÎèÕ'ÿ‰¹‰.cÝÖR04¼(€ý¾V‹^ìpù>ø •JÀ—Ë=—é~Ÿ 
+ˆ;Ä‚Bb‡ €Ø!( í;ÄSÑNç0Š”‡$iv
+ä‰Û^-§­x3L˜RAÂÌR »¯#:Tù„; ‰aÅ–0CbK˜!©#Ì ØfH|`
+H;,…ÄKñi,ë‹CÉ8,â¾G(]Xxô{,`Ø©&–ƒY¦ú›SÙ)ÀÐÔ¡q÷€X
+HŸ|gõÛù)èÍ cv†ÔÕ˪5@Ž.‰&ZÏ|X7Jö®*×/Þ,(zþâJMÇÇu¹]U[!ËfØÑdÉŒgH•ÚF¬BüD%Ze™7–
+wp'×Y’çÞrÇFÁå(Ï{q“†ï·#«àj”ëA{&÷–[2 /Ïq¯Ë¡~è–ìÂYS<Isßxá¯vd\Žrßw̃·Úrexõù°ÚQ©Ú§³\Ô™%PLf9Te9¨±íxBr´{dOÅÐA‘åÐS*ºtIƒ|ìZ{‘ X9]5 /æ"º>»¾c·ïÏØåÝüýÙ¿®P˜—Ñ?®/o挞o.èçZú{ÍéñãÍ@™j 4{æŽÁ8/YÞù6‡Ý
+Ö5==â}‰sÔ_êé%o®ÏP;–ßÇðŠÞ°E瓲›™g|IԼĘÇèsåôÛðZZ¹ôXU[V…h
+ðÑèÈÕ Nr­þr˜ûà±\¯é¡Y¡l±Áw "£Zìjzb/¸úâý÷Xpr³QX%(ë«,(N/ñ¿¤'Ô } ‘ø™×™ìPˆwwÞ‹Áû ÌM|¼Å´UÄ/à‚ÍO0„PaÏôêý½},u[oÀ6WÔ>G€(é 6¸Äk;Yßàìч\K¨¡ÜQ
+5fæShÖ€’ë~B"ñèu_•[èhm–ÕO S„G0EëŒ ÒL+©öÂ
+Øf‹/ªØ=ãÕ2éÛÒ¯Ìä°á˜ª0xdD‰ýùáÖtT•zó‰Ce4õ‘>x/•²îvòÕå»
+I
+ãŠ%ýÓ3Šèjï›…%î"ò6¥Ìÿ^/Í؉ÜLœS=•Í®F¢Z´ÁðH§< 3s¸¶¬Ú‚¿~¶Šïûã…¤´€Y­ˆ¿†gÄÄ:i™Öí|[ïêE¹®wÔ¾û›OpU?ѱMRp §àD•À‘æÇËeÕL‚ƒ~ͱ­WMc _škÇS£jMò%Ô¤WËnGü•=.ˆÙyíÇ
++FõÌ­HAÆk }Ü?ï®WVhÎÖ.V«€-€T_»müNb@±€ŠÒTÝ&¯n§ÇhMOÛ!eIUÆv1™Xe “™ÑYPA™‘7c#æƒUÃF6¢pr:o3!ó±ÚX–¹E&›…FúÌÇڥ̵Yš|Ñ‘\B0ÐVŒÌN hmó`¯:òr>ØU<—4sd­<ƒ¦Ø@éèý2™ÔÕTOâ1*Tó‹ÎæÑëúŸ
+endstream endobj 894 0 obj <</Contents 895 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 895 0 obj <</Filter/FlateDecode/Length 3226>>stream
+H‰¤WÛrÛ8ý<’bˆ/yóE›ÊVìÉHšÝÚJ¶¶Q”²)%ïVþ~O7 Û“”ËÅúvN7— ‘ó_»oÞÍs±Þ‰7 ùŸ\H±ø*ê,Ï­âµ°EVä¹e-3­òB,D"ÒÅwÞ!»9vh%”Í
+]‹Ie³Jj±¸Ét1Ϧ ñ§ÐµÉ ¼¬`Å`»ª2Y™C¹hø§hÄå"ô†t+Cº'ÞÌÿŽ]ìTö>ª¼óñSgw1‡‰TªÄ
+#é[‹t/²T&&ËÅç$•E¢Ò‰Lrz/éɦÿ^üþ.[¥²¢:¸¬Ÿõ–=N ï>ñ.™ô éôÛP¿TYýbFtyÆ=c(7ŸÓÀ–ªóLé·?a¨ÓqjHš*Œ ´¬”õk@¶Èåä‡Æú]Z%?̈Þ0~Zü—¾áئ6ÙÑÃfÛˆTêÉ5ý\Ì æu÷nIowN0IÔ
+ž©ï§oÞ'íöéQÜ.\Ø€¥±Ré]xуXGv;-'†4-‰S i÷v ¨^w4±ÆºFa~¤Žäv®YE¨Ð½ì/GØiy.Be©#쨒â}˜ck¬ëÔÚlÙ¬]h±*è¼ÿÕÈXËs‘iYq$'«/a7ŸO¬ð O©J‰f¨«äщes'FÇE>>.Æ”îRªˆÞ@ë¨+}åÏî¹YqŸ: ÝU™¬òjÊ×Ä[ŒÎòNÍ(ʹ{X6ûMŠö±ÚEÃcúŒN)3
+ìÎíVÄþÍc§=ŸAH Õ'_ÓhÔÈ:kÉG]µ›ýfµ¼ßìùìù;áÇœÁÄQx>L´g~À<óšñí š‘ß©¬’Ýn³n\œg‘TÊ®jŽ€8›ŠÓ`§-ûƒÎÇjêL À«•„Qôþ@˜_O„V–DÏAl‹‚‘g7
+ý«ªœ²ÊRY@ *VZcØŒIµ”ÜÔcbdHÅÄFóèÛ\eU\¹:">aÞñ< «ñ ìkÕjšô{8oR…î°Û-×N,Ri(Ú:ã
+
+ÈRw@ÒZéÇ"Suˆ/›—Æ/˜VI›Ly¨š Ë*9è,så—þ‹:M &• ¶ÆVÔº¾»9²'%æ@çÕ–ôb‹AÙçëPI"âž©çALÜó "ö<ˆˆ=bâžñðT¾ó
+¸Ìòk€B_;:kq“J'xæe¨O]—Éo‡q‚ùaÂV€Á§>Ó ´õ­
+M&Øê™w~/IëAsS0tÚó2²Ò*º×“6’-H nV¡×žÒç7ÛœmÅ,{ÂG6Ÿ‘{ûjÐ㱿.O*Ê*xšMíÑðSWBÒ_:¹c‚™¹)kÖÄÏU¶¦‹/($/+Ó*)ðÆÖ•Jn.oæbvq)fÓS¼¾˜OÅß.ððþó©8ÌKz(eY{ãò¹(lQµ¼@µêäov(^ÁãØCª$ŽótR$ôr¹†Ø‰ /¢Ç+Hö)ªê ~8öZþž~ã=WéÄ&·)j~¿ûîÝ,-ñŠî/WxKV¹lºØ¡ó‰ÙøV+ï>¾Ò‘òtøhÓã¶[ gõ7—dÙce3ú6á·l{J ê5¢)Aw€9:ÆÔoé×üþÇtÞå§Ë÷ÉM4™IL¨‹k$òÍŒ<-áíS–›w¼"-{èlÆv*®7-ß²VûÍ–¢mÙ[ÊÝÕí
+U‚°kÞ×À0…Ê;-IT'Û–^¸´ÿM+Ü]\ÒªœŠÚÔš;wa_sI³>¨€ÓSŽõὩ-ÝUúÊx?}óLh·Oâvùà†‹ÏŸ(fK´wáE‚ÖØí´œ>ÜtØNe©[y;†šÆ‹÷:±ÆºFa~l)¿;׬Ž"ÄàEgÚ/FØiy.BekRííà$5/FÔà±5Öujm¶lÖ.´Xþrd¬å¹È´¬8’“Õ—°ŠOLv
+Ïð”.ºÙTWtçZ6wb€òØH§»:“Vºg¨¢ro
+}íèÐU F <ó2Ô§®Ëä·Ã\Áü0a+ÀTŸéÚúV
+ˆíSÁí]Ëa«$U´ÖNÒ2#K1K]²)þ^m‘—ÙR?Ë3ió[kQ7/›ª¾ª4‰Ü×7»ê²½f»Œ-üe×Uh2mLé3a׈jw{wS+#ÛZìëûÇú¡uü× C¥7ÿ¶ðÔ”Ah)ÑSùFÖûÊ{ÁÝÚ•ÄÔ ¨¨ì^IlE\d%¼,k$™%ä3ýhóè´˜ øƘ½ŠrÙ¨˜Ê&Á(úáN”‘¯'„ÉÜd!ª€¬cÝ$ºe:añæáeì@}ëÉÇC7õ#+¹ÕFv‹§xÇ”GËFíË™«aË.¤‰^ÁÑkÿPp®
+endstream endobj 896 0 obj <</Contents 897 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1509 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 897 0 obj <</Filter/FlateDecode/Length 3796>>stream
+H‰ÌWioÛHý+ý‘\¬öIXÈad½Ø¹baƒÌb¡È´¬@¦3’<“ù÷[UÝ$›GÙŠ2(²Šì:ú½WU/—"§ûxöæ*›ƒx¶”ÿË…ËQeyn=P ë2—çZ•Ì´ÊXÞ‰D¤Ëô†ôoäðšÖBÙÌéJ,J›•R‹åµH.–W—ôÂÅRü$te28¼(Á‹×U™I'd‡‹}-¾x¹Œ£Á³•Á³­›_†!ú#CŒ*÷1¾ó~—Wà"•*±ÂHü_‹ÿø²T&&ËÅI*]¢Ò…Lrü]â7›þwù/ ø;Ù*•¹² Y?-:, ½=Š.Y„‚øóm|¾TYõdEt1ãÈÎ8ÊÍiäKUy&£òÛ3ù3ÆŽ¤©âœ
+e¢'™Ðy˜‰ƒXºL./ž½I‹dÿðQ|½º«ã¤±YẞŒ`rcþ€‘ÏDD÷%°¦ì\ˆ½<•CGtÌ$¹oñêCݬy)¸3û%yùËKÙ*S}^ªÀ,Oº½¡#:fìèíªÙÔ±³Ò}Ù=ùËGË*s¦w‘£˜>uO=¯ÔT<éÀ8Š#C&¿¦ºL>ÖbÕ\‹þî†NüÙå$­t¦)«
+£Œè")eÕFòC*‹ä"5É`:G ¸I2û¡^§ðÃ_ƒþ3æ$‡¢Ÿ‰ãàg‚ã<%Ûít£G*cHe¬-R9s@*cngÌ-R9s@*cž"U÷Z©šÆï€Ôo`
+Ðß­Tñ+=SuÙ‡EYÐÌ\fbƒÆãп(~¸€d4²W¡£¡ëíá'C{J™| Oÿ†¦½PBk$ØI„Ø<“ÐÁChW=ðA^íМٚ³B³fOhÎçÌЬÙš3Ϻo=’o=®,abê&ïGñÝ"ÿX‰ß÷Í,ê—ûÃÉKdYU!Ù¢â:Xàô'W©jж*êZN>ѵ\åNy{_ç¼õÃÀ ·ÛÍ!ðÈ
+¬º£ª;ª:þP`Õ]ÜÜ(%zóêþa¿®ûÀèÇ‹OǺ¹ÆÛ•ÌGéÂkI¸¤i©'9AÄÙßÍå…غ’ÓïŸ]ø‡±zE¸˜m³Þa×5BâZlaŸŽ&+J
+Wø<€ë
+’ Á-ñÙÛzÒí¯ì3»ÞXÆí/o»ûë§Ú`|¯î]Uç»a'ì=,•É{P¢ÃíŠ:áN¼§V(¸ãÎE†§ô½p‹wvCât¼Å§†ö…ÝWÆÈÞ½î…>”aëW —l¿¢Kq»Â
+6§·¶„%ˆ~&¥û+m
+2+d°måpg˜Îñ' êp–k…D‡£ÎêX…ß³9ü¹#ú°3œ3«û!ÿüÝ=5¢›×Ÿ8«#‡õIJÙ²ý<¥lý0J)«$€ŸÕY»WJÖ”’·{¥dí!zÖ”’·{¥dí?yí²,2 yæüý’”~/šVLóh îæQ7«¥²ÄÂvZúâåÑ/®üØððQü{{ðDÀÃwxåÊR„!K±?L'Lƒü)£¼V’Ÿ™ÅJæ¨f‚<•‡åä<mî餳RQá
+žÝIž»ö•«‰{:oä>¹ª‘¾—Çúºé¡c@Ê:*Zp.{é”±SŽ½Ü!oá©âCbÚÎmv#Kq¼ïW«Á(÷.ùÇtóէ枆ÂœQèðFpÈy>§aÖF* )˜BËäâÅ«âwÐ= Zèôm}Ä9bÄöÒeVÄö
+½œ+J[VvÚÉͨ\NFÔgÎðBãÑ:œñ 4ªÓ<¸,3ŒLÆcÔh<N&ã1rÜ8#Gãq2‘WÆÜ4ÒHÉOÛÒUÂQ1¹
+cl߆ß] cÎMó'Þi^ ižú¶»]ß„†)ÍÇYtpõãlJÏâ5ëª`]¬ r>¿¾ý[«B[ÔõÙøÓ¤.)Ì^)¡ƒÓå4ám|Â0s %b)jÄ»4¤Ž{ÂW3=í&‹õ*9Sž5åÄw}! ´ˆÒ!q‡ëJà_N
+endstream endobj 898 0 obj <</Contents 899 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 899 0 obj <</Filter/FlateDecode/Length 3140>>stream
+H‰ÌWmoÛFþ+‹ûDN ÷•äG;Ñ%>$Žk«-Š´8Ðm«HU’ûòï;3»KR¢VRàp"SÍÛÎ<ÏÌ^OXJÿÖÏìÍû‡”=oØ› ÿoÊ8›<±"IS-èÓ&1i*YVðDŠÔ°É’E,žüJÜj¤ ¢):1²`£\'9—l2cÑxòpC
+ã ûÉB%`<ËÁ‹u‘'Ü0ž‚q¶®Ø¬fד~4h[(´=ònþØ Ñšt1ŠÔÆøÅú<€‹˜‹H3Åñ¯d?ØIÌ#•¤ìç(æ&ñˆG)¾çø¤ã_&ÿÁ€¿ƒµ‰ÉÛåÑh1ÐÝ$í½è¢‘;k_÷ís‘'ODféŽRõsÜó%Š4á½ã×8²6öqös‚¶é¼dÅ9EÖ]‘³A‘û}ØÕX¾óèîË Ù+ªŸd¿ãß
+븎u´Á‡yS³˜ËWùê§ìÄô»EUâÛMŨID¿üyšdpb&Mäb4¤t*N©P&r ÙÃL ÄÒfr3~ó>΢uóºb·å²êGÀ•N2Ó†p2‚AŬ=ŸëÕ‹`UÞºP{~*w‘™ArwX‡jSÕÓ¼ÔLK^ÖÀ±¼„.Ñå%2Ìò¬êí:"3ûŽîËú¹ê;ËÍ·ÕÉ8–äEbTç"E2=U§WbHždð@;²-
+˜*âZÓ8Öšš$6¹sÆØzY3ƒä®bžG›Íü¹®Â8/ÍaQƒr ÎKôŠ¥,od)ÌT†6èRyÚJað8;1Ð)yQ¦1ÿ,ã0
+á„"E~")Ï œIP,¤ÄJÎ)ËLû´b*:³Ø%»†½+à7ucŠ Ø©f[M·Úy<î ØÝõJ*x~¿/ÏÍ:æY4ß¾àr±ŒG2ê©t[+§­Õj«¼})·ì˜Ñ|±`¨_õt»eˆg®÷üº©f¨ÁÿŠ¤ÙöÅéZ*n×AëÇäŸè¯$¾}¶L [L‘Ýß¾MÈÄ^ãÃ¥ÎêmWˆ {Ûùô¶ Ã,K®ÊÀz™ØéÞØvoHêº7(¶Ý»ÀCb×½A±íÞxؽƒ&Úe6eIÙä9.•žØb½4°nQ‹Œëéº$VÐÙ;›cg_aã.ðË~ÃOY<*t}n'2F%{³!ÅP
+ 7
+£•(i\ k¸øóú SÇ*z€ÚG m³¦Óßcl]q3ø&¿Œ¼Ÿ3HØaüЃMïεØ1C@ê™!$vÌûÀbÏ !±c†€ø
+=(£Ï-Aô¹,Î"‘€³ˆ$Ñ–E /$O¸ÖJà•…WS/ìÃc¡J…™d^OhñuVáj0;×Û†¡\Ï6¦ È…¤fˆé»6k–%2 ­!uÒ]#ÂP–‰Òò+¡,UbÒ³ ìºòB(;?(ëBB®åa!S;HH-B‡ãÔÂ8 u1¤Ä!©Åp@º a*¿,<¹ë,a£Ïv¸?¼g7ñÈD³x”»ŠÐ4¶odÔÚˆ4y
+j²×êÔ¼Î5uÕÕjµ°GeI´²86þZˆkÑBÖŽmã´Zr׎‹¦þÞGv„nçõ}…§›L“ž¦%~â¨ÇNzÓç&ÀŠ¨Ýü~Z78=—¨„Ós¸øC÷©•ß#û…²|\ÏglŠOÕbÇÖÇ•…6°¶î m’"õSzLLÀè¾ÐÜçyô+}Úç)¦±í6œñº4’O#Þ÷ðeˆ÷~Bˆ‡Íg;½ÏD+õˆæRúØ¡> öÄ÷!±~@<Þv@Ž<àBȇ”¤éÖz¬/`Á¼‚9>%ÄUˆÃÍÇ´Žš}í‘BaIá ¬ò´Öwùs†ðW0C!¿‘üð=L ;H<J»
+”‡ç.a’_~îƒUÀa]öFŸ^ˆn‡•Qš÷uE¿ ŠÝÒN×ÁTí¨€SÎ)=b-MŠð¾Ú Å¢
+û7jt’¦ÐkPùÌÅ
+aUÜk9è&qB×Åœî´
+fÈ•oŠŸß^Mn>ß²·Ÿ?ýÍwÕó6CÁ¿â‰R‚”Õe«hºµ '±D°DYúï{ï†vèÂ~ß>?Þ_ ðƒ÷BŠêøVVÅ/Ö•®š]Çeóoîü[/ p˜Ü`ÔéŒÜÎ$wmžGÂ"‹õÛNy>($GÉ;£ÆrÆç>ùÖ0EðF+ÓU  Æ ¼H_ä&LÃ;QO_kÚ=éIÍâ½lÖ£ª£[åäÉå¸Ö¸€è‚д@¡)«&0<ú"{èBœA)ûð·e9ÖÜÎÌU}žÙ&¶4›HË‹ÄškàN2íaæ ÙÚr9£ì/*3âžSã'ÌðKWðKãaâBAå] Dlyb¢Ù­ùÌ~ùÉqÊÜÐ>ÂÜázOÂò¨Ãµ—â×Ò™I¯ÉÁdٚήÜ îÒƒBëR5‹Êõz8–T©ÉFd¦ OD<¾EµÛØs~
+endstream endobj 900 0 obj <</Contents 901 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 901 0 obj <</Filter/FlateDecode/Length 5588>>stream
+H‰¼WkoãÖý+÷#Y@Ì}_ ØYcëb·ëµÕÁ¦(›6È’-j“ì¿ïÌ}©‘U¹- X„Ž8;çÌ̽˜3îÿ6ì»÷·œ=¶ì»¹øg‚ÍXUpn¤ÿAÅŒ-,犹JJrËæO,cùü7ÿ†opx¡;&MaUÅf¥)J¡Øüže—óÛ+ÿÂ圽0U錻¼hx]–…°Lp0Î6 û‰­ØÅ| Ú–mÏ’›?vC &cŒ’‡¿¿ó[p‘ ™¦~*öcø¢ÈE¦ Î~Éra3™ÏDÆñ{O&ÿçüoðgÙHYز YŒÝ=@ÿö(ºl$Ø7CûBÕ«'¢ÜGf#®É¾dÅ 18~s‚£`cìH1Ì hÓ{qÕ1E6}‘ݤÈCö5Vïó2»¾Æ2CöÚ×O±ßñ³Á:nr“µø°X¯X.T‡«Sõ9»ØÿnÙÔømÛ0O9,É 'fy!!k ¥×R>Ÿ‰šdâía&bé2¹ºüî}î²Íúë3û{ýÔ #ÚÎv!¼Á¤bÁÀÈgÆõ X]v.4Ä^§Ê]GÞÌ$¹k¬CÓ6«»¼$Ô̼%¯`àP^ÒT…ìó’³<ªz»Ž¼™±£›zõØ •ömu
+å£DUXÝ»àØL_«S¯+9mžÞà:²-CdßrUfÏ «W÷¬¯Ý®“`»œ¤£¤*”OÇHàS²½ÉéìÁÿÏ«;üßäUÖù€TK€%Ý1©ÚiÞÌ$ÁÛæ©^m¹ÐÙ]Kfæmª=6÷&vß´wÈôÅs0¼^áÿAJÚˆ¢¨LÓKäÄ}03Ié‡Íb»¸«— ¬œ„Ê ¤¦+˜*ò Ô QÓ‹M£Kî˜1¶§^ÁÌ$¹ó\”YÛ.W MD⼌€mDOÊ59/9(–}Ãq˜© CÛðÿ •‡¨¤Åãìah§Þ3@Î`þÎ €‚Ý=ùÕØø8[Ƨ™y ߤ§HN«ÊÓ%úÁ]Éý[z… >*Aɱ?yT8 gBÂR)઄8ô²rúœÒ"`õ?3
+ŽIp$„ì ¡U×ÿpÅï:ÒÚ‹1Qã#r¡¡mëdžÍqEü–C;„NèâÂÑ” Š«acyõà]Yß….`ùañ° ìVg5Pš-d…±Æ¹ûÍ %üz]Hç4ºaqxšuo}É Þ…€ÅÆÀ «cùÌZóŸsá²Ë\g·ù ;ìL
+Se ¤5t_üáˆóð¡õQ´Ž58‘ÖÑÏ„Ö1 üº¤‰KÀ‘¸šˆKÁ‘¸œ'àD\
+ŽÄ%à—@Eæ„'‚yQ¿Ö?¹H‹¦Ø³2'jƒ—žÚ7ç-N[vëGïöÍ ÿÍvgç”a!ŒÑ50ø$„`eÃ`jìªÕ ÇÂT)ã
+S©=¡€Œ
+c¢„©W 4©ÙåùÅgÐÞ!lö[>s™ºÛ/½ôq¢Œü:Q”Ñ!J[bI#y•À}y(J
+¢¤Ð(J¢¤à8GQ’p%ïéUMUW…Ýß:8FÍ'ë¨î‚]½ó”HgƒÌ»÷{š‹•
+œ€ñ(8€§×
+Ä.n…°^u%0"<TDÈ£kw"ᣊðZÁ7ýåÎŽOÀ‘ðšOÁ‘ðœ'àDx
+Ž„'ài› ÷ª°Eª Ùà„E²)÷ÂŽÍ@g‹tf׸^/ó™ÈjOº†}Ì¥ÊÖ÷@î4f#_ðC3Z®xuæ[O³¢ªÊ¸ù»Šj¸¢ì:®³±ãZ3í¸pBü¨3剌~(* &èŽKÀ‘€šHÁ‘€œ'àD@
+Ž$à)·ÓŽ€Þ% É®{²ýØlÚ…¿Ã¬Ú@¸™ÐFþÿÙWÇ>8¼iÁ¾x'²/ú¡Ø'EáUo™ÙG ‰}ÙGÀ)pNì£àÈ>Þþªo‚žµ0/ËûæXêM½jŸ×›->³õ7dtD_hoZt,ƒÚÀ¨…×ßÁëç÷÷›¦…+oÛ]{½#v'³õ„ütÊdþ¶Th{Ü–
+Ç*cm,À‰¬~(ÖrÞß!`¸9»ËZŽ¬%ÐÄZ
+Ž¬%à8'ÖRpd-ïamÙ³–$­©Ä`A<;»úÊosÃÚwI¤oOXcF„Õ.2‡} ÝÕdw‹?¶¹Îë>`0¾ÿ
+‡Ý) Ä=La“I¿óÞ@¨ ®#ËzÛ܇5XJWeÛõ@™º9þn ›´è2F³þ > sVÿºþ”Ú½.BÐÙU
+ ;M—òŒù|zåp~ìý.’àDåD?„rŒ«¼°åPpP…FåpPÇÀ)8*‡„ƒr(xrúu—O×ÝN:,ñ^:Ÿr—=<,×5¶É{ ™ÉÎ/z:¨¾ÓÏÿ/<×›úɃ-ÜøàÔö[ÈÿF(*m(A(ô†b²J{Uœ??/˜Î\вúWürÙ 4búƒrA#eµ£‘õjù '\<Êþ(°1Ùî<n¯®çèê«·ìêël¤£ñˆÌ®o Ÿe¶pûPV†Ô$/áê©MÌìg¼\B?ºÍgÍâqµÞ4Aø;Ã˸²(Zø›N“`òCIP9 V¤ªÅî¾O Q€ûÁ¤?òÛ¦˜÷£I|µ·}aF¼ Çmñ8íƒeì'¶Jòä=‘…KôÙ3ؼAT'œ¬³I7ç-›¯ÙEÃnš%T®¢mlýí6±à3Ú:Œ2Åd0þCuì܉#X’¥†ÿyÔu‚ßcªÄMM½q`*à_å¯RÀ S©F€Kž ™‘nò™•6£Õ£,þQê‰|8Q=Ñ¥žX9âÂBÁQ?šDÁQAœ'à¤!
+Ž""àØ…™&tŽKõk’®oÜÕtÂÉ0ùŒpEÕièÌO´\”Ù<9Áƒ_¤ü´ +UÂ
+°Õž
+ñžG¼àG"^n§Úö+a ž
+°§¬€ÊJ°§¬
+ð@QÌ['36A¼ c‡”£›Ž.žž6åÓœjÔ®DqÔT€¤ÓcE]½®¢_*~Ã1À)€V+:-˜’ÄÈ s‹µ*wf<e§*+"÷òÃGf¹w¼P"9)óÓHîïëL’{?ɭ‡'ê
+ÄÈ<þ!ÕôµÛ<ó´ºMÚÇÍšjÔŠŒ¢¯7³N8Ys¢üæný¿±*FóÍöó’mcN{Á<s´÷›ê!ZÐS¹\ò\Òšf}:-âì}YoŠ;%ëÏËúàGÊzL‹Ô' d‘¡Jgì²1UA°VYÆ;÷p’Òb­µ¯‚±6v·¾±TÖuªŠ`m”îºfµÑµöUG°î>®Çž=FŠ§‹RlÚH !í&Cy¬ λƺ{¯¡úIÆpkì‹£=¬P^æ°c~¤MIÛꧮ@ºª‚ÿÅ|]Xp÷Ÿí‰óÿDup·õMµå€>w+£.À<ný+–ÑõSݯ_)Ãê‡bÿ¢=ä–®¾ÙmèÈö½±í·&>ZÝàöQ4šÕÕ[ái®;{^ܽ˜®þ~YÎë9I:ªÖu7&«’=¯ï‰ÉÙÊ1G¼
+WÉé¹]ËD2­˜’ˆPü¯_Ýüvq3»ºŒÆE®G_¯>ÝÎ.¾]·rÛË‘,ñnò¼丽‰f·Ÿ¿|ºúvý󂇩O$»~ÿzÕJ?Û©wI3‘Ø£ákÝ!ë7fß3ôdµU&'«±V£rK.éÇùà2ªH€ðKô¯ä7k »1ÄÈ=OxßÇš´½øÌ63R`7cÅ‚¯¢·1J±àÚÀ"q®º¼ì×±³"…Ü‚ªæÁ͆xc>=m¦
+áOï‘rnŽ%x×KlñŽáSÃÇ3 ÛÒòëÔ¬Rß@sb›Z;zÉog-y3†l{xÝ0úÄo¸}Ñ[eí–¤u'éº)—ëÅ|G·êE&èÄo™ôbâåÞËf ãWÚ=Шœ¶Zo²?xåå&TºMœÞ¼¬6t¶å~éèkDøÿì¦%Mr˜) ç"O
+ÿ…ƒ¶“6k¸Ê)ñ'iel0Í@ww#LÛÆËSÀ„×Ç6c¤,Gy‡mU ÑSÍ×´Ä#ý±p¯Ÿ¸\Þ—óM¹‰VT×åOÄ»H°f²]Í·¹Ø±%Gí€h½©˜¢þ;½Q>L›:øW”ÇÓ oI@ò¼Õøöó‹šÂA'àõð»"ÛtÞë«ü
+êlÖ¯/ÑÍ|UîÉ ›P½ [xs²Ö¼Êã=a¡Ð›¨˜z?Šñ›ÒI[Á¯Õ óˆÎw[Ö‹½5$aòáÝ*Ç"Ô ÏÁ>I&‚7^ëЫ®Ç<ýwçV9™QÍXŸ˜è[w×&__°¸xJÅ µëûØ䣗2š×Q{•ûNÜÚùpL%ÍpL&G3 ]+ªÒ#ÿwÏõ‚ëTS9+MîŽ2p5;%Þ´¯ƒy™^”wåj^ïª1ÊÇb+†Çkš5{(· bõâ&ef»!ÙDÑàÖ„¤N©4ºçÞ-Ó i¶©vÕb¾¬vܧ¾ïiûB“~zI÷}òÇø™`Z‹;Á±¦{ÿ}¹ezÁ]ŒU>Ún«§º”Ù(œW‚á$·½ëê—î\–ue„‡ËžÈÜNé8[uÖ©ÃÈd ÅOoÒì²Xñ﫳«±¥š°ñ’ú·zDpÖLïGéœ
+@G&C³Ó=ݤA]ÑÄÀJŨÊ0§YÖÆLS5J36ÐÔGà–
+endstream endobj 902 0 obj <</Contents 903 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 903 0 obj <</Filter/FlateDecode/Length 2905>>stream
+H‰¬W{oÛ8ÿ*ü“ÎZñ)iq(:î6‡ÆÉ:Þ=ÚÃAu”Ô‡XJmç¶ýö73¤¶LÛ›.‚ȇóäo†3oç,¡¿õ#ûé—»„=nØOsñŸ„ 6`yœ$FÒ†œÛ$Q,ÍE¬dbÙ|Å8‹æÿ%á8à@Ò‚I[•³QfâL(6¿g|2¿»"†Éœ}e*×1O3Т]f±°L$ œ­KöOV±·ó¾5([j”=jÔü±k¢ém”‰³ñ£Ó;¿‘Ü0-ðW±ßÝB ®ã„}â‘°\F#Á\øf¢Ïÿÿ
+&)c›µ&«£Ö¢¡»$î=ëøÈÄÉ7}ùBÆùɈ¨ô€"s@Q¢?E=]2ObÑ ¿y…"'c_‘0²ïÀ¦ÕbÔg,²¡G=ìuçª~‰R~{‹G ÷J$yœÚ^ O‡Q´ÀB´îËÉ #¡8lÿþ–—udù_–uň*cÚ… KØ È´ï©,puS2¿²3Þ›&id"Ð'qžå„yhÕiN¶Ñ{“õÌËãh”rAÏ,a“éû‹éxrÉ¢<“|6ùp3¾˜_‘fÔ’*/;ËP4$ìG~3eã›ëÛ“ù^¦ï®PÔìšš©zÇ–;+áÍÅ/·Æºø!Œ[•…ÏÆÄ9Cñ/QÆ—ˆ ƒOÉW‘¼„0b,-/\²e4Êé›m|%¯€²gŸáÓòï‘L8ÛâÆ/Ä3‹F†O!ôc@
+ÛÖlY=D"áu4ÒpV#¡²>nE–n­Ø²¢UÇJ|Òr»¶(ïYOõ¢Ø¹ã&çÍ¢&³HÅ3ª|*Ihyp
+aoôhp ;ïÚ< d ܼ]c|7eµØñPB•5?ì¡“rÌCiòXvÊý=ï0‡ÚHÖ¾¶YQ=–}™ý ÎÎI9æ™ylu§'ÁèÔÙu‰'‡ <€S¬^Pb¾G*ãÏ%+ª{6¸c’^ H²Ã>)©bE>Yá¬K,IôtïÕŸe”ó^VªŒBÙb5=Ç_;¸þ˜—w媨¶ËÊÇbtdª2:v_nˆþå³ åž=—´pCv.‰s*¨wb.×ËírQ<-·t¹|履Ρ”¤»:IÀ1|a±š´ÎÓ€8/'fàÜE$2¾Ù,«2ŒÆ@¼Œ€9BŽk/Ù;,íÊ´ ª=À•‡=¢’ÃÙ‘¡ÎºþŠ)ðüÇÄd±¢õ;¨¿yòo#b~‹ѿ=€sZ寧Û×clFrÔH+A'Ê+QEj!&A²T
+ZïU qŒY¥ú¹q+@6‰¦˜…ÈÞé
+™«(×Q~ lXsûW¢M{´Råa„AäYmE¬W"Ìë !ÌZˆ~w‰B¦¤±åmðw˜Y€J´ÛSEY³Gça^©4–¡†Š®÷7Ø=̬ Ìô[jÖ{ÌÙ‡™‡q‡}ùëã,tyªóÞª8ïûפÏaf¤f}^Ù?Ð&·¼¨¯O<5brK>'ôŠgi±½1&1{sÌW
+*Qš8ùôÄlvºŸrQ£·s̬¨Kö¹~ÁŽªºïú5°!Óxì­ hÐvµ9MÁÑC·ÔJ'»Rš<w´8Ÿ&ßžŸŠªpY]õ}ÒpkõµþŸoØ'€”_£Í!\ì5`hrÐ4ȼÞæd
+èšR;Dö’Ôá=¡ºîW†ï ¨µ]S¾*¾EÐS×m£+_¦¡›Ô©èúØWD#(îIJ„W¾zY±ªŽYý ÙÁè«Æ k‡ð,>:Îœ1û½xzqkË ýHÈ*’Ñy9MÅ êž,ÕΚËCTD´êÁ&în©IYC–™Ü+Pî\ܨ?Pc„1}¼î7¥ªmJSº•áêÐivÕΉÒÙ6y w3ôÌÜÏy&ùìbzqË&Ó÷Óñä’Í&nÆó+Üs3eÐC\MßÝÌ®›%ݦ°ë×ß&wó®½Plw¢ª–óRÃyu˜œpÿe€Èâ|Ds¢ØÌðM4²׋GØQ2ÀaNßì¹Xo ‰
+]Á‡Í)ézªÝ؇ž˜Öš,%`"m[èE±]¢,À<$6[Wø$[hmM‰³ÂoØZÓ–çu Ê^àu‘,ÿÆ
+\¿gÎm| Õ–}.·(ýHÂR ¢„SBNMÿÏuÕó0BÁ¿ÂH‡kQ£«ÎÚ±]¨%†„ØÆôÿ§wüH—'AywÇC…î؈d­€›Õ\Ç–—ײŽˆã¼~™Ç&1г ïaAš‰1uôܪk%§üøPÔ#uOÖ=—4Ó&ŽØ¤£XS«®¡ÒÝfó¿#ôkX ÞÞÔiò„ïZÒ•ºÎ"ßQ›&ÕK0slEaàæGŽš µ Á'VÑ3òfödËÙY$QÁ‚¢f©_ò’õ­Uéù*ûáSBðƒ•ñÁe[9EMû 0
+endstream endobj 904 0 obj <</Contents 905 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 905 0 obj <</Filter/FlateDecode/Length 5451>>stream
+H‰Ü—koÛʆÿÊ~$ ž½s ÇH]Ô9:–šƒƒ¤(T‹6Ø”#)móï;³’9”sA‹A(š/¹·yöÝ™WKÆý¿Ý=ûùÍ‚³û=ûy)þÆ™`Ë;Vœé_¨˜±…å\±²…’ܲå#ËX¾üè¿á _ tˤ)¬ªØ̙ Ŗk–].WþƒË%ûÄT¥ h¼tЋ†Ï¥+„e‚CãlW³ßXÃ^-û£Á¶¥Æ¶g©›14Ç(yãûÐïr]äBf†i¿Š½ Š\dºàìC– ›É|&2ŽÏÞ™ü¯Ë?စ!) ëÚ!«ÉÑâ@Ð}2ºl$´oúí YTgWD•#™‘Ž¸þ÷ú’/DoùÍ7tÚ8íHÕŸ`ÓõRVÏ ²é‚\‚Üç°‹±z“»l>Ç0Ã쵟bÿÀßã¸ËM¶Ç›Í¶a¹P,®NÑçìdÿÞC½Â§ûšyHd?üN¬˜å…„¹Ypwn*ÜOïpœÌÄ·‡3±0–v&W—?¿Ém¶Û~~boWýþ…ÒmïÏcà Bmà°Ž;Íë^Ä„¶Øv;OˆÜ×8íƒõ»
+Î1Øõ¾nnëþòI
+ÄèRœ.$&¦ÄÛu7WØOh‚%‡ÓZ@§`þÓ¼;Ô…<’Ë=M~¬+€1Š’£5yU”@·%e©TA«JàQNË’ZÖzªmëBMÈq΄|DN«ÖŒ0§&Ú{‘ß)š×¹Ds
+É k‡¢MCù=ev™ël‘ÏÐÛfRZ°‡ûf ¾‡%Ü;:´C+È
+Rµ´Êíöëà!ä¡&x(9ÂCÈBMðPr„‡áñÈ‘r7YÑð(Ÿ'Ÿßæ3“}Æ˳I8iÊpÒܼ½@–xæß·+ÿÞ=^k¼€¨ð¦”G£«w„¯w8›‰BhH‹_CK$b—«lÕìŸV»ºÁ8ØäÛæ€âjãŸÕ;„#´ë[³®EÔ Í£×-¤}œ‘duŽdHæ¶%ÙrŠdé"Ê3«­Á·«ÞÕë[\,?›S„•+좄Dû!G„ 5!LÉaBŽjB˜’#„<†°¦Áåø8û TOHìš]}f‹ Ö>÷Í
+ôðàÿjî#Vø¬‰1Ù„?Ïòj®Wë:P¹¹ÛÔ;ßÞ"ÇœÚXoñúyí‘jÄ©Ö#øËTuT£§|Â¥9 ©­¬g˜€”’¤”!%å
+­œŒ(@èûñöžC7åT!¹oJ•ÄÝõø­¦éÑöù+ ©—…ÕõH¹\³ß/á QȸÄÒjV‰ÊW}«9àý£¿†{_p;Ÿr¨ îµìr}Xi­¹'äÈ=¡&î)9rOÈ‘{BMÜSräž?1«ü¼è‚ãé?‰‚hý|˜Jú ¬ý/n^¢G½Ú‡
+*Á'3ª²¨`B?òørÏs(X#1‘R ?´Cr$ƒP”É äH¡&2(9’AÈ#)Õ´ý$2¸
+îˆ “Í;
+ÞÕ»=z…Ìš} a&”¶ÿ ,ªça $'²®Šª·~'…%G,5aAÉ BŽXj‚’#ÿ&¾ìvÛF’(ü*¼$/$°Ùì‰wã…ñÆÎ.s¥‘8Ya)‘iOüöSÕ]ÝM‹,)Ž³›‹8‚›"»¾>uŠ‘cãÒ­òI\ÔŸôHç&MgžB}E·6xÆ1‰ÿ}»CGùŠT.ª™,w+JÝÅÍÛ‹õ1íô€Ô¯îcF û˜
+0þüTHó\jdÄeÇož¦mN\r*qÉÊKN\r*qÉÊKN~öHv¥…a&ÛÕ ZÃn±¹û„äÙ²/.èMÐÜÒŒ'EBËz'«Õ®»ƒ”Žÿóe1o ª@ ºÒ7ÇžÜå\aåƒÁ9768 gJá!FÆ™¶f„nè\®­ð”q12aĨ#N&Œ™0bÔˆ'FŒÌa4á" N`”°1Þ1˜—î¶X¦åzÿõ•.×Û ~üŸ¤ò±0á­pÊ!Aç÷8všrW©2¾G3~¿'µ¤Yz²CoFÜ}.&
+'œ8•pbå€'œ8•pbå€'OàÔäFÓò85Øp8…~¯c¿G
+.Ü暟§”µÞʯâd‚‹Q#\œLp12ÁŨ.N&¸y"Be«’lïR¦Û Úd·{@žÖØ´ _¾©D Œ­¶Á®Ð½|ï¨Mùså-mHDhf`ªÇ¹°‹Ú"bž [¹ž ]GÕ2€Ñ˜1Ö@?æÁ0¾¡„ßÓ{`02Á¨ N&0™À`Ô'Œ<C¨j †¶P‰ ÆÉmßíÀ&D¹¨f²ì×Pý?ïNN³õ›n.St¾Zì!yÀ¸ܨø÷?ÝÞû/öÛD "ÿù¶Dô|ÎÔ×q;^óaI)øzbdœ12qƨ‘3N&Ι8cÔÈ'gŒ<æ¬v…‰¨1“~*A˜ÍÞßà濃Övò¶ðväÐt¹¬f¶ì2iªI˜xÈÞ@o#§Þ©š1Tß'%OâO¦lkŸþ#«!{ÿ‚v}÷ºš!ø3i´)×6Û]—Ç„Œ
+iÑ>aYÕÖê1«¶P…¢ÕP5Ê”G®æi¨âdB•Q#ªœL¨22¡Ê¨UN&Tùsa}´/v€c¤*}pŒª¿‚¤íÜ&|õÏízÓ­Ði€ÙJ´%p{ZÙ²[ìð/þ9È­LƒŒ÷aîG•…ÍÈæ»}À!v½„éöì?Ž
+'†$Ȉp]^NÛÔ:©Ðµ¢ä48â`é…(™ô¨Û„. 'tr¡ó×Æ…^Ë ÃÙZ§õðIa ÛÛRª§÷´ÅmŒ ¡®O†ó>¹p,åu 0
+endstream endobj 906 0 obj <</Contents 907 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 907 0 obj <</Filter/FlateDecode/Length 3159>>stream
+H‰ÔWÛnÛHý•Æ<‘ ˆÓ76ÉGÇãÍz‘ØIÉ` ŒDÛÌH¤‡’sùû­ªnÞ$¶âx‚A,Jźt÷9§ª_,§Íûù傳»ûy)þÙ`Ë[–EœÇ’^ÈXl"ùbI&"%¹aË- X¸üHÂzpð@ÓŠÉ82*c³4ŽR¡ØrÍ‚‹åâ’.–ì/¦2Að$…,Üe Çà¬)Øo¬b/–Ãj0¶Ô{Ö¦ù<.цt5Jnk|gó."2ˆ™ø©Ø[ûCŠ@Gœ½BaÎDÀñwOqøÇòßXð¯Pr,edÒ®du²Z,t¼ä}P]0sbãÇÃøBFÙ7wD%‰â‰D\¿¹dÆ#1Øþø‰lŒÃD"ÖÃ5lú,Iö”CŽûCNŽyˆÃþŒÕË0 nnð˜aõšÎO±OøYà96aìð¡¬+
+Àæêöô9›ƒ™ÞÛ9þº+DöÇïê”'wD¥i¤©:#a¥nGòjM¸''Zg3 ~âŠf[bºý¾XcqŒÒâëZáëËÀ[ùæ®nB‘åþ>:؆3(4Bв¶Ì˜G jÂ
+ ׬ózd@਋
+«Ûw â«Ü ÀRf]ú8Êâ„àllœ›¦Þ«=.¬Dˆ"á:¿¸ƒ3¬½n×
+1z­
+%fŒ>Ù¡ÏcmÑç3;ôyÌ}k‹>ŸÙ¡Ïc>@a
+C®Šõ€râ^0/pc6ßV9ÉBiHûfØjxÚn¿4]¾Û¦F…Ù¢›_ÎIvY÷þ¾þ
+˜ÊšõŽå'=¢æýWá>4åš­ð©ØlzWžtZ)ŽXÓÙ4óÛ‚þ&íáx éx‡õ™”µ$ÉLm#ÖûÌ–ö>«ã½×l‰ï3[æû¬Žú^³å¾Ï|<ŠÙ¹Aú©ÏánÕS?4p:x‰÷š¿Ší‡¢ÙÝã—Ô {<ã|ÿ¸³8;ñƒnDß! Ù3[âÑÝ蹺@oü¯å`Äðï“…VÁ¾KÚËÚÿ… 1´_´€æÄ{ÞÈñà3[9ðYxÍV|f+>«“¯ÙÊÏüÌ›™æ L¢­œU«ûº €øæéÁÜÕØ庨öåþ«
+qÙwðû‚Ý,€pê„Æ R°©*öÄë Ôü9x±?>y$õCÑä´èºaeu°ŠÓ’°ÊIÊ Vß/é°®`1{~ÞKÀaD*ý}°+
+¶Ä*ã£Ò Wµ¼ÒŽ‹ÁfÇc×;•ýñ>ŒV%¬šžé)5 E\@ 'YÀÊ»ªnŠ>B'ZÄðá• %¡å Ú­™2
+i¢T|¨xœE’¢j´Ö8Æw{g+9_©`O;k
+÷ž¡¯$3Zã¾lCÓÃÀÙÊ•Ï9¥×;g2÷ÎVÌ<¾Zª6ñáV“Ôy÷:ÃÝíœáÈGÎV}ÎÖÞש¤>”«Cm4H?%l¶ÕF«_
+ ¸·¦¬~Bÿˆ& ±ýÁk>gN8DsG+E7–­ä[ ¸…Ç[jJÖš%èõHý¬<ÞÖ“J8)‚ÒÈn” ²VjØ\œÁé“:˜uH™˜HmD̨á|x+#ó¼º+؇úÑ‚f(#¸›àÞÕð]ÒH¾Ù&¥±þ÷¤q´¦'HãsÖÔKãôša”QÇx=ÒxÚ×ÕÌGPè1î1»Èë±4ªÜ´H*$w»ßÛü Þeªº¾Ã}æìÅ®¿& H&¢ºóät%—µrû¸eUÁ¸L×[‚Ñ7;µ³ºr ߀çЈ½Í7ö7[üÀ*Šq -
+Æ´©]wf™õ³ÌDÏñ˜ÝÆz¬›ô;›ùwovz´³švö5><nö%\/ö‹P€$7ŸPòiW4ŠïnŠÇô7Ð.ºõ©dpšŽ@{ê¹(l8S ý Ü&];F÷£ûܶ±œuYWÔ‰*ö‘št$²WkúÜP¥9E)NÝ©¨á ¯•Ð7ÈyEõ”Ÿ¨‹nèN
+`À-A@Ф´2u ç2…áÜ
+žP?ò4gõ6wÛpœÙ×p<ÞÖ§ŒÞ™Áë¢ “µGd)„áI/b¼¶ã†b‚«Ày0É(=÷¡L:LQ&„ÿ  ægWg7ìâê_gWç¿°ùÅ«ëó3:›¨×IWO›(ºgyy}Å.¯þy=}FÏÿå»Zv†à¯øèH%©S·
+8ôBôØKÜ)MPHÕßïÌä…8ôâøµÞõîzÂÐÃö¸Ý·R2ðw“mnz “ýà@âǧã ÙƒÂ!xÎåk‡Sß,W>ˆí•sY¡ØIš-»Mmà:1oÈïöRWüøAœá~/^«~rÍdFR¤V>§î¬d.ž»;BVoß·­D-Ù0—C«qîO(ŸK)¢´ˆ(`à„FCm4/*
+¾ä>óì;p‰ånË-zåQ*î ÂÍ㻞Cgxã²Ð fÆÉhfˆ”WbÏ¥*FTY²G`¦ —>ØóYC,^­A‡¼ÐÄž´ÈK\™fZ“]øUS¢òK¾ôóé-Gíü`
+endstream endobj 908 0 obj <</Contents 909 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 909 0 obj <</Filter/FlateDecode/Length 6108>>stream
+H‰¤WkoÛØý+÷ãe1÷M( ؉7uᤩ-l±ÈkÓ†[²%y³ù÷¹>DŽ¤*`)<âÌÜ;çÌãb΄ÿ·~dï>Þ
+ö¸aïæò?‚I6`U.„Uþ³.wBhVT2×J86fœeóoþ ÞðBwLÙÜéŠÍJ›—R³ù=ã—óÛ+ÿÂ圽2]™Œ%x1ðº*sé˜`œ­ö/¶dó~4h[´=Kn¾C &cŒJ„¿¿ó[p‘IÅ-3?5û5<È3ÉM.Øï<“Ž«l&¹Àç¿Ùìßó¿cÀÿ„­R¹+ÛõÞh1Ðáú·w¢ã³x!Á¾íÛ—*¯Þˆ.&Ù GÂüžõ|©Jä²wýöGÁÆ®#imÿL@›ÎKQ“dÛ%¹%¹ÏÃ.ÇúcVò/_0Ípzãó§ÙøÙ`×™åü²X-Y&5‡Ë5)û‚Ý
+Õ¿MSsT7›ð¶y®—ÛE& ¿Û'ó6õ„M‘3:Ø}³¹C¦/^‚áÕÿöŽdlѲ‘ÇÔ5rÌŒŽô~½Ø.îê§fNAæzR3U™—?ÁLÿ¾ØÇL«dŸ™æ˜.6‘®`ft¶óL–|³Y<.š‡Äu¡ÉÐ;Ù]—êåÊT¹‚û*´T †¡jø?p”‡Pk ½®C¡˜zÇ€”*/ñ‡ÚŸdwÏþù3s:×ð{Šßfþå'x’¾=ÀÙŒqp“­œ” k[èüPˆðQ©*Üó¨,B!`åOD¡Z–¾jS0š6EÀVTHG&ÐHÕ‘Áè¶ôát±;R0ƒ´ð:L´ø„<h`<ØlêdžÍq:ü‘A%„"èÙ!M.‹5rïP
+ä·Lü23üè,ÀÏL)]AýÖÜeð`‹¯ïò>Œ9†ÂñÊO¤pt3¢pŒBÃx˜òÙVŒŽ¥YJ ‰¥XJ )nN,¥àÀR²ÔsSÊ4.ªŠf©ö³AdéSZg3Ë×ø·Á?PÈ€7Ÿß3¯ð»õoþ§8êB«-ÂÏý/=!< »Kú R uËÀ(þ!8Dš×ËÍK½n–HÄ-{Ÿ9hsž[õÂ?kÖHÄ`×[³²ƒ—L‰Á,¨á­úÂAÍ’Œ
+šx4c¡
+N‹F‹¨š™sN”Ry¡hMûq¹‚i¸#]æî(‘ÄŒŸ(’膉,À]Ê 8Š„@“H(8ˆ„@SÜœDBÁA$úhÏ
+Q@Ç–Ì7¹CÓ„he$'öÇ$#KµÅþæübƒ£'»õs薯녲,`*lG1š£Æ'1
+!XÙ‰¡7CMT†žvvö,GÏ£©ÓÕäÝ@BœšQ¥jBõ˜Ò™±z¬q{Ä 6âñD&œ(žè†pÀÅ®3GñhñhŠ›€“x(8ˆ‡@_™SÌUΕAšÚ1Š¤!G\ƒ9\ Õ¬
+ÐÝùû¿ÁwP vÐÎø·ØÍ¿ÛfÕH}ÀsÔŠ©t¢ú¢B}0¤‚ʺ"ï†ê£à >
+ê#a¯>
+qSpT {õQèÔ|ç’¼´Ë«B2+ LAjLggï?³~t{ÎfeõYÁ—~r»Zf%¿Ï0÷Þ®ÂË,pD–EÅ?íÙLàËÊè ²J»‰ÕûwÍ­÷ ® ¥Ÿ!g¥,ñË€”xqÚAÊtç‘2¹¡HY˜n‰·
+Ž¤$ÐDJ
+¤$Ð7'RRp %N²7-—Ž–”ÎÁåÅRy5ÿ‚]}ð<‘XLÛåóSVð=TÃú)0MéÄ4Sígšá*2 J›[<qøg8Û­„x1GmºéO$]tC‘Ι}›.GÒh"ÒhŠ›€é(8Ž@_˜³pq€—û[ÿÁ9$qÒú1º-”êmÍ~YAÝ+ùw¬†P _߇uô‘uãÈ„C3=+´¾Œ…¹%ùºZ>¬ÖÏõvá;û²w§Çv/‡}\ýܲ+ÚñÜMç¨ԤΫJõ¥ ŠB¤
+Ñ %£öí³¥@ I
+¤@ )nNR à ÝP±ÜÉvÆzÄ¿ÇeäŸ6íz‡\?ûpTÿŽ\¯ÅD¾‡$wãd°\´céëæ:S¼^n^Vë-»ÆWA*’ÿ€Á±Á/ëž9œjÏïï×Í~¸i§LïÁ•žé2/ÔnU:~ú¹Eª„‚ûë×þ¾nÃo#Õ¡d”(š) ×õœÃ›Ñ™ÀªÅÆÒûíÄáº` b‰ðs×µ!mÈrÙU€N¦0xgsW [?:ù1$ W4V$°·×ÊŒô:Q‘Ñ ¥H!±"†çFæ;Ñ4õ8 &9hPã4˜BžF“ 4Hq<U‰¶‚áCýJ4Ý©L_‰¨lZ*Ÿ£Íf…¿[ §B‹1ØbÌXmaz÷’kIü’ÓݲkÃñqí‹ïêÍ‘ïþ2Yðž­mã>¢º2Ngát5~láð‹Õ2‰à•iÌX ‰«<½K\¦|†‡“‚êl¤ð>f©„kñeï9ž¶ßøG…fhD8ë‚‘BöŒNîj(wå:Þ”ÞÛ*ø•ß4Oõ¶¹÷ÃêvÕ{Ótoºa…¾Æ:|Îêÿ®þÀªœïV—;]Äy½Äq«%ÀŒ¥ó&9 ?.*Q('•è†(*P ý@ìŸk‰ã`¿ªPp(+ë
+ ûÂB¡1n
+Ž¥…„}m¡Ð‰âÒ©KXrÌ´.ÑuÅå|ƒhñè‹JsÏpïj‰ ];$«–<_êuýœÍ,4r)ùÚÞ¯5~{zóvº¶íº{7¤F<¥=¨\8SÄäHlpÆÄnVX¡ÂÚºÛíŒÖ•#Hœ2r‰“ŠÄ¦ô LšêÜ°5Rp$1&Sp 1¦¸ 8‘˜‚‰ ôÖ õÐ H‘Þb7½º‰2±r¼¹y{Hs]õh¤Þd3¨¨¿Ôø±xjðãža•¯Ø­ÿïö yò®þ·Ûn™
+¸COqZLݾ(§W½`e':²wìÊghªD1ES: § J·kŸž^û¾z™ÒþväKè«·Ù ¥>³ÆaY­›®ku²2÷YEŽœ(«è†’ULœ‰3;²"à(+M²¢à +Mqp’Yè+s ) 5=vÚÚ?™:ž[¸Ý¢k7~œ¼È,߀²þG~µí¶$Ñ_á#õ -ûF6ƒÅ‰ldA<YÉ »yQdÚáÀ¢‰ÆÆ?UÕݼˆ,É·‡öÁ2¥Ã¾T÷©ªs «®#ʦ%ÌÃ}ÔfÐpAaljÝ,‡«uXê¢.6ÑÅùŒ›öP¤ àHN*UöY®:,oE² ‘|‚¤Œ£Éû¶ôï4y«_Õv‹4¿Y@ØPVþÑêæÃ&RJ«NJÁU7£tÉô~éôÏ N4 ÐdÓÀ¾•B}{J6yj¼0›ü2\6 xËòMŠ}61hÈ&vÙÄ aß ²‰ƒ]61èHUnu‘Ò¼ÒJ2˜¯UZóËèl‹º Ä9|*'/xˆ.ª‰¯ÝoÓ4^\Óë;ǃ©°YŽÞ+P­[â¾²3›§'*½ÈtRÚ(/l:ªœTlá$¥N~zHJaÀ =…”þ„_HJ¿ GÊÄÀ|‰g`OJ ¤ä`GJ ûfà@Jv¤dÐR:×î˜!¥ÎÓÆp'Qí_œOHd’à0óÕ°pŠS"]¦éü8Ó4ú]b.׌.Ïo„X‹ *a¢RO!?Á’Î/ÃNçøÑ^k± é8Ø‘ŽC=éX˜HÇ¡~ßìIÇÂD:ñœÔäìLfúç¬Uß)„«4‰®¿}jìâËkÚs˜¦‡5m„]xÉSØŽêeì
+Ëpì²°ºfK{v1h`;v1hØ7vq°cƒÙ¥òF¯IÞêéLwDé|’BÇÔqY—ÐDáÂïÊú‘dã Ð\EL?ƒÂÂûºÄN·žLeìÕåT«<‹?ÎKÐœê W%/ ×ñÒÀmÓÄÊ{‚õÓ4UC—%¡có6 U¤O!¬?ýÖ/Ã6“½n5
+
+™!Û±ÎãƒE–a
+¨A ÑìÉ>>Î ò«A­F¸Ra|°9ÆPNí`—(ãc‡ÇïÙ—;s®€f²»CÙ½“ãƒK=.<Ÿ«ÌØ!ØŽôy¬S7ƒ÷ŽÉKÂý)æ/-í% ¥°ú'Ñ_ ø÷žõšÑ¸‹mÁH†Ã͈+j8©$TŒÅªº-¢ïÛL«êº5­°` oö€:²…þj4ö`µ&>œ]¥’©]œ
+nÂë­âæÄtþëþnU­ê‰€š·­º1iÐWÝUŸ“ËÇ7‰”2bŒ}ªç[•˜ÉcýžrJgÐXØÏÌ >\uØvÆ¥Œ’x
+¿.#P‹óýq¾¼jˆî¹ÖçÙcA($­ _~€­+÷¼ð)èàÍDŠ¸ØƒŽñÇÕ-ÀE„üJè‡?
+zµ¨ž€tþ_³$¨’šÞüA£ðÕ-að}7™‚ª*ˆ——ð« aÕÛ¨>öúò#Eì*xâ„Æ„’Ká_¸ÄY΂)Ž`Ú©Œâ÷X¬Ø×ѾX? ´¬)GÜGYá[7°2 ßÑF6“˳º¤ß+|·ûÉr1™ÚøË?ç÷øA‹Ó++|êÌ0Ié3lÚæ<>¥Ô¤¦>²)Ôm\xg8¦ôSf8¹A‘jܼy\½‹x)ì¡!‰9äwü šF oK!á m&7øâb<z8%VƒK|š¹yÃù¯ÛKù/ŠPµ]î*HXÔ`Ãêñ¯ÄW·ø[ô½XíŠ]´ÁJ¶½.Þ!·æ@ö-6«0Øb]ÓHâ†t@´Ý•DCÿß(®gMÉúYÊt•€!@%sª¥Qê˜p‰š3(ÉfB† º8ÿÛG¤êöá>º\mŠžPÐ…BØÂÉt*PW2Ð, ÷$ƒ€ÖœTDî¦G–²ÆÅÞñów_Të^xR\ë•á¹YŽ…'S‰ê>¬#Ÿ¤ù ³Íu¸‰½îŠ6ÇžôÚÈh–c‘)IB¾Y'Aºœº»6ëä`I7áI©( (sÊÆ÷E´ª®£ö*û‹¸¹íxLJb7döŒ
+Øð£ÑƒAgæ`·ð“û€9Ø_l¯§#‚îìÞ”qPB_IÑù o¦ØïW·Et…ÊâT%º,¡fy’A÷‰z=éÌôŒp1“òËg “ȵ´0 d¥ø95X^ýŠÜCë³DÍoj£±lýY¬q#uÏúøKé=
+³£Gà—;D™il¿Ù‡Ø¨|#Ž;D §É“õ¢>å—Ÿ¿\žÓ[c.Ñ6.Q DÊNÂ^‘©ú“‚KLÇ\bŠ.Ñ:—˜Ó÷?‚I´T檀 sB&1§) zsKÐ|ß¡Ä'Ó·¼$g8xQ÷Þ[ ÿoVÀU‰8º¨£õ6,»*ñ‰öD»«Hª`]¡¹vd6(šبÊ°ßv±îDèÞtÛhú`¾Ðæðmï‹]˜Îí©ca›KP­o"w†¯t®u¼â;4axp¼©Ãæê+ܘ¿£…ÁMú…AÜ:Gv1‹ç°G
+í¨¹›ºþž€iÞÔá‰[Ë3^ØÂk^wáà ‹¼ÃëÇxÜá½2¼Æá±áy‡Öy‡×[qx¯,8<62ïðšuÞÎá’ôÍž€Íê$,ð<‡×põµ¯åÛ8¼~`OrxM<¯uxýxžàðžÅÐq‡Ç’Ó9¼&¶×:¼~loâðúWuÊá‰Ô‚vóiáÞ‘‘Ú¶Êpàð8ÔÉtõBœ…Òæ`¯¦9ØËeö3ðÐáiÕ”#iX‡'TŽe©çð@“5&/š<P ­É½ªk®s~³D¨ÖýúP|YδHÈ…zo8m bÇšŽ3Ì‚3$ß9•BÉ` “¡5Pà2Æ
+•A*µ–C÷™Ã ž9 ˜ÃÁž9 ˜ÃÀ9ì™ÃÀCæ8 âšMÊ3GZ˜£écU]Üî/eýˆ­åón[“@êc·AMLÒõoÅ#êJ¸%¥,Ê‘HâVå5b×éÃ@v ×Ûåч‹+¢ëòjqqù±UÌ¢U\ÉLX Ÿ
+fÕ QHŠ„-q ê‰Ê ¨ì‰ÊÀ¨ ˆÊÁž¨ <$ªHS0\ OaQIü@žž£ú1p ؆òøÏôÃl²ƒL#h¸*y²-yöDÅ“ùÿ-W¹çj®A¤´w
+¾CUtLe@OTu<ePOSõ,åPGRá¨n8ªYŽÚVË‹/óytQÝlw›U=¯Dm‹vª­§8x²`Rß•®ñ
+Õ4^­¹Æksßy§©Ì“^·Í©Ùjq¬ÙÂYéQ —DVÏD8ÆFÁþEz¬ AôwâÍdÛ4¹{÷3D{èÿƒ;ɦ©­ƒˆ§B§éð–ì4,ˆX± ¢aÁÔŠQ ¢L­Xõˆ…ä¾yÊ…Æ ËyÛ¢OQrpe—F×yàªUî¸ZËëÛsÆcA-ŒjpKÃÇ‹w×?ïÛŸñ‘ñ >A²Ó¾1k?Ňt’hüŒÎÊ×¢Îa¯ø
+ÆQ±vV=¶NH¹Ô+ ÊËK€
+endstream endobj 910 0 obj <</Contents 911 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R/T1_5 1565 0 R/T1_6 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 911 0 obj <</Filter/FlateDecode/Length 3769>>stream
+H‰äWÛrÜ6ý<‚Uš
+Z`ü@ñÖ;H/»×œÿ‰‚³Ž>»'•9<'ü|~Éjü–­£™†JÍR¾Ä'_8xe‰½Ðò|Â]6Ó&•ÌU%YïjÒAц•7ø¼î•:V­É'
+ç—Ë®¦oê• Äùé|¾¼q«_­%¡Xäí;W«ÒmÛoÚÕÜuE"Õ—¦Xš„ÍD,RÀÖ{(Ac1Ïh7ã_#ŠÊÐRæ>³
+…n©¡ß[À@MßÑû“û²ô› ‡³~“
+ h5¹M[‹=ø–~ÝsS¹{¢à“#©`X1c%Óì˜xÍÞÌã¶Ù‹rnʦƒöŸòj öTû{âx”춴›
+Ñ_?º× þNBJõäì‰czŒÜ³ {:v§-ÜXU ÷]LÏ^Z´õ]ݶI<N-òx<é1ƒðZÑ.û±Dpóo6õ]cÃH ¤ ·Tп]ª½tÉI¡tÂL&â<Œ®ú8n§è²1d£,£núŒ¦4TÓ"hCÓ ‘È`
+‰}ÀñöüMCƒÚNâ»<AûèÃDû+caJÛlÊ;ËHù`Èؘ¨^BÅ…n\ÁÏE? ¡q½ÛsM¬úâ.ëg›‰—Jà×À6„W
+]pÀðz*MцÍÜÂÈ^ >½à˾D š(y<ÖCažR 9pFG]¶Ãº(4£.`kŠðŠ‡uQ
+=¡—št;Шå\š BvÔì1|X¥ù˜ h+2ÝʯCx(Çz9(“‹û> |@:êúávñ¢yFáÁš6Þ=n;°#Ÿç¶ðƒcM€Ûšã¹­pÛ9¼\ýx9?£­^@nuVLZÁ_Ln¯‘l\žKm;Ç$‰®Þ±Nê ïð[gfÂoѯýD–ý…äväu(‘äVgžÜb{µ‘BÓè-4ãuû™znµnn±¯Õ(A. Q Ì™€8ˆÞÁ·Í„»ªp<ö¹+†R#ƒk±.ݬð‡¸l\–§á§ÏPÙCüû¸ã4äF¡=ŸG
+%Ó,ÓÑg:CGmòrï‚ jÊþ\©Ý†ˆ&OæLw§àMNoúÌ&fœ- îWS¤´={)Yé' »ažpÄn×íC Œ¯ag+ûÍrn›Ž½··uSãòf<§‰p‡D+IÄÚ-°ÙÂÙKiÀéí%çöÑ^œàhynÛ–«aÊܦŒ~X¦Ë){.3*OátsäºO^_•Oø¼ãhYq4S\â{Äß–F]àG ×mü¨}/–]G³ŒŸ\ž`×¹‚õ„³ üú ·`KÔ¶hä6Ê9´&Ž[Ô¤©BiÓÛf5ÊXWÞ`¦9ú¸*ÇLª!RªœTq–ýÅE2´±öþ•ûÉ„—] ð zó·Z¹¨Ð¹ EéÝÉ8yÝ;{‡NÑÀE1Î)ÆËXPvñQhÐá( zs ‰–4™Ë}6D*‡HFg>Tló:sñn" *øMµ*i |ÁE(`¬bvÑ bªÒ-u÷ðfáHÕøî‚©ÖøI)ޖ˺BÜ¢Êí°#E`--Ñ퀵AC«²…\CÖXdLvŠÉ–Üù‚›b1Awý>쨚¯KïàeºrL2[Z2TÖø)þ%ð<~3(÷ùEŸ?1Þ˜8¼ Oæ¸+:p+W+ˆ‰Ì~†WË[[Ù%ÄóʾaöôðØ ájÐ ~»ÄOU(9gkúPÄ¥åè]À©Ì0q¹†U9`¼¡T‘ƒÎ§Ñ€Û>¯½írÅìÊ}û€´:ÜäËîW¼]ï ‰­ííŒÐW8ä9_§È#ä[HG8oÎÐÿ ¯šÞ¶aúWtt†6ˆd[NÖÛ€
+´;tzX/®«¦ÁÒ8‹ ù÷ã#õa;)v(êȲD>’ bÀ˜aª1Ès5Á‡ŸB䈽²yB½°¹Œ3Ž?° ãÿvB$ö¼ãì:7p•Õ!RleŒLŸ 6lÛðlP5Àk©Z¨QhÎ7pNü&Ù§ÈXŒ&i+Ï @—Ù0-âÙR8»ž©"p­mèPPä•' ÚÓb‹·½’3pòµä‹§ÀOL"òÐ;˜Î´ÀWMÍÐìv¼Iì
+E‘]Û€Ï2àÃF3t”8ø«7Ž&œŠzw+/L‰FÇlâ)´¤y"‡ÞE'R6Ïþâ‡cÕvb5%J­™ĸóšÂfQDzZ^p6vBò–¬ã·/.ª²Q«EjÑa4¯ôÃÙäCz¢Î¢Æ­ûV2ú¾ 3„üÔ
+endstream endobj 912 0 obj <</Contents 913 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 913 0 obj <</Filter/FlateDecode/Length 2412>>stream
+H‰¼Wm£Èþ+ýNc¶_ /'Í[NÝL&cïæÃmûœµÁx/÷ïSUéÌx´#E«ìn×ûSO7 Æé_µaŸ~™s¶©Ù§…øg‚-Ö, 8$ý e‘4çŠÅ©”äš-öÌcþâ?$!Œ ¼Z2Z¥l–DA"[¬˜w¿˜?Àý‚½2•†(°‚¸L¡™à œU9û+ØÍÂõuËuÏNfþè»hT¶>Jn|üÍØ]ÌÁ„/¤±PàS±/æ ð…œ}õ|¡=éÏ„Çñ\à§Èÿçâ¯èðßÁåHÊ@'ËêMoÑÑ~Izà7kbôG®~!ƒôbFT|ÆPtÆ¿úŽ-™ò@8é~ÀÑ14$¢Ø `ÓYÇ;j,lÕ¨Æ. m‰Õ/~ì=?c•!øʧØw|æþLz•yµ[JFAlKùE¯ÒÎ+!F^u#·¶eÁ|¡<¨dˆO„g/àLŽàÚåžÖ9ø”®ƒ
+è"5£àž±êyË^\R¥Aü‘¸Œ‚·â’€ÐÆ%ã ¼—©^ß©zÉŠMîKäÇêd¼Oš Ö“ Àøå:‰ä _ š3 d ´ƒôþôUâr–+лΫaéÈGB5
+5Ú5q™€¥²tÚΨ…<Ï÷YÑl}zËš­r$ªz‰xÝÌqYô&0ȇ7
+¸œ
+\+lÌarˆ ðJ@ýzpêœp®#œwA¶uœ·
+g@¿u]‘ñ¤q `-óºFêÏ69[´=)è+N,Ù:óDL
+Æâ·òÒÆ¢§XT8žv[3í@ŸÒ®>À ä¸îý³0T1<1h„acî®}íÕõÑ‘·ÏWø`û쿾Ô+JV®ilÂ<‚‹ºÎð±1_Œ2tÌ®‚R¢‹œÍD BHýŽÞšIì#Øp­c§„¶x„Ñë3Xn¯ÒD‹ IÙ·p¸;Áu꺅ëÄõ ®×-\'nÇõ“‰Åâ¨|1PUOÑúÖBñççª\­Ž õ¸¨¤otÖÖP°cŸjøè Þ^œ+ûWëv]×[Ô±)ö(‘ÍVÆVRÚÎáÔ9aÞx*'*mU¹«SMÊìÑ+Ú8æt<´`–W“-,~ÂÁsií廜z°¦‡9z=âç¼FE‘«È.§Bõõµ ĤµÏS Vm°j£*—è}†Ÿ›-¥¿ÀÏì¹Êø-«²†rYN„¦OÕiû‹Ä¸^@ìíüYU…OË ÿ‚.:ÐhÕüª¦_ñOåÏ”·¤S'.ÞE îïÈuáeä¶òŠa†/n$ I±ôLÀwyC¸[6Ã8Í"N3y
+3†‰qæ-ÝíÝoIªGr?îÙ:™ÂÏ¥T£¼F[šli²… ÚÞ¹¥Ó¾/1×VæÊvÏt‚æ'ø?÷™Ô“E“O*¯qdY`Ê*ÈŠ¶¨a· –^ûïàƒ)NÆþRVø" ®¶ÅÆCg¼ŸŸ‡bk°j««Luß…Ë¡ÓÏ^­+Ñ8È-$ï@#Ç ™Cù"Ä{„xX(„D
+ýðt˺e·OWˆï7¼îGÿcî7ä=£RÚªMÞ8qˆ®É•°]^bÜàæ1f|å#Ö²
+xJ,ˆíºË³:¿zcvÿqŒ ÇKà8JCù²Þ]"%Úö‡JÁkç»G4:ªíÿ¼Îz¯ "îf{4Nå­Ùk¤3ãmÅæ/_noªØ=OØ=ï¹ÊY…-" Rû e¸7ø‡ÕÆT»ìÈ©EAÂc« JÀL@œ}÷ ¦U
+˼l¯ÌÉ”;WcI¸Žeç1‚ÄV¥C˜’Vip¯
+IV:R"“Âã[+ù?
+endstream endobj 914 0 obj <</Contents 915 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 915 0 obj <</Filter/FlateDecode/Length 3126>>stream
+H‰¤WkoÛÈý+ó‘¢Y΃¯/âØMU ®×Rº@ã `$Êæ®-9”ìlÿ}ï¹wø,ÙÛ. KÔÌÜ÷¹g.Ïæ*á¿öVýôq–¨Û­úinþ(£æ+Uê$I-(Ušé,IœÊK£M25P‘Šç¿²„‰„$°µP6Õ™+Õ¤Huaœš/Ut1ŸMYàb®¾+WzMÊó‚¬x·…6™2 )Wm­~Qku6{ÝÖC÷¤3ócßEQ|´‰øøEìÎgd"66J•7øvꟲ cy¨›(6Yd㉉¬<¥ñ×ùßáðÏärj­ÎŠÞe÷ª·pt?,}à]4 ýéX¿±º|3#.?b(=b(ñ7ñÈ–-mFéOÿC¢ãÐI‹qL›ÁJ^þ‘"§C‘óEãp¨±ûÑÕÊLÑ{®ŸSÏø®QÇ6N£-šÍZÅÆE”\ßU?Q×´Íçîë
+«ÛZ1HìPþà§e¤èý´/Ü´%Ÿ‹YŠ¹óóCœEÕcõ­÷Íî?±1‘ú[U»ÅVÛäè $Ш‰ÑÆS:ÎUtwm”9í½Êó„
+nHÆòA¹]lú¬ÐÔ>Ãvê(oÈúR—6lÚDç™ìšÒœÜ³>ÇóÉmÂŒ=­Ù•™NOKŸOì)‘éK:¨Qž¡2T"ož]‰þ2¨0IôX«Í
+Õq‚Ží¶º­¥F_d>ú„SR0Sê,OQ­%)Áïr®÷ßèÿÏ)~\ÏL×Í®©v±I£f};Ô[ZL¼-á­×95CWyèe¤ÔìÇ;5{‚/‹0Toñ¹]=Ýú¼
+•¹8ºk,¾G ð¢´‡•n›øÈŽ;§Ãÿ iëÙÏnÛÛ±hèS¢´ÛÁé„fq×;'Ä]™Êqç…|pBúÈî ÏucC™!›è1Ü`cgeA ôñä0êVËø·t(çË8šn
+¼Ž'Tb;Óšž+¤™N.}çH8ñjóŒ¯VmÖüsŠUµàäs×A®^ìÉ
+g(£5ò¾—`Tt'g—ð´­ì=]D|ׄ,x˜‰ú¹‡‹ŒË²·1òê„’>ççGr.èoëûÍ¢ÚÕKµ#¬®Yß™ët•a22ô.à¸a·vÐsG>4›MÙ”¿žxE*ÂÉõšOñ
+K5ø{T+´Ô
+§‰O¯pÚ>Á äº\óCÖÎS -P7E6bmŒXD%¬!Àœ\"}"¿k«~)n%åj)5ÈÖvÎÞ2­ªú´‡{¥'{œ›§ë¨Ø,k‚g£k­>Í8Ù„ÇÙÇÙ%ÁêâºWf ›Ôt.ŽP×%âø@5aAƒu„OV>cû¢¾‘Ç“¿ÃÇÞc­YÐcŽ¦ày‚Èâ4‰Ó¯2º•_h
+ï¸ÅÔeÍ·ÁL¬›ö7>5É´\ñg܈0ëWÈEb“ˈdí@²Wá†õQ#Åà ‹ý‰ÔI€—3~Ož°TˆµŸ
+#Þ˜áZn m/˜L®Z×;šDO±¶×…É{Ö¬JôJˆY,=â“#CáÀt¨iº˜6í²bF«G£‚îq3Ây?Ò˜L->Ž½ë¸zÙt¤Ø³Üvñ6⇷‘¤g0Ë–3—…øg ¡õ#x|À¨äÁ0Ú
+endstream endobj 916 0 obj <</Contents 917 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1510 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 917 0 obj <</Filter/FlateDecode/Length 2920>>stream
+H‰ÌW[oÛ:þ+|”±JRÔ­X 9 Š,¢'Qö<¤‹…b+‰¶±ìÊvÛüûRuaÜËvQTV4äÜg¾™³œqú×<²7ïn8{ܱ7¹ø7g‚å, 8$ÈX1ç!K2„’Ç,_3ùùè†Ð78Ü@Ò’É(ˆÃŒ-Ò(HEÈòó.ò›Kºp‘³Ï,ÌT
+"6ã>`Ê]Y/vI®ù fÑý±+fÉI/B&:Þ6£© b3t]Ô¥-,Jͼÿº9I(+ø±vŒQê‹JNrQ3œIF¶‡ªÞ‹¦Þ¶dE½b}ä†B4ïtjN
+]"FÞ‘„ljy7PoÊ{ §~¯—ø,ýÌëd
+¶*wKÌój«oj|Z&)èPYßI”øžN"gÙLLú½©öÕ²x®0r"gšŠ“_ÈK¸­;™3/Uõf}zÍD
+xL¥Üy§¾H½Ý®z¬Kw
+º<•ª ™fàÄSÒ
+S”QL Ä©
+Š'Ȇ´W/«,Ȥ!Jh+±¦
+•Ò]YŠ ê$Ç™“Â4¤œT%’ uS…Ó˜‹Üì f
+Ø©Õ+I£•¢ óçλxK¤dÞÅõ)ü¡¼œ¤q¶€
++?‡-ñœØ¶%ºdùßàöGo¹©¿ ‚eCJ8Xï« 1€#^]<Ÿô7S­5ò‘í·Û7> dûm¯j|}<Ñ÷òlmîàÔ¾lèÒr_iìªÓð¾X"õÓ#LÙx¼^YçDÚ ‚
+‹.q#…ù´
+#$‰Ü<à—Þéz ·åñN¶€…hkþ?WK4?í)56ðVûŒyÀ×þ³¯åOð¦ã›m],­—ë½vPÉ® mÓ†¡!§¨ç4×&ZÆíü¡Ë2ÃTèUO[€I‡œ‘gŠ¦lØŽJK/¥_@RB¬ñ Æ ‚5VŸ˜„ƒO³Ù’g+™¡N¤ 7­^¹
+ü6qgF9¥
+îrúŇô^¯K‰ŠÚ½îe­ñº¾u§¯VUƒ›T ‚/bhu¥ölõ|Ý têGºG¾ »´8à Ü;Lª)ÝÖØ<¨®­p$F O¹D ö¾D]PÿâÙR¥?¹6ƽú¹ª?ýŸêÚ;ú–Ú³€öLÛî¯)ÜâÀXß3ŒfI黧,†P>ãïÃ7–Îp@2þEøŽUÚǽ
+úA¾/¾DXQØeú€€qBÊh\H:ì3 ÕbÞ Æ¸í[Ò žÆÝæ…ÁHÑÄ a¸í¸Ô!Æ‚²¢^‘ls«À;ôŽÈ·œ
+k$ûÀìÚ™ÖÙðóÎl¿aÇä®ï›Åx0îÆÔ›r[40hù²?ÔƒFN›#éò¯kêQw¢ìz'5’ßú9oÕÃw(™hM/ßçØ0¨÷¼ƒö@/×€X-ˆâ Š
+;qÉÔ¤xjã¨7Wxà x«ùÜcŽi©opܳ‡ªe 7±#Gcj+œrbì/©¶AgûÌ|@§»/q¦?ê£ViRò±Þ`NÒ»ÇáŽó•© L¾bÞ ‡ívÓh›€ÁxÂíÇ.}Ӯ⫼ñ­Zcr¨ø°ÝU8iX¹ÆnŒ§öå¸óÒ N¥VIÏ –ͺF(ùúœ­À%i­}iB¥L_Ú6¥ölYc$ûhÜ_Ãt‚BæÝîŠÇòíì
+8ŽØ„ãOb·%ÊšõÀ7M
+r¿Á>r?½a“²šã¹™ìg;Ýu]1rdb!5RÌYóZ~>@¢e¦¹n&å‰5Úê™\³+¸Ñ¶X`<ì±Rè<>Ccúʱ’·+Œ,í*ôº5zšß².ÚûCKB¶Ú0nÆe;n˜†uß°ëO­(C软<S=§G¹êÇ-°ëÑ|¦G·£:tºf§U?±§~ô_J3Œh"Õ'uÇ<`Ç\WU$Xw½»`¢£Á®'ÜpäÛÃþ‘¹‡ÇÁt'ÜkàôÃþnèu´JÎlèJ[øËnì}ÂFÐRvlm°'Ò#kÃàèñµAeYsçÚ
+NÝ i „n STÝ® NÝ&†ÀÖ\ÞÔ ÄCÒ ééàÖnn
+Šd¸ÓÁ
+ÒÂYXäº
+endstream endobj 918 0 obj <</Contents 919 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 919 0 obj <</Filter/FlateDecode/Length 3451>>stream
+H‰¬WkoÛÈý+ó‘,"†óà+(Äë Hݦ¶Òý…,Q²º6©P’]ç×÷>†Ã!)ÊƦBçqçÞ{Î}ÌÅ\Äô¯Ùˆ·Ÿ®c±Ù‹·sùïXH1_‹"ŠãDцB$i”ƱY!#­âTÌD Âùè„ä1œÀ¥¥PI”êBÌò$Ê¥ó•>ί?Ósñ]èÂD <ËáÇUÉTÈ„‹¦¿‹J\Ì}mP¶2({Ö^óÔW‘EZUÌ:~ã{ç×pE(U#ñW‹òDÊÀD±¸ B™*œÉ Æy‰£$ü×üo¨ð?@åD©(ÍÊú¬¶¨hßtz ]0³aù‰/_ª¨xÑ#:;qQrâ¢ØÜ„Þ]ªˆ#é¹?ù±ŒáE2}›€6Ý-Yñ“äl²ÏÃcý)̃/_f°Þ~Z<âo‰86aìq°­+J€sM‹~,®`™öÝ— œÝ—‚H¢|ø3‰¦¤q¤À”4‹^²D’%dˆ‚âÈTq†|þøöS˜M}܉ߥ¯€Ô`»q*¼¨Á00¸3\25D {…Ýó×eÿ"32î ÂPîËjÙ³KÅ&R?aº²g–Òq”uW¨,2/šÅàõ/"1ˮզô/KòŸ3ÏŸ7'K#ã!ÆLúJ]P©Yà 2ŠD… žC»R,ª•èë_²ó±99d‰e'
+ØÔÊn ÞL°¦/«%~Ë°ÜP&àÊ;Bf¯15)ÁbF^—‹ê° ¥ –ûIËH¦>!3¶Ü3lUî—ÈóíŽ×~=“ d¨¢Ë$F¾&“¨Ñõ,fdÒ/Íö°].î·ˆœä¼@3iö¼„ÓœÉ&yiò¤3ë5ÕëR c|Ë·àC(ó`¿ßnªrš‚SžÊM”8ò”ò`J
+ʃ@œK ù‚>`Êz°h xòÞ²N¨µ9{ØQ¡ì¢‚´’òª49XV²@‡N.§ÅäšÖ22“«FfQ>½šAg•N.·O,PÀC™FÓ¥
+K³wW©DžD5!iך×ÑؘS1ÀËÖ·q¯Þv,ŸXnY>µŒ,ŸX³,ŸXµ,ŸZµ,ŸXnY>±<@³[îjî˜ÁÐþqöÖ±Ãã[ðûØ㢪TRóº¡Ì‚m8SÁ³Ó¬m(—È©'øÌd$ìù%ÆÀ«è¡+£®ø£Ú 1o]aœmׇf±^C’Áò—ºz„S3:5ÿ –ÇCS.œ$”§Ìc¢JìðI¼‡Zü‹_uÛÌ:]R§9_RîÀÞî+»MÔSÒú¼ÓðrÛ¸:q;Ê%VZ•vÛÞ‡2ñ4V~N!±1:2Ê:âóoóPÆÁG||
+ ®:÷iwÕMG`à¼@àßn_æ6Æ1<·
+…H©Žð• nË&”©GhDZ¶Õk2GÜÒíz‚«òÿ¦ÉG˜(‡ZáÞEG(¾_¾ÿ:œåЙdÁˆ'©(—|ƆŠ…Ø• ëU'ŠÝ•Û"'¹+ïÛ×*‹jn!1 yöA+n‚]S?‚Ô :Ε8´(31”¬êÞMª-§ž7ì)°V~ì k7›ÍãÚ—T8u§sëò$¹!OjðäMø†•Yñ¤ÓùöùŒ~}O´ŠŠÕ±±ê±C+Q£šÖQ8t[;Ù:w²•³1I
+N‚,êÜá'_K›ÅP~g`ðu¿Ø”ï†Í˜UÜñMrj¿‡3ü¬ ºÚØUDô•­Šä
+?ÇyéÒMaÛ–u ßG«Õ*‚§P%€UÔ×ÁÐm€¯T=m“®ü8û÷ô¾³‘° DOPyÝ¥’fÏÞfûg^&©†Iûdªj½ãœ‚È ˜øw´îKM´K«ÙØEkB¬ÆüÞˆã®Ë±Ný…½*œ8Qf¬ ²D¼äL½@ÏbQ­Ä ‘!´Nè‚Ð`Ýoð½ Ñ<ž±ý‚r©tp8à®-.áÿ{†
+ÈÔ«ÒFAÝø’\zÛ»kÊÙªôB§_’ð˯y™ê÷ùû-$„hFR £w]‹ì×ÖA»×k·J®ÎH‚Û¬Í×>bÃ$ªú0@ñ¤w«[ü§Òºê8ÖÔ]ÖXÜrò8£6Ùëµ€fÛâRv¡F‘º®Ó›Nõš¶?ã¼í
+é]¯ÕíÙs£à¥UW¥¨±jôj¯ðs™*V?@°R&tÃÖÞ%Wo×(Ÿ<Cuä ¦!έ+ñ ɦVlbÛ¼u•o²—òüròMgº0J[
+TþWö /FÚ’*§±¹gº¶Ìå\ãbÇò   ?jÀè'¤
+ZÏYꑾ<®6¯ŽÂÖ -‚ý€"võÑ•žÜHú!ðÝfâb»ÇFؽ—¤òû%päH1pÕ‚ȇï ÂòeŸ·öu™º{~qA÷µìË‹q Mm©r’OŠ_‰† Tò¿`1eOùpÄ™L¡à—K¬w_ñCÚó$oü)±‹Ý<ʳ„›à`šŸ3ÞÖ*† 3×Õu€qxï"‘àØÑßÏÐoôˆãwñ©®jYAý
+äñoÁûK(;åýö‘HÞ<S³öwè´x»¬°^gTòÿñ^õ<nÃ0ô¯xô=òeÙÊœ ]Ñ¡·¸q)pȵɵ¿¿¤(S”b]:u‰È”ùñH¾×À¯XÉÐÐ,6³ µK1¥z!4T¨üî×r·Ý2€¯Ør‡kð{àvmÿsÞPCí¶¸®žÀc źHly»8{|ö!DF Æ´)¿'UÆœ±«¯oóŸ„Êèøµc”0%„cX „ÈKúîUà+JŒ7q»æ4JW—ž…žøðë±°¦€
+jªøF˜yþ=]¦3Ñüù(/ì9'+k(Þx íeÓ˃'™â
+]X£›‡µ“9€èÏw±Ä‚3Üè¸*Œ7•<DÞ«P"AÿC©XG6ï †8TŽt\ FijPž ³nÒù룘+—~Uî+^)9î#×ëî½zŸû hM–û ºÒµ§ ª3póÊé`+-,=/Ê™büY_#C
+–ž2å,ñxXNµ­"ScóvÆâ_þØ
+endstream endobj 920 0 obj <</Contents 921 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 921 0 obj <</Filter/FlateDecode/Length 3551>>stream
+H‰¬WmoÛºþ+ö…fU|•T ’¶È:à]ì»}h†A±•ÄCb§²´ýõ÷œCJ¢,1IÛ‹¢ã#ž÷çáé‚eô¯¹f¯Îæ»Þ±W ñ¿Œ ¶¸bešeFÒ%36µY¦X^ŠTÉ̲Åã,YüŸv·#ƒ(Z2iR«J6+LZÅ+Æß/æhÃûûÂT©SPžpŠ†í²H…e"嬩Ù؆.BkP·Ô¨{Öó84Ñ©ô6ÊÌÙøÙ»˜Ã‰Ü0-ð­Ø¿Ýi"¸N3vÁa¹Lf‚gø»À•Iþ»ø'ü/0ÙH™Ú¢3Y=i-: í>²ŽÏ|@œ~ê2-ŸˆÊ'2eú" Î’e–Š üæ'r:ŽV„>AÙô§äåK’lú$ç£$‡uØçX%ÿô Ó ÞkÊŸbø®1Mbøëí†%Bq®n³Ÿ±sÓw·u…¿îjFE"Ãôç]±Y*ÁkÀ£ç<ä 9¢FŽ :rÄ‚)#Þ¿:KrÞl÷ìcuW‡¾ë΄g-%Ì)8:“³ ]Âj* „Û‹—5åð R3rÞÕ›åÀ/™éTþ‚[´ÿ8”·¤ÊÒ¼?Bæ©~Ö-—¼áA¤æø ójs]‡‡™â×ÜÁýO»“ÛT…á$}.K}SÉQ-:…ÅÈöЂKTÁïkVmV¬ÏÜ𧻻SÀ”°¨ÛH¨¦Vwý¦ù=Ýz³Äg”¼;`6É¢/Èü%®Ú‘NÍÈÁy}WmöëDh¾ÜE=#jBgæ;xàتÞ-±Î×÷NñvƒÏÀ% ªì'‰/™$rt¼S3rém³Þ¯—Õí3'!sA£i›ÿB]Ân7É¢u© Ó»õôšÈèŸò™Ÿ$¢à»ÝúzSÇK0©B§ù¸G‘’AšLIs0‡ü ¸ru$ÔÐ<Å@¬ Q›'7ë2-¥J+ÖI….hoD,E‰Šm•)%R•j‘§E\š³²QqëpDü…@„r…® q1O–¡ZðTb4°H!fºGv=?9e÷U23¼¡ç>j|ìéÙì†pjhŠz«~NŸšACøý2ºßh?isjåöA^rƒqð4º“{½zP1;ú 
+jv·Fþ×i°CÙ¶GÔv†-À‰Ã†ÊxeÌhµƒ:zŠØå‹‹¼M“¶\Ž«@]{€5ü÷]u]¿ž,bÝ]×ÊÀëmy»õQßSNi¹ÝT·øfî}¨_óëË[w&ÄØ»y —Ö=Ã0ï·°d·< À× ÅWaBˆerŽ¾žàǧaÉ´áã´Î10‡Ë+²—ìÛ>R[½Ý¢F˜%RòKWPÕÀ«dX—Fwu©E—V¬>Å;UŠßop?˜“"œPXä˜òRš¬»0ã \@uÁð»¡Ýõ†Ý7õŽøY½q&^$¡®n–v€
+íàÏ5•²Û%µÂ?ÉU÷¬›zC¹ ¿‚Õ7,:ïÏ!M'8ÍNÙüäüþ_asßnaõØ“IAy4£UWU> ¨ŠbµÁU…Quw/úq»Ù¥I«q‚šk ÌëMølŠÀŸR?ä`xL¶­z"ÓBy‘Ú8ÒÛ¬¾×¢¢,ð›ê£rõq9€}TèÐ>*vp;¼Ê=àGå_ˆC
+x!ƒ”#ƒÒ$þÛLôix\¦òîQn)t#‚xã»i9>†øÃK}ú®ÛZkÊ,-ºKÙ}ÕTwõ¾nèrÖMßðšT—mA©4‡9‹Æ Ù„êÏW²7‚`𘂶ßÒFú$Fþ~-Z}=?é:Ù9æÇ:~ÄOç0oa,zeV÷_´zvop ±‘{ƒÑ ƒ8¤ð^Ah=¯kvY#§ÁCD9Ail-gˆÒ³Q^c³ð–ûc¼fZsKn†šÿDrc}¸¡ÙnÒ+‡LQ^3¦T4òë½éˆw~w`JÞãY1†%áÍ (s+¯ çrC6}w–]÷ˆPë¾$”ìÑℾ<u–´„h÷,cq† 2ìIê2‰ƒ-u9#{M놹p /0=+ÈÀ3¶sÁ]\†álË!á€O7HIØÕºÁ÷«|Ï€ ¾\ð§¦{ÔøØàc‰5RãGÏÂx›V_cx†gb]¶„ï¾¢eES8>#ÀWL.‘£¿æ‹gy!3“t•“uI™†^ìã¢xô>}z€d…^#pÆ{|*%ž"oLì7*ÜÉìƤu£Rº1±Çܘx8¸:È ju¶²"U¶\oXªMµÙ]A;¼ƒÚÖV}KJš]yfùÛÙújßTWWkÌÿ¨ÿHgýÜÁÀJФß7uu—”P¨
+8C¥"àà(Àк1⦉3LCŒGè+LÒW$Fk¸Ì¹ßþ®ÃvUÓÜ©¾±+?Á]ž‰#¥ñˆƒƒÜÙ‹×"™¡a^3†NkPÇóñÉ+˜ Ç.À>{—‡þzä/Šl‹(â¼±èo‘0ÞÁ†U·•´£tZ ¤áîµz"Àä<]g4É.¶:4ýuéš.¬h잉±£dJp¬[ßJ—%Š¥ncIw2†H^[þ·àž’3Œj9›Ðƒ75+tY²>>›PYÙY®ŽCÀ°¤Ú8ÔW.ÿ
+ˆaµë炶­=ÙD–½±Îa`í×X¦w´¦Úi`µÅ,Dx>¼Íê~è5ö´©¿<TïÃ2ܺNõ%•@¯äÎg`Эý¢
+ìú†:é}G¥6ÉaÚ˜lÛâlÀ,`jZªº¦,ŠÎáœqجqäíÁ;F«tÌë#?Ý´
+aŠ|ìç]Wé}b™»Ø×-ï^¡o)if/c=!²>ÃzŸ>ÏzŒ°in£¬4¥:ó A ª´'*÷¼'.â:æ;ê;î•{ò•Ùê;Qè(ýQF€ÞþÀBv³dÿÀT|u»F„º›™9º…´Üâ^M£¸[î¿%rpÁ]/¨ž-udéÖË¥·M À…[ˆä"ïÌöÚ\ú’Ks!¤
+,°"UUÿ{ç±/08®ä‹±Xfvç±3ߤߒ/kâ·0ìPÂ[ðÂZÛawÿŽûs3VxÂwÚ¯ [Ù/Jø‚æ¥ÄcVŒb´ó˜ÄL¸;Ií‚"”Yú/ý3Á˜Ú$@h¯;ï`E¨…!?Ò¶;bWétAl$÷$W(0ËvÉ/œî O¯ í?&€s¨¯¯©Ð¨µG_LW^"´“ДOc7ŒÝ™à„—7ÿFÎ(iTD„*6ÑTå0"í*—ÙAÞMçJÿMóÐ@dZhN2nï'*Í’jõÏ
+ÇylªÉç&jºô*:ø|q |â¡gàÛñPp‡Øù€`(€ÁF§~åzøËÙÒGPÅ'‹ÄÖդéqó½p©Ï·ƒ½ëÛ
+Oq‡Qce¹4
+endstream endobj 922 0 obj <</Contents 923 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 923 0 obj <</Filter/FlateDecode/Length 3861>>stream
+H‰ÌW[oܺþ+Äy’Š¬"R¤.y8@.F=MíMû…¼K¯·]KŽ´Žqþ}g†¤D­D¯OÒ‡"ˆVÖs¿|ónÍRú×íØëW)Ûõìõšÿ+eœ­oY•¤©t b*Oò4ÍXQñ$iÎÖ÷,bñúßtƒ›)Ü@Ò† •äYÅV¥JJž±õ–Eë«Otáb;±¬’ 0/J"áº(ž3žsÖiöÖ°wk_ä-$ò^91OS K«£HŽ_Üõˆˆ¹ˆ“3öwó!‰y$“”]G1Ï#¯x”âwŽo*þçúϨðß@e%D’—ƒÊÙ³Ú¢¢SÒíí¢•uˆá¯|þ\$ÕYdÅ‚ µ (•×±'KTiÂ=÷«dxœ
+â¹ðm‚´ñ,ȳAcå,È~Ž1Î>ÆEôù3†¬—¿Œ}Ç_qìbõø²oó,çJ?¶¼¨È.§)H‰çU£¢ÅLQÃq¦)dÚ¥>èUë5£\¾&Gå)\æ,W Î9=8éAjd35ù+‹->]¼Fuíãû­¾×Wd9FÉ©pVƒY^'2#æeÏ%eŸ!A÷òeµ?DlfÆ}Æhë^7›‰]"•‰ø ³èþ©+'f‰,MŠQ„(yÖ,¼© bs*è²nvڦʟ3ï?oN‘'ÒK„ô%51–„˜å¢a¸ŒìµÉ£ß㬌4«›-#7bx—ssJhF9òV²Éñî üetKOóÞlð©ã*dÀ4‚K¢²x‰©ùL Ãffà•¾¯›ã>æ2ÚôAˈg¶À3µ<1l«û æùþÁ0n|z&Ih„ÕØI$I'3ñ†Í̤÷Ýþ¸ßÔ‡=FN@ä¼B“yñy ·M' æ¥,ÕhÖK†äB¤€Ç\Ê×èmÌ˨ï÷»F‡S0ä©R&Å<gž^˜TE}°€—C¿ ˜r{B”P<å„œ)BPÏ^–UR KÐVrC岤»²à:4HΫ -Ëx"ƒTÉ‹¤ S
+ý¯ˆ‡vS)¿¾ÔGýl€g¹<(QׯQƒ|ÙC·o»¡!f…mˆ^ºQm*Ãß°† ‘qŒ6&ß_OÓ—Òþ\S•gBAèõ4KlךÝhÜíŞ@Œ‚„óáXJÂp‹‘j0#\/P™p^ú
+qÇh›uã¡k]ÀŸ&zŸ¿\ΔôtæråÜåóý‘’¿Ñ]}CozR¯$„¼04Ò×Õ¸¯sNëÑ’åKF;“lB™¼°¬H XÔÎÑﬖ ü±p”ò¾
+Ófì™°RR&þWGÀ>ñ*ƒ$„:¤7<ßãÄg ¦°«ìÜ\üXQ¿é¨GCA<ÀŸÇ¶Ã5^µ›#â‘diaÆèûÕþöØÕ··p‘G›÷mó¤®ìt}W^{ƒ £Ö2ȇpøù\üö…Rþ/ˆz..ßXšçC2ãÊïâÈuÔ?h-ws÷j46S'efõØü§A„e
+Ò-Ì
+Óg‰hÉi…Éjéké `KÁV¦80ÀÖÕ~×Ôˆ› ÍÎCòtoƒÆØléÜf@fxùÿo¹¬ö¶UXnÁplÐõá€ì›Ý«i]ñrn}’$£Ü1uÍT
+ 鳺fJx€ø«+A á WÅ"žsKì”=ûDÍ‘ÐuÌMmÛ¬€®c†·k°â¥Ó{ºÙÚ á¡ÓÜv¬©GPƒíÖéˆj˜lÙ¬sýÎÌ*Ü$£ ê=Ž5;ó{hÿe½Úvã„è¯ðR‚À\¢*R£TUUéFUÕ¾@`šfIÙ%Jÿ¾3ã+Ø®R©»ëÅŒíÏœ9÷ú„Ø
+j1^l”jQ¹4¸’¼²Êæ ²œ ×b;"ÔÕ˜"ðe"Ñ}Se“À0ø©™âRD2©¹x
+`óL
+XsÏJPsÏ: ÍhI—¹”'çï^"F2ˆR×—Ý34‚@„+Lî†òè‡Ããü\@’ Gã‚ù1Œ©´(˜æX4µ Yœ%>0Ä#UZâáò+lü¦Áq Þ`vïÛéTyÅÊÕ‰„?Ÿú§fjŽø~¯_v úvjv»éÕÝå0ið/”Híï$Öðµs €V竳8 ðáz×€ò|\Š7ku»Âç´<IDæDü¦±6p 3+À€ÞOįFòZ¸&ß"É&4p'UÛîš@þÀmh,?\/}•úZËSI« ÍÁ¸£NAb †¾ èÁ}¿¦K<Øe`ü‚]d€Jàÿg\æ‘kX9†Ç-S î ÕQj›„¶tBŽæ‡XG×ëfò z” íosÁÒ–·[$ ux 2Òýg4 W)ª”)z}»Åˆi$h} ÙRàÁ[p壥öV-ré©%é{~°ìS?Ñxì0FëE_ÑÐtg!C…xé¨'>Ów'b¥ü—·ë—E h¹<n¯g­âÚ©Ør)SÛml—¶°è¼*B®81Îø:-&ߥÑÛ×õ›UNÞšïý™“º¯Pístša5‚ÿ z52«˜ArT¡Àb¢!ˆ·4ÂÜ7jî’Ær\‰EZOD^”%:.†ý¯V-Ju$f'‘[¥ŠrÞW`! ^V, éf/Ð~ãÚr›ÊŽÍtJEÑ0ží,§p}q²pkå{7RÅì
+ù ã@AcZ6ïì;ݼø>ªÐfgìN&û&œüÄQ™ê¿ŠX†´âoò²›5H)JẨ[7ØdÌhbMÄ€X'-|Í"בŽÃÛ»þO4´¤‹ŒÛ•á|~{ø~ÀÖGª%ÿõPß¿RÔW¤¹ƒî…mj5fïü˜åÖNSÿ£¿#)âß«H˘%ν4NñU/N¡ñC¯åÏÓ:‹KçtU7Õ¶‚m{ñVåä&Aê­m÷Úâ|¥¦ó:^—õ_,Ëš‰y`µi˹¼×§+m]KkNö½Ö9„™éù¢Ä†5W~óMªŽN/wÅå‚ÿ²óÚú
+endstream endobj 924 0 obj <</Contents 925 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 925 0 obj <</Filter/FlateDecode/Length 3173>>stream
+H‰ìWiÛÈý+ý‘ ,š}ñ0‚<±1p€õ:3r'45–=CÉ”äãߧªú`óÒhíýMÃT›]]w½w1g)ýkîØÓËë”ÝíÙÓ9ÿWÊ8›¯Y™¤©ôAÉt–di*Y^òDŠ4có±xþNps"…¸µdB'™,Ù¬ÐIÁ%›¯Xôr~ýŠ¼œ³OL–*áy·(8.Š„gŒ§ œ5û•Õìbjƒ²…BÙ3wÍ—®ŠF¤ÕQ¤FÇwæÞù5\si¦8þJöwó"‰y¤’”ÝD1Ï"Ïx”â{Ž+ÿsþWTøo ²"É
+¯²<©-*Úu îiͬCŒ|Êç")õˆÌG.Ò#¥ê&îešðÀýú;.22úñL†6AÚ´·äå9AÖmóAÃ<lc,/ã"zóà Ö+ŠŸdŸñ·Â86±Žö¸Ølkss•‹~Ê®`›¾»¯øv_1J†?çhJ–&LÉ4Xô˜%œ,!CäÀG†d Š7äÕ˧—q5Û㎽^<T¡\‚íʫ𨃀½;#„‹gŠÒÂ^¡@÷â¼¢ì^DbƽÁ0Tûª^vì©JĘEçû®ì˜%dšäí"OÔ£f™àu/"1ý‹®õ]^¦‹3ÏŸ6'Ï$BŠô±(µE%¹hŽ$#;@Uðè[,‹hW±E½bm亗ÙÅÐœºD†²µ€lr²¨7­éiÖõŸU\FþpHmBæ瘚 ”0b^W‹ú°‰¹Š–ûIËH¦‘™Ú
+öKÌóÍÎÞÖø LRСʶ“(~N'ƒë˜Ii6‡Írq¿ÁÈ ˆ\Ph*Ë /á´éd“y©
+ÝšuÎô‰ÈÞò.zó"Úï7wu5‚Sž*T’3pà)„I—ÔsqÁA0ô z€)ëÞ¦‚â):ÛR´9yX•I)즀¶’™]®
+:;±-x‰ÜÎÊÉ=)y¢&wÏ“bz7d•Mn;ƒ'¶?1à¡\¢éœ_ôÉÔ VÂ¥ž’ ĈBõÑ«çl·ˆg:jèù€
+z6ûî8ÕÔE­Vß3NµíšAAØóbò¼V¶3RècjiÎA\r~°0Úï[¹àz1ë}P€@•ÓE¸„èçxÞ%p4we‰Ð|¤Ì„b 3¯Mc¥ÆjÀl[ߦyÛfùĶËò©mÌò‰=›å»6˧vm–Ol»,ŸØîE;!Ì·`>Ó²eêƒð.úéå×XÈè
+4ŒÁ¤,M&ýÒÏEÒ©huB©½ü|qvز?£õm3kmɺŠ\W;PÔ­ÚKÒþ¼Y¬×0Ay´|±iüRû/ª%NXvŸýsmm
+a%±¦Rd¢Dn4}õzó4z‰Èÿ2VfqÕº_r× ðš'iŠnNí/OÚýwPKð}–Ú_ÿ/ígQz»:údK“åJ \*SùL7GE^˜.r¨éóë ’LK£gƒÉz©šqÛ¥:BÙœ$¾Ç¾º!üJ€ÿg…WèÉN*î³F+Ìàƒ²0é\šp€˜,ªWô³$‘³ÒƒöÆ#F/ÞWmŒPi_¥©‹;StŠ¢> <º­š˜gQp6óÙ¸]“9ì–n?]VÕ=þM/?˪y¨~»hÎÜ/•¹ÿ:ž€Xòè .Ø—˜ç‘•K>3†²ÛU ­·«V”qWa‡7h½kŸSÕÜ@@ó,Ñe7Ñ®Ù~©y„­äà¢ÎÄR³ª7 7foØS`-#ýŒ/¬ÝÆl³Þ†’J¯³luv>!O’rð$4«æ&~b”Y™—^çÛo'ôëzÂ)ÊVÇƪgZ³-ªi…Kÿi+[^¶ð¶›˜hˆI‚ ÄæpäXo _RB1\¡?žÑ_ý O‡–»”‚ÏŸÆ.‘“8ìUai¥°K¼Ý/îªgýyx—"LÌ^ÉM¹³_ã™D›kF‹¶µ¤œµ-ÏVØiµ¦,ó5ù‚Ö ¥ys8YŒ6¶~÷hY}:.îq ‘k(\L<‰»uà«-üš]v‹] îÖËa}+åâˇ_Ŕ˥…ë-<\­bÔ¦Œ¾ÄBG5,î!]7¸øH·mö8tB%uÛÛ†öï‰]vwõ‚Ú =@÷u›°ÍÞ¸ÝØ? òµî·†±‚õNÁÈ!0)]½_¹¨ö„iék6ºhMÚbóhØq×p¯>&q§Åk/J ½ lF¾0m`¾±E€™ûhåÞ0ŒH-î~³€çmŒV øëð G>´`Nüjƒ›GøÀ9Tá¸^Fgw¨mMªV»]w®ÏQoh#§[Ô]/4·Á$`M—¤“û³¤ê£`È\Þ‘ÿÀ‘+¡Œm}¹ÒzxÐP€q´ªJ•5¸©©>TK,žÃô]@(‘ŽÞÕrY$Ù4wЈՕc“@'‹w˜Ú¶Üar¸ÃÔžáS»†;Lîî0µm¹ÃÔö;”=JtZ€O®»Ý¶18:¨¦ )‰|H~Æ涠Öô—›‡ãt X~ yHÇhÃw±†ô¿†5Ú
+JÑ°ãïKôX…4¬¢‹zmÚ‡óéíüê9ñÚŒM?‹B ®=oà#¼áíoD)p Ä€‚ œkzñLys=8‡Ð0GRο½·táCøžY<Â&BÚc™a=“¤¿n?9ê`¥ãR¹ƒ%›¡3xŒ8•g}8b` Z Púź,àgøÐÕ)È몰X-äÝ2õÄ
+ð_a@8ø°0_š²;bÙ=àß–ÈœQ鈻.64ŽÙŽÓ–P4W-4/A°Éu„æÊó-¡‚{x›å]¿Öíàÿ=а,úˆ£#!üßCË
+猘†Ì]èä!óL€µ Mž
+žEôžf½D_̈²“°¨0ã¦ð«¨Åz¼”ˆJC
+¡>z°Ú:¿çºõ£r¹ÐC©Ê T;¡»{OŽà†çqŽP²ˆØ9Pñ‘‰ÖµÏ){ Ò‚EH\víšm‹ŽhàX‚$<œnÝŒ„´C}aí6fq÷ihKžÌÍ”5xÿ&>lϳ®Ž ÚLeYxÙ¢‡tµAºÎÀ–xY´¦°Êa† HO}Jƒp)‘ƒ¹ÿ«×Xç;®Çº—Ý’î#Û°ª[`ËGpmLì
+F'¾ñˆãS̃øž0-}¥þ›ôrÙA¢è¯°uCxµ´{bܘ@cdáß;¯vŠ¡j⊆áBéL§ç8¶+%jÅ–q¯¶ ÛvÁ[·´Ðms°!Ï¼Í «ŸÕ´\àÓ7L3]ôƃ¾•ïwÓ¦äËìÕ{Œê=°—ñWëB… £o^$þê¤ c‡ ³åíøH…e†šÏ'J(tW hî €}½_úß}„"zßõÀ³ED‡ˆC8¶ëZă°ó€Ôª~/ŠqibplU+l_ÔbÜ¥ðàëØúJë‰Æ%n¯s-û‚¢ÃNÕÎìÕlŠê¡u8ŽqC—©ÙU”å£A´JS§²\±é('ë ®jA¼A/s#Þ¤¨ú`ˆ“¶hÀÍtŽËéŠé%À
+endstream endobj 926 0 obj <</Contents 927 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 927 0 obj <</Filter/FlateDecode/Length 1500>>stream
+H‰¬WÛnÛFý•ŸÈm¸.ÉÇ8 h‘FDúÐ-QŽ
+‰r):Iÿ¾3³¼,%Ò²À€DïhÎ\öìÙáuÿÕwðêý2‚»#¼ÊåßHÈ7‰(Šÿ ƒØ
+E’L
+­" ùóØC:=È´ «3X¤±H¥†| Á»|yÃïrøtf‚')F1l&¤!6Ô%ü\ç~2­$A/8
+b~gèÛUäRüÓ…Í— U(Uƒ‘ô­Ã¿ò_(“ß1cµ°¦ÏEQb¥BYŒB;€“ÐAW¬ a…´}ìæ…Tn2”›•ëÏÊýäê¡ ŒˆàsJ¨p!ƒˆÖ%=Å~ñ±R¦}fúy•;ïÓÊ^å1QaÀ—JdöRå:™OŠÌçЋ¥²ˆhÔÇŠ_Èaœ’Öø5áa¢$mí¥ÍŒ‡ÍLÎ6Ó?]Ã^ê÷a|ø@ìÅê ¯ô]Ò>Öaéa{¨ ”:Àæšn÷#øˆfþÝ®,hõXs_ùÛ/R‹±‘PDÌ”þ»P‹äZfŽ¡¤Z,fÓõïcQÝ•p}x¨Ö^%ÊíWûù<ú9€Ó`þÁÓÖðÁëBÈ‹e΢8Œ“(¨,ßïwEU4tÂpFŠ"ãQÔgæ
+endstream endobj 928 0 obj <</Contents 929 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 929 0 obj <</Filter/FlateDecode/Length 3782>>stream
+H‰ìWko»ý+ü¸{m–ÏåæC€›k#H¤i,·(â¢P¤u¬Â‘|µrróï;3ä’ûe9I‹Û‚HkÍr8Ã9œ9çÅœ•ôo÷‘=}yQ²-{:ç/gókVe©½P3m
+S–’U5/¤( ›bËçÿ Ü­(aš–LèÂȚͬ.,—l¾bÙùüâ-8Ÿ³_™¬UÎ+ »(X.lÁ ã%8g»†ý…mØ‹y?ô-úžuÛ|†è\úEéb|ïö_À9™fŠã·dv?9ÏTQ²«,ç&ùŒg%þÎñIç›ÿþ„¬…(Œ !Ë£Ñb Ã¤Õ£è²™?ç_÷ýsQÔžˆ¬l¤lTª«¼·—¨Ë‚÷Ž_ÃFÎÇx#nt?'€MÜ¥ªO)²ŽE®&Eîã0ÖX¾Ìmöö-–²WT?É>ãwƒuÜå:kña½Ý°œË WuÕ/Ù;0Ó{·ÍmF ýòWe¡XeÊB@*FCFeÂ)JDNAw”ˆøàyuþôe^e»íý{³øÔôàR‹!<Á¤`ÎÁhÏŒõÊÅ"Xø-ÄnO»”ÃÈÍ$¹·X†¦m6ËA^¢T…øŽ´hýø(i YUÜBT…z0-W¼áFäf¼Ñ»ÅæcÓßLÛïK×O§ªð…-Jì¤U)^*1Á¢sx
+ê­ ³â@.i­€²¥£î2N˜ePJX-V€¹zhZÍb‰ÒLú º#,*8ùPÏ‹³Kv·Èg:ÛÑç'ühðcOŸ»v8¥KôA}Ë”îˆb/ŠÞðëEr½V¾™ÃúR©ºtë *•Æcðì<ؽ_YXc¨ïYà –Îνú>c,ŸUVa£ž ]ê º¡^J
+@ >v ›Ei
+eöl2ŽDÏi}Øiha§lNo°]­‰Òx¹š_݈róÀµB Í`èÖÖíš
+÷¶êr²½œŒêr0‰BC<»Ç,\0l™øÒõòÑ¡þõô¼\‘¶+ iP†í-–«ýtßÒ;ÏrÝw+¬l5-ákð
+r~€]+è÷Â÷{îÛAFmuìþ8ð*ù­
+.Ý¡õºa7Ïma’ÓÞÀ슃‘“Tíû¤ÝÏû´ÝÔi£ŸøI»ùi³›ùI»úIûhê#¶±4Ð,ªéL6Àh±¢¼ˆyŸ=þ…JÔ¶]PSz‡ 3žh„En
+Uñ#¤Îñ?j…4V÷êͯ%ƒìe®Üû^;#â ”RÖa㺫ŒE}•ÇÃ¥³™yF”a<!Ÿ„8áklŸˆQƒX‰2ÊÀê
+þ¶?X‡ þ@bÔãuHZk¾ß $ïIèAh R !$t0­Fú ã¬»Ü±È’p„Möš¾èwÖ8+ ùåM>P‘²Š(W ,Úi‚k<¶Û-<}Al½Aí°GMÑäB ±ê”»gCþ»jˆ?SnŸs ’¶ÓX—E Ò¿G9£û¿¤ù÷HèÈ&þe’F™
+FØ©’[Ÿµ'IšÁ«'Hœ’¦ˆ2šØ¨§ýõ˜p&힤íÀ ’FO’vÇÒfG’vÏ’öo“4J›€˜ÿvI£4@Ê=ñ qp'  ×"Ò´1Âæ`)³©“¶^ ³GWÊêÁ•0wØJ˜¿QÒ(‰Pý“4ö±°’¯8VpÆ8I°’úZBҤ̬Rf„UÂÖÁ*aö°JY=¬æV óVR:ÉUR (ò¥ ¸:ËMÖÜ®?cÁ›#-Ì-00Þ'G:ª™ÞHÆÚžyI±i¶÷([Zvqãü2ç¶?€ à„Ó†|B?úFñàò$ÒEVŸ¿¹$b÷¤ÎÎßýLÌ{Ó‰Ùʦ(µ´Èó3À=»Ê¾"¿kŸ°ÍöI< É@•Ëx ²ÍvFìyôRmüfb´Å
+‚BJŸ{bVDËÿcM1o7dŸEîÜéJUÝ-áUX@‚c½j€ÉUÀ1·Él#¯]烉m®ò‰ôRpyý1ÒKqréÇJ¯¡ÓÇJ/˜«y”òÂkÒ“^_ð˜o¼¬ºiúª)ìà16 ±pG`ùeâƒ2 pc+ÒÀ&ö <-±Šô„¿ÑyCNHôº¯›qo$áìC39&Cɤœd=¸Ùº,]éÂ+zÜĤk=MÕŸ €ÎŽm¯‘ðßoš_ï]@K‰Ýí¶„,E¼Ý<Aß]Aâ,ê‹°éIJŒÑ/-6„Xù†ìì/Z9MÞ½|ÿáߺ§úЪöyq¸«ÝùW·ðŠö™Ã“«ìª wLyŠ[e®Å¹ÆÃÃ[ÜÝE(7«'q#VS5[…ˆù‹Ÿ]²áõîzôœèQ=èÍÖßžs:ÿQÆ:d¬;0÷p¢:Ç2ÔíŽqçÿß®«\@jOpŸœ`ÿ\`Y—ïä°§Y­üÁóô·}·jVã»'C‹ S2$àÏÆ»G{¸ÃXá"§å0
+ÓÓJô‡]Ƶø5,-»ÈÄ®[‹ÖÇìêìm+ÜZˆ´óg®ënpk»i½t¬å5tÒ'-‰( 7Ÿø”8p‰êJÇ9&{Úøi^Q±å>Ž½¶Ëc„ߣÞ£P†¶µ‚:³è7/Ð# š5“‹DÏr-v™Û™"™4¥ ®¼‹ðS¯}Á{÷â7É>É.V…QóÉ çš_ë€ÃÄõaìÊ™íY³:Ÿ K|‰<ÊܶÍKW!;[šÒ²ÌÛ"eJA•yY¨«
+ˆê‰)M…Õ”&Ã0¥©˜šÒTXLi2*¦4VSš
+OU|ÔSàZÝsç:ðZ*VÇ€u#ߨi×a<%– ¿Ë ÎÞGºû&»{âÍž>h*´{BRø‘7Í¢«ÜY
+غڮ} •á¹FÀ€ºÅuÖ&B7]õÇ~?œ §Ê‰¸ÎÛÎп¶Ód¬ÄjÄ`àZuÒ+À¿Ê£‹aŒÂ}o¦„Š³ 0˜çfÖyBš¾÷{@vÿü탗 Õü׶´ºXœÔ®sy†IÝ“Ó¹½?`xi5Q/4ÙøùÜ£ñ m«ÊŸ„amå‰Ë›V]ïõ0ÀÈP½i¦óW錬)p[Å«Œ,W#éf1˜Üÿs³ñ•­¥®üZK;#͈¥µ€ÊÜ‹ ̬ê&VÕ=Ƙ Ķù76NiÔKÎy…œ(ƒMy OÖÙð|fÚuJ|ç®ôñ?ÃÓ‹…õx*<pñ Ù!%'†wÜjhéÍú‚ý[š©®I/¤Œ›d8øé"¢ôr$Æ.Ñô\æÞ‹-+íoïYy&/Üâf_Äa“G_ÀaÆ´àŒ‡mªœêÃ?7 À2Øâ Ÿ©ü–H¥‹ÓЖQÞ'*ó%)ÚÚ`ÝM6K¤˜Jd×.Ê:HTÆLäV·Á¶ÎÃS
+™&kµtQT _‚TaÚT µ@„VNÝË2êSÿ
+0
+endstream endobj 930 0 obj <</Contents 931 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 931 0 obj <</Filter/FlateDecode/Length 1544>>stream
+H‰¤WÛnÛFý•Ÿv ˆÙ;ÉG+1h›ZJŠ")
+É¡2éRRœü}fvyYJ¤sƒ
+°Ü@ža• ë'„†4—‰VÂÁòðå!B ‚D· lât³Ì&™Ô°|ìj¹¸ö€«%ü:7 *O3´b®²D:•C]À_PÂ|{Cº•!ݳÖÌãÐÅ ²ñQ‰àãÛ`w¹@\*fÁHúÕð&ÜH¸d&ðŽqé˜â3ÉÝ—ôÏò–¿’âËV©ÄeËúIoÉÑa=úÄ;6kôÛX¿TIþÕŒètÄ1$Ì;ÙR¹Hd”~û†‚ŽSCÒ¹8&l›ÞJšK‘m_äô¬Èqö5Ö/yÆ^½¢2côÆ×OÃGú-¨Ž5·lO¶U \j†É5mõÜ Ø?·+Vtw_€oÕ—¿ñS?½wÆ;šah&õÞÑ_Ð:KŒO¿Ó‰2­‡õê€+È ²kñôvҔ秀™L¤Æ€—[>sìcQÂCQÃÍ%ŸålÎ]ƒ
+Hr@ôX“ì‚Ï2v\o³#5Õ#—idóOHʶ"øòD=ç9«xÊîÑCÃÖøo[â׊+ÅÐy…ÉÃKº\¶ÅÜ>ðX¯MûÚéó˜6ÛšK‰•À
+ âʲÛÛ#Ç´øûþ« Ë’¾n©"=ÇÜyž»óÀ "YU×>Í’=Tå{ŸÇòBþ+.ãÌkÝ:Œ Ôeâ3qIÖç°8b€”‹ e`GðÁ÷*dvR…6ÚçØ“VŒòiQ‡£|:ʧ¤|Ê'zvRÓ'ã+¨ ákl I‘ô}ÐYƒ–¢¯ëµ<„
+-øa…­‘bd ÂßGbÀÅý9<ë"VÞ³¯•çá>ÔMoeck2^ƒO@w¾·šººò­ì¿VkÿSàÉž¾¤vŸceöÜDÁs‹lŠÓT #J´ƒùñ_H>›¡ÉPb©N=?…u6ï…RÊ1ò”uRšŒß8”Bo%©§É¨dN7Æ$Ì:™É¡(—OÁ\N×­Ð3VÔZ%é”I­ñéN–™$ŽÒÈ4òg42KT/Ät©8µ&5”± lj‰d;‡q¦šó¢MÔeDØC‡/º3c1©€4}¨®í
+êÏð.ÈHa Ð{êÆ`AÏ¿îTÆœ¬úH E‚/œ
+‰º±ƒžû2ŒÁókqˆrпCIÿ^8ÃWZ¯ˆ´»€?Tpñ7¥®Ø_x ¸d_üN<JAÒ¿èt I5•n’!-þäª)¹’ôȈtŠ"§Ð G¶â ŽœBHœ$­Å-5éà~`
+endstream endobj 932 0 obj <</Contents 933 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 933 0 obj <</Filter/FlateDecode/Length 3438>>stream
+H‰¤WÛnÛHý•~$þ‘Í< `ÇÞÀ ìlÆV6ãÁ‚±([»•ˆ²=ñ×oUu³Ù¼YÎ(šMÖõTÕ©Ó%KéoËÞ~¸JÙmÃÞ.ùRÆÙrÍŠ$Mµ 
+¦³$KSÉò‚'R¤[nYÄâåé n¿Há <ºaB'™,ØÂèÄpÉ–+/¯.èƒó%ûÆd¡žТàsaž1ž‚p¶¯ØgV³Óeh Ê
+e/Z5O}­Hg£H­¿[½Ë+Psi¦8þJöoû ‰y¤’”]G1Ï"/x”âsŽw:þcù4ø70Y ‘dÆ›,_´ í¾X-\@¬|Êç")ŽFDæŠô„¢T]Ç.Q¤ ¯ÿ‚"+c¨ˆgyèÀ&Ð’%¹8šdÙ%Y’â°Ë±üçÑǘfð^Qþ${Äß
+ó¸uÔàÍfW³˜Ë‚«Úì§ìŽé½ûª 3.¸DS[û!ƒJ½.Pd>/Fæ[‰#û›Šq4K„ÚóK"ÏÒD€òLƒ Ç”CA9…NŽt“<T^õÅù[ Þ~÷ð•ýZn«Ð.u"¼G !„¾O*#àƒg*1Ê«P`ºy]è+"1#ß>bÞ«¦ªozn‰T%ÅÏøe¼ä—±Òªy¢Žúe“×WDb†Š.Ëú¶
+•ió“þ€ýÉóĘNEŠÍûXžº:ãB hd(D}¥‰¾V¬¬W¬Ë]_‰•mÆîîš„€§VöJ\EkºÚûú¯U\D^L&-±KyHæ¯q5aÅŒ¼ª¶e}ØÄ\E7ͬg]ÈÔȱUÕÜ Ò7_­à]×À%%²Dw­Dñ×´1RoÅŒ\z¿ß67åý3' sC§ÄîT–»DMáì69Zêí~ÍDœH…3²û$æ&jšÍm]Ícl.&KÌb“¡†
+h£ëKX™®„Û´|,Ák(à4›-:ƒŒäPÑã)Ø*;E2h‚΀+n¯ Æ!í¶%böƒ6pøUfko$"øP_‰šð´ü|=ÁÛ”Ä;»!e—ÍŠÙß°:ÚQ–áÚ§EMâc«˜•ûª ¡õ>Ãûàb—/ ¶Ï­ë–D¯b}‚^; Éa ºÕMïï ‰ØÕ®£•.V¬M1æl!pÑô¤ë¸ƒÔ™j\[jˆ½Ç’Ú›¶uÒßÛª|XLJøDDÚ>kož";vI>Çø6®Kbñ¹¶‚Å7Nê#q /ªðÖȱ˟ã…kЪ®«}ßÁa\´Ézu¶ÛBõÕÄv¤­CLª…$¹ô°ªVoðæZ\kr×ÏɹA#²Á €´8ï
+ÍÑí®-“È×›{Ñ9[èÉqÌí¥ÍiWÇÒé= ;ý2u´‹¸~Qô
+
+AS zT&[ÿy·»\Ñ»PFÍãø ¼zmwŒ6¢Òe÷¨ÜŠ\èÈj8Å8—ààÉ)r8ôËx
+g¦)ÉáògˆÜuü°Á¾(Á†˜Ýxõ£4vmËŽ[ÁöZí :ò‹+C¿A\ÐÍyœ [vÝ— 63Ì?Ij‰ÿbB] zÎöŸl±µAµžá*ð /” ûоø t^oÇ¥p$·sÂ$&×x»bQB¢ë?d¢¹öµ6Ü+»—@`ïbÊwq-\óv(šÃ`˜ó6:ävÈãË8ÃúCÅHn}z|BgK„O”Þ‘µG³·„Ûþµv
+ØÕ/o7>ýÜàÏëîLGòÏÖöL¢ –‡¹^í¸˜Ÿßá
+¼ ^|eçœ
+üu{k¸NöV­2xkvo
+hºp«Le’õÖÖ¹c·µÎÛ¥uîØí¬sÇne=¶ëÜ1.¬sgã}5õû*ŸßW…Tà­ßW/iâÎ
+ãj‡-ô©[øhWÌý`êñõ¼ÚVÀ×Õå~w° ÒÍ!\z;ŒP5]–¨uÈ7¦÷\‘ˆBþàžÛ©›[syö!¦ÙßîSr›¬LS˜Ù¼§
+öŠU5ÂeÉ´™Í„p­‚’#™‘E³ç“Ä$ëG€
+endstream endobj 934 0 obj <</Contents 935 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 935 0 obj <</Filter/FlateDecode/Length 851>>stream
+H‰œV[OÛ0þ+G<Ù“b|wüHBLšÄh¶=Œi*B'hµ–²ýüc'[(LRãú仜KmF Èô·¼…ÃÓ±„Û6ê‡Í¢ÒéôBç…—Ò@ˆJ-=4À€7?Be„D…®A;áM„ªv¢Vš`'Íø,Nø&Zä¡F‹p] åAI$‡e _a£¦tCÜÚwÕËüÞ¶˜);Zfß²n3F ®4s`= |É‚+f…„KÆ•gšWŠIÚW´rü{ó BËNkáëeóª[2º]À„ÞqǪ® ™ß•üJ‹øfELxAȽ $í%/´t”Båwÿ!”9v…”¯Ëœpl•ÿ¥ÉnhrxÖär‡›S^³ósj3foSÿ <ѳ¥>.¹c+ZÌsàÊ0,®í»/áÃé½ûvB»«Òè¡ýO}&w.Å•’‘|Ö˜¤ É'-Á˜HÑ«7BÛÞë#
+)v×·ì¿H¶‚ƒ¤D
+fPP* ·AGZÞ ÃG6áU`fiý°¦/XÈ›Õ7‰]F|• *%”±™e4{äÊ2LL°~íÆD‘¦’¡p9'ì@¤ßr*„5½X ¾GZ6f­Ó}šÜóʳu‹ ‹)V.Ž¸g#^E–g²!i¹á8FŽ1¯j¶¾šÒû‰iñ›«°Ýñ!7ùþýâWZ³«çØh—z!YÚÀÁÀH춖8“¼lŸ™ËÝ·Ï-fæ›ô¸Nm&Žˆ³¥òü)iã÷±
+endstream endobj 936 0 obj <</Contents 937 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1511 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 937 0 obj <</Filter/FlateDecode/Length 3258>>stream
+H‰ÔWYoÉþ+ý¶35ž>æÚ‡
+‚Ù¢Ð$=”d‹ü÷TU÷t÷MJ»‚ÀðpÄb×ùUÕ×/,§Ýš=ó1gë#{¾àÿÊg‹Ödy^úAÊ2+ó\²ªá™yÉ_XÂÒÅ¿é7'r8¢%EVʆ]ÔEVsÉ+–\.>¾¥— ö•ÉFe ¼ªÁŠ‚ã¹È* œušýƒíØËEè êu_™‚-¾ ]4*­"7>~6v)IÁÇOÉ>™/²”'*ËÓ.þ†žý
+¾©¦Ê„r¾ tô”gèÔÀ£`äIÒoL4YUz"kNÚÀ˜9/f,¡žIÌW‰H/x‘äœ>Š0ºŒ•µ3-Ÿš9=í"­ÀÚ{ýB+ÏVV3†ŠC¹ºJ[¢É3 ¨ø†ŒŽ±!^6aL€~o¥j2~6$Qx¬V¬†íäË&ߤuòþ=¢¢WOhžüÔPȤK‹äˆ/›ýŽ¥\&\Õƒ8g@L¿Ûê¿=jFXaù«Ì
+Fçó‘ÉAwqÔ΂Ïë³åRS;¨elçsò« z·D%`‚ÕõŸË(8–M¦œQeêlX3#ƒ´LÒ÷¡Ý­uh úçÂ!'é`9øxŠüÜœÅ2ù¦(…3XdwÐ<ùžÊ:9hÖîVÌ—n:hs€Ë$hú‚p^€S¯»ƒ~SÉ =Íûn‰O6‰³Û®à4{DV µœ8aÔLü¨¿´»»MÊU²<F#ó t¤Ó6ö0°•>.蛃Q¼ßá3I ••¾zŠ?fˆé#5“^u›»Í²Ýn°r*7JDwoYLs”xâ¡êÂ;ý˜Ý4SÐas6púEÊëäxܬw:°Xjeù  ³yÇ´§¨ðuå-*Lç²æ`F= Ì›‘PUÄE±,1/§«(‹Š”¶ET*xMû:&.Oê–’gŒˆ/ñ›¨¸’Äê"â>èˆø++%¤’°üA^•0Îâ}Ê6H –FÔrªd»Ý/Û;XíÏ?è; }B†f÷`ú1"sˆ©7œá}·Ùw„% X}C€‚ÉÔTfßµ 2,¡‹àE**
+­†¦WYÅW˜’.<¤Ê6"¯9ž*3!ë©×JIKŠh˜ôÔ’ RjµF,jÚ).#Ò—1qyRwˈ¸ÇeLlq÷¸ŒˆGãðÜŠ„–6»Ÿ7Èm,2þjqñ·Öß-ÝÉüI/Û¶'ƒ·‚7É/nµñ*UÁÜ!†Ý8ðÄÑÔüoߥ<O—oRÁ“Ëø‡ÑOA¨Ê#x¾® €£+¯áìïGš‹‡’q•äWé3ø{x^öÒTþ¼Tæüí&½(“õ­>C¸3§¯ŽšŠ„eðÈèKú“Ô=Ø¢‚ý7là‰åüÙíC—jUhñÐsèÀ•*ÙϧW£H é*®Òÿ„:”Kó0"È‚qØ<ñ\HDdEôÊŸš`ùìq¢Í±qÍqª ·C+øÈ‚1÷slQ“ÓM174dI£p¬”-Hãmz,„{D,2ºÑ¾½„5­3½”Õ XîMM¹žýœP±w+úX’ÊÖ$Y§Üܬ
+ouŸ‹Îge0…üº¤€oÛÁ4n@Ý™úï_ôjäÆ\\;3i÷vîR@¶=Èáìz0(Š­9?Uê„Òž
+€ þâo!²<OQ ¥s\ä’(êoøøáoXê‹Ååcóë+;#nÌ+¼‹l;ÈSÛïë5ô/³qg¸µ96¨M_|Cz¹{† a„ý¤:½Ï»bÛ´÷µ»ØÔaß_¥˜Ä)--D˜9OKÖe¨X@)~0C*}*Cõ+äd¨X(¿º#ÙgV15SÅ t$ýˆ1)âunÇ̯8VöÖ®Ý>ÞŪ ¹íçäà ꌗÇÓTír²{’;«)^€§`­J^"ñš£[¦+]ÆÎÞ#ûDÌT£–3 ˜Ü1,)§Ýâò@ÙrüŒ*-`
+
+.cÝ]}@v÷' 0¿Šl} š–`ÃÜ —MóežƒÉÆ
+`yÉrÏ+%”HãyñÛ\åƒ<ïrѽžwÅß-/zæy *ç'ËGaª`…Ó
+þ·1¶
+PÛ6ÎE΃ÿ”A×!ïH9õ¢Ä IEšI#y+ZŒÚÔpVÇ¥öÛ†•uØX1
+?-?kDvE ó'UcŒ„æ!F»œÔXè®I_ÓBô¬Ø†¿§8jÕ)£$ý0
+endstream endobj 938 0 obj <</Contents 939 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 939 0 obj <</Filter/FlateDecode/Length 1030>>stream
+H‰œVßoÛF þWøxæëý>ÝÞš.(º‡!MÔí¡Á–®åÉvóï¤déìØéP°ˆ£>ò#y$uSâ_÷oÞ?(xÜÁ›Jÿ­@Cµ„$•ò†_Hàƒ JYˆIKkT€ê+(ª¡{„B©æ`¼ 6Á¬ô²ÔªˆÛêán+ølrǽ8„›Rê
+„)fZ(:×$ùâ¯ê7"ü){cd(GÊöU¶Dô4Œ>c'fCBzû>·¯Lß͈ù Ž”ûRd¾LRRgé÷?਷qîHG•Ç„×fòÓÿ)²ŸŠ_9¿‡Síû¢wwTfŒÞqý,|£gCuì
+/v$¬Ú Ú
+L®;V_Á=ªù½uSÓ鮾$&/¿µ‘ØÇ ¥Ã` qÈM_ …°Ü %Fï"@â`‰‚VÚ0$îÓ®~l~ÉrgQ[Žþþ¿âN]tDÔ¹#} &LÆØ2DRâ»ÎÝ;ªþP€‡æ°*fAl¡]b*ºÑ^ìY|jàþmÅM1+ñœ’:Uš¥D¾Ì´Ôå_Ñä
+ æÔˆ[Sk®[”ž c±TQ,&SyW?ý(«ä'.Ö \È] -`Ó&’[“‚ÿÚçBGÑ,rNLé$¨œÑwÀiHc²!4ŠÍ‚s¤cDM׶§å›õv»ÆnàwøRï`™ë3zÌÙ…˜9BÌQ³a‰YwØ. ,]=æ€Ï±«0¿þ¤ åÈß¼,n^@HâgÂ6œf·ãè^’Sñµ˜-ZÌEË‘H³# ¼â>òD
+É )þÃZž)§rµ 4€_‡HkkP&Cí‚Çͯ«]”æ*–´ÝcãO`£K×Ф£ÖáìÌY›ð*mx Õ<42´µš^½†¶vÒ•î4]N’¯AI&Ç8äÍ :Z‰»ÿ*ÕÑä´{YÈ«µº žÀÈ´'k=ú}DÈãJ
+ÖÛù§‘É6·z‘û —®8Í–°¤£§H&k’—”¸ð¦Ã;¼Þõa×Ì·<g7îé~{–ýö¼ÂV'Yº£—ŠgÛSMÙÀö@ÏnÛîp:6ÔÙÔŠ{ô<¼0:v“cÇþŒ’>?}õ}ï‚Œ‘ps‰°>Î9¥ ‹ÙQþˆ…·€k  óVœj‹Õ¼Þ7°B¹Á
+Õ¤¥Á†pÒõƒÎÑ „mÝíWó*Ö…uÍ7Âñh¡×÷Àb,ßÓîy[h'~çÌ°x‡#7ȶk÷íœrÒ®¹4ã¸ùO€
+endstream endobj 940 0 obj <</Contents 941 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 941 0 obj <</Filter/FlateDecode/Length 2782>>stream
+H‰¼WÛrÛÈý•~R&Œ™Áàòâ*IÖ*Jy-E;V*“ …,pAÐŽÿ>Ý=
+˜ÁôõôéžË¸üWnàí̓ ›=¼]ˆ¹ `±†Èq]-ùƒ´ïø®« ˆ„£¤ëÃb Ø‹ó aN¸x‚¶– µã«f¡vB¡`±ëzñpË®ð¨ÈsPx¢ËÐ>…C™À? ‡ËE×’-=’=;ªùvj¢YÛ(]cãg£wñ€*l!- ž ÿ
+>™Ç–ç¸ðhÙ·¤=–Kë‚ž´ýÏÅßÈàßÐd-¥ã‡ÉêYkÉÐÓ
+¾Òÿ„òXÚÚÚÓCZä` eap½cö]˜ã6—%1­î`Ènú]!fÇw‰¾ø]:çŠ`WØ5ð„å‘'>ÚÒxr{ýöƬ²8ìà.Þ&] „ŽœH6&œµ`1# §Ó‚N¾D9¾×¨ðÐöðeUyªˆÅ œ»§<$û$_žø%Uä¯ñËxÎ/©­_2p¼³~™ì*b1}Eó8ß$]e¡|]žŒ€çüQnx2—Èô\žÚº’Còd#p„
+ CXßmZ»â|ÝÜ)„”<Œ~¶Âþp಑3Ð_bYzÖšÍs¾¤ßü(D[øŠpóy÷¹p{Òïh8OËRµ±ÖƒX³´¾¾ÏÖC²ó*µ…g-÷°J˜‰–T2éÎ,y¿½Æm>ÿŒÛ¾â’ \l'ÝŠá¿îm*dæu¶‘IX "B„ŽD3Ü/`¹åõ-ÁEâBv|œññ —ŽOk´B+$ú)+žÝ¬M¬ããÖK¼+"1¹'½À üéíÈíb¾¿í‰ “—þnmòÄn3ÙBiH®>¾qãЂzaž+Û·žŠtic±&M‰bÛŠx¨ð"ÔÄçS;[Ÿr ”Å •ÆTŒ‡½u+²çÄ°; Úï 3ÀóW50‘fsd@óãg °së@⇳ #«q²N42Hà¿‹uð‹µ¢q¸ÕvOL ·‰½#ܦ¶k¸Ml×p›Ø­MžØ=—©ÀÇ¢¥D!¯‡ÇD½k†øP°Ë*Äf/
+T§E+P #¿ Ž©©ðOAr·ôIJ¤JX‹lµx ¯ ¯ÕäŸÆâCrHóMßR}b©†¢„Ûã@3wÄb“±Þ%M"ÛP§›M‚“*n¬èëGËguOÙ'ýˆâóøK–ðõ´*àÚÝYñ%þBkYº§D=Á{üôP¦t¥u{ÓsŽhD\)Éh>GÏVx;cš:ò³ósBôïö,´ø© Ÿot’_aA†ÅôXnè7¡ŸŠl‡ùÝÕ£Ñû£MñxCŸvŒÛroÔÍmÝ„º–,ŒåŠ
+ ®ð ^ÍÉs#0°¦ôärôûØP-¬…n>–¬(áïׇ Ó‹‘#˸âh9ËVuýé®\ÝÊ Éeì öö4œa£ý(=% wOII™&TrGËWoItÑ¡+é·€‡ ¾Í«dƒB|+­¸–á¾,ª¤‰L›sѵ¸­ÑÂü"ÛeÊöiËÁ€œcPõ¹ÆíDo·+ÊŠÍÑG"!cú‘6B4½ù:ã8/+øÖ¨z‚8ã%ñê;¬^ÏJ÷UÊØ©NvåKµ3R(ªh“eàúÆDüqG|¿9±ÿd{“ËcYšÿk#aKÒcŽ*’‰û–PCõÌgñ¿Äiv`1\µd~¬žØx ‚ÁöÇÖzIRùãr7Þ%}.vY@Ü,“‰9”I]GSÅ'Ä‘'d4Æ9Tñ™=ó ÄÈ?{ê„ü+|=4DUïð‘Yd~q×±³·ÛÆû›t’c#3gš…†3bZÛsóÈkô( :œ¡:”çq^¸ev‰— í”âðÕŽÌCe‡ð‡ Óö9¡Æ'ƒe›
+æ8äܾy¥Œ·|›¤ 5r:ô`x:‰ê§8;ñ5xíÎGª¥P1B¡ƒàüJ žál¶p™VgJu~lK8¦ä—!´Ñ!‹°Á›ê—î0}k™?jšÐÍkÀ9V -ÁûÌ¥læÉ$95¤Y©!üÿGN1Gã?¾ÔxÚöáà8 ÷I¸ìÄ"Q©”qMº¸zÉíœQð'ÂedämF¯1òÿ}>øº;? ¡)vS#¬ßŸ¦¦æ?·Ë½4î‘öý»Í{¾`Рo.¬“ÚÑÉ †ñEà‚çק41Ö~1³0^êèANqëäëYF µÓ`^pA1sJ§wIEÞý`Ã4ƒáÊŒ¤œa >5é.Là®Uß8¹LºRº|¾û˜äa„É©dï¨ì´%½a'›_j¦<1³…ÁzmF€þ”m’5zþJ”‘¯²ã˜yoNyYOµi=>‚? ÒŸsaò&wd.[.Y†8•lÊctH°¦ºauu
+ëÕwGbƒ2Ù2ìÒüX„à‹Kì ¢~@5å"ÕÄæº[ç‚n½a}¿x‚¢z¢Us{¦ˆ…çˆ ‚@9:DWÇyJªÝ8ߘ;bÊÍ<JéóŠï9­¡× ð•ãy('t\O€Òžz¨Ò ÑeXÃxÖÅ?ž,wúRãUc¹åõ-!Hâcv|œññŒÒQ?­á7ÐJ8²QÄ­c…OÊë=]“#›BŽö;GE$¦â¯˜]í“ýíAéNàOý¯ŒL€Þ…Ûjb„¬ÑÒ
+C#PÖÜÙ¹ȶššëYàÒ‹Úf¦zÆä6[0%Î0
+endstream endobj 942 0 obj <</Contents 943 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 943 0 obj <</Filter/FlateDecode/Length 3220>>stream
+H‰¤WY“Û¸þ+x·,
+Ì %Ô~ÉÒí”$‚mË}¾…­Ãj Vh
+ý)+ÎZ->Âf<lÑ©ŒåÉ3å‡nœ>ŽEŸóãc_†½¸ŒO­É'NmÌTG¥iq à‰‡–Ø -{®€?•yê@²fmŠBÛŠi¨ðcÐ…/À&v1?ÕD)‰™*M0÷µ÷3räÄ´;€: 3Ä \!%X“9*Äùñ#gйu¨àÅYE1o´†
+/â¢ÿg¹h§›Z Œ¥Û‰³ÝN[º8¶t;qjM>qz)Ra
+\Z~ž¥ ‚…·Gám†ÛIMÌ ¹/Å g§ß¡¨ú(†Q^—H•ˆ§ûƒ‚ {FÅ.'4’Vadò\ôdn­%‹!or®Àõ'îËitÛŒ‹G¢+ˆz÷ź$Ww—„Ò‚¬™ô9¼MjšžuAkÝ "o¾‘mù6ù¼¥Ù¬R«Ú+Á$;³‰gÊxv˜ŽsŒµâŸ·ôÈÀ䞣]hÑëhEÍÄ1!oK¢DÍÀ.oZ?‚NÈ-²M4qYF×{|~~†,£b&x΋¾·á¡ *=AlIbéƳ1wøi°½±÷ókVÒ ¡pæÍŽ‡Þ(.tëøuÝd;äpÄ}ÀḴEÓz¿ÉY@—2ÍáN¡bÈ`'â+Übï餩~ ²¸ÔøÕÌ{EEõHN››i 2ëÚ° ’¸ *˜âðÈò¿@kÄs“ò
+eeNãÎq Ùnû$hÁU½’xw]ãˆc@óyˆ?šDÐäÄ)&¯ýþ†Z¼æTꟲêPóþ‘Qß BË~5…´Q‡p‘]«Ü¦ äÄäÙB%G›kŠ`RØKÌÊò¤‡Y|ÀLöÚÈœfBªLÀAé3‹ù7ª\´Ò}¾¥_³óÙ<dô
+ÄG
+ÔÒ±ª 5³†xRÒ[—i 4)¿;2¦†ªÅ´(…]äã)ÔeÚvÀÜT73I*a]lè`4BtÝå2¨,6¶# ºŠ>ÒUN÷÷ÕÞÌiì¡LÌ”E³UÁYEÄÊ­)×TU·”N­`Ǭ0]Ä;×s‡À̤‰D4BSZÞ;JØ~Œþì«”úz=nºÆ±Ö¯aBÀœÁr
+ð8êÔ¼L‹6nÕÞ»NCWýÞBÅÁ›üø?Ç‚v¿ŸíÊUFµdŒHc°;c¦Ži¿ka*šæ6ÈM­×u†Æ“<mèh…¨Ý
+YC&2Ü/Ìà)3ÿ¢Ùh¶³éKÉÄþÿ •íV@RP ï;$ÅàRšDèrÒL¹: =PBZH”)E$à‘êèÔ_?.à!æl}_`ß™aøáÁçf˜|ÜÓYi^¬h¨Pe5-X›Ó^<Ú1JÈI<¨¼Ä@a;2vG>À×yM³Ê‡[ #6h­Qvƒõˆ~E&>:Êã ¼«Ì`ѦX~)L%/hkx“‘£Š{Ç`G<­k½[J7Ê.ˆ°À}Ó.©Öëý–%Š8­ð=¶0ùIn‡'g@lÙ9½–.š¤jÀ©yÉnºý%ì*£ žUg:ZWzc‰i(Ôø“Š —ǃi›S]áQ[ñp_àU”®¡ê¹ÜŸÁ»)b¾¸ûÄœ·äÉ¡k\G@!Eþ!/¾˜F±ao¶Ù–¬~ôfács¶a(&Á‘K“ÔíxÞÕÊÇ+šl‘v òL¸e74ŽÏð—&÷W_%ö1ºª'#Áì@+ÿú^^m@‘h#­ÑÍÿ¢ëyÝôKõ”üž>1’F4St‚é¥lbר€R°Þ;V÷0Lh“ßö²s»dçBš…^ä
+_2Oûnäƒ6?bÐ\×ì+“ FÀ¯/#h€oj%Yº£ý“R¹±‚åö°œÑç[4Ï®ÖìO¦=éªVtjŒR…°c)\˜cËÓ‡ÊÝ08s Wýó*Øi†¡¿’ãvXhº4I/;pCš*8¢ŠŒ!:!Äßóì$J×%€vAc^bÇ~~~þår­¬te³»h¾ìÄE§îñ Ñ=QaCu[T©©9G­°…¥*äÐiZ€ÞÄl5ï^¨Â)~½2ÒÀ…k‘`—pq'öÑIœµ˜KŸ¸ãû&î JYú]?²bøâÝaxk³´ÚξçØ(yTDtÜLÞwäFÙJ¶'Ïô,C›
+M-iüÌÄÿÄ!0Kólak§P¤LËü ÅX“3¡塈b4&Q |•X°E –̇s€aÁB.X' ÌqÅ1@–ˆ„
+WY@.dµâ1ôûCÔ‡bÝ3OcØÑbÄ‹ÌçÁk$욤s
+8ý¾Ì&zigWD“|11aÒ÷ àDmU ZZÐK$¶ÀœdH%ö\D Áöyß³&ÞòILâ-¬€†±^,om‡wÏñ¬œZvèbÖµ¦¡›Ži9Çæ£x§’Wi©l‹7Ÿ¤Û~‡Õb Âï±tr^·¬º†ÝÕЮ¢2ùMÝDTî_Ý°sn·GÙnÁ_mM-댺 œ™NR'åÏÁÂ,ë¡èÓ¹Ðeù£µvÔcÁ¨ëñ9ß~…s0Úzk5öé{3ô$ÑFËåùyÎ;9µ¥à~
+endstream endobj 944 0 obj <</Contents 945 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 945 0 obj <</Filter/FlateDecode/Length 3996>>stream
+H‰´WkoÛÈý+ó© ‹53/É/²©¤èzÓXÙ~°‹‚–iG»2å¥ä¤ù÷=wføÉ‘dE€HæïûžsïÏ Æí¿æž½zÉÙý–½Zˆÿp&Ø⎠穴?(XjùbY!%¹a‹±xñ»}C¸78Þ Ñ’É41ª`gyšäB±Å-‹Î—ì ç ö'S…N <ËaEãu™'Â0Á¡œ5û«ÙÏ‹¡7¤[jÒ}Öšù¶ï¢Sé}”Üùxåì..a"2J™ô©ØoîA‹H'œ]G±0‘ŒÏDÄé¹ oiüïÅßÉáÂåTÊÄäËê ·äè~íÛ#ï¢3Ÿ§?ê2)ŽfDe3†ÒC\_Ç[²à‰¤?}!§clHdjÚ¦·’§9í‹œMŠ<ìþÆê}œG?R™½¶õSì+}VTÇ&N£-}Ymj !¹º­>gŸ ¶¿[W%=ÝVÌ6‰–Ý•£:†'±˜! EØPl$j‰ÕG‘øÒEòáüÕû8‹šÍÓ#»(ª¡"-’Bv.õ`R1§`d3bƒz‰¢HŒîLhøžŸ6•û†¬šIp©Õ¶ª—{qIU$ÙÄåŠK¦h‹>.™%úh\®zû†¬š±¡Oe}_ åòÇêäŠGñ|/eœÀôXú¹’Sð´
+gÚ‘í0"ú«<z¬XYß²aíZJî5LzpÂý|²Ó3±ß`,utgÿwßë%ý¿×?
+Ý–ÿ@ºíûüPºµ4 ÇaYª>×é$×VÛØÞUtY=”õn -·ì¶²H´¤‘Y=ºÇ›zÌG?¶}ÿ@ØFÙ‘É8èD ,LŒýêïFB•Ìô@ $±VÐ"O$ÜÌ°_°åƒ}þÀ„°CÂÙºýzf__ãQûí^¤
+@òâ Ð»èóÃýÄã‘•ŠBeRgIfÂâ‚{~,Ö"Ôe,õ.¤¾f²o¥)¸üe‰#Ä…¾{ÞÆ&ú²Y-c kÕ(h«°K….`ÀgˆÄŽÎ§œµj¦FKƧm\ 'rÄ”àEjFÊ\㙄 aW T H­;2£ýñ*b`î4“øáY–çEÔé ÉÌI½è“ÿÒ^ô†æÛÍ'šïŒo·€¬m·Ø·[@ìÛ- õ.¤Ç*• -
+¸ž·…zÝ-ñ¹°!«d/¶¼ã$$t·é 0Z}#sW ×ÛÕ†]T;”?ú†âG›æöZãÐ~XÚ-7$ö¼@î÷𢘄5ê?`£y^ÿéZOê?_—öŸ74ß(F*pµýûþ ˆ}ÿ¤Þå€t
+wÊtÌ)òIƒÈ"õK³´ f»¥<±5G먬·›&Y´c„‰›º¦N©–¶}V´åÓ @¥³L÷öÈ¢Ò(ùß ø]¹Z[¾e» ;'­[B¼=nÖ+ËÑôäËudèC®c[hÌq‡ ör<Þ!>_/íoh¾CP/ͽPrZ÷û ÈÚ ‰}‡ľCRïr@:ƒP|ÒLÑkB0ÅétÄJÓs”gŽšV®¢‹7Ô^—§ç´h<ËàæsGtÄI}å³üÒ¾ò†æû
+ùÕùtÆm_dm_…ľ¯bßW©w9 "ÏZfbÊLÊ]'¦ÈëÏë×o.ÙÛ à¾2È$—»êý¡{nY´OQK­U}¸Xn
+Ü•>k5¦Äé“šªMñ ›ª54ßT>¹s§YHÖ6UHì›* öMz—Ò)AÉ~5æÓÕ¸e¨Éóž¡lõ 6ÑXˆE]ì^K,¤”
+ëd: Xv›)S¼¹±Ü6¥åÈîoÊi>Êé€ó{þpŠmðב%ëßq#ù»å:ªJý1¡YÙ§÷éƒG»ÆÞDËÝ\U¡ðÃ}Mg™} m%–ƒ 8¶¡¸väÆŠj}÷’ V$'…sxääÿ-}EO¿b¾wåÚT¬­5ïyÝ-»æÉm@Õí@gÖç ö£òëõ¤v°ý ÌC›­¢úènPdýn }•sËÎ'{B€ãÕ^ŠãÞÐ,Žë,ƒ‰1¥Þò Ð#yXî <(wX;¿ƒâg­Úä(Z`EÐÆ­]F$éÁ3Ö6W\†FÐo«í’º«Z¯í×Õ,qÒM«•Ã‚=¯GCš Ãž±0h¤"?©ÑÚŒ¿°ÑZCóföoǽ> ÈÚ6 ‰}—ľÉRïr@:]TW2|Òêtÿ¤µTˆvp­ ©èãiËèÊ)Ý÷Êî™0©XCûí!Ÿ¹qñæ‚
+ÓYR‡¬ì©¶ïUŸ céÛÓLëQÔ“œš‘¡«z}k7~»nO£AU
+õêTôMóÒ1ñ†æÇħºe<êÇ$ kÇ$$öcû1 H½Ëé ö7‹PAT…†¦ž K7õÙÖ¢¦m
+•Í­gA4ÇS·Ø;ijBY6ä6Äâ`C Ô`ÃÜ~‚ ósÑÍ7xº¦ãAÐ îꬃ‹O›‡ðZ=^KúššdŸh´ì‰FwLó6†2ìì+‘?Èœˆ·aGRdXMmv¾Ø}a½°K¯NôêêÍŽÝ8ÏžÜ)u;K8+òü¤yðÝñÒyð†fçAe¢üœçý<„d~‚b7!±›‡Ô¹’>‹6"Ä—yÚ@>-—¸íô1ÈåvùìÏÚYþš»Š>•·« ûíÕ¶Û6D…4Pu³Ý&»0°Éqû–Ff\u)+ËÝöïwκKi /2%š—™9sfΩ€™ÿТ‰ù ­.’?”>WŠ+wé~Äö}!ŵQ=7?*“ŸÓ¸Ëyá§(÷bÏ&ðÌIí(…4So¢r„ÇWonÈwB·>hºáê*ªq­hÜ¡ò¹¹ºsÓº3Óº3³îÊ3³T>di*àÁ–ÊïAÙGgQ÷ÈÞÆÂKÿd¾qˆêé¦zÜ͈" ÐH>ð]b§rQ
+yH¼¸¾š•B»½` tA-ʪ4ÑgN±=KƒkRm
+¤åùm~ìlßÖÕ?V'Û=ôp¢HÉJPIAóÇ©Âz!”}¥âvÏMCë\ ?¶zí° ·]×kÉj딞«RWαºÓÞRùÍŽ÷TwÌ7“Tg¤—®éý‚«Á³»ç®9i‚+§U&oµnدg®½¸R Oü„H
+á?*™=‰p4OØ;M(À'RRK:HñK¸¶ßü|ôš‹únŸôÕÒ*Ò/æ\uvÚ4v°S—Sº²i¸QA 6Tô{Õ`4i€;ðíõ(,S`>Çð„‡8Ò¦g€ÿLIƳ&rú,îxØ5x¸«YVp*`3Z=,æzAS†‚Žµk6Öƒ±ŠŒUðô]!®u¥ÅG£Ë†®8EjÊQÍwµoÃŽç>P—Ì%„Ò½âàQ§ö¡ßO(¬ç®½)Ó‚C˜&(}¾,ìI~·eJìò'zù¬ñAÖSÙ3ÆNC³µýλ¦W×Gþ1p¡¡†íE›Ê=ëÞ"¦Ÿ‹KéÌš×bó …7×õiú7Í°§á%ò9ha—O'ó™!ŠkìUi.°³m¿¹×Ô=ŠÛ´˜ðÀß´ÍwKû™~yI™Ï‘úÒrj/­%ÿ=MLZQ­ÛÒhñÀÑ÷d
+ÁFÞke¹ï¶J—•R»=´Ö¨<ÃâŠé…‹Wùf¸ùs®?f©«ë¾üÊjéèüäËçŒèoZm¡¯a\ÿ¡³Œ3R3Éü#ª’O8Lé
+l¥ë^–¾¦<¡=Bÿ—Ò“:‰Vz†L–jJó¡9Dʼ¡qvmä{gwÐdãnhyÝ¡¢ãšõT|Fµh«çVÒ>¹é0ÂD»Ò5Ýs‹U°FÓí¦Õ]iûñÙ•4ŽU÷ƫ]Ÿ[<ryDy¿T™;f<Û^ð
+endstream endobj 946 0 obj <</Contents 947 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 947 0 obj <</Filter/FlateDecode/Length 1651>>stream
+H‰¤WßoÛ6þW{¢†Zå‘’^öЮ(2 ]ÛÛC: ª¬8Ú;µœýïww¤,Y²ì4AYâñî¾»ûx$ßÌAòßv ¯ß_JX6ðz®þ‘ `~ y,¥Õ<!ëb'¥4W±ÑÒÁüDóYCy ‰$*AÛØ™f™3e`¾
+ïæð LžÄh<ÍÐK‚ê:‹•%Ñ8l+ø ÖðfÞGC¶uB¶g­›ÇCˆÞdÀ¨¥ÇxåýÎ/ÑE¤´°(ú5ð§ˆ#%’XÂ)'t4SBÒ¸¢7ý=ÿ
+ÅIa€ò#ÊÇ!–ª\MÊt’Æ©›ç²Ïù¡8Qi¯.Ci€<! 5Ó•ÆÍÕáoVÑ^Øó6râfS—.Öj¿DqÛÊùÔ’ä蟣MììúÔ#§lfì´ ÅxßDyE‚ïˆÂº1O<K¥ø¨È-ÃÑ)P¯àÎmSgi–åbd(4vÔ=‰‹!ùÏåbptœn!Ñò`ƒ t›µt›ºMˆÝ&¤ò„ô\¥R‡‹–
+…}=k õËþ–)Ùd¸Ù+ÀSÞùMH%û#Q2jŒloàî
+·×E½ÕË/±øb³ý~§cÒo¼7áæ ñœ7AÂCþa¿ÈGa ø‡½Ñýÿ’ ­>‰¡Ïå_ptœX «'ÚÝ„¬åß”8ðoBø7! '¤ãv§ÓnçÌGѹ ‡fÍÌÀzG}Él«zA'¼Å}ó22‚np±À ¤v$ÈiÒ—oCÈœa &ßÏ—0ôÜGÇKˆ§ÓþÞpT¨ðOZ.ø¸&Šh •âJ÷½¶å?®¬‘mºó›è¾f`Æ„fîo³=IJï7ç¸ò8ã8/}AÆ»9"ì
+ ¬-V8…^—¦@cü²¨è§$Ó4öµZ°ŒÐ=! hXdžÚ2¥ý‘ú8ë-ƒ¢e×_iJÃ…··ìL­ý+º-hΫcÿ©“l88‚ÆÈïî6[!… ø©P]Ô(‚^̳ Êñù¦ÐÖ«Üè¹rxŠµ©/]½ÆÉ‹hFÁhQ»
+v78DÅ3˜ptÁßlý•…ºÎbDsG¿ÅW6°ªw ò{¤rJ¸Ï}"|uLlê8ª-Ñz ðúÞ߆„€?É/#€öHß{è¯8‘†öjP<PõÊ£[áPå§qSÑTð"¥ì¡c­hÁ½ 1>ûûÄó&0ÿóÍsœ1×fŒ.¦
+|Ý
+endstream endobj 948 0 obj <</Contents 949 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 949 0 obj <</Filter/FlateDecode/Length 5102>>stream
+H‰ÔWÛrÛÈý•y¶J0f0ƒË£eÉŽ’£X”÷aw+‘ …5IÈ hÇŸ¾`0 ˆ±{_¶TEè¹tŸ>}»\ˆ˜þÚxñæ.›ƒx±ÿ‰…‹µ(¢86Š¤QljÈ
+%*NÅb'.þ ’wÄ°EK¡L”&…¸ÈM”ËD,V"¸^ÜÝІë…ø(’BGpx–Ã-¶«<’©1.ÚJü"öâr1ÖÏVϾ°×|>U‘ìuT1ëø+ß»¸ƒ+B©#´Äÿ‰xÏ¢P:ŠÅoA(Ó@…2ˆñ»Ä'þ¾ø;*üoPÙ(¥ù ròUmQÑS
+êR¢.«ºo­b’ósxa‚mù ~¥¦u:ø&…3S,Ëã¡+®T6¨mÀÿoa7zâTÍ@Œ|œ˜ ϳW$i¤óçÑg÷ð)gpü³*÷5¿U°›•I”ÿ€a´ÿ+†i!þ²,†h’ 4E?püz"ÔÒDj$5±¦HþêÞ^ñ¸GKk–*m¾&¶G{ĽÑj¸‰ã 9#aa¢Œ@7ÖS úU˜Õ²~ÂHy¬ÚzñêK(c ¤$
+;« –ƒE( "ÊeWÓú½XÓºz[á¿•x ÿ@[üG‡W‘ið6”Eð
+D}¤BÓ‰ò¶•èðÜF<µ Ý^ã¥+¸Bv»4")@À&R\ÈHê Ò¯A[}<Ò݇®Zá±bUÎ,ÿJ õ’ŒðraÙØ;ÔQ–ž“¡—&ûTï0¼˜¸Û#¶îöˆOÝ=ïÙ„²tïY„³Ù¯·ײŸãš2Ì£(·m(³ *Wd©¨þ*Ô‡ÎÂàÀuØ*Ä6p½‚Knö]µi1h뎃^êZD¯£Û!ö« -¯ }‘.þ ¹ÅÝ«ðâ¯\ü7Õû5ïÝá¹¥=x²Éu 2uLP‘*& G ˜x×ÑÄSÕ®‰qí®§-ýˆ´CtdMi
+ži@‚áCu Cª+Eªª%Bsl-F;ümˆ±†ÓêÍ‘Ü2X7èFï{Aç Sñ•ð›:¶³öQìP¥¨èyÅWP9¤”@Ñ`# KV‰T¢ì¬FNõ5ù~sįm¨Qu´Gcܤgq“äÀgoÜÄYdÒžù‰Œâü4n<b7ñLšTŽ$Ú›&Ó"‡ó°-qÁ´ª ^œ󞀡—mÏl;˜U¯›V`«B¬([æWYbØ$½äN:\pYwâ]‰!$ƒgSÜ(ÃýÄ^òÆS3Iò Õ±¦²´—@Tú“Y´9‚ù´ͧM|ƒhÁÐÙ ÎŒgª-KÓ<…âïRd–žÅ'î‰âÏEžu;²
+ñ±ãkï}˜ŽÜ,ÓÓ¤w Èí°$:tU{‹¿+TêÚü|° Ì7`>j€VV˜Ò"42U„IdB‹gLoþHSC¤ñÑÂ#¶´ðˆgh1-2ó ñÅM-ßÊuÂò^BþX¯¹Œ?êßp¤Ø¯°èË
+¨K9 ÔqVôᰦöÛ/“::]¢ÒªÚÖdeÕ TKJÍO {”]o@IˆˆŒ‡ŽkÝ’[¤U pÒ ôŠÔ!
+Ìùסž-4Ú_ù”.øSœGl éŸR&é'¤L ;BRp+h8—=0HAð$–/ŒÀv”~ˆ% Ò­çˆfÐËs„¶RÀöiÙá:ò&‘ç ®ú¾—nDÐ"ˆ„ùÄ
+Jë‚#÷ÅíýõÝåÍÛkñº*;¤‡¦Ãô~Εy¢P=1€hÆ™pÛpΣ¸ªGAÊŸ÷û¾ž<ô³'yšÿ4N<‡vôMte»¡¬ØW¢ k,›­ô`ö»·¯ÄCxÖÁŸ¡2¬‹FÆßEŒÖ„äÜ¢—0P €µ¦ot@‡ øÔ¢†lˆh/¼élJD$‹òv &-ˆ¦>"zÄ–ˆñLö¥ãM0¿â ›ZvBP²o†Jª,ø<…‰”ûo(~â_0·b/úXµØ¢
+L äI¸ä:ÀH+0Ç{vœu‰KîÌ–Ì![ñWG®„}a„tƒv}wmðç>ÉéEÓWÐvš˜bÇê‹­Ÿ0¡q7ÚÎΙ&Í©Eó8Sç'“â¤ýó‰­3=â‰3-ÓeîwcRÀIÎHÕODÝ-þÔø³"Š¿{y)n®°BŒªl6ª²2xBH”} ¥ÐøØ øt:uh1Ÿ¼å ðÊw< ï´µAìðÕa7º ßY7AgÒRqîû€ï{|¥ÐýŒ°"´œÑùq $ƒi+otö•áÐ$Y¤cW˜õÄ—±õ¥G|˜ÒuÑó¾TydF¾üÙ¦Äl³­Wä¾[´¾´åŽsÄ%¢AØÌ8¯S—FÉ‘æËÝCMAQHYpYý§½I«n·³užF¸rKÙƒ[dÌ`ÇS‰ú£Ã:Î"AM:hÉ;G/›ÙøLRj§<>•i¤r|zÄÖ§ñw¶j&Îัcmµ$ÏBoÆÎÍø£‡2[EMM>â}Iý‘KçÙÄ$r¨ÑÎ9Ü#?ï A±“ÌŒ“@1ZÏGÍúü‘û‹`l¢$õÇšGlýâÏL)nôŒ ¯ct‘ÂIƒcŽâþV@'Xl©ò{] 5JzÄÕqň«qåç ði}Ú®G.Ž`rîöt¡¡|{GŸ¸ÇÑ'þÞfB玵8Rï
+î˜~{ÂsÏïK˜m/©q0ÇEÈœŽzØ=¡÷†VÙŽ{´–‡ϵ—sTEb?Äy索Ol!öˆ¿›ª™†žÏBlsF[]T»§~¸=¥*T› W{X®ÎAK-ƒAKßqWÙÙÔPóTö„·£d‡u×j1ÇeCz{))ªÎ>.{Ähx†ËÚq9õ&p«º]©ŠÏöÕ·ôÉ÷°þÈ.~æ©~(‰wÌà Uäf®¨Òœî¹—þx¤þ¨_µ½1ñ}ÛúvL"Ù©œ‚Â4WòüÕ8éë^Í0g¹áJ¦ÞŽ9¸¿áâ‘O÷ÄïS#£4vt2ìøÄÖ§ñwÖ_­>Œb‡²î¶*·Tâ
+>*+MCrrå›ÿ1_6½m#1þ+žâƒ]iô}L[´(°ë]¤ÈiO®­:BÛ•”îöß/ùrF#Ébš& ˆÒh†|H¾¤Ù§:Ð(2Z½†òy•ýhú±Þ¸mÓ„SCËì%ü>TÐ=•9ÌKX|Ó‚ó8‰fŸê !¬¹“ÿÜ–zL±5Îi/Ë[[ïE9B{ô‡Á6AË&ÄÌ
+„(Ô©±dKUš ŒÝjáË•Iô¢¢˜]øóLQɼã
+=ü!5›Q£¨nH‹M_Í9Õ7Ș-\+9d½çPùl„º/Ë·›³;¶ç›Ý4‹° i±ˆË‚4Ú´5³…fžIÅ2²©= ŽbÚT’øX,sps>Ú:ÎNÀWGŸžpæKTüû'Z±4‹ey!|’EÄLñÀ7ìÞ$wíðIJáqiÚ2(ƒ\êì³\UÐÀ•y¬õ1uZ€˜
+Ô? Ò@›68ÀÐ-žaop‘rsP}&qG7ýÉ»sD™¾ŸXÞÝUoj¹®§zÝv¸zÇÿW¾d{ Ö”
+qâgÓs½ª™ŠyF°£DÒ¤´Þ¹` QC—Ù
+ ÷~•9«uµæ.I1<@7ñ¾lr}¶¯â5HÕØ .t´]ÞAÝÉ^ûÄI£¾Ÿ§Ìö¦âE·_jt¡ýŠ—˜–œ«5E´Jõά™m`5óSsÅ䆖–< Eν÷®›V=Ö¨Ë>:Eæšž-Bßë6¼n+ í¦\m½©üv¤õõŠÔ@‘âb6Š_k§îc™´¹àêòõ\?cW‡j?3Yˆ kaTÌ.ŒŠùÉaL£ÑÐ7 #%Âv-ªûɺ»¦¡èräßWRÃoF½Ãø&&½Š 4GΤÈùþjŽf…­Èï‚»¼Ý£YA›Õܦ y¼dÿ[™½>vƒ&cùKäõŠ—Ø¡!þhD4+ªSc ¯ÉøÍ>¹¤C®é;@ç#šfÝàò°ù„_¹ÆÝJð^úFîÆLW‡„oì {ßÖ'éÊ+y|ï^«ä!*—¶öœÑwT8}Î>“6(`û#ÝŽSÝñ3í\K1i ™¤ k
+ÍB3Ücd³CV1ÏÌ^yD‘ŽlD{Ï‚ldß/Š ÄdÓl]} vY—v?" ¶
+Þ±k½ú{õõH½ý}°>Bî—ß0ÐZOx-U\|²£"W†âǼ êÊÓ
+ E‰¯Ü[ F‡Üã?Ÿ[NçÆ ÐPßGŸÝ¡±ÅÜo±ô‡&Âg¼±%V°ßdbÅÎ,íœ`Õ,Nr£WÀ0'®*zÍìpRÌOÅ)*OßÈ^§…À}Koº~¬²_šªëçQE‘ÔQ"*²U¢šÙR¥™gúª?˜Ñ¡ÊóUj]£ÒTѪ5ý>Êeß÷Š¾ï…½Na¬.¿ado¢úW“˜úíç¿LArDðÇ°»Ë(ê»»ÅEPI@%*(誒Ž² i¨(f‡Šb~hDŠ]‚EiFÅrF‚ +”XìÝ;ö´Œ(4òèC”ˆ˜ENû¥ˆIj|"\;ŽF¶ÿ‘„Œƒ¦’$«PoEšÙ‘ ˜gHðº8Jtb&K%á…!wý»0‰T‰»û»àu͵"³\H6ýDz–¶™–ø—lBw÷øìh¶^6έ@ŒßìtETwi(fð‡(JâUªw"cVÅH1;¨ó“¡Šb*…^ß¼ T®=KÚ¨T½D9úi¬®_+
+}¬w­0tVŠÙa¥˜ÇXÍTZࡪ”< ´ªg´©_“‹º_Ê…ÜÇõy}‹âª}«  zÛR¬–Å:S_ïòL­/9s¥Ò ìºWuâôo8±¶P‘Lt­mTïO§c#óûl7¦ÃøR&J/JŽ«õš?Ë„âÅï•è%¬ÆÍEÿ
+Lv‡=ÌÝ͔ijá+&Od¼i~SS¹£2ÝÂ\Xúnåv âø ¤{,‚ ²’§o›ù¥}ÝÒ®sÞ¬êî«4=ë
+endstream endobj 950 0 obj <</Contents 951 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 951 0 obj <</Filter/FlateDecode/Length 5566>>stream
+H‰¼WÛŽÛ8ýbŸ¤¬/º=æÒ²’Lâì<d µ,w+ã–Ü’œÌüýVIQ’M§`¶eY¬ªsêÂç[Ó_Ç~}õ1fwûuËÿ3ζ{VDqœZP°$Ò8–,+x$Eœ²í X¸ýB;¸ÞÃUL$Q* ¶É“(ç’mw,¸Ù~|Mn¶ì‘ÉBE <ËáÛEñ”ñ”³¾f¿³–=ßέAÝB¡î=æÛÒD­ÒØ(bmãg}îö#r$Lqü–ì_úEò@E1û#yˆpÃßs|JÂoÿ‰ÿ&'BDi>™,¯Z‹†.H»WÖ­?™ëç"*¾™]8(¹pP¬þgg‰"Žø,üÉO¤u¬âY:÷ hãNÉŠ§€œ8³3ç<tËWa¼0ƒ÷Šð“ì+~׈c&Á€MײË
+ö›®*ì1<>Ôi€aCž †«½#Á tí]?†±!$ðø²‘2N‚-YY‘| y”k;RÇŽu¿Ç‡® =;âÚîT³‘v°R³¯iÉ®Ûæ€Ç4ãß?¬™ñ@DžE’³ ¸Ê°’~Ö1ë0ÁlièÅ«PSy"…õŽÝê#ÈŠ¯ô®?tå."³WTIŠ(KÏÙ`¤rXÄc…·Glñöˆ/à]LxÃz/Þ’JÁ›°}<Õà4‡$Ù1‚¬UPî÷ÞA}ÀH”´r`o{m:1ÇÃc<6žÿNxF±+›Cy{ÐÅ>Ü>™:’æ¸[C7Cî‰öes0Œ¹¥ïª<{XBžX
+d
+ôŽnφ\‘tÀÔK´mª
+P.22Ęý;kWúõ¥“”b¤ô)©QCǘ£lºýöé&Ì‚O€Áë·¯®]iuqÒ¹,Ïr™ ø™¯œø°›pS…BǦÿÛd§„ò1/³j9Õ[W“ÍN·CË¥zRIc˜-°X‘u§¥´…±fk]zd
+"ÃûOÄ‘ˆ¶¦ÖõóÁänF\„QA)jÍ…ˆ28Š
+ïmýóõeØRØ#~2‡cûç¦8Êì
+áÁõî7oÂM¼ 7Ið¢ÄG¨^B˜Ï_Tî.–Mœ„‚zÆI© ®ŒBN®Èc8 á:Ôq¤áYˆžÓ
+j0nÑ:zÞÑõÏ»õØw¦<C ݨ\ÕÄw¡ù. ß…ŸïS
+Ž~PO>ÇóB¦ÐÔ‡ƒÃ¥T‘’&t<J@=ñ¤
+ÐYySźìƒ|b“*>ñSS%Éy”Çqv¹Ü'YA·]0å*ËÙ•äñ¬ã(tƒxóG«
+F«Ž€xeqP
+O%ß-<B]¡zZ`™Ïf5'Åš£‚>~­ñ³Ç‰¤Ä'¨A?OsY˜B7óíÍE¤äÙ¬óÿ"ºlú„QG$ß#û„ÌŸE,‚¡;sXcU¾–|SHÉÊ8GêÇr*MáÖ°ææ:§€÷ÊŸSÆ›jyUð‰mNyÄOΩ4ÆûG­$)ðáRO>â#@§g¨XË›–Îq! $oižúA“gÌʦtðY63ÞÃ]—2¢/5Ñ!Ž41éõ¥'ˆI¼õ™‹n«hƒ»¦¹ð¶³ŒÑNNÑ^Îf§Y­IÆ•ÑõNb9†§×¤s@…¾Q$*ŸuÆ'à໑ͰIΰÀR·Š,68J*„¥"fÕ;F«ÜËwã¾oZòˆ-ß=â¥[—©ÁuÙOÐZÛòöPCÁƒ¦ÚÙx¦‘Ë[¤Ã¡¡¡üž½„¥§žànï´¯­<0'¸_!¡‚!#é¾Ái8ÂQ½¤¯‘pi´ uC¸T‡•ò,’Xã¦'ƒgÏaÆŸî³v®FtÜ¡é¸Ç—0ü;£áw_Ûü°¹ÁÈÏìBö¤“5#­®Ê–Öt£Yå ÉP²S¡Û_À¶}>aøŽúï3øÔø_;ÊÞë|Ké5¢i÷øX»ß%í¸›ÞÒKöáí ¦uaC€kˆÛõâAªIóŽÞµÓÙ#£U@U®•#˜QX+Œ®©´Lñ¯&Pœ‡9ªMÐÍm¡ÛWŽ–$ddäÔ¸d
+ÿÕØkG"ã«E2xÄ6<â …$άGâ<ǧ ‰ÁÖ©ü~j1bbý §?¾!Ïè'æ GÀ¦0
+Ém
+›Z†Â?+ÏIÁØ°µüD6úú"••~¹¶êæpùÒïÄ¥í+¤BxC73ƒñ©4½.ijõàÔ'öIÌV7ýÊÉ|áW=.K³oLc–p£+–àWY¯í·<ªò^‹Šø¶Ðó"3”y‰Jgôµ5`ÖçK.Œ¤ß[úUWwŒ:µeC´áK†ÞTzI™ª„*ª×W¸‹þu@D¶ÌYaK© \ä~¡T½Åcg8»ˆh^[v§”@ë·Õ«¨œÜ«F;é Üw¾ˆ^_>‘š]ÓÂRÚÌ´0ñ)v“¢ »Än¶Ygñ¹9´Ø „-vás즾…y£ÓMRÚ«cz>ÔÖðÍhhˆ{œÖõf;!DI_©$‘®íPw4ð yÄ—œ[”áÌ–ßBY)ŸHm?ÐyÿíT½ß
+¹Ðö€Vùq ª‡ßåX—Ð@VRØÉÝNÚ(Ö™;ÐRetFqaë Ç%É…ˆ‚b“$ù:.‚2¶E„‹¼\Ϙ¼ˆã¢{Þø@¯Úï›-I7N¹S7ü¾S÷Æ/á·2‚Àê-üt,±¯Lz®+ÿ¢q†ÕÉéËÄæ
+ßø…îÐ’åTZÎ:q²RîW*¥†¦™Ú¤Yá2¢ß#«"eVBu•ÔÔùCi=FŒbu J–påWáAâ‹w€A%Ô0™yÂÐÝLÕL[Çû¿Ì„q¨ö<1ˆ¡«Z[¤ÙN梉eZ¿²°oOÌCdÜ"}Dº7«“3.Â9ÉÖE˜³èmn‰Ba ç@øg[¢$ʉ,Æ'R¾¢ÔDô'«;B»ºT¬4F.éÐ`t¦f[ùžIñ÷Ò`~£‰¨åJ²õ±$G¼­ãøuâµäþ‰f(LÎóqïóçÅ%‹Ä¥>’"ÏÅ:[„´½!Cý—°Ò8©}ê¸ä
+Ùùìß|`»éíäÌM.ã+ÿ?ãë”ܽŒìþ1æX¬`¯-æÞž™£Mvp>»³%îãúé`¯çñ:ɃÜ
+[lÂ?Û7ÆYB3EÁÛ®Ã:(Žu¤r-S‡˜Á ÕãØ §ìðç$ªÁ,xÉEslpnbÍE»%>¥™>Tü3áuU“ÃÇãÀˆ¨Ý“ºå©—ãÈþ˨LØ« ÒÒùù q<>Ñ0«a5Lê *N|¥¾³¤Œh—ñʘ^Hñ¡m\89²ü?ï%^YBjþoØ÷øáY©ÛÈÛÿ÷ŽgÇrüç²ãÞ‘°s¨/·¿) éY„øaä©ÔòÞÅ°ŠÿûvaVnå'|üƒÞ“‡ „w2Lk³×š¦ÇÌ“ÜîTýy½öÇö×#×ë¢^Tãò„®G l¯G üÓÔ™Äë8}›:ïÔ&Œâô©QaÂ4
+VíÄ»0júN`C(7±CˆßÒx×vÈî¾j\@ÅRÕ]³ê&’æÔ”‡6_d6òP×ÒþÌ4Ž» BØ$ð¶Ë£1^ÒF ¸cÿ¤Dÿ9èıüº\gAõÔeA—:H¡°)(|^~[~Žâ`õ5í©(|õ 4š«SõcTÿZ}¨/¹ôL _£Ž/Ô#h÷cÅÏMË}UÆÔ‰1·½¿¢qáqè„âýÉ™+šqjºGt¼´ÔgÆW¼zfú0:4yû[琉ßÔF UhW_¶‚ÜçèxT{€¦1¶êz
+ ô‡{ƒ6R„-à w´’×nØúûÔïF¦êÎøíIý'ŽóY‚OtD´ÚZíæßšmí%¹ª«¡–ÞMv1UҖᯧù­÷š9÷š1Hî0¦W'NFç;öì­(ácÛ‹Â|<õÎ}~eÎì…Ì
+ñÊ:ܒݨy¹“Oèã-fœŒ ¥oäÀ‘øä­³¬|Ì{¨œ{UŸ†^,u)V|ɽꌖ§„c‘¢É;.E O³‘ƒ¡qJàK]8Î
+ùá£áKa?Ø 85FU·eΛdÜòæèäŒng4@—2sÿ•ó?
+endstream endobj 952 0 obj <</Contents 953 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 953 0 obj <</Filter/FlateDecode/Length 5304>>stream
+H‰œWÛrÛ8ý<’[+@¼<Úq&å­‰Ë+3;[[´ÈØLdÒ¡(gü÷Ûݸð"Bɦ\%ÊlèîsºûàrË8ýõì—wwœ=Ø/[ñ_ÎÛ~bEĹŠéSi”rž°¬Qó”mŸXÀÂígZ!ô
++дc±ŠÒ¤`›\E¹HضbÁÛíÝ5-x»e_YRÈ6Ïr8EÂò8DʇÍY_³?YË.·SopïXâÞ{Ì·¹‹zKãc̵ÿÖçnïàˆPÄbRà3aèQ(qöWŠ4ˆÃ8¾øM…ÿÙþ þ\Vq¥¹s99ë-::O ­^xlLBôþjº¿ˆ£â»I²•ƒÔÊA\þNΊ ‰IúÕO¤÷X$²lÐf<%+~d5‚œ€<åáˆqò.̃Û[„¢—„_Â^ðY#Ž}¨‚~iº–…" ¹Ò¢ÏÙ0Óïöu‰o5#’ÄSø/"ɲ”G1¡Ã¿Hî'qÐnHãzR¢'UÓ±ëÖ€ÔünTÐa$_Øo¡ô;¼†I1Évå¼ýöåwîŒÌ0™àŒŠ#ž[g꿇º=`"HS×â¡nk(a•aü6#IÉü{9‘'gë]Nñ¾.ÛÃnÃ8x˜âI”»S0ëÿ+DZ¿Ì|Ài¬PwYÆ¡Š8 AÑlÿia”BEñĪ¸¤
+>»VÂ#6ƘGYª­±TçÌvkÙO`ŽÇ2’'ô+T”QÒ¥€Ú¤_ß²÷aGª…¡Ù•‡@¿¨ª¾¦Ê7>
+xÕVìâö&y@D툨š„4ÑŒãÉœmDcÛ+8ä¢8ìßT#¡¨Å$c½(\'€PiziK·¡PÁ#Ð{% ž&Áe¸)ô·»öêë‡æ0ôåР³PëŸpEÙì©TTú÷õ®Ä'Ô >Ø€Â<¼§Àñ ›LCšø£Û€O”(­2yZ,{$pÍÚn@7°q]Ý{ò¯Š\5Üò”WÆ
+3ÒÑj…9³eŽÇ<gÎ:IDc+£€¼Ãç˜ø+Ûª6ÔK(èþ
+¹ù\ïp5¥áÀè)‹WÇšm‘D#výôL5ôóf`ê\ß ¶Æ¼R"‡¦£œ’#P…C*?Ä$é˜$! …rÇ'ü9Ñ| c€ñ
+ÍÆ'×€0ü„øu`d?‚'ȹCM>XêRøã×ÛLV£"'+[zB£é‰ ]KdîýdÏ=ÙwØnôǾŽ¨e,
+ÚLÙëŽa*R~Â`öŽ–T&ððŽŸÙrÇc^-£†~ ›&jri¹­û¦£&Úìðž}–DDi¥»nIvý&ö~k²»6µŠMµˆ½ÐZ®Ù—÷Z[.:S::žÏHª‘ ÆÄ>Âç[,õçî uu¤õ'5ħrÐjU&#5_pÑÄ m}¬[µz´@6¨íUôØM\\æÖ¨ç®Ü)Zi5š,uµ6•OéŸJq 0ùûŒÇl¹â1¯L¥ñºsF†¸û¹ëλ0÷ /éfÓû>kl­tÍùØ–/Xçx…€\ßïu©Ú)¡WÓбw4-@XÒÉl±A!rq àš}]ê[Ô3¼­ã.U‘¤À0"ô!ßð‚EÓoxTÓø§ãa9Oë¾î{>º ŽZQM/#Ú Ö©:0}ö®n^´úÒá‚­dïB#½n7Q'ë­›ÖðKÇNþ®kV4ö%.ˆJ>²xÌ–,óJcY*‡U¶¨"†&hÙ²%ƒñ_‡˜­–Ê—jT_ ËV_0;µ~_>¤Væ9ÀDfG¢Œ;°®H+é/P
+Ä à°»ºG6xØŽÆ»è‘KbʃE¬IÇÔÇR³¨l \:jvj‚§ÒoèÃ@º&¾„Ô-NBi)ì•xÖñ™a>úcKw3Ò:¨¤¨³N>ÓRN¥iºL6fÇ)“' ü“•ì¹ì¸ª÷6ŽÄé(£3A.l_‹úlù¤k‚4ß Ìþ K-Ô= hœ©¤VÙ?¡ÿL…á¯ÞQX«;‹(ä]ßI "ä•Q®¸½‘Ѳª€ùÜ;®U
+ÛDøe>«*ŸÙT•Ï컬—R
+ ]ãõÜÿnB¥£doìÕ`¿GÖSJ“r—Áe…9ŒVŠeœÐ<÷U‹´ÕRuºXë@ÿÁwê qò¼l_ ¼{!tøKžËD+|TÍÎuáÁ´ÙÓXg­CºÖ!'7HA¾ì4¯°jIâÉlÙ‰WéíÄJæQνÏg¶œñ˜rl«)h/“7»>²7wìã-ìJ¹Ã8wZäl(áí¨ÉÜ8±½ÉöAXÜ.Ú <ã˜zúGK …×·ûW¸ø@r6Ø“'Øõè\×\HWà+§-ÐŒ¬òk1j«‰œè3ôk£N!xêo`úP!˜‰Þ³gêe[¯©4„$‰½pÇY¤Rïàõ™-ÜóÊà•c¤©o‘ö¶[¸@…NH·—’Êæ‹Æ&6Ød$T’ âb¸Ÿ]F¥ÛД†­H9WÌ\ØôxÒpX­÷Ô©w_˜>¸$`<šE8î@†R³SQèZ°M§Ûô'î­ìÐT56 *Þ,9A2νš[ñ”JÛW¼³EÓc^ASŒh&^4e‘Á~Íëv¢<›Ê¥'.»^ È‹ „Ôç?¿‚ÿhf=*(NRzˆX¥¨Rl´ÓørÛà=Ìp
+_ö‹P©à5L
+#𒲃[Omaû\ŒE
+ ˹ˆ©8çâ̽vá wOŽ·{’Îe@žH'½ËIÔïë²z¦@Oè|Ó ’.·?-åþ˜ ]3Ew·gæÆeX¾] >;¹
+;Œ áKŒ…ᔤ33sß<¶åÑÜ1Àóèê¢Þü/ª¹bÂUyO°
+KÚVô:p¥è)ÖMŠ˜ MåÈ^ÑÜõ¬³K¯%+ÒŽPžéuüD<øaç«ûkÍŽ±ûtˆ7é›™»Ø.¤Ùnõ¿«Ù—i½¦ÙïÊiÒl!' ÃHÓC—t×%Í~i®;³ ÙRØ.-…/ùè) +Ü6Ñ ’l’Ó+N=Œn24)ñê qƉþîà ÞP7gÖÿÃ|§FŽGÖ¡&òi6N™uą̊ÆüRmà0fÖ²à„l”æÌ]tN_t!ìŠ.„¯’νfÈ5Ï4áÕÕügcaRöŸ×[Ãâ lþUßTîkÓµÌèê~,IW˜ãïÚ”£*G÷†Ùº›:0E?‹L¯>¨cWMÝüÑ×Ïüm­‰ÅpõÈ_ë¶f=ÓØžzD8¡sMŽ JY·Ø¶îìQ•ÆžËiäs=45ÿ÷€}Ë?JsÌIp_¼­Ü¯¸µ¢û¯¼¦úD}ì÷¤ýךzKZH/m ßZ*#b[\“lw‰!ì!„Ö9öI%2$¶Ñ¤ ‰µ˜ýôÜdHÐMܶ‡k@8ÓCb‘$Ñ6ˆdˆä
+
+©4¤yÀšvniÜÑ_Çó'o]–ìF’$L$ a!üüm¢‹ÍvçîœÛ¢{JãGJGÝŸ÷CÃØ<(YÿÛ?×:]=7½ÉÛ­ž˜öº‹™Ýà­ËtYܸ0ÐniS\†ípº“}³ñŠ®×Ã4Ì«Ýœ0ä„V‹°Ù=L-Ncz˜‹‹ªÎ}_·2dqÍÑÏÀa`žt¨3I’ †L¸¹xGÚåÝ\¬CÑ ”¦ZéÂ’”¦‡Â’Œ&t”I”³ÑË–Ž2¡ók¥s+êÜ(½Wì–õú‚¡Ä‚´¡ÎsB¯Ùð«÷ÝØUÝQUÜ£”Ìà [©#“½=É›,˜™»Ø4d+Ýê×V^&÷š­|WN“­r2¨ÔÅÎ[‰% ]P°•/ϵgŽvK á÷ê™Î2þb¹íÃ~nT£º´cù'¶ºí{êK¿¬ s¿
+bº¢®“oˆ5+ÛæLm)S[_Wuó»¡И¡¤ŒR>Ö ¤¦5>äŒ!`}Gk4iAûµ5·t.°Ïpy¶g+±Úa¦O;_‚<¬OL‰x9]‹ºoÁÄ–Q«¾1´ŽTq¤c3~å‘ÊþÐ؇ÇÌILùÔà¢@ß…“/2@ÈFwÛM²µN
+;ဠö ‰^
+r«#í«}=Æ¢Ƙ¬dŸ×[ÓN’Ø«û‘—(GTد”ú\ÞB|©[:ƒÛkMB;0M¤&1ÎHU.Ç‘±Ñì¦×Àè†ñÁkƒhŒÚ=úÙƒZø0–æÉHëÍV–¹(€$ˆa!€È’­ƒ‰ Mlé(è¾>•Ócmð6 ç\RÛ¼o&IÊô['ð;Ó
+–!Þ·ëƒE¦Bh‘æã"Bo&N)l‹,…ßk8ã\o¢©Èp‹ýšÄ°øU„<§¯õvVëoá2•u»-læK4—¡²siR¹ìYA-Ÿ/\¡CÑ`Ó+MµM¯ KM¯4=~gÓgñ&Ì-Λ^"m>`ZÐGÌ©ÒÌWšA›8Ý]w½X‘wÜƼµÅÍÇf¨p™Çc ‚½vçAUåy0×<ëu¬QW{®7µ‹fîâ³vñ7Û¼N«'»‹§ÎzÙ–b•ëLë’=äŽ0ªWó¤ÐǾ/'Läœ,F·…ç×+xÛàüd/εg–I»¥…p€‘–Ö/ÌHiDïÁÕ›Ý@=Â2uý¯êyÉç±9Š‡-ü¸1rž›H÷:@ EÓ]Œ@äÏàŸþÁèȉ¬h‡h®­ÚЯiûŽ÷f6jŒz¸ƒt”æ`jŽ’B쪖^š})ìj.„5÷&¾~ÎSÍuA ƒscp`ê3W~èÎ(LU«àuðss,÷è–¸òõ¢ð“(˜eúú·³gä{óÓ¯Œ%UÎ6à…|KåþX«KˆR±º:£ÄdD aW]!¨®/®–‹ç›<u€þ´ÎWßSz›^*Ü];Ö½‘LrKÇz)±ÆÐÌ”gãG„•Ù(µÛ4‹m‚5¥¼µ\ÓxGÒ%×T»š
+á@M3_ÔB.j”Ñz±?ÔÚÁ¼e´¯¸¡çü)øês¿káÊ{Oe1ÙSݪÖT¸VÖaŽ‰:ÀºB×ñÀFÔö‹0ç:z
+n³<ZÜãr
+ºÝ\ú8)N…Gq
+n`F(ÌÍOù
+endstream endobj 954 0 obj <</Contents 955 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 955 0 obj <</Filter/FlateDecode/Length 3088>>stream
+H‰¬—[oÛ:€ÿ
+) Ö¯’öíœ&¼Ø¤ÙÄgضX¸¶’j‘ة휢ÿ~g†I¶è\Q4–Hq.œ!ç›?f¬ ›[öÛÙuÁn·ì·™øoÁ›Ý°:/
+#郚›Û¢P¬¬E®daÙìžq–ÍþG+„[QÀ
+œZ0ir«j6©L^ ÅfKÆOg×SZp:c?˜ªuÂË
+´hX.«\X&
+Î6 û7[±?f}kP¶Ô({ÔüšèDzeálüìôήAE&$7L üUì_n Ï×yÁ¾ðLX.³‰àŽ |2Ù×ÙßÑà‚ÉFÊÜVÑduÔZ4t¸´zÏ:>ñâ䛾|!óúÉQåˆ"3¢¨Ð_²ž.Y¹èm¿y…"'c_‘(«¾O6–²~NMäò Èý<ìb¬Î²Š_^b˜Á{MñSì/üm0Ž›Ìð->´ëË„â°¹:D¿`W0MßÝ5sÝ6Œ’Dvá÷vÊÞŽP2ÊÜX[£™  d'lm4ÔÒ.yCë\æd]n2Qpö1³üþ³L[óx\ßÏ[øYáPYóéj‰¯‹Lh>ß­7™(ák´ íQ=‚"DOÒm[muÛ†™ Ru®l0hº‚[¶‹ù®ÙÂ.°Ýwxol†äÎ8ÁÙr ï–ßgRp0nRs\ÅnÐ…M6‘<ÌOwKâ&£¨vAïø8}ŸÕ4NJŽjç·4³Þ´·-Škè+2‰žÖ¶[³×‰%‹IÔÖZòÕ.g!º?Üœ<QRžZ?O¥©0a»aO÷³”äá^‹º—¥ÓÓßβ’oÖìb~ßô/a H2šð¤¤ü@¯“²§˜³Þu[õhp zÞµ;¢d¸y‰§­Ù6«ÅÀC yW¾ÙC'嘇ÒZºÚ¼YæúI}0µ‘¬}mWóÕm3¸LÞrot …ÇS
+\éÔX?ŸŠ\w•ÊÃz‰òö5b–²Áeªâ ›¯–ìà"ôJœìjÜ%¥…ß½¢ÊËxålàj~CÝój8»½3©¥Ê»0>]
+¥êœ5¶´Cg¯›ûùj×âåºØ²eC·ÿ¸}pÃëÕ€põËB=,_N{2ÊVåb I«,”L]úâoö&µ­r8™Ý´Qm;º¶À"à'eAq³¢É9©K|NM+!p$5­a{ðÔ'¦½Í‰ÙaÑy¼¹½c oxëÚºÄ;‡øã;YßcI˜c–A10P¾ Õ ²Â½/ÜtÍ©ÀRÓVj~ž…b ViScD—>^•
+³&’d» ØÃÚ½9¤º„;ØçàxoÏ’ŒÌ뮃Ϝ}k`¯ëͲYi³ßñx¸ ¾Ý5H‘g§Wp®iü‚MIÃc¬=$VD±•{¾^‚™¨þmþÀðq÷ÉŽÍÂÿœÑÙï4r¦-4äË{r&l6–òçsf0á­œÙW<Æ™AÏûpæÐÍãœùF#g&=”¥Í»X¾ 3QT±¯l3ªªÞꘓrÌ1…©”<E™I¸ÔÂ¥ì~j¾\j S[,û/„KAMBpóÍt)|Ÿ0ôöåt)ûV½/Q@!SÁõÅ\èÜV§ád/®5ÐÃÔr/SsžRÓJI<ÍÉéKMrÚÙœš=ÄËpï Q%éÒT—âV¨ÑƒL5«¡g6ûõ@þ•â ›'ÊÊSä9Å¡¨ìse ;Y®ü„tú1›T|všM$0¥äøÑÆ£AX0€ÈëVÑ«éÅYW×ÂYÂï`í |ö…_Oÿsú…‹/R¥îUAUÅ”§ó À ;'sUx¡œC]\2¢Õm6pÞ!B|oØ 7™FÄp/¿+àÄwU¶“O8QDûÑ°í:¼íM‹Ï ‰~WÈÅLA ¾¼Dáš_ƒ¦l¾íY/:éªïÝ^67í
+­ÊŒ²˜A¦Â*öÙâ¯üš£ñé2^ë$T+:„\4vlvªSK=T‡éT§V{¨Ó€©ƒcN[bµR*ïfÁ Õ·:œÅÔbèÊŠžÓJc4öï—Ôê‘ÙW÷ ß8 ˆî{¶‘z”°ËŽ°[
+ãÝ=ÂifŸÀÕóLjÂxĬþ4;ºÚTÔC%@Wíªl
+tÃì(視zÐ Ó ÐM­ö ¦ ›Zí@7Ì&@7¹ØntztS«Gf“ ‹G  ”!å+–Øîây çáâÓŒçôo.k!KÉO>œ¾ñJ¾ çþÙB[䈟v Mû‚ì*ásšÂADA”³ÄU }¨Ù}ÐîZ/>F¬+éælÚ Éµ·ÄÍ%­wClŠOØ· –;Vý‰9Ü8=d¨—s ÇIap0×ð$ðIÑ7sTN2¼ñK`°†Ù¼À§žhˆ}Fý(E}Å—¬Ý±-z «gXïT×å1:PÚK3@ÏAz›M,„‡M
+€ïp/×Ì) ”*!!ˆöïcã@©@O8öˆ²î©7ríJÙ ¹uY@&PºÐ;ÙñÇ0y[7æì¢/”(Ín›w»Ø+&*6zöX£§Ê
+¡lÐèIhô*¼Ç±Ñƒ
+dæb’1dÌ\¶ÞÓÌõ¾ÚAsýÕêØ\ Ë:¦ò4çö7YÌõ½–äÇ› eu¾Eq`a¬#*Šë3ƒôh.î†c—Í\|´b.9ƒÊyø|ä'SÚ½\:-Í_~:þ
+endstream endobj 956 0 obj <</Contents 957 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1512 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 957 0 obj <</Filter/FlateDecode/Length 3881>>stream
+H‰ÌWk“Û¶ý+øv,/‚ä—Ì$ÎÖ³®íZª3“¸ÓáJЮZ-µ–h;þ÷½÷‚OQX­_iœ‰ä%î÷ü´`’þÛß°§Ïç’ÝØÓ…ú·dŠ-Ö¬R¦š>(Xê„“Ò°¬PÂhéØâŽq–,þC;TØ!aŠ–L§Â™‚ÍòTäÊ°ÅŠñ‹Åü’6\,Ø;f
++@y–ƒ Ûu.”cJ‚r¶÷ìV±ŸCoP·¶¨{Öšù8v1¨l|Ô2øø[°»˜ƒ‰Diž2«ð¯ao ‘(n…doy¢×ÉLq‰ï®Òä_‹¿¡Ãÿ
+[ 2l©G û€=öÊ>Iù›]Åe8ж&ÙkÓw[_âÛƒgÔˆº¢ñP÷ª‚“H]nÑAP ®*òÊ×åÆQ% ¡Á¤äJIÎÙ?/X¢SWðË•‡ç*™i^oêOhœ‘q4jFÑfk“R¸Ô…¤`GvFM!Œk. 4Ëo“Œo)ó[ Öð»DK–k¶YyZlàäk(ã&ÑÍ´³F%~  羪Y½cמÕ{ò˜ª—µ~JM¹É„*R<y+ð§\úÛ/X‰µ`‡Äñ÷`ìË=XÏùu23ÜïÙnÏ0%ÃPïü»÷äšå÷àFŠq/ÄQðZÀ²Í ´Üb¯eà6 KáϹþSi™´éÃ4«bÐ~—OŸCzö»÷÷ìEyç‡'@Y,HçÂYÈøÄnÐrd˜³Á™VY.tÞÙ±ÀÙƒ&÷ k¤kæ+<Lþà«å(B­òoaÐòP„ÚZ‘÷êLس6ÅœZ#]ÇÖ^—ÕZÌô·ˆŒ´<™‘)ÆÒÙ‘Âçj×OI=]Rx¢OYM‡åSbr~ïYY­ØdÒ5F‚îütLF’^0 s‘uófgÑò5ý†uµÄ_‡sp*­T8³ÚxϪ6}´éÄ™ níÜß•L4˜€Ëƒ1‹ó}‰=¼¹¯wÕ°m‘ ½zTµÇ~‚x¡Ö² ×8@ ,9ý€úõ‘Ð:8v N àÝ™½1 j e Rå
+\ÇÄZ;ߌtBÇÅüDÆ7^G¤Sdµ“œ‚ïÙ…Ü6¥}pp»Û,èe?h¬¢@®æ
+à·“(Š³çHénÜOÉ+é›XìÔ®jl!L^ì|Šr†ITÊ6p=T:Å `@ö3§¦GPEød,™eà&°“ŽTß
+|ˆY”­«tàa7îqlêø¸7N‹ÔµSÕX³k8ï£ò0ðãâ0ñ£òfäGåaæGÅ'
+5qéøüÔÆÁ¬nÇ”²Â¸Sb%N°~w3_£ÛUF#´•§ˆbƒíaþFw£8Ï;9øbF»‹‘òéö‚p°•g™ÞŒïèn”÷‘)ÀŸ¡í0Ý£›Oˆû½Íì7#¬/\꬇%&Êá)Ñ0ŒÇ:d ØmtÞUN´]ÁRfŠ4At­Uà[ …Ð[š&)¸„ÿÙË+hÖg ö +@Ÿ“¶‡¾RƒKÕz`ê´ë*Ëqјü§#ðø¥×|—k¼¼F†±õlë+\ÝÀHç¿…ó[døF"8–~Á6ô ®W¸-<.ËzÓia5jðŒä‚â î‚/wt…ÀVÒGôCžùÃ“¼Sôòž4Ña»kvw~‘vU’‰º÷·ÿbéÙ³A  ÿ¼ÄIpõ ßÕd#¤î#fÙ,i;¥§›*#p i3)ë} vÁ©"ì
+"˜©»#Ómê Üs¥`´ñÜø/¹ŒêÏlQ‘5ýzGv‚ãÑñÿ Êž­¯‹Ú–f]g%Ží$uN Ù(½†’5mì2ÑÇTw¬s¼<ùó6ΣÝÛq«fåkÕ¢æŸ*ÍP#¦qáªM‹ïClÑrbØ·‡ÚꮶãÀøZ¨Æ X]gaþµcbì1T{[ùø½½–K0¢ö.Ñ&ÝÕ
+WaŠ¦¿˜Ã=?¼m†nÙ£ª4Ë„ÓžÀƒ¾ð °yhqy¯uø B£Ù <+ÒA™q9‘ÜØZ#e=$.Ы‡wŸ¤á4M'ÛŠz¤ž6õN˜SK ™ F댻—I>åhR«<Uý‚¡Ÿ†”@Kó0P¢©\ÇÕ˜‡7ò¢€‹ãzæÜs˜ˆ¶ÅzL´ðŠBWpCª;_Ї»Ùmg<ÒÓ¥/ÑüîïÉcd“Ä‘™Çc¿ÏDNùjžhBîÄ2­hì(à,Pè¢çB#~
+­%äšøŸ
+endstream endobj 958 0 obj <</Contents 959 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 959 0 obj <</Filter/FlateDecode/Length 4876>>stream
+H‰¤WkoÛÈý+ó‘,*fÞ$¿HZ#p‹M½¶º… ÓŽº’lKÊþ÷=÷gH‰¢ä8b‘s9÷yîëãTHþ·yï>ÝHñ°ï¦ê¿R(1½u!¥ÓüA-œ/¼”F”µ*Œ–^LW"ùô|C…7ˆ4ÚÞÔbR¹¢RFLïDv1½¹ä Sñ,Lm 0/+H±¸®«By¡$˜‹M#þ%Öâã´¯ ñÖ–xO¢˜ïû*–­ŽZ¿¹ÓˆÈ•Îœ°Š~ø-¹Êl!Åm–+Ÿé|¢2I犞\þŸéßHá_¡²ÓºðURٜԖÝw ß>Ð.›´ ü]Ÿ¿ÒE}Ö#¦<"È$ímÞ“¥kY¨žû݇‚T%û66”²~M]ärä>»›Oy•]]Q˜a½åøñý6ÇMî²-=,×"W&ƒsmŒ¾× ówËfF§ÛF0HtþVOÝÓ“=¢ ³HM°„Šõ„k“¢ž½Ô*Z"U¦
+•×ý—ë]ó€‡Mî³ÙA¥ÒQäZª:»"Âã®™ïˆJúk©ëìr;÷D\å›Í@V “D¬;élzÉ©Iç¨=¹¶öÎ×Ú’Ò¦.ŒJOÁÓe_ó2[lE³$OÕ2 kPvbÑ.<ÂÙ$ůÛÜfbǯģi<àqCF,Âg0<?>fÎÄ•œÄ$>x¿GüÛï•ÊÍúß"½‰ð;¡AÈŒ¨wtäµpIL»]ȳ%‹#]“fðy¶ûJ¯+h@–"Íp^°ËDÄϳ@mªÛªäLð?çA¹,Dä0˜EJÕ½<¸¼x÷‰|ùøíI|ž­š~ùR!ÖI…³°ðÜÀå@p&z)¯êºð6ɱ0 z]a?"y ̼¢|n¶Íz¾g¡jËŸ¶0p9e¡.}ÑÅR—…=k`Ë¡0b%…]ÏÖMO ‘¶ÐÕϸœ2Ì8U $9’Zô¹ÐuÕZE2Ã#01ÑM•=5ÈÂ;1¨µ­À»±É¹Ö&YeªX›†’ðžÿ†çõœþ6©0rRZÝäùn«Mg¬èÂÜcù%»iV³5g›Í·â®á3'/žÂñãúpÌøÁX!¤º0{SX¤'`k<º—ÿ€ýýÑ8TÛ##»CÃU1$ñe5ç+>_ Ec ©²Œ¾¾ÄQ|º‡Πiq’ت(©UµD-û@Uµ¥i[ÒóÙÍåc„l‘j”Úª<B}¾¦2èkÌàWö³2©þÁÆüd_—`•‹f‰ wQ’K\mÂì@ƒÃH†±0;
+ÃI˜÷…í5÷ع*³åÃ#ä}]min@­ëuʱPë–SÛ+àu*àJÑ%_àˆ|a<•Ø=Òìo2?.ÉÁ†$¥Ã»‡>x7l½"Þ0šÛ^óô7Â<
+:sIÀv€Â¸ÖÁ|„a>BŽ0!·0¡¶*P¬^½¡Ã`U°!X9×[bÞ¿'èRó}à±{¡a€ÑF§<P?VY,•¼÷ªv¸YQºMÿ
+v,iåúºÊ•l‘É:yV#®
+m2"Álvw7a)×Ù
+ÔºÖÔßfËoØož’©ÿ,¶)8H`Wäiýb¶®c[bù
+:žÓûR“°ªè§ôqRÌèãÔ˜ÐÇ©m>'¶Ú'þh6§&ún«”Í¡Q4N'òß›—\Óˆ2ÑX&³_Ò€áØc2Ù«â5`öñrJ£¹¸™^œ?ãϧ¼ìAJu++#,Š.ßf7—ÿ¾
+0b¢æÓX:O´_¤åb+šeƒW‘Zfáq ÊNÌ!Ú…ç\g³H’_·h–bǯģA¡Ç‡tÚlpê3qG3¶p&º3”jOD¥=¨e/:Ö÷0”ÏÃ竼Êfý/o3>ÿIJªÌPÌ’Ú,Y°„†Ç•–lã9œÉ³å>rl¶€}Ñœ‘T²ˆ­ùÖÚÜÞÞñÅ÷0>Y
+´tüͺ²§b¤TopíÐùÈíûˆ­nžA(3ÒƒT}â7ؤØFÝÆk¶Û Êu>ñÙgŒ–
+lןEMS®p²B® ö¸Bž_€\ZIÌ Û0?š’ý÷âÿÍã·'ñy¶jºåÁÕ”óQ…³¤®±'7p9œZË©kšˆ£ ªs¦j;"y Ì¼Ú Q›m³žïY¨MMÅõ'- \NY¨Ñê»X¢»¡œ="xÉ…×3Â÷úaÏ<8ÃøαÍ7˜Ç\Íkzæi©ü¤—Sn4N‘ç’Y¸Ó­“CE2Ã#IÁyªè¦ÊžÔ‹;Ñ9öX°ª›°¨›¤ì•÷MCÁºç¿áyͳ]“º—
+ŽÃÚÍ‘c´vP#·“à9 {cÔ òõYøšŠ®­J¼ëúl«IcÍ‘´bfˆ°­jdhÏV“ºM*êœâraj5ã.Úo<¾êkóã 4èalS«áX<`R{„£e¢ÓÔ(r£\• ‘5F¼,ü«Ö›…7‚2
+:Ž;øLÇ1>³}ÜÐ"îFÈw#äw#ÔVåê³@3”,~,èpLy¶Ê©j*æB‘*+š¦ÛH½¿j6+ž)ÅEŽ1qˆ¿±š~NŒ¯z€ø«*[><n»¯«m·è:•) 5_ìWbz×Ûal¯zשz+^b°GÖDQ†î|É[¡h5ñG…pûÁ‚Ãú&)º=tð, p†ÛŒˆØ!À¿
+Ám<ߊàVÐq{Ï[èÑÊ9B‹!G[P[•G¨û•ä|® GräÁ„Ô÷T_Ðý¹å*Ú8?,é`E¿;¬ _W<LTmtöËÞÂia@½ ÁîÅ:"®¯ªëT-ƒªæMz˜»ü?ïUÓÛ¶DÿÊ"'ª°rù!òèB`qÛÍ¡QŠÄÈdÉ•äù÷}ovÉ%E®äÈF/"ÅÙÙùØ™÷n
+¦F°¹(Y¶j¹cÒž{¡˜ÓáÁ¦îD¢Q'‹¿ãÌ×+É£Ú?lËRýÃ÷éŠy.Ñ{`äyÇûRÎ;»
+Ì’U¸½ïçV¸5Ô_áè†5pÏ›î‘UîWîÛ
+÷H­ËiO…£õŒI·êïÖ÷oåÖö„8ò‘iÛ_µmF@³™óŽÙe¿^ßË­º»¿$¬Ô:jܦ(©ûÿfu%Í¥*î®ÿ£6t>´.·™{4T/&ýÕ/ºG6«çÞ#k¨÷a¢åU=Ë“>i¤G$N™×̧
+¿Tâ4c NÕÞBŸ¶Nr¾Wâ<i{m/©O;Ž1šÊM§Í ö©vÒÎ…éùÓg§Gê\´…W ºÈ˜v^™ÊŒ¬/Æ ó&"?¬®Ã
+BÊÊN‚
+Ý
+Êrc `¿60³Ë±À├påSGw A˜ {®©ªj—üµT@²^[CàÞ˜ÒÔÆÆ »-YÝßå×¼¯gü-k4"E™èæA¢—Šõ(’ÝÏòkpW>NׄJI0Û©yI€»›ñ/ŸÌçͺy‹S­‡?yÖ-7D¿s¥Ü1[HQ˜w_[xÅ0¿b8÷{qTh] £‰”qˆÈ#« G\aØÂÔºì‘vwìê†Ðöà*eE¬4à‰NHhy“>`ĘñÏé.ómp±]î ú¼Ý˜O3ypŒqêWHø^­èréãl +ŧLr:D: pI†Ñ¨P ÌýIa0ÆE´>¸Ìƒ–×ý˜Ãñ£üÞªAA: d`:^ÛÁDépç-<¿ÛO×,Ð[Cm¯1ίH?#ÆNfO!¶~m¢ZA²ï’¯;Ôt½±\”ª ¾’mìnÑ &nld¹nh›P¾L±ƒÚÒiêÜk¹“l‡Jr¿a”…Û¦nÛQ÷à~G[¯Ì™ïÿ%¦ª<†­z¦‘`¥‘÷ÜíÉ-%oQ+·êú™X Ü—ÛïS¾˜~9dr›$Q½‰Ž;‰»—«TÒ—H|QïÖÒßê/üW¾kZ¸ý¢n » 6³RÙˆ1ã4¿•JvÚ¬•|›Ã{ÿéJ¨³©d]à²Ú|W·¸%W ™7|~V’³åBJkºZ1R?ë…™K£Ë€AeU ¦ñÓ@kìö~¬
+§½#˜ÕÅ0 ;8°“¯:þ«‘óš¥Æa ô¢Žl[йÙêmº-Ý^¾ç¸}Ò^–êSµ,µ{XªOÛ²ÔJìa©>mÃRÊ]–êSí¤ óäì´ûìôH},Õ"~r¦Ã;£ªÕAO£üQÅ ¶è%ª ±U‹¡„´Ž×32M¡¤O,©ŠB¬‹ÀÇI{ i›Uƒ³?d2•0iòÑ$-Åþ–’jP?æu ¡PÒ<˜/-Tãê=KåÖÍämË&ûq0°$ºe²
+endstream endobj 960 0 obj <</Contents 961 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 961 0 obj <</Filter/FlateDecode/Length 3770>>stream
+H‰¤WkoÛÈý+"‹ˆáÌð‰¢¼±a¤Ø8®¢î~Ø#Ѷº²dSt¶é¯ï9wHe™v¶‹ ò—sŸçž¹óÃBÅò¯¹Qo/>Åêf¯Þ.ô¿b¥ÕâZ•Q§F>(UšEY[•—:²&ÎÔâN*\ü[vh·#ÆŠ–ʤQfK5+Ò¨ÐV-V*8_|z/ÎêAÙ2‰ </`%ÁvSD:S:†rÕÔêgµU?,ÆÞP·I¨{Ö›ùíÐE§²óÑÄÎÇ_œÝÅ'˜µ R•hþµê'÷"
+uD±ú„: L8ÓAÌ÷š«4üçâotøïp95&ÊŠÁeû¢·tô0²û‰wÁ¬KˆÓŸŽõk•¯fÄæÏJŸ1'ŸÃ‘-SÆ‘¥?ý? 9O éBcl¼•¼üž"§¾ÈùQ‘Ç8ô5¶a\]±Ìˆ>‘úYõ•kÖ± Ó`ÏÅz·U¡¶’›ôÕÕbùnSW|»¯•€Äøòw~šQFŒ
+% »òÔF–غ–ª&œ%îþ{¤"ÛÊê š¨¸Úò8²#õʈԔƒ3øÔóKùóîÏý[onƒÜ^ÿîžÏbYÞõTÄ¢ûªRÌÑÚi“Wªr¥¬ùw=«*šb}†<ª›¯a¬—s§¬$tªÝ5PtQïnðESÝßʇÕF?Š$ãªo·*/
+…£É5þ¢¨¯ñ†Nímˆ>â#-Fþöá6»Ç{uY¡­Fl¯S
+Kû^¶C3žtÔ“” ¬dÒïšÑðwD &ïµéÄ¥Š|t –’ðâDúG¥{sÆ©‰.6Ú²=yø^pö0«-2 ~ÉõtóèX«ó™Â9’@”OJ;ë‹Õå€Þ*äP¾"ÝläéKÍ[¬(ßKµï\v|_ÆÌ+Ü»zlé4HêÇÀß»Ó#}ꀗá:öóH©’:àSÕ>’mç‹Ðh+¡ Ò ¾#™['¾ñ\Ö?Êé5dbÄìéq‚ïê=Ó»g·TÝ¡à2Qµj½ü·BþU[¯$'Lû+`Ûìä¨ ·ë¨ ÝË9'‡QëtßD¾YÊ%ƒÉMôyÊMRÞQ:‚+-g°s§déN‰;Öw´;%v¼;%=&ÞÔçÌÚIæM’r<œœèËå#X·`^ƒå7ÁÚ;` ¬˜ÇÚ'“d\Úže?²ÆßÁÆï/¡nAÃÜwq1zX gÎâÞýÄ‚Îé90ƒ0õ(É= Žv/è:€Õpê–þܤ5+¡_D.hbØå¤9i÷½©}o®qw<7ka¨»Föò`wGrk¢B6¶;W´» 8ΫdÚ[ÑØô(M8+èß|SîïN$¸.òÛ)þÿ*RõEÞ»¢ùlz$ľ{õ ·ÿaG#?ªHÞ37ô-Dt‰Óžp1† w‡ø•••|Ý’Ìtt1ºíÌôç0:¤<ë˜?E‘’ƒJ/ÆÙ#¶íd8.bà Þê¨,Ë_§`AqJ 'ĨʪôçøȵÑ.ú¼Ìz
+5]Ë Ÿ€×4Ò «\‹&ƒ$Ú3}™ˆŒÇÆ/ƒÿ1Já8,e˜’9¨­ÔO‚$ŠBÇJÁŒBÄß<äYPr&Â;ß)&”2¸¡®÷ÛŸ—•¼ÞmEßxvt;HûAÛÝ*'“`²È4²€}Œ­œ¿÷œxÖÛkØq\m„ï8äW2à~Po]Þ¹IV†ßã,FÆR–+YÁÙZÔÉ'¿±»h¢n)”UÃt+g!Lµað‰˜e˜νê™K„‰LŽÈ{’âÖJÌaž]V›åãö{•âÂ#–[ZÂÜ”ËÓr)Êó5;Ÿ/7¡FˆÁû&îÜo›ŠŽÊ—Œ{-´!GÔ¥\}Nâ'µªPéÁëx¸¯9CgÛd¸´£æJÎ;ZÛñîóÈŸ-èµuƯ]ŠRVX©È0Þÿ#½ZvÛ†à¯è¨
+Á÷µMË‹¿§ùßÍ ÔñàúgiAÝ×ç‹6ùZ²Úg›‚1æFÙÞµÏM‡öM ‘Ó¡¶3ÖïÓÚ|FwÔpÞ‘¾±†÷â0:eËA…º±ªýÁ»µŒìÔZU7õtM%$¥ŽÛ†Æ,y [v® Òèа‰94jwsÀµ—y©rQ“ýáK~ÞWÜPÞ‘½ÕòLú#Y^+*í–düN„ )DÜ=È7¢U„øQÈ’ùá5âæ;]3Cu¤UiØ*èE ¼ôÂ½Q×UO¯ï¥K^± OoÏ…ù}õ«ìÙŠå¾ù¤ÔÕžŽœ^œƒ<Äó•ZåNïe6t\8&ú!â<«ö”ßÑD»»ÕG°–ìÀ™ãÍîáÌ+-a Û6¬-‘‘¶ûjKqöAF(/*{ê@£êèèQZjuX?Ða¡ÕV‡õÃZmtX?Š$ô0êþ„×%±Ä%­IHGw;´úÈhH‹…Ä‡Ò ŸP`Úã«¡ú p#ÂíI0% ܼâ£a÷¸x[Ôm»!]¼¡újº6Â-(ã±89®§yOêSr*Eõéb(§t/§Š¡^‚ŠÚLF,Q(ÉW™=T,ÏF†¥E<o£ÕBÂ\­Û“bö›]sIùÝÓ ´•XX/E·´8ŸŽ¶¤dYX)ŠÎˆ±f)¡:÷HC^¨QYä$ÕI5ȳVŸç¡kçÕ!D–û#-¸•‰|¾À–ak29xÜÒRƒzš· žçlõ¸u:žSeÚw ïx¤*Ÿ0º,å@}/~È»ëòÿ
+endstream endobj 962 0 obj <</Contents 963 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 963 0 obj <</Filter/FlateDecode/Length 4407>>stream
+H‰¬WÛnÛHý•Æ<‘ƒU‡}áí1™†ÃkËY`ǃ-µ-lI¡ä™¯ßSÕ¼´(Qò¬ƒ 2ÙͺWªú0 ÿ«Å»ó›D<nÄ»©úO"”˜>ˆR&IªùƒR¤™Ì’Ĉ¼TÒè$Óg‰xú_¦Pž"]Í„NefJ1)RY(#¦sMo.˜àl*¾
+SZ æy)äº**sQ;ñ/±¦¡6Ä[[â=iÅ|ßUѳltÔ‰×ñw/wz±ÒQ*¬¢¿F|ö2V‘•‰¸‹b•E:ž¨(¡sEOiüÇôï¤ð?¡rªµÌŠNesT[Rt×L=Ð.š4ñüÓ¿Ò²<é“””Ø»8¥ËDªÀýéÿ!Èó
+R…mBÚôRòò5ANû ç{Aó°±9‹èêŠÂ ë-Çψoô×Që86ô°X-E¬LçÚ6ú‰¸Æ5÷ä*:Ý8ÁI¢Ãð#»
+D'K¤†-Y
+“N™¢Ø¶ÄìYÂüÈ’ ºt–\œ½;ó¨^½¬ÅeõìB TZÊRw*œÔ`/bžÁ@f$‚x©²”™íDXè^¼®*w1›=ã®(nã–³»´)eþ»<ƒcvé<“}ðt.íI³|ðvå—d(çºZ>º@–I¬ÔÅÌñ Ž™cÀ·ãŸžŠQ_Sz8­ò):LE±EQ¨èGlŠhíDµœ‹>n»B<ïbßk›Ð¤¹Ôò®Qn6zà_ÿ¼œÑ¯‹Ë¨“ñX1L5¦žÆCmzCÓ=C=»=CoÜsµÜ.be£ÙFÌCÀŒru±öÇ«åN#
+ןºL̤.ý©Q ígg—`|Oʈy]ãõ=WÍ”‰YKÅ3QBªÒk!&J*›û±è#3í4á[P|û»h[WË tYWµ[’Ú[¯7å´' vDñ¼¢6Ñß‚Ï}6ý·›—õšnWuÀF?éÈ_¶|ÄêXÙÞ’PÏuíæî!V(™%“Í{Û³7=a«ïMœEÑñnñ_lúž­¢M`€*:©¬›”Ó „ ë¼ý]ä2A•È+ŽÓ”>ÿ²Ø Ú,V Jz[‘¢ êûð0ŽÄö‹ãéàyÅ&8±zHé…èN›ÕÚÕÕ–mo¦‹ÕXу/â@r…´^ŽyqµeÑÀBpy’„=öÅkíÂ÷×Yš¢›"* å[…ˆz쉩ôÇHqG'í5&0bJƒ cÔÚ²žíuaw©Ž1jcŒìoa„ µn`e”¸Ì š;£%O¡rŒúÀmOÚ`’ÙAø2#ŸÑäÞNª™Í¨6¦
+•»x0fY
+ÿ¦ºGXã…?ãÄ~ƒÀ‹N`+Ë  œ‘¼ôUkÒ‚©VØ„É\Äb ,zŽµŠPn@\”»'šÝuô ”tt²|ýÕV,虹Ðÿ”¿‚š‚ßîÀCÍóoðÑe¬«!üÐû½Icºhµ¼f‚|"–„'âbÛj.î[–LòêÅò‘TÞ†º‘2óŬÚzݘŒ?p^¥oôXÓñ‚œ˜…x”÷° Õ&\؆A%ͽ‚”'«x¢£Ž
+R®8è”Ã:z¢™|Fn¸j‰b9ɧÀç>¤žœ*zhI(‡¯LC1F PámÎìùb½F³áKSWhüMŽ'y«Ìo—(Å”ÝØœº°®µX“®^€R“è"jú¶M8j)Ì­"Jú/î]à¾l°j&㎹£if¶lÙ÷Î o,$pë/P'‰.( †¾üÄU±¯(9”™z…:îÑéâžzúÖêëG§Ò˜.5ç¢3®lèLj<NM˜h-añùˆ2Òëz’TÖAlˆœêÁðýæ8f8s¢»­Ö0zŸU÷O)Þý“FÓ±D½_u> ½K<a!á<lÄr:îæ*¿µÁ
+ó~ǹ}…ÒÛqfÇsságÃP'Z`ûÓqÄé•ýÔo/¥•E!R‹QÜR{=µ'tKgâ×±ádËüw­¦54o×´wçH™zõ²—Õ³ 7•ÒHÝ©ðªM%Ù“ë¹ ï죪,! “ƒ?€£S«š‘Ƽö̼¢}ÌmÜr¶c¡6%uì7Zè¹³Pc­È:1@Y{ÒÀ&–ûˆU2v]-](†—â͆1—c†Ñ„ˆIÐÑOFîØúÅü†ÖQ–Þ@~ĵë
+}}F¼XûcŒ.A§˜ùÔ_Ìâ=<ƒDÅÙÿ)Â[f{ÃìîåÞbááã´†”m.5ѯcwÍÞ0vm0î¦G®ýè?vÝè<rÛxS¿2¥Q¯¾†´»~Þµèë~†4˜µ1ÒPùL£šŸMy˜k³OaùÈuÛ™?uçئJêÕË"ë>ûp1¥uPÜL¯!íâ?„õýCi»Iâ5ã~j›~zÝ\üûì.RÙ]|÷ã>O¶Ÿñ3"/d¹õÅr¾ x0…›n§õ#L½ák²“4,¬‚öÞX¡Ó†3VÚ
+f,ÛÌXšÞiãõBæÍc©1CŠ:‰%¦eú€FΞw6e‰÷ôWF‚¯/‹:VµìŠˆ–4Ž‚ÛËzM¯èünÎ~Å$ÊF«p»ó4.»è·KÙ–Q“뺔…=P'þÚ9_ó¹Õ‡®é%•ÉA:\ðks‡ÅK‡Å×”ÐARmY½ö.g4éI›ò:HjTI
+ywªÙÃbA´Â-¶¤,ÕP½×¦W‡ÁuÒè®Uÿ °® åÔ—ÊfUzO-¡¦ÇËZëk˜Ë¿à»-gð„Ò'c”roé16CíþÌ¥Ç
+* KÉ‘YN1ñá>ÿtqÓ‡\f%yCgÁ~KwL‰|~QmÇŠüLV¤£fª€K'Û}·)F„ÄET–PÅA«ÓÀ£Ïh„)h@è«\ÍB/©®ñ¡÷ÆãU =ƒ…Ð3p=ûÐ3°=ƒþtiœ¨šÎ¾?œš+ÕrY•„’ œD÷þ>¿G¾Ã|E«(H‡Sߨêì&“ãX¶Ät_ÒÚž(´úBév²[IH‰JŠ0å
+â“óIf5 áÀ·”žÚM#ƒ^&Ã#¸§êë×oóˆ"¢NðÖõêsR[8,ðˆ8Øóˆ=”ãl« ïgÙLá"ß•ŠÒºôÅõ¨½äÖ1Zf9þ[)8«¯Ø†*v(Õ9¬•ótÁèA­x—4¶1‰Ê`ÁÁ ÌÁÞÁ ìÌ  }Ûr²„pÍKÞÁ…“¢ƒï/.½s•©•un 'çjQ’Ò8·Xvn™ÙÃ97‡šXQ«%TBÃ!q±õ=³˜j<ŒáL Dzfµ2öžFÞ†º9fµÖú,¢0BoâÊ-®KªP½Ñðª.÷qgV/ q©'…žwκ Çh0Ë­òl"Œ§I[õ#šMZ©ðTJ»“Tq¥¨ùûMÜ!Òࢠ–²äZ©LÖâÓÚ®K¾´x×ì1I®·xÕ¥+)6ôÝM‡¿ônÝ·¤Æv]JåÐ4ºPníóŠõ„‘™¤1ÏSþOœeÄcZ‰íÇ$Ï;yBAí±Ý'Í;|Pˆ_D}û~*q¤­{¾Ç½ïð$Å%ž’ÖqLŽ»ä`çÑýš¾wŸÓGnÏ'XBÿì×´ c«ûæ—ÝÞ¾Ú·ëv›®jñ]‘èõ† &ùœ®*qq}swíÖ¹‹ÛÇCº*í…›M¼êwœ¶OWº¿
+óÌòµ¦ÛTiquŸÈ£ Í––Û ×‘¡öòx’ÉJžISú]>¦ÐùßD·ëVý2£úüÊì×àÌG||°•dPGLÝ|Hâ_§Ãæñû*~ÿ-¥Ÿ~‘ÓÍ<¢äzAÞRdÁÊ[©H}ú¢¶T‹è¢¼å–zy`FÞr«½¼ 0#o¹ÕNÞ”‘·ìb'o{£—å-·zåä-§÷¤,©™Œ«Ë
+endstream endobj 964 0 obj <</Contents 965 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 965 0 obj <</Filter/FlateDecode/Length 5005>>stream
+H‰¤WmoÛ8þ+üH-Î,ßD‘_
+ì¶A‘Ã6èÅî݇fqðÚJêƒcwm§Ýþû›Š-Yvš¢¨#iÈ™gÞg~›1IÿvìÕ»©d{öj¦þ+™b³{„”¥¦•N8) «‚FKÇfŒ³bö?º¡â 7´`ºÎ6ñ¥ðÊ°Ù’ñ«Ùôš.\ÍØ_Ì+€yåAŠ…ëÚ å˜’Àœíjö¶a¿Ír4È[[ä=Ib¾CŒ,ŒZFŒŸ¢ÜÙDJó’Y… ûwü
+Å­ìŽÊq]L—ø]áSYü1û'þ@.µηÍY´ôØ€t»‡ŽOƒDþeÎ_i.ZÄT'•'I{Wd²tBeæ/_ (òè RÞä:AØtRªð'—“«“ó8ì|lÞžø€ní-ùÏ°¯ø·F?ïñaµÝ°BƵÉû’ݙέë9~Ý׌‚DwîopêÌ"1Ð…T„8^E0Á²-NGFjp¡{’üéŽ×køÙ.æ‡þÝÐ÷BKøì{¡,ÿR3‚L–l1ÕSWºh*Œž… ¸„bª–üsQñÕž­6Ťä÷`¿->ì€æø#Èæ
+zÔ{šCuQT} =F—L,gzgô=@"G²áIy€ˆ¦·7ÓFè¾@tŒý‰¿Ä€Õ#ËÅ« T†dþî€DBÒ¸ugå>õôü)%_Ó§¯Bi¢UbßjHÞ#G%É€“l¢„*Á{oÁ3¯»¾'ïÃ=`Ç>^±Õb(¿F_Y¾Æ§zÙ%]è
+ø'þøH|6EàKéäÀˆÏ×kögÍdÝ)€ ú¡Ò‚,D_v«ø†ÿk@²KGâÝ¿ñyñÞG.lmÑ⓶÷ñM€É†ˆò9!%Š‰æìD'u±-Îk6®> )O»>FØás²ÏŠëx> WâŠá×(âð G9DOÂëó¨ò¤# .Ô–ªÙ_ :¥÷ÌÁ)s%”çKeY•mh˜AU&~ðÝ>Õ™ë«WïÂöé »™?Öy3U%(ÝB¸ˆ€„äF.=Áœe H… œmåÀË91m×9)ŒXõ…}ØåmUl«Iš‘çÅQ±§¥EV}iõ¾Þ,ê\"Töê§í¹œ³£®œè"FWÂúgFÌP²’}a·óÍC®˜‘Vhÿ³ŠE.ç3¥Ð2[9ÇÒK#J7¡è¡Hbx"š*ó½0ûù|³dƒùâ(ýˆNeÙè„ÓµMv5•3úÏ›E¬!O}«sG^ž0µé”-Xˆ[ß—Ÿø´~œo`–ª³Ø³eMCÕ§°Õ—øê{o´þA_†ëaHunvFXË*£¡aðÒ°¿ïM µÌfd¨!q¨ƒÍÁcHâI0ôý‘)ÕÊ:=Nèú»{ót(Jsߊ³ÄÑy‘Õµ•‹Tì€c4m+|#£©|Œ­ªÐ/#ÔyŒ:œ˜ãjH¥a˜6Þ(¨+‹ëKécˆa臆/hxˆ ú£ÁßÙ ãë{áÛ1YÁXPµsË{õð»:į18˜Õ§cW7!A%׊_ÝþJ#
+mñGÆÐéƒM•—Áp´ZÖ´­®hå[Õ´ôpéýLS -˜Û¸Öx\k4Ê¢Ãô•I;£9m¾Û ±–Oo¡ÜLô \¼âqpOÆïúm<úˆ=`NØW`Á¥gV‹xTÚy'qÑiëØ\Î&ˆØßñˆy—mµÕqIœ”"@„åKíÇ÷3ÚᦅN¡{ÇÓŒ¯˜süËa΂èû¡ÄÏÐ*
+"6…ßìV‡Õb¾^šö+ó‹ü)åˆÁYå‚Á¤h•£¡õ’cÝP±(Óóý~õ°©ÇÃuÌ^ÀRûA´ì¥m¥¥¤é\ê‡ÛÏ1ÑØÁŽÈ¶æÂe\7ÂC
+îHnÔ–G=ª ßr
+ß1r¾#ä¾#ä¾cä&|GÈ)|GÈ0õXw©–èï
+{õ…x“®]ýôpìE~è°ÊáCtÿëoìöæM>ŒjEVmd›‹&‡ñA,úâ&GBl.Ä?'Ÿü˜0{BäO& z˜í¬ùœì9!™È¾œ±É¸jOäˤjÓÛmU¦ÄKÑw&aMÇf„œfŒÜ$Ì9%Ì9%̹I˜rJ˜ò°|ißNqjàÊ
+;ºÃaÝIîxýúÃïï mø Œmlµ¬a ;|ÇàU†ÀßJ6®P% 6«o°æV<-ŒÀq¯,q„ïFŸ*¢U¯ c!p g»Æ×m$u.”g<Œ -;CüŸñjÛmI¢¿ÂGj0"Èæ}dc#°ö,çaaÏ-1w5’!Ñ™ÌßÏ9Õ7êÒÞ<Xn²ØÝu9uª
+êI„báØD8 ¶ˆm„Cbá€ØF8 >°ŽkÍsÐÉÞ 1RÏ7v>€ëæ‹›è‘iêV"«ÒxqÿÈÐÞâ)þ|û Ã%0j ½PŠæY’µûsœ&à„v–åqù<›e6Q}»é†š?£\À
+$x)úæ†*Ψ)¦7D (¾µåHtªgÌp]j‰! 5¼p]jiáºÔ²B@jHáºÔrÂuéÒo¯—nG™BÙôdpûƒìÅ=3JÇd>IA—í74òE‰öI-* ¢rømÖ°Â7;ËB&aÏ[Áˆ~^û\m’ŒFÊå<á‘;‚Ðv$¡$³²¤m[›0l^“+æ“´
+ƒÆx 0,„Ä6!±ÁM@l[ä„Ä:±ÅN@|Y7Òò"²¶dä>(,x>|ù¸p
+Ù™’“µUu9žÚszÜF––h-“á¤Õ³IVäítêt§Î,-ó $ïå;H*k„Å;¼Uפm3&{-Λ³¢u²²"äüV‹ÁÀVŠ #.P„Õt·hh7ôR~7ØO~·Ep`7Å£3tíôr‹ðÀöBi{ÃÕÔß6B»15¤ºÍP¸®ˆýfËü’zѵVŒ´*Wìr¸±:A÷ªséñªg--><•j,"s”?óWÚƒ kb™Õ¤ÉÙ¤äOôØfU¼æº£™J³6F—㦲©Þ¸®TÿWyÕ‚:Ýôø¸™)… òÓ‰TÙ¦¨0=Y“56©;VõÚ¿PoÁVèæŠ^ÒÔ˜ÖªÖ“KÛT~æa?„.É9¬xF¿Cÿ4ßÐnýóƶ]D#<‚Ï×3¹’Ÿì)—l¯ð::èn ƒÉV„ËndÁs#Yq#)A±qwfe|ÿ%™Ìºgm#bUùnôQzž Ö\À7úÈ?èÔN´þ‹÷¼ôQŸð›ÄN—µ$£)²ùºÝ‹.Ÿ¨àœ1ÇÏP«ýa2^ùFUHs®*Œº¹ôt¥)§_ï¨b ëŽjüóûÎyž‰§.‰¡t맃àg±¦öû :9MÇñfâß`8Â^.’Rø_Œ€b;9Çyø9fó6–·ËîˆÜ製8(Ò²¥Öûèó—;¤÷v/öqmSq-Nv{¯Ϋ¥öªÖE:åR+äMóþÍy› ·âhýþá# ÒýûÞþÕÎuÜÿdú•Ií3ç§óO9ÛÒò2ÿ fáD‹Y•iÐ#½-3ËÁÌ.QÿÏ)>÷N Ç|‚-{¦òáÐÓÁ¯p}¯†ÝšU{ŠñÚ!ÓQ´g¹±Õo¹ÊÚ¤®Õ Ö­•ø¸²>®àã*ö„h‰\uuîJ[ÍoHû$5#ß=üþÅ5·ÿГL¨•y·vŽô¾n¯¯Èd'¤ /ŽŒÎŸlŸû^LßiCñÙi×ÒqJ;®ÇAº’³¸ÒçÉ·øöž‘á¦9†š
+½þÀÛ¿ö‡nV;#T!4öox¹Vý ŒùnIŽ{uü"b½Ï}òJ¤÷ËÁé û©Ó ¨O¢K~2ªÚ(ñ²åFÿMiÒêȲ戫:—&k]mO›nà&dí8ÒÉ+TÄ,3¨Õq'.E©ZvuØ™MS7þKÏy‘&í«îþ(ú4ñIË€u{%ïÿ˜&ñgãWì¼»»]ˆ3'Ä+ëÇZ"wøNÿZÅ„.&Ši788K®>þÂ1Mo‹Ù¨;FÇWR€ò7ô+¾Ñ·!|I+¡Pe–;ùÀWÎHA”óe’b•r%Ñ|‘qÕòçw^‘Pe&£Þ/§£î;þ QÑàÈ
+µp:š’^GtXóÕ^‰]'T&+I¿N’Ÿaò…)ăz¹AL‡Ñ0{†Í>i²s+2^鎲Zzô9*I+AÖEBÐdU·=jcÁEkb²;ˆdæË$etü»Q‡x+â…Ï*äÊ 9µH¾•ZñU'˹E6ÞŸ
+endstream endobj 966 0 obj <</Contents 967 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 967 0 obj <</Filter/FlateDecode/Length 5184>>stream
+H‰¤WÛnÛHý•~$Ów’/Ǽ{[³ƒE²Xh$ÚÖ@‘I™Lþ~«ª»yU¶VA
+Iÿ¶âå»;)vâåTýW
+%¦÷¢.¤tšþ Î^J#ÊZFK/¦ŸE&òéŸô†
+oHx¡¹Ð®ð¦“Ê•2bºÙåôîŠ^¸œŠ¯ÂÔ¶
+ù|UK,d뱂½Q
+§7tDfÝÎÖMßôÒüü|ÈÀ“ù”šd"¹¨ÙÏS§ÑzÄÆ`ðÅCe?rSe_1[/DwvC'ÁöX&t ÆØà4ð)ÙÞBËÙìž>Ãïõ?›¼ÎZ0@ꮚ¶<%U?
+"˜%x×|ž­÷Ë\Ùl¾c3#›æˆÍÔOƒÄÍnŽL_~ †7küì¥d Œîô¬:EKôÈ}03Jéb»Ü/ç³ÕONÃÉõZÍ–ƒbþÿÔ ž¢¦­U—Ù)£òÈa šÃÌ^çªÊv»åúáYÈ †bè©ÁYŠ¥{'å,éR)an+0 šAÊý¨Ca;´”<Ã>+jO©`Ê*1ÿLÏ?‹G°«ðcB¯®àAúu©Ym‹ªj½(å8ý äó!Ú^Š Æ*Ty[”<¬5,”ž‡}`ØŠESZ\)ÚA8%ÍÀ‘º£Ãx@¹:²zOwd€=àq³œç xM¯_:R55H$œg…±ÿŒØ’½‘÷élûÐìså2qõv0÷aêXÛú?c½¦WLÒÞå ©Ýxë²™¾´)|‹•«<˜”ô…ðçñE¸h|Ì&"·rÔ^ƒ;©ƒâŸÕAÑË‘¢ bmå`/èz„SppìŽ= )pŽ=ÂÀ©Gø«ð%Ò¨ÄÊÂaCªçGP9âYA*âD¤Â«éŒ†zn²ì{q{s1¤´¢ä¢ûç¯lrLC2qà{poS±‚ÑÉ)m.9ÇœÙ#ΠM{ÞŒ¡­/Uô”.=∬:âZ•éKC÷¿ŸíKÐ9Z_F’Õ—Ñ ×—±š‰¿ ƒƒ¾dàÔ—û’c_2¨²jǾdàÔ— ×LK‹½‚
+àOò9ÒÊöš©Ž\3mÜëUC'ðéÕ«0l¨-û¶tû‹ÎÏêJ2qèoЕ¦ì;ù©®$S‡Î†]i}¿žçv%Y9tÄu%}O1;8e7–Í®UÁži[õzš[6EÝõª5.õ*`µõ£fÊ–ú¤fÌ;«Y£®Yc‘¹!ÊÀ©Y986+ÇfeÐ8ÇfeàÔ¬ <^›tØšŒ¯Çk¸Òt¥‘ølGå«W¿¼¾¢ûá5Ý{•* ~ÕFgu¡ S ès¢ƒîX»—ruOÁM5f…ò´0ÀŠ˜âY¬ˆ^8VHOx gàÄ
+Ž¬`àÈ
+Mspd'V0ð˜Ê)(]©XZøº,¼ìÑâöõ…ø5/áLÄ“UFÕ-#LVâ%yR×=F fúDërD ˆ·û(ó;‹Ñ C hîº:
+Ž”`á@ ”àÐ8 Jpp¤Šf6T£´ãûaˉÊ•”elj›‹ÉÕ[q g[iZé|™]ÝLs%³KÙ»ËÛpà¤Fu;Í´¤ E?>e²€–¯‘KîSž«¤ô¦ï®¯¾k~c«
+‹‰ÛD~Ž |[š° •ªþ ÿœ£æ7¢5azô‘¾ Û•ëGHr¬n­g’¤ï¶î{»ÇÙ
+½®Ä V*։܄?î1hù°ÞléÏH½ϹG¡²+RÝ+Æø^¾Z‹ù ]í:“ͽøíi<Åqw7G±ßkÁ†M¼Òú€$@±ÉoS¤Ôíëh8¼p®oü5‡kOF×Ñý2<¬³5þ÷E¦+ŒǺ¼-(Ýfñ‚’Ý?.)…|b¨|ßAŽ³åjÕY¶S)ìé?ÀÞ|³Þ#Ef@DúñØto(Ó6k߸Øl·ÍÃÿ‚ynÖ‹%Öjý0l"iG¥µØP¯RËíaëÇÀÍææMÑ;b|[…1UWäXX0€s |2k"ÒÆÛɸ>i–$a<g–$/Ì,q –F'Í… «j0LX<Nã„ÅÃ<aá=‡‰Ââq¤°ø‘哹%¥iâJ KJoøü;× 39ðE¹×m‘„½.ˆªBèZNÆVuðXã%ú˜ýšWð¥ŠáÒ¢HL=rΔm̪*æIÎIHñGF
+Ç 4Ì?L~ÀG×4AZL§¥êpÄ”•´›
+ƒ¦À98Ê'Õaà¯ÂÃ&háQE%…<´í6ÝßÅ:é’ì/+ê¸0‘-&~Ú5÷â,pWé´?€Ó*œctê0‚'|JFÑÈ·, ´Gô4„ íFÆT þ}´¦[QÁS®¢Å¼¬ÒBm Hƒ{™•#2SýidŽ's™£ŽÌP_´‡ÚDfNdæàHfŽdfÐ8G23p"3%¬Þ€Ë.BP|Æž"V\ø±‹L!d]8ß Y ³’YI §Ðz=“ÍÁÊC–ÎÔ†¾Š#[ºò Bƒ=£S×ÀèÒ#_'Ê+Ý1ÚÂL‡|R[?¢´*5'Q:žÏY”Ž^8JÇ"§£7úÌÀ‰Ò)ÍÀ‘Ò šçàHiN”f`n)ìFþÑÍÐÖ8ím†ï¹ÆÕð„X,Íz¿ÜÿÀD§3º©…Wlج5%­|¦À«œs9ñfbT]Åw µ«Â;(ˆ@Zè½´¿eÃ[†“Žö$"ŪœE¤è…!’ p4œ6rp$ "qp ‡ÆÀY8‰ƒ#‘8xL$åâíÐà¾Ì©* /{DúåõE®`½»þóUÓÛ¶Dÿ
+dÜ.É
+ÄŠ“
+hÜÂr­•ƒ"3¶PYl$¶Aþ}gö›ÇVè!‘¬ÙÝ™}óæ NY%BL6ƃ*gE¾HQ 2ó5B”§>h²ø8³h¾XÞ!o7ï£ Vƒ] ÒUº\ü~½Jù*[eˆÃ)̤¾
+ÈbxΫµá¤"Yï’wïÞ]'Z¦îÅŠà>RÁÍPƒÞï¾f¼
+ d
+H ´JQqK˜n)³Å-a¶¸%¬.pÊlqK˜n ón+C7Uùn!&„noßÌäå$ƒnˆÐ…–í;¹H« ð
+¿6Mc…a‰Æõþß
+UŸÜ}û¸ïmh?Îñ3iؾÍEp¶^(8ÛäQÚƒ0;8Sf gÂláLX]à”Ù™0;8æ/‰ªp(’ŒåØKÈìkc/½Ì-N‡}¾:\tîÝú
+_|Ûx±Š
+FKªæ±¢jÙ Àå =Šº9s~uOt ª
+Õö(Tf‡jÊlQM˜-ª « œ2[Tf‡jÂ<1¿6AÎOð#>
+˜rA’q1¢ªµÖ<ƒv-‡\D»Ö A»¼)ƒz«9.‰i—2[Ú%͆v)³¡]Êj'͆v)³¥]Ê<A»¾£¿Àº¼VCUúÃÝsÖ¤íÿ—së Η']õ
+çN2
+—§)¨;Ëis<*ÝeøoVÅUeÊÊ,Žƒ^ ®ÇbBm?ÁžB†zÔÉ@Šõ€CÁÏF×å¾_k*ÞCY“õ<3Ä1l÷ú¶‚º-:Þøh¾&<¯D Q’}ŠTDˆ4B¡s¡ãN=¹ŒYÑŒ3d#,ÜAÈ÷ž<…!O×-6ú9‘ÊÖL mŽ6‹t˜·Âó¥áÊ!OÎBÓkn~¾Ëêô›ò÷€¸&F«Ix|‡Å¾o³£özÄÿú«0Š\…ÐëÓПÖû‡ÎpþA·€¾KÖÉøížÛ‘¬ð-…IßI¥W8{Št{Lö]ŸÿúóOÜÚzÛŽÉf®
+ßȉ\Ø2ì"”ÙvÒlºe6]„²ÚÀI³é"”ÙvÊ<1’ŽõÏä`ÊÇ~ÚȲÝéÊÞàˆØ믦Êß@•/
+†
+o-òkØ쪒،æZz³äÅa»¢¥vCd2ì†Å"ömkšØ|šxȯ/L<áDò2¾þ8;Ž8¨Ýu”Øß(~Ñâå'=5‡Í–räXV4íRžÁÄC¼JS kàC5FpŒ+”zaJÃ×Êf˜ûƒà.é( ‰+ ~JRš–f¼€þ‰êu™Ì¡ãïàßúx|ŠPé ÷ÜÇ´ÐZxé&&‹ÿYÏ…3pÿ¤õ¾‡-8Ûã_Z‰tŸµ$êáW½f‹ô
+#i1,¦ðã³
+endstream endobj 968 0 obj <</Contents 969 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 969 0 obj <</Filter/FlateDecode/Length 1997>>stream
+H‰ìWKoÛFþ+{\áfß$k.7µÔö#Ñ6›t$&mþ}gfù’DZ±´—Â
+kµ¼Ûuµ3 {¨çÔk õ\‚½.a"¡‘+ð Š•> þjh}
+FŒÈÎ@c<Âk± ´D-EâUej–¦m‚ë9²1š®ð9óÂÍs·6ÏPÛhêÑ0R}–Õacõ$ËÚvI~)É‘åì$òü»}¾Ýâæ]žo>âšiœ¡•*I0}ëŽ?¼ÐYØ9Ë ¨iwîg˜D¨a‰usÅYXÎ`2Y/Ñîp5c%”Mûb‰z.Ï/Î5p‘ËÃTT4!!@
+*1¢Îz]¬YŽlÑ'¸¾Êñ›"HÁšQ yÔÀ)ãgµáõ‡ò¶` ’7er«Á"7€1C`,"ÆÞœ@0n#ŠôÞª|©Œdº·h”Ujo’BN¸>ü4µÏO_ŒÝÛjøUYÑïš•Õ<2kèzÊ’…$ LL»Dç¨*
+?[D³÷§èwD»'õÎÿt¦Ä^G[Ek‡šÄúÊéãÑ4~ óo"­AjßßP n´Z„
+¡©ê;%Ä,ù¼A_@L`ôŸàøG´_£Íà|‚. ÿ)<`QÐS
+£N˜‚2vGoÜjJeðÐC|Åd˜@z¿©×ŸÉyÀVÐ?|´äÃé‚¡rR‡Ç6˜õU1$ÚuÚ›ÖÂf†œk;0ÖPNÆV lMŠË-k6(6ïÊ){^6MN4uø¹ž"¼·šœX®q§ÁlÅÐkO;'ð†Q*Éq\6ñCÒ¿F¨Æ¡[ÂÙ ªÈÑ©Þ2Òú5ÿ¶³ãW¼Ž_þ€sñ¢Å¦Á8ÒJó $]ƒo“®]…PZ*±ó”µ/ÊÖÛ`â߃((¿ÇÝ÷q§ª–}ÄDhÅô„Õü–¬_…ñ!HÛ¶!øpò¹k
+³ëÂLvA
+ù?L¶!ó:i-€¦åƒ!X7èõv7<Ch¾½G=!©n4d‰#K’.ë'Qœð ÑOÂ
+endstream endobj 970 0 obj <</Contents 971 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 971 0 obj <</Filter/FlateDecode/Length 4043>>stream
+H‰ìWmoÛÈþ+û‘,@†ûÆ _Çð©E|9[íu‚B•i……L9’|WÿûÎÌîòEâÈ>'h¯@@fôˆ3;3Ï<3ûn.2ú·]‰7×™XíÄ›¹ü{&¤˜ß‰*Í2«è•°yšg™E%S­²\ÌïE$âù?é éÞÈà „–BÙ4וHJ›–R‹ù­ˆÎç×3zá|.¾
+]™Œ%x1ðº*S™ ™q±­ÅÏ¢ïæÃÓ meÐvÜü:>¢3éϨ2wÆçw~ .b©"+ŒÄ¿ZüÕ}‘Æ22i&>E±Ì#'2Êð{‰O6þ<ÿø'8²U*ÍËîÈúäiñ ãÒÛ§‹ŸgßíK•VÏfDŽì„£Ì|Š¾T•¥r~û
+GÎÆ¡#YæØ€6½—¢zI‘m_äâ¨ÈCö5Öq}üˆe†è ÕO‹_ðouÜÆ6ÚáC³iE,uÉ5¡ú™¸˜~·®øí®D5,aÓ
+2–g©‚Xr !=Š¤P(} ÙÃHr8KÉìüÍE\DÛÍヸ\Ü×ÃH“!%ž=ÁQÅœŸ‘ÔKæ_Ó¹€ßgå˺rìˆÌ÷ëPïêv9Š ä$-Ô7Äå œŠKi…Ô .T‘šgãrÕ;"3‡Ž®íª:³Õ0‰¯ˆ‡ œŒ§ÌÒb@… Åô¹:õ}¥ŽØè NÐQì¡1dôë2z¨Å¢½}íÆNœíò8œÒ@ºÑ¶UÀ§`{ -g¢;útÏí?븊:0)l™–eOÉâ%¡æG‡pfŽ¼®ïí¾‰¥‰–;62²©'l(B‡ÝÖ»%2½yp†7-~B2Úú†äK´D¹wfŽB:Û6ûf¹X7X9•´šÕ‘ß"!ÎÀ)jš²RÓ¼dŒMÔË™9
+îm,Ëh·kVmÍ‘ËWYøaT®£|©A±
+œÉþ‘`dƒ> ”»Ðïa«5éõÉ—McÀƒŠššPi-NNUˆÇ¿¬
+ƒ…å` ¼)ù·:iÜ”’67A3°/”(†[-ðÉÚ#]‚AbH ©IBÉ®®ÎÄÙ&NŠ¨Å(œøÔÄI龫ñcË j™h“Ûèƒ+*º×zgèò ë*œÁ/«Ýf;8¨”¤
+•¡]‰Û…Ûú_¢ö‡ÿ¤Ø2þg+Ù¯F¦£Íˆ}q¨k!õÄ ¾8ÔõƒúöaÐS×·Œß•m©FõˆŠ¾@yIÎW%[¡x%º*dôc§ß¯Þÿw$“}b“€[ƉM‚C½8Øó‹Á80Œƒ=Å8pŒ_+ÑÖÊÁ&ñ[$Z;-ÎâwµNÿÎå3~ƒüæqWÓ¾=°¤ÇSuù›4ÙÚêÔfce tà4y Mà¾g¦ÑÐ2Óhèõ 3†~™F_Ý.Y•jõÿ滶Œ»í6Šò¢\£|¼ö-‚™ª·“-’‘W(ÎûßÖ*vú²jØ…b{Å9péô½Â¡®WÔ÷
+ƒú^áP×+ ê{…AǽâêLW¤p]Ul¯˜¼Àß+·qb£7˜«KZfÐ ug®<ÏWa©X‡ƒžÒ×F¼jîþxòÙnöMwÇýÍoði} ÉD/€eTßNoJ®—äa²•’~¹9ê ™‹ë_À™èáj@TJà=íFYšÊŒ®´þ±lp:úöÿÄæNî’ògË×1½MaÓ’_Ï1ð5·Aqh 8{†3p 8Žs°'9–3ðÍ3*4iÜ škHch>Gr-P߶+ü¬ñc´gô¼Æ> 1{ïä)1èêVl|YîMS¼‡!Ó›7kOj¼³"¶£ÒˆØ*/‘Ñ ú3Õ‹Öâ`¸ñôcØåüèB0§ÙìDÓÞáLÙlï骺UÔlÚ>䪛MEÞ˜z]ßS¾Ú½hniºµûæ®›ÚõN,£Iõ“©^¯i8>ÒÈo¾>ÒËë'´&~Uæ ì¿4í‰up4§°”Ó<¼…ô^Â_±ho‡ÃQwaHÕ[Ù^ÆI‚:WÑÿ× Ãvqíé¿‚Ð;â!PƒŸ%³÷5tGìÃÅCàÅ3‰ud®.h€ûf$ni ÀhïÜ>$•^…øçX
+ÚmŒÜ "ÅþL¤³HÓn˜»sô× Ü³ óbæ|¶Në±àO‘Á®£ze4çmª ™¿PÎΑ6b±ƒ\ `{Ï´!%î­$´ Œ°ºÔMA…sû{gHõ†L¤@kJÁÌ\
+š;á–¿º¯4•Ô¿²_lW5”Ȉ5ûÒ€äxGþð›)÷‡‘ +‘ã1
+qc©-?C_²&ÁGÎìI¨¨ªd ìËý•U*øípp¨$,ì ûAÂÁ~°°$ì u£Ah¸+PZè ãš~ð³hìɆÚ[…Y£ vÖhX“ÂJ]½}'æÛ³B1~Ï ·w]¤6?å9ë¦ÌȳrèïÃÐÄ>QU˜¯SŽ°-5ãlz[<<4íªsypac,™
+
+sh‰ò3¼U¥
+ˆŒ_(îV5ÕƇ·,)ö›~O-.!AšÿHƒfñ¯v³Án»sMv°ØÝ`-AUóèߤWË’›HüŽòA ¢i.Šð+6|ðäñɾ` cˆÐY oìß»²ß€j콌l•ªÕY™Yûä¡™†$ Ôî(ùL©·eUd0Î"ƒ>éU|ƒ¢NeÆ6h®È$ækGd”‹ÚeæA¹°mP.l” ›å¶A¹ðuzTµ2'Tå•Ñ¡jöƒ‚ê´"mõå#äû®ËîÁhiÄB§Ð`ZTÒ¿wìȨëR‘B_sèPbg(úZJw–N]/Á€ªd¼íÏ+3ôVsíÁÀD¸°v`` \Ø‚ ;00á?"
+ª.1&7ìzîÜŒ~? æ.m£OÓEÕ @R+mn ÇW[µ™´ŒþlñW¸!ÛõŒÈ`ôUm¾ëX$ÕÒ¯¼[)Öa¬µØ¥Ô»Œø2*{1÷~cÿŒ2Ó7§©ŸÛ·ñô/"QÊðÚ•_ 9û<Öi¸BM± þÅLp³ͳyëÏddÞw§¾ ËtW)éåÊ!¼'séì2–úJE‰~ÒÐŒµŽÖ;š¢TË\ª(%ÆW–"S-ir¹W~iZˆ~%Je“)L¤å6Ö% É–p¹ä¢€‚ú‹ù-sÉGÇ^TÚ’5›¬|¬ íiyœË¼¹¿
+endstream endobj 972 0 obj <</Contents 973 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 973 0 obj <</Filter/FlateDecode/Length 2745>>stream
+H‰ÌWýoÛ8ýWø£´€´â‡( Xh>¶Éa»Ý‹;¶‡ƒÎVo;õGºûßß I‘”­I»éå®(É“œ¾÷øx2e…ù·¹eß¿™ìv˾ŸòŒ³é kò¢(…ùAÃJ뢬jx.E¡Ùôž%,þfFp;¢€š1QæZ6,«Ë¼æ’Mç,9ŸN.Í€ó)ûÈd£r˜¼ªaÃEsÍx“³MÇþÎVìdgƒs …sgý2Ÿ†)Ú)]Ž¢°9þj×N`‰”‹¤dŠãS²¿Ù/ò”'*/Øû$å:iÆ“¿çøV¦ÿœþþ+¤\
+‘ëÚ§,ŸÌ6ÐŒ>È.É\Cìüe<?yóÙŽÈjd¡rd¡B½O£µDSä<jùŒ…ì‡ ñºŠkØ„UªæK6¹ ›\mrŒÃ°ÇòMZ'¿ü‚Û Õ+³’=â³Ã}ܤe²Å—ÅzÅR.h®êw¿`W6¿[v-~»í˜‰Ûïò6O›A£IYåYWn´€šû<_½zu69½`—g,Í”š¼ƒ¥™Y§—z
+œ“—y!9.âXä)gÂM&:ùlúkrùó4åErŽ•½I•}¹²«™´µ]'ã9WÐê3ó>)ò\”%–ˆJ„ß㼶à¢Äät^醹Á¸à[{×±¾ÆÅ–íóh©ýöòg™~#ónµKy™,nÝ&åUÂÖ7f§ÚUëéÏËÒmg»Å#®Ñ±ùúS*Šdµ\¬> W…ÎøU¹º½k7.2ÇΰݦÅ+ü°}À×õfe€É 0mç´mÜì®]™ÑÝ2ÇBØåŽ- ˜ÒL&lob‹øØwvÒ¬o¥C‘ “öÛq³N3•lX‡6m’YšUÉ~²]þL_ÛûµÉê6ŸkgØß²ˆàuf(N¹×Q• €qeo÷8”—,wÐ> Xãc¿]þq°óãýëKm—Ë5¦8kwvOØÍÚ"04‚Ç:»‘í½-ç:Õ
+\fû‡åŠ!O>0Ê”×I7ª¯ýtJúT@CW[ìÚj'ˆ"vb¢hN[Ø5˜ó2Õ:ð9Ô³õz¹·ªÕKAgzvç&ˆ[ÔŸ
+!òYŠ­³á²ðuO÷B楎Ռ ;5£ãVÍȸS32îÔŒŽ[5#ãNÍÈø˜ši†Q!+Š¡3É c“ÌàÐn‰€qŒÊ·H©× A§°¥YŠØøq n‡7`4μšñe8ÈñR9´ä—¿X)A²µ|)8ÌÀÛhc…ª8H—WžŽ¤«,ÐòC}ç<›¢Þ_µL´ H2cæ°Â3~mTK­1Œ³Ö.k®ë#ö¾ÅÅ^cGN³¹É=ôåð*{àûL¦ 6ëG0}݆]î79jITµÙf §UN°3Z3•»Óä˜ú9”?I3¨xq»Z[¯ËúKM °s3.\€zG’ç•œˆöü¦ÂŽÞD¸g7îÉM…·‰pOm"Lû’Ù
+®¢:böyvöY^ëÿ­õ·ËjíY­³3 µkÚƒ§XSÖ4žé?ödéMÒ¸;dJÖ{°C®º'»§ó,ªÉS>X•3OsŸ, ¼Yâëÿ|
+ ·,[ApM/Ïr€{A³\©:*°¡V1Ë©¨c9¶,§ÂŽåTرœ [–SaÇr*<ÂòCÀ¨]+R]6à”,Õá6rú3;3›|ΰŷEZg€Vê¡O¼\ÍÍA6ÏÙ»
+;tá]Dxˆ® —þ49@—Ö¹Rˆ.ŽhíÑ5¹ý?aSÔƒM*ÌqaŽ+’B$íÃï8WðÕ»´‡RŒAX›Õ¡³²‰ÃÙn¬p­œU?Ü£d·¿¯Öæ’r39ûª^˜ëÒ«4SQV1ãdcQ¬šRyl‚i4‹²nàú gzwòú'{ƒaK`â¿ø ÿ˜·Ù.­°)4l ‰MÙ”ÁH"c“Š:l’a‹M*ì°I…6É°Å&vؤÂØì5פæÉZGöfru‚Ç,‚UJâsãdÆÀg·µ6y¼ˆ‰€ç`ú>á9\YÑÄ÷^ÞrÂÈî
+;ÈáòD¸‡<v'Â=ä‰ðÈa/üYÿî¡\ô¸GŸp7Õâ ëíqß¼(îƒÿe‰XAï-æÌûÎôÖXÔs´áFJA¨]™ t0 ßÀé‹6GŽ& Âa29ôÑUì£ýXï¸1íl·0ÔéؼC—$Ñ%aQÝ|ÌÏs¥G8´iW[lßÃz³c³»§Y­º%¶(êaŠˆ8 tNœ]îŒ_˜ÙØ~elÛÇ}w¸ñ®ü,7Æn˜¹Ú´Ðº¶ÒÜv˜ÿ¸3M~´×sù!Û;ìÑýz…Ý’Ъv†-ó É up”÷-‚å¶Ö×ùm‘QÛÅ=N´Oy²ÜµØU·ÆÇ~»ü#Q¦eÈ4”ß.—k·uF çìÆ]”·c${tP嶽·Õ\§à_&ùPÏG%.G%¥‰iMj¢Pq æ{Î%ŠU$ŠdØ©"·²HÆ.’q'ŒtÜ*#wÒHÆÇ.BѲ"Ål*´{m.Bg'™ª*Žªxì9¸ èÈËûë”@še¼>%¥Æô[ÐࡆëO©(’Õr±ú0\]cÃù1Ó·w­½²Í±U ´Ñ¨!~Ø>oéƒ+å
+endstream endobj 974 0 obj <</Contents 975 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 975 0 obj <</Filter/FlateDecode/Length 3745>>stream
+H‰ÜWioÛHý+ùD.B¦/6›_ð¡$Zį%Ïb`‰v”•©Œ$Oà?U}ÔQÊá™vD¢õHvu×{U¯NÇŒ»«öú툳‡5{=ÿæL°ñ=«rÎ én¨Xarùbe%r%¹aãG–°tüÑ=!üž@hÊd‘U±Ì¹Šg,ŒGC÷À`Ì~cªÒ9¼¼´°Š†Ç¥Í…a‚ÃËÙªfÿb ;÷£ÁwKïÎâ2Ÿ·Cô¯ 1Jîc¼õëŽG°D*dR0-ð[±Ÿüy*sv—¤Â$2ÍDÂñwWEúËøð?!äBÊÜØ6du4Z tû
+Ó »×.ŠýŽß5æq•É/戥B%p¸:fŸ³k€Ý}‹z‚¿®kæH"»ô‡8¥ÓE'ÅÞ‘(Ís£1<#a«1¼›ÑÙ;XÞ‚`ð…ø°Vø0g™È…†mžÃmëùc*Dò1-6ˆNšz‰_OëÅ3"Ýãª;$áiü7xÁd±XâMß3v¿\¥¢LØæCÝ[»}VÊöÙõÄ-^³›Ô$8õÀâ î¸Yâ—€·hë? ÷; .U^š\(…T>þ°DnP ¬ E "P)Ê\ÒË”­IX)[úi-¾\[wMÁqÓ|€O G¤DÎ…Ñ{¼‡3õµMr*ëïïFÙ9‹]¤¢JNβYš=šHÙiI·©~³X~N°qxîou7Â3Ò­\¢\=3¡tÿØzÕ+o&·F¹x}ooÚÚ”ö·ÊÊýío½M†—ãTpàˆîmªýÅõnà.Ú»„çy ÕKĵ´Ÿ¶Zø K”¦êb¾MÜð<jw(ñ¨: ©NCE{8øØ „t:ÈR‘?¯
+Ï ~c󵇻…5ÇZ1«› †8¿Ÿ×^sË{6A6ý¨M›cÛ.¹D<‰ýDîv>_9Œ/÷1¡ËßÓ*©Wlø´Ê±pô6벫rYp§y!rc˜m¹Ãú#À®Gi?4Ë•+!»
+r'à(wŽr§à wŽr'àm¹²R[j7pxh€)¨U;ö•z±`ï1cËɬ—dÛowüÜ#Ê`²q œ,ºÞ´¨åÓ'üå°þÁn ÿ¦ïÖÿÁ†¹W ªloŽÔ5ÜÓ)“¶´É›åŠýà7ŽºÍ+Ü|v Ã Uu5 ‹qß&§“u=cÃfS¯²Ñ30 ÿ7õ#|îc¾¯¸w°ú¤™dàëÕù¶À F抗ß(àŽ¤%ST°ÔRº@_2$CÂ^2$CÁA2$ì%CÁA2|@2=ÍR3…Õ0%FÍŒ±Î®àð'Ó¦µº€H¦8ÛØd—óÅôÐKg'%¹'¥Q½^㬃ÃàiЄ1é1Í Œûê¾lºäþ…’r­Qæ¶,¿$(ãâEY è.!ðR%$)‹JB£IYŠÎÞÀ€·ôII ‘”HIÀ‘”IIÁ”IIÀßYÇ £z®í)tŠ§‘JÌ”“÷óæ?óæa»KA”¤PÒ+_Ñ6~™4+yǸ?ÁÅ™ƒ.npy&Jz?5¸>iCBE+£Dë=ÆèòDrîèw—¸?nðÿ{¶3fñ=~˜¬³®‘ÍÔê^3À0Ý9-wÊO‹Í|:Yoz}£kJ¼›âFõ
+½Ñ|Zc“xÅò<GÓiö*>ÔyUÚ^Ãi=Û•˜²:"1àÚ«TˆêˆU¢Ð(1
+#à(1Ž£à 1Ž#à}‰ñÖã‹#¢wVi–]ãh!“!¥°Ë%8ݳÑþܰíäæÊÿ ~^R±_2©íHp$²E‰_E{[zÌOîÒv7~mäle:Êö\
+ûyà†" ¬,!þ²*°qfP`p‚nùÑ}úëiš•É‹Î.—!©G<Œ¶öˆ‡¡ÐÀeö\¦àÀe
+\&aÏe
+\¦àm.gUwƒö0º¬zæfÀÞÍñÄ×XN6aÒsÙQÉó‘va^Ð-^ÊöPû÷Øþ#F~†Á>
+¿/›Å³‹nŽ?7_*ÊY;tÜ&`½Q-hà=÷ÌíµÙ¬&Ù Hì5²Sª{ !jÊŸW¾cjžlÑ•ãVSP·<Í7» üªŽ”i®r«IÊh¤<Êp¤<GÊSp <GÊð7Ãeä<íÌU§h"å¯Fìúäû²3"íÓºW‘ƒ;Ú»#WH¯S“ÔŸWtÑóÔ3¶WP½þÄa—WíÖÕÕw1<wvÖ «þ¨dWL» 5‹†­ç`¢V¼îTÐÞÖ:¦;·òÿ¦Ô€sÊRS¥ìUaŽ,íIBƒÔHØK‚ƒÔ(8H„½Ô(8H‚8¢Î‘š ñ(µ³Ñ›Sß\†(¶84®Á”®ÏØ—÷O sÐð.o` ÄU2¸>éÇM«0ݲ׆Á9»sá¿òA9Äm¡"yÀ½|pÕ£Õ‚ètÕÃU4aUòŠåy~—rôÀfUÚªS#݇Ïv]’²¢]’*ű–¡ Çm¾µcHŸÇyLÁÇyLÀ‘ÇxLÀ‘ÇL9{ä‡44¥è¹¤¡sá®f1W¾êÉúiU?ÖÎ…`™Ûôª·ëð4es?xZa"
+Œ!àÈÞgŒîúå‘ÊÇy¯òK Ö5“ I³a§)´žÉºFÍz-Oªnê3~è»ÀòsÕpìêÄ 0o±XºÖö9•­ÇWÆãŒÜÓ@éJ|/i¸…eIÒHk!¿Ýá–[í’BiHØ“†‚i(8†„=i(8†‚¿“4²¬ WßHcc×òYçíœãøs>fWif’÷v\\2¸
+?Ž¼-Ó$½aÆ]îRÏð/òvD”òVÊÐﻪe¿jÇS)o2Ç'ôÛÑXÒ»
+6#‰Ñ‚«£¸”ë”98;ÔÃý
+¹0…¥=rG§AxXS+0–ùìR
+,=HÐ:A^R :'vR¼’|GŸeÔ‚ä›×#Wƒr:…•œãCÒh÷Xl®O”­,âl†ßy:_? û³ˆ(º‚ÐE—ª%×£ZlŒA–/ç‹_èðgqN%¹»HYµ4½¬¯©Éú¦k*Æ*Ïà ŒnzϨ‹*C=1ºè‚¾ìëÎÌÏqfí¯›¶O˜]ä„u,0Lj)ð­¢²q›‚ª\>¬À´‹cÓî?ˆ·"¾¬·-í3BØ¢pÊ"ݨº#ŽÞѦ»?‰åBœÈ{ò¦ù%îkAqŸk~N╾ïºÆ¨
+]4âöðŠ‡ Óë’0ŠŠ¤U¦C:³žoÇÛ«YÂì@–°ŽA–WNAMíûûì 6è½²-ã$t54õÿ\WŒTÕë÷黎eÒ@“Î3I?™°òì ‡Ã„w®9™7çU>âŒÓ„÷„õ #,;¿
+endstream endobj 976 0 obj <</Contents 977 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1513 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 977 0 obj <</Filter/FlateDecode/Length 4445>>stream
+H‰¤WÛŽÛ8ý>JÀZ)R'½ 'k{ff‚…bËÝ^´¥Û=Iþ~O©›-Ù¹ ˆ¥f‰u¿œz»1ÿ;<Š7ï–±x<Š7+ùßXH±Ú
+űQü&Ò8NDfe”¨8«½D¸úßîFŒDZ e¢4±b–›(—‰XmDp¿Z>ð…û•øK$VG`žå¢q]å‘L…ŒÁ\JñQ‰·«¾6Ä[iâ=kÄ|ªèXzUìtüÃÉ]-!"”*0BKz&âww…2ÐQ,þ B™*œÉ ¦sIo&ü¸ú)üo¨l”ŠÒ¼U9¹ª-):t ß>Ó.˜y‡8þ¦Ï_ªÈÞôH’2#‚býgØ“¥lÉžûÍr<ÎÉÜömBÚ´Rðø†Ë.ÆÉEŒûiØ…8yfÁ‡e¯9|‰ø›že8SÁ!4Á±J©M”uŠÙø¦V¶ÕJÊ ­» µvu%B™ˆ¤¦'¥Z,P¦¤äz. :=–BÒS T4`)(h²Hç·t”ŽñˆŽÌ‘tL¡N«ã¢¨Kñ©~%ªÍ@‡Ü•h£)ô]) D/=’TSJ´"ä·u€aÙ3 Ã<Uq¢ªF ú†iiR¿Û0Ç`Ú°4‰4‚—Å(D ½;þûíQ§9”è‘M‚ºq×+û¤ÀS•Î8«'ÈžóÕÛ¬z%ߥ¼ºH§q“1˜iãô}ñ%TÈ£ºÞRšÿòöÊŽ!ç+ÈÊ$ysƒ/¥ï
+”øÊŽ*bÿºU‰zJÏBð_5}pˆ$µäºú ôûP‘ø½x~ug»#?óhâî=g,<4âuOÖÎ7.#:ÇN½c'¨#Ž•ÕºSÇ‘9wç"Lá‡åë§ísý9”½l–ô½ª¿Ç«G.õ3^/ìUçbzu"G›ºUç˜UÓnMrôé| {·NP/ݪҮÿåÓ «l”ê‘„]Rº'lš]q­¸V³ oªÆ›œÄ¡Ì‚Æ›D;''øÞ™7a1M¥)o¢‘÷ x”H­ ØÝm|=~YiÕPUÎØã¢)_!v7}˜’^+]lljR’ÕvIšœãË~”»¶â„éÇÜXЯUË(Ål Ê\œm¤àj@ÓÐÿ⇑¼Þˆ·Ë%‡ãT‹9¥7‡î3':HânV¸³ gÖ7"ÔÇÿ‹Ó®¡b†ž±Tê=ÜpÍ챶ªÑv2x"J±®7;äPE=²š”mÈ¡Nù¤b†:ÎQ>{pC;°(ù}(º@VÁ¦¤÷upDÜ?•ÑJNþö M9åzÓ+*ëÆWòcDý ÍÝ¿àwž‹T“IR¤7Ç*ùÄpBŒc=æG¾ArfmO|¸ChïP¿¾ˆy±/ˆíݪV…oìñ%Rb.g‚°EZê!­ôìø&:sÈeDóº0óaÖòXVë…*Á
+r«ön%v„@È¥ipîÎY7%gŽGߺ¿sÞÄÏ™—+Á5ùL¤’eu¢²<¶úö—“ÞÚçð•DîuóÁ{À‰ž¢ç
+•5¢¯m>F›Þ.aÃYŠü@—Qî- d{”ÄÍä A”€'nð‹ù­EËú•I¡ ÖLÜ=At‰À—+ú9RÁ¼8fe{z¢}â®üÍßp7á£Ò ‘£Û”4ê¶&G MVO!†BI¥Ö14]ýê^Åivi”˼©ß•S¬Ë±zQËãUj1Go¸#¨Eò>H¢¯ÖeJ÷é°¨h×z)èZ/X½æׂ׮ò0¶=úAÚöSLõ43m{AgÙÉ©EE{Ý®ÚRPx0 ”ÆëyEIr:oˆ%lÏË%«Zl’PôDCÄRüÀõåPo^Ù&ôxt¯O_CÝ×¥8‡Gz9õ¦n7ïîã˜Ê‘¶ 71ã,åMÁVPÃÒvGq:êE“BJfÁît*ݧÚ=žp§t[ì‘^Ùϸê¼OÝõ. ‹É=;—n%3£æþ5$1˜¹¥w–´cûDß®ë{ýXÐß$™¹m~£ü7ÁâJÚù?<îw*²÷ v,±³pÔÀ-|ÉP¼ò¾BÞfø›#ùHzƒ·MÛ.ãA×2æ˜wxR)÷âW~¡ø—
+$À3z×s½¦œ©ågÓ«SLÁÁÑ•PC.:úËuŽ!ÅÚ+nxa_óAI§Æ³wóˆ9ôö«£<ÚØHcqHonÝVÚb§Ôe~8×)á”n{{ó¾:Ô¯/b^ìËþî"!ÛªV…\S—3Áƒ5UZ¥º•£a@~syÓҘׅ™hC+eµX¨K£ö'-t\®Y¨²4êb œ¡oècy)ŒXÅçÂEõXö&±&Dò“†9.× K´ì„ÄnÞŠ[‡š/·1ps¹{ž£¾Ó| Œ–#`#º0…´ˆ|Ô ­}¤ š†jÐÜÖÁ–Ý{µæ m¿"µÄÒÙe ñ-c»‰› e» k—徨‹£Å¦i×”¿»w\Wý6@Fò;sx ‡c€pLDÙ¡dR’_
+¦ÑõrÝù ¿ ó­ ó¹ óÙ‡y‚ìÃ<A ³JÉ ’`i~9^Û8Ë ›83Ö™XÌWÿ§½jšÛ¶è_á‘êÄ‘
+/‘3íü'ûwº›ýÏl7ÉT×{²Ý$ר`»ýÞÊvýƒ§ØnÎû°Ý±›¯³Ý7z8°ÝY Ûíy¶;:l†í¾Ñ±íÎ:F¶;ò~l÷4Gßí&™fšüÛíý}7¶;öö'Ùî=õ4ÛyeÊ’Bá_3ŒµΰÝ×u³ÄA™¶;'³€nNlAÛ¬Ø ³9±½óŒtLƒ&‘÷$ JRx[pXÉ# mäi
+ñU HØa(Í”1gX“´À À
+]â7ïOÆ…9ÓoÂœ/(y¶ŽRXXÛ†)ofrÞ0]4$ ÿSœq|Û:*
+¾ê’‹¿RÇ­ê!G .4WŒ¸LIÉvœed#çÒ(žÉ=è¯ÌiBÆ-+N3bs§iÑÌœr¢å–V\è1ˆ²XgNY) R8 ü+[ 4«[擽ÃJ³ìN±Ýœò¹ÔiZ ¥ÎÉG™IÃXÊ’ÊØ
+¡<c\ú
+endstream endobj 978 0 obj <</Contents 979 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 979 0 obj <</Filter/FlateDecode/Length 4084>>stream
+H‰¬W[oÛ:þ+|”Ö*ï"Ï[Û Š,Úœn#ì§)®-§ÞmåÔvzп3Cêf‰qÛdŠ#Î3ß¼¨§ßþ–={uÍÙí=«Ä8¬Ú0_pn$}à™±…å\±Ò‹BInYõ…e,¯þK'D8Áá’VLšÂ*ÏÎN(V­YvQ]_Ò‹Š}eÊ똗¤h8.]!,˜³}ÍþÍö¢jƒ¼¥FÞ‹VÌ_c˨£äAÇ÷Anu "r!3ôÀÅþ6Š\dºàì&Ë…Íd¾Ç}+“¨þ
+ÿT6RÖu*«µEEǤÓ'Úe‹èÀß ù Yø³QåŒ 3#ˆë›| Kz^ˆûÍ/
+<N χ6AÚôRJÿ#A6}ËI‡yØÇX½Ê]öö-†¬×?žáqÜç&;àb»kX.TÎÕmô9{dúîs½ÄÝCÍ(Idþ¨§<õé)<ê <AcAŠ‚o;M-¹)jê Yz…ÊÏøG|2­Ïªå>/³[ܪìˆßíØu.D¶»GʪfH«p½ÄUƒC®³;:Y7t†½Ìm¶ ëåÖM½ÏE bÐ4Cufð,˜Áƒ£½568s¯³@ùBÙÖ‚êS.Ñ­BêÞ/º¿¤Vè(%¬ñ4©N!q`),ê#xŸác‡¯ìz‡ß#ìÅïq¹lð¼[" ßë\e |™{2Ö ­†lš DfÆ"JÙBÚN+v™/tv‘/Tƶ¶l@*Û6ùÂd¶ÃÅ´³ÙÔ帥úªþŒ™£€ y–¸á[@p>¡½Gdz™èÀî¶k\Õôdñù=>­ÙqIgnñ…¸sˆð»|QfÏ1ÀW˜<’dßÀ’<y¤$
+‡m}€%ù/¶®àÎÂ!L<qü„Îe‡ÝÃëý‚¹‡‚@²EÉ
+$7è›u]^AN¸·ªq¶€»ÒÿN°Œ³8eì÷#™
+Þ·ÙáåÛkÜ8’9â}UÖ^ί
+¿sÌB³Ó˜’ØYÎT^Ò~P_ˆèo] µªÍùË‹g¯@‡ýî~Ø„, ýsb¥ì‹›ž'†üDzvÇ®–_êAQ®§ìÃSŸíESK—Sal(ÇûÂöjÐÚýX‹ž‘F¼&Ž}‹•¹>ÔͪzVBÅ)maàò…²´EŸ8èý³
+“†¬&±{·ln‡¡S\Ò=Ö°Àå!ôÛNÿ‘ÄìóRNåinõé­ J% j)¨Í5ÔÍ5›´Ì($ðv ƒ´Ž‘B/êVÀ¾Æë¿¡gX7+*Pò×_C1}¶œGMRõÖš‰2ÝÄÚëú˲9n±ï­l]PXaþnïÂö®ÁEÀâ'sx uˆ—©([U@¯µÞ
+A
+<D\ Œ( ?üŽÏY=Rç¾—R!\õ ØãôÇVËýþ;!rd(·G¸fX‘ÑÃ9ÙÂbØvI…
+µº e
+P!¯]½DüBX&Iòö"pE*‚0ä»ÂXSéCnÕž¤5ø8
+'
+#JBo€àsAœ
+ _Ñ]¨ž_âf•Õ@Œžà¦„Âí‚Âaâ“0ñaÈCµbõçœ
+$ì}É¥ŠË¿9búwÒÙ{ÜÇW¸)HÞQQ½oZ–_ñý¾í8<ûŒõã{M‘­‘\wÌ·HÝ„:¿dA;¬EÙrõ¿–#}|
+6ÒŸ‡žÕK¶ì5[×l6[¨1M{Œ$Ð{d õƒÁ5Å»©…bèbºª®*0%Âp¢5
+‚årž`ÈD†3iú”Cf¨NË㯠™Ý­TøvÎ^Ó\¦ç̱Á³sæ0uué©'FM Ôºó9å'ãe`3?˜hÕüDûS©5?Ñ&²* ˜êì´iŽ‰`Ôi;M<¬¡D8=;Ò¢a)rÄ()2‚—faFŠõN‘§cí
+Ÿý‘/ ~ç²ê¾VY5!…Ô:mÆ3P…¡|wyõª&¸íæWJžê7øð&»¾üó‚Ýdò&¿ÉQÇ0¸[B>¨>úƒ§´NÇP¡sÑ‘à[cç¨8TØá•mS qɶ£Âßœ· ’8ÇŠ– cÅh0ˆé“8ŒS…ê³j<IµÙ•:ÆŠÎl¥ÇQ›}‰ãsäÔ`‘BçœÖ¦Ç Êgh’¢ÔŒZ`E¢'Õ‘×
+/ön›@–s¿•ÁÚzÇ÷Æv:à•ö×4g¯€¥,#ýе¬¾ÖB/U)¼`×Be½ûBÖQû3²,ÖÔ (
+01Pg²ÿHªÿPw=gÒ†?ï;¿²}«žÔ«ŸBvØʺùÆUM¹ªS륔Ý]$›ÜŠŠ›ðÌ :p°¯Rufºíð ÜR/rûê¯5ÖøhEþÈ9ˆçyu§yºed†-‡ÛÀà’Ùsú¡’}ûÖ>ìôÉ–™éH‘ Niª;@xÙ fðu0ï…ŒU*¼ÛR¥+cþ¡¹ú©"›LX©T’¡^„åp¥L!Ás’Ži¿Ëgo£S:3tÊ(véÎáM¡Ò[1‰‘8ë’¡ËYë;i蔑Â2ÉÒá=au©S—¦y‚“Г¹¥Jb¥JtFª(l|œê~:©¢:©¢Öï·Û {±.;£Yrù þª­øéù¥?_GbEå–ÆÏŠ(ÁC; îdY?-$†ÇEÀÕ*£9l¤ï‡j/¢%ò=ò‚yãY·f„;I¶ûª<Àõ±òÚ}!­å§FãGÊ—ÜçHÞî•ýï7»¢ôØíÒ ™6Ùj.߈¥Î1N}þ_ÄÉ4’u²D©«ŠY’Š,)œt(’n\õ+àthéåẖ"‰™ úq®~ì³³’D:;™â]Á½ÛògJuuc¿Wu¹ç¨UW7ÎeT×xŠçU×;ghU—s†ZuÙM¼ˆê æP]U]ΉQuÙA.§ºŽ¯àÅU—¶†áï©®n¾S]ãÙþ¦êú_[=­º»¬aC!U¥§¥slt¨®ó¾Q4ϯ¦U—Ëf(Åe6â4kÐp™MÌëXuÉ./z)àV]X`”Z›r±ö–%ôS³$úÞJ䞪g­UÈVfeIǦ{ømáÔZ·GpÿÅô Ãÿâã@4¤ö®h]3„í5˜µDËh6?Yö´ô[§Nª!\·´›LX'©Öåj¨¶3;¨Öåm¨¶3;¨Öå­©¶³:¨Ö鬩ÖNzšj]ÞVÕº˜/Ê#ÞþÔ ´½ð£²qm”
+endstream endobj 980 0 obj <</Contents 981 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 981 0 obj <</Filter/FlateDecode/Length 2508>>stream
+H‰ìW[oÛÈþ+óHùñò¸k»AŠmåîÃfQÈm³µ(‡¢²ñ¿ïwÎCJ"­ØP( ‹äœ9×9—ù~ž‹˜ÿê[ñöÝe,n·âí\þ3RÌoDűU¼!6‰’8Ö"Íe¤UœˆùZ"œÿ‹9¤ãˆÁA¤¥P6Jt.f™2©Å|%‚‹ùå{f¸˜‹/Bç&‚ð4ƒ#…6Qœ C¶¨ ñ›¨ÄÏó¡1$Z*Ý)ùsß@'°µPÅ­…¬t~ÙªýŠÊ¢ÄëUdÄSjIãžæõˆ¡-#Ù»†m69åšÖ¤hÆ^Ú#ߜĿR…RVIO-þá¢P§ø„2 TLkÒ†ÌÿÖYh•Š’¬þó"à¸#0DÀÒñ÷ò¥ŠòÓHGÙE±ùt©<FÑ{¾"'ãP‘ÌåЧd62Í#yÒ%eý¡ÆéÑ¡+ª?Sý.Ì‚‘³TC&”*@ý|¥gÎdP‡6ØÒK¹©Ÿ¬r»¢P±ø2ï»/´º-„¤§?*%Ãé$q¤àKbáÒÉÒ³¾ôô‘',<I`‹÷äýÅÛwaԛ݃ø°XC ¤Í£\yNZptbNÀν*”y%Æ«0ñw4eŽ±˜#ç>Ò9Û¢Zîù¥t¥¯ñË xÊ/•&Qx*Ìé¾iõ”øPϧEu[ téØD*{…;NÀSîhÈõòãSݘΨ¯)u<Œt)z˜Š¢AQÈà1ÔYðPˆEµý¹í+q²³c_ŒiÆ*äR'»F¹™à†Ý{µ¤ß"̯CA&ܦZWO÷CÕO„xd"°¸#G/‹õ¢jÊPš`¹«‚[À’rµ|pË›jo {È×ä««©NtdP„iŒF.á’• þæ€h’ F ÈSOà5ÔZ¢Š£4qT´îIš2)½O‘µV\ÂSä<¡q>Enmž ¶ÑTƒSÎû¹/N9É)ÑpȔ֦;äsç/ÔãżÍB|¤¥+ü‹ËâË®¨h., —}$Úp_‹I~,f¸KŒ£sˆú€½ÃàX_u(³6aÙœ„yl„PæÄ(M„©'Zæ˜ÿ.D8Óyf‚÷á,ƒ,dýü"œ%Á;þý$B+AÅ=_1,ŽƒÞ&­¼MÒF©Î¼a$;Šk5_o0íe2d짪䩚F1<`ž‡ÒwåV îKƪ\†(ÿESÐ×V4wô,Ä6„M2ú¤^ŽG¯I¥} r æôj·¾îDZØÜðnî
+~VÅ·PáS<uJ#¾¸[Ÿ;ÄNs·haý3”y°ÙݯÄÝâ+›ìÖ¯Ùà¢Dh6ƒ÷–+u|ìdìU˜dÌõ#…F,ØüífWÓ­qé¼Ù2mKa3Á:œñ5cï0²ÞíC䀭,)Þ¸‡$­Ñ$¸¤È4°ûËιÀç3HY•ùô‰zDöøîÚ÷cFúˆ#'M¼¶&Ѭß#T‰Šò“L±‚Æ+-:5lQm£™âV†íìÈ™ÙopmšâÖZG=Nè¡Õm—šdÎSêôÞi /™uÞ)îjÏÚ¶8½70ò„bJ-€@wñMÒ”î é>”4GÝg±dÀ‡aƒý’EalyA8yåÛ#Þ#¾6GšJÅ„Üvf*F QÒÿ‚‚LP)dÂKÔ6iÛŽïs¼?´³õVc»Ë·¡w~L1鄳€Æ_æ\ w¸"”[ÒïUN}
+=Š—¢¢^¬Ê#â
+ƒtëú†lZ,©%¼‚*ʹ4d@;AA½„J¡CÔÀ©?ŸŸ…3ë^ÑRQÊ‚¢ä,¹ QN
+œ=ÀüÇ«¦Wñ;©’é¼yÊ;Ó*¯ó­s†]dË1ß—Õ¿éô[ÿŒx%W›R÷&.ϯ>‡}ýˬ‹«›‹m³]JrÝQQwÔÁ†¦Ï«÷°cå¼é+~
+q]`*BKÁ„o!Ý—ûZ«`×jŠ D¡Ç!|’]%ö« qÍ«¡Š©WRàÝ>ÒÉl|³[²€_("NËŠ8Òƒ+¡ƒa4ù‘0Ì¢ø¾†u&|×õ/>Òë±ØPñëô<‹hë
+šL":7/âd¦Ÿ
+“@3¸ê¥Ìpa"JÀ7±k„gðƒ‡ðw_6â¼\ÜÂD¬ai;Š:¥Ç™3SZÙ DGuPÃaË#V͆i‘ ã“O˜0¤›º£ž1Ah€*¾79¨‰aô°¨ÖӂòfY” » µ…bk â¢Í[68
+ÒÁ() Á èÜÛ ¹Î³VGyÊŶ£e¹auŒAk§”+Ï­£¿ÂÍÖ-å"TcK—[øOÿüQQê¼!¶ò†ò‘‚”ž‡:~(kÄÙVˆå¦jeÕê_ 1Þ¾:*\Åó¼;Äû ±—Èi$…(êzSSà"ñ[8³Î’)÷È›k/–rré‹ ¹†dKµ[¼e£HJHU™‡Ï-÷zѼ¥æŒYSÆ,š’oÊlÃ;ˆîæœÜ3[/úÏ5ëÔ.(~ר ÿî’ÞÅŸF }ãNEwâ=çâÕð¶ßSšIü**'ˉZÒ” Ö¼>ØzÇ¿ÕŠ×ùݽŠÍ`'MñôX‹;ÞÒEh&ù×=„â6‚F9HÏØW¦ÊÚ‘‡׎¼¿n(9jÊlqƒ¬Þ…íWÓ&iÒNCÞ±¢Íüºß
+f®¨Ôh#YžQI‹†IbçRåI©™tCø æôÍãŒÛªkEÿØw¤d´#qؼ›u-)Mú–ÔŸèúÁ}!œq°‘K?±c¹šß\À¢d§Š?ùÕ_þ#À
+endstream endobj 982 0 obj <</Contents 983 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 983 0 obj <</Filter/FlateDecode/Length 3692>>stream
+H‰ÄWmoÛFþ+ûíÈCÅpßø´µø€º©£»~¨E¦å’Rzù÷73»Ë]‰\[u®8wvfvžgžýnÉrú×oÙ›wr¶Ø›%ÿwÎ8[nXå¹ôAÍt‘y.YYóLŠ¼`ËKXºü•Vp³"‡hZ3¡³BÖlQé¬â’-Xr½üpC ®—ì7&k•ó²‚],UÆ ÆspÎú†ýÌ:öÝ2Œ} …¾n›ßOC4.mŒ"71þbö]~€-R.ÍÇ¿’ýÓ¼ÈRž¨,g÷IÊ‹D¤ žäøžã“Nÿµü;ü„¬…ÈŠj Y>-zZ@Z}]²°1þu蟋¬~±"²œÙHÏl”«û4ØKÔyƃòëWld|œoÄkæmãw)ëKYûC.'‡ö¡?cù.­’÷ïñ˜!{Eç'ÙgüÛà9ö©N|h÷K¹L ¸Ê~ÎîÀLß=6+|;4ŒšD„Ç_ª¬„Šy& —BCJ/¥Â)ÊDN2!˜I±Œ™Ü\¿y—–I¿?>±ÛÕ® #à²ÎÊb áÅ&'fœí™°à¼xAGä¶P{u*O7"7“äÞã94CÓ­Oòy »}E^ÆÁsy Q„¥ãå {,"‰?“ÄîVé¢Hº“¤”Ì*¿až©ÛEL·C'ùybÛ&ÌL«¯,9x¶xe¤¢s$îKR1“Î'çYaë³€'_RY%O [uÌ—t怠7'ÙT¹Z@ï:ß=À[%ú5ÏÝ›´NÆ=`*
+ë7¶yIªÅ$ãf’à‡f·êmÊU²¢™‘O9ãSd²˜$öÐ kDUûdï;ü RRJРu)ñKxkÚ‰ÆÍ$¥ïûöЮW-žœ€“  *™é¯¡+ãà¹ÎTµÎê ¹KFæÌy7“ä¾My• C»íšx#ÆêU»)|r\“z‰à°4§z•9¬äàXUæRÙœE¥²*4uÓΠKd\S–(˜³õŽÞï ,T—œ=ºÇ-„Wîié)i¨ÒîÄsPàîù(U õ´F‘£;²rìa5 ®ñMÔlfnÌ,¥ÆÓ™]Z1sUÑx˜]Ö32ƒÕ0_9˜Qˆ¾Ø‡¼ÅÁ”"Ñ1$àUÄ»x’]µ«m·À0œˆ8
+Ì׆ô
+±@ÎbÐg׋èú¢ÂÆ7ë Ï® Ò¬ƒûAE°—„ÑlÝWŠÐ¥3ÍK¢}óé/ céBJ¥a‘€.àÎJ©‹ bOõÕP±;M bâ°'@ïÇð`ˆ˜bf †ˆÙ!bvÇÌ ³CÄ|Öxyà£àS! ÃRPŸHºOØ^û¾ßƒL­þp·ß§E²§ÿÑ;:úJ'?‚î7çôõbŽû€ÎSÐ5ñþ21©ù»¹]¦<O®ñfð.UæáÎlç' ´0­‚«Ê¬¹Oò,Zãõn\ܵ%}_ù2`teV‡Yü@úR~ÀüLÊS2kéZ‚Š…è÷*½Wâ‘å_ÁÓdžÑ,‘ N/xn7TÅ2á Ö+|tò%Ùe\R´=]Á’G–Am1 Ð¨`Ú=­úÛo|4ç¬F>®û~ß³›î·i1$_:Ñ,’…†ïPºð0±ó®1•.L¡ŸÂöøÓA½H½Ñí—Ò{©½w^¿§¼6ù>µ;|jXŸòn)Oèkß Tãý©QÚr]ŽîúnÀŒV[,,Y ƒ ùVøn×ÌÅŵ¯ÔIV°ru`掃yt“/O>-nÚô=ÖeAõ™×…@,eUz
+ѵbÁÕÁåáÖ¸0Äoü‡Zù,P†ã½®‘¬Õ0l
+ ¸Qª„“®.a;ÛײÛ)Âv@[¥ĨeŠS¶‹˜ÛÅÌ–í"fÇv³ <f¶l1;¶‹˜§l—+7×MOϳVÏÎu$;vsEJLVx&+_"2þ"“©y&»¹µ´ ý(€Nëû$ϲBklX©'æ\yî±ëý]¹Ó%ÕŽ i4"ò¾„Gò±{@—Ép
+TlMƒ~ ©õ_ÒË^YmˆÂ¯Bi%cèRÜ"EÒÜ*¥˜¹ØŒ’×Ïî‘lÙÈ iâÕzuvõ-7§e5¾Ë…ó¥ †x“f“ٕ٥¨G}ÿØó6iß˧MµoŠew;ðÿ5g·æ
+¦ouKÿ 0
+endstream endobj 984 0 obj <</Contents 985 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 985 0 obj <</Filter/FlateDecode/Length 3732>>stream
+H‰¬WisÛÈý+óH™ðœ8¾¤Êk±\Jb¯#1ÉnY[)š„df)RËÃ^ÿû¼îÁ
+j¾šèE66jémüàõN®¡"U:qÂ*ú5âßþC–ªÄfRÜ$©ÊŽT"黢•K›ü þ'LvZgyÙšlÎZK†¹¬KFM@¼|×—¯tV=S (rŠ¤½I{ºt%3Õ ¿{†"/ãX‘ªLß'¤M§¥¨¾å]wÈÅÉ!÷ó°;có&-“÷ïé˜á½åó3â3ýÖtŽ›Ô%[Z,Ö+‘*“ ¸6œ¾W ó¾e=¥¯ÛZp’èîø;uÏΪµS©Ód´ª14×p:ºûT‹mªd²ƒâÍ~–{„ãKªªäS«•b¤2e‚‹†qµ&Ówb¿¢ßy½i%­×sú$Ö›†—N¬³O³}“¿@ÎýLŠ‚¡“äØäN\Ž¡[Ëdºíqkâ–-ß¼ÞÕ¤b–Ž`B=Gà\ÒÛnº`8bòÖçÞø mþ´Ø’¦˜¤ˆû1[î½;Þ…Åm'U—ÔNèqHt}ÊÎJÕÉ3­k°‹ YSìÄî½ÔbÇÑ~Ëú3ÉôùÁ"×=M—­ªhE’i÷Ì¢m’éËí‰åTæP …DÉ*´¥ nˆº´YÙ'ÿ\¤dC+2yf-vRÈ•˜Ýó÷{T—šË°1û’"Ù¬n‘ÜüE§IÉ<;°ÃšL–ç­ÌË"b‰Ö¥=U!ý¡7FÖÊÑ—(9wèQ²1ŽzdŒÜ¸%—eVÄMk¼Ž‘‚î—=i¹Í4uå¼(qŒ¡üuB%ø5­’‡šòj¼Ù¬7>CF¶4Eò$Ÿ-¤Íô¦ צ*2‹¼ƒÎfʶ#¹1Ìg&Ïd—9lµ{1ßý Y­¡g|õ
+/–ŠU&㣚ᬾHócÒ$«õ®Wy»a¿B¦ªH¶»5WÏüÅ3úÑ q£¥CKÆÄ‚¬ãòEë™%Y™ka(÷Ùñ+1ŒS›\§#Š[Y•{·Zo¸y•­þ¦Ê
+IðÜÊ
+šN*ËÛaQ²I1Ìrª07!ªc¥á&rÙRc—Ž9^„™ÈU§ÛVT
+=î¦.cÜ »Î2ô Ä°ãeá>>6–åwD?¢ÈœJçÂ}ÐØBˆqÕtTgS(tØÑ;榷Øãj¯6d7Š`
+¯³%/÷XRÚ—(Œtäøvð5×ã×%^±&¯ûWñöç‹$jÜ;mî&¬x I?§À™oYÐ+Êõw‚_ü5)%˜óÿ”͹C(高â°WüBŸ¿pu3#ÊžRÀ-п¦Z5túèe}²>Ö5‰{ÒƒúºíŽÛ©b]S±\ rkj
+Ô'™i>ES±i:_SSÒ}vºš‹îÜ•xÙå©/Öú£±èú]ÇÃý ½ç–Ÿ~½šÑ³¦rîjÎT©.3Ð@óÓtŽºG½¸G¯ëûéj· V4ÛŠyÍãwF¹ºxðŸñ¢Ã(Qß“¯^€Ô±nf4dæ6ü1ÏòÒM§ ¸Oó-Ôß0+¥5¸ F6FS GÉUž¹8··9F=…£²jûjE£¶TÍü¢3¦)Ž)ÚŒï²I2
+ë
+˳PØ
+?ò·¬‹‹Gœ\¦(~z$y½¢úVô˜ksÁ„ošZòD¯—r¤øjI•åž'@ÈSm^Ö‰›1 ƒÞòz)g=d0Ô<L( ˆò@YQ~§c-¬Œ:F°²Uòã`åqŽ>V8°¥¡™ÿLlüýaØòÐÛgbË'õ0¶Œœ²í¦ÄH×|ˆlyž7Ï@.“ ,päDŒÜÀ‚¹™ûQ²Ÿì1rcv„z
+/ímÅ—†f};f/0$®ðaZ`˜¦£ù3[ò4¥ÙzÇã4Ç8ÅK}{» \˜-jz¥9êh2+es KšÈÈÙ‚„qzhÌL¥½|9bcú¼AbÓïi-mpÀ ®‡A?$7IžeÕMêնңɫ¢I
+á4i¬d
+V´e€ªpe?qBjD¸‰\¶T§;œàÉsƒ'9‚'cÜOjOF™›‘ߺ=ˆ'cÜÔ§âIcБòžäìÖ-Â°æ  ÄÕ‚P¦£<ɨ¡j¿ÊÕ~2e@——{ú(®w+ZLé±\.øåN¼^ÓïÊ?¨5c&­“ÝbÍ_Åå¼n·ìHôƒ6Bf &m¡';öÖ˦9mÃE““é4$Û·ÓKH&ãC9$9µ¹˜`>f\1­Mú÷ûîJ– XL“p`
+5 ´—¾Û|/†À‡Ù¾ß´ÕÃìÙeÃ#*Eýˆ=Û=|~n3»Ÿ"°ôÚ,ÆøÌ–S¼fC">³]³Ç:À¿Ý.ËÓ]nùWM”£‚|oZ=X¶¨*Úbj^ÓˆÁ^­u_ßîH5êJÃØQê-y]–†Œ·«mùgähØœÀ”f¦¾y€•f¢¹ßV £EÙ4nò' ‰Ä¿Ç§‡|~ß-lÝ.A&a
+Ž9¤åÇüÇÝs âç1sÜÃìhêÞ/ã¡Nß”â×®6”nOr@oWœ½§Zn º6L<Ô
+«:o³á)€‡¨ùX§<}2Å¥ÞôxU ö¦—Fj¾„7V Ô²ñ½,? 6lŠ¦§
+e—YäüoŠšÝ5­¹æMGeY’“ åùʹT{i°·änÅÊyd¹óx#¾‰«ñÕç|LÎYÁ9}/XQaùeïÈøèìLèè€`f_ùÆE=<d½ðòíá]t¤Ìæá¡bRI„‹ëULr:Ƶ·w2UĦV‰þšô¥UßTظ[3Ú‚ê—([h|³­^jͽä›môRkõè%ïd£—\ÒÃzÉ7{ÀêÓK¶a K™Jxðˆ&®:M‡P’YzF3É8¢êh[`ª­W†Ð4ÃGÜW»EûÉZ ‡õ:¿–2c‡ÀtÝýZF*…3ÓÓ2tQÿJ
+E„¾°2L• €XENzá–Š iºÍ#Ô—=fÑrÉ`ßìX ˆ5†Q؃cg•%zfËSJ=b͆aÒl ì¨ d¬0¢`‘àjnÍ?
+endstream endobj 986 0 obj <</Contents 987 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 987 0 obj <</Filter/FlateDecode/Length 4287>>stream
+H‰¬WÛrÛÈý•y¤Dxî
+И¾OÏ9?O™ ßæš½yw!Øõ–½™Êÿ
+&ÙtÁŠT«èƒ‚Y—:!4Ë
+™j%›Þ2Î’éÿh…ô+¬@ÑS6uº`“ܦ¹Ôl:güdzqJ N¦ìO¦ “‚ò,+–«<•ŽIÊÙ¦d¿³Šý< ½AÝÊ îIkæÛ®‹^eã£ÞÇKowz&©¸eFâ¿fÿñ/ÒDr“
+ö‰'Òq•L$ø^âMþ˜þŠÿ\¶J¥.ï\Ö½EGwH«÷¼ã“&!^¿ õK•fDg#†ìˆ!a>%-UˆTé·Ï0äuì’… c‚¶ "‚˜G‹¬ú"›A‘Ã>ìk¬ß%??Ç2Cô†ê§ÙWü/±Ž›Äò-Þ,×K¤æ\ÖVfE
+ÝÕz
+VÀâcŽÚÞÑlà¨×8ð:íc¹*gèÚ¶dÔ‹*ôš8‡&pVKfDjm)µ!-hÜA ñÓ“7ïÇ7ëû;¶½†¤™Î¨2©Éô›q7fÒ30{6K&Žßâ¥Ü1k‹´PY ©Úžò
+öìqö¹ÐT×>â`d‘À¼šA`çØW嶬®vâRF£çÇåŒ+Ý}›¨ì‘ŠQ›Ø¡!R³oè㬺.cZdiæ^Wp( z;ýâG6_¿÷Ôð$0Ãög5 Éó»’ͪy°Fzše‹1iFµ±
+š©Õ½9cø‚®þ¾ºÂk™¼³ñ'>Žænêã^é>P;Ô«zQÞΪz™Hï¶l^Ò°¹Âf]Þù×ëjçdƒq(_Ò°^P±;Mó%p2Iˆ š•. ~±'4.ÇÛ‹­†ùùÈZƒs *ÍJRYȨLY‘ñ¥Z+(s\\8Ì1qãsDÚdS§kWd9ìfW`ŸA±«M7{þõ>QšŸAQÙr^B¹ë‡DŠ¦Ù¤Iá
+à$™(þîä£Ï#Y(Ђ@Ý
+º°ïD¦Òd¾Ÿ¸HaX À i°Ôõ#!G¾¦4–õtÁ꛲Ãæ:8(¬~–
+çèŠ}.ik,¯ñ¯Zo0cšÓ®Ùß'v×}"@ü¦!¡EݨTÂá½Ý/¦mY
+2|ÓŠA“—¶»,²ZYKÀ¥g€*‚ÅíŒ,ÖZ§*j¹Ý¡±ÅE†‡N³6؃C ²zDÚ/m¶· Î.á·tá0¯¸¥‘iµÌÂ+…Ûg¸A¯H¢Bg[P7ÃÙ@’&߶›8Yq
+ËT'9/pÌà†|ǦªKÚxð ]n‹v–t½mzëB¶{XåÃ09b®Æüpå7
+qéˆt”ÙÄ–6̦ÌUáÐmFglµ2äg+ÎÍîÈn&klµ§6­4Bm¢‹=µé‚§6±Õ#ÒçS qØCÔÆw ð™ÉÔÆ
+‹Í¸CmPƒûWà…ä>g‰‚)˧x¾ÂGUðÓ
+?Y¬7€Ðo±Wgø\'¸÷Â
+2åt¾ûå(à>ºag¿…zìäãOð`€pt„%ïm6.Ÿâåí]¹;
+ñ¾p›óóó#ÊÀ¤Ã”€¿ù‡‹ó·§ÿüpqqÔ¥GªF#ç¥A`|Ô£IaŽà‡wxœ}R‚ˆTû¹Êûê`Ò=§²Ø¹ön@æ  –¸å”Î
+ˆ$±Êr‘¾Ïÿ¼rÝ‘
+eàåì2ÿ q„ð}Vỹ‡ñ
+HªhNNi,¾K€Á6d„xàGׂ_µr d*„ÿ'½jzÛ6‚è_á‘l—\.)2-
+¨Pø#hôPç@KT,X"Qníß73K.WäJNsч³ó¹3ï@àUWš]íä
+Ô{.
+ÏôÞî¡:ð$oÖÁŠ'8ãÝj Š€ðhC¦aÃo˜½ÅÃwÉ›?_Fx®åu÷µ.yl+6´<g÷å“¥jûjÝí‡-eRO•Ðˆs| ]¨))]”`4/}Úf\vbnYŒ'–O{Búÿ–šÓ¬¬ÓêS,t.检¡úƒ0R ÕµPq£n¨,Ø*”ô¨”ÔƒxdEh
+‰Qøé•×>ñ3zxGÝPJ‹(´LJ0¸z¡7UÝʧ˜ß¾R´<°C.‚/…yŒ¯ŸGq©”FŸ‰ëvñÓpðÐ<rW96-¨F =Ôf8jù”ÃΨ‹ø ·£ÀÅe¢´ÇŸ5
+óÃ)®Úª^:ª¤ =þƒÊ)ç"TóìÆÖR½i[¦ctTtjŒ×äp{Eš
+1 aEßÍ.ÙÄQfƒ4L E‡]Éø
+’‚RÌôzü²KLÙ1|¸"`²–Èf:¤oG6ži¬ìÅ0§©sýjiã »âQ&«©4Ô-î>ãl¾'Tµøó7ÚÄá§ÞRœ÷–¿Ã™ûðöÃ?¸ÍÚή—î_#ù<ÌhQ_Ý«(½ŸÙ×TnóC^S÷!I‰x3UÎ ]Þ5YW+ÆŒ›Z^ù8ëJ5‰hÙ…v‰H)þοPz®€ùà>=[ÇGƃèɶCž‡Í„ö‚N×Ö²†ÐiÏä«
+Klê£ö‘¾Êí–ý^6ôo·'À þ©(Ü)˜Á¤Ã`ìÈtå æÆ-ø`hJ:Ý®¤Ù?cµäßD“IJ-qcc%=|gö´»¯å=:;ŸKÿBðYÈ°œóZL q+Rº68_«ö,/¦¤¨§zkM¯ìT§àÚ«†ùA½ÝÔOAÛ…=3î“Ún¾²iT‰š ­ytPíñŠ ¹nX¸¥‡bï=q0¾\hÄ‘«Ïû­t5] ±©&R涟@6™“™ÍL&‰©›#šyÏ‘È ¬VWÿÀ‘nÚ
+rŶµíꉄ·å–‰TPî™›&¦‰†ÇÍ‘[¢’+Jÿžøžép0*têÎ=*®ì†:㔇a«¦™—‡å´À:*„ë1%ŒÓ!¢•èQ„ˆž)8ŒnZ³/=º†½i®Ý-m–©G7Ájï…A¡ª,ZŸj1'¬Ò›hê…SèàÑ Ï2FYœç8`ÈQ¾ÿ
+endstream endobj 988 0 obj <</Contents 989 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 989 0 obj <</Filter/FlateDecode/Length 2063>>stream
+H‰¼W[oÛVþ+óx¸ˆ˜s'ùØ4‚ëd#íîC½XÐ-³(U¤“úßwfoºÐNÚ¢"ÉgÎ|3sæþn ’ÿ7ðöf!aSÃÛ¥ú¿ËÈb)æ 8{) $™Š––;-a8$riÚÅÞd0K]œ*Ë5ˆùrqË ó%ü
+&³1‚')J±È®ÓXyPÁáXÀ¡‚w˱6„­-aÏ:1_OU ­ŽZr— )-XEßþâH K¸‘òBG3%$+úå¢ÿ-ÿI
+ÿ UvZÇ>íU6/jKŠž> sŸi'fíƒ|7ÆW:Î^}“\ä®’ö.ÉÒ™ŒÕèùÝ0ΩÌm°¤$Ù·8Ù NN.œ<ŽÃÁÇæ&JŧOäf´Þ²ÿ |¡ï‚üxŒœ¨éG¹¯ RFàãÚÎû>#™ïm‹œNë8HôØýJ'h$^ÆqIlÓ×lQÙ`‹º°% ’1ÕéùœW›î÷O¤hµ>Ñ! YÓé@
+}W€3‘F3Þ’“zêÛ’ò4ã°ùo‡m^å %:bl˜UîDêw
+G%*¼Ó d¼‚˜btyüañ ÉVìX¥šD`9ŸË:šy
+Wvyø¡á¸Y|€š®S8§˜ ^lùþ›‹cViPE-`óø;`2G¾ÝŽèpO_Ü‚àÐÿäëdØÀ¼£<
+v§dÈaC/„ ÂF
+I ö~Žf‰øœùŽ~Åü¢}ý
+8?¥)xÌ£øW‹0U!×ùR^Ö#Æ#G&ÔÔÌÉ‘·ó·7è‚ãþé
+Çõ¤›ö>ôéclÐ|\•á[öCáü#‚þ;šeÈ µ˜ÓõÊØ©‰9 ©¾Oú3ƒ™Š•MrþžA¯±ì/¾GQw‚ ¨:Å©+£AIb²Ãóh;ðûÀ~ƒL PQn¿û§íz`›­<+î‹A?Îõå?ìPöGÚ`vœ¾ë702—@øÚ 0>È_®ñùpú\Õç ˜=T«¿Ô ?˜‘^1¹:;ÙASÏßf†4­×Ä–î.
+$–˜kXef†ðî·ÊK+'·'ÕPj”s}Þž’¶_7Þ¨ÚLò"‘Ž::ÎÀz\ÇÚj4ÉÞn!W˜“2ØV«IvcL<Ñ3V¼-fÓÜYB¡7ÜX
+=É~…<µM­
+6Óýªpuõ ”VŸÔ¾°úXÓÈÙê#yõÉ„¦ºø¡›ªë:ßDY;²‡ÍgÑP}¢“UC|O<öåt¼¡"N¿ºÑYKÕo@Th jÏ lÕ”O*NU:”uÒÜà&”òÿ|SÀ¢AQÚ+íHçTWôåʼ‚¡baŽd8àü´Á¡¾Œ4.3×¾”ýÑî($jÆ©ª¥È›’–¦[RÒo1xŠ|õHG[‚0ˆ–°mØa¾R"1 ÷¾šóšW—|BjTÓš0au,›r•oËÀóL<á2 Ïá‘®hqÌ,ž®¬mÐ}Îß›ê&˜ô„'«†>y +†Š¦Q~µ„^m–ÅGG*t. GÆ3[Ø"Y /žNXÿm1z6)Üä·`ÂmhHõ¶#r«y31ˆ’ß·0.¼pÇÔ'I‡þŸ5ÅúR—±cm/žOVQ,­–<`Ãi‹’
+¸£«jR2Ø$žgCÈ!¿pæ×C&Ü
+endstream endobj 990 0 obj <</Contents 991 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 991 0 obj <</Filter/FlateDecode/Length 3312>>stream
+H‰´WkoÛÈý+ƒ~"‹Ãy’,Š
+èü}ì¡Õغ(Bëâkvû™qásái¦8~JÿßÛ¢'¿€/ÊÈÀ¨ÞŽ]r½™¶
+&¦½.XkÂÜô& ›Wl`¸‘ 7™…k5ÎÂý—3𹧂}õ|n<áo¸âïŸô0x-D`âÞ3ùç"·ÒÓÈ7ƒÈ5¶‚ÓÏE˜k‘ËhÁ^0ª¯þÀ–HBl£Þ–~!«cjˆ'f ƒ³%XÚkÅÔ®˜Ñ¬˜Ãérµ”ïüØûø»¢WT?Éžð3Ã:V¾öj|ÈË‚ù\z\ÕU?dŸà˜Þ;f)þZgŒz_ Ë™ †ê˜08†Bº
+§PV¦ôa$|é#¹½yõμª<?²é)zÀÑ»pÕƒYŬ‚‰ÍÑôq£¾Î„ßã«SsC¤fÜG¬CVgÅn—ã@}GX$^
+KH º{"
+ÔÕ°lñƆHÍÔЧ´8dCc`%úž2YãIF&¤xN3F}3òY3Z… ÝȘ áýáËØ{̘+Û³ú@$QÛ\ŒÛHÒbOÁØiÜ+u‚\E‚_¼
+&Ry÷ôß>;üŸù‰×ûð¨“@×±ÑsðÂÌ<µjf øœÒ¢É}®¼]}9z¹ 3j7ñ ú/Þ>«w8ù£U\ø’’ºøsª+æX+; …ô*oò]zÌ»Êñ–Òwµ®Up©u‚Á ¸ç ÜB½¬šYpo|{uŠl±\KùŠã V³rÍò%ÅÒÄÆ¢(„LsP k…þA(÷“Ciw Û–,ÃüJ ¯AïÎv'úñĉ™ Ù±}Úä~éžî!2%b<ìŒð0š |€&Ð×<” €j{(9–‡N¹¶ºWŽ§Y[=†x/HK©.Iwq­ÇâÒqõÊñoÌ(s0Ã9ð}ju´„+=ÛŸ¤[G†àW×:ﳺF¶‘2V7•o¼3ð]sÆÇ ´«@©Þ¡—@;*˜x0¼V^¬ÊC–XIB‚ɵEò z~Æ&:Èabìõ…³¦$Az›F7Ä÷BZïðýGHÍßO>½ô[Q–˜¡û£MŠhnE:0Àן²#.Iâp¯‘¨Û †„Æ”sÍX×€P i1…ù#„ô¶>×Þ´B^Õ «|yÙcÖà¯0ìäQÁÊ{Öûdƒ]¸©¼-äIà‰Dóï}u‚Y§4†ÏÎH{k³"C(üÜTgÂ>ì[ž÷ð£›ðî«À]óšY-ve
+¤þê/õ±"í
+½ñ ¯œ¶¼vjçwå´Þ•ÓÖéµS;¹+§íÜ®œÎ§Vp{N¨û±Õ²§£_¼×Ÿ8;@= @rMœò.#>‡ô%L$,óøÒDs¸¯&ÿ§‰fNd¿z<„6èÿt²íôãlúi^ç)±å˜IÒsÌ>C–Í–ÅÀÝòK|}È/?øÁ—{'@aÈß2¹žÐ,ÀM0öå;PÿÀòûñxÊÄ­â«`ÀsÒÇGbwù.ÅEswÌ~ Ï $í®(Χ;â6Låü¨ån‡ŽRÀÀ6
+ ’ÑŠj¹!lP|!wkr°C·=C»=AÚþ‘x0$»ïno|µ¸õ¸v;øüØòŞåÅ—Þ]9“šÑúU®(B/R½#Ùí›Æ^d´Äw×Éx—.»þ5®ZÃ`¿£Î4zåŠk§*r1{;“uco{{VV:úÜ: <Ì ö†kén9 Ö.°p!°e“ý½!2|ìæŽç¹hy-&~ýªÑØi?Iì'9î'=¦ÂŽ£Ûëiê}Oç8§ìwÓÝ&uH‡\Ç‘æé”]½# nqûòwŸ'^Áriì´¢n|Èé#=r<@ÈK¤œÕ µÂyGœâ\e×Ȥïö¦fäMŽ9nXJQaŽ)9ôó—‡Õnßz«ÜÂÕ*¥6È›?¨dé]wšti¸«‡ìô<*"–y"æ3n°¾Œ‡tFVxˆT*¢Em䋧IÄCÙ–¦¬ sVª?†—Ãax-Y“И½hD¡:QËqVE#sÉpËÖ¤ÇiÇ·â§}͆ãÔHtÈyØ2­UéXŽ¤Å8¾–‰­ÖtáØ Oˆš#JúÆ´™Ágh)¼PIJ'aD7«®µ!‰‚:M¢?(!^äB°‰†~eEg*tƒ;(°è>â„V#Zä˜ùŽ~J‹CÆîÊ3¡Óž¦<ø}ˆm¥;С .Œ­‘ìÄZj—Fá6éµóká â‘#+VÇ,¦›oÇ´HiG"ÅĤ¸Yý31YÙõ˜Œí+awŤ3ƇÊÄ-ÉqE¶õ9µÌ«Š‚Ȭ·šWNnÓ½?Êo1¦ „kÛ *ýæ åeyß9Ký(ÿ"Ä…Þ1Þ÷øzJ\$ ƒNç\|€|„Sæî­éÁbq§žkÖ!B²HU°Žð?Y¥¶†@G”iDߧ¾óÞw
+âCÜÝ RhûÄ¿gfÖIË×%u{gwv½ñp"¹÷4+©ç®ƒd+|®¿Ü2TÖÓá,Ü¡”qË“ñd+ÝvÓ»YÙ¸% Ç#peÀWŒŒã»„xjæ^»Œ1áV¯í7ǹ³ÌË*µC6ª£Nª#.$»ÿæE5‚Ü€¼8”=ˆIÛƒ­éÏdM‹&‚š|Ê66Ê[ÈJQr½q†%uú
+#h<¾MVÊ`O½é»Î^¼±GpE ÏËnf riÐÁ+¸ol¹ÒKçp™u¿WœšÝ`» VïD7X+’ÕÞüy´¶%Kß·ý [!ç#±Ü…Ö•Š_ßõ›ƒÓoôèY –äëˆðr$¼ÒÍË3ë•U앾‹^®•1#êU¥Í§‚ë4¹ç¤4|š»{dûp(+Ö2ô)A"DYª´à¯P¾JBE!ÑEçQ+ÓX*±L®v‰_»†¹Õij,âhÔ>€0g¡žË¿åfýÈΡ%OLÄëve—‹†)7/Z´Ðÿ\£Ã ©ﮘ°úaáYÒ(uzéŠô~sE=~Q>
+endstream endobj 992 0 obj <</Contents 993 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 993 0 obj <</Filter/FlateDecode/Length 5881>>stream
+H‰¼WmoÛÈþ+û‘,,†ûÂ%‰âØ \ ¹ÔÖù>$EAÛ”£žMú(ɹüûÎÌ.wW¢Vrý¡0 ¯4ä¼íÌóÌœÍYNÃ{÷ñ:g+önÎÿ3Îæ Vgy^z f…ÎtžKVÖ<“"×lþÄ–ÎÿCopóFo èŽ‰"Ó²f³ªÈ*.Ùüž%óëKzábÎþ`²V(/+°¢àuQe\3žƒr6´ì7Ö±³yè ê
+uÏF3?¶]4*­"7>~5vç×`"å")˜âø_²óC–òDe9û–¤\'"ñ$Çß9žŠô_ó Ãÿ— !2]9—åAoÑÑíÒÛ;Þ%3›£¿õs‘ÕG3"Ë=†Š=†rõ- l‰:Ïxþâ †ŒŽ]C¼.Ø l¼•²~Í%þ’ËÉ%‡uèïX~L«ä˼fˆ^ÑýIö‚ÿ[¼Ç!-’–}ÇR.H®o?gW ¦çÛ]µŒŠD„×_rVê<ˆ. žcqpŠƒÂ“0Jn~/58⸼x÷1-“¡ß<³ÏÍSšçR£ÑÑ…£L®Ë(ر™°à²¸V Û™Pà{õº–Ü6Dj&Á}ÁKhWmw·—Èx{\FÁ¡¸„™öq‰2SGã2··mˆÔìºjº‡64VpꬷÇC
+ÆSʬÐÞDŽHzìž|S‰I5…{Ê‘­¡+xò3•Uòܲ¦»gþî¶ÝÕ4œ²ÌÁQ! žFÝô›JôiÎÝ~¶i8@šŠÐ•dùšPõÄ £fàuûÔtëeÊUr·ŠFF:åTgQ¡ªÝÀîÛÕVúòÙ(î;ü BR* Dñ×`‰˜˜7j&!}–ëå]ó¸Ä›psA«©Š#þ¾½4‚C¥©êÒGöÛsY c8¾Oy•¬Vˇ®Wa,YµÎJ=¹«I²DpSÐVà~YæÀ¦fЄ²Ø*˜<ª-±*2yìeUgµ°B‘ƒFÊ‹"‹K0—< Ö~Š¥Y¥¢b%ù!ÏTUee\ùtD<†
+J¿®Ø¡y´]Ž69‡!ÆL„ œ Ý¸-Í“:5ºhl'¶Šª¬%r©V%9G¨’Òâ=ô(wÓ<)€!óé°§ © ù`m½â›®^©}ý`Ä0ä»v˜V|D:V|Ll+>"+>"+>&¶Û²18ÕÒêðŽKé©[‘tE®ñr 9­^ƒ¦Sš"-;F5ÉA¬];òiW¸pò’6ZúÔüI<ø´ybØvK4
+­È©Ðc2™QsÎfP÷P´ósP²ìýðNö8¼w{[æþOc'›7"Y”LdP÷$ÿe·“HÁ‘v"}Š°PÅ; Ò]U!CVYäKÂh…P„@Ác:ÓÉæX­ïèü“Öx\8 "›:HMmRÓµ=ÒWžÐ Mp†]g ³JÕÒLý”— ˜[Уý` Ìƨ(>Ò?Ú’ÊØBÝEò=á5¢ë°S‰„]^À•dÞÑܦ½*øt…SEm‡1^gÕ8EÌv±šJäQ,Ñ0$ð‘e ‰ó*Ä’˜ÔbITl°$&¶X[,‰Š –ÄÄKbâ,9ÚŒen V…kûÓÓ9ö"XŽó|¿z¯ŽôÞ{(‰8Ñ5ˆ0ÕÂWd³ q•sEÐv1ÿ v>ŽSØã2ùKØÿXªÁwÌkcý’:¹ÇižôXq:T­&–lÌ5g2S…éàOoisÔ'³¦®jÜ8K“ӋϘÍ_ñãSÊurq…Ç÷ó‹óT¡—J™ÃŽú–üÚ­hø|nïè¿k{:´÷'Ô¤¡á hܤ³*1;iÙ€Ëi¨_+…K5ÝÓ9bê,ââ‚
+ ­ŽHxpÉÕÔÿ|·ë©¦¦å á$Ã2˲oénüŠ—ô⢂ĖM>¸ÍOÁÓ
+Žšwz_ÂærkWFÒe꘬¯Ì|m æhøŸj«D4©±ˆÐó|Ó(²pÛúâÈ‚YÛÓq>_Ïɹzˆp2p”ÔQN.dU¹¥°RBO†¤“ZVŽŠ -ÇÄ–—cbKÌQ±aæ˜ØRsL<åfϹžò[ ž"¿IÈ–ÛÖNOOÏpÿ4€j7œ™Ô5‡n´™¨<¢^€OÊï[˜~;x<zÿR{Ý>7 ™ð¼ç"¡væk2šÅ‚öÞ»óå°C[T|íÝšh­‡µ *ïÔo»;m}p§-àbs7o\ÒN;¿ø˜Â¦eÚéºußnjß|rm¶NPé° ÂRlgÚ/€Væò7¸€] ÀÖçÓõÛ5¢‚Í u2f‰N‹ÔófŒ?§óÐŽÍÌ“` ëý¨¬‰«qSªÇ£Y<êÄ,=åWœàši·‚Î
+.Ò28$\"Z¦3Ûü $¨c^½Æ¢Ò ÚÚ.uÒ1$]ÛÜwßëë5ÑÙð:MˆÞCNe™£f…áê;ÎQ;ÚúžìëåŠjâ6šê¬—9‚eÌ”¼ÂÔpmñ] ‚Ý¥Ò0TTFÌ¡ÿC7§å
+k…§
+îd%-¦*¸„B†%\¤VoONN`t…$Æêñç8+*3^¹˜5‚²´íF 0$BÍÛIs€ùÛÞ!žåaFÌ>7O€ˆ>àtI*;|]÷õv»ÃÍÝ]ìú‘rÑÍÝ”­ƒ¡
+*îÄ ã‰·zsâ•ËÒó—4ñ^¯>Ä0‡ñ¸;¥Þ
+¨}ŒŒA-K ‚ ƒZ¢×@+pR€:5 …5¨aê@Ø€:Ö „ ¨á_u‘%E‰†–Ô§è…cãp.*µMXŸžEï?žUÎclöíîþ¹ÇN¨ /G¦½ q%Ô7? #ÉŸ·w‘»·Ø_Ø{|ï”+×%âM#-Eù^pmX®gl >Ñ/íÜ°\Ñûfο íߌeÉfÈ0mÑ*Áž“ôSÐÏlÔã¹õäB (K ¥/éå-[ª;zsµ›‚a+â? ÇŸÈ¢íy‡Ü¢x]é~,õ£¾½Î «s[
+ê&^_ëµÙúõÀæ†?DçW~
+ |…ï¨Qó#PHìî 0,–ˆÌË;@6àൠ¦†F=3›'1/1œTäÙð÷,VP´n-¨Þz¨^p`,­ ëî}‫¹×;ÕåWæÍVaÒ‰®gu8æOß¹o£KƒåÍn{˜žÏøáç_..éÁ?pöŒžžû§n¯í>æùdíó8C³²f2$3.^€ÓW¼PÙ¿cÌAîù‹ŒV
+k·šóÁ0s>Öœ…GœŸPCw‘•–v`WY>ÿ%í/+`d„ÄJú+M2‰¯ø+jÍKROL¨ð†/ÁUF/ùºXý84í¦AìoìIþsfE™MW4Û–K\Z¯xŠèxˆqrè¡æ ëA•°œ£‘ç?v¾oèü?Ä8Ñ‚¦áóu{h §ÎȾ"رc× Î{«Š|^ä.Ûm×?Â6ˆíd
+—bI­¾T€^‚‘ãoÇ>ö5•¦óvÐò>L Úæ¾›"LST|`çxÙ2Ãë A=,UÖ‚"ŠÆX:{ýŽ”ÛÑÖ÷äS.Wð‡Z$¿Æ&,âTý*›°I•
+³)Í<$ú¿ÉÀ‚‚†L¨Ó|Ôpi>j°ˆj*ÍG ”æ£Sï)+Ûbšõeš,±,+
+3÷|D¦­Öxyz½ºˆåp¤ÔÙô{éÛâKË&áI›4Ûð;žKµýù™«2 ¸‰Kmמ›Rwßø+àcKpÌ1×|±¿ë ô±DcDFx ¨ÒžñKLž¸Z<<ãÁg
+endstream endobj 994 0 obj <</Contents 995 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 995 0 obj <</Filter/FlateDecode/Length 5511>>stream
+H‰œWmoÛ8þ+ü(b­ø¢7Ü¢@ÒäŠÐn×õ¦8´‡ƒ’È®o¹•í´ý÷7/IÉRš=Ph‘š‡ÏóÌÅJ¤ô×mÄ/¯Þ¥b³¿¬äR!Åj-ª$M3E *‘åIž¦Z•L´Js±z‘ˆWÿ¥/$‘Â8u'T–事2KJ©Åê^DW«w×ôÁÕJ|º2 /JðbàsU&22ã¢kÄ{ÑŠ‹U ÚVm/z7߆!²I£J9Æìwõ\ÄRE™0ÿkqÃ/’XF&IÅÇ(–y¤â…ŒR|/q”Åÿ^ýþBΔJòÒ…¬ŸŒ&¾E-lBØ~Ú—*©~š]L8Ê&¥æcøRUšÈ ýÙÿáˆmŒɪ ÷eã½Õs9ó‡\œrX‡þŒõ«¸ŒÞ¾Åc†Ý:?-ñƒçØÅY´ÇÁv׊Xê’kúÓOŦiÝç¦Æ·ûFP‘(ü6NõÜ8‹4)rŒ3W°ç>Îe}hÄu»Ž¥‰vØ9<ÄŽZ|òK¦ åF2•è¤„LÂ;t‚C¡u™:í\'ÊôŽêÏñ"èA~¾aq7÷â
+÷Á3‚~öð|´?κ’F¡«Õßðb0sé¾ok°ÛÅ"0䇦½wfí±SÜ{Š‹Ä‡÷`Y\SÌW`;}ád)^âª!/%„eJ~@õ¯G“à«L›,Ñ?ûXë¤4vRç0æY™eÉü¬‚ò×OLç2©Ôì´Ö
+ÇsÓF˧"3e™óÆûMÏLO\Ãê˜ÜÝS"é¯Ä‹Wßc¥é®5í=Ú)–bΕx… k›®å ºÅŸPÿŒ]SQHsÁ&“ŽuW·PQ
+wtè79¥a$ú¾Ã“¦Î§—¦sø—å–{JàºRg&-£ÎÍ2¡ÎÌZ>™µt:7Ël:3kÉtfv‚KÇ <¤Õ„ÔæFbƒáhõ„Wábg›Î 5RaµÖ|Ét®
+hIh-°ÛëI)=œ;Á"=%ÛΓïÑ3î»æ \_BÏoj‚ W]½^o‘Xî.·Ý6w¢Ê]Kò‚@r ô ]¨YîÈBc|ý­®^ÅJFWKOM|sT©Æp9ÏèÂ@öûä+ÄOÅ-E}º4ý{ ®ræ9$/)¶¸÷¸˜
+­0Ô¯rÁ/hO´BëïEÛÛO=üÉÓ–¬Œœ€Xü~@FALµª\þ>aQéù°óQÕZ<e Fb—
+«=¡\%
+$
+¹mà«%yJg6}ª ùßNhW y0rk]Ìf©(cÒŸkc®ZFmnDÿwŒc?0' `kw{=¥ °m6»
+å ¤ ˜ò4þGü•àg} P%X‰Iò1ç@¹úÈ´Ò&ÉJÅÊù6(íªP¥A>€Жuëõ_/ÐêÃX½D¶xZy8­ž…¦g`Á2—}¤½ríNì¶B.J€Û±†›òØŸÒÞÆ9”…€_ºÝ#}pïÀ¼Û= ôs:t¤m󞾤œÓ/ßœ9í\RÃÊ·gdU¢º]¾yI¢šîcuªŸIÎJ·ñ0aHößð@Ô/^E½ßûÂÞ´¢n„fµËgqZš.Y¶¡±
+YžH|éhNóÐp½@ë[Ú~)´ÖÓµw¹]ßÀÞj $Ì Œv$…hݦÙu—¼…ä×øE™[thnzKû×Á6sO†$¦¢‹å‰ÜÀÎ]6Ó#$ù
+…÷ñ!’â°¿"]¶—ÝíÂk0=bìI!&sÑ6z<V›#éwtSÓçG$êÿQ^%ÍmãXø¯ð(UÉ,·ê)UY±;ãC2)Ùí>ÄʦlMbÒEÉžøß÷[°qâ¹HÖ‡‡o!Š?àݬœ<¹# Ñê¤9R©´ÖrÂý ÈÝ×)Ö)êM}‚kB¤@ß{BÕ3)©¥‰˜)i'zÄÜ2×MôTwõ :ïóDÕ<8viM«#ö}´SnßGÌ3—xê_hÿ˜XHjAIKXNšŽ¥Í+½/j¯q8ÅûòÆ)A!ÇiÚ0åøö
+ÈHƒŸ8Ýñ ZôßÏè…ó
+0Éùšd»Âl,¿á±ª®zÆ™ø9ÉkÖŠ‚T™#·žùdq£¬¸¡tÆ#ÌQ©²P‘/è¢ /÷4OG›Á2Gg‹‡¿e‚Çß?±£y •‹šý[å1í|pîÒeboªt¬~`õÞ™Ó“ô¡JÍq R\Ê”$n„ûWÍoµeíJ-ö$½cýåÈZêGQêÇNP9!êOò<–Ë
+nãÌí\Ž»'œ²D m¨¿qr` óH»m*ýÝÒ–ò–ʦRwåÏŽ8dûj†cŽyC-‰Âèõ…˜„º5þ[)ð!&ðájÈIž|†™@Hòˆô¦b¥zTˆ.…5† aC¡°æƒ@ØB <`„‘CË’8+0¥Ës›³´6[[
+2š
+@MþΊ±Ù¤Y†‹\¿¾¼´Ý- ¯6t€çjv,Ë‹ ÿ°”¥ãò‚J{ÁT{Á ÊYT¶0±›Š ˆã›«f×vÏ°&é¬fÒ¦1¼Î¡1L‡’4G?(™ÿ3¢FìÕç™íÓs7
+óÒR¡˜Êöæ
+¡aÀfƒ‚* e{Çœ0vízži¥EMýØz_õà_c;
+Á$ü|ƒ«ôµ‚ݬ”¶Ä¾ áWäasoQ!ËÚ1Ø`Æûc”€Õª#iO2yÍœLÔ@,Æ.3(%(i­ü@ uZœT§2“ ÒIþ…_æ"Óõüæòb.ûêCM Õ¿v„/5ÛA {–0 Ïðùz7
+VŒîgiÿø`ûG§`£êppþØDUóîÏŸØÄæöÖlŽ´‡v̶­½;rz|è,¸ÌÔ8#mSûp&ôKk° ¸æ¸<`û‰zÎÈÇ“ž§JŽC6 dÖl}«ÈÁ^±ñLõeüý}* Ÿ¼qê<VybÄFtE›¿„¹cWòK-ŠTäc®Nág1`ÙÙÀ Ȭ‚ 2²(r¤þ¿È¥%‡¢š“ƒa&åPX³r(¬i9f^…51‡ÂÌœL;-ÃÉ"/`BÝ•³…@ ÀjÉ%Ùõ[W FBž&,òÝÙÇ‹Þ`z·²›™èŽ qK$!GjGiGàÞ¦ÐϦB
+¯à,¿
+…br{õ纹ü< ¼$´#pïÞÍ¿þ ú‚+° ܘùa”ª1à-q¹Eã€øn>—éÄâþ™
+_Ò_Up`,F¡2uTáñü± Ï¡±™ŒíPpÊß±ÆîÀÐ$IÐéhYôO«‘=0VÁÌJ…Ž«q?4¶
+endstream endobj 996 0 obj <</Contents 997 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1514 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 997 0 obj <</Filter/FlateDecode/Length 4247>>stream
+H‰´WioÜÈý+ý‘ 4\öÁ H–¢8À:^iVþ`ÁHâȳ–8Ú9äøߧŽ¾8$%Û@ `†£bWUWW½÷út.rúÛÜ‹_.®rq¿¿Ìår!Å|)š,Ï E/4¢(³2ϵ¨™i•—bþ(‘Îÿ ’Wä°M·BY©1«‹¬–ZÌïDr>¿zK ÎçâO¡“óª†(–«:“¥98›V|8ÇÙ oeÐ÷Ì…ùÚO‘]ÚUÎ9~ä¸ó+‘J•ÂHüÖâšÿ‘¥21Y.>%©,•Îd’ãÿ%>é¿çÿÄ„ƒ” ¥²²ö)ë³ÅDû¤ÕÙ%3[ö_Äþ¥ÊšW+¢«‘@ÅH Ü|J£XªÉ3•¿ø‰@ìã0lšxOÐ6Q”2«Ô«‡¬Ã!ƒCŽû0œ±¾H«äý{<fؽ¡óÓâ¿[<ÇMZ$[|X­;‘J@q;ý\\‚™Þ{hñ‰+©1U—?œ 1ßW(J_6ƒôÙã ÿm+$¦¥BtëY±gòg¨ýñ©©Ñs Y™Š<ã£ÐºÎ |©3e¼sØ™JVé¬Lî»Å~ÓG{¥(’%˜s6o¶;úqõüø¹íð%ÿKP†œNiÓ‘˜L.f2“R<ƒ˜Wé¬IöOOë /„X§iÉQø?âr‘JcÄn çväýš†ý.ø}þÜ€»*¹Ù[èNðnÖtèbÿô€oÐkš¿d¸3Wä"Ç «ªæEBHSóœíòÀh
+hWpŠdD¸´ÀVÞE^eá ;ÿ ¸yÛ-×›G¿Féè½Ãc
+·oå<óÓ«nú«ûàGjþN“_2Õ8guÂÌßáÓî3|‚ú‹ORG'YßPeVhÏD—'§°9Ý“ Ü·üš+
+¾ûs…¤1”“I/Ÿ¿ßP‰2°ßð"[/ƒhVf¼Â•ºeÔ{w#ÎXïÜ’Ÿ %ƒ-=S\“k–øû
+o;^Sk˜ä¯*¯Y§›o|†êC'ƒÂ€è[ü·{IÔ•Æ ‘f\ûa"üþ¢û~9Ú†þÊnß©òyB _j5©
+ ²^Mèƒ £ÕSVÖV«&¬VLYYLX­>˜°Néëb¨*¤[à]…ð¼{||ŒŽ\x&5:ì\O0²¥aýèî¤TUûZ|Ói¥ö™JÏ*Ø°CV¹ÙFQeŸQ®Ú'eB•À‚Ê 8c¾Y,—+$‹Û³Õf”/ÝžÚÛëîƒÐ¸Çá¦sPlMC6É&…*ád]•ß¾Cgóó‹®ç€ƒÛik?%’G‡?å}ÁaøÌÌýð[*¢Í»qÌ1ÜQ–á‚ìSšªb$8ŽrÉüˆ¤ò¼¶ˆùèˆW]„ó˜à{$-XwzZ¦ö–Ã÷›3zÞ´]d]S×AõÄ$äv³u—ÊÆ=òÕ¬Iøš´¦SGÑÝ›:‚±Þ%*" l»Ñ½4žëp/(&KÎв4´?4ž5¿PQjU[þfO7{˜4×
+tÆß,;«ðø%Þ¶é`8õx¹û¸ïXzв5Ä\†ºo¶œ‹«©…Ž»áþjç)77¥#‹êf|ÝHŠý1½Ö¡ùK–?L@1H%Ρ“º¶x]D¡+ì"D‹™ ¦Ë¢„̼~©8²%°©Õh†yvfƒ»ŒW3ÁM®.UÃýÍÄy[þ›Z¬µÆ«¦3Ã¥¯·kËS« 87frÛ–?'W×@Fñb”óá´˜^'kÄ[ö5ÑÕ0çvjÊ¢äv¢^)³ÔÀé×u|»€vúSȲAÚ0ªÚ€ñ Z+a>ˆÎÊóH/¾XÞõ:˜b@{Jèª"N×ûîΆþ ‚+UaÇ¹Ø˜È ¡{ahi~FDÎax²*ò._ÛóvÉÇA”ÉùŸò>€Š¥ µ¨zQdO¼vzO¥¦VÔ ©–ƒ~èMYg*nóÚ\½²ÖæLÿ—4d~¾°Ç'ÌÖó„u(u‰r(K‹F6YY»‚#éŸ<ìðحžQR´× ¼xüùªémÜ¢EÈI>Ø°¨ïcÒ],ö°E›{w9`Ë$o7ÿ¾ïÍPmKY4衇8’H9Ã7oÞìÉ»'Û˜8ac€~¦ªjˆolê6Ò¶ü\ih£ðp:ÍéðÈ•UwRk6û^¤F+ Ù {òo³6ZÆájÔfâX>:&M #ãÔÏñZ¨;ùh=Ù=mÅ—N»
+©¹Ñ H™ÑÿdR1¸:2>¤D¾3‰7}õ@'­L7éŒL+1Ø2g¢ÜCX9 ìw,
+Ès¦Ö¿6èm‚I躼ˆRnºåâ€ht*) ñû"*\´
+U|×aàU±Ú‰(Vuž €5õ$h ,3¯¦MŽ³&î"N™
+ªoñ€é™Õ&‘͆aB¢à²JÌ­žý¸1T~â׸Ë+»
+\ê¨.ð‡¿ K\ S!2dUŒHÈR[•·UÛoàh)¾¤ô%¡/`4y9òaa ö‹R ±~梧àoËí ì­lý 7bÅ~±,8gBUF&¨΢]”€JŽ°åر³ÁÓ-V²ÈñØ?
+endstream endobj 998 0 obj <</Contents 999 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 999 0 obj <</Filter/FlateDecode/Length 2732>>stream
+H‰ì—{oÛ8À¿
+ÿ¤µÊ—(
+8h¶Aк×MŒ[šÃÁMœ¬7‰õc»ûíofHI”%ÆŽ“ÜîAQ[ΈÃyq~œ£1ôoyÍÞžœ v½boÇò¿‚I6¾bU.D¡è…Š6·BhVV2×JX6¾cœeãŸi…ô+¬@ÑSEnuÅF®ÈÔl|Éøñøì#-8³_˜®LÊK»X®\.-“”³å”ýÈæìh[ƒº•AÝ£z›o]½Ê`£ÞÆ/~ßñl‘IÅ f$~kö/ÿ‡<“Üä‚óLZ®²‘äÿ.ñ©Èþ3þü˜\(•[ט¬´ íVoYÇG! ^ë—*¯vFD— sžE{©Jä2
+qÀF^ÇöFðûeÓîRVû$¹h“\ö’×a›c}’9þù3¦¼7”?Í~Åï)æq™|…³ÅœeRs®©³/Ø)ˆé½Ûéÿºš2*§¿h|iE®À[€K»\‘ä
+y¢{ž>ôÄ‚-'ßžd%_.6÷ìûÉÝ4¶@ê"W; è%ŒÖ‹­-9‹Ò%­ÝÍLwûÊîF¤¦çÛgLÃt5_tÜRÂà‡ûå<ä—Ò&Šœ*s³Ó-Ÿ»î>¨¥¿ÓÉüzïe%ãÃÝ!ºCM¸ÝB`+Ý•¦öT©^-z…ÅÈÖp,$ÿ=ÓŽßOÙd~ÉÚÔu7ñºÝ@›À îBA9Õº—pà ¿¢Oÿ<¿ÀÏiVñfà„Õq4M¹«¶g„WÓsðlz7™¯g™4üb•ôŒtêÊŸì®c—ÓÕúìÞ+^Ìñ3rÉh5Ѹ$÷é$ª·½WÓsé»ål=»˜ÜÎ0s
+24S<Ї—¦WðPišJ×ÛRìîøý¢ñjzνÏdÅW«Ùõ|zÙA³î8K gý°_û%lV®W½„¨¨LKX ,°N‚bèKôv_m Me1–­¸0E®íŽÅðU© T"/­—Ê¢@0'¤
+ð¨;M(Lˆµ)“2£LîÒf­Ï$ÅµÇ 1Ô+5Ü3ÔžŒUÃèªÛ@}˜Q8¤ÊEUXÖUÈNé×ÑŽ¶¨ëMÀ¬ä&ZÀ¯Þä~B‘>ï|c„µï—pµ©8‰n7ôgúëªéœ¸½Šj]àžRæþˆ×>¼Ž7wwí_´¹ªÐÂp[oĪ;)É‹2wV‘[þÕ/œ1Ø^J‹àìôŠ¾Œ¨ß †›S¾ý
+MHë
+M‰C…&ÄT¡ Y]¡)q¨Ð„¸®Ð„8”†jËÏ´·]Õ¿í6„‘Uîš.øî=Þb¡
+¬è/¿áãìnsçÓ0t le
+wD—”4À%)ölI‰-)Y KRìÁ’®¤ÄXQmC6É™¬PŒ¦Ï½;þ ï|PmÐQ.¡€8™¿jA±Î‘=ñ½H·=_õG²O¨jBW!ÒJJp¤;òíGÒ¥ŠÙ£ÿ2S[‡¬/žênUO™Þú¸é t*€">¿Å
+cyTöñ®Óã(\÷££pmÖ3P¸¶õu8|ÿ?Ãá
+€ñÒ-
+5wq
+£4æžì#“ü¦U¢ê;µpíÚ¿Ýã\‰â<ÃzèïÛGdUíF¤öSÈHž ÄÖü„%dp8$4YÔ¡ßï=%½Ž®Ï7ºªÄèšÎßœºÁ¹v+w/>àê¼Dl$ø.
+ãêóÃÚ¾ «±þŒùYÝíB{ÿ¹¶¶ûæÚÚægÇxmã§Òzé‘·vè°‘·k;ÔŽ¬AQuà|™¡óÿ–)X+ ¥ÆQ®â7ÑA×õ!“Ò5Ž=óÈ»UMÝ 4Ax”ºÇÞ†¢O¾ít£x˾ÑÏ£î(ê¢ë7ðpÿoãlÇo0$95ǹ
+Wy§áj·Ý'¹ª€'¥MrU
+GØ ìȳ±6×*Zí±›\- ›‹v9üeíê@åär”CÏ©å¥èn ^rÛ.·7k—#Ó“kAHª·†_qÐ<ñÓQSEìضßáB^îT.Ul¸Šw÷…äò!y»:Ü&L`—¯¬ÊbQ`eÁ#Úk±¶*¼‹ùÒâÄh(§ÿ 0
+endstream endobj 1000 0 obj <</Contents 1001 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1001 0 obj <</Filter/FlateDecode/Length 1308>>stream
+H‰œWÛnÛFý•y$’Ù ——G1‚ô¡pmÂyhŠ‚–V
+ ]l’Îåï{fV”(Y¶á"Iíì9³ëËš”üë–ôáÓ­¢eOjý"Mõ‚ªT)gdAE.Os¥,•N­Q9ÕkŠ(®ÿ ,,xjFÆ¥¹­()]ZjKõœ¢«úö³\ÕôH¶ÊR€%¼d0W&- ^
+´¸=I͹Iò™©.FæŸ7¶Ö¦‡I]•ÏåvÞðÌäÁr';i*¨¤ÊѤE%|˜Ž‡G^qóæÓez{Mo8/pi÷@ÅxscÅ¡)óDóÙ¢py%%8«èÊð<òäûd¿aY‚y×l>C£B?ð€çºƒ6\ô$´„²ÝNs…ûÌ„®øB®YÅWª]ˆ5Ä©£oâ‚žøÝ=l{œžž¶ !ÐÞEv¸A!ƒñ ËDQyjm6v†›8‘óÓFqR"^<ä'åלp]àÿ%¯FÚx6<ÑÉs-+ÃúŽîö³« Ú¹äu9¦µl”ûŠ12ú|EmÏ¥„\|Ë€<JV„]Bxд§!NªHÆIr¹`É„8Ñj겎 j&+}' Þ—mœdX–ü`3†igò›?)ø£– ÙålÅ_OìœM§m/|I8΂w»–7oÅ™<|çÁt_\sÊ(ĸbØ0+6Pǽ—L—KçÁ>Ì°ŸÿFÛ“:p¬Í0Æ~îãSf¬µ‘‹™±©ÃŸ»Z{NÚ"³gÉ–‹·Á'áK—ˆ<”¢
+'¿ËÊÏ,ÛKþ¢€¹Gc˜°|ÉCì«ã*6ShÎ2(7ºÇq¤>Î@²9¦Ò€ÇŽøŸ
+endstream endobj 1002 0 obj <</Contents 1003 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1003 0 obj <</Filter/FlateDecode/Length 3545>>stream
+H‰äWmÛ¸þ+üH±Â7½ÅÙd»H\S¯ïEr(œµvO·»òžl'é¿ïÌ¢(Ë´¤)
+A$zGΟgæbÁýëîØó«kÁî6ìùBþS0É·¬J…È}P±,Os!4+*™j%r¶xdœ%‹ßi‡´;ì@Ñ SYšëŠÍÊ,-¥f‹ã—‹ë×´árÁþ`º2)(/J8ÅÀvU¦2gR€rÖÕìÖ²‹Eh êVuÏúc>M´*JXßÙs×pD"Ϙ‘øÖìgû‡4‘ܤ‚½ç‰Ì¹Jf’ ü»ÄU–üºø+üw09S*ÍKo²>j-: íÞ³ŽÏ\@¬þ,Ô/UZŒˆ.”8H˜÷Ip–ªD*ƒðg_qÕ±*ô Êf8¥¨ÎIr6$¹˜$9¬Ã!Çú*)ùÛ·˜fðÞPþ4ûˆïóØ%ßà¢Y·,‘šCpMŸ}Áæ ¦ïê%þuS3*¦¿h|‘‹T/y.rE’+䉞xBúГlñž¼¾|~•¼[ïžØËÇ:´@ê,UÞ‚“LFûÅÞ‘œé’¹Ýþ¦—ç]ÊñA¤fâÛ[LC½©Û›‘[J<àëý²
+Žù¥´ "§ŠÔœtËæn|j™Äo¾lïêð¬\Ò5þzwHÁQw„‡#Bé©4 ·JMjÑ*<PŒl ×Bò%ºäO5[¶+6¤n|ˆÕ]€ êΔS¯»ƒ gø-=íº½ÁgTÜŸ<‘ë0š¦8ÇÕ|b„U3qðº~\¶Û&‘†ßl¢ž‘N}@§²7{ìتÞÜ`¡7OVñºÅgà’Ñk»$ÏA59Þª™¸ô²k¶ÍÍò¡ÁÌ)È\pÓLaðB}iZÇJÓTšx½wî;/«fâÜ‹D–|³iîÚ:^ˆ±xJUNÒ5‰—
+’e*ØÂ
+€ê¼” `ƒàÊížÐTyšå83Yªó›áU)'T"-r+•Y†¼‘*`/}D\jbªˆX›"*3ʤeÜ,S2™¨¸÷8"†nÀ€€Ú
+…pMšÔ‡…;¤|Fç€&ÿcG¯ >0µ,«d¦9›Ceüâ$ëË3v°Pßžß–fô|Äs Ö¶âØÏK0àaG¿6äðX\7gI™–ðGìаsöm¶¶橪Ð2×X{±êÅ¥”WEZæŠÜ±Ÿ¾ãŒÁñ.KàVM
+^ƨe'†&Ý—ò´Z#Ò¾ZcbW­1UkDÖWkLìª5"î«5"v%¡LÑÓŽÀ3€¬ÒÒ£Ôó$ç5 tš›m½Â· 5é)= 6ƒTƒŸ‹W°ù ”lùŒËk÷q÷È.SðÇ–¡þå¶Ô’²L†$´aN-ÔÈßök¨¿Q7þ–}Ú««w\²íšýÙ«ýÐͼý¶á£s"}ZvË-~W/ºåí-®ÿ¹¡SèË›WÐÚ6ÔÞ`½mÖ¤šðÍ8~MïÆ«B%8ƒqÇ%ÔM‰!‡ØCÒJù_ÿ˜HÁ—W‰’ürŽ?‚eM§€W6àï¹L!¬‚̟ۧÑòê‚rP
+JLÁå16¤¿
+–ì¢A²ÇbeˆPð*¼GÆ#´È§NÓŽm‡››°ÞáoËÈð·køÝí—‡'›0Œ½“«õ'4¹¥QÛû>„ðÃ…3Ð6 ²™÷zC]m¸km¸éѺ¥°Ù|º>K03i)
+§n÷³¢ýeûoSÑ'þx>Æ~~Sb¬QU_*vîÝËŒµÇ>;ð·àvÎFj•m Ö˜¬Žížð úŒ:éû4é#P¤"p €8à´Å„x3Ö·¥y)嶆BÌ¿°£¡DN
+È-*vì—[z‹Ê‘ߢBGpq¹e¸¨ÜQ\Tã81ixz¢Ëe »Ï$:U 3g5ÔAnËà*)ùà­E"SXž ‘VF È­äÅåÿ 7¦ñïBu9´Ê| Õ‰/¥:ðÿ<†«ªÓ gƒù-ÄF¾ŸõuŒÏìf3Ð+[Öä–5:ÜXú©‚ë‘yú2Þ5È¢ì1µ±Ô*A*þ)Q@<8J
+'-Gò˜£Žížð úŒúŠûi¤EvȆð2XŽ!N—×A[Ÿà=*-ò ¾wõïˆEh©»‘S¨É€œ  oåãáÏdÔG©VÃ+Žœ¤ H È6*vt—[ÂÊ‘r£BGºq¹¥Ý¨ÜoT¡Þƒ¬«
+x@ .îƒË§û eùoöË&·mˆÂWéRAÙuv›¥“ ˆÑE‚^¿oø#’GŠlA.¢Äy‘3$çãÓzEeº}-ÕKÍoÐl<?áyâÝå8øŒýLTÙ/¿ó¦~`§6"¡ŸaÄè·§+Pªf¨Ä'«g£â:zp®¢±U4¨"Â>ðÇ?g,Šgª7N±±h}m¼YnB_Þd7¡/  û¿"}tì›Öx< ÄoMÈ'©|¢ì¸'ÉŒ=IóÔe=IöÌ“ä9òŠÌ£ƒi(2ïÇÇåòë·kõë>Sïf3Fwó™:B×”ÐÇg[£©[þä=¿è7õf»2º Énë›üfÊ?5Gw¦‡ø
+÷ëÖÄûµû>úÉ#µÇÇš/ñóqÿmC§_ö¡vŠþÌ”[úÔ-`Ûà–l.ÿÝë.î•÷:_ÉÂ*~Ý]îdïnw»¦ïÔÌÏ!“0\›ätÔÖÈ Wn|ž“ ÉEÙ£\ÖËEa.Šžæ²îp.êžç¢¾ 芀
+³ô-lŽ¬ì2ÐW¬l»jeód7\ßäŠpoÕ_ò¼…\ItsX'z>ï›ÐžÏywƇ9^Ãxç¶$2È&/$óI“ïУø/ÏžCFîS͉ÕŸšØð@iÇ®o¨Þ’ÃÞ…“¦”szE>HÚ>Á©ê¥æ7hŒ ŸŸð<ñ¦uð}Æ1!ªì—ßù¬ ’Ý2[p,ØlFKÞîÑÂý­XB hG¾ûö>ösQµ¿“P‡!Teí‹xQ õHbYűòjßæÃz\I±Põ«;&Æ2Ê„@HüŸ0(>¤Ur”“ÊDÇ$›i®ž€R¬¡FQ2_JÇõtb j ý+À
+endstream endobj 1004 0 obj <</Contents 1005 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1005 0 obj <</Filter/FlateDecode/Length 4264>>stream
+H‰¬WYoÛÊþ+óH3+—Ç,†á¢×Hc!}¸)
+Z¢µ²äh¹­ÿ}¿s†;5’c_¡è9<ûö͇¹üo÷]¼»¾“âû^¼›«I¡ÄüA‰”Nó…pi’JiDV¨Äh™Šù£ˆD<ÿ7s(Ï!ÁA¤…Ð.IM!f¹KreÄ|)¢«ùÝ 3\ÍÅOa
+›@x–C‹»Î•
+%!\ì*ñ±æ}kH¶¶${Ö¨ùïÐD/²¶QKoãï^ïü*b¥#'¬¢_#¾úƒ$V‘M¤øÅ*t<S‘¤sEo.þçü¯dðßa²Ó:IóÖdsÖZ2t@æYÍê€xù®/_餸“PäN(’ö[ÜÓ¥ ™¨^øÝ+ycE8èû„²é´dÅK’ìº$g“$÷ë°Ë±¹ŽóèógJ3¼·œ?#þ ßŠò¸‹]´§—Õv#be"×6Ù—â Èüݺ*ét_ .ÝO&Éø,•‰†/©ƒK—\Qì
+{b&ž°<ò$…-­'7Wï®ã,ÚmOâ¶|¬ú(ãÝZpÑ€I˜_ŽTF¢—.•ZÈnUX˜ž¿¬)‡ŠXÌÄ·Ï”†j_m·´´¤àõ~yçüÒÆö"§³Ä^tËçn¨‡¤Lâ÷¥Ü|¯úºRÅmüzwXÀYwxw*$ÒKiêºJOjÑ <QŒâ€¶PÑslòè©åf)ºÔ •xÙù‰1A! ÙN£œÙ;4œøéß7 zVqµ:°'RÓ¦Í^âj:1‹™8xW=–›Ã*V6Z샞±LsB¦ö=tlYíTè«'/x»¡gÏ%k ÕDë’zÉ$Ñõ^ÌÄ¥»Õaµ(×+ÊœFæzf3K ýúÒôΕ¦- ïõƹ—,±ùòb&νUí÷«ï›*\ˆ¡xA¤Î'éšÄK÷’e °ˆ £:Íclð®<Œˆ¶H—öÈκĤ˜ñS蚨e’¥žªœ£½ jl/s†œÞT²±YfµMò°Y6Çd²Arãq€ 4`A™
+.‰óæQIЫ0,)OdÈÉÛz¤ê“Ñj#îâYŸž¶;V-©}¼ÓÖ€3€-Äü×4êyÏ»¸aí³µvÙŽÕXÏz},wXrñ¬ˆ*p} V¨?>ñBzª©ãÔ ý1t–
+§p H/Íî*׶¸™ÌC–Gñ
+"uW£ÇJ‰/Z±Sm^ÖÄÍÏ;¿ÚW›ÅÀCm iy£‡^ÊYsI3 Ñ£_„‘\@ËkcpÔÓh$£‡7z楜óÌðF‰LÀy)q]Ûê©>«|ñŽ‹Tø¶õ\p*Qn–¢ËãP‰—²–ð¨ C¢Q€2³Ñ?ýûfAÏ*.¢^KZ•ÌlüŹä¬é¼uc¼¸‰·wÕ#nˆ+º³-öbYÑdÚ/¨€WOþxÒ}«^”ê^€Ô¡,û}æLÚá²ñ&lˆ´xžW¹$—5QK*[[,T¦¥»`ˆ\¯Ø ÙßyCäÚæ
+ÐÒ¨éí²Iˆ-¸û|±¼Ý|¿qL5Ô9Ó $³.º¹c\ÑJ¿¾úÒaZÝrÊ…i@5±~‹d‚~*(î[Lpzœ
+i12ƒ©°9–YæÈ,{Šª°Nø´Ì”©+htÒ!ÉôYëD†¸µ£ÒiÉöØ؆˜=² i®‹ È @*{>KaÏ™÷ êYlÂ’6³´{ÏÀâñÀàbkí¡
+-yóÌ”uEôµÚ
+ãv‰@wË5^ÄûÅâHB Ñâ™[þ£‡¨
+è³ «š:ž;¤èobA‡µí­É9ý
+°ÏÀj‹VÎV7Šß
+«ûŠÐL´zÞ«½¬‰›!Xm
+oóÐK9ç¡ÎpÙmÕ\FÕS$@ŽUL±4uý[ÝñRιcpS•==œÎë]7*Î? N;åãgÐ6ÿU8­y!Ôî¾M“´q._ƒ¦‹äKw¦‹©0m±Š nˆ0}–ךÁ]ƒZÓnïiÚò]1D®×zˆlž3dosˆ:Ó6ÿ?óeÓÛ¸ „á¿"ä$±!RÔ‡{X A[ ©ÛK݃7q²Fkk;móïûÎðK²HåÃ^ [Òh8q8ïC·ÈÃfkÙ­h(Y»Ä¿A±®)-êrÐ2ð1³”ER4Ð-’’D²N[*ÅŒ ´$È–¦61=Uͺ”=C°ÆáWðžÌ]"î÷çtÑeÂÊí–I>
+¸"­ß‘ôÑT›i.éŽrÝ•¸¢Ý”.0êÙß”ÀY²ÞñP·«íšŸ¬n'î¶-ý?â+¥àUæ$”l
+ƒ"~hU›±YqµžßÜ°Â?ñ Ô¾I—úÉs¢ÿ[¶Üja?3ZŸ?Ùš|6BîVÉ÷NãÏ¿CXžò!Qå¿tÆZ
+2~ÐÏ
+endstream endobj 1006 0 obj <</Contents 1007 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1007 0 obj <</Filter/FlateDecode/Length 3747>>stream
+H‰¬WÛrÛHý•~Ú¢¦"†}áíqâxSÞÊ:YK3ûLM1åhW¢4¬ÿ~Ð$›”Ôrì¨R±H¢@hàœ7Sñ¿Ý½xýn‰û½x=•FBŠéBäaÅŠä"NÂ$Š´Hsj%bºMÿÃ;¤Ýa‰fBÅa¢s1Îâ0“ZLç"¸žNnxÃõTü%tnB(O3X1Ø®²P&BFP.v¥ø·¨Ä›ißÒ­ é·f¾]´*Ud}üdíN'01’*ˆ…‘ô«ÅïöC8’ #ñ9É$P£± "ú.é)ý1ý9ü/¸+&Yç²>ë-9: ï>ð.7±úã¾~©ÂüɈèô„¡ø„¡È|õl©<
+e/üñ Y‡†TdúgBÙ8+iþ#IŽ]’Ó£$÷ëÐåX¿eÁÇ”fœÞpþ´øF¿%åq7Šƒ==,7•I ¸¦Í~$î æu«² ¯ûRp‘(—þÆOÕ‹HN~ÊÐÄ©$7¡Kö¡íM8J£y¨BöŽÌGA2§¿âj”+ü_âYÕðÐÄy0}Äo°-y {Bè^q¸r£<‰#*›ÎºÎC´Ö§8c|%K{Q®èÈ&XdØÇ
+’Z,égÆVÏÞæ£1<Û‹%¾J,ÃÛßÐÃß«¥àMõ’¿“Q|¡G~`å5Y/Ålµì™„Q³êG¼nÙ¥#mþ¸Ü.‡L¹”’?OU’ŒÛ !‡…Äú(B2ïÒÍõëw£4Øm¶â¶X—ýû/c„Vu.<éÁ‘I«àÀf z×Eæy˜˜Î„ïÙ5ÅÖX×Ñ ?Ò](÷e5N¡PÒŸ9œUpîp*MB—A•†æɳ5<6Fª¢CcwEu_ö êÈ„*û‰3YçΤMF)êLD4ÔžJ˜ëoêØ$+<Q—ÝÑz‚(ª¹8êN«;;:Ë&tQ¦]kØá™`Áís5£¿å(z·Ð(º*yz>)íùÂÚÓø)˜”뢪—Ôýf{1/¹%Ϩn—[ûyS 3í~Nš'¦µîMs¢CƒK‰ŠÕ ú;Õ-ÿúÅÐ$Yˆ éı–äÛÙ½5ëF¨"$ÅJe.½2eRzö‰µV|›=bƒðœ7>{¤Ç“0êú¬<î³Inë9ÉSêMŠ¯VT\K®0 ¼)¥ø·?í¤ %ÏS ÇOÁ?!µß“3¿ÚåbÖ.»¾ý ÷$Âr%ƒë»_ñ¢VýöóðvM“^31–¡4i£c]îÐH
+O–íü6:èõ0ÅVèa™ç÷ÊŒÛù)–é“5sß'næºWœ'A|âÆgtÈ2;|8ë@£‡fš(§(7IîH”¶&<)i‚[|Xé˜[YG¥à,6»5ê”a±´ã´âæpdÎ×!eÛùN½’µ0‡ðB癆í+nÓk¨Eíé‘Î ‡©ÎZOHÇdJíîæöÝhœ÷qð!LMÃÁt¯07ài©¢ä .–ÿÒ Åi*LQH'D¾ e†„™™£lH¯>Ù©j¬‘„ä¼@–ÊCemæ%-9!=‰c}[ÛŠ=0Ö·»A±­Øƒb}»-ˆm¥8„î{ÝÜïf€Ò¨whm(m‡÷Û·û„ô,ŒõÁ9¥4‡üGjjLÊì ‚ÕqFý€`#X†eÌ?aUŽ{U—;
+òÊX= ðµN;€´û•¸héêž+“ÜGfZÔ0FÜ»50yŒ'„kùÓš®Ú ûN¼úVtÙ~­¨ Šê”`%ÖP2ŽB”¬]\¡_mø± tú`ß¡YiØOF‰Ÿ `¹'$^0[X±Ü6Ðü :¡$ù†^´ÜTÍ—ŒÕ©[ÂQu#퀳jÊ'åζŠšà~†ô' Üßî6󨙡=}y$K¤ jEù?ÔMEýxÕ4¦n6ä¤yŒ„ÖC}3N­ú…Þ
+þ'ÁŒY*²W,¿§ÔbO~<ây_Ӄàn
+~¤åsÚGÁ2Qó΂¾óZ»¬ëÒ.ªÙ†(Äž°Š×ÏJqw˧¼
+™º-B†÷`n_S½ÃÂ@û–4XGKúP·ÚkÚZÚ ñT¹ (¡LyQŠ££¤ë?DqZ~
+Ÿ›¤£ ¢_ñÉÚZôˆÛZô‰›Zôˆ›ZôHkñˆ@ž®Å˜˜MÛp~Cض+K!©)óÔtV³¸5á /àÄÿŸójÙm†¿â£Ä…±Sí.P E±½õâ:Ú¨kNR`ÿ~gHÉvÚ¸û8$Q$R"Åሔº ÿ[Ö++Ö㑉 ‘\9RfU- •L nx¨=À®¹É´Ô„–´³óÒòU9Ù|©4 p1šVÐT$ý<š²ø,Ç°åÅ©Õ•@>íl3ªX>rË9 {¢ê±8£®ÄN¿ F:âcÕí,ËÎÆÕ‚š*; Ï)›5¦Ái”öÉTÝ}FûÄê¨ê²ÀwClÓ›ÅÓgî]±ûðI”¸'Ž×‰l…§Öo”˜”¦K#BŽˆD€
+cÆYAPðÓ÷¶•Sáú¾/]pÔ!R™óÀ§ÓDìp‚ …û
+rìãbn|šqX.”Ò7¢ŒÒC-jÛ¾{ÆoïŽ,£ØRÄÅUõ³PÃkÂã[wÀ\+o¨3SÞ 
+b!%â Åß± ¬Ïî`ôÍ„]$nEã2ð—|ˆê™ì1TI¿
+endstream endobj 1008 0 obj <</Contents 1009 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1009 0 obj <</Filter/FlateDecode/Length 3905>>stream
+H‰¬WÛrÛ8ý<’[#7‚Äëx]®le²YG•}H¶¶8ekK·‘äÉøï·»A¤(HvœrY”ÐD_pÝ}~2Aûöîî³`ön*ÿ+˜dÓs\ˆBÑ Ž–[!4+äZ ˦k–±|ú?Ú!ý;P4cªàV;6©
+^Iͦs–ÝN?¿§ ·SöÓÎpP^V`ÅÀvUqi™ œíöo¶a¿NûÞ neP÷$˜ù>tÑ«l}TÂûøÕÛ~¹TYÁŒÄ§f_üÏef¸`ß²\ÚLå™ \—ø­Èÿ3ý:ü/p¹PŠÛªsY_ô í>ñ.›´âõ}ýRqwõDtyÆPqÆ0ßòž-å—½ã/~À×qjH‰¢¤M´Rº—€\DËÈý<Œ뻼Ê>}B˜!zCøiö'>ÄqŸÙ¿,·–KÁ ¾`÷ ¦÷VM«‡†Q’¨>ü] cW‹- ¤k¡H
+…"Ñ£HHFbÁ—.’÷·ïîò2ÛoŸvìc½núÈÂq§:®z0BÌ+8±™±^Ò9nMg€ïÕËnåЩ÷ qhÍf6ˆKiÇË·Äå\ŠK•–GðTÉÍÕ°<xC;¨EœÚ¹¯7MÏ–†«ê áx—ÂÑ ·Ó/°^Ã(Þ)5.œFú=MEv„K!³ç\WÙ®aõfÎ"nC#^w5ŽÅ˜šBA.Ý{¸n&[Чÿ¾™ág“»¬³ñÔjKeª õz=T:ZŒõêF~nÖõæ¸Ì¥Éf6o¨Ì0W—;¿¼Ý Tù–|õ
+„Jl57p K…\B\¬ôê'Bc+p¢'.4Æ+{ –V¨/­—J'“2eJüžk­è
+§ÄÎò"½»õ9!mOS6#BYºÊÖa¢ȘÖ&€|“Û¬Y­>ëö€z¶ÄÇñ9‡§õö€ú€¿ìK½BñSƒŸ,Ÿ@‘qÙoô.%xhl‰èÎ[ìnå¾fŽÆÐ^Š¬­-«"fwĘ38¶b¨l2œI—c-T Y€*!P¥Ä-T q UBzªØÍ帛wPi%Z¨>lë9û’Ë*«WáøñФá²,âX®ÜK€—€Ð´¬40 *#†¥DB€Hˆ)q DBÜ‘ž"¶
+}•í‘.qq¾œÕG€Êâ©ãc 2ôÚe{ô|æepæ3Q³#Þ¥ŠÀŒ´.ð­åC·¡™³ÞÈ-¶†=;îëýÆ[7c;zo·E¥¤™“+=þå ¯*f¥æŒFö*ÓiÓ÷„Òveéå»»¼ÌöÛ§ûX¯›>Ã’RÎð‹–µP¯åÄpfç`èëì º 2 k¤kæ'ä‘Í¡ÙÌ›ÀNóƽ–KªÒòˆ 4Zs5@àc¨Jœ»¯7MÏ ;òóZ.¦1!ƒ#ÒUÜbKSc{ÈOcåŠíIWÙ®aõfÎ"ŒC#^w•Ș)QôšÑžJÞ‚>ý÷Í ?c»£{hÀ+³zÛµ`OøÀ¯níçf]oŽK쌳›C‹TÙa†ù»Üùe(2½.`*¯Ìá^P)”ý˜hæÂhè
+G¨˜.ïò¦Â< sc7~¦dí|™·dRìGÄ”¸õ9!2ˆI„™Ú—L2ˆê¯í†4l²8ºÀ8@ì¦Æ…”búéç ?”Ùñ™ÝдŒ½ý€"œËHA‰Ý|Á1O;—ý©E©’ÔâýÇ)d÷-ö§»ÛûØìÛ`¨ÏSHÔçMÛç¿ÁXÉ¥˜”¿pο年YoT°qT¨PŒ¸pr= H_¡÷Ãx#Ù»à#Ì mÅ ùÂ*t_\…̈D=6Q»‰\MÑP(:çþª×ËÍU¬Ÿð–¬)‚ûà ͵³×aJ¡æ{|ÆÇ/8(ÖÌ{a”1  Yoâ§
+ùM‹õq¹¥xz/£÷ºSú{süŽ#kÓl`òDÏpj¤#Øá/á—w–Šö ¤iû¢§³×½q¿ø ñCÜØ þà~MYDL|j8JW¶c‘Á(FÊ‹ 3G{ÙK…´åŒTBã.údKTj+Èp%ˆ©~ík+Xj·2ägWfX9Û—Ú­µæQ
+Aè¾×mùKnFZÚ ZÄá´¤§vŸ‘Æ­míÔã¡ã<e„ú‹Å³×z¥7&»ZRZB'¢”¤ zbÐcœ‚Zj¯ãŠcžK^äÀ¯$~°ÛŸP\y¬R˜EO ñšRÆ/e¼E¬9ª1Þ@Ÿ¶õœ}A·jªûg¬(B/ ù;ƒ¦c#%·HB€¨ä“"Û`ƒ¦V/ñÛYL`° …Loë•çª+úYÏñ“íý€pãOºØX¨üdG°ÂÖHZqý/\õ„מð'~a;ü¶B'6Á%Rä­ôMrðl¢Ãl “Qxsj¼æ“Íõ!¸1ð<¶ºŽRŸXh˜Õ€Öîšý¬Ù€þcý
+S¯ùCÛ¹¡-¬žš8ùJ­Ê®=ÿg Ýæ}ƒ&ÿ[èØwÄâLvŸ÷yØÿY/Ÿµa ¿
+G
+ÂNÈŸk¥*U{ ¼
+¡ŠH• •úöýÍŒí@6v퓉ǎ3þ>›„WBN:GÓâpëàpï÷·d¨oëô ‡C°ˆ¡µñÈz€UûÂo?KØ´dëb· Ã6TõèôÖ­ª1ã¿éb­
+6^§×žcØsò¹åÓmÉv³Åñ²[,ñâÿÀ¯ØÈ#åñàc~Üy"sqæK¸ç<QÞOìòlw ®0ñâÃìŒVÃeâC9Väê“U„–í[ç7~É+Bzt*4bpù>ëaŸ˜
+ô‚pv‘T¢ üƒPÎÅ ¶ä ©÷±
+.pZX#VÑÁ§¨ñðǪÀF¯ÊØîGå{…Ì^'.ˆ¶¼.‡«ƒ _Ž”%'[Ñcäþ¸ñj‰5i¸±hðX͆Õbü“{šTîžÍ—Ë_`•mË+úВϲ† -cî<‰Ç¡à_ÞhX&ºHnÖ-Ü8á"²¨G
+ùý¡wYC—ŒDG!_KuïÃ
+äkÙò}X|-[ ßGÈW“òäÇ!_ˉj¯ñ°E§M&Ñ>Ø¥1ÑÛ[¡t¿­oÙ>òloóù g‹À¶ sçªJ(u˜}'Ž:6-¢'Æ=|í@Ev-¬Ó ÀÒ<d
+ëT¬ÉIÎ88ñª%…é
+,-1cÄiã:ÓŽS+¬ê ïc cøçbôKÙe]Ùî Òâ~qø¯´-÷Åo|!|'ë™7‰Ñ 4éðn*à./èn{Pø/À
+À‰
+endstream endobj 1010 0 obj <</Contents 1011 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1011 0 obj <</Filter/FlateDecode/Length 4486>>stream
+H‰¬W[sâÈþ+ýØJMßÔ’ü¸×”Sâ`jóIRZ6‰-±vfþ}Î9-µ.аöl¹ B§ÏýöõOK&è¯yb>=
+ö´g–ò?‚I¶Ü°<"Qt g‰­š¥¹Œµ–-_gÑò¿Ä!‡
+Κ’ýƒUì§åД­ Êžuj¾ŽMt"[•p6þÓé]>‚ŠH*ž0#ñ[³ŸÝ‹8’ÜÄ‚}á‘´\E3ɾ—ø”DÿZþ þ;˜œ(ÛÌ›¬/Z‹†ŽHÜëø¬ ˆ“Ÿ å'ðùVÉb¨B‹8í£žÆ¹ºsžê!)S=æK4ФrËA~“wèq2¦z ø†A]öZÒü÷TQÒWQzREÃBï‹HŠ2þð€uA6T šý†ß%J%|Ûºb‘Ô\*w
+ËK°éÜKYàÛ}ɨ
+Õ°¾ |3H¿±_ìÕüƒÕ’\!Oô‰'$=±`‹÷äþîç(åM}ܱyñZ-IŽÑ™ðö
+t&:9äKæylWaÀöì÷µýX‰9qîóPîËj5òKéœÊþÝ~9—üR©ûä©46WÝrÉëA)bªgQTOå@—&VÙ¸ã\rGãtèä œÔ×rÔ÷”:ÌFº–";@SHþ=Òß•¬¨Ö¬ÏÛX‰“úbL›šDA-u²h7Ã7ôéž«~–QνŽ_aXS­«Møk®¦½¯ù‰¯N≯åkQ¶‘4|µgë’¦À
+Ëu»; kÕäÙ ¤FS.„fÈ3•DbNC¾­!àšW£½³JþHw8B…ÊÉêØ@˧‚+!„Ðôâ7¢±1 'Æð^ƒC§%*XMÖQe.ƒ4eR|‘µV40BäÜÆI˜»µ9@m£©«Oû‚ÂLN
+ÊæXÖHl"Ó%rY¾€ÿe$ÎþZkv_mê&’)fš¤à:úß/Ç÷ƒü+eùçHŠ¶À6cÌëºÍZaÍÜ èÒy§æ.2÷ ~£nÇN-Aí/ÐvrˆÍd,Mê|á"Ž5 ´Ô³è~bHƒŒi, D¾Ï‘7v»mõÄê ;<£ý%Û£åàxxÄ7{ôöf"¼Š’€¢ð}É↽Ô_#™ŸâŒœ{.Ù8¦/Ó-iëNÇxºW’y%ª×a
+yÃ^)àë-YI9¹¹¤
+Om÷½xcû˜Ž¬-×[<||² šÖÑòOp\Ý°ç-Ž›§ç›KzáëyûD_ñ…4‘̇¦þ¥ø…¤¾lß)F‡šê«X“»ÛI,XURèØqOáh"=°ØôÒ•9‰!Xõ‚< ˜”˜Æ_ö¦éÓ0éVÿ†–•Í ™V¬K²mçŠu|¡†Èó.;Š
+y‚ÇT’(0©” „ö00f Œ (]åžR.ý«Ä@)•ôXãË#~4Ðsp{€'¶˜ß²‡·l ±¨Váë²ÒoðúÀ¶Õ†:¸‚:îo¶¿†c$[Ó—Ÿ© Ùîˆßͮރ%¬ClIhž¤;à›â¾IEâV,‰v¯?B“ƒ0èÁÅ–ú-üƒ·0žñ |®«ìùò~Â0è½âx¨Ïy)Ó.=²KO†Mè”1Àú0~‡¦¨@L”äÑìe8Žçäñ-"‹‡h–ñ‘ûE?Ð `:€å7|
+®Ö«h®:ØæòTŠSe‹¢z*‡
+qùd?ìI¹ä®ÈïµÌõcSh$ySï°JaãøúéŒïJV
+š’&}ºçjE]åÞ4wˆ÷¶Ë5gõdIŒŒqâN¼},_‹ê°% ·gˆî`ˆ®°‚·;÷†õ ŠØòU<²Ã *”gáð”ÈN°È˜x‚Ž¹Èk
+|Úúw%~4tï¡l”©u;Ÿ¦ì
+Mýœu]±%¦¶‰î¶ >ãŠá »ÿÉ ñ”¶*áŸ}I‚MÆŽ@
+Nè¡Õ]½…˜ÚóNŸG{!î3ÔÜ Ažÿ³^6½ã0þ+>:‡f-[¶åKn¦(z˜ì`ÚÛbFâlƒ¶N&ÉÌ`ÿý¾¤$Ç_t?M3E‰"Ÿ7I OAžj / ¼$.¨!åmÊSLyE˜QÞ¢ãæ~ÍT9’†ëjíШ˜(<•M~÷øí¬…(ke~K¢¢!VôxLáV¡˜ïH
+ýÍl×ôT æ †‚µÓHäݾ+OÁfF†¨–‡G³ ÷¶l‹À8ž$G,Zò'žñjƒ[Çn,@y]x¼R9Oé}´¦7<ebgŸˆ/6—ÒÏ#¾7Õ˜7Ÿ_«:M4ðÛ`_Ûñöy?oÀ¾ožýºaN³ß#l
+§l{tÌ]K`:oxpz,š@vŒ%›kî’ÙuoÑlû³dvk¬C
+PÏ€1ºtÖô¦šÞÃn»¢&Yµê|Ní?F×ÀÏø¥;4pÆã{Î:w”*¢idÑkŠOÓGÌ°Ðtƒà¾¨Ï+4[4ù/%úz»‘Ài+Æ·§¨@²{(ÀEåÃIp칟DG~塶J¹s“/¼OÏíK[“ßUÝÎ^Áæ³W0ûì•Ì.{³Ë^ÁÚËÞÁ!éí>¯ŒßçK·Ï?£8æT#@®f>]¹ò©là…§é{¹[^µ™ ¢O/eL÷œihÔŸþÝÉbAó•ÉB˜&« N÷
+ºdl>Y³OÉì’E0»d¬ÃRgä…P D«N QÜ–]^Þ=”nck‚瀄*côé7)ÝÝá±¥PÕY¡²:Å$_êÍîðŒv\R TDÙ1ˆsžÇ&Ìé\™8qª…DŽ„î×´Ÿ`a4ë•Š% ã„J0;ƒÅÞÄ'Ší/D]ë­£ºVêt­7 ºVít­7 ºVmu­·
+ºVlumô¸®•FX%]Û¦ÕqQÇ ¾N(ÜØ \“M\U¤TI:7bkÂÁÍõ÷™¯(™—xpêvÇ'ü•Çã3 ]b·ÇQ‘›äƒû4Êu«ÙÞ3 ?Ðbª`ÿ“þö»#«Û݆oÅ >ÝÇÚ:ÎçÔ¾#{'ÁÕ’BYàã E «fqšC¾&´ö<|[ºÅÞKF[ÊÊÜÏÜ>_㦅Áöœp]S¬‰5nYóü&ÜÀeÅïx#áûŠÖ¾DtqxAï{X­¶ôS\üpl9öšÞÓKžs¨ ë#ªx¥ò¼4Žxš`±œ·p¾Ð ]ÈS””ìE*9‹2+R`DóÑY¥té|ÖÜ^ÿqƒ¥v?÷Á²|îÈO•âãf ïTiv–žã*b6ÝøÑàEŒµàç„ù’¼:VõªaœTo>¡e*B¢õóY¢Ü¾‚qSÁMõ}/뫶ð4Õåfg™
+,ljœD/‰_ÙlE‰‡þ´²¹ÛÏQÔ ºVÿÍî« ¬×ÁùG ŽªÕh@Z»“ÒTý}ÁBûÇmÞð§}®WôYÍZ ÷G UFRÖÇ; —lrŽ6,ÆN7ˆö®z.k®ŽÁšÉ丢üÝîíë]ÝÎáÝA½1‡;ë°D±tÊT^уÖ×50ĶÍé±:f(í+Y‚Éæ(C2;ŒÍ$³[³`íR'Ÿmb|ÙM³Á)gøÆWì5ÔÉ}-X<QŸ)©µ ã ÚOîlô’›kÍ
+ ›»¾~åÓzþ ¿(°ŸÆ7¹¿÷h@×Ü{èÉNc5O ciýŒ²:·ãîî©/¿]ÞÌ.Š6¿¦M2“ ¡–å̯~ä4±«OU}"lEî·V›mÍÿ×èHå:¸'ëñ`0ŠÈh,á6˜mz˜Mˆ³ÿVêŸ9]+Ž41Ù:&a°·Žb°4Ôa°7 ,vìÍK£-{«€Áâ`‹ÁMÐã,±Nb°ŒJQg™ `sζ 6´QþRYVLÀrŠ²÷‚‘—ø- ¯HÚÞ-è}ìð“úTnñXã‘Êý9ü1ÎTÃöEaö«zsœ)*‡É;
+©¹ŽD¡
+_ª”!5陊¯AÃÿi›¾nxq‡€¹—I8%ÖLÂ
+$Ì…+ ÷Ü2W[*<f‹:ÆDŒ]nî6í̪鎿©®e©ökØà:Ìl2§–˜y >'8³(Í`Í„a#sé­[o;?‡¡UFþ`
+endstream endobj 1012 0 obj <</Contents 1013 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1013 0 obj <</Filter/FlateDecode/Length 3329>>stream
+H‰ìW[oÛÈþ+óH—sá|Œ]ÁP‘xSK»-Ѷ
+[ÔRr‚üû~ç /CI´S;é¾ADzçÜ/ß9[ˆ˜ÿÕwâ—‹y,îvâ—…üW,¤XÜŠ<ŠãDñ¹HldãX‹4—‘V±‹Gˆpño¾!Ý7ˆ´*‰¬ÎÅ$K¢Lj±X‰`º˜ÏøÂt!þ:7˜§¤\WY$­1˜‹ºÿq¶ðµ!ÞÊïI+æëPEDzÑQÅNÇONîb¡TA"Œ¤§¿»ƒ(”‰bq„Ò*œÈ ¦sIoIøyñ7RøïP9Q*²Y§²~V[Rtè@¾} ]0iâø'>©¢üEèô„ ä„ Ø\‡ž,•Ç‘ôÜŸ¼Bãq(HÅ©oÒ¦—’æßä¤rzd?ûë‹0 >~¤0ÃzÃñÓâ =KŠc&ÁŽ^ÖÕF„Rp®i£‹+ù»‡² Ó])8I”~dW†èØ8R°Å&0é%S$›Â–è#K˜Yb¡KgÉlúËE˜uõ´—Åcék “<ÊU§Â‹EÌ18/^2Ï#k:ºgßW•CAÌæȸ‡rWn–»”Σô-v9ÏÙ¥RõÁSid^4Ëo(‡¸Ä‡r®ŠÍ]éÉÒ±‰TösƒçÌÑàÛñ©‘¾£¾¦Ôqã4Ò¥èa*Š=ŠBßBÛR›•èã6âxgǶÓ„&QÈ¥–wr3Á-ÿº÷Í’~Ë0: W[nS©/÷C¥{C“#C»#Cçåc±Ù¯Ci‚åN¬JnKÊÕõÖW›Á @÷oÉWÇ Vc¶:2(Â4F#—° ÉÊ?`{@46ƒ9ÑhŒ/Ü5Ô¢Š£Ô:ªÌå(M™”ÞÇÈZ+.á1rn£düv£óµñ¦ú^`sJ4™ÒÚ´A¦ 1 u@½þž—xŠ³ù9=è§Úì‹õ¦¬ ˆp¢užºl„:ÆZ
+åª TOfîàSð+˜“%ËE»Ww™•’gië
+r"#iRwŽ¯ãàjvyNZ‘<uûY(y¦Q ·x7ÏCKª—›}(1ãÄŠ¦[y»Þðs%̱֔ ê<„F&3"fôÓ‹RY¯_§Û_!á“”Ÿ£Þ$hŸEÆœÈÀ† D§â6š’>9A•hÅHŒþ2çàÈUÐè¤%
+(?¹Û¹­ ëÙ’33,6ƒGnk­£ž
+#´¯u›ßc—ó”zDg´6„ƒŽjväö jµ)=h5¹%ŸR1„ì “Ì{˜ÖAw¿¬¸y¢MËŒá
+º ˜dNèw- Üg»ºOd‡ d” Zrª˜ß¦ó³Ù‰9ºzêjÈ׳C”ÝÜø:ª·EAgÝäXðHº§z)Åö‰žõ¶Ú3•¢º¥lÇÔJÚ:Á¦sµWËN×ÙSë_Áä Ëhh¥Ú’$
+#rÍÐ2uR«pù%õJÔLª _:ÙݒÚóFÑßÐ’¦è;`:‡ç¶Ä¨\#þ˜^–â¬ä¯ n0_è•Î+ç1Ûð§¬IÓÁc¨tP`ˆ§îC¢°¢`•WeÃðyª`Å&¹Ï¬Ðºáê<7^kò&­!ï ,(?ý#iºÓ'-? gôŠ6`HÇ`J„÷IÓ»ú,*¶ˆ<&f¤á$Òt6ÿ]°¾L€1èIl!Á”¬uä9x_†tX ί.‰±üÆ
+¿á!ÕQRhxA¿£:Äo%ö©Šø­¤ ü/«ÂKœû¾¸S`¿åþf°?´ëy°ÿ*“:œ?j’Ãù-ó7ãüœœÿ*K:ˆ?j AüŽõƒø‡¹÷#!¾SŒÅ×AüÖÔñ‡†¾âolŸø#v0ÈRWµ#0½%Ž@üçïƉ‡%†ŒÖà§1rFÉ‘G¨Cˆïb›6>µfá'©Uãv”¿¿
+¤³JÇË8 Îf .é GŠÉî¦ÿ|A˜›£Â­Àv#S,“ù
+Ð.âg€‹$½|
+UÍB
+q³f_Â¥¼³RØvå'¯§:Ï=”›;¾z/¬á%pé\¾/ܶè"rçà×BX„½"Ç–Y¼÷Y°>ë`5JºµsXo5£T¸à–ôî"zØÂ>'‘ÊÁ½
+±­ÉR–KI5Õ¨öÀÑ…"÷.º¹U©:fýüNBÑ
+sHô¦O±—ô¶â“Î\t{é
+þê•{Áß}k/ —³fš4‹`*ôÀI\ž‹/8K4røC¶%ÎŽoI{±$dÿa»Zv†à¯øØJ jšô zá€àÒÄU#¬¦rZ*þžY?¨Ä)Ž³ÞçìxïPÚ¹K¾Óò&N}ðq„…Ùìðñ•#XOŸ³ Ãõá€5ŽBFI‘ÐE<KÁh´ÈªÍp±;M³ºÊ =”ÊõÖ9ô5º‡œ˜z\,v¼P…
+èÚ¼¨º¯(w1 ²þJnÜù<«à¿2{,ùŽt‰–Y«t[nêÀÎhi4QÇ¡²ŒÒÙx#íR6±]¬ê™—ÁBH‚”%fAFnVBÆM룿ˆhÍœö.[j“¥*Pa¹Ml€Æˆ•A;0ÁØßwg»sYÈÝ?±9“ºÌ|Ë›¾Àõ öþvD?y/ÃÜ“ &'¨f-9c”KÚìäìIRæ]èæM2÷¬\Ì”$ÎçÉCŠ
+ÄëHÊ.êꆪö\CJ¢1Óî…d^-<eæ|׽ķ©ƒ)úÐaSÝÕëWÙÃ1:1¢/O0Çè„´R#kÍ"Þ µê3³HÞï­¹ª%ë£OÓ4¬0nµ!#É›œûò1Õw“ÿ{¾A‘£ëöή—ÐÏÊ:BäC¯|
+
+½xåÓC¡ñ'ɸCp“ìrT-ešiŸ2‚y`{L& 93q•|öyþ_§®P¨Êª®¢J0F”k¸ÓŠ)%;¸î¸ß+½à
+i…Õ¶yöû`
+endstream endobj 1014 0 obj <</Contents 1015 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1015 0 obj <</Filter/FlateDecode/Length 5471>>stream
+H‰¤WÛrÛÈý•yREx®ÀàÅUYKq)e9^‰J¬TŠ!!›Y‰”Ii]þûœî\pÄõªT"AôLßÎéžž_æBòßî‹xóþZŠ/{ñf®þ#…ó;QR:Í jáÊ¢”ÒˆªV…Ѳó‘‰|þ?ޡ‰$Z
+íŠÒÔbæ]á•ó•ÈÎç×¼á|.¾ SÛÊ++Ûµ/T)”„r±kÄ¿ÄFü2zCºµ%ݳÖÌ÷CƒÊ裖ÁÇÏÁîü&r¥3'¬¢o#þ^¹Êl!Åm–«2ÓùLe’Þ+zrù¿ç'‡…ËNë¢ôËæEoÉÑÃòî‘wÙ,&$èwCýJõÉŒ˜êˆ!wÄ´·ùÀ–®e¡éwÂPÐ16¤¥ÆÚôVªú€ìz« ÈCö›÷¹Ï>}"˜½eüŒø¾Âq—»lOëíFäÊdH®mÑ—â
+b^wß,èí¾L=„ìò@§”…F,¥CH§BQ
+Gb&‘°>Š¤„/]$çoÞçU¶Û>?Š‹‡fèruQëÎ…“L
+F631ÀKÕuQÚ΄…ïþUå¡!V3 îáÐì›Íò .mê¢zM\AÁKqéª,zðtUØ“aðí9¶sµØ|i¶Œ´…ö¯'(x)½~IôF}Méiã´*PtLEñ„¢PÙÜø챋ÍJô¸ ºý4k#4NƒK­îÊÍfwüž7Kúlò:ël|C¯.¹MÅPO÷Cmú@Ý$Рnèuó°Ø<­se³å^¬nKâêú1¼Þntõ¾R§
+PÌl©mv™+ù‡leÌU„ªF.}xñ9« @ŠÓÄe¥b#ùÌ(ï²9½úÚˆ=Ì“æe#–¤öÉœX¯Ø'ÐïŽV®éjv(¼°MSœ¶#¶ržB®
+‰„ÏT¡l\Xm¿çZf›ûõæ7®ÕçÇ{ÒŸ9ªá¥Àf<ýbùv±êíÕÙ±œZÉ6ðxëÍÝvGsÒÂËOœ2©ËínÇqì·Î*èâ_œ–®ª{Z{„¿Q¬|aÊÈ°CúE²–¢ qKÑ”8R4!ŽMH§µ}Ç¥ó1EQ‰,tMñ ?–ñÀH¾ÃÛ†~P*ïŇ-8„L3d²‹Ah]Zè¨ ”‚î™&½:ðŠöºBˬR¶À”&¬úudbsmTÖUŽÓ¦Ê>pk<pÅu®(WTÆtâÏfÀ;vÈÖ—”­CIu‹ÇõOÅP
+]Mým‹úÊý N£4TJã(U…a,ÉÆÒÓ¹œ)YdcJÙ˜6¦Ä)鑆ÙÏÔj:S·l,«ŠÆÃ*°ñi{DÂ(‡¿ÅžIܹ§Å44Dà ^ÀÀ¢­ÙÐ
+qMÙM#ŽÐ¥íóŠWˆ'Ä-â)qD<!nOˆ#â )@3 õWm©3ë—þ)Z´ŸMZåˆÔû}hýÞ@ÛùSjSøNmqfždÝ`ºWÓÆ}rd°åŸÃZT<zñ™Ÿ¾¨A̦ð»Æý³G^P0¼?òÙÏa•<R Å’®‡“ÉÓôúTw”_‚òUI׈™­\5a<®©8“Œá¥z\BÜ2>%ŽŒOˆ[Æ'Ä‘ñ éô`ì u䔢Xbq\õóÏÛ·o?}¸ÌµA;ÂumÍÇÒÓzAy4Öf—ýÝ )ôµo¯°´Àš*« ]˜‚(å\®L»üEwâµØm®+>êPXNZ²ù¤ÄŠ¤8@‘G(Râ
+f_¾‚õÕñÁíŽËÛ”‹ó£ýŒè ÌÒšQºÚþZäfÅÿDõ|;š°Ê€ÅváhÂÆ‘—IhqÌöä1öÔ Xò¤»uRZkÅXøÓ V2XHf Á`!˜=,k ”V7Sq ÊvÍÁF78¦E¥=:®¸W¯<2P¯ÌÌhœ`c5À¶ô2V;R8ÜÂ?AÆÈ_?Ì.1kÌÙ‚ãÙLf
+ä>ÿþtÍÔçkJð5À7þYUÙÙohæטÇ<ño˜Œð£»k].4
+Åçå®7¯–·4úa<˜!sƒÞiÂ,vtìnùŸ›?gúÏ”8Øhˆ«€-e‹1 ó‹á;còåË—@@`~@Üjvt?0øöm÷wªj‡““W¬dl˜ZAJø è œ~„ Éì±!š6$³Ç†dvج'º›#s5:{]‰à0•Nó««ë%D‡ Ô]˜†hEÖåo(ãë”Ó¯(Æ=ºwñj¨I‡oeœägpRLxûi Ðš);ŸÔ¾ÁùªJÎoQóDw·¨è•Vehî‡ô «ÉŒ1Ì9S¯~u@‡°Zçù¢·ZÂçp±ÇŽ´¸&f¬ÀF[¿8 KXLæºß·²j|gyÂêÖ~©‡¥q°¤0¸ F EÄ 4OL‘añpbOúœU½2Ü4KÅ®pO#£1̳ҡ™&µ'Ü í&Ì\gh ËöØìñ9þ &ßY>ááØ<'K§4ðúc:¯f»=Ñ5 =·E£Û‘©Mè󞜬!‡Hÿ±Çäž}½4ý@\a¢²ÄkQj@<–-$×Ãv³>6j¶Ç'|oHÆ»¯õWÆš´žÑÛüÑiR‹#à;vþ™^rŽÖGçÉ9]¥D׈Ó_Ó‰öÍëýNqù-·]rܯÉ4[á‚5ûE×i_“Ú¢ xQ¯-.r:¯Ýüݘ¸i‘?ü®pÝ5­åÍ/Ä2÷»·—ävýÜŒHeŽÕÝ>*@ØË$ð€Z"NMðïâØŒúÄ…£j+Dc_Ñ1ߣu6‡¦ÝŒN¨MM]å'O輜;¡†þës *`/Ðç2F®²i°Õºý«4™…ñg漜;˜Asé‚d ­ç¢¸Ás-8qB“ª
+“ï{j¸B‰¹ôÙ;å»Îa­OP…ÉÖ5…}CeüÈŸî¹ÝÐg“Ö³A!ZUÐ8 Ǭ/j=Ý“ü,6ãÜE§½kž×àõÔý6‡ä¡¡.zØl·/îç];„nÎ$ì}íÃ9@:„äºq®QO6MccDÜX;¿¶ó®N±D%Ú´-éY2Ó
+è0U2ݶ UÖD·µãæ ˆ”QyE„ª¬Š©¾" ‚gIü2²/«iå¶P9‚9TŽdö•#˜}åÖIåDY/‰éSRlEƒÍ¡ëÊ£ë5©ŸÙŽ^ôíâŒ1Qv3²Z~íP<Þæ¸ÆJÏœ†k§9Ί]—?–dÕº“율‚O²` IÌ!É’Ù'Y0û$ Ö¸=êÀE]Ȥ+ã ÝÐŽƒä¸º¢„hC…¦ˆvk®?Ô^×4âS§19æøÇ)){™ÄŒ¾ø4
+7WÑq¾²ž Ô•e=e ¨ò™ÉRt º®#TXª8·\­OYqã”É~1ƒFX
+¬7•z8¬¦„ÕTº\Ùñ¨VLŠÞZðØ,ö€”£,³Á¡ ºìp¹¬°ú„µ_êóobÖšZ3ža
+Ÿ"Œ%¥Xµ‚{eY©Ø¦Bp¤¨Õda0dˆªEAP2Œ§tÎV“ Å·Çt^Í0¼TIÓË°<- NaâVRQ-Q•TW9ƾ¿x&2<&­êduîÀª,zI2öa»Y§mŸHï&,v¿§LÝw,p“-ýDoó×ožîÏôv;ÿL/9Gë£ó䜮pŒ[,ÉÀ«p }óúF¿S\~Ëm`—÷krîP¸`Í~1$_-Ò”tw±ô‚Ì—I `t1¸¡j `~ù»ÜïÞ^’ÛõóHz*p€1lᣌ½Lš"†h»8¸È3µ¢±¯è˜¿9jM»PbY?{BçåÜ 5DŸKô>{™HçB0r•Mƒ­Öí_ÍPôf–šäOÌy9w0Cm-ÉXy‘øè8ŒU²ShRUA’€Ír…®Û‘YÏCG8yk}‚,‘³`ßP?ò§{n7ôÙ¤ƒ¡÷šX0:Õƒ¤¾¬Î2|ç.:í]ó¼nÑ]Ði6‡ä¡¡®zØl·/îç];„nŽþ¬Þ ÝÑ>œƒLKÉu[qã‰ÆÏØQ7ºÎ¯µ„­ÓA²ùI/™ý(ÍnXKf¿gÁó-ÝhÐn
+#=Ès¬k´û§Ýv“ÉÍ°¿£Q¡BÁ/,âåjqX*
+ÉN¢,Ÿ) iÅö¼µ=X QŽ*cg«îkÎ\ŸÕœ4˜kz|ˆ¤ ‘Áw¨Oe z HA•6ÌPC1[zh ¶
+˜%s£E6>÷í¤fö‹¦²£í@ñjNC­¸E…IäŽ÷#“È­Ç‘jÓQö@êŽ/(–ºŠ¥nae©«”‚+g5žPÏŠÞˆ'…®°Ðë\od®°Ö«\oD®°Öi\o$®´Ô)ÜpØÓWX?.oѳr=AÎÿ
+endstream endobj 1016 0 obj <</Contents 1017 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1516 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1017 0 obj <</Filter/FlateDecode/Length 3582>>stream
+H‰¬WmsÛÈ þ+ûqÙ î —äGÇñdÔ¹89[×›öÒéÈe«•(G¢“É¿/€]rù¶¶¯éeŽ¢ ‹—ÀƒwK–Ò¿Ó={ûá6e÷göv)þ•2Á–[V&išIz¡d™ILš*–—"Q25ly`œEËÓÂ~‘Â(Z3™%F•,.²¤Š-7Œ_-oôÁÕ’}eªÔ (Ï 8EÃç²H„a"åìT±ßYÍÞ-ûÖ n©QwÜó}h¢Uél”©µñ{îòŽˆ„äÓû›}D‚ë$e_x$ —Q,xŠÏÞeÑ?—Eƒ“3)St&«g­EC‡¤¯GÖñØÄêÏúú…LÊ#¢ò™ƒ²™ƒRý%ê%Ë4½ðgÿÃAVÇø ™–}Ÿ
+Ÿž+F ‘>ýÎNií$ë”@CñN—h'è‹
+±í,5&giÅ9œg5¼Ëiî‘Ñ,Še*J~s}É–`‘䧊×Q¬ÐÄœ³[ú9ŸwGü­#ÅÙ¢ÞÒ§|’rú¢A…»¨äö5F®  ʇZä­`/Eº4™±‘Fðu.¨2Q¦uaQC°7»õª©Î`>kàïŠí¢¸sbÍ·qĻأù!’‚¯4J ¿fGº®¹ˆŽ*|WòÕºÂÀƒ“gJº ¸{{ÝÐßà8{ÃîHßH¦œ}\‘*|quöПð¿ê ÆÊ™Ytv“ø&2ü°p ¿ "›’³_YžRÃ9aÙdðó”EÖÆ‚8F2éÃàŠ²‡äÅÕÛdòøôÈ®W‡ªß€„ÊHOk‹Ðá“s­–ÑÁœõŠVd:(¶çhp x]kž9tMÜüŒY«z=ôZx.ÚCÒòœ‡Ð¤H™'úE].'‡‘ªt|Øͪ¾¯úªƒø“ŽY-Ï:–ÉD³/¥Î÷[9=’ÎÀ”AƒªOü±b«zÃ&Ý2íuKð~Þ'h2’|J‹$ïšÌ©¢NBW{_¯ñZEƒ¢Tà¨ð€yy`Jå½Í¦‚ÔM¼½­«šô²õ™m¨E×áÝ£} ªc-TߪWe{`‡Uð\¢µ,‰,´5*^ÓŽäô R3qøò´k Áïw uÇç qýÙžI
+žu®@ÝÞ¹×0!i¦‘š‰s‘(p~Þ×U³¡x&)Ò Z'ñ’Ú£4Ã7Y]F`Økè®lGBçЗzRèÕEñ·)Ni'”)>"©ÐÃÍHJkè T÷"ü±–‚feHœPòAqët@<db>õ]—Õ´G0c¦Ìv.cK¬Ú`žÿm«wíh²1“ñÔtb]–9ýj•s@T"ÔR¸WUž.ë€X“•ˆ}X|b‚¶I”ÎO<4ÀS!g²ORSB8Ú8tEÐå7$vù Š)¿!©ËoHìòÛü†Ä.¿!ñ4¿v÷ üŠ2œ_(ÍRâÊàò›A~5å÷˜#,HBññS}t”˜0ÝlJY,pIY¾'¦»ÙarêO‘È]v­%ôMÖ[Eó!}»o?"5fÌN~uýµ…0û«› "ÅK¯ÊN`7Š¿c,
+Ùšh¹zË)!†^)G¶êÜëœ$ú/8ðcÜsÞD‚÷ü¤o—·ßÑ­VøTØ;/É2ZqP¸ÂÐ.†üÆd¢3eÝd€å¢Ì2Äô ßazUÔ™‚d¹äÃðÒCLÏK[H¤ÑóÂÐóÒÏ©ƒó¼´Eó¼tÌž€ˆ)éÀ Îx0_}}Ú=b:´Ö”­3#ŒÙ»Ê'L{Ni†WL[lV=[ÊÞáqh»Œ[¤)Ù¡e±õèrPAsüR©{ÚxÐÁ—;îؤ8N™Sþ»(Z%®|{5õW\ÈLtZ,3%§ˆƒhDœ‚ž\ÇdHÜb.$¶  H[ÔÄ-ìBb‡»€¸^@<EžÅFÜNÌò¤B†ãÇd‡“9ŒIÁ×Ø à»StßCUi\3ƒlu0¼â’&¬âg¸¼*êÃ@éqMW8"†3¶´ZØ÷OpMÝ=®
+1{
+1Ó!4†´§k‹s³:5”“úžŠ,üXó€j*Ÿ±9;ÝÈé#Œ:XS*öùhAŠc@ØnãèÚ®ùM:Bnó3òwè †ÛóñRwú¤îvÁv¶¨«Mo–PCÒ¾n!8,W5;n6¬~:๔|LÁÛׂ1ŠÁ¢òêÂð¦³jK^í)9 |ˆqÈ%|ÿLz‡¼«ØjÓµ&´¿é²a;׆zY§n¼’ó‡ÕpŸ]5)©h½©jF
+ÜÛìÜZ¨p0͉åâÕ+‹q»³ý/ç£2¤¸iŒ› ³uã®Oñ}Ó•jÇõ‘(X iùúD5X7ûVáŸm#p ÁêüLÃ¥PP";° µåMYcpšª!M×°ò&£‘%,“2F‘­°J
+ØB¥nYÚc¦J"Ò¢JªP´nZJ!á•áJ”;²–[
+Š]
+Ê_
+Ë-a
+Êc
+Êgh¾¯3^0U7z–æ_͇är,m(–uƒÂݱ7h¤‡`ª&ྪlvËÅgv±Ùœha<Ãüÿîn~–º‹yª¶D\ž"l‹çÇã©M
+Âù/+jÑØ)‡ž+ ]¹ãO&E¸HÚzƒ^À^•å™çm°­fÎ:6Þ45^T!“"¸ê*Ý£×x?¬„yi[©­‚ya[óÒ¶R‡ÿyi‹þyéûÒ·ò4¼/(Xº<öo«Ó7Hä¨À%40Ü4ù»å[è˜%§]W\t“}»s½| íÿÏFjKY¶û‚žßH[‚7×ì²Â­ŒÏíåÏ{à§u‡f»ë
+)‡,ˇ[ÊÙ…dq8T–uÒ\k`€V èŒæïalÒÐdÇÚN§"´$Ö*Ëq,PY[±2&ë*BO*B?;ÒRï
+KÓL¡S!áè]¸¬3(kÎî”ØYNH/ÛXA7xkxße#þ¨»íœÁ’ðîÉK+}ó<­ÓÑè%ušƒiÔ9?záÞ‡!s½RG6öÒÚñNñüƒ;æ=Ìz;­tÛqDWqgûu+ó)(6 HëòÀlsÉuÞí€}½ÛtÊ`§Ÿuo‡Ë'+£³¸õ‡y0—yPãÌ›Ú;ã=IȲuÜœ” -û9Ÿ*¥zÜcHa‚vïYéìnù$ǬÇc¾“¾8ö¢%ùµ sb.fžÍ àRyMª›’3$n 6ÇÚœÔ qa.³;¡}Ez³¾¦J+‘ž–çÓ‰¿%m:Pž×Z,!7½½ànâÓ|!lš2=7|{•\!ØæÕlµç··tbÇ\#ÏúÓQ=îüÚ¨Çfš–—ž€FGž…”-¢²]yš¥Ë[-DƒfTcÅ[÷³ù | 
+endstream endobj 1018 0 obj <</Contents 1019 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1019 0 obj <</Filter/FlateDecode/Length 2656>>stream
+H‰ìWmoÛÈþ+û‘,"f߸$"Òª†Šø.Ùè¹(™vÔÚ’#ɽë¿ïÌìòc9ŠÝ´Eï
+¿¥ñ_ÊßcÀ€S­—7!›G£Å@û¤Óƒè¢Y(ˆ·Ÿví+G+b² Gé„#i/ãŽ/]ÈDuÊŸžàÈÛ:ÒJvsÚ´^²â)MNÛ&g£&wyØöØœÅyôþ=¶²·Ô?#þ+ìã.N£=~Yo7"V&‚âÚºûR|
+Ý„p4‚QǼÏHtú¥Š"q¶qa!öüi·²ïˆÌŒ’{}¨öÕfÕËK›"ɾ%/oà±¼tæ’¶y:KìÑ´|óú~Њúù°ÜÜT_FÚDçߎ7ðX:ì6ö%Òc=jï”N«<E‡T¸*úglòè¾ËÍ•hûÖwâmçã\¬ ­I5p©¶½ƒëf£kúôß7+ü¬â"j||YíhL…TÏCmÚDÓQ¢ÞÜ(Ñ‹ên¹9¬ce£Õ^\U4VÈÕõ½¼ÝôLõ-|õ¤æìLbáf¹‚¼€¬ô毠u9ÑSƒñÈY‹c €Z&™ó¨*‹i›áw6FÓæàÂ%):ÄÌ ¡šºíòxà¸É*ë†e¿‰]ôy»^Å@âªC+œNpAaj(𗫧LÛŒr;åEظ=ïó/ë{\6wñ öÐæ°Ç8D¹o+öÑ®U|~F‚*¨=”;Hp¹ª®ÈZ·HhÀ$:ËñëUण©Û<Â3ÆŸq‰.Ð}k ¬k8+²Âf¡^³ÎOkæ¶ô²v‚š©×PsÈ>«ÙÇÀ5û88°ûô \RT-™Ê`_CV:1ÇÇkÇP>¢ Äf‚iëf¾YœÏ⎘9ÑþÐ[ý*Olà ›ÏËÏÎÄܱ‰…ý§˜U+p ÿŸBÐ -y
+…:ÈÞÅ b°šB \Sˆƒ…8PˆA¿ˆÜ`™ÌàCVj¬'Ë`58d»! üâ»ñ&0h Ôé(:C\®}Ÿ@20tv
+ud^Ü&¨Cs¯U)>矔8léœDPŠ™Â‹Yþ.ϯÏcm¢å/„8m´/·o+x…hcøñMGlæÏÐà„Ûö&ViUC,Ó\…®[ž«.wPì@
+ ‰Ì[®rXà*®²°ç*{®rèxÙjê
+¤ó±¢*IÐ[—A,¾¯Ñ(C*ÆZC+L´
+÷«‚…kiœ‚B@maP£‘5aܲš8…uWãhŸƒ^\|}El)öàª^—åÅ´sokäýÝ:âàÏ6^Ÿ¤¦&ü¡9ð÷¸¤š0Rë*4Âêªg“äÈ‚GdN]‘)IÎa5}¸f/ò2pà.ƒÖ’<…×,ž ÉU>·µOµBýSÓ–”8ö”ƒà ³®=½ '§§r<¯ŸOÓ8ü!îžU‡§zÈÔy’2:œÃA98”…=A9Ø”CÇ:ÜëXPí…s¬·9¹åa£Ã5PØm
+•xþ=•x_âü_’ÿoKòGTä‹èÚ)ù4};%½_Bèv•7+páGßO×öj8Ö·nJß⓼¾5™!ùë÷°¶IGpX˜¾¦/ ûéËÁ~úrh­l DY¥°æócò@·ÛRZVà—6K—î|!Îâ,ÚÅi´}¸ï)]Píê N›deàùd±iêÿ—›Øãx6…ŠL‰M«ÙÄÀ5›88°‰›t¼ËñžaTØp“šÒ¤Ìu5¥_å&ZÐÔ…E^Yä9¼ý'mr\§lð ùžeƒSϵ¸ÉØI ;lÂgÝÓ½É}Ò¾nW,¦¶"ž£"=ì1l0½Ä°`¥@¯)ÄÛÛjG«íz»Ÿð TRS%e$òNøÃ× ßض°i)®[Ê”È
++r¨ßYbtø×H ÷Òʢ߫ÿf‰‘NI ã4Ì`v)h•ÑûŸŸ¾×T»X0¬{Çýb`q¿X¸¿°@Zª03MjØÝ ea5»î—Ÿ ú<‡™ óÍÿCœ/i‚CS´‹þNŸ¾¶J'¸Ë¥Ÿ­ç~­ðåÈ~÷c#«G¾N}øÃÍòvQÒL½(ŸòÚWÓ¹ÙÙ`k4Ñù]Ž\µ§¥‡Ò,{Pà â çZ"'òpXàê°°g{âph-PUžÒ@iwT JÝرúTåY—Y :@Ìc-.>Š³ÝP¢ZEÕ a“¨}MIg.Ya:-Gñ¨Í_ZŽª"MòœçNÈ~JŽrXÍ®¹ÃÁ; ¸Ã c9êõ TðrTC\>–£™“C¡ Í¿« ¥¥õÚ[?§èQ#³gÓ£ý9÷\´—âIu(ýžU©R«NR¨ÿn¹×+ä ²¯-àKé¾® =Qîõ’|iÙWWd¬ûÜ”îÃ9&ùéëàA#­´…5*áÀlÏâlæN†œ:\­íÉ0¹¹ÃÚR”Î-âíá0×¹ÃÆÀ°­QHÀtCCŸ=[d¸}ë„Å~¶§ýNàÑöä¿
+endstream endobj 1020 0 obj <</Contents 1021 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1021 0 obj <</Filter/FlateDecode/Length 4039>>stream
+H‰´W[oÛÈþ+óHîBÌÜ8$_úà­a¨€ƒÔRS ë¢P,ÚQ7–ÉÎîþû~çÌI)q\ ©9<÷Û7s!ùoû Þ\ͤx؉7sõ)”˜ß‹¦²ÔüA#JW8)¨U-˜?ŠLäóÿ2‡òDºº,œiĤ.‹Z1_Šìr>›2Ãå\|¦±„W5´X°ëºPN( ábÛŠŠµ¸˜ÇÖlmIö¤Sóû¾‰^d°QKoã¯^ï|¹ÒY)¬¢ÿF¼÷E®2[Hq›åÊe:Ÿ¨LÒ¹¢·2ÿ÷üodðßar©uáêÞdsÒZ2t?€Ì}`]6 ñòËX¾ÒEs6"¦QTŽ(’ö6téF*
+ùE^Æ¡"­TìÊfÐR¿Ä¨ð†¤š«¼ÉÞÅÙ©l¬É©o)§r(§ê¨œHà±âwTJˆ°å1â+ýo©V¶y™íèeµY‹\™ ´]…Iq2÷©]Ðé®\ˆzp"X¨½…d—–ŠLÄ›)Í‘…µ)´% †·…É'Z‡ç”Ÿ×—ÐÛ„3~ÏOq½À™%³µË~ã§`{`; ”ܹ}››¨¸%™ã
+Ýu¡Åû#8´w}¼Ékk&y®_³‹é<W*³ùÍôí•7`%ô†R§¤ÕBÞ_Áu›Í¦ÿºDßÖ·9j[Ù`ú`]UÈ
+EàY:óig`‚¨*‰>QsøB¹? ZW#ƹ4¨†3¼–\ D­ˆ„ªtU”.bVJ²‚F'=¡c½ÚV<MqkËNtäÚî[mŒ.*ä6ÆN˜ØjÓ8r#ÉÜ ‘ÓÆR_…3Á=BXC·ØnY5ŽÂIAs³6ÞW¼~”kØ.…µ£Кœ83.TÙ•£<îE/j‰ä…7‹õC+.6Ïëe<|‘z7è&CN¨ÞŸ¹Ä*ÕˆH8|åZ褫o[ª{Z¼Œ-ؤ|þ´X/žhQbÈÅÓ×–ÕžÖïñÉó¦}
+}„0RûÄT»žä 6óyoóÐ rœ îòaµñDTÍQùPõðΖ íÔðëÃ#ËäšÿÈ]v¹Ã°,³ÍEËÿ·9¾¸k—~öiÔ¾öSû€¯+Ú>ÏbýüøT»›{"X0$í„Îûë¢û*>üÉcú‰?¶^#;¤»-% »Æ‡¶ŸÖdÌÍÛ_ ¨²u>Á’YðsŽ%¾ÅÖÉøç]>©iE‚0 [Õe»2ç†~¯ó u‚aÿž™>åUöœw|üs°Ž-=
+h]ÁvyG+ÕŒ'; 6+SS¼£j$N Ó·¦U5õQ­¦8G¨©Y8lÀÔTtu1q§ xˆœ ûVô­Û9ÒGıÓëË©¸ÚæJf›gœ|«]Ná_¶kü|ZQBíøÊѨœÅ§O¨Ð"1_ñ
+@„D✄µ,
+Útö;mõ:hX0\”"35v
+@F¨úå
+@ëÁë.³'e(%èuCÅ&j±@ÔÚ/ÏôÕ"7Ð]fÞ>­w›í¶%Ÿ1ïpÂÒùUˆCm\~PG}Å’pD±ý”¥2
+MŸªIpƒš¦ M3½¦¾œ¬6Û=¬’ Žtaª¾õ§—bA™Xvq°£˜‡P.9A8X= Ñ&†Ÿ‘‰¿.F!=âi#ž|ÞBPJVô$iÌB‘tN3˦PðÔèó~&Xq¶´½+'b û‚Õö84%€| êòžrë+hÿ
+&Ò[üͨ…Ã
+Ô¾tû†Ã·ßÒßú•ú;Vúû0QÑ-¥ôcóDAYÞš
+‹^VŠ‘‚Ò=N(+UÔ¶ƒ£€:ÍrU8ÄÉ1¤šhÀÙl¾¥±w×ÒÑ RÛ’1(œ.éÕw^xKÌ8ñôs·#Êf-¦$—Ö²ÔpÁâšñHÞ.žø+P×=Œ;܆ý2lNáž²T„³ƒ?ïh%1þÜ|Em½ðÂB‰P§¬Ö÷¡y,}„z$cÈ<DņŸ áёDzÞb€AØ®è³úô±ªbnú¿]<µ¡aù£N;ŸÌ6mYê]ËßrmþB»x¢Jm2ÿ=a®6XíMfEz¿ˆÆu-JÜ…*§„;wG;{åeyT#që >|ä1ôæ
+æak|om|KT%ßO:ÎZáØH¯—r 8º/BOÓ
+1.‰MeP¿)4ØQGÑ`Š5 ÁŽœ@ƒ)î€;r ¦¸=ì¨ 4˜döh°wz ¦¸G¨)4˜?ÆY&'0`õ?ÖË­9mˆÂÅÐi<X¾?vš<t¦M;múÔôÁ ¤ñLÀ ^þ}Ï®$[­IÀ/$pt[­¤ý%àeå
+ÅllY.ëʼ¨™/ɦˆ‹².Ó’¬×,©§"¦BáÆ1gÌrø~y
+jr
+‘ U6C1ð I³Yd›uI6Yd“uAõd=m³årÖST²—õ˜³~IY_ƒ@x iïxßsÊj·é,€pKý³¾–%v°°íœt”z¬‹8*Òƒ| ²$‘óG»åÊöù0ù4›A¶ùd“A6ùTO>T—DÎGB@móñ±Þî‚ÏÀ­W@›÷a"{ Í¬îiÿÛ€“ÖnîÌ6£~¤ê®·Ç%ÉÔ ò”φò”·ÈyŠ lj·!¥ò©^?%u5~ÊÊ‚Ÿ’z?eeÁOI½µŸ²ªà§ÄÎÚOµAûý”ÔÛ£J~Ê¥"¿ÍPŠÉoÀY•­³ÊœŒbœU)9+ó”PÓÇîÕØ7LIë Ò¡P¢Û0³K€c*]Çôˆ¯
+H:ùÃÖl¾ØUõÓbÔ«šš.7 l”öx °7âÞÏøxšwNŠ
+»¶ˆ+hT„qѾ„*ŽóÅœnš ¦Ý[­Í™ãÅÈki73† Ûp½cSVó'`²œhç‡z™N®qûßcSC®Î+J <c:/dØy…^à¼ìÎu^îÄ>çeçÇyõÃv^gFØ:/1Bí¼ì4ã8¯Þd‚ó:3°Öy‰‘ój'9æ¼8o)°`ûgtt %|(óS,˜w4 ÖöD öªTû-˜e]Ý# AzX«ú¢`Á†ûr‰÷ø¤,dS÷EYWvI6kÔCøSΙ–á/B­/\ †£6UÆSãÊñ¬ì`¼| ‹_]cœïT^>M•š\}Å×wì½n:ïFGÞz7ð€µoðêòV:ÓËçf$'¹¶w5%78YÕËçå[2ŒŽãqoÞèv¸:óm:=É\„Ë•ò/¹ìµÔå˜[†ax;%huæé@›ß@2“†9­rÎ×gðî~ƒÁ pEÀ«‚qAÿüD
+}ÅÓq7O©Â÷_©ÿ
+endstream endobj 1022 0 obj <</Contents 1023 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1023 0 obj <</Filter/FlateDecode/Length 4207>>stream
+H‰¬WÛnÛHý•~$Ó76I`0@f"^L<Y[Ù}ï.‰N´ˆ([’g¿ßSÕ¼ŠjÉŽÝÅ®K×éªS¿Î„ä¿ígñúݵŸwâõLýG
+%f·¢H¤L5PˆÔ%NJ#²B%FK'fk‰xö_Þ¡ü‰$Z&Îb’§I®Œ˜-E4]_ð†éLÜ SØʳV,¶ë<QN( åb[ŠŠJü:ë{Cºµ%Ý“ÆÌÿ†.z•µZzÿôvg×0+¥Â*ú5â~!‰Ud)n¢X¹HÇIZWô–Æÿšýþ;\NµN\ÞºlNzKŽwxMêñúÓ¾~¥“â쉘숡ôˆ!ioâž-]ÈDõŽ?ýC^Ç¡!cíÅØtV²â)IN»$g£$÷qØåؼ‹óèÃJ3¢·œ?#þ¢ß’ò¸ÓhG/«M%be"®m²/ÅÄüÝ×rN«»R0Ht—þÚOÝó³hýTŠü„Nx¬ØQœmë©ãcª=- ›*RI@ZK4ÑRÑï+rr/þ ñm<ä‚^+rl_n ž·pw¾(wˆAF³ØFúÿ¶±#k$·É]ÓsW“»ýS-\êü©ÐZwM‘׸{QAßrµ˜ïËô‹ýü_Š¹G"òk¢,9&ÉúMDŸj7âS)ö[¬/ŧo±†«Wq]b‹Œ~Ã[‚7SûËeW8ÇPÆ¥ø9‡•¶™\XE¥Š\.¦¯ßÁúvóp'.çë²ËUŠãЭ g=`ã#»^ËáHôn†*ŠÄÙÖŽE
+:ÈEE &å¸3ûÞg¢ÙFÌHà© ‹x²Õzû|tð~yà\l`¼‡›æ÷g#ºlý>—€Càtj‚ÜŠu#Ί¬ðº-ò1é}Ú¸Ò¡Ié#Hôâæä {°…d5ØBâlA±[HìÁ’Þƒ2OtÐDž%ùY ]‡µ|„5VHé€.Õbí—^óSŘm¨ÖÔضM…nݸôˆrÖWù¾ ß…¨Ü³ÈŽ"Š™z×m”¥“8€™"^Fûøc×ö )&ŠŽ}öGóóš Ý£?!å¯#.Úî—X¥=’€+”ÙìZ)ïæZ3Œqn\ƒ­YƒÖ€¸AkH\£5 ®Ñ 8Y¢³t\õrƒ˜)Ž§´‰Š·¾9U³Ñl¤x? ôVP•'9zr¸Šx ¸ceäÏhzùÖtô>Æ
+/ob]âW¬ê&ã¹ ž øî7\ƒ÷Û9ý.h­LoÿRŠ¿˜ á¯TÐp›mW“m{
+šg[¿6i»´Eк´vbU»€.¡hÅ%Ävö¬³™(#Á¦ybÛ‰…Îú˜”n29*´¡Ýu¡mÄ8.ÆÕ.´ûˆ4TíºNª{©EÛ–‡DŸnp5ÓhêYÆŒ
+óM`宬†C˜6QœF赜ŠPcbìr©ŸÄ*Ò€1R%1èwyi‰
+¾00¯åT`†JicDm9—·Ž+é±=«<v1*š»hòè®ój)º4xÝy këL¡¡:ÙØ–tuoùéß«=ËvXâi•C3oãE¥9¬é¢Ïn^Ý(Úër=¯P#ÑÁ;±ä±m· ü®îüòZ¥¨Ðê™øáHʲï}6G÷Ÿ¡0À¯NïuYG¾ÐUÐGÛ¹'$«ûmH\O.A±ŸMBâÚç€tÌÜtÚe9 27‹þºÒXÏð¢ndo*1eJÆ]s.ê8Ñy¡AÝŠ>¥ÓžÒù,¡£Ó¹zztq‰]L¶¦±‰Þ¡gÑïUÛK›¶Y_ú× øÕM$“Dÿ;FcÖr¢nâŽE1v0Îà,Ú -Pšl:´à ¿²6EfBüª‘ÒÌ”ö c!°2ZiÄhþº²*Ý55kÄ vˆ6H
+ì6Æ$A˜¾× ÎB› ž5Û  f£»Ø}Db…!~d£jæ‚&m¹ :Á­Ìi@pAÍ\T_ó06ˆp¥<Ú€
+fD ƒß<AÔ炶æ‚XnÈàì-ß•ÝdsÀ µj©O~Šš<kù/]CÜ劉 M4à‚9ÙœÀa‚‰öÄaðN–f$Ù~¶"IÅ­ƒ–‰ç:bŠi ¦ð6¤E”ܽñºøÂZé_Þø™ÁˆX%˜‘02Ñ÷˜aœWYn½/˜¶å=9Á~îGèŸ;îT‹¯¬p×G³C¿Hî}#Ú9f†èfþ#Y§A9í×'°ÎÆ…—²Î¾ác¬³±ócXç0ÌӬ󅶬3¡g™Ã:Ƭ󅵬3±ÎÖÈ9Öy–lBó‡“MƒâÓñ»ç‘Í&ÌF6‡Ñ~'Ù|V†“Í@r=0YŠ* Œ0@6OïM-³ä†Õ¹ŽDe5ƒ‰kŠ{×>¤GÈæÉ,7dÓ€ ì>ƒl2cü†oî¸ý¹¬8 œÜLSÎ)QÎÔSÞS{™Ù|óÖË 7nˆÂEG©È.DR¢¨‹ÇÎÁ†žÒKÛÝ 46ì•[øß÷͈¤¤¥FÛ{Iä‘Ôo¾Á$%84 §§2LœÖ¿ü#§Ê‡²WSÁ2¸
+€ƒçOôx­«¡ÄýoÓÓK¯ÚîS¶^SëYyÝž[õÚ”sÜJ' È­Fë³pdµ‹Îr«4Ôsk Ü*öÜ·J£{n Q[ÅÁ=·Æ¤ç¹U=}+·eŽpkÄV»€­ÚÕ ¶*ÆÖ67¤}ÐaKÌÚ2Ú  ªÈ­5~l#¶’ä‰òò'üø²Ýw4U`ׂn´LWk]uä§f ]µ­¦èÚ k &e´ó÷ØC¢§Á6 ‰0ˆ¿)—>CÃ/õ ÙzÐÜn²¿k_ ­â"̤w
+§ÜWh]k
+CP
+çÖØd3yÿXƒ­«¸qRhê¼qt¹pÃÚ¶=Ô¤rà'kÒ'ºÅÒ4)Ä‚&…pФöšÂ^“BtÆòR\‹¾Pqõ|¯²@9EýM}Ôúúbͺ¯Dç/‡Öaû ÛÒ‰=+ ‘ÝœS{Ÿýþ%»ºLLϧ4•2a°dr`Rzm@‰t9tóK.E{«\ÊoL9é6¼"„XP„ŠÂ^BØ+BˆÎ¸Ô">G›2w{°)>/v‘íCG¸œ‘“œã¸ðß—ÂŒMÅDݱ]mxH»{9 †©t ?x—“ðô©èül™
+endstream endobj 1024 0 obj <</Contents 1025 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1025 0 obj <</Filter/FlateDecode/Length 4206>>stream
+H‰¤W[oÛ:þ+|”°Ê›(é¥@Òf/NƒÛg÷¡-ª­¤ÞMìTvZôßï7CÝl™q¶EQ™ásý8—Ë…ü¯¾o®çRÜïÄ›…ú·J,îD‘H™j>PˆÔ%NJ#²B%FK'"ñâ?|Cù7ˆ´:Mœ)Ä$O“\±X‰èj1Ÿò…«…ø&La0ÏrH±¸®óD9¡$˜‹ºÿq¹jC¼µ%Þ“VÌC=ËFG-½Ž½ÜÅ"b¥£TXE¿FüÓo$±Šl"ŧ(V.ÒñDE’ö­Òøóâ¤ðŸP9Õ:qy§²yQ[RôÐ|ûH»hÒ8ÄóO‡ü•NŠ³1Ù Aé AÒ~Š²t!5pú ‚<cAZ™¡M€M/%+^ä´r6
+ò‡}ŒÍuœG··fXo9~F|§ßŠâXÇi´£Åz»±2œkÛèK1™Ï=T%íî*Á ÑÃð]9¢ãd¢a‹KaÒ9S›Â–˜‘%Ì,qÐ¥³dzõæ:΢zûü$nÊÇj¨J‹¤Ð
+g5EÌ38’‰A¼TQ$Îv",tÏ_÷*1›‘q·‡jWm–viS$ÙïØå¼d—Î\ÒOg‰=k–Þ¡â"åÌÊÍ}5e¤Mtþæx/™cÀ·ã/)‘ž‹Qÿ¦ô8qZå!z E±Ç£PÑÏØäÑS%ÊÍJôq;âyçc[¬mB“j`©å]ã¹Ù莿~½YÒ·Š‹¨“ñ ¹ÚqšjL=Ÿµé MG†zv#CçÕc¹Ù¯ce£åN¬*NKÂêúÉoo7…
+Ò´Íh"£ù ‡È…KÒðíFç
+‘ËÜÈ›b8‹QXä6*ôÿid™ ›‹¢¡ñ•§ê¬'·&ó>
+žo¥í¡è‚¹p(ïT.ä¬7ç¿j,¿SÐÖËê‰ð´y%;¨ý±†Xxì•d™>Þ”Jœ¦ôfÌ«ò›ËR4êa$¥h”‰dXQC´Ir‹¤¹AR€Ü )@=ñ"ûÖ[[ï.¿Ù”Æ^×ç7×ä7ãó²Ïm>7ñ>üíû̦òa*¢þ½þŽ¹aMÇ0E aŠ?¨ãmìÍâÅNÃ…£MVÖ¾:Y1²Å¤”]Ž»÷_NV® &«,œ¬(Xú…dÅ¥mc©èÈ ªÒTÑ—« ÑNKÆ“ÒÃy£hබ¬gKÎíá´Òâ7pÛ`¿§Â3ÔºEwèr‘Qà;£EVQ¡Û'¨ýÕ&þfœd GŽ¥¨S g9Iq׶o:Åq"¼s+©‘yr.䘥ÌsBsÕòI‹:´ø!Ä„Áâ<Jñ_Ü.Ð iÑìâ’Vºˆ¦ïE×Ü™^¤dĶmKX÷4³ƒrv$¾ÆY´Þ‰êF=R ë—Pöâ™^$-×ßhõŒ•'?à«¢ŸÔuŠõŠrmÍÄ;ØáWzTê'õÇmjÐi«7 ‰pr¼júÓäfxK·õRu¹Zoyõ¥*ëªæåùmKÉ£†Œ§²F"zF‚y@+\Ö⯫¤ÏEÇŽš4'ˆ
+U&ÚÜc*„Žš´õŠ¢ÛÞÇ“‚Vb~ꨧ –F4ÊCòŒ ¹‰uôŽƒ·%wÐþ_Wâ 3üI–7ᤳp5MXÄ“—ˆ\ÞÐƱdZÉz6{°´$SV^ì "Yls»ÀA¼šˆ¿oëÞݶŸO¨À6µu&3‚À»¸èµbÐà’óÿ’þ¸§’[ņw iïŽjíÕp‘cz,Á¤§¦;)í&dº1J|¤+J~æQͧ•jЀæ<ü«ö~0F˜Xnù—BÅ»´ {ïËš(ô ÍGƯ«§º¢ß,÷kf!<&#m`o*DÄ:¶þöéì¼êµï°ìG1düBê6-Õ ¤eóÆ/ÈË%¤O(%àaÞ’+·ôV×ÞžéÊ«µfOÞqk~¯Ÿ¢›93â»ÓOqÂ/ÁÚ‘Þkæ¼>ͨžÜë_tús’kôo$±Ü®ðzXÁÖ3}¶Åa“ñ}ÉÉu‡#ˆnö͵r¹ÜÖ+tëŒtƒÂÕ½°–¹½Û_½çØ4aéßbWÙì S]AÖèÃL…\™“ó.n§§Jâ ¿õµÍ öÚÒ2½"+Hk6'jÚ°”Lp+gêÇü3>ñ]\ו½Ÿ°Í$Ôð7]éKS•êkݸ«d~Ø·¶»¦`zõæq¨·ÏOâ¦|¬úÑ }qŠÊ®;Îjpzxô\ŽšcÈÁÈèl'ÇJšNϘªm@ó™y[ÃùÕ®Ú,,Ô¦ ~ò7-ô\^²PC@K´Óö¬M,Lj•<6+7÷Õ@ ‘Ô÷ÿ®ažËK†4»‰ñélÜú'£Çò¬òØ=Æ(=anM=U¨p+чñPˆç ²¶‰æ¡Ìµ¨4Ù莿~½Yú>ª¾H‹NNõhAÓ{ÎØA‚HGÊxv#kçÕc¹AþEš[îĪ¢,½[~×O~…g€áÍ¿ú?1| ‡g u(Ê~´y†ag4ÚGc¦‹^¾ëhrh'*I™ 2C´fŠ ‘›11Höƒ`ˆÜè 6ÞÔC´uiWÓ®cŸ"Èi6˜‹Pç[Ac×ô=ƒÛMaêÌŠ¶†| Ž„÷]¢›]™®ë¦˜Ë)³óÅlzs=Eúg0ñͲó>Eóÿ±^v=ë@þ+¹LŽ¶Qì|ö’eË
+‰"Dáf:R·Í)•*
+máˆÞ$¡vÙÒ\ì†f<¶ÇžÌûÌå¯ÑCX=DQ «hx'8Z3V­f4‰ÑÜžŽ›×æŒTÇœ¢ !«@E¤^Ò:óÝ{\a£7ÆŒ¾S¶“ʤ†Ç[f¼Oc®²nJšÌñx§i7V‘¶wmòÊç<,éÛ´A§éÞ·âñvXW”šM ·'åþ¤#*¸ª¦9!@ëûnerCB
+ø9“Q’¤<jŒ()Q_L.cSú‰¸D½,TW AˆáEDÍù/_!¾ïÌ8WS~Öd
+Ω xzã †?9®ðoº°ø{©ÒÊI^¨oÎsZÑX%yÂ|óålº«USÈÍØ0¬M÷U¶5EdÜÔ/¯LÂxÃ`Í_,º
+IíÀ
+ÞHQØ
+Î踹¦6æ–Äœ&x…g¢’½Å ;'õ‰¡á"qˆúÈ#/>¡¾qÞKÑËž†÷ÆߣAŽ'?úM7èõ&õæ ®Ë™šبˆ‘&bWš­ž¿áR@ì$&cšäyØ·»åzAò4Û-ßx/wðHÃñÏK²}£sxÂ5+Zð©Æ#/Í»y41\ÞD€è˜àsµCˆKÀƒÎÈi>Wëm»•#³x™7å#×m_sMYˆùËð:@øØøË+ <ÝNG™S”‚µî-(ô:’á9ž1¿±ü¿
+endstream endobj 1026 0 obj <</Contents 1027 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1027 0 obj <</Filter/FlateDecode/Length 4285>>stream
+H‰ìWmoÛÈþ+ûqY@̾qIÅÏ\À®k é‡äP0í¸°IG’Óäßwfv¹$E®äÄ
+Åád†ÃyÛ™yž·+&è¿í{ón)ØÝŽ½YÉ
+&Ùê–•©™¢J–ÙÔ
+¡Y^ÊT+aÙê‘q–¬þEÒiÐ@Ñš©,µºd‹"K ©ÙjÃøùjyA
+ç+ö…éÒ¤`</À‹uU¤Ò2)À8ÛÖì¬aoWÃhж2h{ѹù÷8DgÒǨ„‹ñƒó»Z‚‹D*ž1#ñ¯fïÝ‹4‘ܤ‚}䉴\% ɾ—ø”%¬þŠÿBΔJmBÖG£Å@ÇHÚÑñ…?g?Ú—*-OžˆÎge3Ž„ù˜ |©R¤rpüÙO8r6)i†9AÛô^òò%EÎú"ç“"û°¯±~—üúË ÙªŸf_ñouÜ&ßáÃ}Û°Dj‡kºê vbúî¡®ðí®fÔ$jX~讪cEª ›AJ§R‘”
+e¢'™=ÌÄB,!“‹ó7ï’œoÛç'vU=ÖÃdV¦¥
+!œŒ`R1gàÀ'gƒzɲL­ . Ä^¼ìVŽ‘™Ir×X‡zW7ëQ^J—iþš¼œcy©Ü¦}ñTžš“i¹âý qèç¦jîê/-LªŠW¤ã KGƒÝ`_à =U£þN©éà4Òµèa+²=\
+É¿'ºàO5«š ëë6vâlÓ\Œñ¥ÉôRg{ ×Íð[úuÏÍë¤äÁǘՖƔOõô<TºO4›$êÌM]ÖU³¿O¤áëÛÔ4ÖØ«÷OîuÛŒLùš~u„ŠØêÔÀ%Ì r yA³Ò˜¿=[@q¦a0žÐ58¼P‰4·N*K•)“ãsL¬µ¢+—6ÍâÚ>æˆô ³%Ž¡n¹y¡ÐÖ©F(C#H9i2ˆ}
+âè—Ò—çz·Gpâb@ßjÐYJ“ÂveûÁV@fÚ}iSˆâóX,ˆU'Î˼t}jàôƒO»¶ì{ǘ™¾óbÀq¡ï[+"ëZ+"îZ+&ö­ûÖŠH})Õ ”4)¡¹„üzXJ˜ÿÒb)e‰‹À—ò·Õe¢ǽ}Óœ]†16¨Á¨~KC…ƒEY¨Ai$Û·täô¹ lÕ5€ˆ~—~L¤àÕ·¦m±Uo!
+7ì·DAµ-ŽQÍŸ‰ Â(%ùa|Ê&åW˜ë÷ÉBqV(âÓu¢qŽBån®Î’Eç»0E&9DÆ9!erL^è‰5mÊÚ[Èl&€àdÏ–ÎÇWœýNZ“p:(®ö„[*A°^¹aŸ+ ¼&)½oéý¾¦˜öì¶Ý¦,L~wg)3" °0¡ôÝ&À©þ¾zx®ÙýŽ,÷ƒ©n3¼Hñ©Žc0¬c‰ŸÌHñ6j53š#ÚÝhöb8±œ™íé+æ£2WNÀõ« gŒ¤ p
+|”û€Þµý#%´ÒSÑÒà*Í€ÅZ€¿ö$éÃ3¡¡D3IOfÙó«RÐг¹8ƒ0rÛ>?±«ê±m¶ ùQáE´SL7*Y9p<Úq²Lj‚#|½hÍÍx#[“4¯sÖ»ºY2TÀðòWgè¬ËPŽïk©NñI·VTÄÚ“ o*œ³ÍÝ(=8
+<¥ 3>Ž;3@:lqÜÕÐa¸Ê ­ÃÂÆRÃÐÐ|{Wïiù ¤Ge¦ßµ= d¼þNKPØ`(lvØê¸ÙÁ–kq•g¸Êñ®óÜ76Y+éº
+{À[3‚„ážQZ³üýÇ„=ùÓ”|»ï°µsÙÖxt|ÿ¹î
+p·ø ' =MHA¾0QR``¯¡˜Þ5'’*Ç»Ûk☘ÕýÓË
+šC¿5)¢Š^>@ Œ!x\@
+g›í+ú{‡oH“M'¼ÉÈ’ê¯ãMFá ïŠðÞÔ…ðZÞ4t<Ç›:?¿†7Ó<Λ^™aàMÑ oêÜÀ06'ôµŒÓ¦‘³›ª¹›a2¯L,0™hbÈd‚“_Çd{ô—3#ÁS˜D?Ædº|“gû“Læ‡J=Ïd"UöPB•Ä”fÙH'Œ0™ãº¢€ÁÔS€=D‰È:wP#&öx""ö1G¤S&ã›ÍÇ‘1¢Û“nó )KGd–-ne¢8¸†áùÿDæ¿Idê˜È¬*â1]ù<ÁJXꂸèËIŒýßå0xŒˆrmáJª KD>3ÒYóÖË®7uÃ%Ú+"mQl'Žsy¤¢ÒÙÕªÒ9W½A¶Hº*õßïÌØŽIiá’ŒÇöØcÏór®NÉx3£d8o'f¼™3œ·Õ3ÞÊèÖÙJš6èqIÃyX¿¯jT .§T ÝI d„‘¢FIÝŽ‹Ev¹_ï ÃÏÔ1IJ
+çw½ÃD"³Þ‚µùÀüW mÎK3¤¡¤+
+¤Þyˆ-a÷`iû52<´Ja&+û$It^9~îÝÚ“ŸV£htÙÒv”<Ôoø|°ê ®²ÆJ«aÈõÛm yÐe 7››AmÛÚa’_‹?ÂTÞÝȳtë™I˜Ùœˆ i
+ªq·Ò˜ˆ«.~
+׊‹xà1qáǹ¸è†9-.®Œ°l„V\øan#.:ƒ1ââÊÀZqÁ¦°¶DãÜ@_‹cý4½™¾(„[¿²Ä]û¢¾X5|¸WË ì­¿—ß‘Õü‹IÜSÕpu!¡$Â¥?®¼‘QÓ¾eãꂳ94àÌ®ösæ–gÂìæÌX‡êBê°Éf¨/pq±Þ·–ª)‚è¦N~#ìûº
+\ðqŒ””»wDŽÿ‚ÄEZCÕˆ¿kÏb„oôÞ­’Y¦DYÕì Ué¡=]À…ü–EU´° lù’JP£Awb‡E\C¤ç)Ôa¨/hD`‘1pgòÓÁ$þÆ@¹¤‚‚¯O‡16Våà*(Ù储z ×>œà&E ? @á(âë ~¯“7˜R´¢ÇúípD35Æ&Ïø“´¯h«S‰Œ ×Î;~Z!ã'+º*¨Í†íÆ6zÅû÷-ŸaoCÇÉÞeüvìÏlGû Øk×ñ¡už#¥G ;R**7€àÂ~p¹+}ëŒuSø.S/½Ç Øsî†9 ÁWFØB0¡…`?Ìm ¸3ÁWÖB0˜Ê5Ö?Ž¹€G§ÔU08ÿÑhEG%?Ãà⳨Š2Ú®üs¬/ÂVŽŒWw ®`¸8B}uÔ—\4”mì®ßûÃ¥P/ãP•=»=š—ÃѼBš¿¯OXÍÖt-"ÎQþ‹;@ùáÁ裼0
+²†ÁqoDdSº!0“ig k GYq…3;*ã̈]†ïÜgöófÌ#<ßg.Ï;±$·ZÒAÀ¦:¹ÝcÙ{&pùñŠLsÞ71€æ…þ*Í/‘æ-¸§jöWjèÿÁ2¼ºš'-ÊË2Fù¬‹òF«ªÂùUÕŸ2+æõ,8« WÉU {-“¨˜àÆöL’`¨j¶Ù® «’æÿëd .üDî¡›ÕëáŒÍöMrxÂ.‘PYlPÁæ`B°ŸÒ;…dP„ƒ2Nš‘tuæ\@) »%¶“ŒÙ'$cö ɘ}B2fŸŒy$!ödŸ(N´ex&!—ôÜÔÇwH¼ Ð(-å•iY^ž–Š²A_›•úÛI)#â®hV~F÷$yiåpNûçÄþãÒÊ%'Øßv:Ì«`'ÕOõš@x¿¡<ž‡ØBç‚n.‡3À¹Ì%
+äN¡Ç¬ˆJÇ7²OqÆͺµ‚BñÈþ
+endstream endobj 1028 0 obj <</Contents 1029 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R/T1_5 1462 0 R/T3_0 1479 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1029 0 obj <</Filter/FlateDecode/Length 5170>>stream
+H‰ÄWmoÛFþ+ûqYD̾“ür@ê>7µ•EX™²u(G¢[äßßÌìòMÔÊNƒÃÁ0Iq¸ó¶Ï33ûóœ úÛݳ×7‚ÝïÙë¹ü·`’Í—¬H…°Š>(˜u©B³¬©V±ù†q–ÌÿC+¤_!`ŠLÙÔé‚Ír›æR³ùãçó›KZp>g_™.L
+ʳ¬X®òT:&(g»ŠýÆjöó|è êVuÏZ3]ô*ƒJx?{»ó0‘HÅ-3ïš}ò/ÒDr“
+vËé¸Jf’ |/ñÉ&_æÿB‡—­R©Ë;—õIoÑÑqiõw|âõÛ¡~©ÒâÙŒèìˆ!{Ä0·ÉÀ–*D*é·Ã×qhHI;Œ `Ó[ÉŠ—l²í79›lò‡ýë‹$ç>à6Cô†öO³?ñ^á>îË÷ø°ÚÖ,‘šCrM»û‚]ƒ˜¾[W%¾ÝWŒ@¢úí~ª~‚Nx’ä(ä¶óÔQš‚§EªÀ¦ä2Í“‚køgÉL Yðwå¾aŸVè)^üªºciù<™9Ž^¾¹‚ ;ÃwÞaø‰ÿì²UËdVð­À¼If†— jÛ‚´&cF¢‘(Œd˜ðÂYçŽì"ÑEª] ø‰|
+N‡³Ï0¸—ŒPÊ¡ 8u4¯œï÷«ûºŠ#6’/Ty«“|)ÓcÔi
+jŒv0V`òè¡,„‚ÌÍ@l¡GäϬØ׃P lQ$•
+8Ì›‡UÍ>Bö(škxx“@CLf° 8ã/`Ô#ûd¦ùj&š}oÈWé-Aã*ÐÔü'°°Mf–/q»¾:›]¾%ßK|[ãåçúñû}2LΤ\‘Ú»j¹"‡`˜[á\^clŽ¸Ç?ì³Æû*>½ÞöK—ZH•IiS§LÌëL—8ÜJX‰ŸŒ˜·L‰Ó#â–éq`zDÚ2=&öLHÔÒŽérÊônè‚ä¹þ´ø…ƒ]pãp€ÎðH /
+-€õYËz›f“†r~õ‘¢Ð—?‡ù GpRsþö–ozüØ?Þ3¬¶#j,»í+¶!Ñ㣄§N‹êQ(z.«M³Åo_±[ØK¬CˆõgN©ú¡RUhoù-%+.€¹º£¶,5JØ(~¶â þHžg% •ìAË¢ðIâØ•¸QìZhu…
+› “£ÈG؉v£bݘ8`7&öØIv£bÂnL:ÆîQœÚ¬ÀA=à”¶ƒj䦂
+i¡¿ÀÖÜ4% @ía’@b{dH.k†=í X:ãˤ1 aÐØ
+›Ã"`E`‚à¶v÷/\èˆRšéàu†ƒUE
+§4Èÿ à*GãPv…±Ïa?ÇYîâüú Í½¤þˆÿ{oÂߨDï¯a°—âDUíÅÿ´:úÁ2E¥.^”DJ_AùÊtQ¤Ö1“k¨PjŸÝQð7V·´vDF\óZ
+«ÕÐtàelñTÚ/ ¤ÕÓª[8(×ÄTxD“ŽÈj!IbXwÿËzùtµŽ#Qü«xéôéäYòŸØK¦YÀaf1½‰™—3¤“ðæðíçÞ’d;¶`\–ª$U©~·Uó¬ªÉL§±’™pVÕ<:A€®èY{¬„ˆºN¤¶‡:REx:þÎ_ÓàO(©süW«Åç³½´IÅvà(¡¹šÃâÆG!¥óšÞ†èŠ?Y€tµ ˜Ëg<‘ª¢ðe cû¸â7{†Åå¿*:÷¹ —ÿ'W…tK±ð›Æ¿Û ~lfòîm uH×ëÙB@Ýúu`g-·ÁBÍ@ …7¶(‰G.ZëQZ¸+r3›ÿ·Üï¸cœNñšÂŽ—ÁõwrÛõÔ„:á?g¤)yÌ/›í_þÂÏWË‚RÖ¬JgòfOéÉÉ‚9%åFépC
+XËÐDÌ 1µ`'1ÎåvL¸ò’Édòr¾_þ’5,-Çá÷h-®…”%”oR¶29fŽ$Að1ƒ/Ä˲6Nÿu#‡pCNhÖ²Þ¯çëgný,?p¡åªVÆO)²ÇÜ·EùdR)ÇŒ}áB…«;!·)“HSÉi)$ îSüUÉ« f©"á]£f¸º“ˆ`uŒ¥X‹ª¨d*¤<VU]߃ï¾]"öíúuS¹ý«˜ÔUyF ³ú=gÛqm&ëø¾™1O^ø«<ð¢^uåû“
+J`É#È,Þ\ÜüSªôz £ðbr&½õŽ“^ühè.]ë.î^S >„¯«¹®vûN;>ïÍlÙÁ–Œbû)p2PYø{í&‘Þw÷ìóõ ƒØ H«‰å C¹`I5x¨EÑ2CÓÃh4zðÑ…âV“#I@û£¬ÞžJìÅi…ÓS!Öe8%›mà|S½m+…OÚÔ.R#ž¡°ñ3·…‹+!Ïh«×œ9OK×U˜g4[m‹‚jÈ5[žÁ‰RÁJGÝûÄ3²Çê“[>-¢ {LdIc†²Rù1‘¥qΨà^‘E² (§¦—Á@¤ÖÕ¢ê3«&iŠ;VÇD”XÔQT3л
+ ”;7§òg(ÿâÂ*(÷.ÌByåçtPÞNÓ“C¹VcžÚg Ü-÷dP~¸ØÏAù‡ÎºÊ=ÇlÀ@ÇY ©m¦pF”«RFM¿ …
+8|6K>³EŸÙBÏlcöX{ \åUßÌ:‡ìð©6Ê*xŽ~ŒN $¶´›ŒÔØöŸðZöU¤^þý~u'Íez7¹º¹¬‘2*ªP0 09äÞéÕ¿/‚‡P¤ËÄC—nH /¹1QîÅKUÄBŸfß?é±öâ¥o¨ÅKgöà¥o´ÅKgöà¥o´ÁKgõà¥o°ÁËzÍ]¼ôì±~/Vš'Çð2«/§ü_*Ùð~¾Ìä~
+YN_yMe‚@%Ÿ‚[2k|õ4byf+ÆeW?̤ñÓZ¾žàÿ³»o®ˆmcÜ+~зß6nú5'pÿìß:<‹E©T7Z€gâ´BpìÏÖ”lIÓ#€Œ=¨¡qJæ|EH|Øa `Fy0Þn ’.ŸËàŠåGOÄ¢ç•2”:̵›ßŒ» > žøèÑNÎØ$ ‰ÿ!¯±6$Ùoâ2šöñ›=„ÏÊUn¨\ ù¿#3í²ö°Üã
+'£ÓðµdéjàÏ?g´¯ÄZ>ûÕpÛˆ( [YÃÞ‰¥Ü~‹ÝÂ^›…˜™ÌkäÔô¼…¡q$gžÈs¤ä˜ïÅe’Ë›¿äŸÏ?ÖJ%)¤êIdJjÞ«(®n¯wdJ§&„ÏÊ™¥å¸O¦8?§‘)‡Ë<.S¾¸ÂJ¦xWhdŠss™ràÌ#S¾¸°J¦xfeJåçt2¥¦'—) €ô3*%®óå2%n'ÎçdJüÁ,îè”N¢@1ʧ5œ‘ìg-cpǃBã~‚1>«…S•ð™{g¶té±Ú=ÖC™RßEæ{eŠhÀ\c¢hlD‡Ô"Ç”r䘧%ñíM¥B¸˜gRðî7Œ’ÄèŠÈC$å߯Âqg‘9 Ä-Л["MGØYÑ0GYJ=’ØÎ}  ÅEž„Wìk7,‚» vÁKù=©‘¡\©0—qœ ¸‰À±#fL^j¡¬©…€_™®Ý¶tPò¼'•Œ5ãïSAÖH”5ó̦’g,­™3‚`UÓ«Í3ÏP«¬ 9Ô&¡g(P\ÅÔ”|6C=Cü©qm’óŒí±~T
+endstream endobj 1030 0 obj <</Contents 1031 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1031 0 obj <</Filter/FlateDecode/Length 3836>>stream
+H‰¬—]oÛ:†ÿ
+/¥E­Š”HI7 ´©Ñf¦ÝØíÛ,[i}Ø©í¦È¿ßw†¤,Ë¢“ÔFQÛшóAgžy;)ÿ[}¯ßRñ}-^åÿR!ÅøFTIšjÅ/TB›Ä¤i&ŠJ&™J߉HÄã¿y…´+R¬ ÑT(˜¬ƒR'¥ÌÄx&¢áxtÎ †cñSdUž@yQÂJŽåªL¤2…r±ªÅÄB¼·½!Ý*'Ýoæ÷®‹V¥óQ¥ÖÇoÖîx±T‘¹¤ïL|µ’XFy’Š«(–&Rñ@F)=—ôKÇÿEÿ.k¥S6.g½%Gw7Ww¼‹nC¬~ÝÖ/UR=¹#YÑcH÷Jó«¸eKUi"[Û¯ÿÀÕÑ5¤¤iÇ„´i¬èìg,ËýˆZ¹·=×ì}\DŸ?ÓÑ"âöAÉ´J
+ÓÚȧ·Q6‰EÙÚI,«oÏ<–Y„×軦tYÅ&ZÓùr!Xª~‹’,—ó{·õ„ž®k!é[mw®©®k*Ie¡É3¨LÓB²k8Áfo †s­JLÊH&e\Eþ‹Yÿz†ú/b•Ê*ZÞ×äó/làâ<Öy®RUE÷Ë5;I¯oñQ ö“üˬö&jr]ÍíÖUF»u”Á‡Y•dÆ{8Æ>˜èŒÏ×b¾ˆ&ºÁy.éÇ
+²"º‹áàd3çG ò¹¾¥ÝË!)"û‹o4à/…ýä‡qMKcYFbƒG’íÔâ,”рذVqïÌikøÜ™q”œ
+•LR`*M
+ÞxT³oP7YÄ00§ÏÙ<TÑ”¼å‡›øœÀ‘%ÿ_†bÂ.òËp¤€pc²bk:"úʾ’ðŒ\Ä2…ÎûÉõmŸ#?E‰¤…,8¹Æדwª9¢t?»IŸ¬ZÉ}>|M÷kµüu/.&wõÎýÊ‹$ߺð¤l|ÿV±–ŽáH´Š‡, *ÞNŽ
+¼ƒ!¦ˆqMzo)‚úÕ•J5pTg‚S©©@*ÉÒbë5m› Rõe‹Mø÷‰”Iüî“J¤±I³Ø¥Rhµ,ªF†SSíuiZJâbkÙÈ]Ã. ƒ«!Þêvš¶i—£¡Å$Þ š
+ÚþÝ nYx»ØexægÄ~Ø3àmºcbëZ(³-€å®5Yᦽ}®-9ÛL²¸=šnŽè¿ø€ODXç‹ì”×òmsGº$+¥Mr™—úÉi¨¯wHV;’Õd‹dãØ""±ãXÍ‚zA™a×5“kAäZXrU¬·k^ü ¿V§µ¸¼`r<c’-˜dÉž3üÐ0¬ò!i†s•'•2¾
+ÌgŠm,
+lD}±Ö/ãAAû ¢‹W¢N¾CqòJ¸I©ˆ&t+ÉúŒ•òúüi}ü·ý¹²ü„×gl™6Ì>›¢—Ñ#RóŠÆ±fÕ··Ö=ç6‚f%â¾ùÉZnl`Î毴eLìJÅDPvëØ[Þ¥EsztPF59jk”v5ê»QFo“VyR–`ÉüDÃë£tPæ¹Ãp¯R ÐÿYAÇæî\VU<ÞÄ æ²]C¬f/¸ÐH–)—Up(.U˜d{x/˜Æví–´k§;ˆe)ÒáX‡ÂÉP{ýÇ`¹´)ÚMÅ?À:ºsw4h`Ïâe³/jB=zøú?ëUÓœ6 DÿŠŽ¦S$Ù2>’ÆÓé!=0pj.xB˜šôß÷½•mŒ'é4,¼^iWûõž·áÜÑ&_˜BúòÕo06}VÊ´6¾D N…]Èc1­ßÑÕó(0
+´%Ê:D¹ÛXùƒ<N¸¨2..Ð9Aä ‹éÀ
+€åÔÿ¤Û,9ëÌzÎùŒ³Mp&f“Í¢›€Äa«¸ h‹WìñrÎ-ƒ!5Œ‰r'Ð\´‡5¬‡Îˆ5
+endstream endobj 1032 0 obj <</Contents 1033 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1033 0 obj <</Filter/FlateDecode/Length 4351>>stream
+H‰ÔWÛrÛÈý•yR&<7 €}H•l«§²^G¢’k+‘Ä Ò$µ^ÿ}N÷àJ¢bÙ[*‘C4¦/Ó—sæÍTHþÛÞ‹×WRÜïÄë©úJLïDIk~!±‹œ”F$™ŠŒ–NLW"áô7Þ¡ü‰$š GÎdb’ÆQªŒ˜ÎEp>½zÏΧâ³0™ <IaÅb»N#å„’P.¶…ø·(Å›i×Ò­-éžÔf¾ô]ô*+µô>~òv§W0*ÄÂ*ú6â_þAªÀFRÜ¡r'*ô\Ñ*þþ'\ŽµŽ\Ú¸lžô–í ï>ð.˜TâõÇ]ýJGÙÉ1ÉCñCÒÞ„[:“‘êü †¼ŽCCZ%ݘP6­•${N’ã6ÉÉ ÉÝ:lsl.Â4øø‘ÒŒè-çψßé» <nÃ8ØÑb±.E¨L€Ãµuö¥¸„˜ß[9=Ý‚‹DwÓêJ‘'#X\ŒN…¢8ŽÄ "a}‰ƒ/M$ïÏ__„I°]?nć|Ut=PqeºqᤃŒy6ÑɗʲÈÙÆ„…ïéóº²oˆÕ ‚ûHy(vE9ëÅ¥M%/‰Ë+x*.¸¨MžN"{2,Ÿ¼¾Ò"í\æå}ѱe¤tú‚p¼‚§Â1ÐÛè—4HOå¨í)=œVù=,E±GS¨àkhÒ`Sˆ¼œ‹6o}#^w:ŒÅÚ*5±F-Õº·h7Üñ§_—3ú,Â,hl|Ƭv<¦ªPOÏCmÚ@ãA ^Ý Ð«b•—ûE¨l0Û‰yÁ#`FµºØøÇ벘ê%õêH=–`g"‹&L$¹B\(Vþ€ú»¡u)œèˆcƒÁxb¯¥1P µŒç¥*S£2mZ‰ÑÜÂcâÌEñøîÊçégá2C º\A®¤{ÆT2ª©5¾¬‘
+¥¯›ª¼]pÚ@œ…* îï·ø]ÜçûBüœÿBˆƒÕãêD ¸zäÓX³j$°½¶úf±—9Uÿ¾-Ò«½^D«ï$ÊF
+)«ï¶¢x/Λ.L¾ hÞ“¤]%G[&È™“]­Ÿèj™u:£êêè§Á|Óù¦†÷.«³cúÄ”æÃb'@$%exî;é¡_;± ï¢=FÛmŸ“ .AYÊÇ’.yU0–
+fNßb•£Xl°X=ÒÏ•(ý÷-õcÒí݃*í5ðúNÜ.öäóŽÒ+æì›/Ÿß©¥‹-»=§Gâö+w9Õð”ŒÑ8t|8:,ºJ,j¿&M‚ð¦ÚíªÝ.ÀY ÊÅ?ØÎB"î‚ýùA0Ó¿@ã¦Ø.Öì®@‚ïöšV¯|4ü”cáÕ¼˜óe¨ŠeÿPzÎêçÛ|Ï™Ãå‰Ç´ä×ÙäÆO=x@S4®§hNÂåR”y§ˆz§_®iàf¸þ4ÍSÊ^±Ý±“‹ÊvYˆ¦£S™­œÏ˜¢›@o&æó¦Óö™7íÈt;Êe÷/;ð6ÂgX¹Þ>‹*|ídJÉe…fh§FÖL ŸÈ-.G¬†qq
+d`T˜p¿Ä4\ðÐßÙs ,F2 wXõF ½¸OTáqç[ܵp’^Ëõ9&0fé&ßî³G<[Òû[œ– ®0."v¶³©Ž¬6¢i\B'€V©ú”d2€HRÇG„rjÙÎûó×ð`»~܈-ê~FÆ3êÖÚ¾JO¢|K€zv½¢ÃA¾*¨kc¯c,>ëˆ%ÖrhItí¤ µ^s¨ðûd\^շƺúq‹À-gE÷85¦~q„^ËSjGܸ±ƒ÷íÉU<buZ»ÌËûnî4&súâÀHÉauö3Ä®5#Á=Of®f9$ÿ¬ïX?P×b} M
+z#ˆ; بì°Q9R÷ÆdÕéiÀ«® €Èa†Üñ§_—3ž*ÍÍÀslÄ–¶õ‚w*Ø–†ÈxÈYÝ Ú«b•—Ä«l0Û‰yÁ\aF¼ØøÇë²[űt]¯ž•ìž^Áxž‘W„jqtN°®/4ò[1ÚÛc
+Î?\s—²ÁóË3ÆÎ)i<wHž) e™îÓÃþ ÷&X|Y¯¯˜—·¹âZù{ óúÎÛ7ZÆ7!±vQ™lA9§Á¤tfÚ
+®2ö \Ù8Z£&EÖŒFŒÝ1é ûÛ­’¬‘ ø¹/ï±­$NZË ç=~í‹l3‰1”jqÈë‘sn±Íƒ#7€uýMCcôTˆÇü¯5ˆ*•OpwÅ(4BÙÍ”]2eOƒj?"ëoC¡ ®–Xп8›ÍŠÝ}k̉ÌÒ‚¶4ÕÃH}ÁçéF§<È´O'.Ž‘qCkZÙv'p/ß/øQ‰+.Oƒ& üŠƒÊó\ õœÞõ?‰ØïˆÐ;(©
+$Œ‚Ÿ0)ÐHo¤žÔPCzx[YîbÒu•J[†¢É誶A—j”åËÝЪ¹>“[Í vÿn¯…êÏêƒ556e{/ºêJ>í(º©é85e †ÎÄjc:ö«bÚ…Ä÷Ï5pªAN ¨¶s>B²½}ù‹7º™\ÌŸ ‚´?¬D†JzðáŽÐ;`Z.Ò†Z\"[­ ¾L¶DM¸_eO¯2ÍÓ–’w•m׬ÍhM¥¡›¸ˆ{QH*j
+mødšWyÆW¯µúÍÿ)?i¬ 4ꈲȦüS„vÕZÕ*œ‡…%ú%¼‰?RêÀ:ð‹'ÞS–ÄÏs¤:°ŽûÛUR¹Ü¡órh‡º$ÈùiŽSeËt½É†
+Õ¢>zcâåÐÆŒjØ»yŽ— â0¦Ÿ&´Áés4ÎÐ Þ*ò*JÊ£e½ sòÝ2!+ÅdBž( Ñg.EߪºÁÇ€FßXTõÁ¨š vxpEÄ ,^u4WK8˜µ)%ÆÇÌ°à˜Ù`EÅøh¿îóP&”¡·C™Ð*S$M¿P  ¡yívÙ…¨t›Í#¸ïû)îØVÆ!bÐ5 ¨Ä&æ (’ˆHˆR_áñŠ¾Ïاä*›u——°žƒ±8ïw¾‰‡PŒd‡J:fåÅÃìüï³_À½©æ°Ò¡'Øy«ît”À TÄiçåŠîÀHutìj¹YÐÐw;2‚‚
+îé.ZdrM 0ùU~cØâ\Ñâ˜L  Þ®Å'wv ”zÙÊÓ›U´l–m‚KÊ&úÜ
+æaÌ| ¼Áÿ4ûvR9äYoèù @Ãæ
+endstream endobj 1034 0 obj <</Contents 1035 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1035 0 obj <</Filter/FlateDecode/Length 3576>>stream
+H‰¤WioÛHý+ý‘\D »›çÇLld½@Ž±4»À&Á‚¦(™ YT(:™üû­WÝM¶.Û;a‰bW×}¼úm!bþë×âõ»y,Ö{ñz!ÿ )+QFqœ*&(EšEYk‘—2Ò*ÎÄâA"\ü—oHs#¦8ª…J£L—bV¤Q!µX,Ep½˜ßð…ë…ø&t™DÄ</HJB×UÉLȘ˜‹¾ÿ[ñÛÂ×¼UÞ3'æÇ¡Š†¥ÕQÅFÇÏFîbN"B©‚T$ßZüÓ¼ˆB$Q,¾¡ÌÎdã½ÄS~]ü
+ÿN*§JEY1ª¬ŸÔŠ:oi̬C ÿÔç/UT>럔ž'_BO–*ãHzîOÿ‚ ÃãX’…o¥Í$%/_ät
+r~d?§ëwa|ú„0“õ ÇO‹ïønÇ>Lƒ=Ún+B©rn⢋[:fºMSáí¾œ$j
+¿ÕSyz–œèQ,sV“X’Â’õ$׎Šfì%«h))•aIéUâ}˜ó›ùéðþË„,}ì}ã“Âø¤ÌÒÌøi2JÓe¤3'mA6Éà>”qЈÝ#¾û]·súÙ­`¡H¤%'Fð(®F:ÿy„¬ŠQÌŸƒ÷óp–7á, øéêËôÖQš%Ž‡¸¹æ²SVÑ9y‚²*B€â,8ùœæÐîë—P´ÄÜèÜ…3Ò¯¶8_â©®pÒø6íú6œåÁC¨tPõ$E?C¥àõ@â >®BMÞ×Áäºex0¡€`vàžêòî CÓ ¾Â
+õþ„4~®BeÕцHX+~µÆ‡ñ=g•bÉO~¡€æôÉ47~ƒŽtg¸§ôiÄüæS8+Ø…:ø(ªAÜ<ÒÁ 4|2LÿÎ4‰,ƒšr~hI_êwøý
+™/ª=¼›šT,¾Ù’cš¥hA,Œœy˜P¨tgô.ŸA¦èQ~åô®p¾‰‚*MäqJ­YŠ,¥Fð\éè}Rÿ`ljçèr6Ño®_¿£°ôÝãN|¨¿mË$’I…g5óý@®ár$8^«“EŽîæä$d@ñ²vFó:1óúX³o¶õ…Jå‘úe —§,T©ŠŠQ ‘'Ïhcy* ¬ŽãÜVÛuã ,âH¿lsyÊ0-Ë(ŸB—Æ€&Ï…nêlêŠ0Ã3iŠÆBõñ3ÔE°kDµ]Š“Ÿo¿‡¨öØ”•¹×ð{êVI°âOó¼­ñÙ r§šLâÌ+ÊçQ†Ò“±é‰.Ìí´&çÍCµÚP&A½ˆk nwæu·=€W±ß)^ëCdŸi ^˜)ªdi. ‘‰‘¼üAìWG‡IV  ¼cYD¹zúrV’Î…=T1ŠOe^ .+"Ç/#¾—ok‚VÉåÛVïKLJ f6¡r|,Õi÷u0#+2}½|ù@‰M3Ád™L¢LefÎï9Ösvò‡Ziðñí‚pÛ5ÝL<ÙËT~iæHçãéí͇wÓ ”ã``1ÓQ–J“‰“_VýCFQù%$ü Gz™Ò
+m
+v¥ué6O¼iÝÈ|Ñ®ð.\ÆñÑ49i(]væxºlËV‹“©w~)Ȳdœ¦!eÜÔÞ¥zb•ÉÈŸ¥.=]e2ž03*ÊsìSo„±sž<Õþ±§RÂãcKzàÄ[†ò%ãÐ
+Y¸R¾¹}³Àbl£¥bO‰”-‚æJ©Ù€ÑoIÛn»¢Ç–þ×|^ ö§µç̺¤ŽššÔQž§ÞºÄغ¦¹Y„·xbàÎh}ËÓX¼cÀ-ùæ“DÀ¯qGxTÂr¡-LûGúUÃ5èiÙ "0ûÃÛ¶LõœÎ)ØnÁ‰˜Uˆi›Šá¤Ç2Ôš‹S[/œ ¤4íŒð@™ì?V—ºÙlØv£Ê¸n÷Úg'“´º·XYß É™MFT|q€a´ËU¼± ê{lj+\ÆË vÄÑ CÓÏøü§ ÃÐXK)Y¡HÅ?Aºì¾C±>7ƒhYíG{‰ºò[@›iÌ«g+ÎÀ ÏXAn·»[‚ÝmeyYoŒÛev¸ZÅ£_¯È¯6˜´2¢ÚøáaÜùIôÕ²íÄ7,˜Õ¦@B’°>2®Å½%ImÄ®éÛŽÀ-i‹u•(ËÐßÙœ(‘ 󲔎-ËwÔû“™fnm–bÃûë€iÆŒYfÅ{1ô-Z
+þ!¹7&â'…ûï©©îº~þ•GÛ“ðß f ¯pŸËʘM·'çrãXü Ú´‡ŠÃ½:†,±!‹ÿ£íwœ ƒèL&ÛžeF§Ñ;^;V¦šï86ù5}·œÆHÏãôÞDÌd»s¼#AÇ°‹
+9é®q¹¥9·Úf #™Í^¨ªC†6’ÉAw^¢pü~ÀŒ–â¶d_9ë+ϯzLZîÇìáºêû–êõ²åF}uižQÕÆV—>5Ð55à%<]¿$YäB.}6w×SEÃxbÏs—œëùbÊjQÕ5“T¾Æ~51ã¾Y‚ª>󢲃ÕÙ†=ëNÓ0ú®^2"'„*Ó¿2"ÓiD¦fä»i~>1":Ø™©¦Qm6<Jî ÕØÛD5ˆ—°Tt\éÂõ*š¸Þ’sôx<|Âeƒ}›òËßCesŒS¡7Ý‚;Ôf îÔó [²1M³ .Ëüÿ§! ÍylX¡vÈìz.rú+7 †ª_ó`f•1ÐN¦ ýEƒ<È¿Æi娑;†át`:dc¢ÀX`!e8Ï©ŠÐlUǘ(x¬1C9Ãóiú¹éJ šq²ÂÏó™9°å=õí–‡îÒs¨:{S ñôUùã:B£¿…¥<)öy6Œéa ™È]$µÎ`œ`!ÉȉìmA"šÖ{ɘyoQÅÚâŒŤgQLv1€!6îˤkãƯxÿ HÔø¾ÔÞžšŽ…vÏÍFŒ=øÇÄ(7¿» úý8pfôtÍYA>fÂÑiQ³PЄͽ4ç[æ¨q-9 U…72,i^ƒtpþzdÔ=î\5BBgPŸ;…Ûß@­ë—Güƒ˜-àkÓj•ç
+V™ž<_L@Å0ÏZS35ÊwÇ¢¯FnfäªÑKcJãQz㑱qj`eK]ùqtÝ€u;í!f+8ÀÓ+F…¤8
+²ƒZ¤”mÁÝe×QdÏV®£0öã°cj°ö56dÈŸ@\Òã܇~ô¢ÐŸ-û6aЕ›\Yv²>òÅùN>ûŽß;\߀s=x³9:fÔ,‚aVÒg7´ò0nåaâ„ÉVJ@•d6òëUÝÇ’77$‹“‰Ç³<âO¥uÂQêa/L“R 憢N3¯=¬ú0 ­RSÕ†™©Ùlδ¤æÂïLA'³h^H1¼ç
+ñúÌ|À 3šÔÅ'áÂŒV·DãÚ™ð¥ÁM „!…{“—¤[Ëja‚êè~èÀŸ8•q2³ô /ªœ”Ù>£xU~.¥ôE‰H_Íz­÷æŸ
+endstream endobj 1036 0 obj <</Contents 1037 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1517 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1037 0 obj <</Filter/FlateDecode/Length 4031>>stream
+H‰¤WoÛ8ý*üo¥C¬ò·¨Ã¡@ÚºEh¶uÜ;,šâೕÄ{ŽÚN»ûíwfHI”e:idGcg8oÞ<¾š2NÛ[öâÝg·;öb*þÙ`ÓVœI?¨˜±…å\±²…’ܲé=ËX>ýV¿‚Ã
+4Í™4…U9S8¡ØtÁ²ñôê‚Œ§ì+S•.Àyé` Ë¥+„e‚ƒs¶­Ù¿Ùš½šÆÑ o©Ñ÷¨Ùæ{?Dï2Ä(¹ñ³ßwz[äBf†iŸŠýË¿(r‘邳ë,6“ùHdß üfò/ÓbÀ!d#ea]²:-Ú?@Z}]6
+âý›Ø¿Eõ䉨òÈFæÈF\_çÑ^²â…ˆŽßüÄFÞÇáFRTqN
+xŸ4+U2k˜UÚ¹v®(Ó«›¬æP)ñ…o«²¨JY ‡½7X3j‘¦f“«Éö+Ëe p€i^™*»¸œmŒó‘ÌÞ'¾‚¸8z–@
+F
++™±÷õl÷¸…šÑ5d9Tn½?-…‚úOoÇ ÛIôa†(ÙÒó5>öôÜîh£¨9h2ÃMÇà·E˜ÀGá-¢rLS˜q)=,ßÃÝ‚Ò\@žp?K!+B Ä3 ‚›qÞl…ÓOÒTÊ
+5êôÝîSy\1 €(À`¨½Üº›”ÐæVwpGÚ|ËÏêíÃÛ%D×91“²M‡2¹[ÎïØR TfÛÛš¾Dé.#Û®íG»\ïöÛ\gÀ^ó=¾ÚOL°Žsä@>›1¸aû »§!æ©U3:*x—­VXœÝ‰êôÏ+‹5ÁE|>nç¾¾àÔsˆ“àPäòÔ9SšŸ`Áz¹ÿ;ûŒ+v8aë9žöf½øâô«!D[:€lsºˆ8GlÔÜ^:3…K‹2SI Ž@
+•BbÙ.el—4{¶K™Û¥Ìí’fÏv)s`»”ùˆ(ãú4ݧÀU3Ø^ŽGŸ¦œ T÷<*/yñ]¼­¿>ú™:§NÉ ¿ÅŸR™x˜Šhø0Àßüšqu3)#Ò¦ þq{ÎþXo¡7ãCJöð›NÎßnkd߯m*¶Ke÷2eˆü`Jø«Ž+”k¢a¢
+-#²‹–;ådö
+É°<fd4Uö‚v_¯õâ 7=ä°7Myº7/P]bKMAQ€$æב¦¼Î`z)‹›…¤O)4Aì,Š†7“!»†º^ç­DŽG\ÔŒ?<ã|‡<w¶ ®É‘&»['Ó0åd3ådö¥ MšoÙ*ì.
+±üà÷ ,h@å€
+ùà,`ïÍ–ŽsXŠ8Åçíµ–#(
+ n‘ÄE.¹ÈíHÅ’Z÷ß÷½ýà’Çiöà„âpöcæ½™7…qö°ºÈx5TÉ]§@ˆuˆ4<ôÑ(å‚9ä\2û¤ æuÁÒ.™}ÞsH¼`g~œev™B±“÷ðv·K>ÙÌîànwtcîÖh+wqæEwª \&s ‰H ðïWy‹^RÙüáÄè)¹Òøcz“m»Ù®W'›Ócrî§ÞÉòî ¶ƒÎ`pBCXíX_wÉï‘ï »ÞÎŒqƒšYõëL”Ýãß\`ÿÐíxÆcò×Låé×fX.sÊeT}ņÿ°J¥{äR¼8j¦I[¾{"5>~úøap ¨ÒíZûfe÷fE;?Û¢½ç³ &=fãðG•±2—9¢Ê•™döÍŽ#’ÙsD2{ŽˆfÇÉì9"™'ªã¥°˳9UYõæˆWOœZÔg@Ÿiß4¶ácpÝÏÖª]êK™Jý ‡ 8dþ5‡TÄ~(¤GÚJÜüBÌm‚P’'–ñÀcŸ^åËH üG¼sø&*6YV(e
+×7µ2ø˜—Bˆ#–#¥ø9iÃFóد¸1¢±[‘;–fÈãUûÔ$í?í&€ùÏPi&´?ƒ=|„ñnÖ÷b·þ~\½0šaïWÏ¿w=eåh·ÆÕ–/‡Ýª]Ùî±íÚát¾íú#wr¾òLAHò渵©Æ _
+‚÷„õ'
+Ï¢ C ¾
+endstream endobj 1038 0 obj <</Contents 1039 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1039 0 obj <</Filter/FlateDecode/Length 4253>>stream
+H‰¼WmoÛ8þ+üH-Öªø*
+XH“ çCšë%Þ»Éâ`ØJªCâtm§½ý÷7CRïÛé‹
+Vd°¡“&µª`3gR'[¬¿\ÜÎý‚Ëû©B§`<w°‹†åÒ¥Â2‘q¶-ٿن}Xt½AÛR£íY½Í÷¾‹ÁdôQfÁÇ»°ïâ¶H„ä†iOÅþ¾HÁuš±{žËe2<Ãï¾™ä·ÅßÑá‚ËFÊÔºÆeuÐ[t´€~õÀ;>‹ì›®}!Óâ艨|b#3±Q¦ï“Î^²ÈRÑ9~óä̺1mÚ]òâ”$›6Éù(É]¶9VÇ?Æ4CôÚçO±oø,1ÛÄð¾T/–ÅápuýŒÝ
+î3æ¡Ü•›U?®"‡ÝþL\ÞÀ¡¸€•©lNæx'e¯Oyof¸ÑÍróXv7ÓyšÛ?O0p0—¥®C… ›é±<µu%Gl 'èÈöP‚ÿ‘(Ç¿–l¹Y³6wýM‚m7ÇéX´FŸjÛ[(9Íügx߬ð³L
+Þì“ÂæÝÔÁÑœª9ÌŒ¼-Ÿ—›}•ÍW;22oSMØ4S­ËÝ
+™^} †_6øÙ êÞwß:$qJ/‘£íƒ™QHçÛj_­–OfNBæ:¥¦èÖ÷Û© ¢¦îW³>eŒMäKOÕô?K„ã»]õ¸)i"Rç&³qºFç%;ÉÒ8ºXžg0S†¶á? ”‡èÍël´Áéwp-<
+Ah.Ð6<*´óòˆ€eSŽFáÄ0ɬ „m[Ã(èÕÚ¹CpŒ™@cšdG.ªzDb»{•Œ¯:_Ÿ`>^$Š/pD³3è–C¡AçøÈ2™©ø/Ö]©œ©¢p~YH«ÈS• $÷:Rצ²ÿƒ^¼þÕw¼O‰ÌøåÍ™'…ßëòâžÏ½ôWçM?…Åà:¾6ƒú@M=Ãü†Ê_WË=ŠË’M¾ƒÃ ü‚5ÆT«l…W¶™7¯`çeóô†òs_½ €y|,×øD“MæhÒtM¶:Jä­Iô­µ)‚Íù3š&+TBè1ÌêŽ9׆‹Ö?ùT€…‹Äƽq8ø·m¢ùrUþ–Ï:‰ŽKù=Pø>ñ‡ïQ¨@zy :&ÍÃYr6ó¿pM¨37«»N[JZO”a€­Ãþ)
+¤[i*DÃ;ÇJ£àXi$*‚C¥Qh¿ÒÄ LV™Í]jc•ñó¿ýc~~ÙÞ×
+é#ÉA´b«;:µhé2Ö¾ÞÚ`K`Ó”è‚aámáÄxOýê® ò˜ ˜P¿z¼kgtM̱–iË:Ø:Ú¸]½|õ°ÛÜp)̾ÂuMËu“Ji4žŒz‚wœï¾QA×Ê ÍKã<šY•)äüL[‹ÏÞ€²Î¦.£É— aÛ~luŸüÉO¡‘ü\“Ÿ€kòSp$?Gòè`ÌLÓÞŠ ±-ÜU!ó¾!¼õi *Æœ bbÅ·C{ƒí@{”OOìÃrWb#]ôŒÆû4*´Óžãl@?qX2oé‡?Pá6U
+}ªwg³ôH ñø)9kÖÜy–Je
+¤#¤Ûi‰yJE8žnocz@KŽ´¤ÐHK®iIÀ5-)8Ò’€#- t¬~¤"¸éRçÉ¢-^0"7[ræ€ÖaàÙÔç¦m¸9¾ü¡¹l°]äæü‚]U¨
+vû;»õÕ§¨4þ{Š)P æ/½Öh¯ªBæõÈ*Øþ¥i§*ï
+‹;þË3ÖÒò›/”Z "½Èò?:/Q„=¡lòsÔ‹ïýo‡¡©T®›lâmm@§á"ñ¦zbiÀ$É-]Rµ·àdæú¥AÀ±4(4–×¥AÀuiPp, Ž¥A ãÒ"ž}áܘ°yšûI.4Œ½š°ïß¿GÎÎPso?%ç¦pÒòùuPð v?‚\ÅçMGÛ6 B{0õ»"þžgi*­C2ieÚEyÃ&m@Ë&"ï¨o]ÓÃMëvuçô2ùKµcI!¬ãÕæ//Ûç%z¿ÿ*¼¾h>¥À…Q­FîúZ>•žýåfϪu‰.oöÕîåU}¹ëxh[…æšêY²•¿³@é¿â|àÕïøöZâ…Aò®¦wuS‘ãKË÷¸«áû/X]þuƒoì×:ysv=8¯›_Vðb±
+籃ºâÕ ìwìå¡5l´M¯7×ç3 ®÷/MÓ^ŽBð;æo@åCµñÏ5«0äMH×mÒK‡jM˜QôÐu†6»S¿áê´= ä~Ä%;G É=c?àb]n«oxï_ã*¼Ôa rµFdÛk3ÝYaž^‘2Ûm¹Áµ{¶K
+^ú¯¾Á[Æ#Âô{ðç+¸–J~ –Šî±Õê׳î|.Ëad z ׺ÁÅ{†¤µ­.°5ÔÓVêTö:%‡NI¢¡SRpì”;% ‡NIÁ¡SRèiÚV$€¶¦ Pv¬mQ^x7ü¹ŠcW)¤IÑrmBÜF½ÒÝïŽ_%¢àìCb ²Êuï2‡ÛÙƃ‰<àÁ@
+ #à:a\'Œ‚cÂ8&Œ@O›Ï³iR9¶„Ñ|ö©•†d
+ÌBw‹é66Ò‚ýýÐà`¿;~7¡zDÛÁˆ>4D³"¶à®÷±&?ÔÇþšÑ
+©QϵΜÖ}Bp$$…FBpMH® IÁ‘ I §ÖFÅI8s7­0¶à
+‰“]:ÂÊᕬ߫À\6ØH Œ´a¶â½eßWÊ«ÆèÂ1Õ85‚U”ŽÝ)é8±¾Ñ°*jZ?¾}XçýëiÑÒƒËSo ß43–°á ”Ñ›æ0ðIkºŠ2å‹ŒšÃ«ˆBcp]E\WÇ*"àXEúG°*4蘦ŠÚ2*°ù Ã6æHwŸµ*µ·OgHwŸP>ŠÏ{U“å)¬¯7üªñ†!ý@Õàzí~üÖ¥L=¬ž ‹Dþ¥Ú±¤Öñò©ÄãxÆNRnðuÏšbR®)Q²¨!µüEsÕºÜìÑbõPyC;¶Ädž-·ð¿æËh­'š« ûžÈ ÜX}a~ù—t—ÔüƬ÷°ãÄÿy¯¢Þ¶m üW„>ÉC-ˆ¤$RЦÉ ͆ÄÛÃ’=¸¶ì
+ˆ¥@¶‡þüÞ)‘–|IŠ{I$:’w÷Ýñ»ü¼N¿€OÛfSoÝLèxy¨Qµ·Ìò©^_>??áëjŸ`F^
+jB$&Õpaíy4ïóÙ—·LŒa«_å‚4ýÏúTÔq°­~µÕÏÁ®ú9ØU? Ûêç`[ýzF…Ó´¤m0öã©QaÄï ÝüÍöˉ 7A³VÑH,¤(¡>_®Qâ÷ ½S ciú=ƒéR ÷פá«<MŠRž¥ÐXÙÄÁ.åêRÎÀ}ʸO9»”3°K9ƒNSžæ6åBCœÙ”Ñ@ahŸò»ný¦[¿)ݪ„ „O·,éúgÆ6véæP—nîÓÍÀ}º9Ø¥›]ºô‡Æ6%Sèž6É“±M “°T¾6¶e^&ìØî÷ÿqóùn‡ˆF·žªe4ÜÂ=ôäFA›~áa
+n¨qhKÁ4D[¨T0˜³^Sfi|ûçÍ r¯Hc¢ Ö¤1‹tJA‰ã)˜šD¦.WPM'd`GAudàž‚ ÜSƒØQAO)h9¡ÏUa ²,AÓ9AuñÛï×—‘×™=‘Û vË
+Ô²¯ÐQú©%l´àx×ÏŸÑ®]WoWƒ
+Ý/3ÌBV¨Ǩ €©p 㑤YÔRB˜W)ÚUK–b}t˜.ÇÁ–b,j)ÆÁŽbì(Æ–bl)Æ¡?Ôå$ì¤ ¦ËIS$ìP¯Œ/¾Ñ]•K¶Ë…ûŠÞíl'ªgä/(h«žÇntO(¦ {cXŠH+ÿÅdYÀÄÇSÌEŠ£;Šq¨£÷càžbì(ÆÀŽb :ÕMª`xfCy×Vò*™F¥j¹?vÕŽ¦®æ°÷ƒŒô7fJÙ[üV‡6ú°:àHVÏæ2þwVÆËÙ\护Y“Miì$U®ÜЧó(˜ù>£nÒ¦€Ûp^Æ×°ˆŒ÷°(ü»Äýt‹¿Â£ ‡,ã%L
+Plá4ùß_ÿ}ù›ÇÙã ËØF‚*³ŸEãËÙÜK2^Á_˜)é9znéÿÜÆéþ¦±}nû…}kfb2uWLD˜S¿ÐøH¡ÛѬûLœþvÙ`U7ë?\-1ØY¼–䜛x!L ?ŠÚ½³Â/³ƒ=AÊÐa—{z9ÒKG>U!Þ8geüžÀ1gð‚ƒ)¥6þ{­«MÝà™«5„‚ÔD l5÷³,XC–~ á×ÀŒà"Jçq‘4z(2|ø'ê
+’ Ç^ãçÑÇúáö´†Œe¸FèõÓ‚´‰ënMVÎBw«€SǯÚcwø:=¾Œ³7ÿªÞœ7ÏGæB9žœ86*þ†ßã*ôæV0çžÒà|øï+ìUCöÔ4úøk<AØ›áâÊÔˆFñe½ý
+K|¡@öw‹ò±gb÷Ôn·TaÍ–rÖn\⣶{ytlú²mºvXÍ! ½­è®Þn«C T÷Ÿ¹ŽcWQµï1œÐxñy‡Ï°¼ÎN,§vÕsÛ‘ -Ѫ«U gÐñÜÆ÷7tóêz[ï©»;ò=8„ö‡(3¨Š )†í±£}±CÔ-]!уT£ðSÂy$²rÒ+þZ>«èxç/¯!à",…¡~/œ£dÖ·l ó^‹{! xëĘ~*€ÁB3EA2ìMˆàlÑ!‡å ÔC+/8;D Le¸©¬1ÀÅ°¶ÉNOì¤ gŒpØUƒ@YÝÂFJI¸6ƒS£ÔðÆVհƦ<5áÎVóp¶SÔ[~`
+endstream endobj 1040 0 obj <</Contents 1041 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1041 0 obj <</Filter/FlateDecode/Length 3775>>stream
+H‰´Wmo7þ+D¿÷`mø¾d?Hl_ã \[ipHŠƒbÉŽ[Jm©íýû›!¹Ë]­ÆNÜ ‚d7z–ÃáÌ3Ï _N™ˆî®Ù³Ÿ.»¾gϦò?‚I6½b¡ªøA`ÖÕNÍš k­„cÓ[ÆY5ýWÈ´BÀ
+„.™²µÓM¼­½Ôl:güxzqOÙïLSƒñÆÃ.–+_KǤ
+èž(þe} žhm=?„&•æË«ôÐ
+ÃÑÖaåøYeø ¾¼‚¿pÇ/à—aX¥LdâkT&íáÙÉá+v|YMþìͺšØ¾ ¥„¥ë–Üf €PðíÝßoñ}±ÞÃòñ0ÅŠ(u’Nà°DùÛã:¶VÈqQ)k/f éØ|'lÒöÞ–à~q$Ø5Ø”‰beÝ ùOÁ‰ÿ$šøOÁ™ÿœùO‰ÿœøO¡{øß”6Hþ;x»üWò_Qü×{ø°þ»ÿUâ?ü«ù?ß_g“uCK]ì馷^5ðÃÃ3 ñùÅáY¤L”gßEC†Š˜¢:/o“ºßDaßTºßPpÁ%+aØZNp—+(ÃïØÛ)*þù‹^ÑèR4¶Ûz¬Çñ¤.þ-­¡É×ײÂ<P Ê@w§k€s-Ph®nk€ÛZ à\ œk@ŸÐ Î>NZœB†µ`vjÁØÝZ0D-x5®)›Ô &&„†wë¡Þ‚UÔéWÕƒ¢›:HÎùß`àb'¼¥Éh¸ø¸XX0RxSµ¹Íü»’ ?//ªIàly½Z§-wÆL¢ iƒ†)3g˜ ü€œI¢‰œ IÁ™$œIÁ‰úTBZoº«jGHû(!í7Òi!Ï«‰IVž¿S! ß‘˜Ê 'è7pªõ|ñ2ú¹; ý?HjƒÍ Iêdí MRÎ$¥ÐLRnIJÀ-I)8“”€3I tLÒ^ë_Ù:ŽÂÕ­q;urÔQ 8Fu‰£8(Ìðu3à žàëx/ÝÞ.aª{*S“3ÐÐó7‡ßCD1Sxסø©a;Oó“€3?)4ó“€[~pËO
+Îü$àÌO}*? [b‡ŸÍ£ül¾…ŸJŒøÙ쎵Ÿð‡»õöúÓ—mbÕ×´½Þý†ö¯Yß‹©*ÔNL5I2•‚SI41•‚3S)83•„S)81•Bw˜Ú%bÈO‰²©a§Ð üyžê‡‰>Î7±CÁp [@~tqß±U»‰èͪ\øÌx?4¸³ß{~³¾¾^Ìcƒ}}4m“úËΆ`b€SïzÞ‘*—®6qY×Áúè•Ê¤b¬2"•–ôø´¦iàNSi'ð1`ÆXšY9@bŸÂ,ÎÌ¢ÐÌ,n™EÀ-³(83‹€3³tÏ )KÒõ>ô1éM|éDÒ^Iů—«ødK”ÃÕDñ»?ªÀg7x‘ò%(ZÈ7¤&È$)箆Y6Kâ1ŽloQ*@?F‘}6J æÇGƒ«Mš÷Ðuiâ Œoºß—?pÐn
+A§îïñ‹{l <úeœ‡Vóš•´Ä0Bïú¦FaÆÌÎÑÅÕrŸs ­Ð²…æ0˜ÏõpŒW¶ÖWÉ÷Rü†ß×Ãö—h¤mHÖ®Õ‘g6aYKÕ«DACu·×0No†¢@ÀY(4‹·¢@À­(Pp΢@ {#GôœV”C ÊÎr G%Ó8ßÞÍ6KT…8b¯¢nôæ —’¨TÓòº±¬7Á¼ÆÚAi¼
+±h”T§‡•¶Û“åÁdµ~´Ê9›ë^ ô‚õòR«ò cÝ'3,µh42-”¥C
+T&'©+B§#”hï#Ÿ"dÛüÔîQ_
+ÀA0·¬@¤t߈öéÿ"ëÃæÿNÑ"D“…¡Ôô ÑBh줹 ež¡Ä1¤×ÍÔP†ÊתÙ_ CØæÅórk–Še*¤Cs‹PÀzBqO„Ò+B§#4¯ds„»ANÎ(a%ù<'ly¼tbrf™KÅ‚Š2;œBÖóq’hô´¬™+N'á4$§/`‡ß”BÄZ‚xÉ4š´ˆF‹);StdŽî,\̤™¬:s‹NÀz:þb×êõèØ+:'+Q’öJ”„¨.ÞÚ örä?,I§Œ$¶Ë„«šÔèûÂ$é•«Ì4uš~p‡Z`´Ò¬3+ˆLnfMchô‚Õm9MÚ š›Ô8D)Xj°l¢4ÉáfØò.b­––ËÉvl%{ÂÖö~Ð{檣=_«5mŒ\ç„eFqGŸµXá ‘G÷+DzÂOC/zLZË D¡E@|ûú€M—DV JÓ¨ÆÆnÛbG_ =zq’“8[³údÝë…8n*ИGÏü¬H§Rþ­jÁÃQáTT‰;‰lKTÑ+ÅW¬äËJóÛð\ÚH”<LüÀã[R²j³¥)”â¹ûÈØI1ˆŠ;ž!OŒ§¸á+]ŽŸ_y¬ÈS¿*šæVôë.ß1/‘ ˆ)z¨ÄÏ„7äך•¶ûþ0
+endstream endobj 1042 0 obj <</Contents 1043 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1043 0 obj <</Filter/FlateDecode/Length 4223>>stream
+H‰¤WYoÛHþ+ýH."ºo²_ L­Ç Øãµ5;ñ`!HŒ­E,)”<ƒüû­êƒÍ«%'AIf±ë诎¯Þ/µÿš'rqõ@ÉÓ\,Ø)adñ™˜‚RÅí †(]hJ) +§š,^HFòÅÿì æNP8¢áªÐÂY¥ŠŠ ²X“l¾x¸¶æ ò•# P^V`EÂq^LFA9ijòÙ’÷‹®7¨›KÔ= fþî»èTz9u>~rv`"g<SD2üä?îA‘³L”<f9ÓÏg,£øœá/•ÿ¹ø:üopYq^èªuYœôí_ ==ð.›ù qúUW?ã…9{#¢œ0¤& Qù˜wlqC Ö¹~õ†œŽ¡!Îy7&H›h¥4oYEËÈÝ<Œ‹«¼Êîîfˆ^Züù ¿kıÉUvÀ›Ý–äLdp¹2 OÉ=ˆí{_ê%>=ÔÄ& ïÂÙU:šbÑ
+B:
+³¡ØHÄ(«#ÑàKÉõüâ*/³f÷º'·Ë—ºëS¦0¼uá¬#Äœ‚ÍŒtðbÆZ¶&$ø^½­*û†¬šQpwˆC}¨·«^\\˜¢ü™¸œ‚Sqq­m¾{¼,äÙ¸z}CVÍÐÐýrûT÷ŠK`Öÿx8xžž
+G Z ØJÏ¡«Š['êZÄd$G( –}ËE•ík²Ü®ID®oÄé®FÑÉü)Ùt7Pp2ûl?Ýïí
+?ëÜd­¯DrQDÜÎ7D.bœj§Õ6Žó¡~Yn›œÉlu ëÚö€&ëfïﶽIÀLñ3ùjÏŸ
+Oˆ½Ï ©¿MþVµÁ4ƒË…Ä£2`üÐüþÿÝõÿ˜Hm‘ÝäÜ{7ö»æHŽÍæ “à©nà›F…¼×àÖÖµ­ƒ¦û
+¶·gSE·IIÉ F‘H>"Y6Ë—|†Ì&ܱní䱄×öU°ŠÛy Œ÷
+Ö à&gÔÂÆ4×tô‚T£)¦m/¥ Ü£äi )¦X¢7'dÈ„8
+Ï·ñÕkÒ†Iœ7pÓ®IrnŸ~~ÿYÄNiIŽ‘E)¹«8δ3$·Ó«%1š+VB„“¢å_×ó‹+Ȇf÷º'·K `]–­
+­&ËíšD ûFœîj:$ÄÌÝå°<Xá2ûl?Ýïí
+?ë– Øš”\Æ7칑îÐñFdµƒ}¨_`óÙ`«Z,«‚þ²ÂÞìÝãݶ›ÄŠ™â;s¸ç†=eO
+€ Vr4åúÂÝðòäYJÁ¼‹B‘”6‘º>{ŸÒ1? ²†¿°íJ` ‚Œü z¯å†s˯¸sŽ”FÑ=v,œUäØlž0 žê&0q£B^‚kpë †ïøE‹N,YÒ`ëJòDY™¸ÒÀ­É6)™Ç&%öؤÄ›”Øa“’°™î
+ÜÕH•.?äx¡w” 6#ø{¼]`
+ð÷Ïí—¿‘1ïÛ»ä¾Ù´C’©Ššo©wáÏY¦3p²ç€eb p°¬~ ß«¢ÔãšëÌŒ‚{xçýìÛny—6$@ŸˆË¸—.ÑjÄ-€ÔöøÎtþÎÌéFM÷_;ܬ6Yù™p¨Ÿ_
+Ç dnéã+ŠH£G‰(ÆN·c&:ðz~Ï ^Z‹g¸Þš©Šú#*5ŠRô/Dy¬ïœ¯ÆV¬ò7b,sÀ;OT±é«|ݸ[òÛ†V^Þ´Õ¨œ!†ú"Ó”sŒ5%/F)ÖÆùÔnšî°&œ,÷Àiém–|
+ë›ÞvÃ-T}æ5ˆþ…ƒu]‹) lŽÊð±pÔ¹~Y@[”ç‰Ê”Ì·;SbßÏL‰}Ã2%ö>OHÇM«2µÇw z™ jã®Ë*_¸+~œYÏ*×3©`(K Ž?Q¢š7×Að‚•Å}T®%M¬ü<š¿zØ—¢a®ê~Ùí=Œÿ+•dV¥·ÜìZ^æ3éäíÍÌéiR7ÄÊFz"Õ­ç§/i²Ùk&^‘ÏÚØìY~‹<Ÿ“§Fc6ä»*ªX&­/“›½¢Ô<q&4&Ì̽ Y^ö«ÍÉj{²š;jW’·)OñâÝÌ@sÐN Æ=ÿÕ{hR iÎ_èS̤Zfò£˜½Ž¦ÄžÑ1z¬#{G€%ýuxyl0˲Ӄ¶ñ ës]tåOàeB4tEEW¤éÀÛAÛKnên_èÒwäOºÞ³q\{®eR×C–º–~®¸&Yw'¢õtœi&tOrnºÈŒábõUåßh(‹AªÅw˜W“TK›J˜˜Ì£ªå’yô˜{ô˜{ô˜;ô˜’žAE@5‰Ú°±ê DD†W»™]¡±þÁawÃైØQÿ vºh=/©š'zð’tL!×·rTõM»vžTóD1sJbÝ<1k7.9¶nÚh´ 9³î^™`ìÜ ™¿–<fuÙçZH3ŸÊ:3ù"FR‹—d/¤V^¢ûõwˆ[-ÊsR…Þ$,(KæM¨Bæʉƒ°éaAìsB[[ñ³Ã#¯û¼Ð¦¸ŽÆëŠ[Eí>­'´­’´Aç£"?¥yFUý{ð,wŠÐªzA2hLN‘1„_Ôòˆ”æÅ+±„§ìà=™Ðgá2ÖZ¤)*k΄â y¼º~@™ƒ±ô±}Û.ÌÖÛŽse>ð?Û±†*›ö@#­Ð^!¡Úçá °ð6–þMG‹k.óÞK2Òø[
+ü²'½ì•-±!þo9úÉ+ŽÚ}ÒÈ@>k8Îßrñ÷]¦¯ASl dÕiãú÷¨¼"Ò¸(yœ]Ué=aþIú‹kb΃ žW.ô¨4¬dâoêÿ 0
+endstream endobj 1044 0 obj <</Contents 1045 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1045 0 obj <</Filter/FlateDecode/Length 4637>>stream
+H‰¤WmoÛÈþ+ûqY@̾“Š
+©8ÔÏoø¿+V’ ËOøåþ°g„¬òo•…ä‚­ALï=t->=uLâ•Â/áŒ0¬r¢TàŒ³øë¥Ú³}íé™+^!úâà6½/W—o>?žÙ§v×îPUXññ/^a†™W0±9ªC¥‚MñŠ£Ì<9HÍ̹kD¢;uûíÈ/U)°ö~yÏúÕØ>U•æåÖi’ÞÎAãëvÿµKŒiE-òûã<ç6º¬“TЯHG5T–šR¸Žl¥¡ùï…®ùcÇÚý-°é«vꎩJMÙ`æ_н†¢3üŽ>ô¹ßâgW4¼·£Aº² kª×L½z>ƒHÍÌÁ›n×îÏ÷ض'vÑ°òáŠïÏÐ0F3@ê²ù`½‚<°Î²ªÐÀ%¸J û.•h>н™UMéÌs'MfƒD‰²r^Ýš5'®ÁÏ:+ÖÚQ42bp¿çÄñÒqˆ¤JHR»©œe/zN؉õìÝ{vÝÛ]±rØá5?‡™ ùñ„i|ô§ß$÷¹'«ÒÉ
+1ö¹ç`
+œÆ^¥k(LÏ…¬›¤€JR@øû6Þ¢ûâh÷Š&wNRa
+X£Ï¬Qà%èÄ0ç,—‚˜NðN—ºÎE›!QŒYH1”AÓ”=R*dýD9qH¢Œ8&QF“(#ŽI”c˜cŠ}òÈMˆÜÇöÅxbÀЭ È£ÇÃñŒñ¼GÊ°ÿJ‚ >8š·ûÓ]wô1¦ž+ûlŒÔ@{¼Àƺ¿;wÐéZl>’°åì‡ô
+uit
+És8Ü­ Ëß½?!ƒ M’»odÃ÷Z˜5†Ó"-»§ÛJv¸ÃÇ‚
+F¿ø‘ù×?þ ä—…á%ûÒ><ùg÷'ú§ ¨HÇ0Åbä<œ„=ˆµ c³(”°!5nÔ)ìËgQèê^ª¡ ÕÓ¾b³§—¤¹¶’gô}ƒ†åF„þÄ%‡¨$i‚'Qmt2q$áèƒfƒP LŠ¸`kîAÄu8j ‚ÎËs‡?O@ml9–ŸÎÃôL|òÌÅÙ¬ísîÙ
+ öÀ€|ò_À
+¤ÄU±ÂTYÎq:âï~û _¸¥=ìÄÖïðï‹×½Øm11¿+*î¿mÙýÎàƒCPEœ¬BÂLOPÌúS‡Þ[ºÇ‚“•kúÊÖݽJ¯mS%Ò¼>q`«bÖúMÓ½Ô²âRáC‡ØÎÆ
+Ö¡(²ñKN@3'kØpÛD8½|XkX‰z¡Ó@Ö“³1–ÏB•–É­%Ð53§¦™ÃKÒálH#=_’ÆÊRÖ@úX j¦ ê¹æ.|­$©p{EÊ!S yˆi‚9Äú‚ÀÌÓ4PWÒ؆¯¡çS/q±— Û‰…nÒð­3øµ”GøEÙ{,¨¥„dKÅz©§<6ã²°¸¯…›âŽ¦ø/`á˜À©¨8Ã/0…4ð5_6 ã&·+”‚j1¾B‚ÿ“^m;N[QôWüèTJêsóEª@ƒª‘ E”á^ÒÄH‰3d’þ¾kíãkì3éˆÇñöÙïÛZ-w3+žr b ù[Šø.ôÍsù·–»•h(Åïh»ŒÖò”h1zôášxÇ×ϼ«ÕBø9>¬äü©v÷óL¦îR ôz7¡ ;+¡~gó~¥ÒRœg(âf']Šÿâàêp®Ä\§z9z»~W1}òñøˆV«²U÷0›§ñ†OùÅ$¼Ÿ3Ýä³Aé>‰Ê1‰‰€c‡-uƒdŽ3§šLÎöt*×qÑ×GÈÊ##â¯ü—"ßÎt,¯D[*
+ÂyƧä4¹F5ŒÐÃPhS5DDN[⹧ãÉ“<G§ ¶VZª8$N‹ ÌhG0ƒ®¹°¸q: þe~d¡àI'´Z<]
+ónf y3­œÁÐkz(§×b…^ä¶5åìâjÑ©|dH”\ºYz>vÞ÷G‡²™ä¤‰íZKly—Æ¢ W­‰âl·ÄM*êÁ;ø|䑧¾µ,ï'ëùíá„Ò°t‘h§FJ´Êýf6NrQ÷zdŒ"º Dmgh;ÑVµ1å=¸o/'$fãdMã„ÄuãÄMãÄha[ÆJFJV_-gÝâštLi©_Õ‚c¦-¥}h•Z¼õª<òµÜæimÕf.¾=•ûèöõÃ%ýáil“óv]— ö(ʈ_¦}Ä3¶G™ºµH8ûed`ÿÉ pHE§Ãˆkµ;ÎC^+7þcJ ]žzÇ>yŒ¿üQ„¡›-ž6Yí _nôÂP­¡}º«”Wœ5Šãâ&‰Ó¢Íëšy—è›ÆéJØèp…«B@žãû'ù°ÂCbVx@ÖTxH\Wx@ÜTx@<œ’O|_¿*±£úšó‹M&Y]¿vüõŽü ž£@vWò# Ïüѳ<Úí„yþŒ>€‚ÂÌô@Ã^®[O`üÕ+«AÕ|H'ŒÐ‰¿Á±›7³¹cOñç$WôØÍŽ^žùË$ï‘3'…íª`Y}ÇÐ^mU}ŠßßpæpúnFÚ G%3TòP‡87léónö—ö øΑ.P,™~Ézö÷ÀB߃÷QO¹îŽÚ®é´¤·Ú™‚5ÇÇã ‰@› LøxÆ ¢TvÚ ¬U t TfAëJSA}Œ'ÐæÙg©·£¡ë ìŒl
+Ty±Î²SׇHŠÎˆêÆI}_¤u[¤Ã®ï]tóN»B§9µ]ñâØs~ÆÝ™WŽu²;VʆI‘»cYQˆú1¬~ó9¨SÿÝV'P›v®?¦3,­¢MÒl¬L£ÀºÑ†ÖØyÎQ
+<w›pR¨lhÒ;Û¤pú0¥ywÚ¥CÃ’áÀÉ´(ÛÔ}4ÞÀôa£ñzg6“­Ý;\×Gàp‘wµëŒ#sD§§¤ÝÙººÌ˜Ë©K}Io"Ü”L»l ã€ÑmøÚXi:¼d¯c“®Œ“q{´hR$¸A'ï—Õ—2ú÷ å[­ûTNeŽ,£õá
+V½€©<{am€»‰_{ª«ìuÌXDE2
+éõûݲZb¦ñvÈNmbûFŸ‘½4Öç¥N
+񼩻
+mJûƒ‚+Èlž> §SÛUc‹Ÿu¾ÐAi£9 ÏBÓB=¸5EÔÒ›Í(Ü/Ì4ŠçpØ
+endstream endobj 1046 0 obj <</Contents 1047 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1047 0 obj <</Filter/FlateDecode/Length 3301>>stream
+H‰ÔWûsÛ¸þWð#Ù‰
+&K5rïÌŒRz³[Ö‹âa}€Y§àø¼ÆÓ¹ñâYøìû$§ i¤ì%÷œý6q^ÎÌ(¹W±Ì¢ý~}_•a4ê…&…ר^Ê;,›p àK,[ †a~Ф²unq±wbcrnŸRÖ9ÏU-T‚§ÖI¥Íñ9$Vʯ
+‰m”%: Ê´¶Ôk±ŠgYX\ç×g¤<¶Ñ %9JPECú£9­·»bS²k„Aùéˆë –K,ETº3#»ª³«Ñ®`3É%$>?b7wåŽÝÄ2ÞÓŽì”©Ï —¹!ò  Is`N ú?¡;ÆâTÛ:œN¹[¶D·Ž—4l>Ë
+Ý-<]¯T|Ó6¦äa˜é0º~>P'.â˜HŠ´ŸŒ !.%ìˆ*ƒÊ@Ï$.&6ÃD”ŠfCÌÃ1j=ëZ,2b{ô;œîãvZÚÀ6 EÔN‹´Ó¢³ÓÒ²iØié·ÖæH€
+M´êÂr=d€½¥~Qñ«¥—owÏ“tÏ›9¯m°‡ ŠŠ¶îÇÅš÷Ô>Ôsðqó]øèõÁÀI¿ ¾0Îbãì97“ÈigȦpÃ9Óë ·
+ÓùÌR`%9ÞLRï—¿aøç@ûˆ<2ýÛw-ÓÑY
+± ÓI„
+Q³™Yžé)±Ö¾§]S¡ ºL—Fn`[ùÎk®TW*m…Ú÷‹4*¬Aá­ –§)úèt‘guAèëæ¦×éÖD,¨ŽòTùùJ_½fjAu#€²Ú`¹j*VŸwÚ5ÕÓ5ÛnÊynuÑ«EŽ§r fÇ‹Þü R†Ia‘áÚÉ ÕK
+ĸùU#᡾»‰¸Õ#•Î"zLÓµ¬òª¨îKv·=Rg.<ÿ‚1¤mcàBŸ
+¡ïtÞÚüÐzb ã:ãò©ìÜŒè9!b”ÒùŸE…2Üb¼”´Ð¾Ó¯ÉˆT‡Î¼Œ¬AÌ* ì¨è µÕ}Àã V®ƒ=$`÷•#(m,Ä“áDï!EÌc ¬€‡7S,ø¦ø3V:ª¶ÛÕ0ñ·À«‘_ĸ aÔ»)‰ø-Õþ)Vpï…%§#Rv›ã†U[ζt§a#cŒ~ßîèn
+[F0¾õê5g¿n¿°µó
+Sµã 8£Û:Š©C¨Å‡Q°ÌiSæ€x¢ÌC0]fƒ¢Ì×Ç»·Äe‰,¸O[eùŒ"CÝV>ÞQQ|K+,1 „²Xeü*Mg½§¯´¿ ÛBªu†x¥ÊÕ”TÚ“^» Ã0ôWr ª6mWzÜ mÒà²X%hºRMÚßï=‡6ÁvØ¥Çqœ8Ïy6,–×o™¤áÎdŽâ݆¥D7pvgú­áTö|7×uâ/¨eb•‰«Ì\¥( éTÝêÄ$Ì<¸oyZ„!Çe­WÔ®t’9ÇÑÞ³JC_ênÌñÙPi¥ ^
+ÐÝùDJµì¨ÞÉ´#­d®k4·S†í„G§žhW¾øí`².{1ígó& žZyþ6–ß±•??êÅõ²8äalE·—Í`£Õi¾–»d£(š]˜qüîpŠ»¸¤!äÓ„, me„=à~„Eãƒwø lKéVH-}h\!g&ÅÉ!3™nãLe_)ž›\xR‘™·‹‘8pDk­E7Ê¢{Ú`Ô„5é‡êª\ßöó>-èNÌóè¶T(K³ ^:<Òç‡ÀÆÉŽ—g:~ÂÝqæv€'î´x|Ã×…¸Ö uàè kH¥Ÿ OQE*H³ôÜH¦?g&Ób€«Ê(3†Y3L¬ 6ðP£^T|RH®Õ»¡õhibäUŒ\ú“'UŸœF7ƒF‰xϨ-¥­ú©f ½—}5’Bn\‰¡!Py¢ð³`xèзÍyó„õÚYew³½šŸƒ»>ÕÆ ¼FÜ)Þ.vIxö¶‰xõõK€
+endstream endobj 1048 0 obj <</Contents 1049 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1049 0 obj <</Filter/FlateDecode/Length 4154>>stream
+H‰ìWmÛÆþ+  YD ÷…ËåGÇ>*ÚıUçƒ]
+Å;³8“²¤Këß™Ù%wIqygú¡8àDi¸³óòÌÌ3?îXN§;öë·9»;³vü9ãlw˪,Ï A/T¬Ð™ÎsÉÊŠgRäší>±„¥»Ò nOäpE5E¦eÅ6¦È —lw`ÉÍîí–ÜìØg&+•òÒÀ-
+Ž “qÍxÊÙ©a¿²Žý¸ ­AÝB¡îÍpÍ¿¦&Z•ÎF‘[ßÛ{woኔ‹¤`Šã§dïìYÊ•åìC’rˆtÓçøT¤ßý þL.„È´M–«Ö¢¡Ó
+ 7O+Éé-FX§ž½Æ$4禫'N ¨‹Üü§¬‚5§„2™Ôãð~±ŠB‹=q}é¹rìÍ>ݨ¤»›xUæY„¿|W¤`îUzUBoU$p¤`5p•É‚rDßcxðÅ+® Oú®‘±½a¨>ž|I¥IŽ Ûw棹”såÌ…ëFáÁé>5˜œ[úoŸ»ÿ7i•ŒwÀ82j’¯ò)®êk#HÍ•ƒo›OûîÒ¦\%õ9êé” :%ØtåØ¡9×XQíÑ*î;ü?*‡d•à Hª¡uÑ?ðæv&ÝX^¬
+‰Ž¯Vxê„~ÒVʵ’18²*_aBÄÄRó5ñ`wDì¢-‚hW#Z9_5%åRq¨­±Ú±‹ûÓ…½€§85ö8Qº»†&Kks°ÈWr¶Œµ—‹Óï
+v“xOÓ°2:±ˆx€XLì ‹ˆˆEÄ×S~¢ ‡ni#SygAK˜‚XcgKëíïÙsLv]?œð†hRA Ö2éå3UÉ<ÁŸ6„•y°$B{û
+@ÐôoRÀÀB5Íù‚‡ÖÀ‘H±-Y:P S†ø÷€UR×QšÆ<CdJ1'ZÁ|‰K9±R4¡Õ4÷ñû˜Øå>"r¹ˆÚ‹ñí%žz‰PÇYn}é»aˆ½&>Óö§öòKp…ˆXʤ-c"ʵGªõö96›í4Ÿ¶B´4ˆB{þàÎo‚·ƒ&Ìií‚A32:jôxM^„ð«´L<КÛâ~ѧ™ØGpQð+ÔM©`ˆ³:ˆ¾9t™/1)­$˜GÆÀÄ»ND< /&vÈ‹ˆäEÄò"âkä]Q…eèåÊí
+3B ¡K½e +
+Ï@›èñóm¢e lÉÌ&0¥ôžU#;€…lÏÈ‚3æ\úŒ_š3yÙ2ßz|-¢UœdB_ô«CÁñ§°cbW‹Q±­Å˜ØÕbLìj1&^¨Ez-ÅT
+Q­íD1ñ
+O†N!- ª–2„š–M!ÌÚª©
+ø2ZÃJ•°´ 5L+߸±±µFÕû‰¦¾¯¾À©|Ø ´Û ‚r¯/´Gâ™Þu^)K>–tX“¿¹”Ûò˜,U4[cÉRt!XAÕt7Œ‰‡dÅÄ.Yñ¬ˆxHVD¼,_%qV ¤Îä¸n}Õ±w)‡ÎpOa®‘˜ ôXU=±ÉúŒ>$¤„Œ=eHËÅ!-ü¦ŒFª\ìÓ°‡]>6´Ša(ä<ðv9š LG¸Ý퀗+}nc‡…€MÍ×2[ê”ÛζqbOû ðTff´ÞdJ kŽÝ§sE“cc_ËKé†ÇÍ@8ع¹°Ko¿~ÜvóÀbÊAÈæÏĘ92æïüjãkC©¬Œo¯²‚ŸÕ5-uµ»ÚˆŠmmÄÄ®6bbW1ñ·n¯Ò(¸uÜ^=¬Ù_l B>HŸ.-Kç€@¸º”(¹ ZéÇI[SÞ®&Li–jH„54Kœ¬DV¬$ÎpPCç¨Ä’”CQÏÉç*všk›8'.Ë Ã8Ÿ_±ÓÐÉÂÓjrÔL4_±VÑ‹ÄDN£88]ánœ
+ô˜Y€³Î€Å·®j´oOD—$t*"ä\ª(Ì‘¸âjq)NÛ½¬#ë~ƒ7¾êe©¿ Ô­ßJí°^7z†uQa ©°i¯¤Ì—é8^¬Eãèí”
+ÄÌ^"Ö•Âx§2ê’瑃^Ôm¯¿n*:tM˜Ñß¿2¿¬]VÆ_)+uÏ/÷jÉ7þÈx¹\Щ¦`"”+Tž†»mÂývVtVØ‚A µ «j8«pÊ¢yçþ¢’aÞgµ-¡+âp2&+\«ÔŠ^Y±ªÚO…œ -2[^Ì™u­§*r@cdöŠõírJ%Ü„„}Nz%`·e% Ѭ{ZG?9TÍø&ÓY!@æ–9ÔS´ÛŽݲI?žèa&Ë‘¬¨E6=Ÿä‡"“̤ƒ¨¼—B™ÈGBþÄTëª4 íëÉ‘2Mû „eOkž©mõdžáJœD
+ü7G&^nEV Y™g˜|/w¾éå’ìp§‰H·—MQ§Ï]Òžv‰Oåtñ]Gb¢úÏUª„°n0çMºçoùÚÒwÇd¼—F5á ðÜ Öó W4ƒÍˆ»E´Ý±=34éö’옶\¶„áó £’8.UùÕ7u²qO´´\Ux^´½©ÑXf™ACM@³º=¹Ä !s$ÒkãfÛDmHoŸj”·ˆÙm:b^’ÒÿŸSSÁ¡;÷„­§¾†æÀ$o߉‚£:56e3/$~óÝÙf\ò¸¤ÊfàhÃ{Äk¾Ú{jpÖM8c¤bª Ò+ÙÌFcd8œœ™å'f¦üDl.?³ËOÄìò1¯ˆ†9{]ÏOQ…òó'.܇?Þu'j Æ(Ac
+85æ­¹1i3ÍM½žC´/žPRœÜzŸ›˜™r±¹ÜDÌ.7³ËMļrw ¶¬‘cn´Xîäî<ôçç–Žòs+i:Ÿ’‡¶ß(Ú#ߤkÇO¢ˆ lˆ:ýâDΞ<êþU²¯»K¤nä uDçÒè5«B›j&²fHgd6™k?T|²4g;6'L#~ª+´Cdv¡-©#g®Í´¾;¬DfEzj ZéiÐJ‘Ùkæ·Ë1E{™÷¾ÿ
+endstream endobj 1050 0 obj <</Contents 1051 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1051 0 obj <</Filter/FlateDecode/Length 4494>>stream
+H‰¬WioãÈý+ý-Í`Åa_<>fv=ˆáµ•ÈxÈåQ KJžÅüû¼ªæÑEÉÇ@
+ÒïÞ`Èë84¤uÆ„² "B
+ìÙMÖÝ&ÛÁ&‡uØí±ùeòúš¶Ñ[Þ?#¾ÓIûXENîèfµÝˆH‰äÚpoUVĨ®ÆSXÅsŽºÎÑlà¨×8ð•vS®Ë¹¶+×¢î<©­è ñ|žTl]ÆÙ€ç0§Ø
+v°ÍGÊ›Q[阓Ã@"“Œ®â²P!Q³ÇI°i!oËo´ò\næx!ùµ+äU”ÊgZxÄ×÷%Éö‘|3­oÊñV%>ö"u©ê¶õ˱I¿¦_#M[[B¤”ƒåŒÝ#' ªàùN^ppb$/Åüã§Gò5úŠ´¶Qsy!V;úêJè¦\ˆe¤”Ü’ŠJÜ@Ûj%‘·Ñ$“#g¯éŽWà»\oç³}4É©š CÌèºs~ÚGVÎV´ºaýä
+¤Š&4Å‘åqfÛÐ
+L¬\RÞ·tWÁ ‹-ÐJÎö+¼BÚD¹›²\Àéû‘Æ®î¿â])ö3ÿý=íÛ(”ü•vo¿­'Ö´u«¸¤&FÅT ”‹Ë¼GT>³ÈÈ…¾¡üìQ>ý7r½Ò½}^áqOpÐ`7&Pµ$}[>‹bóŒ ,
+‹‚®èk–{`•—üù3Ýÿ3âÌóVáqG‘Ub1k¬´š‘ö·¤OÄ–_{³×¿Aé$Äþ<•ÈúŒ-.Pw^o)¦œ­[ª M‹Žœi÷-Úã>NéôwÅ]ó4ÃYÏѹ‡¶¡„-bw¶s+œ o°*:8IFm¼>8—›å¶zä2@÷ÚôZ—.¨ºãú\ç:nÖk9°+EÐʪ»±“¦/OzÄ«y±.ý6nö¨¡S×Þ>?‰A{ ç’‹'õñ¤E4  úe0Ø;­“ÞæAkþ2 ÒŸ†¬fÓ5Qî¨O…›¦Ñ®ƒd:L×Á ¯àÔ~éÜ„qé,¶gãòEÙ7Äj ÝÌ6e`Ì(ÀÂ÷Ä㜊Çwðù-íÛ!-É¡Ì„Ð’5„SÚŠx'ðê•AýÆ %™‚ZÒl³­s¯8?Kæ÷k¼*yŽðÕßcºãZÒ¬êêÞ&Aî&Êænn$n¥W7ˆò¶|œmö+ê—óX”Œ{æt(VOþõ¶×ÍÜQï)$¯`¼RÃÝR˜
+<ÒyOù@:gÈßFmìÑc3&~l¹®ë³Fòc4#MmÛýNuÖuq‚G¥Æa˨‹ãQ9ó(ÂÙ`IÀ–)°%ŠjúƒÙÓ¹DÚŽhyE<…Ά’Ý¢s¡ø`dݹxÅJw¼R,tq;àXˆÉ &
+OX¶”Hoù‘¸ I4D+iuto<!KBB6a2•È”éR¦Rf¨½ û%.Y–
+¢%bICÄXEÃÆtÀƸ衫¦cœKÏɺòê\ñ6BâaZÆ–nFÝ\;3Cær@I†ˆÅ 0¢ÊOó0ükÇx˜ð”E”žŸ²8tBõÊÒúnÊÒñ4eiŒ¾ƒ²„æŽQ–ÆÄ»)KÏÐey{<-eÇS–®ßIYzvŽR–¶"~eéWÆO¤,ýei¢üi”¥å)ËÛ ©¥,#…äA¥+R7Â:šÅ1ÊrZ8£>0JYF—GÇÖj¼9ºìåØrãôÈòÊ¢º‰kF)‹Ku}Â=Ô à[RÏ!j¶hšvÎ[ÛQŽ–nüÕW˜‘ŒìrÙ‰ø#‘ÆhǦ†>VTE2vy5¥²»À\ý éÿæ.¤;ª³]r… øŽŒÍ]Äåó¢CI¶ãDÇY$¯ÝEÛrduŒèŒI×D§Y>FtFE=Ñ D1éšè4Ë#DgTÚ6ê¢3&~lùµDÇaØëüÑ´¼¢ã0Ž2ÝOtB&èó²¨A/S
+E¸"lC+ÍÃþã’_Ñׄ«w;q¹YÐ
+ ø¶"~3ÀÿÞ1Õ
+Õ‚ÚfÝÁ³ªÏ–äYx5ƒPû
+kÀŠŠ¹â“ÿÛ1Ýì9B1ãy8G
+Ü3mYoÿ$\x'Åå²vä~µçÿ•O=ë(÷b¿õÖ§…î¿
+ÄR HÏê;mzùÞˤ·qˆÂ…G è"ek9Ì!+0‡tΩsQ{É£$ƒØžÁüûy¯Hj±D%vŒ9$–T"«H«¾×Þ¹Ì:s)´¨$Š” µùƒC_wòp)_±C8I,ÎÙrgÝrÊO¢ö˜«…ÐVÝ¥VÜ]`ë Å¿©+ª;‚%2Y>¦$@rµ¢’4“—-‘W²/š¼×Ý…Y== nû±5J×ò“¬1m”¦›é4Cl’e+nãfõ&xº¤Q­_ßÔšAîd‹w6WÕ®ÉØ©ìœ/¼¾rɇʞ5'u”«(G³!£6yw¬+{Á:ËX…¼u>cíoID[ƒi·Çì­Á¶d†ã2m¦ÖñœaöDb`´Óˆõèù|:ë÷‰Àà!kH!6µ/¤Ÿ’t†iF´b’7§pD*& v
+^킧M±µ2Í ÁLap„N¢Ò0Ÿ›ãƒ*XT‡ð!t‹{~í,{Ž÷¤Zƃíý Õ¼É\½eõZ†³öÙÚYÆVhp¦1©÷s€hð&sí{ë)7©üÓ ã$û9ÓY‹LóåP±1ö½/×Ô„>ŠÊ|CY*2Nwd\ó!»Nêz3´¤$)Üîå3¦¥s€†Š.º–ÿöúe!}•xÐÉÖ–7ùR¼+£zP²§ä8]oµ]%·´\º`[‰5Û—XqÚŽê‰%„¿3¾+›cœ`æ^ëœö,m™q¼mgRI‘“øæa.žåù3z+ù=“•j®Öô¯ë‘CŒ[%<ƒêgrg„ê@ˆŽWr¦lÈlŽ&š‘HlüA3Ìê0»¸CæCEœk¥‚:ïRé623ií«göô ’o¹ZgO‡ñ*:ËЀ\­ñô WQ‡Ò¶µZY“2”òKÚŒžMu†ÒÛ…ƈžžO®¿ÞK‹¼¥˜¹þ~Nà ·xr}ÕÂã'2ã|šsÚšéñ$6Òûò‹z0ñ¢H±i¤J}ôs(EÓV§´O
+–·ä¬ÿF‡ç¬÷1œ•)
+fê?½f² X5ÚżžOÚÀh~ oCV˜¶_ŸÐ¡4gg”ȶ_ŸîÁ4³ 93”@‡¿Ýa îoyªå8±å¡]0‡0=ªf®1x Î¥§“:7&a¶§m:×Bç!”¨–ÎcùüÝQâé%Ðû78ŸÕcﺻ.ê˜ÂìmbSë ËÞÄâtò´t¯äÀ>óôÚËX¶ê‰?Ëè o!ж5n"hÐ-—r¿e¸roíêwöÔîÕâ•£9 ÿV‹íà`óNý¢mE© G¸|äÃ7Ûñ°Z¡„‰wõGo8W«Í¶”¡ÕÓ&:+&᱑ªr£ÊÖ,ò
+c©¶J‚YG¹úË;ûË'¥x¬dÞrñ'ÞŸÊíƒ:NÝ´8)¨k\ć€ºá³ Þv<êÞÏi@½»ÌqPÿä
+kP®Ðº÷sPïxõÏ.̃zpaÔk7§õý,=9¨ëL£'ê~½'õîjõƒ>ö0¨¾³]°O˜Ã߇¾™ÕCŒ[mxi¼
+‚zÈì¸&dvä4[6 ™}Üó¨ûÊ®ó ££îaBŸEÒÝ×êòîæ‚)c³X˜šÝºÆV\Ѿ/P¬sûà§ãlMÞg'älÝåìÖ‘ž1:{Ì»˜½ØÈ&ˆ‰|¸¾¹øÒ¢ÿ8©l,C±Œ+5!?D™lEo3Mâ!ôæ^jó¡,t»~D:Ãy–d &„º!k½C£E9[
+endstream endobj 1052 0 obj <</Contents 1053 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1053 0 obj <</Filter/FlateDecode/Length 4665>>stream
+H‰¬WmoÛ8þ+ü(µ*¾Šúr@›ÝФk»Y`7‡ƒë(­÷;µ.úïofHêÅØŠ*²†óFgžçý”åôoý½ý8ÉÙ· {;åÿÍgÓ;Vfy®-(™6™ÉsÉŠ’gRä†MXÂÒéߤÁF(š3¡3#K6²:³\²é-KΧ“ R8Ÿ²L–*ã…/
+ԅ͸a<ãl]±?Ø’½Ÿ¶£AÛB¡íQpóO7DgÒÇ(rã_Îït.R.ÍÇ¿’]»YÊ•åì&I¹ID:âIŽß9¾éô?ÓcÀ¿CÈZˆÌØ:d¹7Z ´»¤½]2òâìë¶}.²òÙ‘Å€#=à(W7iË—(󌷶_áÈÙØu$DÑΠʦñR”/9dÝrÑ;äv6g,?¦6ùü²Wt~’ýÄ¿žã:ÕÉ_«%K¹L`sU8ýœALëî«~ÝTŒŠD´ß‚
++Lž HÅhÈè¹L8eB‰È^"hŽ1ôâ¹8û1-’õêé‘]Ϊv
+žüJ¥M+6[Þ²æäºNœmÛËFÊÒï™PMÁöî›JîèéÞ—s|Vi™Ô>~@³Î3ÛÔÆó QÈ&QÝKÔ™ë%:©fËí"å*™oØmE=`ŽÕºxtŸWËÎ$ÈM;ªÃ؈1)¤Z9tryAµÒÌßí%\ê´Äp‹É ˆJ›Põ‡ÛÈÙü¾?ÀdÁ¿÷ôwDŠ÷¬y»CÿÜk°_êÂSeV
+/9†HR^Xšû±€J6*†BÊdÜ8&Œ$"qGÄþÐD«žyhàSt)çJéêiË®îØ—iÊódüîîðÍU«áÖŸµÉDçw íÙº€[.¿ò§”—ÉùøüP ™=ÿà Ò\6u½sŠq' ç­
+gå&™W÷÷XÐä&…Ë\ÝW8çXØ"Áylå*¤Ëšr–ÀÁ0´]±sÌJ$ãT&ï.ß°‘ë›Ô«“&*ÙÌÁD&ó¢I Šº) ¥^Tµþ”Ž¨Zïc¸.y‘ÙP´’gÚ I9LÝ/”mDÏ5È .DÛo(éˆ*Š‹Æ³UYÛo(øˆ2Š±yqs­­ì¯CD¹¿å°ò¸FÛÕqŸ¿p2ÐÒàžã峨ïWnAy—qˆ4åÍ œà £ONÔ†
+é_—¸f † éW\XNê‹tT$wÔPB¶!ã1äzªä,IxÀ¾ÌœF=‰ÖÕ'Z›DÂ9™ý…¯lC¢ÇÇÕÚ9” úõW*º~ÈØðs8Üý¢$f°~Kûi1B‘½®0òªgg‚¡•ÿ [­ÿGºkÚ¥…„'äŠ4[™ÁÙAzÈr÷N[W¹“¤S3²nx®KêµIˆØÒÙ‹äg…ïkJa†¯ßèCyã±0À[
+ñšÄˆ¢¾7/"!„ˆEÛç±.N&Ýäö‹ãóª‰E4/O,‚‹“‰EÇÑ0±8!@,¢é8bQ{x=b±[Œ¯I, /Z=ò0bR}5bÑMôHbqü×Ä"rÄæiÀr!áó Wê£ Z,€ýR×ÐßônT¡ÅÄ…ÅÄgEÅIÅÄ!K,²4ã¿iêÙŸãö†R@2'àÎ&EàF+
+17bݼIÀ9}A1P$šÕ?oènª-ûŠ¿~Q'ÚR?A»Ûò¼ƒI‚ÞãKê0glK"öèüyÇ?»mSÒ
+Sx×0%j5‹[„D{ðy»ÀMZÑð^‚s ‘³1ú|—Šä=¾°¯ÕlMwT`ƒ”H
+§¶+ x‘ã¶IGB¶É׿ÑV5ßV·`–S;SíN«•‡ïÂÁ÷‘2ð õûŒ¶ï–`ÒŠž@G¹žR°Ÿ ´Këñ1ú<AÆ6¾†w‹ìKzbÈØq1Æ]"[J6ÈEòQ€Eþš\D•²¾$/â"!„! ¼ç·&$mÇC„$ø9€ x ¬¤›æ~Vrb†55‰f(´
+(ÓãXJ?')$ì>:€IÓtÒ—RÀM½œÌTÐZÿNÎTÚâ¢2ÐzDEçœÆ0VòBeGôhÄ^e8àGQ{´—îAL,m‰_bbwLÜ¥n‚—¡ùÊ"Ê#TÁ[”t=_Ÿ±ß®
+QŠäýÅ´î¢
+½ÃT&žß$
+zK}ùÄ–Âœ‡ÈVûꊮ&sðMƒÞöCûÚ‹-†ytŒÈ[ô“M˜Ãb_¹z0ÂK‹äP©ܲEƒ˜ª6C¼Wó .Àe½ŠnsÉ®¨åwŽèF*çè㌆zd :iñ_ æ³’Ú@>[Ì-Õàí5îoè^\×ôÿpÄ"‡ª~ØGè|ázO$#:Ô .¿"|%vϸîwÍ¢¢Æ8Ú‘Æ¡ lúr¦ôM/Õ˜N=4–傲@¿¸ž£¿¹bÎ}î8™‹›ñ\Y¹ó˜Óz¼‚·Kž€T¹Gê{ÔLvø¿‡…ÿGû¯×¸«Äñ+'óTŽ‚{-¿ñH³£´®‰,oÄêé =´˜}CÖ¦{xµéü ʈ©D2”_9ظPÔySªpû"oìx*'¬GÓ‚ýá¸dÖ#€W—¿¾£töÍóNܬ6U_kxàÚ-¼Š¹ŽE¨órxÀÈÑoTHÕ¤Hü%±i"ÑØ×(Í[(ÊêPm*ªjmßš¡ór.CE2C‡/I ×¼˜¡?Ìq4öuíýjûOÕ˜Û¤xsbp’žKL§%ºp§”¯8:YLGs¾&*Ž\f?溘í*ⸯ«ýéiAçéò¶¤—sI™÷K³|Q?ªÀÒlÝò¾«6«í±ÆÔ BQ1O
+P†:/¤Õ{QÕ®ÙÓåˆ7§¥”Íÿé´rêu%¥œPªIá@B "CëêðhË"Š»gYuQtÂkµ_±Ù ÌñÊ‘ÞÇu¼žý.!Z¬ûùm®r÷’ø³Z­÷MÃËŧÙÒ@JÎ>Í¡bDçÔÅ@t'ô`­|\ÙÞò.^<4OtÁ_õ€Èó+ ‹¹ž’*gcLRT¯bÍ¡¦ãnè<?†oü—fò,¾4ϘYÛõ@†Ë¯ÝÃOj örwH¤­¡£qäÏ
+ çh”âå÷ÝÓj»"ŒÚY=$ŽFfƒÐ?I›ÙK<ED†üf`•£¢ǽWs»9»Öï~Äüh7¹š½çˆu<lu`òrÌä©Ï3w–ÚþÓoVß犊•ÉÎuz?—Ùì–ðÍ…Å3ö†šñ ík€¦¾!rÓMaZºâ—Ù]ZÛ<oĶIDów⼸mó¨·Ô>¸¥¬‰ø{¬?=WÌ ë_h>òºáÓš©cñfM—ÞÇ+Õ” ÓÉLdµ2¬5+Ll;†Ddõ„5,ý_€
+endstream endobj 1054 0 obj <</Contents 1055 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1055 0 obj <</Filter/FlateDecode/Length 4175>>stream
+H‰¤WYoÛHþ+ýØ\ÄL_l’/2Ž6ãE¯­Ù<Ø‹#Ѳ¥Hòó離ºy«¥É†IŠÅ®ó«ë—9ô·_±×ïï[Øë¹üŸ`’ÍŸX ‘(ú g‰­š¥¹Œµ–Í7Œ³hþ:!Ý '´`*‰­ÎÙU–Ä™Ôl¾d|6¿¿¡³9ûÆtnb`žf ÅHfóX*&ðfû’}a5ûeÞWY+‰¬¯H
+ðü>ÔÐqô**áT|pbç÷LªH*ž0#ñ®£ÿÎÿ…šüt1VÇÖ´º(Tìœ*¨Å@´c0ÍcKÛŠ
+fÒ3³Ÿ]],õû(ã··ˆ^°ÞPü4ûï%Æq%ü€ëmÍ"©98×4ÑìÈô]UøöP2¾ê‡’&ƒèX+LÃLºdŠ$SYHüÐ º´–ÜÌ^¿R¾ß¾ìاbSö5IçªUᢓˆ9#™ƒì“yN îEÐ=»03Dl&ÆÝbÊCY/v)ÇéÏØ圳Ka èD¨46írÑ
+"6cAwE½*É¥õß</Ι£5ÐI¥FvY¥¦ù%"ÙÒBò?"ñ]ÉŠzÉºÈ …8ÞÙÄm¤÷Y¢
++
+QÀ0/}SP ï¿
+›XÈ>Vê0V„|1 PÚÌcZþ7íÀ›I2\?„D×/n™LÇb3’òÀßBÔe
+±ïwvš´—ÒyØÄñèØ”.‘Gî@¼ÒÐoá ²sì™[œg'U£3¼eBðO‘å¿Áÿ‡@hæ`Må1˜Äiæ1øÀ ˜|$/ÖXǪâkEsûu0m‰TÔ
+®ÀSÐà&Mê8lp283)þåž7ø\ÖG“¬ØGàÆ’U[¤­VôÉ/mñn
+Ô¢
+Š÷ñ¹$Õ¡¯É€¢)Í£’ìb¢[†Gt4f_ãìWÐå Ã‘ùÀ–ª~Íž¶ûät°,DÄÚO&n½¯^jg2N‡|hfظA’vÞXÑHTˆqñuK”’ !}gµi7LÕ‰u1žì¥*˜Ò5KvÊ[ͽ°M±Û! À
+.Éésš(žQæ:Âí¦Ç›[–O( _ÕH+#åh0èdîó’íŠ}AÓÉ&Rš>9F†îû£ó[\°öìÆ'è <ÝâÔ™ò1A6&XŸZŽ#ÊzAò©¥—‚E¶5¨ ˜Âpq ŠŠ’0Ò6Žd—tßXÃvÆ `ÓÎ&àüKÛ‰LÚ QOú&ñCOBïíVÚ›Ùë÷ õ~û²cŸŠMÙ­"ß,¶q®Z.jpz s\F‚Û‰†ää
+š‚ _À”Pâ8tX €×;÷z[÷AœÈ<þA Ô óg¢ì:8”t(À“n4$N†×ÉΟÕd¬'b¯2Ýd¢ùÎ"ûÎ"ûÎ"{ÔáºÒŽ{‹vÙÂ/*»Š
+“ñõ¯Ÿo®gìz‹]¥j/%^جŽ®·ÁOú¤¦îƒâ©ôn ]©„Ø?T’*SP¢XiÜ ¿\Š«%Z}fµ4P¹RÕL,_u±
+КXÈM¬ä&V²U€:Z-OW„Ê©Å
+RÛC}€Ö þOÒ«mÇmˆþŠå"VER¤¤—
+¿‚6Z£8"ÖµVø êY<ƒp‡>9’”BÛs‡ÓøgµåZB¤ô–žC<slN•ažÁ¿ÒÍÇ?IQðÍÝ/$óî±mn°ì+:-÷.ë
+Ef¸‚ªPQòhV2Ó6ZºÞ1µ
+h½Ú œ ìŒ+ØÍά °Ê«¯Æ[´Oo6j¼k_*Œ7šë¸x]a¨èí+‰ñ.URH:ŸqdÎsÁ]] *ß:kƒg‰å†{…ó!õ¦@gh3lžÓŸ4¤¯K‚ xí‚VÙêבðäA2¥Ïr
+”?½ÐÏðu¶UŠèlØ‹À&Цol²,°”6ø=¬N¿B°î”|Àf°ÁòJvX´-6/Ð
+ q
+›é© &±o›sG?1­Œa Ok,HàYâz®*thÙjÖ²i=<{] ¨ê‡ÍÏ¿á^/ÇäãöiLTAéÕ2lá*1:''v•Iàe…85ª©§€ªWiyÁD£µfi~z^”Nmߌ2”ªÆBÿÁ í*—2”ZŒm²x5Cw™óh´Ö4ÚݶJ<ˆX+èó?š.’_JL)H%†É¯ –2¼`ù\OÑzÓˆˆRWïÿ­T”,Ùö»$^ä8ˆ]»ZNIÂ^¡Pú¸Šêù }Úß}cÉK=¬Éšo¼Fhh¯åªb²z¶ZmžìçöiÛŸ;"­§d×"‘95àîh‡ýĤà1<Úù_¸eûÆK##qœÒoœ±ûà]ö…V¿(È8›#œÙ½þœÙ=ïœÙí™±.åÒw]KÉF‡kj<R8[xó¡G¸+&¦jè‘[¢ÊÆSeË‹ó´OPhsÞ­¬
+‘±Ú:dŒó2ûTlŠ¢†,ªð÷¿úGdc¤“3 ÒdãôóŸÈzE‘‰RúÚŠE¦þN•úr¤HveDEí+Ò 5êã»dwø¶uÚï»±#øõ÷áüu2 „n×aèþq½ÅÙýn—±WTkO'ôL­¼¤ìsn
+endstream endobj 1056 0 obj <</Contents 1057 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1518 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1057 0 obj <</Filter/FlateDecode/Length 4394>>stream
+H‰¬WÛnÛHý•~$Ó76ÉÇŒc^LŒ¬-gÖ‹…"Ó17²ä‘ä ò÷S§ºye'&)ëÖu;õû\HþÛ~o?\Kñu'ÞÎÕ¥Pb~/ŠDÊTó…H]â¤4"+Tb´tbþ("ÏÿÇÊsHâ
+—:DÈšF¹)ãjåsr1HYµñÌFçñÌDâ.žÿïé+:’5}Ã/vbO7ÅL¥x‡  Ä'=ÆZú÷%¿¦ƒÎ#Q|Ïï¼fÝ/(0™§­žqm% 
+éëñLGH”´à&šî|æïb=“$R@•[vŒYƒu/–^Ǫ\î+~„[ ‚¨#û§ ®‘SÕ©ŒsÔ¥t{)EUZ?ñ0CYÎ^ ½8û¶nžŸÄåâ±ì6•RÐtc‹°ò‘^/e 8bTE‘8Ûè±ä@þº–{@˹ù •VîÊõ²ç¡¦<ÌNöÐK9æ¡vŽÛZУ³Ä¾èaæXËj»Z¬¿–½FjÐáNt Bä1ÇŒ!WZ5³ó¥ÈµmTg%ä 5"KC½ÿˆM=•b±¾£&”xÙùa—ŒUáôdždM Ú–¨ç{¾úçõ×2.º5iµIÚ0¾<µiMG¶°´±³×åãb½§vg£åNÜ•Üù—HàêÉ¿Þ¬{óÜ?êþèòÚ'£ìLb)Æ”´ÆÑAêò…Ä߈Öå UfKN‚mGy%†B jIAñTU¨Iš¶ž§ÈF)¼™"[:Tý9Ø<A\™Õ]W©QŒýB×uE†Bü1Ö
+ƒ„†ÜÙf…D[ùl£7”w±
+’Ûob ¬G€ §Ô„‘oZ¶É•2‘,Ná= {Ü™Z”xÜAŽ…ÛŠhtûÏÝàó|ðùæ¿1§‚ed [ø¦c´rlsí Ë <:PF<ÚŽyŽ1o~€×è¼ jc»•mOªç»Áù‰I’!|Q«¯»¥>‚–'25m2P!·Õ¦ôJõdG-Éèõ¹Nò¶'H¡'¨¡'¨¡'¨¾'ˆã2T öɧ«PYòò@þQá¶þ4¶ÃEì7ŒrWxÏ_[ÔKRT¦ëÚj‹Ð%ºø¥¼žŸX“7£ÍŠ¬ÍŠ¢®H׫ÈooÄÝæ{¬Šh½ªÖHzƒÛ—ÍþaÖJrM†ôR•ôV°aým¶
+h–£É:Åy€Ú²†Ú {ÛÔŽ–f0½‹†‹f nTzdÓL­¦ëmšºÙ4U˜g¼dni¹¦=ËægºŸÑÿbóT‚¶ ü“Ö#ñ‰çá
+ u®ü¦b!Ëž1û>6¯‹_ïc¯HÜœ‹Ec g—bÖVÁ:¯c]}f‹ø2#Ÿ– ¶iÁ"WeÒÁÇÔŸ©T¤äŽ}úÊ
+qIù«VV*fÛšð«++K(y†Zë9meeY#7§VVj}úd½”c곶VsÚÆ
+QÃ8Ž7VjV:?Ù1–rÌ1C‹_Þ ‡—C§¦¶I–u C¹ uo]Ý–÷åvMSPóѧ:í¥sÚ2Šjþ6W3Tøk›«9Ù{/eÚûTr'ÁÎŽfaŸHÜÈþ”……G™ƒù²W"„;²<Iõ$Y›´›ï#2-Œfš»FäÚî ò=·ë‡ß›ú'f£- µŽööúŠÆîçØÐh°üÏc3šÆІ´ÆÌ¡$ˆ ÀjÒ_ðnÅ™i貂
+rÖjvª¯8äæ$7‘[يΆZÜôNq{ÐÛ:-i_Wää‘ ÿ,òµ´.:yùê¼E¾G€¯%@.mø*¾E¤)qéR4Ð÷†ºä)wEï.c 1
+¯BÁ
+†¬‘›“(8Î?ÑC/嘇:U¨“Zω0²†ÚF08+þÏXÊ1Ï FVëb~)vÇ@‚x OÃrÛÅÂm(ûJ¼ì)°­œ‡ö&/P5 )Qº÷|õÏë%®e+¸(­L»þžŒ€YÜÈÛŸFÀRõ¢ðšh÷¡ ˜´3È&K{ŠÎGã°O´.ÇíZ}œ×Psj€±H®±‡ã4AÖÆàÍ$Ùã‹)²ÉÒcdoöu }Û8«qVœs
+d:ù¬ùí "ä:"Sä‘ r‘ rˆÈuÕ wøTD\†ñ"âQÂûXe äY„üU1¸¸ô»D¬£p¿
+X™Ò")ütƒmB&‰v9ø­áÚ”×…—±ˆ¢É6ÍØ‘ÒÊiÑ‘3G<T;Q­ïñ¸Ù>.Ð8ödKEݨ¬\1:{ŒgÆã´õ^TЈ\ÿ¸A</:&dmÂ0aþ©]ÒrÖ=¯q«þ|.q_ýàuç{¬€5 íªµ¸¡³a;¯èáA¿Kº·]ÖáS Á$Ÿê=ô„]‹lFaìð³ÂÏ¡™=ÿdƒù“{,â/Ö«¦§q$ˆþi¹ÛÝþ8î +‘™ËNæ³DDJ2»ß«ö·Ý!„ÄÕUÝÕ®ª÷Þýübzs¬œ>6ÒRåÃ*H+AÕ$7àó›âq+9^šfL¤ø÷¸ Š%+ˆ¸@?bþÿ)]ÙïC”³6þ>Œ øLYíÙ¨U)üìH:×¥g•º6,͠画ËÊ&öxÓL2Sšq’xDÕy½EÕUVĶeY5<Î47ÎÊÚÙh|¾#VŸ¢‹ÞT:±š™úµ]îıÙ)m§ó„$õj»˜ôãö!(1‘‡eß-Ò4j£‘“§DÚ´©üfSI¤­×n¯çÔBix9¦¡P5õß‚L5"ê* ìdÿ]ÿ¥l¦#î¤ci–öÞl¹ÉzES! žø¸ êÕá-›ëzB ÅàÁåàs÷È–$gL«µ÷ÞsŠÝ |ùe¬do42×Ö›˜wlixÊïà›ì²àlÒñ,â3Üã:©ü'ÿÍÐ6ÒM£0!>¨>Aº!œ¼:|–%ÝLÊùPá½ÒM¢ô6îI·”¡«}>(Ýk¦Wº¿èf袜Ê$M†”nŒÕßm Ý2õ™I”S™q†5‰a½©e”OR Ô¨´NÜÑl÷Åc±ï¿L£?œ/B¸æñæklÚÊפç(ÕijC îÊ6Ÿ:•Àž
+Õ ``#° |)-P À’¾U؈ó]'77@¶®Ñ$ª‹õV))ï“Î| SgïÐgÖ±å^^sž{mo'÷G®í1•€n!Q6¸ôÁ L Æ·»õŠ³ýY èz÷$.„âÍ‹#ˆlJý‹hS!Ÿí×'ŠËZÓ ýcÙ@&ªÈ;BÿdjUN12M²(ÿt] 
+„e^á4‘û,šï÷°ß
+3ܶ«:öx«4¯mCªìjÜãJ3 µ4©rîwÍs)ëêÐ&# 7¾U‹xÜ ×·7îh‹ª|÷5b>É•½\3Òg‰Ÿ&›¦’<Y¥1yrâåÉÆ5‹ÐãEq8Íí^ÁùPTÒµSÔ¢|9WXûÀ¯Ïœ§BAãðé… ^ೈüºáó5Wwû‰JÞM·ðæ<ºÍK0Í}Dôè6C?ó¯J¯˜Ê#2âÕC“NÆt Óq¢A‡7UF%»Vá~Œ²«¼¢¡NµTw›±ón‚Õó3#$á`7\Ζó³ƒñÁ°‰P™#áàϘ$YÅÕ¹ºØÿ+)`á+ûý®]|]ÌÝqrƒ
+endstream endobj 1058 0 obj <</Contents 1059 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1059 0 obj <</Filter/FlateDecode/Length 4659>>stream
+H‰¤WioÛÌþ+ûqYD ÷à±Ç T¸†©-Ð×/
+FZÛldR¯H7È¿ïËC—•6b-÷˜yfæÙÙ™K‘пݓxÿy‘ˆ§V¼_ª%B‰å£pq’¤š68‘fq–$FäNÅF'™X¾)¢å¿é„â œÀ¥•Ðiœ'fEʈåZÈ›åbNn–âaœAx^€ Çu«L¨„‹ÿµø°œ¢AÙÚ¢ìY¯æû>D0ê„1þÆz— P)-Saþñwžˆ#%mœˆ©Lêh¦d‚ó
+GiôûòÏø¯
+Ä'ñØ;d‚“bU¶…÷=Ò]9ÌÞ$g#:>ÍèÏÑA9r”•û¤è¹Jêi
+Qz†ÅY»ð/eÝUX­Z±öT%®¿Õ–§›z¯W€úKýÞ¯sI@¢ÏE93±…Û™)pTyÈ]úâmå§,§jç gá¾»,,ê$Î3^UN]Ó6Çñ¹ec4]ësË.;Ï.ÌgV«ó·£œÁ]!Àƒä%ÆqE&×ã¸Å0Sqø#r¡
+}b%á%ăÄaIS?BÛ¢r¨
+k8Ó/C‡ª§Ù1ä¸s§µ%œýra÷skHçNãaŒ0SÔ!Až=ìr|d£Ef&ýs§O¬ŽGCv5{o•ËЧ˜Maˆ~Ê): ™¾VyÙ(<®Á’œ ÏtrŠ$…9Š*Ƙ]¬c¤?d%̱óWé4wr¹Ãœ5;p IKœÕiæäUK“ØgÈUÙúYøÛÀñš96µ¯ò&¿§í³®À‚}x00¥<C{Taß üÆSòi%yXÃb'x94'5~™Küß`i³¢Î³ì<æ™BbÎ¥ØÔYùGPcÁô /'yǪÙí<7-õø¨Þˆ/X£¡bt®~¨©ƒt"'TßÉÍNµrÇÍj,>5QßRéÅõB¬ÃIèíÀ g.îUkRCÝ(}·˜!¸‡›¶—*OB­hžÎ²qƒ]íšÃ(ç¥lÇÀ‚åBK}&¶»¾â’•
+Í.+Iúå€äoï‘úb‹{é@
+´~ToJu/3A"CY6’$Õ—ÁîGbÇóãcñIVX£LH£´R'd³Z&d¶b%h6r$d¶1¬v7=]Žv4é —ØŸÁH6MEr öˆ…£
+ü!uúdaÊ߇wšeà3&¹áá,fEvœ'}긎|˜ †N=šc](’§c0aàˆ¦íàvIs½ƒ`ÚÀ±¸PNÕ†›$šf·©¨,œ+ᘈ—ãlšÁœD@˜æˆŽÎ3ö”I ][Í‹¬‹®´I”ŽŽ…5s®»Cì*?`s•0»Ê™må̶òÖAåvIpÎA ßÇg[/Q!hÍ
+ušcrù–f!Æ•Á³ ,.fçmöÃì— …ÈGÄK2E–3jãò¦4 b,Á4+¦$v?ñiê¥9d³i™mšƒf“æÙ¤9díïmƒÊòJ¡Ä¨Ê`‚* $ÝÁúÌòÕü_U^\õ°¸àëŒeÇy{ÖFD
+Ø\Ì®‚Cf[Á³­à€õ
+.q¬¼E+ºzà ¸…F°vC-ò©qÇ+3ÚX‚;ÜÒfetöd¡©ûyMdœÃRjJ’\ðT åíDæÆB'¸Æ”N.€cRR˹àCð+ct¹ÀY¸>^\ÓK:!Ѽ~Á·¯d¯q³Æ¯šŹ‚•_?áû»z;™§Í”×z ‡*B]´ÒÓ¢Õ’ & àÙŽ
+
+å«©?Âkx>ÚYt¥¬p;;»øér’ÇÛÍëstµ|ªÿ?
+¥*A>¶B3˱JØ.—
+endstream endobj 1060 0 obj <</Contents 1061 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1061 0 obj <</Filter/FlateDecode/Length 3263>>stream
+H‰¬WisÛÈý+Sù¤ŠðÜ
+Žù¥K_ôÁÓeaŸu+o¬‡¤È]=—³åçf ËH[èêîÇÜ1ÛÉ—Ô¹Ÿ‹Q_Äz¿S[Rt7ÅU¨²?sSe˜-ç¢ÛXI]íûbm§‘KQöõm³[þ ÏËúlò:ëtüŽáà¹/¶®>߀w« nÏÑ«æa¶Ü.re³›˜7Ô‰67”«‹Çp¼ZŽ&Ú•zI¾R§ì u¶²”˜
+~!YùâowˆÖW0b@vì^Km %jY”>PU­’4mKzN‘Ñ\Â)rí —ænmNPÛÛÔƒ(»>Êå^”}M‰† SZÛäŸÎ÷4TÄi^eSŠêÅäâN‰"®šßŸ¨/…ä#É–Ûš$ñRLT¡,T½ƒ¤sôç' ª‡ëf«ªÍW¶Æ3+p“<l”-T‰v˜ç`þIˆ|bêÊfgù¤‚,$ýô$Ÿøì”?/Eî¨À?ø%a°Ìz›ŒîlR®(MÕF²‹Â;ghp9  À§ccŠo¬,$îwÀŒqÙÝb#Pö‹% ™/nrTÿlÛЯØÞÑw#69l¢ë¢ŸÔÊñÕkÒƒVcIÓô¯¾|z¸îÇ¿XÝòØßÞ5‚¦Ý^4z»}owՇ‡H|ÉU ›oîìfkšÿåÚf[±]‰ë†0m¶äñÃ]3˜¬9»:½:/bAöUcíŠkɲDŠ·Ù‹Ì«R•¦ï3×\‚4:‰d`-=,æX’ nmÙÎH®ì¸ÄŠMpcŠž
+'ÌÐêXÏ)溤žØ9m,…l¯G%¸P{Ö¶˜Qk­=Ý)?aôˆI}]A5ˆán4l#<®4^*yV +£Ÿ(–„þÞÉ)ã†C}¤.tAe6šUo‘®«€i=ÿàŠÓ=`|€«¯³³wœ‰œ~/BëˆP±jajÂ)d¡îšÚ4Ÿh…
+È' ¨u&θc •À6LÔ’Ój`Â&•¿¼Üðl/Q t†*D· Ò.pN­\áài¹ä—î‰Q°èe_ f§Ü?fóÇÕ"Ç@§6±Åƒ8›7Ýu½[º@z§A+XC¹É.©žˆß¸·°æþÏŠ=C=?uƒ†ÑÌË`Êš_ºcNÁÞöï­Å#N,l·Ùl^¡·×œÙ’Þy\­ÙÊëfK¶}É5ø‚ÁAÚeÎ}ºÎÞæÕ^£ëgPè®PVgsê™u´ê=Y<!‹Oá«œm/‚>`$:ëÍâvÏKA“
+€”F¾
+É=½AÊŽâCËJÔó ËÊmqc»y|cy¡‡ÝÚ’ôP;GÓ#êù†½å€6–µ«mwyÑ•¦󥞱”£ž¡9c&D=˜tÏÇNU m,ë@ŠrÓ£ýeÝÜ6ëÝpšŠšêKRŽ9Ý®3Ó?jûýëÌ ½ïvš„÷y ت÷¦ú˜HËìâ˜sœ¹5_ŽJ$€¨w»äD%ɵfÆ.¹ÅA)r´;A>°Ø7ÍXB«Žá~»Z¯›ûÙ–» é¸ 1Æ^Ô3%=Í÷A+®«¸Ã86…óDöëKiLöØ[B´¼`POÛ½å*üÊil‚zÆxN§<óºñ)ûbV(~q=iù”]ýûäSf?å´ÈØÈFx¹¬ˆ/gcî±qÕ‡R(]m
+_ÅSQhP ¤ûa†µ9”â&²ï¨@j#°ÛfXŠ¹…é‘lõ5d_’ä²7KIWTÃŤÍÎ{‹Ò;v ôÑ~ÑfoŠý9…ÓShÖa+ñÕ°Wì„)#D÷þDwŽ;á¢k@tÏ(nÊx(öžð x (Î
+¶ºš O4á{a+KÙQ|¶F=?¶ŽÝ<[_èa[“êÒ},_†ZI”ÜU¶‹ZäÞõBÇ‚”cŽ•H ácZÂ×ûj¬
+)»›š WÕ®öÑ;$;‡µm€$A«`ÝPåÝògx^Þp-òºÙb R£›? ¤Ž½ýNúM>ŒOÁm!€6hÝ ˆ‰.´Ý™”ú^©{ìª%5€ˆ’´ˆdc4WsŠÜNÿ¹µ9A݇¦}Õ~J™J* 0PvsxJa\ç˜­Ë ‚÷¹¢A;¡W4?h‰× ¹òèWt¸ “wp㲟ú1 ã,þôÕ¸×nNÒ̧©ï2EJ À”ÖeGBãÿ Få_6bd½f),›‹Ö=@5}ËN* T[u¯ÃÐ#{YiW?}´µ=)l+…“þÖä.R´6Rä6’ä )rH†uœ œZÇÑkÓÉPjÂCm2
+Ùït]þŸðj×M‚¿²¥)8ÙóH‡… H¡
+)Ä2QL¤äï33gb'Ê£°u·ëÝÛ[ïkü ´= ˜…ò6U+:‡ÍÀ1þ¦£˜³ãT˜D©KT º½l0Šî€DT‰
+endstream endobj 1062 0 obj <</Contents 1063 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1063 0 obj <</Filter/FlateDecode/Length 3141>>stream
+H‰¤WmoÛFþ+û‘<„̾qI~ pm C‡‹ëFÌh\²DÛº³$G’[äßßÌì’»$½’S'€Dk¸óúÌ̳?4ŒÓÿý={9çìþÀÞ7âÎkîXs^Hz¡f…É çŠ•µÈ•ä†5–°´ù/ö‡(Z2YäFÕ,«Š¼Š5+–\4ó¸hØW¦jƒò²+ŽË*† ÊÙ¾e¿²-û¡ ½AÝR£î¬3ó×ÐE«Òù(¹õñ‹µÛÌÁD*dR0-ð[±ÿØòT$:çì&I…Idš‰„ãô÷æ_èð/àr!enªÞeuÒ[tt˜@:=ò.É\B¬þ"Ô/d^ŸÍˆ*_0T¼`ˆë›4°%kž‹ ýÅß0duŒ I%Ø
+F6ÔKÔuntoBƒïÕëºrhˆÔL‚»Æ:´‡v»Ä%U—o‰Ë*8—,Mî‹'Ë\Ÿ Ëohµð±O‹í}ØR\ç²zC8VÁ©pèíõs¤çjä{JN§¢c(²#4…H¾¥ªJžZ¶Ø®˜¯ÛЈÕ]McÑÚ•¦€¥N÷ÚM'wôiŸ·KülÓ:ém|…YmhL¹PÏÏC©| Å$P«nè¼Ý,¶Çu*t²<°UK#`‰X]?ÙŸwÛÁ"€é!Þ‚W«€ËXÊ54aÉa ˆ ÀJ þn$Ô¦'q¡`0ž9«q 8¡äyi¬TÔ"*“ºÄç˜X)I-×&/â§Ï©Ë¦ôUžS#¸ °
+8$˜Ó­©¿bI?„ -ÕŽV*tqT†ŸÓÌÀÌꤹH3©“ÆV„ÆŠ°cO‹"/UÅ2ÜœTÌ›TðäÓìêÒž =“­ð§÷5”þ'8p“Ìg¿]ÀJåyu“ÂMv¦?«üµMе­Ì9ÔMæŠ;ìdlµ¾_ãÞ=ˆŸsvÜÑCýŽµ[|XîðsÕ®¬þá70˜s»ÀVÙÆ»˜ÐE¶ßá»Á«Â»¥¦AeLÀ?²ö|À„€éþ 0|Gî>>¶{¼7¢ÿ([ãÐ?Ž ÉÚh¨ùè?þ•Š\ÇÈd€=µ{²·[[üFE]"éLÆn×G¦mä;¼¤ÀÃînxˆÙ+°lTº[­)÷èÙ‰š ²E>Qr›‘•s!s‡~VŸÅüô†¤Ï]è_xÖ×Þ²­C:Œw¶êudì
+èÁóæ+X’{+ò‡èrCõ~´¿Ó/ά…À+“yxX<VØ-Îîö„å )1„…ÍÒþ\ì.AÎ}/5!À©B'¡‡Øñ¡`a ä±Fµ³,Ñ2üq|Àç–]ÿæ‘J®ÒAs”a.¿$k$
+4®Ò½°ƒßÕp÷HL®ÃL€zu·„;ç±Îœû£ž¶
+Ü4ýœÙ·ÈïèÓ>i‡ÏÝ÷¡¼ò8-µçâ5“F´j&QÎÛÍb “&êòÀB”jØR¸;»î¬ï
+w#&v""v>G¤.›ã->Ȩ¿°+̺ªñ°;vkºÞµáö€Xq)Á^)qÝžîw žôé›XoÚ ¦fµmUöù9A¸RÀ>4MçÍ÷£É*™Ð4̟ɹåT Tˆ:AÙmáb`@v”(*$=eeÆ\KÆu”+w1ñÁp·@‹ÉÐbb´¨Ø-&¶@‹IG@›äÖŒ U„6›ç.Ï_Y%(æÊÀnH’^±Ñª‰Ò26Ò|œÏ"õV‘KK,§
+¾îàÌÚ
+²´îL™1aòD™+Ü¿>Ÿð“/sDÖ•9"îÊ»2GÄ®Ìé0´kªC•—e]Oº»ÞO)ñÖÒuÆ"âöÓ’òx˜c§Ïð†
+Lªæ<ù9Í
+I@Ï› xŽÙ4“ÂôëYÂ2_3X ÚÕgÞ îO³«Kϵ .·7É|öÛÅM¢oÒ›Ô_i Áp9ƒ<Ë\Ö
+uõsÁ—NÉxe‹‚
+O¿CRyp™ÉºÊFÄ]ecbWÙˆØU6"=Ñ}ïjºVEz¸\·ØÉmðr·†j¯6X•¡bõzÅå Š³@qÍCÅwÚüŸöjÙm‚¿ÂÑŠŒ<îù€ü‚•¢©M«†üg;&È[¥‡ž@Ök›Ùñ,ϲOó´Ú´mT›môNmÆ?‹‡!ídJÆïK”àDI Ž”àHIÅ+´—ÅÆz$-‰Í‘æ¯úÝ1QwZ\çÿ#<š¿CðáI²º/ ³«ƒþ6œ²Ó¹Ò}WB[´@r0“A¶Ž¬°ï¨+Ì¡‰+B´q¼ÎîÑ`'* ÑÖÚ&£Ø„Ý®:M
+Æ-¬7›¶ŽÎïü¥èšC#Km*ò±£ã$B’5ö\Ýà¤Æ©?”ùΗ›‘~¸AΞM2’iÝ·<¦4é]3Ü-&•†|2ƒzËc8ã1×^]ÎÜkß`¯WávÍÝçf¹Ìâ>Ùsäáš*oÁ@\tvèT ê­Ô|E‚jzŸ¸¢>jƒ†_/
+Ë:Ê_/8U§ÀC7ÃYR½|âÂWßÕ¶‚©kK[ܘÿ†SÞ%ïG€
+endstream endobj 1064 0 obj <</Contents 1065 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1065 0 obj <</Filter/FlateDecode/Length 3244>>stream
+H‰¬WmsÛ¸þ+øv"†xãËÇÄv\wŸk+×™;ßtX‰VØJ”O’/ãßÝR"!%¶ÇcŠÄbß°‹Ýg?NYB›{y—°Å–½ŸŠ'L°é+â$1’6̤qš$Še…ˆ•LR6]1΢é‰CXŽ84cÒÄ©*Ø$7q.›Î¿˜Þ]ÃÅ”ýÉT¡cžå E{"ãLÂg›Šý‹5ìã´o Ê–
+eOHaÓïû&Z‘­2±6þnõNÜ0-ðW±_íB ®ã$úcú´ìŸ`›.²Xjo›DCY†FíYbXÂóVEgi§BÆÅQè³fDÊø|Ïe4†'‚~Lß;ÊÒÜ«V?çšå>tmÒsÍ`ì;ù\KOVe#ŠÌˆ¢DßG=]²HbÑË"óEVÆ¡"©Tß'ÈþNKVÄâ¤KÒt¹š rµº°©Ë(ç77˜­à½Æô„ËóþVH¾‰ ßâK½nX$‡ÃÕ.‰v dÚ·¬J\ÝVŒr]ö×$‡è¤ d¨`©—N¹bóŽ<QOHz’‚-Þ“«‹÷—QÆ7ë§Gv]®ª¾Â˜í΄“ "fèÜ»^®Eª½
+ ¶ç'¦‡ŠHÌÀ¹ŒCµ­šÙž_RXÃ^î—pÌ/™¥q<™Åú¤[#Eƒ¤$‡znËfQõt©DÇ2…;VÀ1wÈõò“SecÔÝ)9¬ÿZØ=LE¶ƒK!øs¤rþX±²™³.nÃ:›@® |Ѻ ‘KNö®›æô´ïÍ ŸUTp¯ª½H©Lµ®ž®‡Ç7pô®Z•Í®Ž„æ³-›WTf˜«õ£]^7{
+ÀPí:f,¬!V áŠ#¾•ýŠÝÖÝ·Ôd§#çz¿Þ·e9Ä­”Š;*8¡úV·E;È ³ZÒsZi üa#
+qP;Ö¶â+[d¡+¤xœXÜq$r#
+á‰Êw¨ÅŠ}‚ÏÇÇ¥Û2zÛÊ 2k?iq–lþz=³{qÑJû†¹k™v=³¬ík|If‹c-N ÜK‹6Rä]g4mg\aS[ÓEø=kT' YE¯;z}¦ŒY¸P üä¦TüXÙŸfGµ¿r4Ž— °ÝJ’IQ¸“þd%3Ï™ÊrÛ:NÎ@ŒO15
+8ÝH-ÒXtÙ=ø”³]·KÌÀ+nàí]µ*DóšÏ¶l^!ÐÞÎ0ëG» µ¼—ÃpˆøÉÞ³Ã
+€p¢l¡·Ês@ ¹O€z Bó’¿&X <¤ÑZÌ"· <H¶°;DnmPÛÓ”½l“®êª|ä´@à 168ö´g{ ðæü+±
+HYJ>íÃä´Wy´“uvˆ“[ŒÜ+Unß9ì»çwW¿]ÜsyÝGxã»íg¡*¡ Yˆ-!3”U"ªŸ>}º`-Ìâ
+8=ÃŽx¥ˆZá¤C°n»ð£ë1k…ÑpЇ`=íÀºþ?ëå²Ó0 DÑ_é2EÅN˜¸KÔ Tò¥@7Eªxü>sÇ<š jë]œëñxlÇ9—a'T¬ôa¬“‡uòNàpq8Ã7Ò ‘ž'ö´ß¥Œ1Šû7¿x³O_Ÿq±.cPßö¾Ž÷Ãî¥Ã¸ùdˆ'¬Ü'ÝJ@ô˜²BJ+ôÿˆú0oݫïö†‹C9.ž—·®xáÒÒãøƒŒÛwòuŸ˜Ç¿¬sšœq[ža"â®5ýÄS&"æÉc"†eΛˆ++L&B­Ð›ˆ˜&‰$SLÄ•…%¡‘’ä3ã3šÝD[ák KLD¬7›‰V{¡‰8k«§M„²Ëž LmùÔ*F ŠŠ‰˜µ¦ãC¾•›Ž)T-
+endstream endobj 1066 0 obj <</Contents 1067 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1067 0 obj <</Filter/FlateDecode/Length 3627>>stream
+H‰¬WÛnÛHý•~$ˆÃ¾°I>z2JàE’ÍDÊ.°ñ`ÁH´­…,yd%Aþ~OUw“¥ö5S,vÝ»êœßç"ç»+ñÛÛY.®îÄosùß\H1¿u–ç…âjQØÌæ¹e-3­r+æ7"éü|Bº9Nh!T‘Y]‹IUd•Ôb¾Ét>;çÓ¹ø[èÚdP^V°bp\U™´BæP.v­ø·ØˆßçCoH·2¤{Ìü8tÑ©ô>ªÜùøÅÙÏ`"•*)„‘ôW‹¹Y*“åâ"I¥MT:‘INï%=é_óÃÂåB©ÌVËú^oÉÑÃòé‘wÉÄ'Äé/†ú¥Êê3¢Ë†Š†rs‘l©:Ïä ýÅ3 9cCJ›aLh›ÞJY?¦ÈE_äò¨ÈÃ>ìk¬ß¦Uòñ#•Ñ®ŸßéoKuÜ¥ErG«íF¤R'H® ÕÏÅ'ˆù»uÛÐÛ»Vp“¨¾üÞO5ð³æFÏ
+[r*á°d?‘ÚÎQËYòŽÖ™‚I™è¬JëDÌÎ>žÓOÁ†È€î HÄ ¹KAm ëR@]Ñ)×u¦mP>¿N,Í@¡Ô°"…7²"µ¸“lßßáÞr.ùó“&󈬨ݑ/‰8ŸŠÕ2&¾!éôÐ.Å~+Vü\®;ûk<·‚„·éÄ$íbu¹Zðïv÷²ûǪΖä4¢{;[‹–4ßî¶|f‰Y¨½LežlIï.Xbã‹u:©òjÉF—âNÈäŒ*>xVÉ ÒÞ¢Jxn“†ß]‘ŠL„bÿ-0H*\DYrÛÚêZY„0r}Ô´¬Ê%ëAÓžO{›–ÉnûíV|hnÚᬑê¬:ô`Ð)»NËÈp"÷SÖufMgÇ €êqSø„5ÖuæGº|í]»YD¨Ðºå‹#tZî‹PÙšF7£ÊÌ< ¯å±1R•}j6WíÁh-)‰/ ŒµÜ˜Öe¦z;R>¢KÝr>¶æt­á¢홊t{HüÙ¼–;G ³çKû3ÕurÛŠf³GcØ›pŠ«HLFºÛXæUVvCr×Òl¸äÿÝófÁÓ‚æq?Œ¶ÍËXé>ÒâÈÖ6îœ/ɬ½i6û ìÅX¶¼{t_V·îõvs€@h8>­³—'?jà¾ÈVgÃ
+ÚT%»‹î
+M¯}Ø]ùjDd¡q¨FLì«ûjD¤‡Õà"Ô|÷¥ÄÔÀ·Ñz¨:Ó]=Þ1:#Lúš Œxﲆº[„ ‹T•Hè? \ógó)à‹Jæîc×v0yL!‡Xw~6§R~:ÿð¶.aR1ôpÄãü?Ó‹D]¤Ä ÌCÊÐlÒX2¾…Ô£ò¹GÝP™3-Å›7o¦‚ãÚP;"MöîEC/ÖëíTÖ säq›hªi¼Mr°²ªç¢y5h“ˆ,´IDÚ$&ömû6‰Hïk“ª¨â×ÖÔ%mö0š©AÑ%¶¬ŸÑ%¦|\›Øû»„>uE7Ìûâ©SÓÚ‰Mi°ú$ö”T1AÒ¦ÒÇŽBFo‚¸°„ú£¾3b§•a?ƒ¸2‡kÄ7Nì´Ö:ë¥B½öm=Œú烠µ¡ü÷[ìô iÔ÷¤v= <n)Ô} ÐÈ´ZÐX£<Ú>Ø(¸Â@(™Tb™ƒ^JÖD° èÁ}FGûF¦]‘J™èLâäsÎvDytoŽ¡pNR,&HöDÜh=ißa¯'q-ºéô#
+ðN¹æ˜DDèl²º«M:±É%hÝ–ˆuÚ䆦S³_ñ« 1¶v p†N¿;rOôz/ ±è7üº£ëÙ.éŒ*ÄýXÑ×,ŒÝ;³W¤zOž´bÍŸ/œUY9³=ËÔPæá«Ð ¸aþâo/yS7âó”Hk κb¢Ù®öäÑÌvù¬Ý}ÇójA1H¤žn/\T”ÿ-}ñ¶Ý^á‹]s{Í6ëÞ‰ ™x×%/ΨPP¦¡,ëêeàOáò›!ŒP[]©_LmuežFmƒ ypšÐÍ"´Aûíi.{×ý\öY!u 6’c°Aùìiòz`'B^ŸIGY£‘eíTçN>†,vÓ'FYǽǔUö”•XdW­(<Í 5¦úsdõ—1ÈÃ@ŸÉ [Û{d¤À9èZÅY`FäýgK˜·=UÃ5ïILæ!GLì1ETìPCLì}ŽHäñ˜ øS#¢ë²×Ø&×ÛÕ‚–s;h+šI¸›VÛ ~æƒ@}c•ÇÛ™Çj©t8w¬Õߧƒ)ΩsæÉÍ䌌šé0}ÀG–'Æ´Ey½ÕᜠeQAݤ¬ì˜ôèR2}ˆ
+çòfS‹‘Iêëïó]
+öòfkm9
+ášœ2!³7´œL‡­L-³±syó‚pÜ“ÈΛFhˆ)3¯ª’Ry–ö¤sРH[¡
+©@&ÊSœüä;¿
+endstream endobj 1068 0 obj <</Contents 1069 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1069 0 obj <</Filter/FlateDecode/Length 5759>>stream
+H‰¼WÛnÜÈý•~$ˆî;É»‰`8È.K?xƒ`"ÑòÒŒ¬K ÿ}ªº«É’¥¡he!`fÄîK×éSÕ?_þî¯Å›wçR\?ˆ7ê_R(qñY´•”N‡Zá|å¥4¢nUe´ôââV¢¼øOX¡â
+ +ºÚUÞ´â¤qU£Œ¸¸ÅéÅùû°àôB|¦µ¯ðba¹n*å…’`\Üwâ£Ø‰Ÿ/òhж¶hû$¹ùvb4I1jcüý^œƒ‹Ré «ðÛˆÄU©
+[Iñ{Q*_èòDŸ+üåÊ^üþ;„ì´®|Ó‡lž=ÜÀ°z]qBí»Ü¾ÒU{tGL=ãÈÍ8’ö÷2ó¥[Y©lûÝ
+GÑÆØ‘6.Ï h3x©Û%EvC‘ëI‘s56ïʦ8;Ã2Cö6Ôψÿâw‡u¼/]ñ€?¶û(•)`smª¾
+«}5Tî¸$j3äé&ykr’çyw»Ù=nKe‹ËqÕ¸DºnïâãýnÜ š¨pX?#«°7•…cXKri[Øÿ<!± §8xã«šÀúZAm•¸¼ Ïo…ÂÞ‚¡Ü¤Ÿ'aù <J¿>C΀ÈrQ< Rˆõ†@-ñPTµŠÅ´‡‡‰ÈÀVÕX¥”j¦*M…Í·H`(›U(Äž?—¾ø²ß^–pPºŒº¨‚ „¬À_"?ÆÞ¶g¯RÓžÑRk?pÍ/´¯ýõ=D²¹û‚„Ö—›ü)~*U[ ý-o(’ïã[ÑOp½Å“±øpG})MÇÕz;0"mJJˆò&:¾<Ѧփ$ ܲvý©ÞkéOŽæN{'ú 1œÁÃ81œ‰á J!3èˆá“RÔžz€5žÊù¶ŸÙR†Q]K衺rGÅX™‰“`eìäl¿Ý=æsˆ4aÚ"_ǨyH¨°vìa5+M˜r—²Ò40ø,b%Õh-+ÉÑ<+iÛRýáÑÀJK¬dàÄJ&V2(…Ì SÝ5~Áf"‚¦‹•QmýT¼}{VB—F)Gemô0H¼~*~)•$ÀW ³áqäD£M/žƒ¡®ÿîð¦p³ÿ†â‰u¯USœvs³½Cèa¿Å9áJÜíñ_p] ¾JÀ°YëE”  ZK r4O (•SI”`°D N”``¢ƒRÈ :#Trƒ^­dƒG•Q+‰Fœ—Lüª¿¯Mož½neî>Eá·_
+â7¸ÚÜ?n¶È‡¶dœž5LÏ]·ûF‘½LÛÂÚqÒ«µ Œ¸åÚ¦|è£ ˆLe]Kdr4Od‰•d´Á‘8™‰È J!3茶 ×5½ž$móm“£mº.>b­Š ?ááñŒwp#êb÷ø=jpÐû\
+WCˆ¤›UXØ|ØÍ%Ĥ2­%&9š%¦oLõÂgÄä0"&198“CcÈú"…õµïÙ8QX_[ÄAKŽ*¬cçÁÜ êê PÈ‚rš¦¸ÞïõÁ÷Ž_& aí8§µŠFŒ_* ¾~6Kxšª¶’§ÉÑ<OiÛæ”ÃO8ñ”‰§ J!3茀êA@-/ èè3Ýß-D*¶dóaûòùSÆ¿m>ߧ7(Œ¬L¢Œ= ¤Í š¯ tQhÛօ;|V’|dä°DNDa`"
+ƒRÈ ú2As‡<FÐœ†]WQ{ü‚ëû‘Q³#cîîSqŠÍ30ÂFÄa1ç[yRÛÔ8sEÊ|`ÆgŸ¢µÙx¢¹t‡ó¨Uu N1.úšU½°ƒÊTŠ­g—«%B_j©škùKŽæùkõp¹€Ö¼øË`‰¿ œøËÀÄ_¥tFèlª³²-/tÆd3üÛ·XTÔ`XÄËâLUê0"ÓfÇ4?ˆkƒ>e?£ýå™mpÚ êìÕƒ½C\/²¹ï—`¡<qª „j[g_6š%óç81í*ÕøEh–ݬZ[µð^”j¿–íähží^i^ŒŸ –ØÎÀ‰í LlgP
+™A_¦Ö°5‰âSµFö¯ªÖ™»WPë™ù±OLêJ÷}asó¸}|ºêây`5yc½Paß›E×£T­µü$Góü”°vª{Ÿ –øÉÀ‰Ÿ LüdP
+™Aת±k–öµÔxhÂQ‡}”áÀT¢À–¤·³*ëÿ0‘‰*9ÎCO׶0¦,"'•j%9“£Yrºº˜;"'‡99˜ÈÉÁ‘œJ!3èŒxÎÊ‹«eOƉn:ß ]^Q7sw¯9å*ãØÖà\ ´+¨Øì®â¹z
+^ãì[*[ôó¯i²)'‚ƒs–æ”ÄÕpÊžÓdPs_/e¬­Y44$¬å=9šç=pX'ùƒ×e“ñžÁï8ñž‰÷ J!3èjQ6°¯'Ê1‘&ßÄÅŸF:èÃd©dAÌÓÀ¼ïøÿ`Çâ,œ–Ž×FŵÅ~¦v­ùC‡éñÌ Óÿ¯ ) ‹øÉi²8¹è4·Öž&r4š”«|Ãœ&K§‰Óib`:M J!3èâ."kè»\‘°á ŠÅ’.ÒLœô½#s2î?•ÀÓ{àéå¤]Pð&•ñpÉ.0ðA°¡Šð2X/lØF½hŠN¾–bähžb´ßáy¿ÝD1KcàD1&Š1(…Ì SÁ†“—$LV°mëqÔ;*Ò!h¶-¶H ¬P5Т¿0A¬‘Ì™"àA"ããÈRCó ÏÁ ¤ ©e&#Š”t‘‘³b»a—1…öm-SÈÑ,Sl _YMZ=‡*]ÃTœ-F"qKÃ' vs–ϸÕÚB΃g°åóÕDCnµ±ð¤GëºÊ76r”[:Ùv|±õ«·ó3ƒ!ÒQ0™ÚÊÈÿÖcÿ(¡°©ÅËÂ\n›\¼‚ê¶Ha½mVÂ;¸£ªëúÙ}zâ‚=tç-I'îýé›we]ÜïŸîį›ÛnÐ]ØKëD!‹àPšÃÚ‘»>»`niÞöÖ¡è²9– ¶“¶ÍLò:»ÇƒþÐÁ… OIõê•)ŵϥ¤HGÖáÀÙ£)Åš:
+fÆŽ>lv×]æÌÈxפ×>—Šq0çeÖe‹U§ü™«c48Ã?‘ÝÓîè>ÇÜ£íéha\CܺÉ}WžØâsøŒ¿a.…Ï®l!ÿ*¬öÕP´ã³ v³”çôº¬ÉIžçÝíf÷&ÛËqÕáXüp‰$ÝÞÅÇû]NT§uÔÑÃ?Ù’°~FVaê 5vQ®­x¼¹ÙÚÀá]¯²óQ< RˆNAhj‰çahm –z§æÄÀÔ”BfЯ·(rÖÂh8”ÈŸ¤Í¤¶Á
+–ÖÂEl/ÎàNû˜`hº° ¹z9Âú±“?‡óÞ0m´Ù“ÌX OgáØüûg]ñÒN¯%9šçmÝÜüÍa‰[ œ¸ÅÀÄ-¥t:›i¯L÷<ktv{û?Ö«e¹m%‡þ
+++2UÖe?Ø$«f²É¤Rw‘T*qfã cѱêÊ¢®,O’¿ ÍW7$™Î&± ¢Ñh¼>l»ï‡f’÷~*;O›­«Še<K¹×¯áã·ÀX]wXovÈ` Pwztd†Nƒ‹²°ʯ¤B­¤.VB—½dÏ-tY
+àÇ6É
+Q饹²Ò\ M mÙ {$tÎE
+
+ˆ¨áù}› T¼k\v3®^v“™“ÝŒ·—Ýdæd7ãM²›¬qÙ͸†ÏVùòggâD¬/ݶ{Ù­ª
+¹÷7ÊnUçØ|—Ën…e²{.&»ýé/–ÝÓ¼NËîE)õ²›M‰d·?ýŲ{ˆ‘Ý‹Rée7›
+Éîþôß'»çøû²[•¶DKd·Ïô·ÉîižËd÷¥Å=!»™
+»Ù ê*Æ`Sãùá†_¾€e™[œ4ÒËr‹3ÙÍÙhvqfNœÙÍÎJWf¬^v+ƒjø¡¸€òòš•ÝÊTȱ#Ù=î`à{l`ŠUëßPwkê×q”ÿŒ <—8×}V,!Û¹cæ6ÇûÉ°‡¯eÎkÅ0òu:G…€E¡:;pedÕ°ÇÌý7ÝÙÎo±á .HŽóÆÓF|1ìù-¸tSÂC ,nJù¼ºˆ+¨9–rŠÓ½]lSâlž³§ÆLtÀXéÊŒõY›’*JqÏÜ”à²Àõ¿~ËÆd^¼0á[ÈËpB¯¶'(Ž "™±ÁØ<N³Ç c&œ0Vº2c q"êAˆ@ôQ•qIù
+RøpÄ
+Aée
+ô uÐÛn°@À’VÀKzŽ)+$›5Q
+ÂfðXºÁ öAá÷ä¶Ã_×í+û¤%ß~eR_D Õ³kÚ¤KÉ?áf^$…?Ó­ý¼«´I ÁH÷BU„t¥NÿÂ2ÙËl¢A:8‡ÜÎ
+¢“+q“­ðÒónÕ8….êVÂîÒn¥@ñnͼµ€bV@ŽÏÁÙ63ã
+6ü‹7È#Wß댷ԕ#d†³ÌØÛSã­`Óœaœ–x‚q Ÿ>4zù³3q"ÖáŠDGj"Cjƒoƒñ= b[: 9"V™B$YB@¸»9«tzÝ8´Ì\©ZPËRãýfùRÒ¡{Ú'›‡v¢µ
+["…s7˜*$ë; —NÄj ¬©ûÓ¡Þçe¾ G¿;&ÈëjÈö±Ò§$u唜穀d•#ÞüéÐkgx\ë»cæ>7»ïí(˜Êmû-JÅùžJE’mz~n3Âê Œ-ø¹#øK¼ÊWUºo“f·N†ŠMƒ¸³«àÁTQ¶í@ŽÓ0?´0©Ó;û¯ûfüÛöƒÛ6š–0úLë³Û™TCžE§=-òüÒ>4»ãÆî7ÉÚ)Ê[éfïþÜíÆ@-`Aª..n¸æXÿù5FvcAV2F^Sãù¹†_¾€`™[œ4Ò L¨<.Q9-ÎLs‰3»ÑÃYéÊŒõï„ÀWB7™ö‚¦Šðƒ=K[HìbBû§n ¤]#}Ÿ¢Iäzeú¸ÏG“õÏg!Ghš‰ïIâð/äè§è‹sjÒ£c«•ªT‰g“º¾}ëïâq‘C/‚.Õj)t)PôÞó•Ö¢“±yt2fNÆLèd¬teÆ.P*œ¶~k’ ƒJéÉíÍ{`Ô¶û~hö¨ï7·¸-4Û‘š¯œ6¯oüºî°ÆmDâº%Ò£ãE»—X_˲Æ: µRõh³I?Ìñ“;Õßo!Ú­P‰äØ%^ú;4åý²ò\MšŸ»Î.'wŸ:Ú”2¸Ô\xÜ­æï4 a᮪”[¾´mò­Å³¶ÝLàü¹R¥¨æ»G\\*ãRàR 8p%ÎSO`e|ÄÝ%8WÚ%¼™Ù%8oÚ%¼™Ù%8o·Kxkt—à\Ãg—õJ™åÏÎĉXOî¹ÓÌB!ìþ:_(°^Hü5– Jp‘:­­#­ãN„ˆ(Â:°J5ùÖ=!ÞwëÉ ª´yþÏZ)¬ï,ÚT´ܤ†ÓÅ‚}Âäôîç~Ûìšc&Lº™W-ŠIÔçää|ùœ¨ã@®Gp15jc{$ÐO§|ý™)Ä™ÝÉœ52HŠ Ë
+ Ìß5&ŸÇ^Ì•T«@³"¢áÕ伉½¥qm‚ŠsÞërŽ@£
+Ïcë; 7alS£ûÓa°äg94B2î˜ ¯O¸¶íîv’’TÈ ËRr¾§R’UŽƒÍŸ./ áR⎙²£`Ìйø’Tœï©TTá˜ØŸž_°_ zœÁÏÁ_r†n×Ú·I³['CŦAÜÙU8hŠŠ°­Íˆ÷mv¥Ó;û¯ûyw‹ÿ¶Y=p iVCÑ 1Ï¥9hÔ¼ò´§åAž_Ú‡fwÜd°UÞ>&k'Îo¤›½ûótRŽ.õü5ÓúϯLC´"Ù‰FÆó¿,—+9æ'tE:ÆkÀû¡—ÏœÍÆL˜3;ËYéÊŒõo7ŸaýR@$"‘um"„{?åUÑ‹SUÛífÿØmÖvâîý ·ƒ÷Gv%ótcÿp϶×ÙîË^ß~Ž=Œç¹iânÓKžõQ »¢
+Çfëªbczý>~ tÖu‡õf‡ô†"2=:¦Ô¦næA%-È„Z)L}%téU(:
+ O
+
+H.m¥0zÆæ˜=@3„±Ò•k ÇJ­zå
+Pùš™ÔrÒ òÁ/[Åw[„
+­~ _xê€<ô¨øŒ‰jÏX©ôŒÕUž1ºÛ2ÆiÝA®–:T4¾Ø°"©¡Øo¡ØÝîÎÙXIW[*ª”µ´$®Ë*ýó#|~2ç]¦Ó÷Yeÿÿœ]U#Z¦Ÿ òùy5¢„›4_­„,L7Y&|ã[íë®H/t¨¹•'ç1AÏ´&Šƒ$À(#$·*ÆK(â…qþ…¬°JÊqLBã+u…?“µ¶ñz_Âã«`Oë]aq?§Ã!ã¼ui¹eé[3QBãp=»òûPmð±â(Ãà êeƒ›ÎL.ÿ_€
+endstream endobj 1070 0 obj <</Contents 1071 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1071 0 obj <</Filter/FlateDecode/Length 3882>>stream
+H‰ÌW[ÛÆþ+óH¦=w’@P q† Ôpm¥}ð…¬å®Yh©µ¤ãßsÎÌ#‘#)Ò>V4?ι~s.?ϧ›öêÍGζìÕ\ü‡3Áæ÷¬.87’>¨™±…å\±²…’ܲù#ËX>ÿ/î‡-™4…U5›U¦¨„bó;–ÝÌ?¾¥7sö•©Z ¼¬@‹†ã²*„e‚ƒp¶iØ¿YÇ~žÇÖ l©Qö,¨ù¶o¢ém”ÜÙøÉé¹™aZà¯bÿr/Š\dºàì6Ë…Íd>Ç÷ŸLþÛüïhð?Ád#ea«ÞduÔZ4t?€túÀºlæâä›X¾E}2"ªœPd&q}›GºdÍ …ß\ ÈÉ8T$•}Ú ZÊúœ$›!Éå(É1‡«7y•½iï5åO±ßñ·Á<nr“mñ¡]w,*ƒàê}Î>
+dÙ“e¡Oúå²·¯ˆÄ*ú°èšH™âeQÚ+üqŽù£ŒÁ«Ô«àXLOåi¸Wr\<IàÙ.†È¾çªÊž¶èîØ»}%Nv5vÇTžêFŸ‚ì \9ÝÓ_÷Ü-ño“×Y¯ã+ÓÒCæN—D©?ÍÈO’ÆG~~lݮͅΖ[v×PX"]Û'÷zÝö‚êŠ ÓùC3¢ [Uh¸†%‡R.À-`+ýñ÷ 2PHtÃ-&-p}EE¬/äV°å#½d{ š²
+3:¾‚Wáé¬0
+ŠlÊŠ£ 7Qc½ñ äx)µHbR»Ë“€•r50kQb^¨79~e¶ÆrW‚
+x¥ÏhÀbLw’‚©Õ‹ECV«öi»nï°ý°§uÛíra2êFßò™äYK/¾$¯©·á^â`oP·XíÚÝ3YøË„’¤“d .œ$¡ èÊLà0
+-ˆ#KRGÃ7†ÅDÆz=‰R§¥ŸÍ ËƧ=ÇR§ æÃá¦Ùè¬#`êè(ìø¡Õ‡=¥gLô<WÑxÄ»k‹ @vcó Ûž­Jdúþ”V2k‘Y/¹’Y[âç¯dÁ„SLoc±º©m,H¿zÛ÷ëø6v‘Ký"–tÉ/bAúÕ‹Øž¢Ä"v‘+ý–tÅï`½ô—ÛÁù÷’;˜Å;uÙ<}±lßÏËv°s“{dKdØ÷†ÒLU°}ðtsÃ/¯©²ÓV½‰`š‰¶x
+·ìËÀ¯>÷Ú5
+²½²x‹=ÃnV°fm×nZb?å°m`
+)l)ø™°x ”%„ÓÝOퟲ™
+µÐU¿Í6 «íšôèæ)ºî”'¢Ý¡kaÌÁW4xÑíçfB—îU¹Â@IIeí–™w˜䪎z%^¤çÑ-Ä=|‘Ú5!rD8®mÑ؆ýˆ¾Œë/â6ÿ+y×ü‘K‰¦Ã*ñ?ê«·mÿÁ“‚B†DI”$S÷vêÔ,®-'B\»Plù÷ýîx$e™ £²Y:ó¡ã÷⟓ßlÞºéZš.CÖ*W|,céî8$ß&ØãÍ^
+γ<7³lÕ. ÎZRá°Û9=C“NÇÑL^<Ô5,ûÃfOm=o;nïzÏ ,xA‡È-ðþÌÝñ¼po»„Á¸ôäðf q&«Yf Òx«ÈBA3(›ÖË;”3ƒXMÌ V3ˆ•Īf˱jÀ ¦
+tÖDï? 6‡M7°°
+õ‡Ó;Ëþ°fêÏ£hU°zØ‚½“íR7zž/”â å…/X7Ðf;(TCK?ÞIF¸õòC ~KVK­ÕD«kÒê³|Y®)ë
+8Î1¿ƒ+»ÝkwBxÚ³ ø“á”öBšQGK eÓi9P!ZÞ¡Z?wá(òAr*%9ajy~Ú<9ÉJkŠ„sqèièÜÞ^‘’BÌaÅZ§6ιíX,7CoîAFdÆz“¡%ãÎùÄa’õIJcê=äH‚ºR”˵Nî•D'’¶%Ç¿ ãmŽŒÜÊxY(Èx…»[m½¯VôÊQ>VÎÇÊBúXÙ°>V5[ŽU¼Ÿâ$H|ÕÔt³iÜýlÃt?o;ƒc‡ßÀm¼Ñð¿µüo>ÿg_¡>—(?]5•ƒŸ¤:½}y@ðzUÎúHeaÑ LŸ¾ÜiaÎ2$ö|–õ[ZÜ(v¡°à/ºŠA¤f… R¶B)‹Dª²åH5 Ì eóA
+¯BU|!p:Ì Š EßH¹Öô ~¨ÅXd´ªVôÛ–1—¶ŒŒ.+¼qÕè|F†^·NPå··=²N ê·(4( ðMm'Èã'µR“þª<Ç`¹²XTý`
+endstream endobj 1072 0 obj <</Contents 1073 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1477 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1073 0 obj <</Filter/FlateDecode/Length 5259>>stream
+H‰ìWkoÛÈý+ƒ|"ÛŠ™7É¢ Ðm #EÖ›•n¨(‰–¹+Q¶$'›ß{çÁ÷H^e?ôCa@¢x=÷1÷œ3s¿›jþökòòú–’õ¼œ³ÿPÂÈüŽä ¥Š›ȉ҉¦T4g‰àT“ù–D$žÿlV0»‚Â
+4- W‰9™e*ɘ ó‰®æ·oÌ‚«9y$"— 8O3ˆ"a9Ϧ £àœìKò©Éwón6è›Kô=óa¾ôS´.]ŽœÚ?Ú¸ó[3)"~ òOû"‰Y$JQÌtÄã‹(¾gø¤âÏÿ ÿ)+Î5)‹“Ùb¢ý 4«ÙE3·!Ö¿êúg<ÉÏîˆH'©‰@T.âN,žÓ„u¶_]Èúâ"íÖ°i£¤ùsš¬Ú&§£&wqØöX\ÇYô—¦‚|Æïû¸UtÀ‡jW“˜‰6WúîSòÌæÿ6eo%1 áÝöº2莦 ‡Z´‚’ΕÂL)¦1ªÄøÃJ4äÒTòæêåuœFûÝÓ¹)¶e7¦ò$çM
+g3uÌ:ÄŒH§_,Ï-›rÏžÇÊ~ ãfTÜ;ìCy(ëe¯..ò$ý–º¬ƒSuñ |·Ýãi"ÏÖe»×dÜ ½/êuÙ &hš¤úê±NÕ#”B*5!(Šé¹>µ¼âcñ4'àHŽ@ }E=”¤¨W¤í]?ˆõËQ™ƒºâ€'ï{”“Ñù´Ïõ?Ë8šDr´;/‰\´uªQÆÕy[n‹úXÅLFËY•F–×êÁ¾ÞÕó û†›õÃ4:Ö"‘@Ô‚”3( Ðj>ÀýÝÀ(‰ì˜Å&
+Зeõ)ƒÞ2²Üš÷[ÂðlÁT6þqf–oà•ºƒ,”
+X]Êë^¢…;/š;Å3ðzŠ¶Þ—%6ý@~€ÛøܬÉÛ_
+r©fº@“š©µLríŒ0#À«F3C6§™!³ÓÌÙjfÈjSY'4sÈÂIÍÔJw¦Ÿ±f栙м·;|Q¯+ƒˆ§F4y*Ç¢y^3•ÓÌü„fRÖÓLÞÑÌÙIÅT"ц´0€N–MÌ‚ï6¸Dª†©‘f£²ZŒãÀ!OÅÉÇqÒÔéI'
+sïR1¥Ë*ïÿey(ËÀ§f\à²Yrò¶Ðʲø0eÀ ]ePþNð{èrÚfš;]Vé@—³‘.ÉhµºL”g,Ã'Š²úŒIò(;!Ð(B2{Ž@{¹ºP } if n7­æ|ÊÊx
+ßÅF¿KÁ†o¼´‘wãzy¬æjn#ƒ/Ý]íÕ?°Z
+êhGÏŸHíãЖtx¥±¤›˜=?x¯2ŽríØþæêåuœFûÝÓ¹)¶¥Ç÷¸—Êôɧp.ƒ^4»v®©ÎxÏሔw”²ì\\ŽŽëfT×»=èy(ëe¯$ÐK/,É®=UG·mÏ€pòlI¶gý@ÆÍ0Ðû¢^—`‚^TŠ]{ª¡Joãô›ŸíÎ@lû!à üÁé:ƒ3úk,²è¡$E½"mÇúA¬ï‰k‹Ê¶SÌò¾÷%žûwæÓ>×Kü,á¦ÐÄx$’ë¤mó\™í AÕøTEotTçm¹-êc…gÈò@VæÐ9,¤Õƒ}½«»@Uœw’:KþÑ–˜õÃ4:¶gƒÊ锂õç7
+ÿ *Èâ¤Ñ¥¨s¨Ò9E>4G[ÈæήÙN!³=BV—rÀúHÀ
+[ÅœççÄÁߢ˜O.ÆvXã-Éí(ÞþXT5ÒŠ­‹ÈÕfS=âN»¹üv„Yƒø„õ1¸·2–N¨·vB.8/Rw…‰JäRšÉJ¤|xïÂüYÐt½¸š.Ð4úÜÞÑžÌ;ôl}³G_Àìаº”Ö~?¨#œ™ñ
+XnR«Ñ«™ÚD´Þ—æû`Mà¶[·j}¦ÏUyÀÆ,÷ÕI¯¶ÝÆ$ú+|¤6±B6›7 YÀ ³ìYÇ“}ˆ_8=& K‰šÿ~Ï©n²›"i9žÛ4‹]·®:uê³9*¸ãCÐòâ«É]Þ™s¥„„ê†ÉòJ<Zy^Ú›¾ÇáìÈeª³®‚*øY™„ý›«\2¬»QÊʾ’SM5ð­P™O»¾ô*ÜÀ!Àæ¶d¡F‚ÃcEe›)Ü­l¼íiÄ&qå˜ }š÷™«×¢ö¥t®ÑíoA©®q߉R¡i”ŠblEV˜ƒ:MJ1Ú°Ôz‡ÅfŽB&cÅiÆÜÑåfN+˜eèÊüÓ
+ÎœN4ÞôRL ?±#gŽŽÓŽ±+¾;í3v&¤ÎE ÆÚë–È p™ñˆÀxdR3Žß¤T\j‡»ì× DIA‚±É‹ÏR\·Zý7Øvv"×q± ›êÌ}4—ÇÜz-æ¼þéÃ"÷»ãspS=Õ]}ÿ‡¹Låž:Îy0°fΞ˜ë£í%¦…îµãÒ£â\€†‡†DÍ(®_÷
+Á†ÂóÃ_~ÊÎxñªÐº”IºÕUEì‡~´ÍÉììšÛá4'6ógNj]ž‘~ p(ßã1…¸¾©bÝcº›èã%£?³¢«µKn‘›¶ikÓOëå[µÍ°ÊböKïÏ_¯²ØôÛЯʆ{ È8Î'<³`%ºßF°¶¤Ô\[/T’«Sî%Mÿ¦ ±»÷–§54]6wÑ
+œw8#¶8#µ.ÏHÇ{bÙq2ƲnM¤G™[¯°´¡¢V²Ý4¸Ð,ŠÂ²/7îu{$Ì°ãmyu±ô¶Å¬Û!&¶ÅëØù´¸(qF©ðúÿ^ʬ¸#-¿¦Þ†V:2Ûå+Öpyü'IAóå±ý‘>Wü÷¹}l’=_;Yû²v½­üìe¼·ü¬¡éòÇPÅ
+Ç™W2¨¬“Š÷îöÅŒOÆGò#.â¤b‹ä€qÊ#¦«Ô˜­äãÁ™¨ |ç&°‹±äáýÂ[PcWÓBèÓe‰s^IKt5Ò»©H#¤?³=jf¦ýß".úÞícÍ·^¿N7Ußý ê¾-â(¬xrs¬ƒû „CÕVr %ü‹™²áßþjO«vxRöjïÊašmðd8Ý£÷ò´?ðeдæ+ËøNÛžýÙ|voEíX§’ŠxJ!AWAØ‚ÞË.9]Èâe.)7lwúõ™;®WTIuÖ!TP?3E?0^_øcPÿ¹PI¸¬Bë$<ã¯Ñ÷\¨¥ÊK¿àn~y­Ú0— [‚B™Ùqkªm‡Ì}/lA¡³\C]ÄG¥bùܬƒÖÖ—+É´¿àÔ†ÅJBÈLRöÜS$ž™Ða[o×õÚ\k»ó¹úSýµI® ¤Ù®6¬W2þ­6òoðe_Á% ö>øFFSmŽR쯡³ž0©¾1¤—® ’ c’[\{/’[C“H®´rB¸1!Ša>ͼ“DùÉsôZYšÑ{wÎN€É£
+ãF9›P”ùGít˜<š <ÝÉ<_úÉ4scòÜ(ÏJ'ß“çI#"çœLú!kÆŒ³ðÈD
+ÝUIÂíÊ£»“s­ßW5
+¹S9EQÊŽ¶­X.Õ’U,c 3%íBEhÈO@™-›òp\­êÃeü@jt°†”?/RÝwûE/í¾ÈmðEÛÖ¬…ùT‚cóüNðßuúDñ4Õ=aóSÄFK»F‹õkÉŠ ÍãôR0Œ›ÌÍövå/ÐÚO dSÁœ®7œ
+oËÐ<ñu4 žkyZUm-êZj®ƒuÕV@ˆÂ(ÞØLi£P°[µu{é^:¦=‚*½d—YÀí¬ä‹tçH'0“r(B^Ÿ) æË  ]xaD-
+•¨Qñ&$ëR¼
+–”ÛÒlºâ%èyôhàÇùiÛ(Å$1Ø1S‚ ?KÞK¶pAî =UõF vžuäYI“NHÇ[Š-û™Ó¤‡º—ŽWÓ3‡•–ų“iúËŠm™™ÃÜÇ”3ekt×Qs§ a¹}؉¦'c¤˜KÚ„øý I•=ü÷H÷
+endstream endobj 1074 0 obj <</Contents 1075 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1075 0 obj <</Filter/FlateDecode/Length 2613>>stream
+H‰¬WkoÛ:ý+ÄýD-U|ˆ’>öYìÝØèÛ^,tm9ñ"•s-¥EÿýΊ’lYnÒ\UhçÉáÌœ·K‘ð¿ý­xýa‘ˆÛF¼^ªÿ&B‰åFq’¤š"u±K#²BÅF'N,¿
+)¢åÿ˜CyŽ„8@Z ÆÎâ"Oã\±\ y¹\\1ÃåRü)Lacžå¤Å»Îcå„JH¸ØWâߢo—ck [[Ⱦj¾šèEv6êÄÛøÙë].HE¤´L…UøkÄ'¿GJÚ8_d¤œÔÑ…’ öViôûòï0ø_drªuìòÞdsÖZz@æ>²N^tñòÓ±ü”¾ÏU‘žP‘ŒU˜$Ά¨gq¡s“Mõ°”c=öK4Ò¤‹$V£ûMA—q¬G›|ìåå %+ž’EéEÙ$‹Æ‰>$‘ùåòãGäÙr‚ñ +$Ê>JeƒÅvW‹H©´?…ôJÄ ‘ùÜ}Ub·©g¡ò«³S"Ò›I$3I$¬ØNÚé u¥ÎÐ"Ö¤RI«¨†þ‹èB'ªïɆ6´¥ø©DîØ Ú}Äâk”y;c ¹©ö‘“U½‚?•`Sa¢=v¶‘ƒÚ½ÇÂ¥ÎG’–ƒ¦ˆ 6.IM*ïHá¶Û:ºHå†Â»ÃbO4GÆèD–í–·j:(ª{gˆ’K¿Âv+¶´V¼^ã¬ÿ¹*Ûª-4T¢õ{ñ ÈGøïÀ2H ,)„ê~°÷t•X°uU§º‰¬+>ð¬m+GFŠ«èÂÊ–xy[²>ý”ÃgÛé 1°ò5q| wÒû7ÐE㬶ˆÝ–N¯¼gpÔ k+ÒKõÈùäl¸¶ÂàÚq¡b•ÒcxO×C̹l¸—ÉÛº“Za·D.ÉzëÅþ-öt³ã{Ž‹hqèŽÙQ"x‰› ïÑ)m$/k>*FRÛ.6¹¼ ‡U¸¹olß=¼b{X;[«ÎIî0ŽªO’RGPÂý´–â‘¥!(‰™T§ý~–d(±]"_]¾þ@7³ß=>ˆë’B4êJgPLxR5O&z½”#ÅRŒ
+ ¢Ú‡®Ñé±ä@þ´>zBËš¸ùÕ­j¨x¨ugî¥z)ç<ÔÖAhÐC±?õ°»Ì©6–u¬í¦¬)ÏF3ç/v BŽsæÀ1cT<ÊÑÏnnh]z:
+¿7ž1 ;ÝûàvÊíÓfžõ‹LâX§)Fbšf:FðP5ϩΆÓ}š„«´4/ÊO¦Šb\'§í *Zf°ž9$ ·Ê-U¡@%Yzœc!Mf˜µU˜¸™D5‡$ša6ÚaÈÎ:rlŽ;ç³wÛXX2y;³A;A˜» íFݹ±Ö9Û—A•Gi­ÔPú293Â;“Ò ŒLGx‹"zUc.
+?´ï#ž‘15RIÃTXHšÓxÌ¿ëºÓÚ“Éýb4ºŸ›Ú•ÕWùO¤ÚÉíßAäóMs^œÄ+é3ý„â7ù¤ÿÑþÀÛýe·S‡jût·‹ÞíìœÛ&£—uÚm÷L·ßù–#ïyçTúÏ•£&øtÏó¡žñÜæ)9íy6¨ðêšþ‹·ìN¹^•MËÕû Ѳ'~Á5ë²Qïxâ¥z×ÎúfòØÙÓ¾å#ßà×›…XpfÖ«;ö°Æ½6¸^º´]-øéÖkì‚Å>­güîqœ1gWYœ÷¹·$¡NÞá±4b[#€’=C´¯™LvñV õÕ=p¨%ŠG¤–·[¾þˆ1Ë-ÖMDϯÝ¢•ýaàU'KÞ­<÷5|'€p?:aMFÆ0udQ ʶckd©xcßI-»ûŠüŽðnY‚œÓ‹<Neë<óCgG'¡=ˆÊ`²7§òü7×ïö‘‡_êìyÎ3kêþ
+@ÊòhßÐ$žéä)€4-0~²”#Ň€´ i{=/¤,kâæ 5%_ì¡—rÎC¹x¸Ë—áQˆJŽ•ãQ“XLe/tÌK9ç˜!ŒÑ+y9¥Ù09öí/…£Öv7EÆ&Ï„£–š²å¥pÔ‹›xû\8šR£QÏÌá;¼€DÏÝ2MÙÖÒ«tܵÆÞC↚ŸÏóš<%žh´P³4m3¬çÈÆh~ÖsäÂïÌ‘½ÍsÔ)ÕépËÙŠÒ/~B™ë'ÿÏ£î^psGgGSB·4’Rã öÞÃG3‚=t|§æO BÝGó_Ö¥koÌŠòA原š"ø’ äg·Ô‡€t‹ÜÊ·WK|SÂwr±¼¹ºþ0X0zQ4ãg&?B°‹«ÿ\~‘öK
+¹Á {atÇãªÖ|ò=Oۥ碟ú«Çªiykù9øPM°J˜üóÖÙ9ïuFCŠE± P…ª ½|‚*ƒÂ:‘~Y¥†É0ÛSOŠ§'6x)-˜«~âà‚'ˆG#vàPÇö~N ÚŸ =b³A臸çã+
+endstream endobj 1076 0 obj <</Contents 1077 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1519 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1077 0 obj <</Filter/FlateDecode/Length 3381>>stream
+H‰ÌWkoÛÈý+ƒ|"‹ˆ™‡äG'V ww×RZ qQ(í¨kKŽ$oêßsï "E)›`‹Â°DñÎÜ÷ãÜ·S!ùos/Þ\L¤¸ßŠ7Sõ/)”˜Þ‰"‘2Õ| ©Kœ”Fd…JŒ–NLE$âé¿ù†ò7$ni.tš8SˆQž&¹2bºÑx:¹ä ã©ø"La0ÏrH±¸®óD9¡$˜‹M)þ.Vâí´­ ñÖ–x*1_÷Uô,ƒŽZz?z¹Ó DÄJG©°Š¾ø›‘Ä*²‰·Q¬\¤ã‘Š$½Wô”Æÿœþ…þ+TNµN\^«lŽjKŠî;ow´‹FÁ!žÚæ¯tRœôˆÉJ’ö6nÉÒ…LTËýéwò<º‚´)Ú6!m)Yñ-AN› g½ ·ó°‰±¹ˆóèúšÂ ë-Çψß軤8nâ4ÚÒÃr½±2œk«èKq2Ÿ{(gôv[
+NÝ?²+GtœL4lq)L:eŠbSØÓ³„ù‘%ºÔ–\Žß\ÄY´Y??‰«ÙcÙÖ@¥ERèZ…“ô"ætdF¢/U‰³µ Ýóo«Ê}A̦gÜ5Å¡Ü–«ùž]H™$û»<ƒcvéÌ%Mðt–Ø“fùàíË!.²+çf¶º/[²Œ´‰ÎÀÏà˜9Ææ˜Z„¤^z*LMYé~ïd†²QìP*z‰M=•b¶Zˆ&tûB<ï¼oNª‚×RMBï *ÎFwüéŸWsú,ã"ªe|V›¤ÉÓQ›Æδg'sëFðc4)g«Ý2V6šoÅ¢ä&0§l]>ù×ëÕÞ(PEò# Ë÷{‰ÔDؙĢ
+3‰N®`²•?Àþ®C´.‡-rjévô®¥>ˆZ&™óTU¨Aš¶=‘Ñ\Ãd ÷!¨Á›º5ê¡ú1vEHe«˜*Ä7±‹Ê/Ïå6V2Ú• ñózN³ÝrMsa„/>ö@ñŸá|.œLRŒT¢,žÏ!á|¶›‰)%Ë RÅÂù¸bP”&*Ï]T6Á0áò—A® ¨`ŠÜFã«PFã¥*¢ñÍ~ØhJÚŽÏS*}
+‡ÁW8Ìggè_CåïMî ™ÔÁaN:ÚBÕŸq¹o—¾ê¡Ïžë”Ÿ‰*±à\‡Måâzòš5köÒ÷VË´yïSù›²¸éVR5¾ûiLº¡æ9c•µ¢“vsïHë¨m“é†5º8»š´,òê4šÿañî­k{–PøÏ(›):Åà˜ƒÕ׳æÃ÷”Vþçý„P¡þ3´Ÿ«ØF°oòüÿ‡ì¨}dÛõ¤u‚MRì§#80°#ZŽ"†;•eÕ, cíüãÉVf –0@©n0Î 1€œAz@9ƒô
+›EfDÃþ¸ÕÚ1€i’Ûî©Ë»sÚKaX^-²^CE.×íGûQ¤œãø¸ÃI'F~%ä­|Q#kU³á4éz$›M–&y…æ MºCT…½”æ2åúÐUÐøM §Žc[_ •0t[[Ö³"çvÍu2tÛÚé*j–ùq_]E4tÞk]VZövŸ¡›¨ÍÕP{¦[XI9•
+ä(GImúRÞÙܾel’Ã1ÖB,â©Oí«~Ì핵çA2¬ƒ'‚ŒwëÕb‰eeUo‰–¹¶´S‹è¾¾Û•"ZܳT#5wuÊ_•û¸Œyt¤|ŒÆÿyz˜­f˜ ."“B1T‹]¦-õ÷ØäïÛê%µ‡2`ŸØ«Ä=GïBgªb~ñj¯˜Èó
+%i„‰cÕ¨2CB1D$Öô°Aþˆ=˜xL‘S`ÚØÑ[~I‡¯úzâ+2+i@A=òŒ5¼ì <Œt+G^ *L£Ì­ÛÕÜ
+dkêé½"¸}€úDÂÙnQÝ-W5XÜT GfŠY!3+F:³à[Õ<á Ê LX$Ä¿ˆGZª"z»A8ֳŜkf»Cª!¨´¹pa­‘tχ
+ªPƒ´€P†ÈÆh.Ü!rᎠ‘ƒÎÔþ*q<ÊÕVø€ÈTA~ÇÓ“ÿ H`I@ru/~
+ø4¯Ž½½äÕCL¦7x‰i|û¦\¾Lx¸ÐÏ´…î?F·ÑäòãÛHÝÆ·1³j°sSÅ´L}Y"á¤ÖåËÕ‚!¸‡ÍuõBÃkÈófƒ]‡Qí;†ÚOþÀ£ß÷ ܛ۠u¥škÃŒ%÷íi/›Ý¶a ¿Š¯
+Д(Z~sÊ ¨¶šù*Éãgf—òÒ67hä[Š?žo9³úõ8Þ¢W0r9JÍ0\
+A)OÆd˜9a:NH†>°Ìtø¼<ÆYð¸Ÿ*\ÐøF»ÌÓ¡eÆÓ3ñ‡´Þ|ñw O,¡®‡BýNm‘¿S^ôï•3
+¾V^·‰K^ñ‘‡•|¶=ÞrfÃ?
+endstream endobj 1078 0 obj <</Contents 1079 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1079 0 obj <</Filter/FlateDecode/Length 4433>>stream
+H‰¬WisÛÈý+Sþ¤Bsàú¨µµ*%»Š"2›ª¬¶R0 ÉŒ%P& »öߧ_Ïà ‰¡«T%€Ó軧»ßO óßöV¼?›Çâ¶ïò¿±bq#Š(ŽÅ"I£4ŽµÈ
+i§bq/.þÇÒrÄÄÒR¨$Ju!fyåR‹ÅJ§‹ù93œ.ÄW¡ ‘ð,'-†ØUÉTȘ„‹m%þ-jñÓbl d+Ù³NÍ÷]­Hg£Š­¿[½‹9©¥
+a$žZüf¢P&ŠÅuÊ4PáL1Î%Þ’ðÅß`ð?ÉäD©(Í{“õQkaèn
+ *²‚.ÑLŲz#¾ÒácÕ´ÕJà˳Ë9â¤iÖ¡ š¿ÊzY‰¡L‚,mÉ‚`-¬ÔÖJk›É)”6šEš¤6š(°ÞL]D:íÌ\Ô$ø¦Áºë:œ¥Á …xƒ—-ÑÒà>$›ËvÍG5}(ª;˜oˆ’ö Ç­ ôKô‹’PÕ
+<b,ÐÐ’LYSR–$šÕÞBt K*Á’hE1"ZE ¦…X™âì’žq0%E¬iËÞ
+Ë/!¡-#0%ÍQ3Ê!…àã~Ρù4œé
+kîyõ‘ê¡lyE{‡HÓFA?æáN„†v"“!ûnQLr!¿+…—?BÞYG[Ewãhé'n«#M·ÇU>uä|’*iŠa5ì™ù¾zX‰†“ŽLk¤7‚î:{¸•a;;rnvÛHwÛ=ÜZëh ’zlu× |ÌE†~Ú;­ â½ßß|ÜÔÕ5}8§wîTóìJ‡î¼ß‡ö/cÐØ#'v1†tC0Æ/eÓŠ¿ƒVo¾ã®Õb^m©P¿ñU£Ò\†šíœUG@…éA…>æ`Beiâ1¨H€ŠìAEò,Pqgfèri瞺¢Ž•&È%zÖRQ[5äÎw¼"Šßè¹&ˆÁf ž[à…ª%á»”椴º+׎Ž×ðá>T’ˆ ðo°DÇó¯S+û;d[™ÍN3‘Eo6¬ž9³ÑP’lÒöã ôÕnħ
+áÊ« h'T"´ï ƒÔc H-¸¿Y3ïJpµTGbR[X !c‰ôŸb¶fÕÛêa³Å,e^–o-„qVÝò‘Û­ dÝNe¢7ÔIu…C¶}™²ŽB1ŒHÓWz¦GÓ9± £ UwuÁåû!êo‹ÙïÔ0hèq õ‹X‡ÂG2}KD˜EBº‹÷ DØ™ð”Ó8p¬n
+vÒ_€§!à®_Ç!à«\êŸ×% ü:á/
+hÃû
+ïØ–!¯e±_E@t1†¥Iv9§ÙÕIýsJ,å´®gàÿ-6ä ±øaN K-‰ÿ„·?ݪ>K,™v­Œn¦‚&3-µ1ûƒÿ.~g¯#Õæ3¢QÞ݉zÓbïåÓGŽ,‡h…×´¤C°òÃÔX50ûVxd)×Î;,Õßz «KÌ.a¡5(ˆól”·°·vq°×Öðê^ÚdÜ^cH@g#©:Ì.z©TØÖ<qoKçÑÙ…„ˆ ËCFV£ =‹n¿ñ÷,£1Ë\sÈéhŠ(iqbìyÑÑ<œDÂAG%p©ÆãÈõ;³2ldGÍÍî,sÝÐ쵎"y Ç&»Véã-2ŒôÞamP’û#ÖÃ<A8]—ÕûƒšhŠ˜¢·Ò+•¢Ã•’˜ñ~°? “¡ò2H¢¡Ho’EaGq‚ླྀ>I‡*¤ÑHÔ<gŠª,˜.·tm±†Ù®qá nÐrØ€úEœ×ôÁ  œí3h±÷(ß’ö%úŠ¨u?lÇ÷+[œó]cÏîç÷Ï›­¨ÊågHý…‘¡Xn pµä5uMo8¡ë¬èšÍœ-˜øç€!ÏOÿ*Ö­xØn¾¸ª׬ˆ]Ì c‹?¯´PiÐ[÷ Kq†|ªî6õmèä·›ˆ›ÒhµXQ'†v‰·ÄŠ±Ê_€;žµ²Æz{Ô8V<…;=/@Ú:è¸ëæqèøƒö Òë¡‘š€È e’ÜQæA’?èX)½ŽSöJÞSî×èë0å„C°Ô†¦Šy°ìü•Å3êÔ¦qPîD•ðä(®ƒ&JyñtdG¡5‡(Cûû¢¢š†°žz²;ƒN©SŽÁ]¢Âç¥ìǾ݃°>šÛ6|d·OxÉveð‘Íê„–»¸ðÂ+ýÖ«¦·m#ˆþɃî.¹$B€Ø…Û "÷ÒúÂÚJ,Ä’jKÜß7³KîRäÈMÚƒmšÃýš÷öÍuå•ïê:Ó&¥’¼G N¨X£”è%úw'TÑmÕà2¬nÁ { S†{2…:ÆhF%»÷ ¿lp›Ú7ÞvûYÞ,ÂJþœv^5Uã¨CÍ<·q³'Q:4 j¾hKÖ Ç` ±l!Ü-…=ØB؃-DÇ`G-çX)¡ÊÖÊÀþt·yÀŸàrþv¸R–ñ­i ABëuÄ@÷ ‘ín"p§œ¤£„™«Ú”nÙ¬ä\£á®¢,¹9j.(ÆÊ(’5íÒÕkGQˆu(
+áE)ìQÂE!úì€AáÄW\i'ï ÷q#8tŽ„ôf|A.²†«]ï˦[6¿þÏZ6žåhÑH§È*91\ånçÊ÷#‘°ŒúP/bÞNWœ~Pz£Ú|u¶Çÿ öÒ²†äS¬) Ž[žà Oæ$…XÇA!ÜqP
+{
+aÏA!:VåÔTçõ¸h Õd—u£éÁøõ!¹ÎêS¡êyÝØ
+ÁW&hy, ³™M?Pƒu{ŽªS¤·n)§x|%¸l,oI§>_ÞüêâÁÞqø.]^þ~~—ê» ½VO'ÕÑJÜ4Vó˜àœßfÊÙL^\\œ'Ü€mI¤¸?=¸-½xzÚ¡L¢…{`);Ö°œt\äFa¶]}tyø#Å<¤°çvü‘ÂŽ?RôÙq"Ñ%ðE‡ú§ê;ÏJæ˜Å*½éÇ ^ÉÇ̦_2•&ËHZ•î³™IEwÈ!´ýZèFl/—vÛC»Þ®·_¹]ñJ#Ùˆ¨­ç$X‘÷˜-ÇlÞGyJµjâ"Õ*SrO¤cÿU·A-; ]Ôø3퀤XÇ;!ÜñN
+{Þ aÏ;!:Ô­¾E¼§k«Ô¸£iˆ‘„´i°h`Õ9&íªÞÑ.¥þGs£'Í e³9! ¦¸ˆFOE•®(©a0ã' EŒÓêÃ%™¸hh¯0š ÑaåºvQúÂhcÌ<Dqïºã†4¸¡÷áЦ uÜÞI£'¢a¨'–»•ÆRb‰Mx¤dY²ÝZ×½Lõ¦ç™q æðt©­uWÅ&85vH<#­˜WڎŸÛí×Uòçî•(µ}Ø;@‚áýÞQæáj<öhµÈÔ='ÆrÒûÙջεpµ=ZÅÍ1:ÓùÛ_Oí¶=dʦëÝ6>S¡ÊÁª?r&7V>“¿IŠ<ôˆÃàèŽzNë÷Üѯ×Lû™…èD'X„VÐŽX„"×Hùíº¯®›ö-ƒ©ú”Á)ÃÇh÷ðï Š-ØåM6ë\Ø&´…ø®å!<Ú¼Ðæu“lwód÷…í·™~¶d½ýNm÷ÄVxÁZØ&ËGzh_ðŽ>]ÑöQ»—oIûõeů6èS#[Å'æï“
+rQ¹}Þ’Ù{\%¼*í7}zEúv/ ÏIÇ7Ããl¸ìåÖ{´ŸS†Ž !k-è6Ý$›‡
+f‡°Ka»ýiØ«22:v4G¶öG°¥¾
+ŠœÈ6{žÜÒ7}Ö}ÆÙLE+¯ÉÜ8g¹.–ÆN¥™R¡´œæʃ:¾]RاYˆN¤Ù†4×rš¡kõqš—™ËËþÆ 7£„9áKžÁgm‹kó)S5X‹1×”åQâUŸø@õ㽬÷Ñeªú’GÿÚÁ5²%À¡i&BOLU*¶7ŽÊÔNE eˆùÈ„H£½ éºÖófì¤ÑÑ“N@2ª eã‚rlNK®ç¹.­oÐû(ž ¢ÕÏ£¸êzÞ4ÔïÎIzµ{2© ¯Šd™Íj ˆ›sFOI†ì7îùžÚþµ¢ÜEð/úH7é%MåE3…‡}ó²ÝÀ–½Yó«mðÄ&ªã¡{«O9£Æ
+endstream endobj 1080 0 obj <</Contents 1081 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1081 0 obj <</Filter/FlateDecode/Length 3627>>stream
+H‰¬WmoÛÈþ+ûqùA̾“ |‰¸H\_$´œCÁJ´£Ö"eI¾Kþ}gv—ï\ɽ‡‹hçmŸÙ™g~Yæþ;<‘w—Œ<É»ÿ'#œ¬‰MÓÂ}`‰6©aL’ÌòT
+fÈjG(IVÿvÜk0Ð@ÑšiÉ"×iÎ%Ym½Y-oÂÍŠ¼iU
+Ƴ¼(PyÊ á Œ“CIþA*ò˪ Ú
+m/7 Cô&CŒ‚ù¼ßÕ\$\PMÇ_Iþî_¤ §*eä+M¸¡"YpÊð=Ç'ü¶ú+ü+„¬…HMÞ†,ÏF‹Ði¢£‹p Þ¾îÛç"µODf3ŽôŒ#¦¾&=_²”÷Ž_ÿ GÞÆØ‘€óíåeÓyÉì[@ÖÈÙä~vËINïïfÈ^9ü$ùKÄñhzćm]‘„K
+‡«ôùb÷ÝsYàÛcI\‘ˆ>üP]9 cX
+)£!¥K©p—ŠËDN2qö0±´™ÜÞ¼û˜dôP¿îÉ]±+ûpmS+Ú.F0AÌù¤¤‡·65ªu¡ öüm·rèÈ™™$w8”DzZòÒ¦ÙÏäå œËKd&íÀYª.¦åÁúA+lìçKQ=•=_’©Tä?‘Ž7p. v[û é%Œº;%¦Sq_¢ãR$'¸œþHdN÷%)ª ép:ñ¶ói.Jh´€Zjlàº)úèþõÏÕÿ-K[/ЫkS!ÕËýPÈ.Q=IÔ››$º,wEuÚ&\Ñõ‘lJ×ÖX«Û½]WƒA
+»ËÄz7p[ ŠÓáäT;Å®"~ÇÈ‚§\ÁPû
+’¡ý f‹VéÚT¤h‡¦Z»
+lÛ]‡“`qy´!œWÛtŒYcDÜÀ#â
+-Ziý3&ÚÄò'xº30r­­ý¦ P¿!]³³ŒËötèq½òzð£ &UNa1âô{²ÐR>âïÎÒ3óŠÍ5ÀI jŽÇxqs†sí.& e‡2ŒŠ}Æľ cÒ™Kï©7´ΧEfQqÊ3düM7»º‚3~O>Ã"xfñ<åüÿ8Äì<2VÏÍ †›–õNŠ9)‡K›ž²Ã/¢
+2|Óˆ5ÎÝžjoD[(g#ö ÓnÐhK)ÓN
+IÈ~ÔMmÄ”aº±^ÒRáèSó˜öŒ´S …¥¦#É<X¬&jpX79“iì
+i‘[þd†Þʹ EfÒKñ&§#ÎÐ;sì­Oª˜Bþ“‰y+ç“È' Yâ%ܺ $¦þ÷µ;®Q—úÄDæt_ÂÝÜÆ¡o;$lÅ#=2wwÊd¡è£û×?Wkü·ÄŽÔÝHÅa‡ìªÚÍ¥d;FÁô$on’í²ÜЖh¬dSb_8®±~·{ÿzÈd5ý¨Þõ o
+Âë3˜¯”¥)Ð$1RMp÷ š¨»dÒ~ßÂÜaÁâ GÙ ZyÇ2¸˜“â‚©û‘Œ©‚ ß4b˜ß"Ÿ’£˜v G¨Õ ÀBÄ´¥âÑJ! Ù:TITÞ³^ÒÒm±ãÊiÏHc¼,FqTžã\S²ñ:¡dÊ@³0ó”̸¸ ¶§O5ð§-2œº"_pœºõ
+øêTnðÛîOx*œ*”oûé ¼y-'÷võ zùr¯Ëµ3üˆTl ߯XåV@Ý‘‘QŬЭO¨|û
+W'¡¥›®G©¢j©¢>GLï†Ú₇{òÃíÝ•Ï¥co»Dpê‘žpßl8¥{ë¾Ä§ƒiÃÊ1Ê—ÛŠåË+> 
+œyv'[w×ÛvÈaäà©ä¡|Nœ¯ 'w¨‚nȦ8¹3&ùˆ£¢FRy øòj•Ôظ£u߃ףO¸Ãdze÷Ù×(ÃgüëÊñŒ6œç.‚ÖQ½é”Ê» ¬Û´\ÒÐs>@:G¬4°ßׇðâðÞ˜k+jñ_Ö˧·M ˆâ_…£SÅËbÇTXUÔ&­¢ôÖ µI‚äÖ©¡­òíûÞ, kðZIíClœefgöÏÌï-Èãºé/+X…—<ñ•ŠOòrð‡d‰0î®DðÅ“àZ<Û(!·ërÌÕq8Ga9'WÇaÒÝÇWqµ áT®v'>ÄÕvžópõ~šÇ¹úÄ ;®öfh¸ÚNs®Þ›ÌÃÕ'&Öqµ71Æ:óœ­Sƒ!Ãcz6´ž+³~lŒ}=}-ZGÒŠÛtO&kzîåÿu6{ã!€u6cÖ”¡Ží ¬ÚêlŽ¯ž`Q
+:óµ¼ånÊ7cyŽ ›˜}£û`-]Du›ë®åj.àÏî1)…;Ù 'Tl(èw(Äå}­x FA•Å
+;¨fÆùxa£k@&pûÂg˜rÅÇê¡âÂéváiê°DËÄB çaÏàCQf¶çD -¦­‰Ëúࢫ[6¼)ØãÙ`ËÇ5?ú f²ZÐN‹Ò²”
+¸š êÍ¢L·¢-S«y:YÞ~•æy2Á BDF‰äß&J1Ùà†è}’³«¯ªg®ÃS¹«d'€BÕá™Âý;X},_°95Û{ð°ÝËéç{vóüÒÙ©¾€‹Ìc€qj@!f'f#o."ÐÌ÷jSNI”0­k¹ù50_ë å®Z´è=س 1e“¼Ÿg.=S‚ÙóXiâ ®J7qݽ,…|^jféÄîOTÇã0o}$Ó÷E :Wzœ™DqBB²}ãU΋¦¸ f³åçÜ•Ÿ)®;Z´F׫O ”Ê^õxR[8”žä§>(?½¶­þ´ãýé5o¨÷P¯¹Q v8IØå{붜z­c¥k…£þà5=0üVýJRt6¯þŒäCtªTÑŸQ†êÏ„Eì˶-b„Hp!j4çÁr•æhnš=í~‡XxWRÒ$P€Á5¯æRJú3«êŽ¿¥Èþá ¦Ò‚%øÝFì ßàdž×TŠsÃë·5t]wòŸª¥¢þ›òr%T7X
+™Ô¸4´F}©§êQ¼¼3z³¼÷ÙI)j<׋ GÆ?a%Åd5¶½+©eÛi%ņµÒ]•uAúMå#«03Š±…ª
+endstream endobj 1082 0 obj <</Contents 1083 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1083 0 obj <</Filter/FlateDecode/Length 2915>>stream
+H‰¬WmoÛÈþ+û‘, Þîrù–´8‰a¸è%9[íg#Q[™ô‰TÒüûÎÌ.¹Ë7Ùqz8’–œyæ™gfÞ¬§ÿ÷짫[ÎîöÓZü‹3ÁÖ{–œG’ÈX1ç!K2„’ÇlýÀ<æ¯ÿMoý‡7ðhËdÄaÆVi¤"dëó.×·×ôÂåšýÁÂL`<Iá¯Ë41Œ³cÁ~c{³v½AÛR¡íUwÍס‹Ú¤ñQríã¾w} WøBzSÿ Ù?ô/<p¶ñ|{Ò_ ãï?Eþ?×E‡—#)ƒ8í]Ïz‹Ž¤·GÞy+ˆ¶¹ö… ²' “™‹¢™‹¸ÚøÎ]2ãpà^p‘¶1¾H*éÆ´±·$Ùs’Ù$'“$»<´9¯üÔûøÓ Ñ+Ê_Ⱦà¿æñèG^ƒʺb¾=
+¾§Ï«ÊáEdfÜGÌCÑÕvW–_8—qÅý2 Ô“qéì )OfÆÝäÕ}á^¦” â÷Ç£ œ'N]6†ò9lLz6Š µÁ:²
+Czßü0õ fóö,"È$
+B,SI^í(]ä)Õ;´•(ÄJ°_ÜyG(Iåíé¯þ\mñoág^ïtH¦“Ú§5S†V`¢i!s n‹‡¼jK_(oÛ°]A2±E>—úçºr9­dèzõýÐÎq@©$°U£Äs( §÷ >‰÷í±lËm~(»ô»±¥)\ù#±‘s±E< ¬Ò©ç´BO[!Z™Ævá‹Ôkšò¾*vg =š„´È¡gà’Êr4Ññ$á ¾ ƒôÐe?:TY¸§Q”QŸ}7„g¸9 *6
+•Òˆµp,y„Ýxñ8RAªC!ð—¥cf猫,
+–_î‚^86y’ÎpbG1@Ù2*¤‰ì{QÝ@²Ô/6þº*±¢«{öνG„6× D«JK'šæ¤Q`äy­ºD
+"xrÕ?zç½¹^cÎÅ‚ž\ÿ  θwsýþʆ¥¥—÷ª‹!m¼Ûëß/7Ì‹01ŠŽÆsÖÃ,©ƒhg%ü5’½F@?ì±TlÆ
+²ˆ&ïÊ=é½cù€Ÿµ9¥úÈvø¡Ø—ýÛ°ÖxÑ_ S{µßEÜ~C›ÐÛê=š’~0é<âJP¡+w±=\h=·†%&¤‹|û=0N@¢Ä¯D±°Cá¡hé¡z÷
+½5&{–!zbŸÅGNñ4rçJ«]³ÍÛ‚nG4bÊ ±¦/b)̽Ûb˜iÓ+&D /xU¨É
+LžôZP
+üòX[¼fÀ|Çô%Öílì©Éï‰QH úoñýϬÒa¬,t±)Òž¸”\ø¡÷¦„Û[†)¯5‰ÚÏy;!ÇG¿ú’£,A>›y±Å8‹?6û;¾Qx'ú±km§êŒ •õîµ5P)ø‰
+&/+Êî¡ÞbÂò.YŽiáR–îMKÚù“™b㳜r»Ó€‡.à=N"ÀëÇîÎü
+Ē#L
+‡è_¸]çwL‰Ð.­˜£AJIJ¦Ë&Ãa +Ñ܆/0¡öHZsµHñP„DÀÓ!ÅŽ;Š/Š/w_8î(¾t¬)¾pÚQ|áØpËE9žçV‚°!·$|HqAêþl›NMì¥ÞS™9t2!ýâKÐ.Ü< uîÆš5#w‡F­
+L¼}=Ê\b3—õ£†¬u ¾¡£q-Í“Ç̹½%í1´¢Ù©¨:ñ¡ ÷0ïZhI/¦lD89F™YÁ¾³Æ×qlþ
+endstream endobj 1084 0 obj <</Contents 1085 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1085 0 obj <</Filter/FlateDecode/Length 2971>>stream
+H‰äWmoÛFþ+‹~"»»Ü]’É]Ç6 ÚÄ u-®vq -ÚáA]‰JÒüú›™]rIŠ´Ûôr_A,‰ÃyvæÙWKÆéßî}{‘sö°gß.Å¿8lyϲˆs-é…ŒiÎc–d"Š%7l¹a —ÿ& a58h èŽI™8c‹TG©ˆÙrÅ‚óe~I
+çKö+‹3ñ$/
+Ôe ÃãlW²ŸØ–½Zö£AÛR¡íEëæã0DkÒÅ(¹ñÚú]æà"2ÐL üŒÙöAŠ@EœÝ¡0 "àø\à7þ²ü;üBÖRF&íBŽŸŒ´GÑ Wk_÷í eÏV$N&é G\Ý„=_2ã‘è•_#kcìHª¸ŸÀÆ{I¿$ð|Sã‹0 ®úÝITß“¿NÚÃ)9‚<v|…P‚
++ÂHÌ>àg‰XÙ…:Øã—ªÞ²PÄ4Pµãìˆé½uYàÓ}ɈÒ'á"”½zøÅq„±H"©0D#!Ý6Ä]¹?¬Ñt‚
+e[7ì€_ À8(Wø•55ÉÊm¹ EMÉ(ò{Ï=s¶€š*ˆâ |¬ë»•H–Œ-ض¦ì°¶¼A%;ƒxŒ?²å_Àœ4 ½Ê´y …
+šrE‘íøëî®Ä=˜Áýa½þ ¿¼x"T²<Q…þÄfþ‚¤¼+ìÊýoø€Ýš®`Þðb_ cKAõ³Å€ JFNk´Ù•ˆ,â“~™zíx®TÃÚs!þ|ÍLëBh1W³®^:„\3H@º}¨(ª?ï¬Xl(‡ …ø7Ïgçª)øW
+>œP¤&‚Nb¡RäY³rÉ5¦4/×*JÕ¼<ÍÊUœ=i_eÀçÅ.÷Yùpev‹ÒÁk°-M
+|
+–¥N`{+ÇV.N^ç¹GÔxÝñy•Ž
+mŒz[á¨Ü>°3h½õ…O/Œn‚¼lÈ9ÑÂÒe“QŒ$ˆò›ŽVÇ=2 9Cðx°-î^êÓaßtÓEGTÎuÀàÐgŠ§Á?ñ˜áéÈá”,Ë‚êa[ïhä`«Ó@pŒL'Õ2JŒkN,"ž¡7#n‘7'vÀ›·¸›·°›[ÔÍH[Ð͈§0'¦1—@/ iLæ¾ÎXÝ߃4¿?,>iâÑÐ-qI0Ü ~|M"ð:øÀ•v[ñÐk6,L¢Y)=YÜ™ßß‚VÌ™‚˜e›Ý8ˆ6Å¿Ò¢,>á=ébæºóP"8+ßaNh´à-¼e$S î7ᧈçåy¸€š,ûõ2Îðu/qÜ¿»|}ákÅÓN|ä—?Ÿßâ&„+naOü>>sˆ sçëJ[¯*ìî¾{Fô¥ÝïHU°^îStS(Óuù&¸­š=KÉMø¯Å^,¡æžÌ,^°£_ŽÈ¥ñI¤GØàÕ5¨k¸›jÚlû}µoì>FörÈæ<áàRwè=Õdû»]n-¨-É)֣Ф߷ž“ÂÑê®N~O·{<ê•®ÏB=K‰¿äeGùž‚éAÃ.€:œ„1¬s(BÎ.Ïà“aí--î*a~ÐOÓ™@AŸº(ÆÈq½â á_W¬ÖTãzT`‹õöltš‚å¯Nò—½óûl®x×"lÔ«r·­>;&„_¡¥>E:slqÔ½ “àç|ì\è.PÏÆ¥˜ßÄš@]Upr¤Ë“VWô:I¾:ƒ^äЀ¼t½5ûp‘_æ‹ËSøŠ?Ù|?\ú×ÆürŽ+æ7>ŸØø5Ú½+»5¢øPaì¡yŽÓ¤õhnøÛañ`é3`PÒX
+ T6{¢Ð
+Ž‹ôµšÎíiåvf;éÜÌžVž~91°çÉÀOcAÓXHøš2%¤7ÄU€»D„e# ­Já?\
+ýÕ2]–x-o“Y‚Y ÔÂÙ–‘H<îêø{UÒ„Ô]4åŠÑ¼†Pb„%Ãk|Ëo"Li€_lY"Èe¨T¯È0I?Zæä4ïà5üÁ
+h8¾t€ÿáº
+v„aè¯ìÈ’ 0x5ñBb<èÑxq,Æ„8²„ÿÞ÷:è hË{Ý+ëÊ8†Hn!öÒ•]¾×ÍŒžS š[ºª›~Ó =¶ŽÄÈÂRîóœT·¤‘Ai óš=YB)´^µà šo}âÙsËnh‡S.ÅËãCâzQª‚kcµ!ºc®¾Ÿè¾T,ýbºÀkO¸
+;Dµ$§_Äõ;= Œ•ÑÓB•cR²ˆ´]¡qÆÿ°Ÿðåá·²4´ÕVÉW7—Rçf‡^ó`
+endstream endobj 1086 0 obj <</Contents 1087 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1087 0 obj <</Filter/FlateDecode/Length 3414>>stream
+H‰¬WÛnÛHý•~$#¦ol’Nâ1¼€=YK³û\‰òh×–‰š ¿UÕ’[¶cÁ€L±T·®êªs>Χ¿íûp5åìaÇ>ÌÄ¿9l¶dUÆy.éËMf8W¬¨D¦$7löÄ–ÎþKÂjpÐ@ÑœÉ<3ªb“2ÏJ¡ØlÁ’ËÙôš.gìS•ÎÀxQ‚ ê²Ì„a‚ƒq¶mØ¿Øš}œõ£AÛR£í‰wó}¢5éb”ÜÆøÕúMÁE*d’3-ð¿bÿ´/²T$:ãì>I…Id: Ç÷ŸòôÙß1à@ȹ”™)CÈêd´èð
+ˆ”"­Í¢Y0ÊV¢JÊŸ ®KžÔ{:
+ö\oSQ$-Û,»€%ÝnŽ¡J©ÒPêʼöÏÆãAÕ»U—£ 3UUhÓc_6Ȫ¥£ß¬éßúÁU¾ÅÔ] :Ú%\wÚ±EVªÜ›‡ùµÙÒÑÝ^h<¬gAª¸” ‹)«uq;BŒpPG'-}nð¨Öxzôu_!溭m¹F=lYîý|¶q.š¥ÍŠƒG²ZÛPw¸_*1Z‹a~Uú UÃín½Ö#ÊMU
+Z,ÌgÂÒ…‡Ö œ ÌŠVíDr˜Róù~ Ó®ÚüvûzoO¸–8\Vð€_žà—ͺESìz f(™×-^7Ó»š0Cû÷xêªD”Z؈gàÆ`âÕŽÁ=Y­á‘¦é
+æxlv\œïx{ðw8eaª§Ý·dK0†ÛP‹v-5dŠ=ã' êäÓˆžñ¬ÙYÝ}>¥’ÓY ÛÕ­•ì–p +ë|ÇZïêÚ‡°Ð|ëœÖpäG='Ñ\Œoáœ"ú§ïmÖCD–ˆÇuN"bD ×ñ Dćð*üÃü6Òw<ÆF¼Ÿ7°‘ož’ Ó<MIÞ™aà%Ñ -/ñnÞÀKFœyr2p!'ïL,0”hbŽ¡?çc(‡mús e$'OS /!ÌŸ¢)>ݳєa²?GSÞTëqš)³ƒÒt°ýU8a„¦œÖåÒ8M‰É<¦ˆˆ=hˆˆ=,ˆˆ]Ìé1Mé6Þ š’VaA_ÌjÒÇñåÖÁ_eßýH?üºG”ùH}‰Û0è#ôãþ¤Á"m 5_¯©]_Ð5 NÆhO¡Ü`…kfÈGçžÛJ#h,= ¾¼ý–ÝM*EL‡6ï ûðòs׈šfÈ—&=Fs×èÛ¾!Ø›FÐÔn¸õ°1lI„3nÊ9:O¦û½Ç¿Ëý£…ÒäeñKÇ
+>˜Éµ6­Ó;ö§b ¤e˜@r/y~ŸÒÙÓ•,ao•ðÉsÕU% zÃsÀwQTŸK™iîšµT8ûG¤£¨>¦êP½GP}LÛ¡z/Ž ú˜¶Eõ^Aõ1e‹ê»œQ}LsDCõ1T› 8q~ÐSW†Æœ€ó¬ÔC8/Î+¼ãœØç`ókÀ¦78+R÷³-\ðz½Ã;¿làêã]Ê€‹S]ÃËt]¶ø»߈Òç$mª’z…Oô¾E?k Æbœ@0Ÿ–ö† /_dR&€«É»Ošì2vK³çrû„¨øN­UPWÚèmî³ì °ÆÔ$œ#l^7×ÐÑ}Š€@:ÃêÅbå"¨aÖ–0{aæ±>R\{øxF·öÝÿ,›‚r´ÛÚ& 㘢k¶þ
+#æ´®¨:vÈFA@W1™ƒO1±ÃG1±C@1±‹9"=&0ªëh¡£ q˜ÄÂA!ûXn¶Ov—|-t&ŠÊïÞB-$
+x„3êÒŽ²”ˆ¦#)^!)eÇQ¼4ÂQ"Ê–¢xa„¢Dt-Céò=f(ÅaŒ ô7âÝšæQe‰[?NUdé¹JQžà*Ê@š!WÄUªDàöéúÒx¦rðwi¡ûD
+hÓSõZ‹ÔªµÅ”m‘ºµ·˜²à-R7‹‹©
+â"5³¹¸9ÍEêôT¯W÷*Kq÷‘Õ¥·ÖÔ„º(•!XxÕEQHÜ’®8ƒ)XgŽg2•åÁ?¸«ªS˜Yw-Óßêb£Qƒt<9½9a]Ï]2Bä¦ NW,̱Ø ÒnS“`t†Bçvœ³Ä¨ìñÌá,~Ð7×Àû6'έ‡x«9yÍÛ
+endstream endobj 1088 0 obj <</Contents 1089 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1089 0 obj <</Filter/FlateDecode/Length 4880>>stream
+H‰¤WÛnIý•z¬^Œ:u¯î—
+JÓ‡ bÂUˆ%xéX(šB¡Hì$Ò‡‘ðeÉÅÙ›ó*ÊçǯOâjñyÙ÷@Cð>ì\8êÁ±¤`dSŠ^º5}|o^V•CC¤fÜ;Äa¹Y®oq ¥á^WRp(.ãšÚvq™X»£q%ô††HÍØÐõb}·ì‹Àz¯Š‡Œ‡h¸3¡07áÔÕ•™dcR¸'Å
+CË¿*Ûȧ¥X¬oE‡ÝÐHÒÝì!
+¼Ôí äSÑý %çä'z¦ïë|.«Vîl@§ˆªŽ½”Œ/ 5LœHj&¾_~^¬·«J;y³a##vª3´Ï8°Ûåæ3}õ”?®ñÙ ÉAxN¿„JÌÄ:iQ“ˆNŸWÛÕÍâa…À
+œNC›åÄÖEVæl{訃Bæí–ˆqÉt MûÔSBjÂtUAÞ?®n*à¡e¯ŒÚ½A—Áœ÷x£¯jÈ njüúâR\?âÌðu»Zß̺)Cì²
+“¯KãVÞÞ>C\ËMfÑÝ(ºB­´¦IWÛÚFh¬8µÁ4ýA
+˜c|4«3ð?‚…v¯]œd0`âÜ4I³†ï]ŽîICF\Òç4dÄ”†Œ¬¤!'NiÈHK2â/@)
+5su æf‹ŽNœWQžUF^Ÿ\‰‹¯âóãíÇ–:Öíö°ÔÚ‡¢žÿ
+Ö[±xBwö:Ø÷hVr2óàüopþŸsXŸÀz –9 ( üƒ§yÂÔ8Ž@*y‹žÃàP®½£6Ç_€ö‡*é=ÌKnÀ{Œ4Ó'M¬ÇH‘ôQæ<NJ”Ç3ã1ÒiöQòÁ½4M;e8ÜBĆY‚·o>¹ ýï’öZc•‡x 9_Û…‘†·ÑjLQ×ØH£¦ê¨#…èkoX`‚§Z,äíFÈ0â 'ÎØ0b‡‘t8q‚‡‘|ñ íÒØ mÝóù€Sy‡ÐõÉ©øG…Õ¢ƒ%Àë:VF,a@GÃö™Ð€$‰Æš@¤ÔtvÁA‘±HÁäiøÙ¤8qFŠRŒ¬ ʼnRŒ´ ň‡Hͺ] ¶¶Ö€ÊÁP]Î.~—XA˜òV^\Í‘âÏ€òäùÙuGz¦Ý‘£1µ2qGµÛG©jÐÞ"Äþcà÷øÒ˜Mã¢ú‡ÀG 1½¼ø$¶÷K¤L Ìö8¢íøæSÛî†Ì³
+hùOäôí ¯o—·Õ.wÒ1»óz–w^Ë|ÅpŸœšÎ0žµuŒ:Ù•gbµ¡C(î:Im,ý­D›ü\­ohéÅþåä­X­‰Ä æn_íE¨qÜÔ¬MM ç! ó>—{5¾K±ìÔõëx×gÔêЛÓ/Î~èn¬
+Ò…¥Ÿö.Œ<”P¥^®áçœ|µ/ºY×êž;bƒéw¿x@èùå»s´AÎ`p‰ýqá×¥XÝQ<>S:ÜÖØàµm_Çݸmoaëá8Ç·¯Ëå ºÑçNœ9‡'ÎáÄÈ9œ,s+&Îᤙs81Ó¾gÝø¶—r|cêz”söge T+Vª(å7k› SÏ@¨`X²Ý؈ÜAÇ¢©¿Ûv‘:ü.5ºõUC/i¾Õ¹øæ˜{
+­Ï¨ƒ’Q×m»£ðuÖ ³Ì¼\ãã¶jä2}¹ßêMRÓ«›ý$“üNŽ´É¼‰;óX
+÷˜Æ‹(ø„üþŠŸªü1Ñ)¿Û¬lv•õêc…^"²ØÞã2µÄ!
+¢«¾‚ÇÞoéÝö¯11ÌÊdPh)$Vº_lÈÉ…øëwñð•JP<,ž©&—ÏJy8µoïkáð‚”íJ¤™ÊRÛXð†1³Î!þÛ–•ï!HȦgø‡B‚Qã7z¦ï°ÄÌšÃ!³_¶à¡¾\© CË°àq)xNœ žSÁ3²Rðœ8<#-ψ¿˜ã«½iˆlÄ -¤¹ÁäЩB:°
+UÅLçUg×
+¿€y­áVCgÿ íýf“Š‘]9ËŸŒ„¾ø®ä€¡q¥Ì…©¹ò”jêáaœµ°w¼.8Rq08úFÚcèi½¤gl)5÷bÊù¾)Ø0Ü÷„DZƆÄÎΰ Áš©ud4a—Œó»ý]ûˆe?õ¹úÑVo "ó‚m
+Æ68Ö¢{MZDt›f5†»@$rFàÈ+º@LèÈ+*SÈk†ƒ ü
+ãĉÂi¡0FÌì2~Ö´ü*£ •\o•ùùä·q‰Ste¬Â9ž†VK«JH‹ŠVÓ"ÓÀ"3ƒ&ÔØÞǤ`¶0|aÄ NœbÄ#+
+}‡W [Òj²ÿØÁ°%ý‡syõ¼%'æ™–A×qÔÀÉgp
+ÙàQ!ÈúMT© `KÛ0`3fiV¢È‹‘JA¹_˜„´V}ÈG³Úf`WÛlk›©¶ÌÕ6›ÚfPWÛ <a#ÆvÚ ;Zé> oÜ0âF'Ey±9
+×B­£›Hü§} moD"œn(ïþ±ãgl¼öÏ×¹Ü>Ó “†Vççm1¶ß³RpÉrk-/õŠãè8Øõ
+Û^a`ês½ÂÁ¦WÔõ
+{Eu$/.ø©â<ó|§×à´C¬á`wWÚ]ûŒ7 2ÏexboÒ
+€Q:b|‘RróÚà(S#ðŠ¹,I_ãBfCyU%Í3D:Oôˆ: ÒŠ/®$éó0!³ 슋ƒmq10ƒ¹ââ`S\ ꊋ'F é2ŒAX;!+d8Î+°7À"¬6Ç4R-ˆ¸…ÒÎå€J…RÆÕrML±ZãeÞˆ`†ªrM)÷'n´HƳE/ã8e¸ÙÂÛ¼øý©Ú-îjààÝâØSCdúñ‡xTö'i<ŠÆš}}ß> 6§É.øº£ßÐ]4÷t¯ÝÖQ7ÝbŒ•GÏ?S%ômxû'8a¨÷û`y‡' ã[µ‘ Ÿ»ÓüŒõN7¥Ê»/‘ðªú¸*ÌÌr?¬›æ@ŸRíôúwÁî@ŸÁ}ŽÏ
+&ÖJ[]³ÎtE¥hÚ›™eø䌖þ²þüö&˜¿[⎡ñŽ,i¬K§ËEpžêš¨VçýêÒ~¥.ûG}ÁW‡«>Fe1ðKðoèò·Û(h0Ò@/jZôQS}²0b˜¬ºÚl©ü65þ@Ú0N§úøG$ÀÞ_ŸñÂËÂ@›©¤ ¼Æ<6õúŠT´ß”c¡ŠŒêE€€î+âDSfÁ@>¡Ýy†S Þç.$²šÏplŽ… Ãq02‡Y†cab8µ ÇÁ ×\Á\Rà|çÜûæ!*Âz@o:•>½“ô&ÇôæHMM“Z1AjúîX-{Ô&[Vj42ÙñòÔ: ÷þ#ïÝ•­©[³Øé%:E¬Vt‹,=œ«âï3“Yþÿ2“yòCM¹z7Më’Éõ D„ªÏ°üŸ…)ù7Œ4ës–tn>®¡A¨?Bý•9qtŒº<´õqv¢w:៶&q ŽÍUsíÔPŽ©¸m‚*xOaz0Š¯¾;y_ªûɺ7o{‘Ónx|lŽTj@Þ¤åÍÑ;¡Ï¸È»‡mEÕ¸=(ß«H¿,!6
+pÖ?>BùŸL-ÆlŒºÂÂ0fþ;»dv#œ}±ðlÛ“Û\R€¸p¹æevOÁýfÛÙÚvv§j%P ì¢v†K|h†b‰™Î3,ÒPù+ Nsg*rW€p)è(XwP)c™˜s ¯£Y u žKš+ªî˜/èòDuÍÀ…"°§¿À")´¬q‡ÿC§áÏõM°Ä›t¯>à_Z´#ÒyÆM½aÒ=§‰Î‹âR  atGjk4Âá6‚ãO`À˜Ýy5ø#@iøIVí®9Àš
+endstream endobj 1090 0 obj <</Contents 1091 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1091 0 obj <</Filter/FlateDecode/Length 3995>>stream
+H‰¬—moÛÈ€ÿÊ~\oßIö[b‹‹ë³ä+ÚøP(íèjKŽ$çß™Y._D®,[‚a‰âpÞ8³³Ï~œ0Aëö˧±`öËDþW0É&÷¬H…°Š(˜u©B³¬©V±Éã,™üIÒkÐ@ÑŒ)›:]°QnÓ\j6™3~1_’ÂÅ„}gº0)Ïrðb@]å©tL
+0ÎÖ%û[²“v4h[´=
+nþê†èMV1*ácüâýNÆà"‘Š[f$~kö»¿‘&’›T°;žHÇU2’\à}‰W6ùcò ø7Ù*•º¼Yïí¾@ÒÞ‰ŽªâíÛ¶}©ÒâÕ7¢³GvÀ‘0wIË—*D*[¯ß¾Ã‘·±ëH×Î Ú¦ñ’‡Ù6EÎzEn÷aScý)Éùõ5–²7T?Í~àw‰u\'–oðb±Z²Dj/ׄê vbzâÝMɨIT»üÐ]9TljTA.ÎBJ¯¥")ÊD÷2!{˜‰ƒXêL./~ù”d|½zyfWÓ§²´EZ¨:„W#èUÌØñÉY«^²(RgjbÏ[•]Gd¦—Ü5Ö¡Ü”ËY'/¥‹4;&/o`_^*siS<•¥æÕ´|ñº~ЊØõs3]>”-_Z˜TåG¤ã ìKG› S»8K_+S³¬Tv’Ánd[X’ÿLtΟK6]ÎYSº®o;ï§ceõÖ¬B'•í5¬8ÃïéÓ_/gøY&¯}|gFé´é×'¢ÒMž¶—'YÛ­à>.Ÿ¦Ëí"‘†Ï6l^Ò˜a·.žýíÕ²³È"=¦aI¿×HM…N ¬ÂLÀ$—t+}€ùû¡q9Ñ[-1¶½ºç@%T"Íœ—ÊBFeÊdxk­h GÄ^ÏqsDZ½MÕ*rQYÊ^‘]Qõ²‘P™¦Æå,‘‚oaæ—svÈŒÿŠSÿs¢4¿‚b³Å¼„6ØþÄÇX2ÒVXÒ¬>Äd`:
+âªV¯3÷7`¼ýÚXºìXBeÚEi
+ŒZ6’©4™W‡–H5lH–[‹{T¥†9LSXáÙºSšr3Ð
+•ØJ‰ðZ%>2 •0­k)S3DTA†w‚6eÕî²Ð+me(Î ÎM·GC+E´µ¦PI³ G_£-¢l¤l)½ôNDs@Ú¨Vª8_%6#2\Í,~Õï°s»­ó¦­±G€R€$YZ v€—«ûÛ&­S “ÓÐôAŒ5â‡1—ßáæ v:ÎÖ%^ÌJv…FwŸÇ¿‚¤\Ã…ïºV6~”š@2º"™á¬½¼ñ°îø7°ºØ°Ëddù,*Xf¶]ãÏéd›çdäø”n”xc À
+¢ç·f´¶ã!F ~ÞÀhÞ¨uÓÜjGfXÓZ4COkÁÍhmÀY@¶Ž³²™XÍmÑÄ*n«ýœŽÛvÛô}Ü6S€7Uk€éMðÒ=¼u“}¼½©ÖÃð)³ßWÍ`€D
+ža–9¤ Y?–Û’tÚ|[oþUfaÅ+X•Ö¯ÊóÅš¶ß¶ƒ¿ƒ[vvÕ¼(³Û _‰ŸŒwà ½ýBqÙ{·±/UêT 3î¸PkuJ·Ðà&‡Ž%ð¶ã!~NCàÝ4÷ø‘ÖÍÐxpsï8‹ø‘‰ÕM¬"ðÚÏé|·MONর°Å¿‹ÀCº'#ðn²ï#ð7Õz˜À#eöa¥†•¡è Œø^]S¨Ï/³A¢²Š?bâ
+0bâ
+!bbsLÚ'pQ]Ù»ÀMŽ¤J|ƒ[¶o5`Óî1Øßœn®ðÞ’­ž`2?ãÖùè[®¶Ø t5ǧÏ3-ϳ6Ÿ«( _\Ý‚
+Jò‹›´ëLÐèÅy‹‡]‡Ò³Y=¦¯!ú5µ%¢¬Jdý,xwI{O!囹œÿÝ)a‘ù] çÚ¿}•ªB7)Õ`ŒE2"
+ÆƉ4}×ã ã˜jÆAã˜vÆA㘶ã €qLÙƒq“sŒcšÒÇ
+›oø5õ·Ð)<4Æ–~ü6Iî]??¯ÖÁóø‡oìØÇá¹”&p‹*îßFX.NAú®ÚÎu& U"}mp,…ÞKúdeÇq—ôa†¸ÆÏq¤O¶ziÆH_Ðp<2Coe_†J:ÜZ‚ŸãPŸlízÛE}e4žÒŽÍŒ¬ìÍ,³©vŸ£QßèÓS¡¾Ê*ö/­!} êcTY“¯ÉÉ×õàÚ›éeÙeüXzÍ¢kÓ &6/{§ølŸ^ ‰¦SŒ<dШžw²ÒŸ/gëÅv1›>.¶4¶WŸÉó7Ï—®O2°¯=­ÈÒ¼ÉM¥ÎúÕ"+ýÜ>àæµÙ,–e¼#¯ MZ'ÔN±z¯KµJeÑ9ÄP¤Rõˆ«+´¾ÛðjmA3v¯²Íaé ¹ ê˜L‰œÖCL „‡%Žˆ5læ1™Ñ”BT\X¬lDÒˆû§5mªÈz3#p6plªAór¹À%¥øô‘]ÁÆþvó1ü€®áûîÝ"Å@-?•é"‡CV½ÏK&œÂàctF
+OŽº×ë^>ÔÎ^¬­ëp4y«a#²Ð°1qÕ°15lD6&ö ‘††ˆû +ŠšõŠx¿BƒÁþù~½)ÿ¬ šÃÞfÊ@ýôù³d¿O±Ö/(/+˜URбy«aºwöâÿ¬WÁnã6ýaOVáº%Ñöq›A€: ÖÉ©éA±éZ¨bae9éöëûfHŠ”lnÚÅÅq<3|oæÍÝ#‹×U,ÒÉõ§Ü»Èùõ/žªµ{“Å#c#‡tÊp|šÜÿ
+OÙäŽ yhº¨¬ëæ-F j;u®Î(ûðN× v8 ©«hÐQ¥FVIžˆ5žƒÔ9Èž¥^$_Ú6ìã…¹vø3:ôÛBçùó6“嘇´ÝPlݾ¢çQïJ½ŸÜù‘ï'6EfŽ;£Iï©ìàxÂTIå¤|®K€ ?êš™^¼Krç“åYat Â"L Bo€Óè`¹Gü´öšÆR´¦i~^™#5HÞ%3Z˜WªHÅËßFõ;”*½¥µ €Á¯èßÚò[O[þí²JeÏÑiw¼Ía7eØ À.GWëŸî×ã»Mús›¦i·fÇÄY2´ìÍŒnrP½V}>U-õ?àjˆÇDº·MS}I1íûª–&½º5¡Ü©î”HÓþíʪ>Ñe´jÝàówUžº}ÃUÿ˜Ö¿ÓŸ5>…O>œe£`r»Zß<ŨÇÜÇ¢ƒ"WêK"4Qdþ0Ã@äך Ôc´¡›¡ö„‡òÙ9ˆ^ùÝú¤ŽÑ[,8äÓ{/”~ñH ×0^TÉŠ¸­ÃVíè»+hºQñÜÚâcؤq4|±6á%Êcý¾øcÔtÆ]k˜7ÆT·GùU¤þ& ¸QPïÌr¦fÃ!O}6Í.ú@Mþ
+ ü..\ÍÎ’ö±üÑ–]d8HIPcy§£Ø¬J‹Ž6zÆ´‹ ™'-ãºl·V_ÛÖj]¹¼»†«õx=ÅQŠÐ
+`ÇÍÖ"ÍÙEiÍf(<L23¹SYÌ<ñ²-4k-2S!›Ñ"A3k‘Õh‘ù\‹'2“"(FR¤³È­x¦áþq­!Åcd£<¦æC¬ÞÅsÈ’tòò¬Z‚Ę•ÅLd…4÷+¨½89ñ‰—(Æþæ ë,×7ücZ$,Ð¥Ù
+ˆŠèÕGäa@à
+¤•rØ=PQˆ€Í"d6€˜›DȬ°Z@Ì
+œˆ“`eÌ“ÞQ¹ÐQ˜ç.. hðÅŒÈÀQØü˜—éLúG-`§É,s?ãA¥ žC‡—\ k–Ù,\S1ð}vOÌî°!CfÈУu‰ËE‹b
+Ð=÷,ÀÝ,šVz#.e<ï°Ô8ÆŸÉ<eO©èý,0Ò„%Á™¨„ĈsfÆÃ
+]ôæ–%;Ö“«“é×"Fú…´ßôÀÏûcÌ[}^ÝÜF'ü
+üýLTMäùB¤«ÀZ<»Šþ³£èè-Å{#Ä&+Ov¹ú™öÔÕ:â§Â¦Ñbd´¯äw£f=ñþ`
+endstream endobj 1092 0 obj <</Contents 1093 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1093 0 obj <</Filter/FlateDecode/Length 3813>>stream
+H‰¬—moÛH€ÿÊ|”µ:ï’>nÛ Èá’íÅî°›ÅÁµ•Ô‡ÆÎÚIù÷Gr^$Y»®ƒÅƪ(É!gøðÝŒqúo{ÏÞ~œrv¿cogâ¿œ 6»cuÁ¹‘ôAÍŒ-,犕µ(”ä–ÍXÆòÙÿHC8 (Z0i
+«j6©LQ ÅfK–]̦—¤p1c1Uë/+°¢A]V…°LpXœmö¶fïf]opm©qíI0ówßE·¤÷QrçãÎîl
+&r!3ôÀ_Åþí^¹ÈtÁÙm– ›É|"2Žï>™üÏÙ?ÐáËFÊÂVÑeuÐ[t´¿¤½ç]6ñâÖ7Ýõ…,ê£;¢ÊCfÄ×·yÇ–¬y!:Ûo~Â[cßÔe7&(›ÖJYÿH’M›ärän¶9Vó*ûô Ó ÑkÊŸbßñ·Á<ns“íðaµY³\¨ 6W‡ìsvbúî[3Ç·»†Q‘Ènú¡º*ÈŽå…„X¬Ž…"(ŠD "¡õ0 ¾ÄH./Þ~ÌËl»y~d×ó‡¦ë0uQËèÂQs ìÙÌX'_¢® «£ ¾W?v*û†h™ApŸ0Í®Y/zqIUå9q¹Å%K[´É“e¡†å’×·ƒ«ð};7óõ}Ó±¥¸.duF8nCá(X7®Ïñ"=–£öLÉáÅ©…+ÑýRdOp(Dö’«*{lØ|½dmÞúFÜÚÕ0­}jŒ„Z
+koá¸éìŽþºçõÿ6yEÁ]méšò¡¿¥j5ƒ@Ýrƒ@§ÍÃ|ý´Ê…Î;¶lè
+X`­®Ýëͺ×àöçÔ«[€ËT‚­*4Â’ÃE. .(VúËßí µ­À‰ŽØ(¸èj¼¼Pò¢´N*j‘”ÁµŽÏ)±R’ŽpJ\Û¤µ½Ï ©ßMÙiF1ÉbXͶÆ:ƒcUëxõüó*—*»†¤²Õ²t?½ä‚ûbº€æ„™Z·W­ÀÒ¿vé©aÿªð]]ÈBA1™1ØTX>Q¢2m·Û­õHª¼./ÂŽe䳑…l$Ä!)±ÏFB쳑ö³AI¨+ßæ„RYL‡"ZG.ŸÔÔrôæ l÷wØ»lpá¯õBv ?2ûÛ‘LeW”ÈQU&“ô[>1Ùû|Rf³‹|"e6s ¹ò!Xåè´««‰(„.æt†upsyýÑi´tÛV@ã6›^þ~(©nsÀ-ˆÅkF+eÁ!oªJµþ¶•¢*h›éJáЧ’dG¥ºd·U¦BJ¨‚ ß±Á½ì¨†:KhKM~q¥û·M(ĶRªh¥„êzŠ4¥\—xíÆ •F´\ƒ íi«ê+\…)¨¶¸XÌä@-8PÛýA¨sIÁÙ‰­ˆè.} ZAKAõÄ…à„˜x0ðNÁ²ƒÝ
+Ÿ–ÔÕènEŠŒ>qkâ¿áåÄ/çÖÚÜÑ<'‹¢“t»’ùf¾m¶àÁö;|¹Z4lE*Ÿ£7€Î¿^¨À»%[‘µg²±d_èZyÉ%,ýä¬ÂÙt®‡Itˆötº·ÊbƒÞÞÚkÚ
+¾}¸ƒä0R½Cçl×Ðe‡‰DÆ"~Xt.ÜCéܲΠØÀ.‚;¼%uvW(ÍžÈ9™%æ[Ÿ›=AÄø
+fž îUÑ¡-7áøÑü5'CGù„ '¸ðCdÅvã˜Ó5<6æ;'Œ9#Ö¬Óóð¬sf„qàIF(-‘s°sÂÄ3bÍzlîYÛ{ ¥öìÀp~(0¥ ”ÖÌùî·oñ營aH8]¹Ý« »êS' ‰M2„{ö
+Ïú‚ÉØ 7•êBBYü@°?4þê?iÌÝlM…—ur\1F@N+A::®¤Tý¸ĉq%¥íÇ• ?z^‡3œÐFqÝ.^#&w´ÃOhkAG<ÍWVJsDššUºMuœî–ˆFerjÙ¯ãÄÐbÎzn0´HZඨݕÆ–®A¿Àñ€ñ€ððÜà†_Néñ;Vß
+Žé*°a³ü÷cÓÞ>{㌌pÌ«Ck Š2ŽW—4¬ó'?Š¸A -ÐèýôÑRâà3: Z—â• Z—ê4‚.œKÐ]Ãcì¼A÷Ã<LÐgF :¡'è`çuºgmœ Ï ,t20GÐÑÌ1‚>
+ÎûÅùêà¬á¦ò§À9Ö§Á\«O1 ÕÌý »À ÷ôàNb;TÂ96¡ Ò‡R¨K^TÓß \mö Ñ2ƒèp
+Žm§>6Ü’b ÿ& ÿ×ж?ûñBf7ðÏ_É"­zñ!v7¿àÃ>î?<stŒpºpÜþô†}Ùnèy¹hQ^ÓÒ“ÐFýuÂã’Xv+¹¹ÍÉsªI?#ÈnÌ6¨·˜¨£ÜjYõhÍØ1é(ܦT=ÜqnSÚnƒ8·)m·Aœ€Û”¶ƒÛ6è!ܦ4G¤)¸Mž V±i¤m¢CH«`ûU¼Ò
+BÚˆjpNga"´ñTKHËÞ¥lž±7HÝãw—¨¼†§;<|¿Í…Í°^çôñ¤ëx¾öñV÷‡¿Tô
+®pxhñ¶îáí ·Îè<Ë쾆³ÿžÐßü-ì+úÔxà…Ò·-ôâÇÀë‰s™B|ÜnÍò·ØÅÅœBú}ÿññÛ
+'LzÑghRˆçŸØÕfÙÐ1ài…¥]½&O+ ­Oàéà¹<Ý5<ÆÓÁÎqžNSt?¸Ã}f\‘¢“qyŠv^‡¢{ÖÆ)úÜÀE'sÍ£h:Óñ":„Óûµùê8­ ¸~§C¸õQÚ”í­.°1¬îÛÅêC •ˆ¡PÀŽDõ(‰ž”êqMdÙ5se*¨…Ma‚DëBÊ»Èç?BBJæ) %öm>%ö}<%ö>'¤#$Z ¶4ð§’ôP&øSeÐW´ë›ë{ì–
+›§Ìî6Ûø;$|½ÁWk|Âv¥ô
+B(QÉHÕDz’v»¿—ŠV¨uÍüå^ËTrû¢S©f£(©øn88C½)Ö“V!3ÑØôªâKÚº¥º³òØïØ;€Ë®Š’Ëþ¥]2›¤Ãv)gs[ ‘×ׂ°}9²Žm_zÛxuo_\´þÚAV CQ¡t4ep£…¬¿a—’FæùLu ÎÂÖJ•E§©¾ºsüˆA¹ÓÑÃÊ•Ìgmcå{Š¼aIƒóeµ^oÝ”“ôÅè¯
+endstream endobj 1094 0 obj <</Contents 1095 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1095 0 obj <</Filter/FlateDecode/Length 4554>>stream
+H‰ÔWkoÛØý+÷#ÙB ï“$Pp²Bà"Þ¦¶’¢È.
+E¢m.lÉ‘”dóï{f.ßÔ•¸_
+6ÍáÇ33g^-DÊ?»ñâÍU*nöâÅBþ'R,®E‘¤©UüA!¬K\šj‘2Ñ*ubq/"/þàÒŸHq‚D+¡lât!f¹Mr©Åb-¢ùâêœÌâ³Ð…I <ËaÅà¸Êé„L¡\ìJñ/±¯}oH·2¤{Ö˜ù6tÑ«¬}T©÷ñ£·»¸‚‰XªÈ
+#é¯ü‹$–‘IRñ[K©x&£”ÞKz²ñï‹¿“Ãÿ„ËV©Äå­Ëú¤·äèðùôÈ»hV_ˆ×oûú¥JŠGoDgG Ù#†Ró[ܳ¥Š4‘½ë·?aÈëR&ïÇØ´V¬~BŽe>¨‡½.¯úMœEïÞQjq?Q2-’Ìõ.òñk”-°­#`y}L,u„Ï¿Òߒಋ]´§‡j»,U E KÅ%ÄüÝ]¹¤·ûRHú«úÎÄ9@àÒDÁwg£WfÉ{®Š©ó¬|wð¥õý|þ‚®o·ýò ~]Þ—ƒë³ER¨Ö…G=˜äË+ÙŒD²(gZ¾çO+þ¡!V3 îÝ.¶Q¹/7«A\J#ωË+8—Ê\Ò%Oe‰y4,Ÿ¼¡Ò’Ží\.77eÏ–NM¢òg„ãœ
+GCo«?¥~ýXŽºþ¬¦ýÙHÑ1ÅE!£ï±Î£‡R,7kÑåmhÄ랶mL«€¥F÷åf¢kþíŸ7+ú]ÆEÔÚøŒ‘à¸Ö¡>Þv•îµ“@½ºI Wåýrs¨bi¢Õ^¬Kš2ûaµz𯷛Á¼A÷ÏÁ«WªP‚N Š0K1/$âXùÔ_„Æåp¢'¶­ð‘³†Ú@-T)µd–ÊBeÊdܺb­—pH\¸Ä†O×>¤õmª•)Ú¾ZL’ì
+ÂrL¨6MŽ/â<z4+<)]Å*Wåî+^W< ­IœíhHäbfŠÔð1G8dœ¥d®ëT¸ËÜ¿øýãõ‚`3güèùÑÅS,%Wé_#f2‘&ó'¯ðu]žÿú&ž5àg(ç ”¥áé‘%)®¤wòÃòîK)–»ƒXm×d³DÎ0¸øž|þ‚Öê¯bÓ3%³ö>%;Ù:ø —®© kÒ½k¢[ZÆ3ÄyöáàKÛ“ëGF×üù†Ÿ×¥®<¥ê,9o¨ÚˆU;§FÇ£Z|äQm~Ç°¶]wè°lÌ‘:¨Å2Ô­1”YwL*1 és%ŽBFo18ê—XS(Ó`aäg#ÎÍ°@›:
+œÖZ'Aè¾×M•…uª6hmèæ'#púˆ´;Z—¨î5¼Ôfáèb©0‰4·„1͉üŒ–•^…O
+tÌ4Í$«tEàÓíÖó1*•à\
+`W&ÜQzSš@l€ÆìÄŒYÝ"hÝ™1u¼uáI9®¬edxHs.ÏÆÎÐã#ÖX×$ÌGÆ–úì
+!ìg2RùVçÛ¨¼Ú­³å
+w¹Þ®•nÛu‘^o×i˜³AH»ÖY.د“xÒ¯yû¸ô?¹‰È§­}r¸}rŸØ>¹G,OOî·OîÛ'÷ˆGO>+Pò¥“È`qåOËx¿e‚l‚Ï 
+T< " ‚ ™
+ÅÕõ¬§ê;¡WÚÌ_˜!ˆæqøþ]”‡7ük­2Í-qùh6W÷ß9È6X†O—§àp\Ç]”`ú ãåÌusxnž£¤늩z
+¾±c<Ö¸F³ÝóëÅݲÏÝAqÍͧ 9pûûD;Î6oi‡ rB¹
+J¤‚®iðÌÍWê×ÓQ/<òþÜl̉ =|_?Ë&±¾á·:¨ž™Šõ2øÀYë±dG%ê9W°;>KÛ…R–&–Yx4§ ç®,Ó¹Ìm£ÞÃgÖsùeÅxù¤c. ·ÌHY»ƒÞÓf˜G[¥â¬«Rà&¹íÑž‘^R;cyÐ4N¦ÃG…ÙŠùª\–€Æôê"¯¯§#Ø€px¸´>þ>¶Í™ ÓL@ô{Þ~ 7Ewìe7;ëÿ 7û^~7ëNnzîd²O•«¹ 
+=¸y]מك›>±µì‘Îpý|æ,eLöÌ(ß»[ÂVÖ„–¡ßA´>õؾ$ÅÄ -ƒ6B
+d3|W–‡ßcЫÀt©7 ~8V!'ŽPØ€÷cºd]¶
+endstream endobj 1096 0 obj <</Contents 1097 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1520 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1565 0 R/T1_4 1547 0 R/T3_0 1479 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1097 0 obj <</Filter/FlateDecode/Length 4136>>stream
+H‰ìWýoÇýWöÇ»<ï÷í…
+Z:Ù dÒ;þï;3»÷}C*J6h €<ñÝîìî¼yóöùRHú{x'ž}s-Å»x¶Tÿ’B‰å¨
+)¦*á|á¥4¢¬Ta´ôbùAd"_þH#T!aB7B»Â›J,‚+‚2by+²³åõ9 8[ŠŸ„©l“—¢X®C¡¼P&µø^lÄóe58·¶8÷¢ óy¸Ä8eZ£–q?ĸËk‘+9a~ñ÷øC‘«ÌR¼Érå3/T&ñw…O.ÿçò¯¸à¿Á’Ö…í’ÍÁÕâB‡H£G«Ëé@âü®?¿ÒEuôDL9ÈÍ’öMÞ‹¥+Y¨Þñ»'ŠsŒi[õ÷´é¢”Õc’ìº$—“$÷yØåØ|“‡ìõkL3ìÞRþŒø„ß5æñ!wÙÖÛÈ•Éàpm“})®
+¡ómÄ©«8kgÊ5¾*ASyB™î$Ç‚dÑXŒÉa© Y˜
+’CSArp*ƒïŒêr5u¬ Ääd}ØwREœ\æ>«?ç
+ºö<žæ¶W€¹rÙm´Ö˜ÝqJ#ÏB›Ø‹\»ŒJ Lðºö8‚ÞsŸ!ÇrÜò9ûv\fT‹Çj­#ÍL…‰|ጴø0èxœú
+¨3ÙÊvÂÛ1P‰ý–ÒÛeKèÊþ…„tõËz‘ç]42Ø×Ï‹kq8ø<‰ç3^~ëùoš{@ÓQà:X5tÏ>È*;[áL`ÄËì=>Ái¿k°äúoÿ×PÙ_éUgÙÌ°ãøàžîkú„± `¸ÐéÃÓ»ö©Ž¯ˆ}‹Oñ»®INúmn"Z¤$‹¶Ã¬ïzƒ\7¨lQ{“ÙÛõ†ÔêV¬áº²ý{¸ûtãuÕWíøW§çHË=ö¦÷±ŸQg–hAk.»áU;|½¹­!ÿy³ÝìW8œb7«Y÷™Ö´DX^=ÇGÝn3ÒQ¼‰ŒyuŠ‹¥Tœßæà}›bš]á"Ží{âgTkjm!¯ãÊII¹é™9hÌ )2ÖÐùYAëî”8ù•N8àõd¦‡£¡Ž0
+ ¡Ð2©UÐE0ƒFýåÀ(¿ ŠêË@I|9”´—“ô2è´wËÆ3–e9ÑU80…·6×7ӵì‰F¿Æ^
+¥ŽÖXƒpuÞÏVÈLa
+´%à]0ΡîXçøÊå*Mž…K1œ„n¼bí0Ç œ’Ì¡)Ë Lif°&ÏÍ M¦xšjÝuiY›æJÓkpire(M(k¥E£¬]nã=IMDÊvàûmTôât–¤$âõÿžqs[8Ï)ͪ39~Ä)NœâÐÄ)&N1XÃ)ŽœbІS Ü7çÀ«^ uĸÉйb›sàžÀ$¯†ÎMµôr‹Ý†Ü[äÍ×£ºæ£Z/AN‘êà]t™}ÉMÈÄEËͱËýÃæýaó¾šÍäÿ‰v/Îì|ùæûœ—tÍdÜ–pilèÄ÷1h”oŒêÍ (Þ ”´›CIº0)7ƒ>Ñ÷Y`¶ßïÃm[¾G[ïá\YßÇÁ)Éš²ÌÀ”fkòÌÁ1Ñ Údšg|_èj“µ}Ö…^/<¹Ì]V“¾‰WÑ
+ê¾w¹Â<.ÿØ{M´Ïã6”k—*¿„ʇöÐk Úò6ïŢ톴 ÒÑó»KX´³(ä.#:T=zw{G&Ug5¬Áà¾ë"§®Ô׳^ãšw—àŽ}9ËìF7©¬´3óÌF*[ô™ÿ8#-½&“!r­áŒà'Kí d?Òg|¦Ž»Gç=&>°ÀÐ6í`щ$V#ÞÏ£‰ö ˜X?é硆ó )?6ŒŸGSj•¥‹PéŽ9RåÛÛC«àdm§}—5Ú®ÏÉDAâ^E
+=éA7ªBKñùX7Ùß·Žt§°E€N+;ú¡TX0úk¹Î¦†c;ý£]çø&Ö÷šÜEÌjð¼È›ÊÀ"ÑÈ&‡œƒ#ÛY4Òƒ‘ï–ÏÂÄxM”çà‘§¼Ívq,8£Ä.hâ@\b‰i)JCÓ(% ¾=ö"Œ9ˆ¥$4à0E¬"–ø®\¸Ü¤ ¾v:ûŸsþ1OZZž\A‘ÁˆÝVanäbàD.Mäb`"ƒ5äâàH.mÈÅÀ3ä²­„HÏZSBûÖ­b’o@Í
+MEÁÁ¿Ê§èžâSÃíS£~G>Oú€OÑ`¿ª&Ðû”žC•&¼Üp­JY@Om`o
+ã{£5™ÁÚXäC[RÉÞàÄ\n4ÀžMÄf††¿40| öÜðž;1£AxÙÀ©,Øãöýóþ7ñU°ä¨ DEG|ÀeÉÃqj3Weæ°N*‡œX#©²ÁÁx3ùû¼n!„ ÚÉîr˜,º[ݼ~ýôhìº&`=·ìûžÒS¦ÍÓ$µ8§Ä’,DHß$pc¹<rLõâ„‚%+®ÕG+÷:PN†‡õH“hrÓãsQ¿ñ¥¹¼ëÒÏ&ìÂ|Ømè[¸Æ¶цüÈû:ÕŒ,ç]~”ž•wQ¬INÏï—SQ¿iT5õ8'-“»¨ß““µ ç$q™ÁÅý¢N3jÙæ
+ÄQ¾ƒ$wPìÏ´ç·ê+Ù›Zðîo|DꪽÝFBÔ‰iù%ö¾§ßŒ(Z‚¢YŠßèdu4‚ß(ØüÆû‡¦tóPJ¾µµL¢'Q]Ï¡$Y§Kò5Ì9‡¯~XÈœ:V’^™Y¥Þ]«ñè°Všƒ¹e•)"¸ ¶Ö3«?Á¦JÁÍX7X6ÅÃ8V«Õ2Þ…zøˆJ×®±>(ÆJ-7ªñ©©Ëª#’ñÌ&!™FѾ7Ùö1Êo:ï?Ç›£(ÿ‰7$'Ï›ó9õè#É4EÀýbˆ7¿iÛï9Ä›åÞs`uF:ç“2;²”¹„Wåíá½l˜¾¸«:úµºvÍa[RoŸ 7?hìw¬>3cyŠ±³¢N`RÍÄH²ZŽ!n[lŸ;8'æHñÅ0Í\ZsµTÖñsuÝ‘¨þ¬5>ó%>ì†ÂJ’…©ãòWÐ-J-cSB‚2bobK7åÉ>ôy~ÖàÌÇ£)U2õ:&ëƒiºãRBbî|©õ@
+± €·‰±S»±ªÞŸ(«[i¨*å’ ýÈ™øÄ«9lÙe¹ÉñÕo­2cø„–-|B«¡±;è{­=|¸Æ\_-£?0ar;lh¬_ VͶŸˆI¨÷õ©þÇþКÿP*ãPw0²“žõAw„µ†C¸$…ËÒÃJ Uß7F­¤Jl<Ú_šE p¶ø$æ`9éµTiâvÜÃÒªý‰åtiJ>:>
+Õ–ÊDŸ^ÛïÏ)In ¦$_w¸ŠO@
+!IüBÔãAμYå–€˜tÔµEG÷˜„”ƉUYP LJ9Ç没ƒëE•PZ†è(Šÿ¶M–{1’èëþIF­èHDó£x(L¢—µÚ±ú«`
+g\žª¡Ô¨¨Ø±PßGüÛ…þ ¾…µ¦ˆ?uð@-[Òƒ¡ÛÍi*ý†{\öµ§Q„>ðÎGŽ­™Œ¾âJ¥[÷/»ädî’³‚¾OŽZ?q­ïJÊWS´¦µ*>‹ª=D»ëÞ
+endstream endobj 1098 0 obj <</Contents 1099 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1099 0 obj <</Filter/FlateDecode/Length 3968>>stream
+H‰ÄW{OãÊÿ*ó§]m¼ž§=Ru%ØE+*Á¥$½Wj©*_bh*HBböÑOßsÎŒÇvâ Dª‰ã3ç5çõ;§3–Óßæž}ü2ÍÙý–}œñ匳Ù³YžkA,Ó&3y.Yay&EnØì‘%,ý‡8¸ãÈI·LèÌHË&¥ÎJ.ÙlÎ’³ÙôœÎfì‰I«2^” E»(3nÏA8ÛÔìw¶d§³¾5([(”=iÕ|šèDzEîlü‡Ó;›‚Š”‹D3Åñ[²ßÜ‹,å‰Êrv“¤Ü$"ð$Ç÷ŸtúÏÙ_Ðà¿‚ÉZˆÌ”ÁdyÐZ4txĽc]2ñâäë¾|.2ûâÈbD‘Q”«›´§KØ<ã½ë×oPädì*:ïûiÓi)ìÏYwA.ö‚ÜÏÃ.ÆòKZ&WWfð^Qü$ûŠß5Æq“êd‹‹Õ’¥\&p¹ª~ήLçê
+ßnkFI"úá‡ì*!:&Ïøb4¸ô’+œ\!Oäž'$=1`Kðäüìã—´H6«ç5»¬ë¾\ÛÌŠ`‹ìEÌ ØÑ™°^¼¸µ™QA…ÛËŸ«Ê¡"³çÜÆ¡ÞÖËÛ_BÚ¬x_NÀ!¿Da².x¢ÈÔ‹n¹à õ ”|WÏuµ¼¯{ºd®2Q¾Ã'à;äù96Ò—bÔÕ”ØoœŠ»ÝMEÖ@QðäG*Ëd]³j9g]܆Jœìrߥ|h´€\jeo ÜTrGŸîyy‹Ÿuj“ ã zµ¡6å]}¹
+Ù9ª÷uâöÖÕ²Y¤\%·[6¯©Üb®.Öîõj9Ð=ø{òÕ ÈE,ÀFf
+Š°È¡‘sð ’•>@üÝQ™Œè‘µ„Æø¯Â6à‰"Ï
+ã¨Üò(M¨Ÿcd)•pŒlM¦ãÜÞæÕߦè%œò@Æn”ÅDƒ cZ«6ȧË:¹Hy™L±×³O—ì3¤žI&×ôu‹tRà¨(“†r³Â—E²Â§%ÌÜVÛäÂ%*Xª
+ ò܇Зî Ë¿Áqéôž]Ÿ3b #îóž± Ï8$ÈôùƉDŠî$ÒÁ§Ï |¹Ú<V˜Ÿ¬“ˆíø›?‡rðà¶Þ¦PÈà—€ˆKFošT$«õ„>NÝ©6ÍþÜózSß/¨*šzƒg?t‡9Õ<˲ @øç©H(²⨳»Ô&y—‰Jd±#›û­Ï(˜L#Tí’«cÆ<Ž±Þx2À Ñ/Ÿæ1n¡ÈΖ\ªayù*ˆqK)³Ž
+NȾվF¢Ì¶À>œ–
+Ó`·îcÜ#ÔŽÕ˜la¿5xXKˆ@[ÄeŠ‡_1Dþ¢y轜àt98ÏIôË ‚.B]Âs†™!…Þ¯©ÿODΡ¾ èNŸá÷¾¦ÓîáÔ!]³W¾jð7€;wÆ&Oðÿ\o6ûxoÝ –ž«dªm[ w$â=,(*Œ¯sìóÅmÕ@aAé4ÿ†ß5ŽK Ó’†åê.åyâ^9*v h@S°± ?8R‚#2A! |oªÊsÂ}£¡ƒOÏÈMÇéXFý¤7$059Ì6sL`jò2¬z?L[~j æ{z:í+C§­žW Óm-Dºy¢¾ÓÀS£:œÚªyNQÖ‚Õ²X}§c±FCÄ”±îæèÛëˆC-lÕ¶Äco‚­­¿Gƒ­Coß[_êq؉²Ë[fz¶Äl=È«­ÎJ5[c4?Ïcd?°£d7’cdgsŒ:„­eÛ H…­†´5¶âAèšÃ£0ÎèQ÷ UC¸ŒŸvÃñ çÝ3>Õø˜O&MZR~
+~ஓ«ËT£XÙk-‡`¬*i®u0ÄÞQÁÕpC•ûèVÅ’ÀkàÎÔÐ_lr‰`öz\ý±zvu¨ñ˜nOáP„‡'"Ö(¤¡KÉœ­+ôrC’W¤¯ã‚Žº{Ð‘='X¾óù†ÄwEJÈø9#òU:1`žL2šÿ{èXÁ.¤òc¢cedÿ+ÐqkÂ{Ñq_ñ:nõÝ<ŒŽßéa@ÇQ:nÕ”EÐñ; è8ê¢ã äxèx7GŽŽ•ÏÔÛÐqëïÑÐñÐÛ7¢ãW…zG¢ì0€*D‡wáCKŒ ãü0<órÇh<ÄÈDÉnþÇÈÞæõÉá]¦ WÐK²^J„ŸÐJá…
+!¿˜ºÉ+“‹çŸ8jcÙßµF—u&® fQ‰£Šºä–
+Œ^]Ád¢Ùý°hµö±H‡ˆ´øÄ“ª7ê»Úç
+™
+ÑvðXõ£ù8ÅÈ>PQ²‹TŒìB£ŽÄªèB<VÒ‚Œ<Ä
+n*¤Gû®Î7ÊŸÓ^ZÓoú
+¯uwñˆqP;V_?r°/YƒwŠåxO÷TQê03ÃÆôD!@ãÀ'\!táGô¡w+B¾¿"8‰¨Ñh\\ W£×Õò¾f¬ž)ëæýµC4€=ØðÂZ8ÔF¼;Úzᓆî;Hç/n@joït2ö|:û¾~¨–Uƒc1\u×­¯ñÉñÆ}òETȱ”#[îa^hжmÖû@1Fö’#Ô¨§»,*¢»ŸÐ
+|£Ä [áðýŽ€6¬»!ò#:Íáÿ‘^m»mÃ0ôWôèhfIvbÃ^¶¢è°E—îÝMU4@nuœbýû’¾Èq”¬ëCÛIQâ!1MQ'-_›¾Í²®OÓ¸è˜ÞÝ °gÄ “,Õ$‰8aevÌ^øI­Ö#µ~¢B«l uR©_âã•9l%ŠYÂsIx(6¡:å•z.h㎥ü}Íß+Ç{ªêøÈã-mÖ)7Mƒ“gm«¡¶ð»X윚o
+ó­íšÌ7bŒ½*Ñ€9 m­uRaý]7P)çÁS´M(%å+ }@úÿsDž#ë£ó¯
+endstream endobj 1100 0 obj <</Contents 1101 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1565 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1101 0 obj <</Filter/FlateDecode/Length 3264>>stream
+H‰ÄWioÛHý+ý±9€˜¾I~Ìá <@<YK›&ŒD{4Ðá‘è9þýTU7/‰-_Â.‚X‹uuUW½÷nÆýÛݱ7§‚ÝíÙ›™ü¯`’ÍnY‘
+a½P0ëR'„fY!S­„c³5ã,™ýFÒkÐ@Ñœ)›:]°InÓ\j6[0~1›^’ÂÅŒýÎtaR0žåàÅ€ºÊSé˜`œí*ö¶aïfýhж2h{Ò¸ùs¢7bTÂÇøÕûMÁE"·ÌHüÔì‹&’›T°žHÇU2‘\às‰ßlòmöü/Ù*•º¼ YŸŒ iDÇ'á@¼}Û·/UZ<z":qdG s“ô|©B¤²wüöŽ¼CGÊÊ~NÐ6—¬xJ‘mWäì¨Èý>ìj¬?&9ÿüË ÙªŸfàg…uÜ%–ïñËr»a‰Ô×4ÕìÄôÞª*ñé¾bÔ$ª_~©2È‚eN¤
+’±YjòÇr‘E—‹<ÊÅ[Äd„Ó&s]nî*ö}û€nƒrkš0 gu¡7pà’³^Å´3X¤Ö…|Ú¥ÞD²q”ØÅ_÷«rSÖxÑ ýÄŒ´¯ÏN̈'ætj x™€»!!n¨ýó·Bãr¢'¶zíݸMHªL–f.*–#Ò³êݼí'uÔN~ѽ·0¢]sèëò¯D¾Ùno?á—‡U½œ—ûzšÈœW;¸#p+°÷çöÛþ'|°]nðGµø\íþ8~/³d¢\¡8™)AEs2MÚë‡5ÛlS¶½M¤åÌ»¢
+SÜÝ–t§U‘*)7ÃWN!‘÷d¢yͦÕ.‘÷±Í«=«Ñè¯eMw·d>$ÃÙß(7ì7¼­4#½jOÑãŸ9Y\’©jõw"OYWÖÄ%-è$‡rål"Si2Ü—rõP±åžv%×4n(½-@g¤m‚XçpãBq•ÄWF¤x/¡Ù;å¦q"ÚʳF¬rZG-Ñ‘vª¡ëtï¦ ßk…³Î÷:k'1ÔÒ!‚^Óª®iiÂì…É.Éì ÖŽØ¿¡m¡?R¬œRRðþcûÁ@…ösüþ™BŸì÷K˜Ý0K@ÞNñ{øE_ê%Ö«ö¯°+øx
+[IOØN)™ä¼320ðé]2Éø§)£ÏÊ+U^uê?ÿ
+Õ†ð„•q¸~ÉÀÏÁ.”E‘:Óº0û£+߯Ãodë(ÃÏMª}µ™’S†Êk’óN%§œCظPOÂ3v<9oëЙèÔ€_‘ê‹S9i Yt‚¥ÇêÕ!´ã•Jö=b[†kýw¢s~_±r³`]ù†N¼í|üà´‘áà Õ+8ØUxíné¯ÿ¾™ûÑPðÞ%4J§]g JwÉÚ£XÈÚq²Ój]np’>ß³EE
+\Â$•…ŒÊ²Ž‰µ”ø$&6p<x×#âsD:‚³nÝQè`ù»vÛ~ÂU ó¿ðànšÐì‡å
+kó:¥[ÝW„Áh!-é0”éžhÓ0z“8 ì[„syh\
+¬ ë
+$ð… fd‡º>1†KT9þs2±ü=î¦Ù@
+nOÇ~`´X/& `.&h-&p,&1G¤Ç¤LÙƒÕ6JÊ Ü%-¦€2.q®a£oð(d
+Û©¼kwh?­°ÿý°PÙÉ¡…9¤cÙ&•!ë€5 $p^.–‹Ðȹÿ]1_ï¯Q'|´Eµø²"lçw?$¶¿Ç$oí{}âgK⤈LÐ +»<m—§1×QÁT“ª¹ß×ÍYæ¼"¶v¹Á™Ãlè¹kVÿÁIöæf‹3\ÖŒ†Èv‡G‚lgà¼8ƒ”Êz1"ŸÃtw䒸߆(Þ{ú¾¾Ç¿«ª†Ÿ ÊMo³Ø´„á¢ÈG¥lÉO%?:—=ÔGäǵägÈ}lëÝ z ñ±ž‰õò>H«ñóZ‚5ð3B°Ú|ÎB°†Gyš`½2Ö`E3 «ñs‚5ð6N°^›XC°¢‰y‚Õº9Á:¼ g'X:ƒk^D°štÏF°†É¾Œ`=«Ôã+Re–t!ˆÀ’¤F!X§uÛŽÉ
+ Ó´:þc;^óÙ‚ë÷¾ϲªüýäOj…]Öñº…úŸíÖ/—1e²ü‚Ï'fuŸM¹BK„* lëbÎ:KÐ)×
+^Ò–³¤ó«“¾ŸãSm.^I:™ÍmluÆHèeœ*D‡ŸÄi÷'Òó,™¶#"ŸYƒŽa{ PGö/ŽÖ3hÛàá³Û‹ÚaºÝ°HW¸£´×ùÖ£FMÇžH?0ßLÝ §Ö½’~éѺ7>«ê†EÐ#_;Q? $7Ô‘Æ8Ĭº0RpeaDPíe¥lwŽŠHODd¯Ëh4#°«qHYªEn|õñ•—+…~ÊÆÓëåS€
+endstream endobj 1102 0 obj <</Contents 1103 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1103 0 obj <</Filter/FlateDecode/Length 4017>>stream
+H‰¼WÛŽÛÈý•~$ƒÝw’/~pbx ÇÖ:vh5œ±‚I#É6v¿>U}!›—eÍda`f¬RWuuªsêÕ’q÷ïpÇ^¼ùÀÙÝ‘½XŠÿp&Øò–ÕçFº/ÔÌØÂr®XY‹BInÙòe,_þ×þ‡hZ3i
+«j¶¨LQ Å–7,{½üðÖx½dLÕº
+€8ƒK
+ ^èhÃÂ0¨íÿ›6~bHøJ›í]2ã«Ž?ôa}dd ` $‹ „AÆÀ+BQRÒ8\‘¾¡ ‰á'¶Â=ªêBÉŽS¤T¾¹U §ÛÊMµîæòÓpB@£©3Âhh
+f0-(s˜„9L §aŽÓ‚0Gò15/,’Ö¨•žcÁ1µEü¬ vâ|ïù!PÓ«$Οp±àmЊ–ù|K¸ú ‚>èºq†x "g d*îdŽû\r,q
+%Òì¡D™=”(k€eP¢Ì‘xŒ­ŸH<¦çˆç ññDÿBUEýL›Nñ™7#ŸÒí›[Ïùô¦8ÏSJý™D5L<aª 7IUGPe—jÇP£Æ¥ÕÞ—áóbànúºÅ·‡Ð(Ü” $WrB¤XîÛ9 4vÓ§<-ÛéäÛL¸X’)a6Tô@’¥ë
+÷¹‘­Þì[EYâ èÇyEœ–ÀEÀ!Ñl,ötr:Œ3ê4˜«Ö
+Ùv'ä#*¸•ì̘ƒMÇAHœÖ\ãos†ßiè8'‰ÓSæîpè_Õaµ…'týŠ ɺ™x6v°0Á Ó¸>êžRCj³kbδ|>¡Ñ|®ë*Q¯o_¿x“—Ùa÷uÏ~Y=4éb(LŠ=^aî½hþì \²‚÷ºFˆÞ¡’ü< `éx7£¼Þá°kŽ ´^×­ {]Fî(?—‘´ñ½0ôlF¾dý@ÎÍ0ÐûÕö®Iƒ%]› =›‰R%öUëc¥æjÓMi9Ÿw8>–lgûÆMTŠ[n¼—ÂÙãÒ]À[î;
+P¢D‘Ñ®F½ñËÓ;ý8
+¼ƒÁ=„óÝ$Qææ+ДNx»2܆J'‰t)Ê¡Á‡Öš!˜.M<LH⃰E|æˆÂñA˜#>sÿ¥œ`ì„Þ¸þqCÕ~’‡'{éÖ'}¹“¾N£âcöN*£¤ÄßqºycúÚïHdÇNÓvòÕ]pRƒÀ@… ¯\Ö¨Ôu™*u°¦®½Dw¢}¨Ñ«²Õ²Ô0þéZyUì)²qŠâʦ‡]©‰£`sµ fƒÏÙÓ¢ Äi©+GÃÁ<…(Äi4 D3Ìϲ')ŽˆÓN§Is¼ÉhvR§§Ìg%%÷Л֕Zëq×·ºRbšÏª+¥NÀ~‰® W¸RW&á&ueðþt]ÙËë¼®¼&£NWRE]¼?]W¦]yU&­®¤2‰º2zF]9@ß³êJ§¿NW†LŸOWöò¼RW^XÜsºrºÂaæ+ ¢“’†ÁHéÊó‡a¼ZÝé7Í™¶È„9ÒaŽóž0ÇKæVWr^TEå,Ü;e!DE+K®ð»©²ÌÖ«ŠETßγ þyB(|A½‰
+@eüÖá´Yãïj„ê‡Ð±8Œ×Qµv×ùØ€ªÝÄ”&¸Ôšpd *é…Êœ°„—Sk‰7«šwè
+ò€—ýÙ¥sÙÌcîÌü^ñ¾¤UuÅiBÛ kI[ŠvSîWN€cX°“Œ’òs×™éÚ„u?„A'Öp6:ꌎ£z—€ v\Q¿öW¦™Rñ_
+õødÿ¥hÿAð_Šöødÿ¥h‡ÿý¤‡ñ_Š’¯Çÿ,·”FÀÿŒê[ï~øŸ‹³`újüC¸ÿã× áÈ~3þÏë"þ_5£ÿÅyüÙoÆÿ£ ãÿu3 ø/ÎÄã—ý~øZ}÷ÄÿLÔBî7á˜éÝðÿxž×áÿkͽ€ÿ‚þçgùPÿ:%ü¿¬Qa=EÑ)Ð&‚N AÇ ‡~/ÈaЂð?KÇÀÿüÖvÛ7¥*ó£
+E×.ꦣ~{OêÇk™ ]?2;Lý’æëB’}]H²¯ Iöu!ÉWR¿)3J6ÿÍÔŸª1îRêáãÛéßÞ ÿ† ¯,eK§š´TЂ¥‚,ä`© KùÜRSöžžYJN›‘¥ÖàK°ôo(ÚM-š÷fÖ <!òÇJ“±ÕÊy4¦,cî×夜"øùJ©öÓ(O>JþüFÞD†ÛW{ÝôæI:™˜¢Àûç#´™ÓJ‡öõÇ](â{âãȺ™qIÖ˜ZãgµÇ_73ê
+ÓnT(\B±-fµ¢j¯”"²£êé Äå‰à“ä¦Ý«íÚÉ¢±ýاxÁÃ;Êû³v·®çªuyÔKÅ_Ôf{€°S)ï÷¢‰Ræ}J{¶×JõT·
+AOp7K;·ËíÊï[~|x~âw‘A'Eu¼ó&ÏGÅFo*õ›ï‘Xì_‡Š€gŽ©5k´“?=/HKé<.WŸE‚vû®éœTGWqu]V/­Zow4›¼§ƒÃˆ)7ŠM½ÜDÁýTÍÙÖÍŠM^.Z~ë^ñˆ6‹Ö©\"W6ÙùRP‹°‡2`&:ñõ³WͶU~F„wôh´uµšàó´—Mq拽LOi'¦a¾5q½cÑé„H’øàÕçCéû lòÇnP1Š8ØwI!*`Ö«³ °ö=TÎ)8žpŠqœ <¤ö±¾ýf¹¦®éÎla]ÓÅÀi©øŠ¢É©ÔãS°ÿ
+endstream endobj 1104 0 obj <</Contents 1105 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1477 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1105 0 obj <</Filter/FlateDecode/Length 4535>>stream
+H‰ÌWKÛÈþ+=‘ÁŠîw³ñÁÈ`ì
+Ã1Åê6wÙ»w˜ep^SúûŠÏ*_ȬÍMv˜¦RhS¸Ñ0ϯZå«„˜YÔÍ̪w Ë…Ê “Ÿ5ÎÞƒ1‚k[­ðí¡bŸrj @¹(X^H°Ï0óš‰C017Ò‡Z°e0ðÍÍ Œ\»{Þ³·«§ê(DÆ^&\µ` àäÎŒMÀ!¼'ˆWh°½ü1
+8¾ˆÔÌœ{‡Y¯U³>òK*üi·è<¿ä–´–j+^!]¡¯º’w|©9½èýªy¨Ž
+Yý1wðüEw”r…±h8æìZ–Æ–sž&…gÀÈ:( ‘ýž«2ÛWlÕlؘ¹ãK‚îræŽÒ"€3ÐÔën¡àtvOŸá{³ÆÏ*÷ÙpǦ¥*ÆÄ]g_©F?ÍÌOÒvÚÙ]õ´jº::[ئB–:¬¬õ>¼Þ5GmGøâÔ!¿a«P™sº†
+%GÞ%©ð")“ÚV'ÅJ|“kˆK_ÜaÖ#9(trÁ¯Â8¢œá€Ôaü›r€äë][ϲݭò…ʶØØ·|Qf5~í
+ؾü«²þªíê5>¡uðx$U#×'¦Á2ÅaÖè-ûPmw뺯E÷c%þ
+TŠ8íVuÓ‹¥‰àÅ2\l . µqŽW
+ m $E?f rN¡_Ú 7z0Fë3h‹b°â)!ëñ”÷xJˆ{<%Ä=žâ˜™ªO4O³œá:–çËaP.Á4°\8hàû¸¾> ¸a˜Ï*¤ï予FB"duËîöU…ß6˜zN.‚L¥}â"×_ò
+òªÍmV7§ ¡À¨ÂAqÚˆ¡H=é7…ð&BØZ1ÓoX
+ˆ)˜8<ÐkÅrà<—}®Ðòíî[.å¥ó3¨AÎ$OC»ÂØ1¥
+mm×(o sC²èúr`hÎPNŒø ¦
+ŠƒçÂoÉ@çB B-S ÂJc¼bñUáPoò…ÏÞæ “-o€è³[ú|R?½ÞŽ êü`jû”ñ¢Æ °¸
+;9©Æ¸ ŠhjËk ŠPi ÁË©}˜»\fÐÂŒøujá†Hsù§>¬>0Ø"HÙ¦Štˆ¹nÂ)úiݬ[Â÷¶gúÖt¶»¿ì?TQÛÝ¥§PŒÉ16¤c_µì‘ªï¹eÏ´1â H¡hÉ*ì˜%ûLú»¨õ(£ŸëfÕ7 » Ù·a é{úŒq‚´ˆw11­l“CX–¹0ÙcžbLVÛç
+Ý|›c’@ÝCMï«ý×=Nu£§~P÷<$¦ÏÊ切öd&d ú/²ÎºÚwiËŽ‚v¿kÉ ?C~¥A-F+ɳÇzýÈjÊΆëU‡Þ µ4ýh¥˜×G÷¸êX÷H¦…„„²ÒÄ‘m@–ˆÈøЛMuüPr¼Äj­ïëàzÆt-¤a“Ìh¼žHQcR¹1)䘔GvLÊ#=&ågz×)XÎò£/㈽+‡µ®….¦÷jñ‹ó¤8Àÿ3ž0ÇŒ
+©•SÑS °E`T*j *l}k8à'M~È ÃzÜ!¤"ƒ¤ˆp}Ùz‡ß€©âC¡b^fÕÓðÓ.°ÒâàÃéŒBúÏ&œ$:$Çtˆ¿m&„ Ĥ88ÙM¾'Øð$¡3—3nižŸ>ãm¡ÅNHsIÑ"„¥Ûgúa G3ÉÛ$¤rÎ0#ƒv˜îG¢M¦„_=Áo¤Žj⃚@à QéH‘bB‘€K¢ÈË  É“bG†BK@bŒ½aÒOÕU¦íxr×õ¬O[n}Úêó4ˆT"Ó{¢Æ¡¶g$qN*$ÐÞô0’dê(ÈðM/6HÓ£‘BS§¥.qgéÅhÇôt$ØÔiÃ|Ý‹áᦧ#ý¦Nk8=uš£%ãéHΩÓçÄãáÈÜj²Çñ@×ÞèM‡pYd,]zP]6,º°Ú–à¾u´‘YÛéÕE× ‹®š5Ò‡×YîÄ››·¹ËÚÝóž½]/ {íŒ]x9˜pÍ‚£ÛÂÙ“ëïH»G·íÌ.¯9(‰'Ž/"53¿Þµ910§¹$•/ìÏyDGù%¤µè¨*I_õ(¤ìø"RszÑûUóPM/<þ¬'xô¢'JÚ|†c¦®åfìr¾ ð ú€'CUB+ƒé}ÃÆ|_2ôŸ“x)-â5`Žë^7l ÝÓgø; |V¹™ó ÓRcΠ,¯¹9önf~’¶ÓÐÂØT=­À ×öW™ÖÑz^ïš)LðÅŸ…„Î_Èpä|çÎñ×±pÖMzò»x¸­,£ÈÕN&ï qßâžïâÞè„ø ìH?Z`f\i®#aœÇù|'…˜êr=^CÊa8Ì(õðü¾k:DïpØÃÿ4]ëìb sîùû ÒJÞß÷
+YpÕÂXS7¤™´N6 ²¨Nhh߇efeœÚS8ŽhžÌLÍÓó†2ß1ÖОG $d=â q„¸Ç@B<_¸âs¨)gùu8ì`¼¥þõ
+¢£œÌXˆn0%Ö(mBùØBÁiz
+Ó'˜ð»78Óü|“«ì6/é {RÙÍhP˜fçË‘2þìrdÆØÝŽ–qXÝÔmE»
+IJˆQ8i6ñF–Ùšˆ,+’œ"ýúÞsçIQc¥A6~èê>æ>ωû\—aÓ<\BÁS9£º7h%›CD‰PäÆÝ_)¡]¡z„U©Š* ˜…Ä×éW±_ <̤ûヌC¼ë×K€ Êí†ø~Øòßö²ž1˜UqÆÊéŒÝÌ°næ|˜ØKäàžmc¬wÿp€c†ÏÖ(h±ñ¦e-§F—ÇöÎÒÞ›Ù=ù6âÓ°fvÊvsÂn{±íw‰åx‚e6ÎýãÓN 0‰õÅpK3Ü¢1Ü&«f¾ˆ9^D¢Q†`•ÔvvÅÝ…y¨RzWt]çÚòßIn‰4š1:&D]…÷âB\‰ŸE‰ÍZÔ‚Òý²<[xŠ Fžr ËNÜ(º\ä ÞúQ°PÕE-Ûç#NÖ≈‘9ŽšÚ‚Ç¿Á#ëÄ.ª¢¤Å5£‹« å‡Áq4?UEÐhF+
+\sÉ´Vì·ðÄ•ò”‰Û¿.ªÆû`ƒäd؈Oƒô:8ìâ°³‹WHli+Hb0÷Oøp'†Cò:¾¤›÷?‘õ»~‹«ÝpÛ#²=bƒ³©g/b’-•!L¦N¯ÄìJxR1"KE×ugxR,[i¦Dé .k œ`e6çâ%¢%ºÀ<×#ìå©æ‡³<i:>Áò|ðÜ]=r-æU‰!!IÌ«%p~,9¥-§êŠ¾‡êAÔ­=Ï´000ç'«"ŒSc»È:RÊoš,JfÓµœS”ÿæ”4>m{"§Ô
+endstream endobj 1106 0 obj <</Contents 1107 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1107 0 obj <</Filter/FlateDecode/Length 3707>>stream
+H‰¬WÛrÛÈý•©}¤–0æ‚Û£vÍh•Šµ^‘Nªb¹R ILI¤D@ëõßçt®@Ù’Êe˜Æôeº§ûœ_–"àûñîtˆ›B¼[ªÿB‰åµHý 5Š0ò£ 0"N•ot‰å½Â[þw(·#À­„ýȤb–„~¢ŒX®…œ/g¼a¾¤ևò8‹í:ñU$T
+¹¡þ*v'Ûøñ!U~¦¾öɼñCO)èÇX剧åRx:Щ\~óT(r²dÙ´–ç‚Ÿ´; 4‚|@T3m“ú&ªmŸmqFëÍ*+óñŠòï¹@ØZ^x³>À³%Þמ
+pj3-wXˆä½§Éúö+}vëͬܬnk-«i/=Ãç¨å_ô†?>‘˜ì•b·ßÜlè3xÀѲïìÕý(P+—@Å\2QˆŸç*F…õy èÂa}t*íÌÙüÝ)Ž}¿{zçÙ}Þ½ç*t­©ráYØøÀ®Ór`XŠÎÝPèWèhµ‹
+\ãºíèa_¡x•^ÚÒÍÍïrî´÷¸K ÜrŸðVÐMÌ×´Gtâ&mèk–`¼KPgö†T—äI.øÃœÈ#‰H¡3T {”¤–†Æé …s&‹…ÈØf±áŸª32„³c[i+3Ÿãí´œÀ4§¦«æ€WÍ¡w:gäÔÜ›±à­dÙDñÀœÓî(JŽWüzÞµÇX•ÆÆ·Á[PÖ‡õ0n ù9Š“~­]x1ÅI†í> 8©ÙÆÎ+)é„9IqRj¯ŒÐi9¡Ž¸ÏÕv^IqHסµÅI«^) ŽfLàwÎ/
+¹¤jR¦mLÏSbBÚX™§ŒK¦Ä•ÏÒ>Áý}†ƒ7n¼¡íÐYï˜ë4«1ÚO1ûN<#Ýp?‚ÎûšÐgùO(
+Ô¥wÈLL ÈU5Ð,5ÎVËßw{@¦bµÛï sç³xßm×ô³ÙÞ´
+uËG‚´á gÛëÝþžðTF×Kc«˜ßÑC~Ï—oK0¬dhňìšNtC8a»)›g\J|ÛÉ\TS€Ÿ‡t¢ÈsñÓ `•â„°SQ‚MQR
+â×âqˆ?¹ÙAü&èqˆ?µ{D:ñ§°­‰cºG€=—7À¼Jô\op†‘Çõô_|ü'Áós!#ü³55vGv7å·ö¦¢tÓ ôèJ7ÿ§½|{Ú†0þUü²H´Šÿ¤I^#4!Á6½šxSÚ"Aà hÚ·ßswNì4I+›Ä”ærçÇç³ïgLžÿJ÷4þʬ;‡Q`¶aWE¯éCt…ÙÏx=Üþ¦¸Uø‚÷j¥¾ÂžÌ.‘‚+ÞÛŸî´IúÁÜi“ì}ÜÙJ8–;ãǸ³çc¸³?ÍÃÜyä ;¡É–‹°–Ça'…JöÛÇN›8:þŽœ˜D941ÚòI4ÎñàÉGÊôÃÀ3Õ’?ƒc×äïO\C½Ím-ÿ…;‹Å;‹x;‹¡ŒvZN£ckœÀ΃¾¦HA½ïÐ¥»f?eóÝ|Êl­¡}=ev:9dÍSÖ!v
+: éIì4hÑÀÎÌH—L‘Ü «M¹“ö—øZc&Ìi©ß®‚!
+y-ë#æ¿û‚žu†€ß©Dι·ð£ºÏß`¿@¢?áûÀ‘ɲmš·¥
+ÜA1jö7»ù~b:}b;yy,/ýkyácéì©t^¥T."£W1Ù.= ú‹H?oûRÞ™,µ[zº.ºfm($Þ$òE×[Åi¥–œ¯¥y»%ÕÏ'ÈÕc=ôGí™à³à Mj[‡«šº™eÕÜSR¨Ü
+endstream endobj 1108 0 obj <</Contents 1109 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1109 0 obj <</Filter/FlateDecode/Length 4214>>stream
+H‰œWÛnÜÈý•Æ¾„–\6ïÜ7/¬8
+¯bÍ& ØFÀá´$:G!)ÙúûÔ9ÝlŽdÙ‹‚†Í¾ÕíTÕá/;•ðoºV?½¹LÔõ¬~Úé%J«Ý•Ì×qÓ乊çiœÔI¦Š2.«¦R»[¨p÷‰'´;'‰ÎÔ®SY§U¥¢¢‰³\6Tp¶»<ç³úÊò8ÉU™ê8W:‰³”3µšŒú§Õ/»'šàÞ÷b$çvŸ¿Ö.MD;\˜5N=JÜ]:™ߤEœ×Nlé7¤RàËbpCÕ”›ž Xoot\”ß6*k #¢}Õw¬**™µâÞ: u*×xfêv"Ó@¤«A¨« M0§‹ðãî¯O•«ò:9§ÿϦóxáL¾2½*ÒívÆÍw¬—«¿-÷¬b’üCø•¤<Éb/¨øÿ¤àŽb…KZ_ Ú×Xꪉõ÷‚éc)8þf,Oòç}½ «àâB@ªRAT¨Ó@òçOF:˜Â"˜1è£b@S»+u¨w²Ì}ƒi1;¥ñL·¨;5Ó“D*6Ìi«§.â¦HRaPBq1¸|®¬¤²au­ƒ¿™yn¯jǃ:¯Â¨ Ž¢ÑtÛ.Ðôl0·f £*XÔ«ý¼Lm·¨Ë0j‚G1.-Ö¾„Q\?‡MÐ/7êÕåÛX•_ÝØ)É ,Ïœ¢”LbiFG&Ä!Iþ‚¦±à? Ô3š©D‚½¾ÈNBVo1+­ˆF\!i5Ö:Ë$èϼ £<xê"x+IìðFÁC©}¿”èˆEê`®B-!Äò­z8‰êuGÙ^#7'yÉ‚Û0•H†ëUŸqÏ.7<s¾ãüoÎر
+‡ÚöB®ñ®#2x²ÒíÆíÔ¶=(¥Ô ò~¶Ö{ÔYÚL¾RÀáÅi¶Y1–bBžçŸs³šoÚaP{ØÆbÜK% à&ùÊçÀ£’ÅX€&uj»Í£ã#J–áQ¡_îêP&ö?íÑŒi¹vXÕ+Z ´) >‡äbe5QÎúλ‘0ª½#¢ï¸©µ;DÜIÊ}b§n„ ¬bXe÷‚šO ‰T=ýâ[Oj[ÏIי㘡:©UF}”Öq)¶À9ÿ×ý'úBØ´Ô)ßãó`$Ya…Ÿ;–©®Ç±«G@L¹j¾»ÏaºA°!ø%2'[fÑ3\äåçgO ›ºƒ¬míÝø1V,oÐIv£Ÿ– ÌØÊ|Á{· À£GW>­Â,­®ßMÆÚLýì.o¸öÈèkkË¡4¢-Žy¹zº"K–|­KIƒuì—„À ™¢”H>‡{®«Ä¡=;§Å  Ÿ¸o9r<yÆùÁû¶èó 0_{úë7\€";|»–Hf6OZXKÔnЕ$l¡) ƒ$ébÓ`Z·²°7¶°'
+¾u™"P™ÍHÇ
+lÍ[ë ¤Å–}^»ŒÚé*NS_«‘ÙGD|ŸOô `{Ó¡ßïN8TŒçÞ;ü0Q¤=´ƒ]aU8ºã^íJçÊz +NôÏOÇðu.×ÌéV--5‚ìÁ庫¥µ—"Ùy‹Ê ž\¨é 4åfqáìAO> ÷,=5ú®·ûI-K›xòŽË{Á‰¡’êTV¸"¨KKÆX snMìs·6ô󂂘?©ß>ö[%r¡8ʼnT¼Q9,Åê”Ó9¦89…VbI2è8d°ž £q¾äã%ž]>)vHÞ­Œúô˘~ºŽólK?1ζá剻Ä`6T°u-¦°£Å³Ö…ª;;?;¤ÈijS‹ío}Ay\‘^¾Úþ\µÑ±n'G¨ýgAÛoÙì­×l"Y×™ïVÈOa“_~B¬Z#DHíÉÀ“Õê¤ÄRIKeãàtâšk¤sø`¬‰¹Kö¿ø¶–0QÞÄi¥Ÿà†%ײ«-»k§å a+€f , â›bãWغ`Ýê“9*#½Á
+À±–TËyÕÀµ
+Jhç­gÖ¿/UÖÍiù±¬g+Aïé°Â~Ý®DdÒk³ûshÉ4¾>È1i&ú
+EqJˆÞþº£ü³ŸÑbaxReÁŸ b­–²Êwï Cº&cǘÕ6öE6óTÓ•ýÛ.Í[óT³^o§Plïüº¾Æî zv€Ó®´AÚ—qûÅŠ¿\{ž9’ b80ù’”f|€¶(2±#Ë•±Ä©õ|É*ë Öèé–!KzÎ+tÄküOM‹X׹ϸ7ÜC¨CÏTà.›6Ö¶
+èÆÖÎŽ5%\Ÿ=€¿zÕ§âx?&»Éš\«Å$Y9'Æ÷
+XÑëjUŒN§W)bêS/×…áO`Îú:ñŒi N­Ü,1Î2z"n!‘ênƒD
+$b4°1lN…Çù~¸Æ*5ã«OOxòòtá‘3 Ö0WeÚÏ‹’ðÔq6–a­ZÔ§ÈþLJ‹êm8Q:ØÞBg#Êž[QALs >W/M.t¸ÙÄ!÷6LsýFüIjƒu =„-¢:FrÂÓ/VI*µâõ[}t¢8—{£Í’'ˆëð4Qz0^·e¨º{ð­ÅÜFj-вj±꣢»œýç‰èÏÒQ¥¹ü¦°&h!÷áhÙ1èóÖü•F‚à{mØMØe0«È䉨’4q¾2É‚¡X'ëÈòíIb I]¨)2ÿ9Ôo8ÕJU¶sé…²ä´ë«ƒ&ò8çd‘`| öäËhßõˆuîÎK ^¥sDYcèFŠ…âÇü²q Ò}2ÝB•TE&}"¿qayš&›ôqÞµ@21ÛÊ%›š 
+ÖüyP£j暌TO£ƒ·ÑÞùTA.Ê<ï.ªx©L³¦ª×ÓLè~×î4nÊAw Â<ÂÌ×_h¾/Dq§ÙT-%x™çªé\Š`׋öp+ÅÝ]l__»~I‚ø×Ìñ¼žã`×ZÌ–;á“ÇM¤b¯¾*@Uªl-™\ÆKÊ—ƒnÎ2‡ËE0‚–z[ªDÍä•¿#¶’%n°¨Ïkª
+“覮ð77š3´y ÙZ´«1¡ÚLÓ¥š«RZ.Â!í©#ÈfhüXÌ¢mÅ÷OÒ¸“þöt%›Í帛Ԍsf–Úk³Éf7bù;ùJg‘’š¤Z9•-¶ý;zÐâåw4H!<`ÖßÒ éDƒ|8Ú“Ûß)*>ö(¿†âZâ&Eù›ÝCvœ©ò*˜¡xUE® /'¦F*%©eéÒÉ Qâ¢Ê'éÄËeôî§þñ@>l£ÿ
+endstream endobj 1110 0 obj <</Contents 1111 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1111 0 obj <</Filter/FlateDecode/Length 940>>stream
+H‰¼VÛ’›FýÿC?‚ËŒ™á"áª<h%í©Z­"í+•"0’±¹È€ÖÞ¤òïî`uC¬³qEz`˜9}úômŠ+¦úx}³4aSÂkNÿ0_ãþxžmƒááÚfÄš8.qÞ
+èü“² 1MjÁ6€áxIJ6åK_L9|Ë&¦ .£Äj‹eCB](¼‡ ®ø‘$V¼†\™Cà_Ïå1‰‘Œ–WëûPûäKäÖ)Ó°©|Zð®Þ :ÕP¬4ºÓ ª™rŸÊ•£ÿΕb{”;°=â¸^ë‚T)³[›2w<WåÎhRqÀî°=;eÄëIR_v#yZ7¦½ÒÏ<Ù¦E9Ïó"9œ&ÑsÜ3'²Q†­“÷j{Ðz4ëFhó¹¬.sˆ­ÊfÁ½|
+Y¾Bw´R.â<ZfÔn‹nÂ.Ü-¨Þ`ûª72Y-S©cn›Ó²‡` e &¸±í“Ù0 Õì&”P 9Q{ÓD¤"«‚âæEŠh‡I‰Ä:Îâ
+•–ʈ¿<±§^kÿò?ýJÃ.µ}àÓÅh6šóÉ[c"Ê°ˆ·µÎ¿ÏË«Qá0™+⣌ױˆŒ¼ØYüW íðDUÆ 0ÍÿŒ1ÉÓ Îš­Õ‹³ÈwiU£0e‰ VF»DÈW ߊ ¶ý½(JôEñ•¶GM
+endstream endobj 1112 0 obj <</Contents 1113 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1113 0 obj <</Filter/FlateDecode/Length 891>>stream
+H‰¬V]s›8ý+÷vñi›t²[§.àö¡íì¨ ;Úbp%’4ÿ~%À 12îîìø|ιç~Hp•ÝþøÞ¼MmØ x“á¿lÀmåþ E‘çɵç {f»à(£²=`f· Ü3mc²ÜrÂ,?B®'Áq–Þ´„8ƒàzÈö p0ò
+0Ï¿WõcI‹3bóÛùÚJhÙ7ú¦ÚÖ|?ªóK²
+Ww¤Êi¡¥ir{ì{\¿ñ¼–²B…j÷D0-ú_‰_VÞsmÙŽS­У¼† ‡oË4µžˆ¡qt °‰ÓÍÙ–åÞ©§öLw‡Q£®3±9”¬ú>
+endstream endobj 1114 0 obj <</Contents 1115 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1115 0 obj <</Filter/FlateDecode/Length 959>>stream
+H‰¤V[“Ú6ý+ߣ©K¾€§O,8:aCÙ>$Žb V±Ùl²ÿ¾’`Áäí´ð€Ç>:ç|Ws—ƒo¾r o߯|ضð6Çù€!ߨûc”$a^¢®C‚ü±@£x”Œ ßnþ·9'ïã
+endstream endobj 1116 0 obj <</Contents 1117 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1521 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1117 0 obj <</Filter/FlateDecode/Length 955>>stream
+H‰ìWÙŽÓ0ýþá>!;Ά„DHÃÔiKã
+ye!‡O`2l0°)Á ˆM
+„º˜Ø°Iá ¬à¯QÀ®.G† üK›•k$¢éåü&yN lPd#òׄ×ùÖ<`Š4b#ªéržÈ‘¥ó—’ì«]‡yز ¾fUISÍ- ·<;ÓN/¤¨ [ôˆN(önC@w§‘8eƒMµV&f˜øȺ[‰aB#jy­$Ò(n™Äñ~Cm+Ö› óDsÐh$«K-̲²™ðYþ¦²|ÍB[9X®W  EYYtÆâv¶î*ÉÙm
+™7è±êMšÓÌØQ»Ä0™ º+7j€mbÆgC×áÁ/}²³R¸I'˜˜¢½âÌUÈð€ÆþÀéa?< ÜŸé£ñ0{É8„ÇŸ@Ð÷㮳H‚Ò\c‰J<‰:Ap?Z-wËÙn¹Zœ¦Ûíl‘
+Õˆg!
+Pq3D¯’°c“óe>»ZÌAåªÀè…Ïý¤Ï‹Ëåbµ6/ 2£oí½‰ø ˆÏDÝÞÞV¢hñÈçÑà¤HvƱ–{T•°Áã°/a}‰0‰“ (Ï“>  OC(ïµë{žãuœ$ƒ
+^αDÕ,ÏQ—þ¼-¼€:°9”þ\Uí£ÓótÁ°mØô‚"O0¢~?âg2 Rî2_Wo;™µ ßÕ*ùdS9­véær6OaÔK —^.¥+düA€¿Ü¶$ˬK½FAxÛX¶-.Õr¾ú4·ÛNÝ2º¢m‰è½¢må®S¸ZM`] ¬3ŒqÓ…˜-–!JAíæ UCÑú݉Ç\…îš.…ª§îÇn¼)º®-žÞ«-¿Mµ‡·öªj'¾)u­c±Mô×Ok|t:}øyvµ/Üs#EK–1?ͧC»Y¡ýàþo…?oÅëÒ¿·‚êUì¿þ¼Tºkw£ô~OÛ_O~¢ôùÿzé+¶ûg¥ÿ ¿ 0
+endstream endobj 1118 0 obj <</Contents 1119 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1119 0 obj <</Filter/FlateDecode/Length 1075>>stream
+H‰¬Vko£Vý+ó©‚U¸{<ÌJ•ê—V®¯‹Iª*©*Šow1x§»Êæ¿ï\ Ûàf³µ?pu=3çÌ™ø@‹oº„·ïç–¼õÙ_ø÷xß#®kš`¸x69¡=*À²‰í¸økÐ@÷ÿ)<XéA(eüDpÇÃr‰0ÑxÚØŸO
+‡±Ÿ@˜„š`sFL`”¶K‡TÂïÃÀ?`‚q¹£âêH-ðÿ=¥Ç)ÒS…»ãw»ÃôçÀ¸Î¸fÉÔSèú¿*¿ÕD\J,^2áêØNDqè
+³FO¥LÁÄ4©Âcm%è–ëhàõ§ý™1¾_§~ßûØy†ãѵ7&?}Øæa²FKÔ‹kØ–OÝÖóç§_6iÊÅ6•Ãd!Ÿït(ÈÓ3ƒ&°€#О‹+:ÓS\#Ÿ-s [À7?ô)±ð²¾«a&q.Óû ”0ŽäZÆy~Y•\®²üűþÊ{)J¬³:©Ì™ûw?ÃS¸ÙE5èí¹™ÃËþ|n°²C¾V¯y½ÈŸ·ù¾(ý/Nñ5 „Tzv·á¡ËI•_«ü^Ÿ«ÀjkxC¦F‘¹–Ð.u*£$ r\1³Tn‚´8–ƒÞ"nÓÁ“Y²MCÙªåqÜÚ ‡a‡2‚«*læM1÷êsî§AœÝËZâ!åL†Ût•¹Â•¡<Ò$ªöM+ãE7I´]KOn’4¯Ââ")ÈdÞ–pC"´¨’--.Ú °s.Ú(×’EA.#dt†²ª_|Ÿ¤ëÂg¯F›Ãa»‰VñÇIí6þ>ñ²$Ü*Ìzp5ŸË,Cë9®.¦]ð†ÝõÕÜ‹ÐÎý l²©xwu 2¿_"ûU¼ÜËÛIØ“K\«eŸž!<œŽ¤q`ÜÙÔ¥‡×ÏLe?¨V^xuk'ëM$óʳ}rŠ‰>õmšÌ»›#Ù66ªîÒ «dl‚¿W‘šŠ JÍŸ÷¯Ó°¹ÌšKëdE•l_²‚_µ¢ê±êªåÉO[©Þ•;Ù;Fb{bÞ5´Í¥3ª„y‡ziW;
+¿ –E“VíÑÞ¦øhÄ“À᪠§Æ$~L>Jéð¿3dæ«G¸‡VÌzè‡$«ÍØ: ‡ÖÇLð¿ã7
+endstream endobj 1120 0 obj <</Contents 1121 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1121 0 obj <</Filter/FlateDecode/Length 989>>stream
+H‰ÌVks›Fý+÷#d̆å%‘™~@{èX²
+«v2I§Ca¥"pd7Óæ¿g—§(ÛÍÔþ fu÷ÜsϹ÷¢µþgxyª°)á%Á¨€¬ùùÙ¶a€bógCCêTÕÁ´5±'@¶ LÞ×7p{©*ÖÄ O‘6™€bÚH7xp’GB¿¾àø
+ÊT”¬‚¥#Ã8¦
+ižVi”­<eNË2ÚPM{"Á¿PgSAÁë\ìK¤ŒÆaQ^®)ãܱmJГ"¦¸§,+¢Ä-òŠ┆ Û-"e¬`~ž¤qT5rŒD7ù%(ƒE¨\FUtU°‡ˆ%u7÷sÝ|ŠhÁ‚þ]u¸ãeݱô>ªh¯ÀaYûè0gá,•€fEË.ö8tLBcÔ˜3SæE’®?ôÃŽ–ÕåÞyáÓuû9/jÛJ$nŒ«Ùø³<Xur©Ï²ÍÃÀ™yeý™¥å»-Í«G„£ZÐü]”Ç4Ôp‹í]F+Êe_§lÛJP·ãž<ŸºóøPïuóÁ¥ Þ»ñæÞ‚8ÁkeܺÞå*ð¸Ë7N*:œW¯~‚êû3rbŽS–é&ômp1ÖŠÜàãâÚ"NŠë®Œ×^Rxñ¤¿ÓäÇ (Î|>lżŒŠ:#ö–¬à6î-Ïâðá~6–ßå{ºÓF#¾Ÿf¯¿ð‰ïqÝnƒ¹†Îµ×í÷yxo£<–påºüÚÕꦹ]÷v>
+ROÂ蜼÷ö²C€4Q”QnÀ qŸ¼îö£ïùàwÑÏÒ’¬ê%£wk¶Á£,è™Å‚aˆíÈwY2ªÞW<8ØFg\-ÎÂc•_EiÆä»í~Žþ/¬ hYìXL¬Ÿý@‡ë÷ßS nAœø¯¼xÈh²˜oòúy ô‡ú,Öô`¯+^ÏÙ»7ƒãlX›Çg ýÖý9N‰ÿrþ,À
+endstream endobj 1122 0 obj <</Contents 1123 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1123 0 obj <</Filter/FlateDecode/Length 803>>stream
+H‰¼V[oÚ0ý+ßc2)®í\H*í† 1•ËÓ©j§ ‹è iX7Mûï³M¸J3¨xˆcüs|Ž/¹b€Õ/ÂE=Â0Ìà‚‘ï°Ñï"ϳ,0<Ѷ(Â.6ÁvSñ*À& ÎUÉ+ÆÄÖÓE´RÃöi‰ÁÐ5TAÀàL a J#“¡."¤¾B WlCŠ
+~Ø` ¿zÝ`·BŠ(Ö„¼?ņçPAÄŽ×@û«6ŠZJìC¾ÏÖÌÇOÍÂVdøI<忦,íÅÙO!¬¶ª#¸šA‹UÃ[£¶ý Ö ¸¼üâú<VäBo£%ôVY£UÏå6ƒ(ªÖñF<[‹ÖCþ<ãÙr"+]&êú¾(üÔ½ÎaÚ]æ·›Å0ÙS‹Öp–rVÚç0~»¶À€ÑÀˆŠ (Òó?1lX^œG^”ñþ,M7“—ªÒd\.Ž¥î×âØ œLzñ ÐÆ×âØ„yó)/´±ÛÚ‹´ŽnXû¦@ <ažÂg×ÛÝGp0ÕAoÚ»IƳ‰˜×S’NÏim‹­`—ë6T¡“¯rc©ãø4rËÓÈý†7œ€)ÏxÉ@Ž=òBEQâS…Õþ8yóÁ°Ô·Ÿü}N´´z%4ˆ‹2ã‹…xÖÕîò•qí Ê! GÃ8IùI-ÍÞÕÁÆ] ‚¼³)'ýÞT|ËÕĵÔ?÷Üf+µi÷cœÄ¼#ŽÅ…‚åu~æ3r‡¯Ä]³E|’ÿ`
+endstream endobj 1124 0 obj <</Contents 1125 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1125 0 obj <</Filter/FlateDecode/Length 752>>stream
+H‰Ä–]oÚ0…ÿÊ{éLŠç¯|UÚ…ej»©j§)‚e£I»˜ößg'@!@Ó•‰‹Ëï9Ç;—Hþ˦ð¾;"0Ã{I¿  T¿‹=O0=Õ —p°ll;žòò{^AË
+Lå ÇÀ]ÌLËÃ\¨Á@¾y/á'p‰
+õœ(_ð?b‹“x‡³ß¼ŽæópÚð->•\°c×
+endstream endobj 1126 0 obj <</Contents 1127 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1127 0 obj <</Filter/FlateDecode/Length 799>>stream
+H‰Ä–]oÚ0†ÿʹL&ŵ'J»HCŠ˜ÊÇ‚ÙTµÓ„ÀEt%éÚnšößg;á#hÅJ+.Æç}¿>qrÆëO:“fÃ$ƒN¾c Àoäxyc`yòšQ„ëØÇEnÍ«Ÿ&¿Õ¤¨@øì:¢µXŽ‡l&'Áy¿¥ B?Áf3p)A F6B눸
+1œñŠÖº–ºÂuàOÛxTÍQŠ¶—ó]åž¼/µMB Qß6|ÉI É׆I\ƒš1°'êÊ1¿ñO
+öó·Æ<丯½UaV³érÇsuvVÅšºCWê„"oORz·ÒYØ`vmn91l£¥‘s˜‹ÒpŠ  ê²-Õ(õ…IÍ{…½]k½+Ãnš5£×S»KÄô¶Ù𨾅ھÔtŒL]L“Lb2Q¶Øt ‘ü[Ï»C5š нAW»^`ÒSÓQWTó(]pb›ÕÁª«%cpmÄØ&*Q‹·ÿ¢Å/%Š,6`:‰‡vù”E±eâ 0þêE·ÿPÜgk
+/ÂvØá~tiõ¢n6Q§§á[_ÂÊW¢¶:Õç­N³ m‡ý¾ß å/â9F¸aVð¯p¤ÄÊ/WºE9LÇÖ‰%ÅË+BX ¬äÞ䲨ӷÃùð<IŸ†éø¸Ñõ7Ü‚d6ÆãC"Ü”zÇ orM$ñ\üš7Æó
+Ã"|FæSLý3ËÏ2©<ñ‘ŒJ^‘øù ²ê»tÛ‹
+U{o ø£qòt'Æ;âÛ×Þº¿Ÿ¥y›>Ou䑸KÞâå ÚpkÅòé0;ìE!?%6èß÷€n'ãéÍïÅyô3ºl·vD¾àl­¨=ê ß—ÿ 0
+endstream endobj 1128 0 obj <</Contents 1129 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1129 0 obj <</Filter/FlateDecode/Length 877>>stream
+H‰ÄWkoÚ0ý+÷c2)®_IH¥} "¦B1›ªvš", 4ÐmÒ´ÿ>; Ï$0 ¬B"!Øçœ{ε WpòŠGpÑð0Œfp!ÈW ÄP>¯ Çá GÞsŠp30-dÙŽ â 4ÐÅc2ƒd3Æ„è« jÛ`˜b\€æ
+¯™Lp<ãs°(AFŒÊwŠl
+q
+’9©Àû”Tx@¨N¨f'êÊàSú
+Ȳ¬ò@%t9ÂYÐ`þ ç˜8fhIdÇ¢0̬W4j™9Õì•‰í ²£¶jÏJy{®-Ÿ{5t[ëtTƒRqÕ‘rùüP×@æ§Åº©ÍÔM8‰@'L“ŽòEßbèʯ“qãÀWOg$íMW©g2骙0µ†`Æ+`TT¡,†8ßZßãIߟKîn0öçÁ îÏ}èVÛÕŽáÞ¸-·-ªÝ;£Ó½­¹õ^×…ËË÷ð;iu‚l‡ÒÔƒ ÂduY04ÛMѬŠf»!ë‘c´–ëyÕ†+?ÇÔà&ÏØ ž_‚Ù’¢Ä;…âõj59ïºw“¡ÜöDí¶µe6DÒ¡&UEœLU¯]ŠX
+endstream endobj 1130 0 obj <</Contents 1131 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1131 0 obj <</Filter/FlateDecode/Length 845>>stream
+H‰ÄW[sš@ý+ß#t†Í^
+k;™¤Ó±J ©b"¤}èô¿wQ¼R¢¹Œ®+ß9gÏÙý\ëpöšá¬`'pÆÉw ø­˜·më:h¶ëa 30LdÖìð)( òû¬‚äc€YˆÖj 6bºxxŠÇƒfVàqx¦#¬ƒI Ò`Ä(j!bÂ<„¯CoHÀ®&GØþ{W•ÏHDf/ô]/8y °UBt"ß|YL •(BÜ(*1ªjDÁržÈ‘¡~㟤ØÏ+¹5ÝF†™ëe¤J™ûµeå†mfÞi¹kè-Ð Ev‰ú0ÄYÒ`ýFÝaÒ1C+"ã8‰aäF+Ô4wHäF±–$5û²]Ûz×
+k¨5¥×“éRéYl ~É÷PÆ7W %‘ƒhƒJ˜"Õ—¡cðÅ×Ùs“p g“²½A‹Ôs™t!3SGM)” šMéR'fºš%—ŒÁdH×·¥BÐw]/.û-¡DÔ*Ý>w»mO|"¶¡@»Þ‚0I„Ô =øaò0‹…¢L  ÂD«çw]ï¢ï{9”Û½Xá@4Ò¶°üƒ,uý&oºN«É¯òb
+–‡ bÙ‘ˆÆñ¬HãåšS÷Cñ.6Ï[ØšsÜç
+ÕÇt·Uõ±½­HµLÆž«µµµ
+·ÂâÜY|ͧïµ!–ôk7å£ýÝÀzÕ¦(þ¢ü`
+endstream endobj 1132 0 obj <</Contents 1133 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1133 0 obj <</Filter/FlateDecode/Length 1118>>stream
+H‰¼Wms›Fþùû2†pH"3ý€ÖÐZ/…“;™¨Ó¡èä‘@”ŽÛéïœÞ rÇcûƒá¸}öÙg÷öÖ× Œú·¸‡w£È€ûÞ1ò‡Ø
+׺ãXh>[¦n
+vOïõ>° ( ²Ïµ‘ºa
+,:ÐÍ~4ÛÑ©…›— ø,
+jŸÁ –nXÐ3‰n1tj1:éAÁá7ÈàšQAàWOÆ
+šÝÜjsÛéÕÚiRŠtÛ<¢Swž¡/»8{7†µP[ž,ƒêGöó¼ [
+­˜½~ˉ(”ÁÞIßyÜž”ÞG…ŽÔ¾2›‰ìš¶nÕi£ðUüå"}…j+¥xHó TBTÔÚ'Ý€?×ûÖ<«%‡º6ÌcÖ%M³¡Y³3{{A j @ˆ@ èQݲ¸3gŸâ,á˯ó$®—°þàßúcÂÜðƒ6 §ž?œ‡>¼ÿüSŸ¢÷Ól¤ÐˆN(fbˆQC0 Xà²`2 p2ö£ÈùøF[‘à-¯A¶Ê‹Mýò/;^VPÊÞ
+Ðhîys3¿• Ó9ó¦ãï-·y†"Ö¨ gâHÎÇ
+endstream endobj 1134 0 obj <</Contents 1135 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1135 0 obj <</Filter/FlateDecode/Length 986>>stream
+H‰¬V]³›6ý+z„NE¶yôWÛãîmg’NG5¦Å’#à&þ÷•0¶‰-r3ŽÒÙ³gW»‹'1²›ŸÈЛEd£¬Dobò—Šwrdç!ȵçXöÈv‘?°Ã`ˆâ2ÿÝXÖ²mâ¢8AîÈr†C„ýÀr= N‘1£°1˜Çè r=ËöÐÀ!–‡ˆm¹"ÎÈ"$
+)k–ÓŒñR¾–Zž=/ÍY"NÇJ&t\d\ïZÚ²
+2‰9m¯ 鵺I¥ey âŸí¸8Peàhé5@WË-p˜j)š¼Ì˪Ïp‡Ï Ê}~ÄQE«ºÔñÌ–xoðfö„#øRK`]+;«¯_^yiEŸyQ` G.ªœemiÈXµÜPTt;Vñ]˜ 
+âi®½ýOOIK`YµŸrØíòDÕ‰ŽùvçtëhoÀ÷ ­ò9~Š·ãµ _¼ä àw”¥üEŸ€ù·
+X
+év=ÅáLÇöV´Y\Òˆ)g’)Sïo šé(så|M±W²Ùô·t†]k¬Óˆ‹‚¦…ìÕï]ù›ã~ÁªPây¨3 YRÔ)<CÁ“žÑIþü[²§,½ ð¾ý5œ[•Ì²m·<â~‚1”•;¯ª¼
+endstream endobj 1136 0 obj <</Contents 1137 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1522 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1137 0 obj <</Filter/FlateDecode/Length 965>>stream
+H‰¬V[s£6ý+z„NÅ"n6»Y:k› ’>d;-È;6bÎ6ÿ¾’ÀŽ/"ét:~F:ßùŽ¾žåÀV?¾Ÿî° ¶-ø”£¿l€@¾çS+ =ÀPì=Dz§¶ üÀ
+&áä{`
+EÖ$tœ£NÛõ¦
+~N:¢µ?»Ç -ªMUäìn‘E«ä°d¥æíoF">)¯¿ò}âæìEh+ß|«†”¹¿|Ì‘w¼ÚŽ”Yë ¿ˆŠa›¤ÜQ)úa1b«h)hYqZtQ×Ñ}Óý¶#[-Å
+endstream endobj 1138 0 obj <</Contents 1139 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1139 0 obj <</Filter/FlateDecode/Length 1064>>stream
+H‰¬–[sâ6Ç¿ŠM§òZ¾`ühÀɺÃŵÚ™ÝNG1ÂqÇV–w—éô»WàD$›N‡„|ÎïüÏES ,õaøp›Y èÀŒþ´
+ÔäÙ3u’ie*uöX
+E¦ØöY§å¸
+FEžtI¾—u_OKžŠ_Z©×J~eÓƽÖioq“ùÌè—^ÖhÕ×÷úÙÆ«7Ln—í–nDWD‹:-­£,©HC¥¡Ž±¡U›—üu¼¬Ÿ%}†ˆ
+»Nk¥Î_BYÙŠ‹6WS7»V*ëﻜ•¢Œb¤weEãù®eéM¢‹˜®²0IeY^™ü3YH{4X”×—s ʼnޕ…(ŸdêH‰H…‰FÀYEDÎÚÒ @Ò‚ÖâE§¤£[(#„UÕ~£[ûcY<P&ÆZ„§~ /ï÷ÝME
+?j¶p½ƒ³ìfªÃ­{.ßá4\i+˜¥›Ù ~\Ÿ³¸’òÉNvÕ/¬.«—,–+ø¼¼Ã{ oZ½AY|\]9¹™xk'˜RH;N{P¥ZprRW°ºl.ÁòÙÅô„}“®—bDVa㨻ļB¸¼Õž ÈWѾ8‚Ãíð÷?ºTÅŒó6o«è;§LíŠý#øhI–µ~~iòliý>þÙRúc=“4Þ„X¼£L.Fk¼ž­0úG«,^ëÇõ©í…LÂ8=ÿOÿW€
+endstream endobj 1140 0 obj <</Contents 1141 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1141 0 obj <</Filter/FlateDecode/Length 1031>>stream
+H‰¬V]s£6ý+zÄ‹ø°Í£¿’¡µ½®!igv;-\cº e…œÿ}%L,Úétò`ŒÎ=çèÜ+9ó9ÍŸÈÑÇÛØAy>&äO”Ôû©†¾p¨ž}×v¦Ž‡‚±=ž„”TÈB£ä¯¦‚´¶ã%)ò¦¶;™ „¶ç+p†¬UGMÁ*Aß‘çÛŽÆ.±}DÛsq§6#è7ÄÐ<ycE7¼X?9S”üèÛs5F3záÅßç‹f+îq­
+F$?k³¿¾Øø¡Œ[¿žÁª¶yÝ[S„ã&;ÜFÑaÜWvâÚá@ŠÚ,£yžeÿ˨§ä;žý"ü7Í´A[î„ôDô LŸE&áÿÐÛÎè}¶¼ÛÑÄÚítwÝÀö›¶yèQ‚nŸV­
+ÎЈx–JÔnºƒöj¹Á•@õÛP3îk×[›îÅfãÎ?âxþá©Þ¨ƒÆžíûïÎÆÍþÓígÛÙ/8“´` êfþÛ ÁÄ&ž
+xÙž£Ž
+E†giz4=ßœÊCQVÀdÄ2%'¹¸æXWì¶×Üê4ÊE!ϦâRb•ÞQA+ ®Æ¦u=
+endstream endobj 1142 0 obj <</Contents 1143 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1143 0 obj <</Filter/FlateDecode/Length 970>>stream
+H‰¬V[sÚ8ý+z´;+×òãG.iÆm ^änÚ­-¨wÀ¢’HÊ¿¯$Cp
+œDH†àöç"Gù
+t¥2á}ÝÓØ.¬“L;Þ7åwΚZ˜ ‹¥3™ÛÝhQB(žé®kûx½;€¬R—Ym‘^Aƒ\Ð-UHušï6¿¾ø]qœáéÜB7a˜O?[Bõ·X®)é¥F—†>1†ÓWZŸn7sÎÔ^~7­¯ê²¯Ì­øãKºµí­ÇårÍH£1Ì 'ªV¦í&>Î&0›Ú—W›Í!­Ûc“•JCO€•´…LÈNØ.C>Í¡žÏÛµ»‚„ô§¤è±H²Q³¥›úùΞ}΄*½l\È¿Y Ç8Uˆœ×ŒÛÇ\½CŸêªÝC2ÝgýÒS‰÷¼:¨žÅÝA} õšV’ßÅoã>z›–æVÿÏG¹ZikVª~¾Þ gî¯b¯ÚÒuûÀø3ᕾ_g9œ¹¹C¼˜c8‘?ÕÚ|³Ê)gõÛê—
+endstream endobj 1144 0 obj <</Contents 1145 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1145 0 obj <</Filter/FlateDecode/Length 796>>stream
+H‰¬VÛr›0ý•}„NQtáú;NÆ6Mlš>$c䔃ƒ¡Iþ¾’€Ä7Ítü€,Ÿ=çì®´xVŸâN.æî7p’Ÿ„K±ï£ °m°±¶)Â>fà¸ÈõÂ`†*‚4c \
+û>Ú£#YPû»­5ùà6 5°‰|2¸©7I áî “¸5-b`¹OäÊ1„Ÿ¤ÙëW»ž Çmü²«Òæqo*Ü \U;«)Å»CßØ EAO1u·Œäie°}g(Ù˜¡W!ç}*’Ãi
+mPˆÈƒâ·"^ðz»uôn vazÆÕ•ì.u­ÚÆà|rÙ¾ÂtŒ\$y&a†¨¨Ý6ÃLü¬p)ä:ô­ëMZÛTî¨+䔶>1³}°|™2—!ÛÞ¿%IlÍNGÖYTFçyñq’ÝN6¥5Ÿ]έqù<ãÕÝÀ`D˜¨ûÙnàMžV+>ãë¼(§%_ÕððC7J
+l“’ —TX¨øf‹{•&J£u%)5Ô5h“ªÝ$û5ãi¾˜fË|Æ7Zf)ßtT©Ì÷KޣЂ59LÏz˜¾äq²|Ñ0Ô §«¨ˆV¼äE_–ׯ´©AO¢¬<Úðã]Ü#l°û²ÇëÆM+ñuœ¯ÖzÚaFuI·°lêH4™/¢RL¥ƒ*lßæ˜ÆÇœ—ÕZUJEö”Cðéâ·Ž\e8”|<”|÷rK 'f NßäèÒé»R;:Q¶à±
+”Ç"×ñÓÿ«òàTµÁÇ”¿j.%Ú«µ‡r²´næí`5¼a>â;#æEÛæ\øãNvÉ—/§qÊE:üÛ¤›#´Â—5ï"âqRðEyZŠ×åyÝw5H1sZ籆T@§YœÔƒjoˆñGÕ†ßDiÅ;EÛ9×›C ²æyU,øìr¼÷=JÙ 'Ï%ÏbÑ”­(ñï¯
+endstream endobj 1146 0 obj <</Contents 1147 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1147 0 obj <</Filter/FlateDecode/Length 1054>>stream
+H‰¬V]wÚ8ý+z4{V®åÀ棄] ^,Ò‡¶gb ǻƢ²†¿#ƒƒ"²ééáÇÌܹºwf”EVó‘)ú0‹,”–è%[ˆ º…÷CÓ÷]až]Û´†–ƒ¼¾ÙøDwÈ@=úO“AN¦eÑ9CÓ ö|Óq!8AÆ”Fó&aJÑw並墾MLËtlDì¡IúHrôhDŸQà«'kˆèKz¶ŠQˆŽä÷åX“F€Ý#¶á!—¨oÝ_˜=b
+pÇ‹çÅVÈ]C[)jóQa*Ž4Ï’åžI^TcQT,+¸ÔUk
+endstream endobj 1148 0 obj <</Contents 1149 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1149 0 obj <</Filter/FlateDecode/Length 1114>>stream
+H‰ÌWms›Fþ+û2>Âñ&p§$„:X8'ãq:jaE R@m<ÿ÷î a eìÔum¸›c÷Ùg_ï4a Šÿroϼeô7(°[<·Ç1 î MQmUÓR¬‘3¶ dö‡Ð ­†¢ªTvº­h£ÓQt…ç y,ñ…‚ÇàOÐ E5ÀÒ¨b
+µ Ìà#ä0a¨ °À%|§ÚÀþ>¤§qŽ¨; ¿ëÆ&K[¦šd‚AùªÃ‡æ@‘©„<à“$SKÒdB%•ŸS¾3å_Ù/œìû-Ý‘á(¦ÕòÕPå4‡¹ uÓ±DìHŠº©íЩ¦8ß B7Ãq:3ªñI>°d¨º²5dþ˜Ža¶–´‘y`„ŠÝ±ÌH¯Ø®%ý\v¤h(+=C}†"âˆ[³/ ÍT Q:üÅ׌WH)›RÅ7Ë"™ê&ÍèêJ…? ¹U–òÓ*Q~ÚÎ…– Ö¼4‹S¤ÊÈÑ´Ž¡ª6›;«‚¥+†±ßˆË9ñò9 o‰›œMNDŸ©@0:†wÚH„›šK\²x<kDØ›æKœÄ\—¼ ‰ŸÏ—7iõA¨³iEýü¶(ׂ=kãüæsQFÁÅŒøÓ#`iž.²u–×d’VL*Á²ª
+!Âgn±^co!Ý:]æY ¼,ªG«? ˧„æZŠÇâ{d˘ØÎÒþú­ÍF‡,tÃ
+endstream endobj 1150 0 obj <</Contents 1151 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1151 0 obj <</Filter/FlateDecode/Length 1178>>stream
+H‰¼WmsÚFþýûQÊø^QfúÁ5£5ÎI3v§£‚l«#ƒDSËÏ®^‰ÈØ þ qwûìs»Ïîâ jö·ºƒ·ï§*Ü%ðVð?Uà nq½§8Ža
+kŠs$Ýî†pJ7ªq#x2T]Ù:2OóBfhI³­'$”^éÄv^!·;Ò»–ô÷²-Ç”]ÍTŒ,m:üCÏ€Ò·’M)¡—0^‚Ìu #j”IWa‚ÛÙ¹(ði5 Ó†Ve½ ©ÕòªêFX®¨‚¥+†ÑTÙe4+7b\á:Ær
+ÅgÅe¯ìr²TTS÷ÃU–¯¼ºš“„âyXÅi<‹#ÏM°—dê…ñvõãeê‡Ë`@H¹Ð]¢õ¦Ø-e¡bµzîs¹R–ŽwºD¹5®oU,©²B…³ÉÏl ªuM3ȱiÙÒh,PêçëÞÆÕÛ¢çNwâñþ39¿`?õ?ÆÑzL‚‡x•Ã$í܃Äç± ­(Uõ붞çÌ2š€Ì #Ò©1‘³"sr¼5~¥xÔzÍ÷9·ÀœD·-ÂýU˜†3?Â^8}¤‘àפFµå¨ã´iGÕU©­å"Û-Ô“´z-SÅÞð¬?I¼d¼Û82Ã'xjõÒ`‘µŽM™gÕÈ×.-‚}yi•(E “N¿œü4^=ž”ô½àd¿4i jaÔÊ»ÃTÙVþŠD0ÀrËnJŸLƒ³Æ›Gìj™¬g³ In×Qô(Vþ2Y„iÌ+*%Zµ’÷»|µlë[!5ÍÊiq&à¹ÜûQ~ôÕLà¯
+endstream endobj 1152 0 obj <</Contents 1153 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1153 0 obj <</Filter/FlateDecode/Length 1423>>stream
+H‰ìWmoÛ6þû÷Q.JUï¶
+ìƒã†Ìvmf[‘ƒj³©7[r%¹]Ñö¿ïŽ¤^bË®ÓØ>Ì"Šâ=÷ðÞx¼à`É¿üž]Í-¸+à·ÿ°Àþçfz°ÇžcZË?0ƒ~ؾzüO)ak Ó²løÜéôûÀüÐt=\¼#âóX
+DÞë™–c›Ø–é:`;Ó ð+¤pÁïQA`‰Ëhd €8¤çÐBtCÅïVéäsÄîÙŽáƒgÓÓ…_Ô„Ù³ 䯌žNÙ†Eó6üÞïü'"û¢¦Û÷BÓ4_÷U¢ÙÍMŠûa mÇ´)Zè¾Ó ÛŽž0BWC8•Ë{Õ;ÐäY®Y+ò¿M aøÚÐúú@ Ê RÒÁ·­Ð»5Ü«^ߘNÉ»ŽozÒm.¼§§ ÷å=ß(h°ÊRèÙ®õ*§[0ÃÏrÝZ$4[±á4^×4ES²s"j›ýÐq*ž–ë € hË®éyûTòá‹/‘†úøŠ¿™œy
+RÌ6m­})—/¯ÙŸ²éå ›‹w;‘.Äx·y-rèùa߸<þ íZÏdÊãÉxx­•ð'{wûæ›°Õì°ÚÀ*bÑߥH 4~¡€qÏÓ<+³E¶®?²´LVi þ©z’uf]Sˆe\Š ‹wø:Ê6[£â‹^IO/ðVàôõÿNnʸ˜¦)‹¥Ü×Ð&(5¿Ø¡é–÷ï }•(:z<D{Î&|2š\³è7çÈž?ÿ>Iðv<=×{+»Ùëåñ®"OŒ×¢-¯}ñJgq­ñ€ø94ƒ'ßõ;4 B6sšYt= )|`:‹¦Ã™G×ÑÏјg/qz2Š.ofÑÙ˜Bý¿j/±ÎII%v†Õb•‹¥\‡µæ¾Hó¸æ8+Gk’5G
+áyôâ&¢“IˆÅl««%³®u%‹#ÖÔ0€¦~¨l׬ª0áùÙ÷ö³5â±D5v»_. ¨>¨¤ŸT¹í Ðà|Qk¾ÔxÐs*¢Ì:êç~7éýÝå³ËNû•'Žæ_-–hµÊøòœ¥ÁjÉ|þq+šów4‹y<^Çü¥^œ‹?Å¢Ô+øËi¤çT
+çK:6;Yž´è<Ûå 3¢XK)Z÷9ž YÇöUãÒxI¡öy/˜þ^yyŒ>Oò;Q£,j©G¥ß&M6_êÜWj£ X'E±Iò¿âôM–od :MÖ2ÍD=Ûª¶Âˆ¤ÜÊ1(µ¥Éí»F½£E–.W´0Y·#ÄòšJEbXÖùÛUqÅÛd½†×˦(DZÂê ”o…’¦vÚUí´¶)n³ºCê>Û ”…*g$õ³’]Å]htPQó9ð ´ù–'i±MrâÓTJ$œfH0]¬wK<Ø«˜Ž+;ðBòÛÀ5-¼ÄXÚ9”.và7éB¡§×]¼ð|/ºçx±Ê§Ó^têEuøßyg9Oc<SœX‹OëþRYž »Ûâ[uñ{HÝ9Oµ\ºW„:éük~ŸGì@¨ñÔ­¡}Gzåz ÆLpz¡–’¹mA]÷ôCɸ/y¸ß{vy}ï˜Ûó÷d½Ä°C£Å´ ÎËÑS*5eî#«ÚkÙ¶rÆ¡ú<°üÓýˆ¢Îú.±sªC<çö·ßÙ×Ò€Û}±Ê Dš¼^ ¸ŠŠÝv›å%dï1zñ
+º(€±‡÷v¬)­­Öìë­I³õñ
+endstream endobj 1154 0 obj <</Contents 1155 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1155 0 obj <</Filter/FlateDecode/Length 1361>>stream
+H‰´Wms›Fþþû2s¼“™~%êÐq-E´»ÓÁÒÙQFp\âÿÞ½ã,Ù®2Ž;îÙçžÝÛ]ŸD ñÙ Ÿ†Üäp‘¿5 ]㼫zži‚âáØÔUÍÕ °lÕv<¢[@Ž¾óDìP5ÍÀpUÝq@±<Õ0ñã9H~|ƒÁ?`˜ªf‚­Õ¢©†DwUbCFáHà$Ú ‚ÀWa#Í…èa›žÎ¾aˆ†Wò»(mF!bËD—,0 {ð¥œPe"!¸”dbKº¬Icó„,ù¯è7FöÓš®czªe ¾FUF³›ßny6×NR4Ð-½F'ºêí¡ûÍ0œÊŒf^Ê[–LÍP׆¬—Ya–ZÒwË ·2âxoàÛFè]HÆ©ìH“ ó®n©&w›?Ø“2÷e²%ål°H‰!¡¢fåt ¦¸Ì¿[Ò˜Íæxlèµ×M½¤ÉÙév%ˆf˜.(.;¨¶¡šfën(
+øÿ4É™ýë4ƒ)EShƆ"šÄWK
+ARÐL™"˜„ð1NæéšÁ-(Màs4œ_ÎécŸ^"3±5PˆJ tÑå
+‚,æJ˜Þg3z†J”FqvC >Îâ$¿‹3šÃ4)âE‚æd¼¥Ž4œQ0œÑWXÜ$)úª\ðÿŒüó0ŸÃA˜Ž¦K“©b‡þùЮkô¤ô®@Iâåülœƒxìýª¹ü-œ~!½£YÌ@*)ˆŠG×ËÀÙe…žgª &å€)Ã0”c%Hæ‹Y‰S.ÿ5…(ç3úÎ
+|!žÕ£\ì†3=]bëûÃj=Þ1ƒj5¤Òêãmº…+ÏÚ/œÇÂm–ÞÞÞ'Œe¯Å7
+Ãóòžb¸@zÍߊøòˆùft¹ìS·¤Ó£.â)Á\hÕï@M× Ü+2‹B¦)ñÖô
+­·B³ÚÒ鱩KÀi0Q&Óq4ŽÏ”À¹gV{4LeCƒMÙåôµ5¢$•×»'Ýì•F¢¯_ÌïgšZçþZ%=Ý–*ßüÜ–¿' ž˜´0¥ÞV}‹¨ÚÛÜ«–°Í} A4R½D׹ͶTõʜ(Uu@³•žóOM'Jí}QÎyÁ>äz[Zο†åcÃ18±‰¹>6x%gÑÕv³ÅEükš=ÄÙ|‘ÜŠe7SÒ¾L;  Œís,[AÚ¢;̯å¢x-b¤ãkþ"º=P-ºÏ‰û¾û’ý?ÙäBÚ ÝTO–_Øæf
+çûV°ê
+zËÓøÓú2”÷v`¾&ÿõâ¾Á­0BÆNï³ iöÈV4Cë €ª>¿q§ÓÏ{gio]ªŒ¨ù×QGAį¾Ò¬Òe=…ÝuºtYU§ûH3Üf«
+endstream endobj 1156 0 obj <</Contents 1157 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1523 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1157 0 obj <</Filter/FlateDecode/Length 1303>>stream
+H‰¼WÛrÛ6ý‚þÃ>’“&xgfú ˌˎÆVD$mÆît v•‘I—¤ãx\ÿ{à]„9õTz .gÏ.V' ñÍoàø,6ঀcJþ4€
+R¯Ð ƒX@—`ùºéy 9nÙh¼%¤q$„þËÖ \“è6C·L ¦¯r¿A
+'t
+±íIïR±ÎTO™ÏytMG·EØ,øÊŸŒ‡/W¥àƒu–‚J,µ› °À×ÂnÃ>[0Ú0»¨×0Í
+¦@gº(ѽÀ4œ†eû ùüȸ–nÛÛY¢ëº¾Q-шN,dö”çf~ ôMO½*[pÛKe19ÑN“2y—åI¾Z§7³uQ
+endstream endobj 1158 0 obj <</Contents 1159 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1159 0 obj <</Filter/FlateDecode/Length 1367>>stream
+H‰ÔWën£F~‚}‡ó¯:,ÃÍ°R86]Q¹¶HÛ(©*j/+²€·µ’¼{Ï wÎeSikK0 3ßùÎeÎ9œy ñ²…w\ ¶)¼óèŸPð®qÞMSU˜8VeQ2$4]ÔÇæ¼`ä}æ;h±C”$ª€·ÅåñˆfŠŠŠ‹7 Xžkó –_@QEI]¦¢
+T¨lˆT‡$€ß ‚3¯E9.a#É
+S4Ð5¹F§²hž0B‹a8¥I½u$©’"V‚´—IaZahA6¤Ž(F!DSNºö”C›ñ¦|X­˜;eM숣’)u, Hãñcr­D‰RyX.ÇSÊ@RYH(‚¯ð5à÷dDÆBʇ!^©ãU"~…Nç»d~ù5¿I9Ãr°ŸÏÇ~š?°à­"±ÐFnhƒª¢:T›r¥Ž¤¨ƒÙE]UµmÉKî nìY17dêïÓ
+%1dŠæ¸?.•G>þŸu" 2‹o0Ðìhƒmb=Á²Ið9Xg­.¤ ó¨eä‰,«/4­ï“u@¼Øó“m ”ßnÌ_r{ö:£Tïع(g1­¤ñqoan«Úõ–¦'¼5Ôr8“3âÙþv¦᧠Ø‹<6
+Ÿ•qú¡^ÙÊ{7ÜbèÙ›Br¥Ü†l!¢ïˆ­
+3n0rÃë£öèh^½a±Úý6h×â×í/…¡ÀÊ'åÕ¶·Y®f»
+ÓÆ®ºÂ$¼`?T§ïY]Æ âSêܣ绅úmç» 5yunÂ7*5z> _»c`ß,OvlG&L˜Ïg™GÁ¬·Ï‰°ð»‡hý)‰£0õóƒYV¬Å©—ö©ëFÆa…´7~»¥ .NëEAÉòà_
+endstream endobj 1160 0 obj <</Contents 1161 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1161 0 obj <</Filter/FlateDecode/Length 1657>>stream
+H‰ÌWÛnÛFýÿà OT‘ex— ’L¸*lY©´E\4¹–˜R¤BRv 7ÿÞ™%)QÖ%²cPÜËÙ™3gg†=ñ—MáÝ™«À4‡wžú—*x78Þ‘mÛ0€ÙøÛÐd¥£è`Z²Õ¶ÛàÍA‚–÷YìP«²¢¨:xèYk·™¶¬¸8ÉñÜØàxðtCV °4U6@Ud]UëȪ‡ß ž·a
+ \F¿”xwÛæi´†u»´ïSy¦ç"vKÕ$ •ž:|,ä–*¡p%µTKÒZL•Wé—ÙúÓû•Œý°2·mزiUöê{L%3wÛ&¶›¶%¸c tS[£«šl ¡÷C8õ1ŠqÕÚ:ÉPtyuù¼S숖´Žºu ¥SÒ¶_ ¶ é}’ô³V[(ºš)"l:ÜÒ“Sø²–)åô#Jh©º„ŒuÐã´XsŸFsBÚ:ê•™Zi¦°N³ÈPUnÛšVÛ©èFX‡\VÀÒeÃxl*„~áLãåœù"ÍŠ(™’0
+üBgÚm àôð"¤Pà §ª¶)]Ž¼Áå°{ÂX¥´„©2N‚wJ'¢g´ž1ðfQò™ÇpÍa‘ñœ'D7PÌx A~꥟Ra:÷£¢òø4«¯yE…DxˆšóŠÞŒÜjÇ`ì­¸ãMŠÈ0£6lq:bÞý‚’›4›oø0Ú?¹×e¤ýÿì²Ëœg£ØO6¼Â“ã%Ò£X™Ÿä¤ˆsÿžgÝ0DoòZ5àíš}[ÓD@zÍP´\-îæyD5ä)„ìœßÀR+§ÐöÛ(àì? Ó[ž‘CîÖX´¦[kkæ|-x’ãkw`”¥E¤ñj®Ÿ&x¥êç¸Ûc./–‹AÁçlÌã4ó/:pòoÕ*|vLÕa©t},­-5¬ÚvL–åÊØU K‹ ©m¡áFvØØtÐFw‡Ý/½Ëþå9s~÷œ¡‹¶Áû÷?ÃÖHÛ+Z
+ãušülÈxˆI¾¸K³¿sü&€ M4GçtÛØÕÉ1yßvY7°g_4ùþ y/žÞÖ_ªÐm±àAtø 5óo£t™Áõ½ø‚ûDKƯNâÒˆ»¨˜÷³ø&Žhbü€}–v&ŽÛ0lN÷Hæ`5Xm^·¤¯£‹ˆB]Üò’’Ç…BFçCŒ>ñSIˆuu’óô:y ÉY”Ùbº:Ómý¥pðùaE!O
+²g·(_V[VC[½ —”‚*ù›ˆÁÞ"[¥³ã8é ä¼ؼO¥â
+_IÕ…ŸMycñÞwÏHÛ¨fNŸJ(÷*#䘾}ß±ÚsÍŠ º:4ŠÄS«Ä# º!yko‹7!b’-*x·8‹Š(/.ÅE÷EžF¢ÈÙýu†¤‰G^wré‚ϯ±›E æ~±Ì÷]ùcô½ïeo÷?þ`
+endstream endobj 1162 0 obj <</Contents 1163 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1163 0 obj <</Filter/FlateDecode/Length 1342>>stream
+H‰¬VÛr›Hý‚üC?BÊCn©ÚY&)R–¬ˆIv³ÖÖ–JË$2(€ã¤ÿ{z†‹Xq,?€‡™Ó§O_¦Oèò/Y«·Ë^1ú¿Ø5®÷5×µ, .¾[†¦÷ulGsznØ-( ²Ïò-NhºNM` 0ûšÑë±]Í´pó( |yÀcðLKÓ-p ªY@uÍ4€}:pø"8e;TXâñ¦÷ÝÒ3Ähº9¿ËÜ& [¥†bƒEÅÓ„ù‚¦RyÀLQ©£*¡Š.Ö©x³ÕÿØ;Aö}E·g¹ší|ͪ‚f37yÜv©)¤¨¡ÛÆšÛ!B·›8¥Ýš©–,ÝÔ*CöÓ¬ »Z1úÆ‘(ýÒHÏ}†ØÖRïR1ߪ=e2Ñ5lÍ’a3á›xr¾Dµ•T¼„q*5TÔ*ƒ®Ã?Ë}+>«)™Æ6êM#§)ÙŽ Jµžk%OÝ´ú@úÂeS³¬}ª°AxDñÏŠ—ðŠŒ?8ãÿÔµ¿áÔgþppî³Oå¾e£hù&ïæÿb\|,ÄO¥u±5™z7zÅ®x¡óÕÃO®é9oB5jbxÏ0 xß3¥B©ë8)GQ„ ²Ò»õ:N2H‚éÇáÂâc| Ïîãä ¤7ó$Œ–³03P!‘ [‰ØË6Ñâ&N&ç£1˶ÛSž ‚8^ñ( ³[5ä¤DhA]©hš&8”é¡\_ì˵ìØ94NGÁy}AüÕ½ óðúõ_xï?Hb›=Íêø(Þç8Œø•
+÷õC…Ŭí*•Î{ê6²ö¢Eòc½oå7²¢ 昬häܪ4"ã(µByÎÂ9rIñßtkigFy„w3T äÚ (G¡rPè膗J{嵸^>ES”£]í¾’E€sXêgü¶JŠ1¬LÿßjÜ] ÝmÛcðK€
+endstream endobj 1164 0 obj <</Contents 1165 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1165 0 obj <</Filter/FlateDecode/Length 1263>>stream
+H‰¼Wks›Fýù÷#d
+ay“™~ê¡£‘dA™¸Ó¡°V•Êà
+Ù’Jö°Ê3‰!¡¢fãt ¸Ì÷­iÌfK
+<6ôÎ낦^Óäìt»D3L—]TÛPMsŸ ºãéÒ‚w°J•ÅèB iµ¹ *z«,è:OôÓ(ù‡m$žÕ/‚(&AôûH“
+W,Ï‘¢÷sNÁ°M8ŽÁÁˆmIó…úÓ±·q–ÆU^<.™†!=ý
+´âÀM^
+endstream endobj 1166 0 obj <</Contents 1167 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1167 0 obj <</Filter/FlateDecode/Length 1089>>stream
+H‰ÄWms›Fþýû2åÂÁñ–™~1õÐQ%Eº¤õÄ•ˆ«ƒ8nÆÉÏÞñ* ©¶«ªòàØ{öÙg÷–õ]þå×ðòb¡Ãu/9ý]
+ü=®»ÄóÍÃ{fÝÕM°lb;žüPù_r­w]§&ð%˜.14Ë#&Cã(_„rCÀá#˜Œè lƒT'¦Ôp µ!áHáŒoPA`‰«‰;Ý~¿KÏ6Ñô*~ï*Ÿ|Ø*5 WÞV D¥
+ò€+E¥¶b¨Ut±NÅ¥þÆd_·tæË®ùš{¨
+šÃÜäv˳¥vZ-EÝ2:tjßÀiÜèìJÝñÄt“´Ž¬çyV-´b¸llj(·qâxGÈm¯ôÞ)æ…ê(³™È®a&ÓfÂ'qEúrÕR
+q³ÎRP©© ¢¬Iºs|-í’8«E ²6Œ.ë5M£¢)Ù¶ J‰ãFÃS7™ š+BÖÁ6 cÛTá6ÏÊl™%ÁßeœH¨@FÔ³˜m¿ñ³´ŒÖiœ×xEoÊÃ<N²eT¢ÉÑ:¹ËãìkmƒWËsÀGF=<¶á(Ó§“Ñø{‘é QBMLì9ž_Bˆ<’º†¿
+|ÄÜj’kmÜ\û¼ÆÒP2ÞÕ1SbQÛRÚH²[!{”ˆ<åkäay·Ò½‘Âãä½Wß[é~åÁd…Ø+‚ GšínxŸå€àq„é³ Ì N£?’´ăÐ0΢>¢á$€›—Féu|õdŸÐ(¼„ìÜìKá$¾?[,4žiÓd%îú Í`Ýa8S×ÿ1…ð¥PŸ¢ÎE ”)îno³¼lTаˆj!¶«¢•dèÐI0ÍO¢¢¸‰òõ‹Gœ¿N‹êåP¿EmÈž3ÚrþO‹Åyñ¯~ƒµ¼]xbmŒ§þHtcðGô‚qðs0á£ù%ö¦©œ¿™†;
+ëÿA*ñ™Ù© ³k(àGé2NÚy\1šÏã µÓŽkMU4¶Eðú¬çáÏ\{âš@|(›“5k×´n
+/-
+endstream endobj 1168 0 obj <</Contents 1169 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1169 0 obj <</Filter/FlateDecode/Length 1009>>stream
+H‰ÌWk›Fýý÷#De2/^‘úÁk“ÈÕÊ&0}D»U…lj‘z!ÚÝhåÿÞlÛÔͶi¼ÒfÎ=sî½|%
+‘ù-¿›6¦ˆ%¶I¨a'jdðc;LbHpk˜Ä1¨i«y¢®lóñ½"ûvO×å>²Í—¡ªhžæÖl·}§ÑÎÒRôÐmz@'ù#bHèóaNó[ó(Ç íÙŸEaØZhƒzöQU(žâù£©¥ö!·ì|n{¥wc°7¦k„¡Ê.µoÒÆàO5¦¦EÒ´ê8…„ÛÈëJÎÇ#åæì9~žSƒÇ:RY‘ƒI˜!³ÇÕ¨
+ C$©¤ª¤¶i¢f«ˆ鞎OÛøMTÚ Èõ)íâcÆ=°<u Cœ;!Ô4n·X&éÏÀØuó+/tïöµk‰ß¬Òm±Jjyœi’¯Òídõ{^ÜoÓõ&D“Å$´Âh)–Óåµ5bxõê;xÔAod‹È0ŸA¶¶¦eVg«d›ÕŸfY²É‹J~­ä*Ûw÷‹»qÍÅ|:¹ž‹wɵ2YíBñ. à T„¹Ì£ Ó
+endstream endobj 1170 0 obj <</Contents 1171 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1171 0 obj <</Filter/FlateDecode/Length 1194>>stream
+H‰´Wko›HýûîG¨Â”áM¥ýØläUä¸f²»U³ZQLV6¤€›Fiþ{ï cpš‡#<Ü{î™û8ƒO¨â/»†÷§¾
+×9¼gô?(°+\wˆë(.ÞQUÓ"–íÚÀV Ìþ´ò ªJu`!èÑlÓ%ºÆ <æO„ƒÇà+èQ °4J  *Ñ5 šC¨YC'l‹
+ \…ß©°»}z·áˆº[òû\Æd>bËT“L0(¿êðW¹@d*!¸”djIš¬PIåë”ß™ò¿ìONöcC×6\bZ_½‡*§ÙÍM¸›®%r§T©h¡›ÚjÄHB÷‡á8uÕ¸”÷"ªNš@æó¢p ³J´¤9Ö^Þ(NÄv_¡¶­Öû,駲-Íf¼ºšI Q6¾ñkÄ˗ɦ”ó›8M@¦º„5ꢫ0ÇÇÂn|5@ô†¶©zES+i
+všU'DÕ ‡oTK'†±KPQ€ÝDàŸúSX÷'ár½ˆ Àʼnww7QÁ· ^_–¸œ¢Å"ƒ¢4™3¸ÊÒ\þvw‡7b1L“"ú^`"¿®£¼€4‹¯ã]ò#¦Y…¬¢ _g¸Ïh%ܦqRäbs*(”Pk;ÉŸOG+¯{‡¼³b»šô0C¼P‡Âîo#¨×Gó ›ŒŽÏ&ìÄ×IŠE•qÎmÉû‡ySr>…j¡q­<ëëlîùÞtäAz[`u‚%<•Ô(ÁçZÙœ$uI „‚êæQÅÿ±^w\øòVÍZN¸Ýw/úTA[ñª î†Áôú0ªª6òÛ4ÁN{ª÷«ü¥Ìp¾JÅ·¡ûáÃïà{/DÍ„w¡°yn³´HÃt9ñrœ:Qu˜5k:ˆ“(àHe£uEÿÇêyÝm¢­HÞ÷"Jrì#º¦ÔÄkžl¢–ƒ‘7x lhjPSgi6ÿBq>cØêÇg[äÞ¨_{„1=ž)³ù9;Ÿ)ϵ:P¢z÷8ßå˜ò“:ÀYŒÂR—ÚÓ^YW3/2É>ͼj}?Í —͸ˮM¥:»?ê¥DPKQá”ÍhQ¤, ’ü*Êʈ‡J°=„"+Žk‰ØÔ2;´
+[Á•ì—}Ÿð(‹ Tôe\Üã
+û ‰==¬¶Ï~(µò©ï
+endstream endobj 1172 0 obj <</Contents 1173 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1173 0 obj <</Filter/FlateDecode/Length 1104>>stream
+H‰äWÛnÛFý•y$ƒpÃ]ÞÄ
+lýŸÝÁ›w± wx£øï6pP·¸Þaaèº`…øî
+fwl<ŸùA€Z‚¦ú¬wðr³m‚Óa"ÀòB渞!Ué RÁà¸ÌvÁœ¹Àmæ½Ò,_`jO Ùí]zÃ}êÏCuÂFudÐ KyšQÅ%çûšÕó˜Û)ióÄ VMxœ†,¡_G¡EPY9óüÓN9!qXÚ¿àŒW^€«ÝGƒ “;†.§§Šf
+Ùá“aòÀ6­qÏüMý´/.pCÒTý»]×Û½ÒuëÀõÀµu.XxÆ{4}š†ìT4¶ûÉ<`rm‡íˆ¼ÆB6¼ê¸ˆNp@B§½Ê%BÆÏ%s—K<Ç'sÙ¨Ÿ†óÎ ŒÑ)<Q&ÖÏz&¦ÅÌôŒ ½ÌÓè„ŠÅLnØ0Ư5n‘Lhu“
+l>—PõŠsiɯy²Ú o›9ÊÒ<¦‹Ýw½t•Oæ«$Cj”l<¶ž¨bc(ùšÿ8™/’Yžªl²ÚÜ&Y”'Kb‰äf[·…Ô„!¹ï{Ìéxtäg$ až1©h8è^¾®ÀU¬¬M¾òP÷5`Œé`
+!ûe£hÆ©Xi$eþDÇ0 ƒîȇjØ^ZòW%1ʇ·o€GMÑLv“~OúùOQq¥xœl֘ؤ‘ã—#Ô²àÕ¿ú;L%š¬×jšXö®Ç‘º«a_Bo8Pãá%ÈKy%ª;¾ GOö¯ÇòÉ&ŸEùK W2½Ïæù\¥³zér9YÍNî¦b{ö€4‹õ %%“TV"éÇòýµôä‰Ó\˜Æ&³.›•oÑ–êÆI«ny
+êÿ92Û3`½HòäeGš<­Ì*ÿã) IŽ½fp¬õUpöºMˆ³ÌÍÖ_]¯Ë¢ÓÔ|ü=ÒjþÇ[>þ\ù&À
+endstream endobj 1174 0 obj <</Contents 1175 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1175 0 obj <</Filter/FlateDecode/Length 1028>>stream
+H‰ÌW]sÚFý+÷QÊTíjõ•™>ØÉÐÁ ˆµÓéh°JÈ€ä€ÜÔãú¿÷îJ$ʸ¤ <H¬î=÷èÜ/û­[×sxýnjÃ|¯%ýÍ
+òw<HrVˆ÷œ;°p=âù¡r˜ò‹ö •±mꀜæû`¹!q8ß‚!ät¨„„¯àpbsð%¨M”„z°NádðV>£‚À×Rwv
+í„6XQ…ÔAüð ¹m”Þá¼3}#ŠTv™K¸N›¨kªÒ·6]c£ny&u T”×I·!ÆÇÚn™&êt“‚® ¶ËzE“•45;æÕ‚ØÀ
+Ô‹Úà9„ó½ÞxÒµ^UƒE uPÌAÕ3 0ù
+Œi:»_/Š‡‹ü6íç«»eZ¤C±¸7îEVOä¤?YC1…7o~†Ç
+Z¡ÒP¡Þ ¬…"3ã†XÜZýÏù&͆Y‘Îr´Î‹tV ½å<Ç“Ï+ôpCßèÇC9ì÷FCyùù‚FÕy 8Í™Q,¦bÜ°J²Û¤È׊’íبÄ_ UmêÐÅXd³õÃÝ>Q|MwëÐd¼˜g9VÕãve„Çw4õÜí\['K¬îsîT‘³d‰Ò  rÙàÏÍ.’6>‘w;TDÑî¢ûSÉ–´ee5kŽR—ã·g¯tr™>sj«Wñg‘fätP¶â£ãép2nïDÔ²àÕ¿ú4:­Š‡ûݧÎjI@iqÕH':Ÿ…ã‹3X‘UÉ™Š÷—º¼Že Ûàç@>Ë—jH™e}B´=³úyV$‹,](¤²eC¢÷Sõ´.`wŠÏ÷“_6žšuàFµÕ¢ýG;ÈAõY …ÎSió»qÃW]Ï7&‘Äî¾{Ÿí¯ƒ­RÇ—Á>¡­nµü8¯Ê5µ’{\wúu1AÐœK•M5´z:•ç•c)~¶Ó¨|ܘü”{ܨ“»¥‡…ôÏÓZù®’Ú–ï*¯ù®]Z»²r:VŸ/™ªß‰æ9§ên¶ ËAOöàj2º¼‹hK#q!Ʋ_cùMúbp‹“ñÎ;h0­’"«|y¿Rûç._xùzŸnŠXEºä\R®Ÿ°Œ¶#î%˨#nÛFêžZ-Ëèù¤:²’JÃGèbÒ\Lz'5§Uç6RÛãÜCuKu|%áÿP 0
+endstream endobj 1176 0 obj <</Contents 1177 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1524 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1177 0 obj <</Filter/FlateDecode/Length 985>>stream
+H‰ÌWÛnÛ8ü•óH%Ë‹n,ЇÄÖ^±k³Ý-Ò¢5PáX©¤în‘Í¿—¤$[²eÇNz³(Säœáœ9$}ª€Úo~Ï^Î(\ðL±¨º?$Rº.`©Ÿ]NhHx>ñ€ºŽúdg°z¡” Ps!áA
+Yñ»¨bª™ÆvG¸Ì´ÞTÄaHó€wÈa>âfˆš~fž<ç½úÓ}µ¢¸’x~ÍWì jhös³Ó=é[íp-E ÝãktƉÜ#††ÞÆà4a¨ûÎÙŠäRAV¼‡E1^-4â¡Ü
+bŒ6AùrÛ²Þ/
+ófKp˜@ZQ·I:…©~mÇ-’Øô XoðuÖkš¼¢iÙq¿„
+7š…RðqÝM‚ ÑÉÑ-Œ†^âéÉ)Æeü&[|¹N¦ÉM–—Óäó—¤(ÏÒ¢„fü`:R£ÁÉÙH½…ôj™iÑ]GRo'܇âàPú66ó=4™F³è|Áu¼¼ŒË,ÿjÞPAÑÝS°+eDÇä•æ˜&tʇº² !¶X©y¥ž
+ý³xÝPÒý¹çÿî*ú}΢êºÚg€^S üÑ‚á2ÃyUž»/¨{ }P­öîrë+dÛ‹÷–L?µmGwÌؽ2ÿÑ~ÔÙ¾ 0
+endstream endobj 1178 0 obj <</Contents 1179 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1179 0 obj <</Filter/FlateDecode/Length 1052>>stream
+H‰ÌVmoÛ6þ+÷Q*JV¤(É*°ŽC2ÛµÙmA; ®­î+“µµE›ÿÞ#Eɲ,9M[µ¡ïå¹ç^È3žùæ7ðìbîÁÍž)ö· Ô5žh $ƽàÔx>! £8u ¸ê­Ñ`VƒzóA-ÁPE@‚˜ú…WàH5OŒ‚Tð/ø‚zBΨ
+&–×,ݤ k—‚)@¾‡aðVñx¾
+ydÿN¦*™Œ‡—Á8@)5Œxej|ÞWçË–JyÜìN‹92=NÉt6Q“Ñä’È?•Ï0è¼µÓuè·¼õz¾ õ8œ¾š"ž|ÓçØš<"ÏfrŽ­!/åor¬†³+@BFòüåL~±‰ï‚´3Û?=é.-~88(nëä€i „;ÛùºòË–ÝOƒD’ý
+endstream endobj 1180 0 obj <</Contents 1181 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1181 0 obj <</Filter/FlateDecode/Length 1123>>stream
+H‰ÜWmoÛ6þ+÷Q*&V¤Þ ìƒk Ïvef[ƒg«†:Çêl¥]‘ä¿ïHQ¯–7K‹b`1Ôñî¹»çŽç×Lù·[ÃË‹¹ ë=¼äô(ðw¸ï“ °m0\ÛŒ˜¾iã× <à7 ÎßËT ¦I-àK°|Â< ' –Â+ÐB>äÃß`ÙÄ´Áe”Ø@Mb1 Ì'Ô…]¿Â^óT,õbeúÀ?ÂcBFh´‚ßua“ÏQ·N™æ€MÅÓ‚_Š ¢S qÀ[M§®Ætƒj¦Ø§båè¿óŸØ7\ψã*¼Ö¨f?6yÜ \;C…¢¡ÝaµvÊHp"¨ú¸¡§4cÚoõK¶i‘Êó4+B‡£­±€DñK#^ð ¹mPïZ³.tO›ÍDv™Cl™6 >Šg"Ò·Óm/i¶ZFÔ.“nBŒ¯¥Ü&YˆÝ}’¬Îº‚É
+˜sPJ¼€±§iÙ>¾pÙ×"¶Ý…
+vYž-³Mî
+Ö
+ë­ øQ%–gÕX³9æ}±Ùj¤Mò·¢\r Ä}±Éþ\lâÉÐÀ]ü4*!SÒPÂ,ö['u™¬™[!S#,Bˆ˜\‡X¾#Öxãˆ:A6Ôˆ õºŒõªËUÁÞŠ*öSTñ÷xÝt™þÆÃÉK怯ʎa@uÞ!«â{ö'ì†FÇ¡³S€d­6ÏÔ ›ÙPJN'ãᾑŽóó Ï -ª(DȬ’¨ä?ÅéPé(ùSxÕçwY×R¢ëvGÍ·å_;r/þÓç +j*ª]3ÂA.¾§—1úŽÃŸÃ ÄWèûtŽ.ãðl]Ϲ÷¢—Ì©ãL¾øÎnwËä;ˆÍÉK´Â)zÏ<|s)Ù|wºÀž<½”ÖŽŽ.Õ}÷l£Ki²on)׉é¥ί1Æ4bò›aºª²Ûס‡‹[ìüeJ¾`0PËŽÞíÉ tÔvºbÿ¾wdîCÝÎÓ5²,ZÓ}~êî8±•è¶’h×ïG{2Žßñ„%¢|Þ„uFõ\÷DU1YÔL4£Ù’„ØtºQžÜÈŽôPyõô*.t®ä/š\jG„î³'™×heZcÝ×þíÖÂÔsõàÈñ¯
+endstream endobj 1182 0 obj <</Contents 1183 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1183 0 obj <</Filter/FlateDecode/Length 1187>>stream
+H‰ÌWÛnÛFý•y$ƒr³^Ä
+¢5¨ “ž–ã3eãâ A´ õ† ‚?AÙŒÛàJÁlœ) ®Ï„„] ¯ …çÑ´+=²kÑ;}ìÓá‘EåøÞ>£%i
+i8` º*ó×è'‚ñ¢âsæȉ¤á0Â0â˜,ˆvb:]
+˜ÃQŸRu¨Bœ•Lª*Ô—EŒÌ:„·†)\Cš–08Í 9ýÀ=ÛgŽ[âR_µÞîø®ŽÚêEí9²±.$Ã…£Q£éq7d§rÃí·fÏ“Í«9óB6œ’;†ôeÏ qR9ñ¯'ÂijÈ'ã5luÓC]˜ž1Ÿa¥Ãl]6Ñ5¦òíLÇØÓ ÉR0…20£vUt ¼­×mãÍîcÐt—MÕK˜²€©ÑI—€
+æùRV8¹²'`M(d®b¶Ý…
+ɇer3ÍÒpƒH„&ÓÕv›¤t/×yBKâ4O®“x÷h(,Á„ÂJœkSüÇé×îÁt|ŒÍwYž­³m} æ«$wèÁwë"ÞÇ9þdvë8Ìã[²ûCyÿP5…-|ãj…W³³ËTôÛ–1¦[—™ ˜Â'˜´»˜_Á/:½•È£Mc`q6;›[óÅUt5½º´‚_¢`¶D4ðìÙp§m¶+Òö÷=!¶Êð
+=òV[«Sn:‘¤®L†Á²'uËãÑ\œWØ”Øí¨KçÙ-f(,4¥Å´´J• «k»ÿ«Î× £×ó
+Aíñïþì¨h±cØTˈòTCŒ&
+aûuë7¬{Hê´W»ƒ5&ÿ”dꕆFV[¦hÝôÄ‚ž¢´:êLÒ–æN÷ñ#»‚lŸêŠ£S\WkTÏ«ã áy^çÿ—”Pã{ÀU÷åÿü­¡ ©ÿâP4^ë,ú/ÏŸG¿H|÷WœÁÃü!ñåô
+endstream endobj 1184 0 obj <</Contents 1185 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1185 0 obj <</Filter/FlateDecode/Length 967>>stream
+H‰ÌW[oÛ6þ+ç‘*J–¤¨[=8hðlWb·í0¸¶¸p¬VV/Cæÿ>R¦dE–½¤u€&¢Ès¾ó«è ´ú/nàÅUJáf/û›õ^ï‡$Š„
+-¼
+RÁ'p¡|Έ
+ôëor¬ɵÂd(/_'òÁ€gáý3ËÖq’}úœmÊŸ8.š-¶lk²/_þ©É²©ë»Ócåc‘—ù<_ÅrÓŒi³‡‡ùºœ-×Y¡;­îÊ»C“Z{kO›ÎÑ‚@ô4·ž¯¦1kÃÍüØ@}4ííYÜíFT…=Îv'³mðÀá\Þ ÉTéi0Yšý9G«›ùØ)]`ãÁë¦S“ád„c™V)ëÏÔÉ¡ØÂ-M™>ð# ®§õÄëBNÿÛÙz1+óâýîù!zªÙxÌó£NB¶½ízmIöÕm\f·í¢m¾kó¶ì? ú¸üžüÀwÀ0¿ÄcókÝì˯ ÏA~k•Þ°Y¥.­̬¦
+“ëÖ
+ö) Lô³Ñ43ù»Êõœ·ýmÁþ<úO€
+endstream endobj 1186 0 obj <</Contents 1187 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1187 0 obj <</Filter/FlateDecode/Length 817>>stream
+H‰ÌVkOÛ0ý+÷c‚ãW^HûPR e*mHÌ6ÓT• 1A;ú›ÿ}¶ãô]Ø 0Úqmß{ŽÏ½>;l¾Ã Ø=(0\Œ`W’¯Èoj>BqÌ9x±sŠp„ø
+Â8y ¸ò»‰ 6aLÈ°Ñ0Ïãjó98B© n€q„9” #FБ
+¡žGÇ¢ ~Š¶lä'åD4sa. ”àM«çäŽî<ëc³Ú‚ÄÂL/œi+ sxöHË0Z¢R•@ÉŸ—7“r4þëÐ×—%x–lÍuoï=º´íDÀ &(Œ)­šx–øÔÃÁxÐ\¥b¤úQmr
+¾·‹÷ïÀôê<Å9ñk\öGªù5‰}g
+6]™AV;6ÃÎ’MÑÁõãPÁ%œÄJ·€†N'“i§Ýh-0«•EÕ¢ß.êz¿•bh]óF»‘yêfÉNÒiy©(L‰©L}î´i—ç^Ò¨ž´gHòT¦I£•Ê“zÏE ü¬RNždÂÎÛÀJrõÉrQ˜ö¨–¯»ýóîx0ü­… øÚ*®ÕÊj²¢U²V+ô@=—%Ÿ¥hªŠ·=–Ût¸ÇC™q'iè…¦"yÔŽßš½¢TåÕ ×ëÿÎf9.{oÙ–g\-Õ—våeÀ×1åeÔužüÿìx&Oqãçõ<çû'’ÚÜ´åm^çÅ7Çe˜9çK:‡YK¹ßfïS/¿
+endstream endobj 1188 0 obj <</Contents 1189 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1189 0 obj <</Filter/FlateDecode/Length 1316>>stream
+H‰ÌV{oâFÿýó§}:û¼ë>©RøŸ¼i%Uå€C|rlœ>t—ïÞÙõ °!\J¯q¤xYïÌüæ7Mü-çðîÔ×`¾‚wŒü®v‡ûÕq ×UµŽ¦ƒi©–íØÀ@™}¤P5èÀ¦ wTjÛ ˜Žªxx’Ë|O¸ >ƒn¨š%ªDSu
+„vTbÁ2„_ Û€‚Š…^…¯´°?›ð(?Ã5êNŽï:·É|Ô-*™`þÖáç|C•‰„8àF’‰%QY!’Æ÷ _™òoì#{QÁµ G5­¯¾*‡ÙŽMˆ›Ž%¸S
+*Ö´›´ÖN¨êì!Uï6Ãõ”f4ãFnX24]­ ™/³Âu˜Ñŭž(ʈ¥Út·!êÔÁµww-÷®%ýT¶¥ñ˜‡—šª!â¦Ãüòø-eSZñE”& ]BJ2êLd#?‡A3Ò”èUbR”3ž#I`§t7v®±NÌU„c¢µéB3Í5çú¬’M7: t84 ,Äfl•¢¢ˆÚÒ@!*ÑÒ‰Ø{ó¯žB%b`oŠjßÀÅm稶6á×{µ™I§Ó ãQí§‹8̃eEdž­½¼Ôh+°ïßÿ¾{qéû.|ÒDµ2yjÍ×,–i–NÓØsW˜ÃxHW{J?M² JÂ%
+®”^ïCáå èÈu®©äe§Ûz^è–™¿;Úæo|Wd4i8$£]÷Ý÷ÆlôÓ`~†9¥tã4 ¡èÑu!夔} 9ÉÈÌàl¨ˆß¢_äϺóÅÁ‚qª¦ ÿX¨ÀG&qÐO‹rF-Bë5þ_K.VyÿvÝû¢8ÛŠ½ ¦Qì¥Hk±ùÂÞ¼ôZÛÀð¬‹NžÀÄŒú]Þs¡?:\æ‚;pÏÝ!ëN®°$Fxêrâ¬ù¸Wì+c-Áv2Åf×6ƒLÂÏسWLT ¿y§”ØMª6þ’ÑäYm“JûD´v maÏ\’Ÿ8ÆÆ´’£ámÃ1ZÚÆÖÄòŸ6ˆCøû¶±¥
+g[ÛÅ3ïÑæH¤7ËǶ]½w~
+§YA4»—ýSÈcÿŒ£„«IðPĵñ‰â.â¡©®VËTõŽYÝÆÏÝKx“Yºüžàëö´¨Êêkz‡‹ëþí¿]^…‡­~mur(~ú¸œ†“a_\}[ÓÃÁÓ„pö4Noƒ¸PUMCFŠ—8Ü:(5<õ:úh÷t¿g»…âT9AÔ>mu´Ýα`9³„¯ÌÕÿ=|ûGÿ†«ßǦ‹ß=Ž.ƒ
+endstream endobj 1190 0 obj <</Contents 1191 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1191 0 obj <</Filter/FlateDecode/Length 1490>>stream
+H‰¬Wks›Fýþ÷#day
+Ïd¦’L:Š¬Ò6cu:XZËd$P
+Ç÷\>Áñáhº¬è`ªDÖ(²¦Q21!¡ð;D0ò÷¨ 0Ç•Ø›2
+±mXïJÐ>Š–0›±èª†¬ó°ið7{R¾D4„”½„q"ÑTT/ƒ®À»ù¸ XkJ{C­£^ÐTsšœj–‚(š>
+ðW»Ýǹéãâ ó ?oBÿ5Ît8“fóKÿr|9Á&ý‡B¸zÅö8¹Já‚rrO›<iYVå“¿lƒh…G&Èâäþ´a˜¡Zûl¹hoüKìÔ3\uÏùò•ï —¿Íº
+DÂÌu9‚ظýâ;îâmi˜¦¡!K‚(ÝÅI6 îi2\­š¦¸*‘Àï‘÷^Î|÷r:œìAW\»jê0Mãe°Ãšc—üÜÎ1E'|Å<HSn´Y[”*I›Ûvõ2›=ÁÙ‘œ3¥È"­$€Ygñ2ÞT}Õé-PZÏžç ñØq.&=––$¦n³àšxs¨³ÕŠ‘cv>P¥¶‚T /UZõÊ{¥á;Z¸øY»i'çß™zHÎgU镨÷HôeÎv¹G‘[ªÁóŽ¦Y#ÈÇéž¿Ç<Û'ßoã”Fn”Ñuf÷Ì-˜¾}¸YÇØr»í¸
+Ãuc‘wÔ«öÁj¹ÄÂWµrI•ìDžûÊ+òñ¿êÂ`VÉçÔV9¶)'Z&÷»ö^òsÖºÜzo®³µ'"LR;?·~ϽåsË€á1$¨7qè `™dC‚ë …ì–ÂxÊÐ;+lØ¡òQbuñÕéЃ/‹³Øƒ0MÑAxEm‚Œ®øøp}‹™à:Ädša.×0M•°Zú~â³FÅ$%æçë]úa¬_ íi¸–ºX2«Z+¯ô7ŸzDÜtO]BòÒâH2áŠ3 7I¼…ùtÌE\œÝ_'á
+–t³…Š‡y?Oà¹F®e‚å—{aNõ>JîjÿÒk*–,k
+>ªÖ-ï, ˜ÑˆNlÞTYaµ~oµ4ôb‡zí¥ŒNâ¸Ui¸\â…*}ŽWôEÌÛ… ¯¸v’>zœò€§w;vŸÃh4t[gáXõn$7B´-÷†„oÒhô¡U$>ã@ä˜ HæsÍÒö«ÃrP-¶Û¾6ö#ü¤(jSÏù—¿L¦àe˜e¤á&Ž(édU×åɧéA¥whR›Në¯búŽí5.ó½I(Ó›Ÿú;ÈÊB¡|{™²~€º€€²‚À6¬W#Œl_´W!ý,¥NÕ?ù_Õ͵+Ê_VÝåq¯Kâæ§,:©*„Ÿ¦Ð¬|»«ñ]»ì®Jü“9ñ 5úñB¼ëÂ<Qˆ×—dg!þ󟎽Ôm—¶®ãñ°÷)i«’¦Ù±’?meç£YÙÿ6s 7¤eYí¤+“ ‰×ñá
+endstream endobj 1192 0 obj <</Contents 1193 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1193 0 obj <</Filter/FlateDecode/Length 1331>>stream
+H‰ÄWmo£FþùóWa]ÞL¤~pltr•³}6i{Š«ŠØ‡“ )ö¢\þ{g0Ø¿]¯çHáewžyföÙ™åÚMþÅ x÷~¢Á"wýS
+Þ¾oÇ1 P¼7ÑÚš¦E,Û±Á[-ï³´ ¹Ñ4ªƒ7½M˜mƒj:D7pò×›ô¥ëÁ_ D3Àb”@5¢3üÏˆÍ æð„pímPA`æ`UÜjˆøÏ.?¦!?©;Á»Ì©7ÊZ”)&T\uø5{AZTA"­?¼_­kb63e93FÌ&^‚R=‰@«LÔ–Ìc:cÄið ⥚³Ï陟;eª°–JME£òbÖDf8Ä´rÇúéa s3KÝ Ëd%:Å°¬æEèf7§p£ÓÖŽ'CÓÉÚ‘yžaæZQ˜cï8boNl‡Ð=áè¥<ÛÍò¬lŸ;Eß²•ÑH”™ÄŠÄíó·¸r\?%n™J"n‚(„Ǫ̃QèVƒ1ËyKî‹· )oV®zN“•bÒ˜U$DÓ6¨m¨–N c› ºí0åú=æê¸s­zÑ5st™ðùM¤ª>úáŒÏñe4ëF«§%OqF"Œ©c®Aºã¾×ïvnúÞ'a„™la°ïÓÈ…S¡-ƒ)#LÃظƒ® 2f TJ¨ŽKÞ%zJ1oþò ¾ÊýçýTQ7Ò`æ/ƒô¥øÈ*ÁÇ$'VL>.‚¨
+ˆnë‹Z¦2*ˆ4q Gy»Ì"¡mX¦#udL@‘ÁhåPî[ñ~¶e"^o¬|ÅHd}ÂÓç§ý龺úY.PßU»Q˜úAÈca¯ð*!¦¤ŸòU#'oðm,:@–ƒÎH‡Þ°;¼ÁWIþ5w[z¬÷a/[Ò¨J"æŸù,ÝõQ¶mï*cå‡sÜØJÅ/BFm7ê#ÏT>ò ïd¾0©Í|ntd
+l5™'`©þḪû%åa‚“uvð7Š£4šEËõ躨丯[×#
+àz[8jußp&<-΄҃í”Ê©‘¸l¬EWÞ~°ª¾gsÝ×Yg>¶ÃJaîŠçSjùY…üxmîÔólðɱÛ~Ù"ùsA§ítÀ2Qj>»HÀ|{Y±¶ž_çO©®ÜO/ò‚¿.÷ÿÓGÀWyœ¨~Âõæ•¥oîSبjûTQ(n]µ³XÄ|á§üƒÿ%X=¯®ƒtŒO{ÎÔ Md3k¾®Þ¾Ötüÿ¤ƒîÛŽ…ìå–7˜†“þ¤7Ø8ÆVÎçåaËIeØÙ`Ž ~øÍHü„SV<9k7òm5‡O+áóÇÐDuàçM!xˆ£Œ]1íñezqs˜ñå¦ &râzð¯
+endstream endobj 1194 0 obj <</Contents 1195 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1195 0 obj <</Filter/FlateDecode/Length 982>>stream
+H‰ÌWí’›6}‚¾Ãý ™¢ !¾2Ó^/õÐqlJÛl§Cm²¡cÃض™dß=’
+Q5¬èb‹‘©þÆ~d_ìèÚÔE¦Õð5NP4s“ÛM×’Úi=t“tè˜ ÷ŒútÓ–Ñé­:¨Duí
+™ŸWE`˜Ð
+qAÑ(N[Äv/àm¯õ^)ÆLµ• îQi›‹k"ì+TS)Å Í3P±¡pEikº!¿-×m’XÌ– ÈÞ ë MRÓ”ìˆÕ
+¢Ôͪƒe J G·]¢¼ÿÒµ6fÚódûGR”oÒ{-ªâê¡‹°kî·×iè3:™ûìÒ»,çÊ©ü0ÙŠ÷+ó‘¿\Àq<¾Ì° ‰ƒ-S B/òSòûŠ o¿ù„ñ2¤ÖZÃÜêk~¢Bòêâ{ÊcûvÕ¬Än½RLï‰ÒƒÑ4xòE¯¦h¯‡ìæº2^ö&ÎVÉÂd“¯bñ0Í·÷›¤JàÇ8Ý<éF‚]„ó' ÕÒïØ·ä[îÏžý
+endstream endobj 1196 0 obj <</Contents 1197 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1525 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1197 0 obj <</Filter/FlateDecode/Length 1119>>stream
+H‰ÌV]sÚFý+÷QÊX­¾•™>¡zè`PкÇét \Ašz\ÿ÷ÞÝ•‚ØØõXV÷ãܳg¯î{ºøsx{ë0_Ã[FÿлÁ}ø¾eæãÚ2ˆîé&Øq\߶Tö§ð ¥Ñuj›‚éÃuA³}bZh<%dñ@8„ þÓ"ºŽA‰T'¦Ôðu Há7Èà=Û‚E\¯tØ·}x·áM_â»–9YŒ±Uj(6X”ÿšð«Ü *U|RTê(†ªQEçû”¯lõwö ûa ×µ|b;%^ó
+ÕVÖ|±È3P©© £Vuè:Lð±°[¦ ß]§ ´aÔ§^Â4$LÎp*BtÓò@óx¡:8&±¬ÖÝÐ4xó¬¸+:h”PÏ¡/Bò=öF,£d¾Èæ +ê7­Úž/FßÈ%¶w˜i$-¾{÷Äá‡Ëp„p/<(q}Ã]G»Và¶È7ù4_Â5ž)
+ëd³Å4ÙäX66nwkØþ &6zû‚Å<ËñZKv…Ю#éšâ/ul%š„±PÇ*ÉfÜáŽ?ÑMIù·ó,[Di®i¶õbí2Ôp·+ç#ÀwEz6øƒr¯t…Yäkaéê6/’âNf¯uÕ^Z—ð…‰€/÷÷BÈ‹„•P‹úˆÜ1Ü·|œßnPÐÉÿú–4ß ·”b¯HÁþSðByÏ{”d™1H¾®Ó=O†,<l«ì«{”gqšÓ/üªË;%Þiwô¸¼„úž´%X~ûRj+ýÉG-¸›.ÓašÍ7_‚<½¹YLx·ZÐC>æ±pϺ¯aÙC»zrÙ{÷zråÒÙ“K§ö;¢ÝšÃ,ÅøŠØkÐõËzë 7Ø>'))(469¤Yòy™Âhÿ 嫾. GƒŠ?_染%öæfCøŽÞk¤òáNŒòšûVÜŽMLÏæëHípòÊÝŠ·Ù‘²=^öúë-ö´ ñùSÊFsm0Ó†‹õæä²wbœXöY qGý»:äCÞI#ÁKÎÇ'Ê`|q$!Ýá0¼G¬7¹BbÆAØ¿œ„?ð`úŠå«ª™+ò‡eCbDˆÿ÷ ^%Ò^gV¯ÒuMëõ+û5§õ&ÇöÇ´¶ŽQµŸ0Çt)Ûd«Ç5æ[j;^ëèžIYÈà?
+endstream endobj 1198 0 obj <</Contents 1199 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1199 0 obj <</Filter/FlateDecode/Length 1558>>stream
+H‰Ì—msÚF€ÿÃ~Ÿ¢W@™é,+µ¼( ’fB§#KgP‘D\ÆÉïÞé…w0Ôic@:Ýîí>»··wã‚Äÿ“1¼¾H0Náµ+ÿ) îŽ7EÃÐ4 >kŠ(5%ôºXo pg @Íý‹KÈ…„(I²
+®jST º!ªN@°ÜÍ,¾€ª‰’uE5%QU@Vš¢\‡„ˆàÆÝ0s½„=IMpwÍSئQ5rû>åkºÔ]“AMf¿*¼ÏÄš, 0jr]PjD$6.³'½ö‡û+3ö]enC3D½^Ø«0•™¹ß6.®uÎŽ(Ö´ëÊJ»¬ˆÆ¨úð2LO¹Œ¤j;+i’*V é—­ÂtèhA•¤EX¢4ËEÆ Äv-õ> ê]­!8‹®¢‹›
+_Ù/eáKjº²‡0Ž &«ÕÊ KÐÇÏ|Þ”zl4¥ÀsCYE½0SÉÍäÖ)õˆ¤jM Mæ¨uUÔ´­½aƳYÙ·ÖßR4"…~«ÛrˆÓï¹=³×&Öï®Õؽ.¼yó <ñ½!‘EYEî·˜"*ixˆèS´-Õ!‹FÞý”B:ñ@D³Ç8ùœBGõ3Å2º"\¹û
+¹:Ý0á ì[2è¶HË÷iš;ÂEf^ƉáÖmT“Ë_³o»¶ÙjÛîGÇQŒÍ'®|9¨Om¨\\×óߦT½;}k`uM â9›íMáû7à‘ÈÈÆ@æÔBîéÄûÆ‹î—M(ô»&ÓÐÑÕ4·ê1Ì&@½dº„¡/
+¦a4’ó’EôYÉóqDˆ±â8`þ€‡ÖàÆ&öøß:¨bJ }Ñ×på+áü3ÓP“5Ù@@u……¡.+Ås…*—¬€å¯+l•Õ§ØÕ»0
+BßË(ç”âž>óé,bÄî>˜]–Uáx1ºJrvLG‘u< ¸(ŽHº˜Ïã$c¯C+½ˆå 0Àiwº¤úpW¦ h”…ÙrÅö?CÛÜA;Xܧ~ÞÓœ$~1_Ñ?.ÓrGW¯ß&ôË‚FþrL£“„qÂ(Pn,÷s±«
+ýö-jï¿u.ÙÊGt©šú⻸Éßý÷¦‰*h‘gǽ.«"½Rˆ8qš†¬\àõaU†&¿¸ÓËo:ù0–¡yï0Íý|ky¼¦Âè
+§O–÷I€O§Óôy|ÌÁéІ2„s2ȼl‘r ý’*¿_ß®ò²´±Ÿ:^äé w7Üàç
+ìSö¦J;öóyáEOûÆ@E_ãÏÜÄóéOÌÄÄ&•[šÊnsëÝçñÓñîwžÄYìÇS;åªËuªAbÆQæ…¶‹U£ü´¹J~/;ÔëÝb²¶ÆÚM´h…í/«åòÖ\iª–Þî®{Ž‹¡ÕÞ0©„¹gÏ(wöìùüJ¬e-‡à~r{f¯MlkÀ£r"û®"\¥»œÓ2<•Ÿ'®"îG§¼HìÑQÞgàࣺjÔuQmêì9`|¾å(ŠÑ’B°VØq¸“0ÅsÏŽY~4âë o·^'K~¤ÜYìÀÀg'è5^Ü2ðæó)6ìøÂSfˆ×6…í²Íú‹Åí¬>}  ^ah…êLRë
+JN[˜V¾ÔXO^fážÃô ¥áxL6ÄO©óŒ¬dË\x‘8²<ü9â8´È™3Ђ+,ÿÞÏ\¯Úˆ V3dU´GûZ‹£¡×17}|>J´Úýgã¹þvÿén¹ð
+endstream endobj 1200 0 obj <</Contents 1201 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1201 0 obj <</Filter/FlateDecode/Length 1164>>stream
+H‰ìWÛnÛFý‚üÃ<RAÈpyäA¡ Yb¨uÃ.
+ZZ«leR!i·F¢ïì.Iɺ8jj´AQéÔî\ÎÌìÌY½c`Êo9‡×§æ¼fäg°\ïAà8 øîX†Ù7mp=ÃóØ-hÐc¿J Òh¦Il`S°û†åû »a;(<²I$(ƒO`;†é€gÃb¶Äêă’ÃÃ;ö
+–vuñföý¾ Ï2¢(|—Ê'› í±4"ž6|P Fhˆ®´ñ4«§ÍëD¼¹½ŸØìû®ï†ë5xíPÌýؤºx2wz“Š 뮵¶N,#x"hú°a§uc:W½OŽi#÷Û¼n“hÍ6ÉŽqPú­?x†Ún½KÍ>íùZ‹êZ®áȲÙp/ž\”¯ì¹Z%^²"‡±5̨ÓÝ„·¥Ü‚§bµâ φµ®zÓÚª«i;}Ðû"D<Ûpœ}]!ƒ±<¥¤ƒØ˜ËБå÷Åoœ•é”Ó?jžWˆ°‚d0ÄzœŒÙ8uú‘ÑÑ$àÍ›·ðYÚd/ñØèÐ)ÁMQBÂ1DïA]
+¯:Íë¬~УXÌf¼ªÚÌWó¼Þ‡é/Q½Tú¶cÿ… _© ‰0-5U6ÂÃ0š°º-›¶j×·zwc7J˜¤—병ãu…¶ó.ÖÂœÐAÈ¢F% šé±Ar8BBzržÐ£ > îï8Y¼¼™nßo^ÖhX1þ'ôý¹<ÛŠöŸhlÉeYÔÅ´XD»Eˆ»51Lê4Ëq´ƒ°¤Úw×%j¯šÝ¶‡L¤zß‘ƒTï‹VnýmÐX»oo­£kÑî{<¯í¬”Ì
+ÖóÔ²áØõ|m3ƒáo’¹¯Ã›"ìtx«òêÞÍÔ6oGt²ÁØGŒÌ„ßð’çS~€"¿Jì"¦°eê‘nHÞ"ë§uQ>À
+¾<5'u{T´z‘гùœ—bI‚ÆÏ&ÀF®) (aªõ eU[ütÈ”H;Ä·Ïáv‘×IÅ~e¿d^YËn_âÏÎ`¸SŠÕ÷š³bÆ_A^Ô.—‹l*oMHzç,¹z"b üƒÜñT's1üÏQÜpD‹CBãq¢Ñ)„ãKÆÃÿ™î`Ί©:õ W'qù3·,M4(ž7+ÇŒÒkµEzÛu¿íÐ]Çv‡ïá<üø§
+endstream endobj 1202 0 obj <</Contents 1203 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1203 0 obj <</Filter/FlateDecode/Length 1223>>stream
+H‰ÔWmoÛ6þý÷Q*&VÔ«U`\G(´y±*³iƒfT›I48’+)É‚¬ÿ}<šò«\Çž›­6)ôÝsÇ玼»7 Lù-¯àÕÛ¡ W¼bô(°K±Þ!Aà8`âݱˆÙ1mp=âùì4ÐÙŸRƒ* bšÔ6»C,ßà ˆíá1h!FR!dðl‡˜x%P“ØP«C¨%‡Ã¶âŠ
+lZš ŧ g³¢SMøšN=ÍÒ ª™¸NñÍÕg¿ ³ïæîúN@\OùkoqÝl÷Mª»'¹3K讵@wqeoˆÐ0[ ø¤Á÷I`mçZ
+endstream endobj 1204 0 obj <</Contents 1205 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1205 0 obj <</Filter/FlateDecode/Length 1675>>stream
+H‰ÌWÝn›H~‚¼ÃÑ^áªPþm*í…ëЈU⸆t·jV+bOZ .àt£´ï¾ç Æ6N§]_fæœùæ;¿ó&
+Ü¡ïaCœÆ®ï.¤ š ãï߀ÃWAÖÍ@룣Éàþ[°$'"®Ó Æ ÏŒçµ Haæ97 B”Ì`Ί›tJãa7á-ƒ+Æ.XælÊuœ¸ãþ¼%ÌÓ)܂̼xäØþ‚M¢ëh¤\Þ[ž‘4
+hŽ%=ÊI;;t Èm:äO6º“nQlN bM\GÓlKªè#7ÑLiÅ"JÊB”Õ!/ⱃ›(VÓ‹µ²mšÒ$¾{ IZ@¸XÄÑ$¼Š-»<‚‹€´3¹Ûl6™-J¦(_0øzƒ¶b7aÆŠe– …*[Ë‹Ë£hN ó°ˆòëˆåbé—%NâÚp2Yfáäp ‚&l©Ö'>n1j_½]Æ×Q<gIá•€PÉö{H¼£ëæs=»Ë=;Ko#d=„[§“¨¸#:J2ö:ä{!æVRû;h‹h{À¾¬<ëeækE@ë©­ô½ŸlˆÐðZ®já±_<ëi°¶²Á&“4æ ‘£þ)\¸pæú~ÿÄ÷Ô=s‡Aüãï|à_ŒÝ½õýØ¿*W +& âŠåy8c¿0-ì…+WX_¿þ|÷Ýwì{.ÜîÎa“E:IcÏÍ1ÙR0Œê1y&E%˜Îð¹+î·¶Déïb²
+ ²ôTêë¬@»ðÚ2ÚœYm%VìÞn¥­Þ:e‘ÖLÍÁ?[§Û‡óQ€ñß?}ÙLW‚º¶h”oEs%Òj
+!ÔÆ `éd °à|p~*{®Ï t¿G¾ åãtŽ¤4’ñZ3òh >Œ\hQS Öùo&Sš¹ƒŽ¡ªxüoåÁ+ë Òòñžö½Ú‰èi‹8na®'Iz}
+6_oãpÏá6u«Äp@è®. íÜu׸c´fŠéLÔÂþS“Ñæ?®ÐQ•ÓÊwZœ'cŸð¬;œgCÏžãðŸ
+endstream endobj 1206 0 obj <</Contents 1207 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1207 0 obj <</Filter/FlateDecode/Length 1465>>stream
+H‰ÌWár¢H~‚¼Cÿ„­ƒe
+Ñ€ŽAkÉj³ RÔ5'O@°©çp›ÂwÐtYÑÁP‰¬QdM¢¶db@Àˆ MŸ™‚ÀWbOJ èý¶y*›Ã5seßוNê!¶HT¡:aw ~] È"Ð "1U”ˆ °qžâïô3ösinS7冑۫í0•™Yoo˜çNÊ©¨ 7Ô5:Qes½[ Ã)Ô(úHÜÒ¤+š\*jœ¦…a4r¢MÑ·”°@iJšæ¬m%ô¾
+Ú…Ø\—­®Úu¾lüÅî[¾Dl){ãD¢ Ȩ^,ºCüÌçÍŸ¦ðØP׫ž›©®ÌäÖ©FAˆ¢é-ZÌQ MÖõÜ$°ÿ΂(eúoㆪB5-ÈbH—‹EœdÐñ.
+e">>W‡’Où—º©è(KDZd®»ùe­o5c‡Î5R©z] Vù<p)f»Õ{fRAfMÎæTnåìñü3*1§,WÂ4¢ƒÎ '9¶ÇWå…Ũ+uØ3Hn÷ª\œ—
+½v‹ºUˆâµQÑæX~ý,Nêªù®š‹[viÄV0¹ê÷“½T ­ÎI0¹ƒ-ØËw"Þ›qàY®s¬n”y§´Ç‚ÿckەÛٲޫ×9sX»aTZñ$HâeFS#¸`W>Ž£ÛpºLV­ÊÎ
+²û8ùÒ;?as#ì/óv…½^Ù)ÔìxÛ}Ù0˜pïÙ‰&Å‘pãà²y? YÛ…«éZÙ£=ëÙðþÊž“®”­N4œ½
+Ÿ)R9_ÌÖ¼J£³¸Š[êø.®Fl5HÞÈ•Mþ¿Ý ·µE·¼IÇIxƒûni·!†zËe,::{žß—A4~
+X¤#6…
+endstream endobj 1208 0 obj <</Contents 1209 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1209 0 obj <</Filter/FlateDecode/Length 1325>>stream
+H‰ÌWÿn›H~‚¾Ãü U–²ü4•N:s9W>ìI/jN'bÖ •)8ÍEiÞýv—cŒ}v/•êHñÂîÌ|óÍÌÎø]*ÿ+®áÍi¨Âu o"ü·
+¢}?PÇ0
+÷A­’°EÌsý~Þa¯7r£%$-ÈœYgI:Ù
+Þ¾ýfE¾Êçùrì!7ÏVqš‘‚2õÔ+._½ò^¢ú úÚÓhêN'ôUÈ¡=u¢Ø6U…“%c;šþ0D³ÑYµ±?’ì!º˜ÕÑh$ùíDë–fW¼Ê‹Gñ¼ÎÙN|ÚåÆž&LUuùLwãû’œÇËûº–ö‡×#ÆÏ7ød›eÔÐÔ†ù’/÷$›ÿþöŠý?€ôJ0ªç@f¤ lÅôŸy¼÷é•è"J«?…^¼Èèµóú}„Ñ–=q“uÍLϽ`2ŽÀúQ0€7ñþðüh\ÐĺÞè,ðÖö" V¦¾’b™Ç ߤm`óÜZöe9öû9Fdìª ½g<uûF†îšÛºl®ªÞšn÷Tâ7·¸½zzNK{Óx˺1κ;kKÕ‰-kkQX÷Èé,¢ t89ééü}e)8Û*Ëcˆ>ºÓ4¬÷ Õ8]„+rWÒpK톳)_Ï;†„V³±LE˜l0B¾u #±_ìràt™_ÅËÀwÅðr8ô ÉÚócŸìÁ͈O~\"´Ò»“ëÑn‡M¥ŽÃ¦R’ÅWK«ézÌ¢ì % nÒù ¸þå+Hò[Z@–t–],H‘f×üXIi—KþXÄ‹E:‡¼¾*jܶMe` 2»^£js#:¿\8
+í{|÷„ŽºVë[fÛû‚™;¼ï¨ù®cµý£n’?ÐŽ“æEºzl'ÿVçÞÎëZ ¹Ë¸,ÑVFÎ{T5eö¶3–ï?ÙpéEð¯
+endstream endobj 1210 0 obj <</Contents 1211 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1211 0 obj <</Filter/FlateDecode/Length 1096>>stream
+H‰ÌWms›Fþ+û2áÂq¼ˆÌäƒ,URÐ%©Çét¨!2²H©Ûqôß{{!$[®Ú‰üAçãv÷¹çÙeWLùWÜ«˅ ·kxÅéo&PàŸÅþ€ø¾mƒá‹µms`2p\âz¾ü4ÐùiA•1MÊ€ß
+¦Dg¹5!&³` ð¢&¸ŒØv§6 ‚(šENÇáhÈÃÙ‚Iðs0åÃè
+æÑlŒßG,  J(t¥%îñrùâ_}”w CP_†Û;7Ú– ­xêJÝ0AQä„«$»‰K©Ó ÿR$ÔÒׯßÀ"x÷>˜Žx¦”x¾eUé»u{­Á×"/ó›|k‘‰â0oöŒQ¾*ãl•
+ºuÕÄnð‹…M}m6ÇÄNv0Õ|BjªïwÙÜœAd3N‡sCÔŸf# R˜Gô¨ïŽÕ"KŒQüM¼tÇ÷ðr
+rø ÃÖÞtÊ°u nïе_ìª5õ `;MðØ&>À!$íIlƒM‘yLú¥®ÓÁú™9GÑc'8LÕña¬Ÿ³z€ˆ†m§Ùêv’­Ëg \µœ w=sµýFæçr(~7þ#À
+endstream endobj 1212 0 obj <</Contents 1213 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1213 0 obj <</Filter/FlateDecode/Length 1007>>stream
+H‰ìW[o›HþûÎ#TË”a¸VÚÓÈ+צ0½DÉjÅÚ8òÊH/Êú¿ï™ µ ªºi•‡µÏ|ß7çjŸqÐ廸†çç±×%<çôO(ð î»ÄóL4צAtWg`ÙÄv<ø ( ò¿å Úœ ºNð0—Žšåf¢ñ”€Ç3y àð˜Itlƒ¨N˜Ôp µ¡HádpÆ¿’‚ÀW+ÝþéTž!l"ój}—5'[¥†bIÅ“ÁÛzƒ¨TAp¥¨ÔV U£Š.ö©XYêüw!öõA®czIJ½ì©Bæ°6yÜòlé;­qEÝ2:tjoÄý0ÀiitóJ=a2uFDÖ÷± «q´Âtç„D$ŠÛ’¸ßGÒK¶K…«žE¥GdÓGH"x  E1ef0ø(ž©ÈBµ”R,¶y*e
+ÍlóJ‡¿–v»4»e
+2ýŒî
+@ã(utfº ¹âr:ØŒ˜æPáÉkv}HÃ{3ôä”8ZÄÚ4©’—yñ))Ö~~s“dëàs•f%J-!š,&¡FK¾ô—s-xσE<[.àÅ‹ßà^‚Sâx†!\ÄŸ!!DnëµÓõ$Û¾Ý?R1,±9¤iðì?½ÒBv{ÍËeônMA8üå‚ãe!˜¯‚ŸD€Nðƒé›(øfÄGþT½UgLã­<«ÒÏÕvL#W&|«V¤p¼~,üà$—ûЗ
+Üy•¯òÝ,(±~ÑH{2Ùfi ¤Áý
+„IKÚ«Gç¤s0 :µá= ©èðö°‡ ŸÌa›Ú–² 9ÖùdÞÈöÌ£—û°ÏŽÛÐ,ˆÐQÐÚH̦Íb»Ö¢ÉY <ß–Õ!˜àG3>ó'ó¿h­¯³ǃŠÚ,…_„A³ ¯0
+b™Fµ…h¢I•_ð³e»‡Xÿˆ9ßoéßÇ{8 ›¼€(Å™„óÈ‚*‡4KþÚ¥83wù*©„I¾8¿+V)D ©ÂJˆ¸ú l›mrh]†ßÆ£Rc „& ´U}M´¶ý
+­Énÿssùç5cÌH˜Äñì|!†ÕÿCkÔOe‰Ùs“fæö‡»´|ÊcK´šNp«÷G®AÖÁÑõUM+Ù;alNI‹qêþ¼j€ZÏAjR¶á¬‘Òmø¤¢þ^~È1ãói¼õ Ì8­în—Å«|½Ý|©Ç’V{®›Íã=PŽ§‡ ú?š)Ò…+=ôÊ?ÐþçøW€
+endstream endobj 1214 0 obj <</Contents 1215 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1215 0 obj <</Filter/FlateDecode/Length 1314>>stream
+H‰ÌWán›H~‚{‡ù §@YÀ*tŽMsœ|65ëöªät¢ö&¡²Áœ^”Ë»ßî²` ˜¤Q[-²;;óÍÌ7³ãs ÿ¦7ðê"Ðà&ƒWý­|M×mÕqL‡¾›ºªÙšKµ†Îð$ñ'~‰ª¦!ð
+ [Õ‡CPŽj˜Tx ’‹p1|ÃT5,©& M5t@º­" Rï!†s|…*æzö¦Ù€¿´áéL†i4œßeaT·Œti
+Ó1– ÍnaD±K#Cçä¶F½Kɸ‡’ï³ìêÕäi3àŽ= K_*¤Œ½DI 22$Q³Lº ºÍå6$d«Î ýuS/`rtºÅ€"uèèz‰S3L›¹¬e¨¦Ù„
+
+Iö4-“’ÓÒ‡âo¯¼ü~IÃî v/íéÑJéh½NIV… wmv¸Ä½¯„GY–¬¢£tƒ×¹ÝѾEæN¤8Û²þy0›˜û'vg…W»Áš]ì;A}²žƒõÈœ¢@•H žƒÀ†<‡7nËZ§¼ËÓhÅ)E·]e‰©A J®~ê¨ýÆE.Ä•V iÜáõ ´¼:ùÐsð¦G•c"©ºËqíñß"ôiÌ»l¿c¬€©ç˜‹½·U×@:NÒ”l
+*ÝdO ¤7Å@q¬‡5w9¢RŅ‡›œ<íµ^÷:ð|<ÿu:ƒ/Q~ ´Þ7 ½0ɦÊÅûCÆ¿* \g3,?&?¢‘ôpϘ|ª¾›ø
+¾ß‘ãûZü˜ñû6;Ûf•:
+†ï’Í~K„å8ŠoÄT&ýB¢Pybzš4³¶Q.0mE“% Êç=‰Wd¶ß~d5*,MO
+<i¥òiÿ”•å‹¬—2uaÖs’»Ð'РýSÚ—/Ðþ箂Ííû»ø½„,Óa|¶j[ˆ•Ïš–Lc><Ð^reTÖµ’t1ü'À
+endstream endobj 1216 0 obj <</Contents 1217 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1527 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1217 0 obj <</Filter/FlateDecode/Length 1378>>stream
+H‰´Wko›HýûîG\Êð¦Ò~pl6b•ÄŽ¡»[¥«O,V6¸€“FnþûΆ‡Iì¦u¤€î¹çžû˜ñy*ÿËðþ"Pa‘Ãûü£ðž=w×5 ]vohŠê¨:˜–bÙ® á
+$„ÿq ",U%:„w ;ŠfÛ ›®¢ìå9H^øÜÀ á 膢`iD1€¨Š®Ñ…XQø8w¨0`Ž+ãê@øØ¥§á;ˆ¨»%¿ÛÒg0ìÑ$ ‚Wþ(("1ðYKÒ2‘T|NðÎüþŽdojº¶á*¦%øê=T‘æanÜÜt-®,¤h¡›ZƒN4Å}A Ýïq*7ªñyÐñd¨ºR;2¿Ï b˜BhIWÝŽ,§rb»? ·­Ò»•ô‹-M§˜]ÍT ž6ðJ1}ÙÀ”r¼‰ÓD—˜¢F•tfl™¿·¤>Í)ðÚК¬ šZI“³Ó¬JU7 TKW c¯7žy­‹j‰Bt&æXôL ,|Òlx.´Ø¬'ÙU:ïŸü‚®z—&sÙûZø^³áõp*Og“p2š\ÊÞ_¡wø“køðáWØ
+_膸Ü,³¤IŽáߧÌ(‹”Ei@‘M¢—”žÃÍ&ZÆŤ÷Ðì!¾£ÐEZÄQ¦ŸIhþ"z!ŠíjZ™¤&¬[ I°4k’?7ñ\. ƒ›FY´¢Ír¶F\SöÍüÐ /ýðSe±HRV#å+MˆåâA,ƒ¸LQK³ñ?KßtæÞõÈ6郈–Ï߀çUmx¿¦“ÙÒéÂcòC¾Y¯Ó¬
+oIÁDàÖòy0’GiRDqÂÌ«wú®mm*UØ0µ[ª‚hšÁ1ˆe–WGm4éªqŒÕÕm ±y„‡h¹¡Çi0OåðiMý„A¯xiÉ´v‡D]ó”à_Ãs,ë­qµðäþ~™Fsˆ
+Ìü:ço~ ±,¾§/\ooœØ}p,£b».ò²ØÐqtì9òjµ
+VI-ÒYeWÅ# ÃJ4¶—ƒ¢(Õ|{ä#¬3ûãng"ßaž³ØV4)fôˆæE“‡^·ì>zòp±Èè"*èUô5^mVçq1cßDEPr/ai¦ùZ¹‰V¹Õ
+*·«ÀÆ×­Ñ{r… ü´‡n߸=;ùnÍìɱ{å~ã¾{Ó§3¶¤QÖ¸Ám²)S–±|ͪ“öÚc?ü(voê'Á»%ðn>òLm_.Ÿu–é]ºÄ3G™T€iý¬½ƒÕ•¶=ì–!<‹7êz`'FÛ80#ÅP9o€jiº¿Ô0a<°S{h4XÏå{ÏPo“¦eK“iÈÊ|xÙ{»²(^!ú™|µdû3Ï÷‚£§Ýþ12¦óË8/:‡Þa~šzЇҀè¶^2:SçƒËDùvXÏ·Et-æ¡`þÚœâŒËçcžmÑ3¤`àÚDªJ´¡ë¸"]ØÏèɱÝlè¦"wäV¿àBÙýñÕ'^ËTtÇ,wþ25;#@ëÍÿB ¿Eñòm1ì ¼-†6sTÞÓ¢.ÚžwœÇ·Æ!¨öIBôÇk}ñr'²¸ˆïø³q19ûšw=Á¹ª2îòì
+endstream endobj 1218 0 obj <</Contents 1219 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1219 0 obj <</Filter/FlateDecode/Length 1119>>stream
+H‰ÌWko£Fýý÷#Te–áiVê'¦•×vÌdÛm\U¬=Ž¨lÈòH7²òß;3< ;Î&[U‘™Ç™3÷œ{/¹  ŠŸäÞ]ù*Ü¥ðŽà¿TÀ@Öl|€Ç0@qØ»¡!u ê`ZȲÈ$Éßb.w UÅ:%è¤Ù6(¦ƒtƒ-^äß\_@7j€¥ad
+š‚fq¢ÙŽ¦U<UÝ€2àWVÁÒ‘at©B˜“$ˆÒû8Ɇi/à +XaÇ”
+Ô‘uœÀœ2/1Å@£àó†2Ð ¸ÎƒM˜=B¼Ÿ&á’BDïâ¬TyñCüÀBêåÀù)M{µ´ÞÚx£2 áJavQø½fAliF“.çñ.‡c|ªÖÝE1K½Òû‹³=0›»¾;¹tË%ñ=gl@vl,=ýbÝ
+µÊˆ®„ƒe«¸
+âM]»è,ŸÑ•|šUrl®Rº#ë6ˆX툓Gö·i :–÷춌ϰՖ޸•›Èñùîõ Öª:®ë¨Qå
+¥G=Ž|umìÚ±rE˜¸£VD¾ä4ZÒI¾ýÌ‹¡ˆîè™ù~øškþÌö›o‚¯Ù¿I‰oÊvPÛyqÇNYgmæ»ûèe¼ß^oΰ㲖Ï’ïýÁ¡mðu’L×léB^È0ýåtÔµB=vâÞ¿‰Ò|¹¤iºÎ7›Gñ…± ³Œ®öÄ*럱´ßW°O°9]Ó„û²$Öʳîäédx½]Û±ïù):Éq˶enX£ÙZ¶8°ÓùÞøßy·h¿×9Í«æû\×=·û˜'zï¹¹ßzYçm~PõvÞ=ö¾i¼¬ý¶Êl8Þ}ãU_U¢¼ž¯ïØqߤÍì™ËÛ2q;)ËþiûW€
+endstream endobj 1220 0 obj <</Contents 1221 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1221 0 obj <</Filter/FlateDecode/Length 1100>>stream
+H‰ÄWmsâ6þùûѾ9é,¿`ûfú€.ãÇè®ÍNÇ :†pj›´†ÿ^I–1&Є\Ú:,KÚÝgŸ}´"— ,õ—ÏàÃÕØ‚YùÙ쫘pº. PŒ][å€×Á?ô-Á
+Ý‘@ öCÛ®qZŽ
+dÊt캇§c¬„oU&ˆ`âfû`lëù{`ïôyÚ Tí%¡Ú›t/ÑÍš¯ù4*ùÑ?ˈt‡ÝÅɈz£¢?2:G£!|üøl”Ã}¸{±ÁÒ¡ö`µMžÃ—pAgÁ?¥óŸæE©`È•½©WúîÅ|¶ZòU™ðâ![\PÀW…¨ï‹hhECvÖð5ËA#Ê ø*ýeÁáŠ
+·P¬²¼„ì‘ç­Ñ}ºñXAœˆ¹ml êÃ|Š”5ŠÖËlÊQ›ù)Ò™5©Hcz;'½$bQ¯;ˆØ-ˆ¬³\îðBßh2{¹!xB*[8ØgÓR}ùx¤Wk¶¦{¹Å ÓaBöP
+æÒÅÞW~‘)!¿Hò­¯e41¾‰ÌZƒE½lU¦óÏ•7°9áø©S•w|)Îܶ •~€ÏoQ©§êÜŽP,):'°
+{¨ñˆŽ¥ºï.Zú>S'Âi±=«FvÓSB<ẢNtK©!E wÜ°æï¨FUHol©r'GSÁ\¦«iZfù_â[Ö«µù/(òÌò©64¦7ŸÚö,ð‰dr©Ð¾†òQší¿¯n«¼÷éZ
+]UI>=ùÝÚZ˜)¨½EZË4ÿM“%l®Ž/Œb&úKwp<𜢽¾[ˆó¬Ìî³Åniwд×Mý>8}Ímµõ¶n6â+”ÔùB>~©âø÷4¤w7:…Ê«î¾W%uäÒº»ø¿noq¥½û¦çè{Ø—ä\œD_ºŒÂ5»WôÅvoï,Nâ|þ˜–üšE:ãÇÎðÁIÓíò¡²“%n÷Ѹ^hî!hõ¦I{q×<‘q»I½q_;‚¡–©*[}íœPçY¨žýÉû߉Rå Œz]Ù= ~%×Õ˜è5²nr+Ä;êÑþç„ÖÿÉþ-À
+endstream endobj 1222 0 obj <</Contents 1223 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1223 0 obj <</Filter/FlateDecode/Length 1149>>stream
+H‰ÄVínâF}‚¼ÃýiV;³ÏØØ+õ+rOÚ®BUQp"*°w ÙÝ*åÝ;¶1Ƙ@RÕ‘<“ñÌ9÷ã̽\s0Õ_ön"×ð“?L Àĺ‹=1@ž˜3 ›®IÁv°ÓõºÀW`@‡ÿ¥Nü6MBÏ€ºØêvÙ¦Llžƒáó(P|_2l2p,‚S ˆåbâ@ïÀ5ß3E
+¿èÜ!†°&F‡8†ÕAÄ0å:‘3»ó;ÿYû©4·Ë<l;¹½ôˆ©ÒÌfÛÔqÛsTìPŠ
+ºmíЉ…½–`èã4§ 1Ù¤sÀÄLŠK"û2‰aç6¨ˆgD
+ÅÍIlÚšÚ¶„VõFoÂP¦Ó²ñ1=ìî´t„MéÇS^a“ë8¯Â£…˜”5¨z÷XYuµš.Ä›©x[F¢ÞÐËú”¥ÞXmaz05ÐX"h°¥Z×ó©ÕÿHñ–J̽±*ÞWó$™”¹€\ Š«Å!uM@*’;Pkï^õäÂþ./ {vI.â)®qoØ Ñ8^¦³éf‘&Aòf+5…‚Èÿtçû><+‚»ž•§hgñ½_²t“ÎÒeà¯E˜Å& ,×P?M6ÓEg
+éQªtÿ<ª ‰ Tü|”"ØÄ+qÐäªä¿!Õ¶eVϹj'¹j»{“«×Ü>IvDÿõ­;J}ÖE[M“ùt“fçÌM•¼±Læ9ÚžÑÇÎråœÆ–ô"îʦ&ž¡^jôfÝ ŒHÌÞ7å6Dƒt%Ä$óÅL¨è\Ð?øÔÜü>ªö=Up
+¹ÇÈ[TpŸÃ¿
+endstream endobj 1224 0 obj <</Contents 1225 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1225 0 obj <</Filter/FlateDecode/Length 1299>>stream
+H‰ÌWmoÛF þýü(;U§7[öÁq´Lƒc«’²-H†Aµ/™:[Je¥k‘å¿wzµ,¿¤ †8@t>ɇy$}‚*þ²[xw¨p»†w!ýS
+á îÛ6 6® MQ‡ª¦¥X{
+$ÃOB‚–ŠªRÂ9èCE €˜¶¢xx’®pBø º¡¨XU  ª¢k@µ¡B-Èü œ„PP±ÐKøJBøÏ6<Ÿáu»ÀwUØ Ô-SM2Á ü©Ã¯Å†"S qÀµ$SKÒdB%•ïS¾2å?Â_8Ø5Üa+¦UâÕw@å0û± qÓ¶w¤¤¢¥ÝÔíTSì=d êÝf¸žÊŒj\Ë[– UWjCæ÷Yá:Ì’hI§ú–ž(ÃÊÈÀ~ضRïJÒÏääy<ºš©"l:|áOÆ×ɦ´æ‹8M@¦º„ŒUÐUðñµ8·dß]3¹¡5Q/aj¸ªº12ä.ª`éŠaôÝ
+áŒfB„*TG.OAòG'dœ&9ûš»9[ŸÎšø£éÈ#>[¦s7¹â«çÏÂÙx6!Îï¡3 ÜÙÞ¿ÿ„ª lMãd…oѦ¢(b[-èã©-,>Vû$ý0K¡ž(GTš­Ä³d‹õ107Lµ4 B@,BêMÈS`IôqÉ0I*£Þ@Þgsþt Þé؃9çîúÍ×b„¨±±R`¿BÏ&œ&=€{
+ñ‚:Pá*ȼ ŸÕÙ±ï†îx4qÃKˆo“SUÆê5§|,BÅ ËjÁÖSèâ+µLÉóÀ™ŽHï¸+Ñòþ‘[Ç1BÕ%þ4yÐDã8·…T#äEY´b9ËÖ£mJ}¾gì›çÛ¾ïÑ¥z»?Þ6iº™|/œ¯HÈÛg}z“µË1ß9Îôçº{
+¾3™G!çÈþ4óÏ‹µ3qÎi8ò/¯¼ð£M¼ˆ'¯›¾ä¯(™³E;§[%·?ß³uþºãu¶¨xüÞúXaç50p>\ˆkÑ­Ù›{—¥y:O—Ø
+°W‰r^½×®:\Sqˇ‚ZK©êZ¶mÙoÕv¹(^÷Mƒ¥8ñx+5,|šÖ)·´ÿxæñ›4šl .CÞW>ʨm•JdW~—ݶç:Ao_îĸ"
+‹s±¨; Ó0ÊnYNÂ,JÖwQÆ’¼ó¾Ÿvé.´V\'¼ôœr¿i‚•5±î3XÔ%½øºŠ’E”§Ù·2TUèꮶíq§Í– ÷>ˆoÑ»ÐÓr^q[È2NøÙÝá¡X\¿A”ñMÌ’MˆU׺Ëö÷a8[¦£åxJÜSÄ%óÖw˜[h‘ÛRÀ£Ò¡®žE™÷J)ó^e|ÀX~7‰×9¿ÒÕPâ îN>' ø€J]Uë±O<‡jÍ25l©wìX§#2šÏÙzMÚ]±€´sR­´Ì;TKw±zá'.qïŽË ÚRœömëÇÑ3ñ<g or^¦K©o'
+aüäߺߎO)ùxãéùÉy0‰“¿ñÂm†è ôìÓÒO×ÿ:T_Iû¿ãÒ®'o\Q{Žáú°¬<4WËÍÙªkˆÁå±¾úOû{@ñþ.¾?!÷*féW¹·Æ4­_t(mç Ÿ]_ú7×~È=ã¯Â
+endstream endobj 1226 0 obj <</Contents 1227 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1227 0 obj <</Filter/FlateDecode/Length 1466>>stream
+H‰ÌWko›HýýWý„«exÙTÚŽÃvY¹ŽkHwWÍjEñÄ¡kƒ;à¤Qšÿ¾wxlÀŽû–H<{Ïœ{ç\æÌ%ûã xõÆU`‘À+þ£
+$èyŸ²´X!+
+ÕÀ @Èj¿Ä°dMÇÉslÏu²¶ŸAÓeES¥²T‘5¨:© œÁÁ™· gv‰xSàÝ5á©bŽ°¨Y9¾¹OÏEÛ=ªJèT´¼Ï;ä•\I=jJjPIýT¼½¿½ßØw[¸}Ý’ ³À«u@0Û±eË Ë̸#5ë†ZY§ªl Mw»vJ7Š~ÕkxÒMÞ:2¾Í‹°aDKÕND¢ J'}ëĶ–z$íM¯/M§"ºª!ëYØ4¸-áã=CJÄKGУš„ŒêeИáp6oÉ|Ñ›0ÈrC­¢^ÀTs˜:Õ@©Ü·TµÄ©hú
+ŸË–þÜRC‘,¿ÆüÎçó,j”ä‰âMƵ^;º™±¥è˜±Ïk%iíÙ˜Ä07œ3gs9.¬•ÆO·ŽûXf.i ²}uò
+bbü6 ùÍæñ-ãÙÑr5×hw/ÇüeJf]çtØ9x˜¬Ð&ö—”E ’‘lI”åqñr;8Š£ó‚ñ‚¥‡½V8wYºY;)[‘œ×8(˜>;y,æbkéSÛTûÅÿV”%˲,„ìûXö{Köâ²³è)PQ÷&Ã)™Î.¼‹ÑŘØzöÄEˆðúõ/ðЈ8Ÿ[®
+Ujõd6q‡S¨RóiE¿ª©q˜¤]qk£³O˜K š6kF¾-†×‘R³ë£xÁ=Ü7Ä™ï\'ë¨óy%ölR…=,,ˆëµvd3ßbÍWTˆóß_^sÊ_oÙê#ru®‰›úé&yÊéé`¿ÝÞwžž£™HE&&›µ¨~ÀÝÙûѯbˆÁø?uÒ»˜ÿ+.tïBWÏàJE™=X¸ÛB;Œ‚›˜OÇo'Dt—u³Þò„¶†W¬ÇKS”¢ Virj¤RÙ_>Èó‹ïzšåmG ªpf5
+ÊÂV—ºöÎ~ÖDÊ.³¶ÿ 0
+endstream endobj 1228 0 obj <</Contents 1229 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1229 0 obj <</Filter/FlateDecode/Length 1220>>stream
+H‰¼WmoÛ6þû÷Q*JV$õbØÇV íÚl·"ÁV3¶”IJ³"õI½Ú–T' ¢
+ ‘Ô„‡Gp°ûrÙþ5¨À·]mðþÍÃ8K%âZZM£þÒ)f<…Pc¦æUÐœlÓ•²…0©%ó²‘AHÈÒæ îÏgãË×Õì*ž¨œ^EU´AÀW©½WÙÛgºˆÿI¦dð¸0C1}±œóùd~‰|o¥„ð
+Ññ ½ sÄ“Ur—®CÄÓ Înƒ4ŒóVÔ=?JdqM–>÷'ãKŸ.ãÝĉè
+EÊøç…WŽ&—³ImU=wV Ko¥$]¼&·2Át×!Z•Í•ÈN¥~äòr|Va~w{e¹ ³Š° ®ˆªœ¬DX.j»U9$v>§pègPŒº
+‰ØV}¯½©üØÃÎé ý.ˆ¶á¦Ç˜du>í!¨£² xd“¦,Zéþ4éP¯ûv"P¹¶©‘S¿&i”Gë`åߧQ ¸fâõØŸóüêj0‡õ'Bx`ºu»jô. ù°´jù¤Æ{ºù¡*‡¥Óã~u—õ-ÚZ∢hDéçáî©Æ¼¯sôÎÚOû[QÓˆ†äÝ >T•iø5\çUÙ5X•» Þy’~—90ëÐÃa'ïFÌ'6ÿ!òƒ;¼Ð©ˆëz†¦ÉNHÂ7¢„+Õ¾
+““O[sÝ0S)­i½L\JlÓî\„+x—¤÷Aº‰â›Ö&ºÒ0Ÿ]¶ êd¨tí±Gl‚,SêXi° ó0ÍZÌƽ;AkÒ‘‡ÚET^ƒgB¯‡÷á¢0í“زL"òoS§ü?àúËJ«¤z\ÂÞÜ›­ÅV!¿L%-r`›‚'wÇô1íñÜð#ŸÓ‡N-ýèÛw‚zÔößôK½l¨£M³};ï¸|î¶4àÎ?Šê®ðâ½s܉ßmMû™È÷nàžŽõ¤†5 ÓÓŽEmÙ«êXUžžëП£Syþ`
+endstream endobj 1230 0 obj <</Contents 1231 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1231 0 obj <</Filter/FlateDecode/Length 1018>>stream
+H‰ÄWínÛ6}‚½ÃýI#+êÓ*°ŽÍ\[•ÙnA2 ‚¥dl)•ÔuAwII¶"K†»¹h„u?νçòˆ¹â «ßâ^¿]ëp_ÂkNÿпûây–ØÏ–Aô‰n‚íÇõ\à;@ ñ¿”m<ˆ®SøÌ 1\°íÓÆ1 Æ×¾r`>iÝǠĪÓ
+&h¶çÊ þç¡×/¢ÖuŠ¨)ÃìŸ*ÉJaQî#
+~R&¥ÅxÚC°Ž0Öú«Q‹zßA‡ZÓן­;ÒãC|¦ëo‚?‡4Ƈx‹TVå5Fí: }.ŽôÂç×Þg¹¸zÔ†ü:`Ð ÑwB¶Vƒ²‹²8ªòâ±¥°?3íÑhYÓš£–qšoP`¡ì•´éŽ£²|‚ÎLøU²SsøÜÒüUšrèÖöã=Êš Öcí\¶”ë8KÓYß|¾¼¯QšBR8?\Ü &u>,E}|’º™ATD»¤J
+ü1ÚŠý&JxÒhø8r];ÿ¶ö²7³º¾Zµgð ÉïÇ(¹àýKücð¯
+endstream endobj 1232 0 obj <</Contents 1233 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1233 0 obj <</Filter/FlateDecode/Length 1319>>stream
+H‰ÌWkoÛ6ýýý$+’zØ×nâÚì¶ 6ÕfZ®åZJÛ Ëß%E=ü¬×f@ÀhòÜÃËs/_põÿú-<;›ºð¶€g‚þåqƒã‰cÏ'Æw7r9ø Â8ñ,°Å{½‚šÄu)1†àø1áNžƒ•ˆéP/H|î׃€Qâu g@YDh
+Ã7‰¶8 w‚(¡D&H=Zæ·gËŸmGzW?³Ck<V§Ë|âécãðI=¥í0kmûV±{„ÔóITK.vÈ-h8Qï0'ÇkRY¾›r OÏSO%0&HE*I-dªF T=YKÏÄgU|•uò]îEàDŠ¾ 'ž·U‡÷º®ŒòJ(GÆSŸ0ñ¬Iï…ó2Ÿg7wùñVeò¥”Ë™0é÷ÆÎxr!.ú#'ùC$çÓáÅ9<þ |Õh”„1cU>T$W‘!5‰Ï›$vÈÕK¶Èm,rxòC&h'B¶cm˜ÑE¿'Ô'ɨ'’ z¢É(y™œ‹Þä0ýdðz’œ ù ÌÖtå³´T2ŸÈEZÊ9 Ò2#¥Ÿ8C5oC[±®I+qO“W¯“ó~rTåW¬Öy™ÏòÅ0)°Ðq’
+IOøz84¢Ü›Y÷OAwƒ.éN¼N‘ÚÈÆ·š Í7mèjÆ ñ[ԆؑO1•öQüd¡ù¼«"é6hþOÅ4aÛMj˜L;í ;f {­Þ9 ÍÃxân%q¶‡Í¢þd(†ýÞh(.ñrx/g¥™ .Ç | Jå7x±JE@IPµý¹¢5ž$S-2< À·ò•BJêÆ ^G¸Ò1Kë”Í;ÛÂúﲆ àç‡t9OË|}7ù^ LÏSh ÕØY‚c0¼lû® œšh­ru1ì;EsZ§Þ/‹N‘Ý)7ÎvïhVëÍ!ºLñBõ¡ÌA.Ó7 £þŠÛÕ*_—› ø °Ñ’šÂþO’™®ä,»Éf"×ÐÃ[Ùo*¨ÝÝžRÿ‘ˆ°ZI9ºÜÿ³[®[B’Øcä§,¿-@6™E]‘P¾\Ü=…e^BºZ-²Ùõ#öF:Å*ìF5<ºPÝÚ4ã³Þùt
+½¢ÈŠ2]Τ¾_H#øâ]zýh±€7šv!—%d7P¾3¥§<¯<”’m“®=Ëd¯«ý÷—Jqý[Æx0ËÔW!KÅO+Ý`ÖǶU”ržÍ4è½Ýj ¿Ô[|\{?Sâ3`hOÒ%è;ÀDʘÞlÙÂ/ÈÑW‡ Í §”¸Í¯2 ö÷©\ÆSÀb8™Òhû‚Ã) ¶¹ãúbÁJ©^°^šk 6¤ŽXýuË¢ZW‡–j§8ô—GñçZÈ÷ÜRõH+¾NÏU¨³|9ÏŒ°÷]¹ÞÒ™µ=pŸÏ:äÌŠ6Zy2ÌÃZ³ï¾( ë¼ÙŽWêz³ýÖ¬õfæy„Â^V]™mõï³i®â˜[Ó¿"§#,ºNí~Çf`b#ÞØ ‰þ¶[§¨ÍüÖ[l©^¹£Æ ÛÖ¿
+endstream endobj 1234 0 obj <</Contents 1235 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1235 0 obj <</Filter/FlateDecode/Length 1108>>stream
+H‰ÌWms›Fþ+û2å½ð–™~%ìQëH
+º´õ$#a‡Ž .´Wÿ½{¼, 캮yFàcwï¹}žÝE'Ìò/»‚×gK®rx-éo&P—¸îÏ ï#¦kr°lb;žò4Ðå省=ˆiRrÜ%ÌqÀ°<¯AóårZ:øþ
+ „Nǹߙû-ªÊð±õ£iãna\ðªC»æ®S7×ùBbΤ~Ÿ˜#m¸¦åIjÌäð lb­õµÏð3o½L郭²œvu—¬üv]v¯é]c?‹4»ݵh‡é¯’©§Ì«¶¦œWÃ]¼ož<î£Ø§ªLÔ®Ã÷Þ*ª©#<í°=ÿ¯L¼\‡žÎNçÁÛ‘*LÈíòÔÀ?÷ßú39
+.P–ó±?yøßp·~Ál%¨àëj¤É,LòKl“Ód×cîÛÍQy¼ƒû…†Ú ˆ¯1׌6挴fÔõŽ6õ’öÜ?,JãðP×ÿ0
+endstream endobj 1236 0 obj <</Contents 1237 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1528 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1237 0 obj <</Filter/FlateDecode/Length 1141>>stream
+H‰ÌWÙnÛFý‚þÃ}$sÂîúàH¬ÁÂiºqQ°m0É”bÒŽÿ½wÈá"’Úl5°ü êræÜ3w;ã·ôâ/»ƒ×W î6ðšÓ?u ÀoÑîÏ3MÐ<|6Ñ]Ý
+|!}¾k¼Z1]é–‹íðZ8v#Ïn¢ÐqP¡{”XöîCžð¡çsöœÊrÐZºû P¦RC±À¤âÛ€_KQ™‚ÞáFQ©£0]ب¥þÁÞ&瘞à$ƒ~òÑ‹í–<ºÖ;ºc±2âí9=Bïv#p*7ºy£ö<™ºAjGÖÓ¼ «*ƒz='¢Ú«\RÇ#t_2ë\bïÌe«>(Æ•ê(³)0¬(•2ûç‹øŽT*™j)ñ§  eå*¢RE‡9¾.Ö­£PX7PñÍš¬Kš¬¤Y°cvÝÀ6Ð\qPlƒ˜f— ºã1å‚1Ä+-HnÓì>Ì‘ÏÂdseøQϪæF—×Ñú-s|cyŽÂßÏ|Ø!T³¹¿ð'#îÃdæiö߸Uᇣױ2Ì%ÔÀ,ጓ€˜Å²žeé—x­Æa~ÚËEÍâÍÒ¾µS-(ÔìÊ5-Žž)(–fITù«XŽ&Ú8½ã$HVñR t¢p\<`º
+×è·65¾KRì–^PÛûûáL?‰Ò×U
+?㔯Tî™”;«ñ}P"¥ùÛÁ{ñKºrøþ`
+endstream endobj 1238 0 obj <</Contents 1239 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1239 0 obj <</Filter/FlateDecode/Length 1018>>stream
+H‰ìWÛnÛ8ý‚þÃ<JEÅ’º«À>8
+h‘Ú®Ììn ­­.)•Ý½ È¿ï¢,Ù–4yXûAôh.‡g83ô‘
+íK Œ‘m78©ã†`…rË|‡¸î6T¸G
+yUV,¯óê$›/¾U9ÿ{•K”/! ckœŽÄ(Yü7Á‡“d4„~’ô¨°ˆ–kk@ÿæ˜(LR
+¢u½ÆRCA¾©¶ÀH賺-\ÊF„S
+!ŒÆ²tgïý¶QÔÍVvÅFw:F3 z3«gv»Á'|ÒiíßÕ1ØQb%ß¾o(®­ö Ķÿ†¾¿u
+endstream endobj 1240 0 obj <</Contents 1241 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1241 0 obj <</Filter/FlateDecode/Length 1328>>stream
+H‰ÔWÛrÛ6ý‚þÃŽŸÈLȼ33}PdÖeëHŠ·ñÄŽ"Á¶R™tHöâqüï]àE$u±ãN[g&€@àìÙ]ìb÷ £ø—^Á«“™W¼¢äWÐK\÷õ °mМۦnø†Ž«»^à½Tú©8Aä Ý0ˆt–¯›žšè–›— „tB
+ŸÁ²uÃ×$º ÄÐ-ˆéëÄ…”ÁÏúA \Ï èŸ]z&ßí@ðû dÒb«ÄT° -øI,è*Q\(*qSÕˆbðuÂgŽú ý“}WÑõì@w\É×ÚB•ÓìçVw·°&MÑ@w̘z°Ã½] Ç)Åö…Ú‘d–^ rž&…c8ÒЊe’Ž~QüRˆ<ƒoWïƒb¨ž2™pnn³à>2î¾Tu”ŒOVI *±´¨]:Ý€)~.ö­Ùœ¯f Š»aÖ^—4Í–_ ËöA󹊸–nÛ}QQ(cºâFtb¡-A9^¥l‘Gñe’ÞÌsäFÓyœ]²4
+3˜Fƒ‰6™Žéx8>Õ¢p¯_ ÷"}ZRöS¹‡èVK-Šs–ÎÝô`Ò»[†'œÀS†ÓˆFÃÁiDÏau'iùžOB8Æw]e2 gáhBrËwÌ×ð
+!»ž¯×ð‘aгŒÅ9¬.!¿fB
+ï,Ñ)(½ù“år-Šsí€ß.¯¢(”“U&'Ëå ‹19Ê¥Ž%/ xJu\ADBîNQ5nŒòø—½É¤Çc2ŒÅ£ÝÖ„èw—fº<Ÿl¿Jÿ¤7P
+Â"8·8Úú(| !½RýÖâÐõƒûàj·Gv·LFzÕE[º·!êíJrµ@­.¡A-°I«Kø—™C›…‹oºoÎW¶ jUÛU¿xÅöz¨VB|lÁ´=T÷qUºqÝò™†¹Ë6˜kòs‡[ä5cÃqüçÿ¢ÎnñJ°â`Háo
+endstream endobj 1242 0 obj <</Contents 1243 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1243 0 obj <</Filter/FlateDecode/Length 1100>>stream
+H‰äWÛrÛ6ý‚üÃ>’!@ð–™>ÈëaÇ‘n›±;Öf\¶2éHr“Œ£ï¼Š¢ì¸RgÜÔ~.Ξ=»Ø…Ž˜êq ¯N"®—ðJÐ_M  ÞãºG|Ÿs0||挘žiíÇõ]7 .þP;h¹ƒ˜&µ@\‚åæº`Ø>±8_ˆ(TÀâÄäà0J8P“X (óu`‘ÀOÁ±Ø ‚À
+×O¦âã6=&m$¢åüÎ Ÿ"Bl2ÍNå§? D§ò€ M§ŽÆtƒj¦\§òÉÖ?H²okº.÷‰í”|­T%Í~nj»í;J;£”¢…n³2â? Bïv#q*7&¿Ð·<qÓ"µ#ûŸy‘v)´f1¶åDŠWGÈÃw;bn“\{wr[µw®Y'º«M§2½Ì&\åÍ‚¿äg¢L[趶”ižN- %åÛ9¥®¯*žèÀf” «iÒÝ,"­hbyÍ’yK^ËT²†Fé„N4s*ÕM‹{`x’¦ ŽE8ï@ÃP'ʃja¶Fjíå^%$r/Ë3¾ÁKú¢¾òuv;O³?Ãì}¾¸‰W(tðéò÷8»NfÉò6Ï0Þׯ¿ƒ(x{Œ‡Ü+0J\Ÿ±B¿†÷¹·‹|•_æó0XbÂÐH€i½h ól§Y²
+É8Ü—Ì0ß³$Klž0™Šp2œu$4J³JHiK©røQåpݤt£TöË­LÓl0Lél"&ÃÉ©‘ÊøýVY6ÚÞC8‚ôÊèAÆhD}»6ÎB§¡xéu–ãÑ,ôï¦ì‚ØÈÔ,ˆTñÝÄÙU¼ÊŸñgSåKU}%ÐCs–|¸K–«äª²y2Ë „vœ5ËüVÚÅóº\¿¨›Xž]T’”µL=SûÒ*e£´iJa;šáØå7X¨av•^J9:r}]H=0]€ÇuoŠk©VgY¦P= ß“yþ[<Gwõ"¶h“+MKŠJTE±Xoï—ͤ"U¼ý·Å^¤+Tgž®>Ò.ñk·“<"t?ľesÔÍ@;y¶ÚÈFßØê'eËèï'å¦'tÃn[ ~Á8Âþ'›ËÅ‹s¤"q`Þ‡š§-;Æv¡P»_@¥|§ó;Y¸O¶ô ˆöP“ÿ
+endstream endobj 1244 0 obj <</Contents 1245 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1245 0 obj <</Filter/FlateDecode/Length 1510>>stream
+H‰¼WÛr›Hý‚ý‡~W 7‰Tíƒ,/[²MÄdwSÎÖ–Æ
+) œ9qyõï;3\„¸Hò%+?€çrúôéžžæƒ&þèÞž,Rx‹Ñ? À·l|¨:Ži‚â°wSWµ¡f€e«öÀ
+)jè–¾EGºêìƒA÷›á8¥Íü,·,™š¡V†¬çYáV!´dèFËO”aidà¼Blk©w-çò@ò}]ÝRM6îù“ððQÙ’Rþ%1ÈȘ¢ft ¦lZ¬[’¦DnèÛ¨4õœ¦`§Û¥ šaArG5° Õ4gCQD²k  LÈ31vqz@@Ò”Ó
+²fb>iì@N¹ãäE¿R°®1Ã;.ÕŒrŽÅœá»w¿Bà~øè^Ž]x{‘:pt=Õ÷Z‚;šdÉ,YznÊdg‹$
+/SoÅ0f3ULn#~,uÝ<†øQ²OG§ŠÒpE2B›µáhÎ ”ç&ÎsÅ÷Ï|…ÇÚ‹oº
+¹^-û³¿ áEY/¦‡-öeqúÎÖô°ÝÉßDx©üåŠÊ‰f±¬ÒU,sFâ Ž( ·÷Þñµ³ ñZå³/ ï)ù¶&ñŒLÂBÙé»'tÁÿ¿ e1ÚŸI‡ =1gú²~:šDi–Üzó%¹Hæä£Û>yû¹v!¼nÖ?év=_&7ár|©TƒO»iëû¥J·cr÷lôÂûvJî»5ÙÛåzuÃêôÑ÷mkçϬ48ZœpëgabÆémÕëWjz ž_å[-"oüvgXëˆ ¢ûv/Ö¼ÖÚÄæKµØ…SÂ>˜ØÇ’ Y$o–$ÿ¦™%kvmÇ ˆb¸¡I8Ÿ…i+vÖ€|þ¥ùiÓaãeßývðÄo½êƒdÅI·«xí<‡Z×hùâÙšÄQ* îÚîË¿=NìÅÓmç©Ü·Ÿ—Ýá-ŸN-Ì!Ää;܇˵i3WŽjVR™ÛÓðöqohÛ¯­Ò¹
+…¤%J¿¬X·zœÅneÚØ­xñ<šñ:Qx|„Ç`å…Ù¦ÃËŠ=`¯:/%sέvIp™*uZJ)6–jÍ›õŠW°V™*tí.SEm9×¼"e÷lUIV ê·qÍ÷êN½ØyÓy€#ÿb½Ì"^±Fó9eÚW.ðZso:[–öÏ&Øåº8ßüwŽYº^QW©æj“O“,™%ËjŽ5VYŤôªì'÷ëÇÁ=7-/úM+ ÕÖ*x²ZÒ•Yv&Y/ÿ¿³ ðâ˜{ëI»ç+A²¦3¢TÏp ƒ­å´:;ÍXÞníoÉ6 òZò²Êtò¢4/n©(v.†ÿ
+endstream endobj 1246 0 obj <</Contents 1247 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1247 0 obj <</Filter/FlateDecode/Length 1011>>stream
+H‰ÔWmoÛ6þ+÷‘**–o’¬ýàØZá!U‹YW¤Ã $nàÁ‘2Y]¤ùï#)êÅ–ådk’¡Ê1Ôñžçž»ãÁGˆù+.áÕÛ„Àå^Iú;
+ò³Úá0ÜP­ÃdD8x>öƒ0
+³Àõ«P"¨ø8oB¥ô@¨Ú%¯Cý¥Š;)@ø„ê#渽OõÊëˆ{¾åÅÿuÔæ¸ú&j·uà±Ö;eXF­\Ãh?5 Ÿœ’ 7@ÞCÑ><[;ˆ3Ñѵ?ªAU¯ÂisHFÃ9ìtÓâo
+U½ò ½\uœ<Hî—‡äÞ[¶T{%\Ù[ÂöÐým¶[Éѯ2:ITuêù™È>ÖõÛ¿Üwaö ˆŸÒÕúKñ̇šèSÏû€ß;%ú—‡mŽ}c« cx«ˆ P鎌;Û†u¿íŒ‹ý=ùàh5;<7ó÷ÿÜÁWiv‘–yqNº}wÓýÃݾÏ[ßwù>×Ǽ|Û‹vßmZ]¾Qbâ<§cR`MOу½<ÿEü8 vŽÜ;•N¯Uï £'œê·×?
+endstream endobj 1248 0 obj <</Contents 1249 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1249 0 obj <</Filter/FlateDecode/Length 1032>>stream
+H‰ÌW[oÛ6þ+çQ**–7IV=8¶Vhpb×f¶mQ±¨p¬LV·©ÿûHŠºD¾Äntöƒdêð;¿s“Ï`ýÍoàÍ»†›¼ä âZ®÷PpN ï9E¸‡¸òüÀq Øâ«ÞAÌ„1a ®€õõ}pÜ
+}ê•›‚“ZÁ:?;ŸÍ’ÕJ²º¼›ÇEoßþ³ðýex1áAo&È(UBˆWò¨p—gEv•-¢p%"ŸY
+g:hÝXµ½H«DCs“ÎÇÐÃ&˜ƒi$¢A‰f1O¾&W…üA×&¡YïB¨M8 äÁ<*KbÎt*•æ·ñRfù=ؾG­*ôߟŒüHpIy˜,ŠxÚ¥«"»Žæ‹ä<›'—*K»6󊳎§æ¼o·:X'èzÙs›C´è;3\çìÏʇV!tÒ"üS„3™³O&ÇÉY:¼zÖÇ8mù“ÍZãFéF0 lš¬î¤ÉÁ 'áú¼0Öœ÷vßNEŸ² Wvµã²ñ¿l®8t»qÀIY‰=üT6únKh—„®¶5%[r׎ë¶vT;ÞÒÓ›e&ß_éÇe;ÞÓˆ}O#®Ó­ÓˆE/¥y1Šï“<Z^gùm\跛ǽ´Í½bÝtä}0&¥T'®Ùgwêa¼P§
+꽆ïûb‡Þƒø›jÚ '³ÙZvªÜbpjFâñZò´H¯âEZÜÓXRZÉŸÝ¢;LïPÁ÷¤Üÿ“ú{Þø{!¶§Í”Ú6Ͷ¿_ãtñ-OÆ8íôû¡hV”~u=ŸrøÿûÿŠtkó…† áÒ™”òºøvŽ@9£_þ…³Ñjÿà“Yÿ`
+endstream endobj 1250 0 obj <</Contents 1251 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1251 0 obj <</Filter/FlateDecode/Length 957>>stream
+H‰äW[›Fþ+ç¢0™`"õaצ‘«MÌlÛ(©"ä¥+"Ǹ@ÒFÛýï=3\íÍ¥Q6QØØù|ó3ãsÔü×ðèILẄGŠ½¢À@ý‰ö )Á ðYrB'T€ëÏ|PoÀ[½6¬‰ ”2j bB¸ïƒãDHt¾+TñÜ„
+þ! •àqF$0JÆ'„yP¤ðlá\íAÁÄ&¯£ŸèÔ߇ð¸öÑEPã{Q×T1涷\LßüZˆÍ,Ä/-›y·fQmgúɵÿP¿h°Ï:¸¾ ˆë5xÅ ¨æql&Ü <ÃÓP1Èîò>;ã$¸ƒ L}ºŒÎÓ–¡ò¥}PIRAºBîçUÑ9܆hKpï ˆ”I[ľ@o£÷ÂOlߊ"Ý]îiÚ&ྦྷº}…íZ¥~Èò-ØLXȨl›Na…¯ß&M´µLÁÌï»ÞÀä5LƒŽ{(#~Ày‹“
+9g¢—LÁDÊ1T¸A
+ÑæÁøí==ïÁÏI¶y[¤á?UºÕÖVg‹³È‰VKµœ./œðw.âùrÿ¤»Ù¿XÇÿëjŠêaÊÞÖ—Ñ´@Æf±ZF€ëŸ†³ËUøÑ9¾ÔošŸzn ®òÝ7ÌÊ`Ä R=¶qøìÒì»æÕbWäU¾Î7ó°ì6êŒÎ4ßVI¶M èt¯½Êb†V”nζÖ`ë5²ßôekÔî3v:]F
+güì¢Á„"ytÛ6DlÛ†ãã h‚™kÊ<Œj2âe¤Ø:Ût1KUz•U‘Tæ í"†
+]¤¯Óu5TèS¡Ç´¾½wz=øÂ8œË®‹__¨÷[úëóPVi¹C6ÒïGˆ:Ä÷#Hmù£Â4‡~©½ýs—VÇvÊP§n›óR{0éÔýìºgwKX¯>uÞÏ¡xpÄ ¤–4?†ì{=#·£}¿ðçÙ
+endstream endobj 1252 0 obj <</Contents 1253 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1253 0 obj <</Filter/FlateDecode/Length 985>>stream
+H‰ÌWÛr›Hý‚üC?B*L˜ R•[f]de‰ˆQ.kmm©dì"ë€äRåÕ¿ï wq‘½‰“µý0Ô¸çœÃéîi|ÌAÏ“+x~êëp•ÂsŽÿÒ¿ûdÛŒf‹gF>Ñ)&2-ÛþPù‡ü.O ]ÇøèËÍ°e"ø‡ûn~Àáð (C:“`Ä
+Hy@µq ˜]ùçÝ3È;»×#‚U\:2¤"oõ¢*æ¥UxÝ€FNx+T éhw°“hØ6$*µhŽMCYx\4ùѬÔ9lу÷úˆkÝKÈuüÖõÓIZéÎ-¸'^h¯báÈ…>6IøAò%Üé,”µ[ÄN—.w§G3—¿÷ø‡`›•ò÷ž#Z^{¦yKÇÏë*¾É„½›k‘mf +þ)\×c_à,¸ÌFåµó}Xå L©±D¹Ô‘|—ùÊw™×^¾«#‡Æϸè½6]+¾û‡\° ÿ¸ùÅñåÙçë,ÜnÒLžZ?‘žyA²rÖêZ…Åoƒ]·X\7mÑŒí:…ììÔý\¬Ï†«¼Éfµ†Ž¶×°UoÝÕ±¢W‡Í±ù½±ƒ¦%×O6e+KíDìe¨wèP[Röß>~ùíñ½_2?Uèÿ9´‹¼Ç5µågc'y¥Ì{LëºnZä‡ÇuwÞü”qÝý/æuë:¿cLw¯mñÄ¿
+endstream endobj 1254 0 obj <</Contents 1255 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1255 0 obj <</Filter/FlateDecode/Length 1231>>stream
+H‰ìWms›Fþý;ùC8^EfúA–©‡Ž,éÜ6µ:"mRÀI<Žÿ{÷/²Õ¦™|¨ô8îž}nŸ½Ý嘂&þé¼:kp•Á+JþÔ€
+zY—À?h¥œÇÙÝrɲìòn]"£,‡j^uÍ|ê†cŸ¾…è*NP#­#Ñ·(
+'¶1C
+fÞÜ›Œ<Hnstw¸F‡›®0Al ]ñ„[ëŽh3¥Q-Ãu”ߟD!RÉð1+ÙF»êPÚGm¢â"½ˆË­Ë%PUµùÓ®È-ñ«% ñwõùš+>÷Þœ ª iîÿÎ/ß„Ÿã$¹<»[óÝfùœ¥£åâ–,=÷òB†éOÂh÷P„ ²\ŠÑRJÈÏN}ÀÅëQWðÁ2¼Ã#$ ©
+¼üW?Î3-"5£—qWÀÌ;õçt6ä!¸í‘wr>óÚqуñ>]-þ£Oï­ð»Â’†<WâÇ;†åäûõç\§\1ÞI§Ýa¼ÉS·eî%¯HY
+Ùî>®‹ lº’áj•b), ¸¤<…ûØ/“xmZ:×âç¥qÒ´F`Š¢×Q¾Ùu¸^Ã;†§Ÿe,Î!º„üšü‹À(¾¤þ¬È#‚díûM!6ZÈXy/R±¥/ª†‡gNÅ5I+xú‚ª9ÞJJ±[ciÕ'Õ0˜ÔÜzˆ>|åÓ±´W ,Êÿ‹€"œ®“wáz6)8z;+·Ç{ µÏ×ä]¸MêÕèÛ'öÚNÂß
+endstream endobj 1256 0 obj <</Contents 1257 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1529 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1257 0 obj <</Filter/FlateDecode/Length 1027>>stream
+H‰ìWÛnÛFý•y\åfo$Å
+犼&Âq¹G/oÞÈTH=ߡ‡e¶{6,w?,O´Þ9†å÷]÷Ã?5 S¯=$Å$m€¼Ç¡žÕ
+‘"Ü1bÔ AHù‘pd+ÏA¿<wÚçŠÈs' Ó©¨ð¨2ŠÄöùÃܬÉlÌCš­Áá’`FU­[3|]Ú­’جn(å-Úª[š¢~&Õ
+endstream endobj 1258 0 obj <</Contents 1259 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1259 0 obj <</Filter/FlateDecode/Length 1065>>stream
+H‰ÌWm“›6þ+û2EA/€ÉL?ø0ã¡sg;XIš¹t:ôLnÈ8æ‚IÚÌÕÿ½’`cû7-þ€,V»öÙ}Wlõ+îáùxnÃýžsü» ø{1?@¾ÏX¾3‚ìMÁq‘ëùð`€É?¨X¯@¶)ð; D<,ÇG” ã!ŸGjAÈáP†l.Áˆ¶%€É
+®øáXùµäÈ
+¯« dbCà€w†‰]ƒ˜6l9åÈ1ã¿H°/¸ó‘ãj¼ôT ó06µÜñ]•;K§bË»CZï˜ ¿'Âõñ0ÒOÆfï̽H̦¨ ä|[éÃщ6(µ÷‚ÈBÔA<ÿÜn•Þ­AǦgÌf’]â ¦h£ðEÞSI_a:ÆZ²|&¦†È(«I·!•Ý2Mäì:U¤e]Ã$L…Ž¸uBlÊ` äFmp)b¬Ó–7W7s&0
+­8Gsy4À,žáèUªv°ÁÂS‘ê‘Z%çø35|ö]—ö®
+çŠß´ÖE#=È¿G ® Žx ¯#þV?.Òé(xáÁ1øÛY¨çÕSQQ]&fØ;r‰P¾8œ««l?&«ERæÅW0=—5ÿ×ôï0àx™ÿ‘,ƒ‰ÕL> ìöúS`ó™çd)þúŒH¼]ªÿá[ Ðá=ü•‡“¹TîSìŸ XÊûaœ­Ö]L†wO–n˜ã2¼~©HÏvtYÖ±z“t„Lû !nâòB\èWâF0~„W€ºRL‰®׌(pÍÇ^G~7‰OÖà^‰k5ø€®e÷«\¼žžáJÖzÔ×ó«oïñP©g< jù<àÎÒè7ÃìÍ`|–ŠÐfã|˜z©šîÉäþÑ@
+endstream endobj 1260 0 obj <</Contents 1261 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1261 0 obj <</Filter/FlateDecode/Length 955>>stream
+H‰ÌV]oÛ6ýû÷Q*"–õY`¶C´[•ØvE2 j¢¦.©•ÔvEàÿ>’¢,ËVŒ¬ñ¶&"˜{ï9<÷ò0SXýV×ðôyŠáº†§œü‰
+ˆ!Jß#ët0ع0÷LÑÈý1YÃÕB”’=9(Aâ‡GèíÖèô¹éq,»k»ÈQm£ðU~sÙ¾ÊtZ.Ve&¡†PÔ階!Vq7y&wëÔlØ}×5M»¥©ØÙ^'¦N
+endstream endobj 1262 0 obj <</Contents 1263 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1263 0 obj <</Filter/FlateDecode/Length 925>>stream
+H‰ÔW]o›Hý+÷q¨–é|¦RB+ï&6…éG”V+”°•k·ØÙn”Íß™a0Øà6JÜHk?0î½çÌ=—ƒs$˜ouÏ_g®Vð\Ò? P©ýC!À ÕZ0LF„ƒçc?_
+¾Ëlbb ߀ LøŒb”`΀²¦>T¼‡É-*ª°©ëêüÞ§ÇtŒ®ÈÚßy)3UÛ¡ y ¨¾rxWo`‡"Å>"‡úˆ9.EDïS½òœOòwMö͆n Bìù–/ßCUÓæfÒ½Ð7½sm+:Õ=ÖV§ ‡?h†*½F×i`ˆøèôáxä= E×ðl£ç¬¢eÔ€á´íŒÞ9â¯
+B
+endstream endobj 1264 0 obj <</Contents 1265 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1265 0 obj <</Filter/FlateDecode/Length 1025>>stream
+H‰ÌW]s›Fý+÷2aò|f¦2bRZÇR`6“t2T". I=®þ{ï. 0B5V2µÀ»wï={ÎýÀgtù[^Á³±W<ãô½ø\w‰ç™&h¾›Ñ]eÛñà7 €Ê?Ê´=At2à+`.14Ë#ÌDã5(Cy àð ˜Itlƒ¨N˜Ôp µ¡Lá7ÈáŒ?€‚Ž¥_M¼é.ð¯»ð a#<2¯Á÷¶‰Écô­RC±À¤âÉàu³@Tª x§¨ÔV U£Š.Ö©x³Ô?ø/ì«-\Çôˆe·xÙ¨æ46yÜòlÉÖR1ðn½wjï
+u ‹˜R6_Ä3ò•ª¥Tâ%+rP)SQ³]‡·¥ÝušˆÕ*™F¯z Óéª3ÓÍWÔÁfÄ4§ªB^Æ°›C%”!—sPâèµïk~ükzWEé§ÏiUÃóç?A¼º .ü
+endstream endobj 1266 0 obj <</Contents 1267 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1267 0 obj <</Filter/FlateDecode/Length 1058>>stream
+H‰ÌWmoÛ6þý÷Q**–/z-°Ž­Ûµ™vE= šMg*bÉ•ä¾,Øï‘’ßÇÝ2/› X$u|î¹ãÝñ|&šoy /ÏÇ®+x)Ù¯È9®‡$Š\œÇ.'4¤<ŸøA€\€¶ü`v°v¡” S!áA
+ÈwÃŽÀ ˜„5ÅcR‹4Ÿé_52Åve}Îÿq]»{öß+l“gOXÚâ~ïØ6}‹mŸ@=#¦;† ÑÏ°×ØZ8Ìmn`qÞ»‚±ÉÅÛ?2‡î f%ù¼Ài¹Hkt‰~ߨ…Ò£z
+ó,Ïê& õîèÁ&ÀeŒ„w–UD}3?PoµI­=­1Ú’3þ·u»‰Gæ›|¶²zåÔØöÓ‰ÙŒ¶dóLÍœ¢¼NóìÆʉnnAÕUÖ
+.
+ |Õ+XÛ¥&˜÷¸¬uåt¦SUU(Ä›³ÕÒS³2ÍÓe»ÿ“*uÒ0œ²õ+CubMžq\¹õëŽê Å-…^ücÒOtCçJ.;X‚@vΛ²öijø<é?fcr9Œ°‰>”óëý‹ôK¿Ì»ãóêÅúâ7
+endstream endobj 1268 0 obj <</Contents 1269 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1269 0 obj <</Filter/FlateDecode/Length 935>>stream
+H‰¬V[“›6þ+z„L¥ .¶yÄàxé×EÚíCÒé#\Z ^w·ýõ‘°em¤&mÇ0Òù.çéà9Vÿã;ð~I,°kÁ{Š³
+´=X%ë–¬xÂ: öŽD$¼K‚0ÿ ‹±ÆÅý¢¥Í\{Ër g\wŒ"H•RÝ4Er¬ºr›µaü©±ÆÓu¨ Mæ !‚Nn¦©Òº_h2]DÊš ¨—Áš«ò^ÝÓ4øÀÙ£®!«ª8¹=iëOE¬£}h*Õ‘(ÿf¢M ‰ë¢ÑÕ-¢ýÙº„ôƒµ!CB¹§˜4CÎ2‡áFÍ>+ë¸ÎE?º† kÛlÇHÇÛîÈÙ˜G&¦¤<¼ƒIv8”õNÁFÿ:°ó(SýN ¼PôæPvÆ‘‚”»:«*!wÎB1d¾¢±«&Ëe™ù¾\òæxPù”+eۆ炈À
+Åš=¯É2,þ#}`
+endstream endobj 1270 0 obj <</Contents 1271 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1271 0 obj <</Filter/FlateDecode/Length 1082>>stream
+H‰¬W]oÛ6ý+|”‡QÕ·­{eÅÕ`ÙªDwÚa`,ÚÕ K)E75Šý÷]ÊQÓÍÖ"¨{Ï9¼ç^Rdt|ƒ^MsmZôŠ˜ÈDd ë#Ý÷ažK7F†\O÷†þ‘-ÒЀüÝe˜Ç Ý0L‘²Gº5"ìúºí@p´ˆäq—ô ÙŽn8ȳLÝA¦¡Û2­‘nzˆ3ô;ªÑ˜<’À.–OÆ‘ûçò,#mÿ ïý“ä€=0-ÍEŽ)môî° L t ÚÀô4k€MÍë¦|r’ߤطg¹CÇ×]ï¨×VH•2/këÒ]ßëj‡¥è¡»Öºiéþ•b
+Ø|wÛ®xyËxÊ›uY±x)Ù
+<¨΂1N)§[&„»»† VLw°V ÆŠq)8 جWPúårz_DÛ¾X„tM¥B ó âi~OÆð]ôìÓŽµýßQú
+¾…òÍíô$¥9€ˆæ–e쮢+V¨º.{†ªîìá…ùÇ*0¿¿
+¼‹LgÉ?Ø{:©òrSÓªÞ."eà•žJðšGÅí>ÝÏö®g¯fƒ ò,-×ÇÒ,g“ÙµšB;T[É^
+]|eoÛmSË Yù{wxRx6J'hY3þõŸK‚ÒlAáb†£?H4ÏãÅü%ºÀí/š»1¾hê‘c<Ýb¿=TyÁj§èj³«àËAž%q]€•ðé^¿þEóeÁéM¾žþmøW€
+endstream endobj 1272 0 obj <</Contents 1273 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1273 0 obj <</Filter/FlateDecode/Length 1323>>stream
+H‰ÄWÛnâHýþ¡”'{5îñã‘öOÄ*¼ÙK¼Zy ÉxdlÆ6™DÙüûV76ø!;Œlµ»OU:UÝ}î‚ÌÿÉ=¼¿œÊpŸÂ{Wù[ÜŽ÷ˆeé:H¾ë*‘{²F—tMËw ˆî¾BÉWYV4pg õˆjš Ñtœ<Áv§C¾Àvá+h:‘uèª
+ÑA‘‰¦‚¢öˆÒ…„ÂoÁ¹[q9®ÄÞä¸ßšî©lCÔ¬w›î±EE ÐöÔàv3@DE@?ÀD¥+¨¢¤2WØ›!þåþÂœ½Ùºkê1º¹¿ÚW™›í¾ñå†ÕåÜI9%tCÝ¡+*±ÐûÍ0œÂŒ¬{bÃ’.kdkÈøoV†‘-hšÙ0„Ò+Œ˜Ö r[’Þ ]Š¦à8,»ªAtž6 Ø“²ô%¢!¤ì%ˆ#M@Fõ"é2Lð3ŸRŸ¦¸6Ô]Ös7Õ›Ü;µËUˆi©j᧬é=z,dºÑõz•$ô뚦KýÙlø³'éã:\aHçïxIÈ )DÑî‹öù£8«¯q©„€{ÃP‹£¼ã³:.SYÔÃxægHÙ8™ÐŒFìÕI‚8 ²'øðág˜Ú7¿Ú£ ϨLÅÎÈ
+
+ð:ˆToú;úŸax¶þb *ÅÜÁdèý«¡û÷QŒû«(±V¹ ¦&ó"}{Ê•óVè‡ðòO³ïÙ<r¤Ä‹ÍÒ96ÎK¯³Õ(ä"M¡•…Rô5™hírçQ¿–ãññ´°©qQêªæŽ¹&[.ë›ú‰¨¼ö:þc°\/÷ðXóë<Ö:Ø)¨k@šúŽ0äqŸÚ^£¨w EÓõj'xh»þNŽ¶Xµ&^íe®ú…β#¸Ú ¢nZ¯–åɉº|­.ßÀUkaž†«*4*i‡®É­%™3µãñÝÿz¾8ܽŽ>{ðÓÁ^(÷iE["Í™^ç6¯w‡ ¤Å9þ íá)DW,dŒõÏbóoCäÚ>ˆ2t?) mH?ûaŸ(;Ö§x¶„`Ùgº`W4msE8•§¢o˜pò8Yò”Pºã ÌÚLiÆ*éìÖ×ážžÖÙÙEΌؗô ‹¥.,iŽŽ ›ÿˆ Úˆ¯èʦÃ?ÙC!dé{ÇQ2^ 1õDO„ñÇwº¶£ç^ÛW¬×”ÂC,~]=ÚÝ[bãøûÂó: oJW>×{â/Áì"H°ñ°cmnÓ
+endstream endobj 1274 0 obj <</Contents 1275 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1275 0 obj <</Filter/FlateDecode/Length 1110>>stream
+H‰ÄWÑn£FýÿÃUž *³ `VꃓÐÈUÖöÚ³Ûª¡ª¨=N¨lðNSEù÷Î `ÂmÒ¸[ù3÷œ{ñ%]þ’{xw3Óá>…wÿ®ºäÏûÈu Íå÷Ä@z_7Á²‘í¸Ð5( Ò?å\ì@ºŽM s0ûÈpÐ,™„/^€âÑÙPnð(|“ €m`D
+í+£íÅâÞ¡BÂ]‚¹ŽÊKù|^K<÷¶JÑk›:– Þ¿ÿ¼Ñ§Þt@½ëç¯8Öñ¶Qºaóp²E³ÜJžª&E¨¾.w/
+I´\’¶-»”[Z5(6uj0!ÀÌûøÉ]yÜfgÃ_Å#´žFÉxɃø=YßÔW}Æ?¶jTòé€y¦Y5†ÎMaÞ˜¥D<•¨ß›±M # –Ëp~&l.š—x#ðyª2Ûn6q’±E#>ŸÀ:ïö­Îá`²ß óéîj¹éÔüæ(
+÷7¾Òj7¸£Û$3ìò‹m8J‹óÑïÎdx;&ßÎúj†·Ï"ô4ï)cQ*:M<”ê/Ëë$‰³x¯v+¯â( ˆ%¼%ž»+í÷ò®C/}.Ù‰]”üÐ|×,ŠWã\î|t
+¶0Œm2ÓñÕøVó~ñ{ÔÍ8o9%ÏM×ÝÓ=ÿåX36^ÒWO»jIlUcpÊO«nô–DeÓ-ØâCðô:_ª:F3Èq?ª¯«QÕîšaPëòœÂÁs–NÎwÎ*ñ5–DÜ`p2áz»îd?–ƒ\~šÕóCÓ«­H¾ˆ!r#® Ô8œÕÛå??›µ•åôÁÄï½b„º€vš¤ßõ»NiåyJðäq¤ï÷*
+endstream endobj 1276 0 obj <</Contents 1277 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1530 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1277 0 obj <</Filter/FlateDecode/Length 1143>>stream
+H‰´VÝnâF}‚¼Ã§\ÙUgÖ¿`GêIÜÔUXðîV UåÂ@\›1iV«¼û~36`l›(M.°Æ3çœïïŒ/#0Ô?_À»›± ï"óoLˆæ¸îQßw >>;5<÷C;]¿ Ñh Gÿªfy‚†iC4Û£V· Äõ©íàæhA4Õ ‚/`;Ôp c™ÔÓ ¶¦åQ³œÁgHá2Ú“‚À
+—È'Ã迦<K¶_è»+8£1b릥¹à˜ò׆OÅÕM uÀDÓÍŽféÄÔ ¹nÊ'Wÿ+ú]Šý°•Ûu|êvJ½ö©Rf»6uÜõ;*w¤LEݵvè¦Eý#É@èÃ4gCc8½Áä6ݹ¯c‘n™hͶý‰loC⽎¤Òlwš}£ûÚ°­*¢ŽùM$·´CÙ@–KÕ6<Ê_&;„ë®&äC’¥ ›¶†Es6}eÀ_«}KËUÁ@µŸµ ¡hÕZÇ°ˆ'ƒ3 cSÇi<†Õ)ŒÛÆL^ƒÖ[ædÔ»$ØÇ,gœ¼Ÿ.“œÇ9‹¾®\\üAÿãû`Ô‹‚ëo
+̤]ß²dJ¢ŸŠ›&ó„Í~Vï ÓW ð/׌ð8]°êëR
+Óù¾özVùî4ˆ—y Šjg‰] Ž–EnÄ6”ƒWÕzX **AÔØû ƒaú½Û Y1QH„N  è> îãåþa°âL°4‡dù=+NJ_° _ÐT˜Ù¶ÄRãiœ'LÖ/yX£Û%9Œ”LnÆbYåÍ ]ZŒëQ×q¥,¼‘¥T"Xyçj@ õ9dίË1.Æ]œU/!6ÕABš&° ’€O9K…l:\uýîîeù;äYžM³åvãU–æq’2ŽñíÇj€Q“É"„x†g@lÏ5µMAZʯí\èí è€ÂBŒzýÞ Gƒhp5¸%ÁQУÎÉ™‹b¤ïK,¥4$¾•»´¶öIûœœU ô¤}n9ö¨_âŸGœg3ˆ-4Ok®æ`ľ ¼üÄÝ·OïàTš¦U@R"¶_o}½ ûJùà*Âï†q4
+û7{•°\W¥¾¡ífÄ挳tÊ.À²Õ7Бæ9˜ZÎâp†&•ä_•”«ßáiÛ½pç¤ã^Ø6„°`Ù‚Ç«ûd/%ÀMm¥í#£%Å?2bÄËî'!ö/7¼8êˆÏ„Ò•!Ê¿#VUPܬ+Í›!Ψd*ašt{»ë¬mtÍ°J{®[xq×½ÈÛù%«®I©}þï¥>åÊOÆùû.À
+endstream endobj 1278 0 obj <</Contents 1279 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1279 0 obj <</Filter/FlateDecode/Length 1181>>stream
+H‰´W[s›Fþúç:aÃr™éƒ$—Æ‘±½†N‡‘°CÆPëLêÿÞ³°HÜ$ÛŠ;z`Yv¿óï\v5e –¿ì^_ú*ÜäðšÑ?U À®q~LÇ0@qplhD«:˜±lÇvÈìs¹ƒŠDU©l ú˜h¶ ŠéÝÀÅ\æ{å—Á_ D5ÀÒ(1€ªD×€jcB-È"ø˜².q>RÇÀþéÓÓøŽ¨;¿•Mæ#¶L5Ƀò§?WD¦ò€@’©%i²B%•ÏS>2å?Øœì‡=]Ûpˆi ¾úªœæ0·r»éX¥vŠ¢njtªç„}Ü Ç©Í¨F ÷,ªNö†Ìó¬p S-é†Ú3Âe\±ˆm#õ>Jú¥lKË%®f£ ›ógÄ×ɦ”óAœ& S]BE:è*¬ðs¹î6
+ùlA™Ú!ꂦVÑ,ÙiV-ˆªcPÆÜQ,F§6Üû"Jrnÿ:Í`¡)4cC‘BœlâuXD&ñe›hažÇ7 .wa&E„Ãi0Š‹Œ¯D@®±
+
+%TÇÈ\ 
+€.ØŽ&}ïâ2Ése5™*K¸‹Š(S\~ÀœV€Wq^@½¶ò˜7›\yì7ŒÒçh]àÓ±%÷WæÎ}o1‡§B£¼Mtj™È’‹Ê¾i¹r}w>s!Ý(Lx ÿ6Ü¢wë›´{ÞÇw»;àT‚Ñ ‡€MÅľ®;-[«4B¹L¥p-m†…«Ü:.ܸ+\¾ÛnÓ¬8¢\0ê§\eÿ)Êù5v_:ꘃÒ!ƒ»CWº=RË@[3ÃpŽ¤ÕA»—§Q”Áh:T”g(4\•'rìl¡Næ–Ðç Þ«Ò-JмV5äF
+!D¸½ÿ$êùug ŸnµÐf1>·k½yó=øÊ’ïýΔ#rÞϳŵmC¾œeáõu¼¾ˆ3¬Lô-ä@†Å[è@Uê¨
+ežãÄ :UpŒ¼ ŒžNþ€|JöÍaÄò¾ÏÓ¿V?=êB¸ëA“ï·Dáyê×Ú£ãÔŸ¦úQ†»âSšÅy´Y^½Ÿç*WùóÚx»,ñHÅv³ß.‹¶Ó?5
+endstream endobj 1280 0 obj <</Contents 1281 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1281 0 obj <</Filter/FlateDecode/Length 1275>>stream
+H‰¬VÛnã6ý‚ý>JE©u±­ú°ÛÁh&Bû#S
+w%JKRNŒbÿ½C],Y6éb™æÌœ9sfFRäw²@o¯ï}T(ô6%úˆ 4‡ó—$Q„pÏQàù?DñÊ[­“5J+ä 7ýÔYÁÂó}¢4CáÆ Ök„ãÄ #¸¼CÎUzÿ±3¸JÑFž¡U@¼ß D‚GVH2ô;èCzw~±yò7(}>‡˜;Æc˜ôøú˜é=øvIàÄ("æ3D¿õžKÀ¶ŽKVNàbâø朘§Øý#ýÙ€ýõw%^¼ð†¨æelyœ¬:îð@ÅÌ{LÞIà%ß \ÛÃ?c?Úºg‘"?ôŽâÅøˆ¢ˆ]1BÙŒAÖÉÿPÛ™ôœðÚ];··¦ºAìE]ÙB´7ŸÌ”Oº±£Ì¯rIè
+Õ°Œçœípv­œ›ÅÖx=i¸n4‡²ÒÎÕÖ=£q ë+êñ<ÙæÖ)§cE/r:xõø
+JxÁB†´ä™ÁŠ•¦RÍ;ž‚ß+UKLì.zìU’-ÁÌ 5ñ¼Y–uTV¦
+¬ÚG•IÞô_.`MÔÉÔäàÁ8g÷ÕŠ»ø›÷£¢590£BÓ̤¬å1µdmcS±Š‚¼³¥ÁÆF^Å”¢âÖ8««Hãg®Ÿ€ÑŒñ½¡©žˆM[túe¤™>A n>±LO:ö}˜Ëö¼€
+C‚.
+ø¹Í4ôçÀÀÌip¡Ïf:HÖÐf$øB˜OÈ2Â$}Ä PÁªOˆm|jè ”–å ó£Õ²ŸŽQz+ˆÓ,M¬ƒ²71ú)™fK3ë˜Ô_ZÆE±¼o]”n,`EÁ䌅•¥Ý 6cfþ[½o óß
+3â±®1L$xäê ïZi@NÁ§cŸÿŸEý (©,˜ÆRdS÷¼"¹ŒŠ @ÏK¼ì™©ãÛ,çmy !±jC2 _™ÈxóĺM‹™†ƒ5YH®ؼ‡°~,Ó²¨áì©RݬPmÓÔR³í›H«¤ ßòæ{?Wh)Ý \i÷rÀÌ„Ž‹í›ÜÌúÓ ­¢/ØaýÄp÷ÚÒ¿ä:„ÊØîd3[…:ìB§ÖŒg\0e„tÔ’UÀݲãæßCº“Å$ÞaþóŠaXP0ÊéåÂZWÀTX@™ç° ²’ª¾j^b¬›‹=-9$g†•´‚Ζ
+Ãa;3·î‚ FE_xÕVø‘C'
+endstream endobj 1282 0 obj <</Contents 1283 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1283 0 obj <</Filter/FlateDecode/Length 1519>>stream
+H‰¬WÛnÛFý•}¤Š.ëDèƒí(†ŠDpd¦}ˆ‹bM®¤yQvI9FÑïÌò*ZTТðƒhjçÌÙ™3]GÄÒrGÞÜÞ[d§È›ÈþÓ"6‰¶ð>0ÃÐó áÙsL+°\âÏÍù"\(#™E_µ…ÝX˜–e»$Š‰˜ÎbA¨š®‡b,£û•6XFäq=ÓòÈܱMØ–é:ÄvÓžÉÉï$'×Ñ 
+ôÙÒíeàôoø5j›æðD<ÂÂ׃Ÿ#'æ7 ¶Õ –ÙºVòò{És 8yûö²ZGËÛå†ü5jS§ÄÝ@,I$– ¬áôên­%®·I\ÀQ“|1’mÓùʇ'²C*b\r§4¸Ã×{Z ûä„wXA1W­úWÿKZ›–¨3%7à&
+hòš¾°ê÷ƒuQ^õÞ™’Þ.º£›®O~ÎÙЦÓŒ²
+endstream endobj 1284 0 obj <</Contents 1285 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1285 0 obj <</Filter/FlateDecode/Length 1171>>stream
+H‰´Vms›Fþ+û:¾ Ç›DfúÁ–©†Ž,)§Z†“LƒAä$“ñïÞ$$!Åö4òð²ûìs»Ï.\ É¿b ËÞì  ´÷©ã˜&ïMj}Í
+¨Á¿2‚5TÓ˜AFŸê½Ë¡†‰Î1(nà{2À à3&ÕL°uFM`5t`zŸ2
+@WÁ–¸DÜi}¾ÓÓ…@4œšß]3ð[eºbÉÄÕ€µªLA0WTf+ºJ˜¢ ;w–úwð» ûaK·g:Ô²¾Æ ª‚f77n9¶¬iJÑB·ô:Ó©s¦}:ÀÙ¤Ñ̹z”ÉÔ ºMd½-‹À°šB+†i%Béo’ôœÿ¡·-éÝ)ÆPí)Ó©è®nQS¶Í€'qå¢}…j)¥¸Iò Tf(XQsÓt føXú¥<Ö’ƒÔ†¾ëzCS¯iJvº-ˆ2Úst}ÃS3Ì>¾8²¶AMópJª›¡G’ì¶ä$âE®VI¶$7W7>)yñ”Dœ„çŠnc».ä”h@evà!…o–“ˆ§)BuÇZ›Øà AooM>¹’‚§yVX
+ágïç`N£\G/ËÅ:­á}ü#ˆ_…EE¼)¹Y§U…eE®8æ,/«ð>MÊ Ü^7÷È'‹0MïÃè©Šd¹äEíßïæ‘dOašÄH}H<éèÌÕÆOÖ¼þŒ³«[=J-¦ïœ¢Danõoa®K>®™ÅaÃû÷¿‚7Ü¡;Ct¦;”ê–½Eo2ðš£m(ð¨Xû
+î9à£Ðé€Ö¦0´h‰aV>&² c^}É‹O{ì¾Kˆ¶wðwØÐd™!¡µJ ­rìcÁË|] ja’®q"UN]™+|„üÛL'Y·â£<Ëx$¤$xLª|'„š,X ÖÕ4Û¢´¯½±eb.¥XÉMsQw|{ãÎ.÷úDU6Àßî‹$>Ö)ž“RÚð?bÞD?¿©•H÷*D)ž¾ûáÖÜõN º’²BJ̱€ÁÖtq‚ÆáJH\â~­x&”S
+£„hN‹¼Ê£<Ýz ò¬
+“ŒÈêû–®@ðÜòža2 ¼ÉørÔ$îfÝp3§b Õë¥ím€ÙåørJ¦³I0LFÄý3pÇ>ò‘³p¾Û{ŒDøFjMWöš9W|ï/qa”>†_ÇÅdQ»–s5>ùí,I©g/n:*íÝ)€Mƒ÷7˜†ûËeZVk(_+a2Wa”TßÈ qò>Êw°,)ešvU?žì—æåaìe‹¼x”/,xíÔtóT-§wúÝ{/E&­hÀßhcÚ‹Øæ/‚Ñ.¦Þ$ø›uZ‡ê yVGµ*±0>ÿøü¸X/Y‡×ó«:ú·b±FvàFÏP~°T~⟠ø³÷Œü,{¥ü‡E¾^½|ð¥/ßîrû\K™ß²o¡Ö+üFøÔ5{î;Õº8h"~8ÿ'À
+endstream endobj 1286 0 obj <</Contents 1287 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1287 0 obj <</Filter/FlateDecode/Length 1169>>stream
+H‰ÌVm›Fþùóªì†åÅ6‘úÁç£'*ŸíÒ·¸ªˆ½çÒbp|—Óõþ{gÁ`°S¢FªXØÝyæ™™g®|ÐòKláͧÁ6…7>ûCþΨm›&ŸMj#Í
+ç¸D>i#ð.éérD4ì‚߇§ï!¶ÊtÅ“ÉÑ€ŸŠ ª2yÀJQÙ@ÑUÂMÎ3ùd©¿û?J²ï*ºCÓ¦ÖàÈ×è *i¶sËÍ-{çŽSQC·ô:Ó©Ý“ „îv#qJ7š¹R/<™šA+GÖ×y‘Ö1ÑŠašN¤PFG'–Ñ[Ú¾‚ÖõfÜ,²œºE/Ü1ͦ£“–:¼åú±ó¨¨Æ˜Þí7Ç3J!™R†bäw¸çù(T2TÒü1Ä;S¼ëJœßAÅéÂJÏï4ßbƒV
+îq㌋5ßg_
+¨ÊS«¤Q‹ ýžë¯]ÀhEÜëòB)WζüÑÛó,”ãÙa÷å˳­ï 6\×e\µ†.ÙVÑc*)»Ÿ»Y½Ö4R—ACå¯Î×kã ´ÜàATIü!´G<H9Ø6d ð8øqYü6`;„ìO»cOL3qXgØïð?tõê!–r£ cŽ_"p@ç_”SÏy*û ª%Üc³õ*Üâ÷p²t}w2žºþ¯bàÕB sŠ²a±t¼\ëÉ^
+*ˆpÞÖXÀ ü/ÿW€
+endstream endobj 1288 0 obj <</Contents 1289 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1289 0 obj <</Filter/FlateDecode/Length 1199>>stream
+H‰¼VÛrâFý‚ý‡~”RÖX£  ­ÊÆZ¢,ï&1©” V’#ÉÞuQþ÷ôŒ.ˆ«í”x˜ÑÌtŸî>=Gº` Ëº€ó~ Ã"ƒsFÿЛãz‡8ŽeæàÜ2ˆÞÑM°[¤ÕvÚÀV €Êþ”´´ ºNM`S0;Äh·A³bZxxŠËO¸ þÓ"º-ƒ ¨NL¨Ñ!´)‡¯ÃÛ
+K¿š˜é`ßöÃ3ÄáÑtŠøn
+L o•Š £ _Š¢R〉¢Ò–b¨Ut±NÅÌVg?‹`?×á¶-‡Ø­2^óH¨"ÌñIsÛiÉÚie)ÞmcãÄ9Q t}Fø©`tk¢î!YºIj ûß¡vYhÅ´ì=Ñ(
+¤í¼·Ö»Q̾ÚVF#Á®aKÒf£¹ /Um%“(‰A¥¦‚µ*Òuã¶<·ä¡XÍ8ÈÞ06¬—aE˜2:£UD7­h‘¨-“XÖÎÝÐ4p¿ç<Îþ<IaÌ
+aòxÞ.9Vä>Ió(^@4‡°|ä3àiŠ&Q³É‡. Bˆ“âO³<If€û!¬¢,Öž (8 ¤íFQDj"‡—X/Xƒj;mÅ»Äjà%šiìéžç®Ä’›Ð{Ìëuûµ:¶ˆäM¥Ô±pa®xC¿ÜÝ÷0»ë÷ÜòÀ*Œgaž¤Oølµ,åù d…Ù(„³¾ —:"\å¹ZŸn¥Q(Î £+žeá‚yú0Í0è„Àý|-ã™(÷›(!«ð»ŸçþÈ—ÙD¨0ütºzµ›"­u‘EAäj¢¾²ø¥IžL“¥'–Ïš&µ_A9Ï£»ÄXÝò°Q¶Whép8bXøîàì(vÝpYCA½ÓKâ<ŒbÄ©)ÆÝâ gž›=—ûÕx0ˆŠœ¡ Z`‹ÌÒ¾Ñ2(wýîH‡lØ´MW
+Æ×'˜|÷žëõ½í6;~?¸ò£‘ß'Ù!ç³½Ò!­Ën¯¬<žt{‡»hêU çÕgv2ă¨xòRo÷ŠVØ–›Õx¢wÖ°ÆÄëy®{ó@W앵j‹ƒe-6Þ_õ“£zÛjÈ­ç<ÕÆ]£
+–èäIt Ÿî  ¼“'^—ínë¼WIb•º×cøQPÌ6öü~ùP¾VªC¾Mš¹¿$xGY†Y¶
+Ó¿¼ÛyŠ$J×Oö¡›ïŽ¾M¾¯]&+/žESñÑ \ÿú
+/#s/_ÐÖi¦Í¤ý¾¢ðV›»—ä*uìƒo¼ù7ò|梖Ôý¡béŽ}¬G^¡ˆ•¤)_JJ$¨¼Ž²`£ä¡þÞ±öZòÕ*|ºÐ ðò£nšÍo1 Öµ»hq§Ý§‘¸ª[/¼×Êæ÷
+endstream endobj 1290 0 obj <</Contents 1291 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1291 0 obj <</Filter/FlateDecode/Length 1063>>stream
+H‰¬V]sÚ8ýý÷QÞ©TË_àÎô€7ë0ÔÝî†+©;ÄNm§i&忯$l0`hÂ챯Î=çÜ«+_0ÐÕ?¿7—‘7¼aô(°kñ¼K\ײ
+%ÆpÖ‹0%Ô^ï~t‰ý4±5:" k ôöí;¸ðD,ôƒKÑ‘ÿ—'.Fg¦Í4PœöË1|êJü
+“¢‰yï§^Ð÷¶˜”Ûù· _‹ØBáU˜”.ÆÚÿ-e5eR¹° ©²ž’¬(øí¿</>%w8*çå}¡ÈyÁtä…=æ à Z)¬ñ¯Ü*€×¢’]åÛÚ‘&Ë4Kñ&JQm$„Ôö䭚ž« cœ±î
+ æå|2˜²Ç;ÍêïX¡Ôµ[@þîÓR èM¥µ÷´Í ù«Ý9º®³WÓšªŠ\iŠb£_(öC¶¼¿å!¿æ9O[ÑMñ~À¼K/Í©bØöNË?¿(ÍtwY^&éŸÆÉb^ÊpèòÑ~Cg8Wm‹—iVVÛ®’{ó¬fôÃþ
+VPñ™½J?¯œGŒ>u.FQØ{Î9öúgÂ?¨Ï³ Î^íQT_$ÿ‡Ùê$°ƒÞOÂ1÷ÇCì}d^‰²)ÎOÃè
+=¦IŒÅ®¶5ýΗW?ô™ßï }ö§ø<ý,†W°ÍÓÒÚ‘âjvL4 ½H9)†`œÈ8_‚<HÑê;Ô˜ÿ 0
+endstream endobj 1292 0 obj <</Contents 1293 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1293 0 obj <</Filter/FlateDecode/Length 1252>>stream
+H‰´VÛrÛ6ý‚þÃ>’!x“è™>Èì°‘)E‚Ú´Q§£ˆÍT"’®ãñøß»àEÖ…²k?"±gÎÞp&À(þÓ+xw16à*ƒw‚ým
+ŸÊ—UúÒy£ô£,‡d~¸”p™„&<«k®â¥)`„âùò6”!t¨ö@e¶¢‡lÀïA’~GÞEùu(X…Š øþ2ÁðèX±­5õîÈ~·Ó÷Å»¯ržWø'Áƒ±? ÄKXÊšyŽB±ZVÆ\§|¶ m8âct9Ì“8Œr Ïl‰jyÚãI©DÉœUÌÐñŒµ„ê¸$Û:žÔ¡”Q¤aªô$%CË.PJ+Å‹Ô­?õ@{¬ßÏ·U6έŒÚ0:OÒ»YFñ•ÍgJ¢ÓÓ_x0¹ä£Žà½‡:ÛЋµ9™…«(Ïex²‘•“&ÒÂéÚ¤‘t¦^Ÿ\ˆ!ö&d,¿ÝÊx.ƒÛÕ™n¤CG<
+øà|„× ÔuË™êuìØmÐä´ööV^›ÕFÿdœkåñO9Ò —µ»òWá”vÛiíºÝÍš£}>‘îý|)û2¾Ê¯»‰\,¢y¤KÍç0—RïyleIoÜ}O°§ì k:Åù§Ðñ•€…Ç_QA8÷;£ón@ø÷\ÆXÂÐœ*Pï ¶u¢*bKñóKÉÇIE¸ìtIHΗÉÒã`ÂÁjö=H Ž6h*ƒŒ°×%¾Æƒ³Zýîûí´¹+ÔŠ ÷yšTVe
+LxgúÃýì…ýx÷¨‘}ÅD Sâ±ÌÖPJÇΓ
+mŽ½
+endstream endobj 1294 0 obj <</Contents 1295 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1295 0 obj <</Filter/FlateDecode/Length 945>>stream
+H‰¼VÑrÚ8ý•ûhïTª$[6îÌ>4ÄPv6%û:;VˆwÀNl“¶³Ó¯dË`æl¦ð€:çž{î½2'HõÎð~8%°(འ  îÔ~ë
+ÔÚe˜ôˆÜÞø V`-þ©Ô 0!Ô1§‡™ïâv\u8+ÓQ<‚ãbâ‚Ç(vì0 ¬‡©¹„¿ …ñBŠ"®x‘^‘ˆ/myLŸÑŒNP뻩cŠ©â¶)³8¸T:p]o`›ZJÌ,›z³µˆÞ§zÅíÏâ-öòY®ï˜{F¯³Gª–Ù­­‚óÀ«¼CÆŠ-vÎ6ì”áà€ŠzÍÓ„!îÌnEr‰ƒŸñã¢hnŒ¶·×
+¢¥×ñƒ7¨íVëÝXÎÐö­‹ ]]Ʊ[•Í'ý)uùr›[…^$Y
+6u,å¨ÛÀDý\[ÊHïªÞ`›ª™l§®D% ¨§S$à9Øu»¦¢J†y5QLåå©š‚Çuò°’iYˆìDŠ<šË>|øúŸþõCø·BSìŒi'ÄoŠ09Gˤ(A½Fj}¦Ö廙57 4÷M}pz]µÕ.· `zm :¹m=³È³õØ<ðÄPï¼
+•j‹ûh¹DiV¢[‰d~—å+·ÝîLÉ·Rj ;ãIuÅëô7tE™= ¹Êb!Qv‡
+cF”Ëh[p“nœärÞÑ8´8öQ¨œ»ð•6}ƒR6&YœÌ÷B›oèçMm( ‹(V²”y6ªZ\ͽn[íõ4¼¼
+Çõàé®}1yªÙW2*Ö¹Ô{¹ŽÒ2)¿5MÞþ©{`Êû\÷Ù2ÞLØX„Ãp2³e««‘Ïì_06'£c=Ù¹:þ31Äv{»áÙ§*üZÊ4–ñp­rLK)㓤̣R6"uŠu ZómfQèŘñzIfv£~·
+¸çjÞL”þÛpÔSH¹9<„SÿŒ~0
+endstream endobj 1296 0 obj <</Contents 1297 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1531 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1297 0 obj <</Filter/FlateDecode/Length 1100>>stream
+H‰¼Vm›8þûæ#œó¨Ô4Ëårj“4°íé6§
+áDaØ»V«ü÷³CHb¢\»ªVZÛóÌã™gÆyÎÿª^MBÒ^EøO0Dºî"ϳ,Ð<:· ¤»º ¶ƒœ‘7‚è3( Fq ,,®c¢5˜.2F#Ðl™=œ€Dá”ü ¦…t # °ŽL°á"ì@Eàð6:¢B9®Æfº Ñ¿çô v†!šÞžßÃÞgRlŠ f£ ÷ HÅ
+å+EÅŽb¨Vt¶ŽÙÌVÿˆ~ed?ttG–‡lGð5¨2šrnÜÜö;M„¢‡ntl ïB0(ô°†ÓºÑ­•zæÉÒMÔ9²¿Í ðE ÓòÎœ0¡¸Â‰ë]L­arkç¶'½Åœ¨#e±`Ù5ldñ´™ð‰ªJ¥ÚJ}žBlÙÈm%çéäætœ°5̉ã™-©¬,@ŦB³g±‘ L‡%¥B˜¤r³Õš
+óŸ¯nú ïI³-¿Hîë8%¼t…¸5Œ°Iƒr'Z@oô“„Î c5Gôâa´œÎ&ÐQãlNaOêèˆÅ„”i?n³uœû‰¹‹ñ/óé8€gn‰ÑÈ3Œ}¨
+<–YÑ€j{#€†ò¦ ·Àss|U~ôSÖlï‹1©š˜~}=˜œlÜŠ{œ8Ë¿¦\#”Mç¯I="„p:‡ëÖaçÙ#•–À %NI¼õaý¼Éš§„ˆ¸ô±Ú­#„6Gg
+endstream endobj 1298 0 obj <</Contents 1299 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1299 0 obj <</Filter/FlateDecode/Length 869>>stream
+H‰ÄWÛNÛ@ý‚üÃ<®+¼ìÅ—©!¸Q*”²”ª¸ª¢ÄWÁ¦¶iAˆïîÚ„8á@yXgwçÌ™™3gW
+Û!iÛ‚þ"@AœÊý&ö<ËÓ“ÏäI8Øv\Ïq ñ[[ÐÒB9ˆ1ð&f® ¦íanÉË@¾vµ/àp  F±”`΀²&¦¤!C »bŠÖ¸¦z"Mÿ–é1uG!r¯àwRøC‰mP†l°¨Z9|+6°A‘ä2¨ƒ˜aRDÔ>UO¶ñS|Udæt]ËöSòå+¨*šõÜ´¹í9:wf™Š{è6»C§ {k’!¡W»Q8•bÆ’'‹p<wd¿Ì‹Â°ËD#n“%'J(Íʉëm ¶÷¤w‚xÇpÑ` ªËllé²qø«ÖP•/5l”©‡(‰Á ÉŒZUÑ Êc}oŽÔn‚Ö»«zI“45;æT !Üj‚ÙTp8¶¬½Ñi™ƒ$ŠsÓ¿Ê»~‡­^k`û¢ßîï›þwá÷†Ý~vv>Ãn Š]±"~“bÊeú÷d—aŒõ9QGâ Ûê븼I½â¦Ú^ z¦"tåg­Yå—“P;úG~¯í¯`Q`Ÿ ˜†É4]œEãѬ$é$ŠGy˜ÉäJúã-Ð]ŒhTúoÅ“½( ǹ*H†­šƒ­»à0’õS®#_%9Œ3y9S›Ô³ç‡×AšäÉ8™Í-ÚIœ¢8Leü7P—¥²„·p ý5kíoAÐÐq=©f EZ*^eR[¼Òh ­)ëmXÊJÅã0U9ίýÙ,ºÈ’hòå.7£¼ªC^¤¼2—£ %­8³kXCceÞŒe8Ðí ¿ã–ßD0¦Ì ŒšV’Hã$>&¡Ä›óxć5S­‚F4©í²7î15LŸ!Úµ4Ö÷\¥ÀÖ%»Wõ£¸]qVDÞi°/÷ës¤´^B+¢«ÑJÐX¡–º–k'Oh·ñm´L¯˜á﫧jÔ}È ÃƦî+gå‹þ‚Y¹œ÷{‚ŒÇÆ{ YMìÇßAf×Sù³¾ Õ
+endstream endobj 1300 0 obj <</Contents 1301 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1301 0 obj <</Filter/FlateDecode/Length 1095>>stream
+H‰´V]s›Fý+÷:Þ »€™éƒŒ©BÇFŠ´n;µ2,a›ƒ8‰ÇãÿÞ» è©–ÓJ‹öãœs÷ž{Ñ©
+èOšËži¥Œ;3½ãº»’ìõH»ÂФro^$1Ú£BŸŒn.¤¸Á÷½Dn³©…¯W7[qÃ×(}ŒKpëu(ï¢4…,¯à:†Ç2^ÐZÈö5µ^êH[“ž´µG¶Ò¶/({’Ó©G¶Ë
+endstream endobj 1302 0 obj <</Contents 1303 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1303 0 obj <</Filter/FlateDecode/Length 1051>>stream
+H‰ÌVÛr£Fý•~Rf–nÂUyeV&e]VÌ:)•¢RH,p
+O,óªb¥u€=ïã"FdÔß´¬É|ž[!™`qÕá®ÜÀ
+AÌB,D• Mì±2•ßÙO쇮m8Ø´*¼ú¨æalò¸éX²wjÕŠVv“n²ŠÍà©—yê2š1Sö*šŽ›BæyUD³j4ÒMºWD¥S±¯0Û–ô¦Hï+6Åt©‰ 96žÄ5ãËåb§ (DG¼£F=t &ügwb7@jƒn¦^Á¤%L‰ŽZ(Á¶CiSÓ¨AYKdž±ëŒ±¾VQ &:ïì5 u½?öCå§V¡2–8"vŠn|õÚïݨƒnO Õ÷÷é³ê]ç@‰+G…./oÈܾ;á²ÖxåUði˜7¾8Ìφâd®’™’«¶©T¡:©*xÔû綂w3µ;·98EÞÀõ@ü øŠ$2ê1>…rí³‰7ìW73ä{¿¹ÍMg¦´˜<ïD‹(‹’yt T—R;þhïÀ~–>>Ôý@}÷ÃGwØsᥬ˜‚¸b'’\ì5iZ ‚üos彆´-H_ì±®ÛY‹!vU÷S%9÷@¾«”q–é<½o"ziRqeœÏ 4ŒE
+ÏÍ×°†Ñ˜y£a÷¶.ÜêôúŒ¶¢Ý0é»cu<±Qot«º¿0wèó’R/2×±&0Ù@+'~çEÛXÍÀ«qÌÁ¸ò×G7géUIJ`…R“£÷²‰¯uÙ.±6ÿŽ^ï+z¤ÂqÚ#Ÿ{,UðJoìšâè¸*Í·i•y.ö¥ÕÄJ‡Ôñß•O*þßØ)ÛU¾7¯øw•[LÇ>ß,Bo)q«UÆA ®ÙAÇž|Ds%¬¢ Ì¢U”Zw^ÄO<[-·ÁÁ_ˆ•'"Yôf…| Ȥ¹©%qqø[`£Fñ†Mæ÷aBœÀ<àß&é¢'^]-²x¹äf ¡,'KX¤Y?¯z˜l‘¶!Òÿ"= ‘+ô³ ¾Èµ-½|;ÛnëòµÆ•j#Ø%þÂ?ûâPõäªýÞÄc^¯{ë±_!^&)ÿÜ.“mJ4gê*U·&®/m’>¼WÁýúß
+endstream endobj 1304 0 obj <</Contents 1305 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1305 0 obj <</Filter/FlateDecode/Length 1117>>stream
+H‰´VÛr£FýÿC?BÊÌ2\„pÕ>È2åX ãÝ$V*E¡±L"³.—ÿ==ÜŒ…¤Õn¼ÒƒÐL_NŸÓ=Ã9µüfKxw¨°Ìᣩ@Ýâúضa€b㳡u¨ê`ÈÀ²-`k@f—´ö ªJu`èC¢Y(¦Mt 9,pK‡ÁgÐ ¢0Ð(1€ªD×€jCBqø œ³WP0pWOêØ¿}xš°u»ÂwSådÆ–©&™`Pñ«ÃÇjÈTB0—d:4Y¡’*Ö©x2å?Ù/쇮eØÄÔxõ=PÌÝØJwÓ”Ü)5è¦öjÄ>@†ÞŸFÄiÒ¨Æ\îe2T´‰ÌïË"b˜5Ñ’nê½$¢Q†MË~m;­w#é—²%yžPW3‰QʦÃøåB¾L6¥\<Äi2Õ%dÔhDWÁÇíÒnÅC±šs({C{Q½†©U0KtÚ !DÕ!(CQ¨
+Æ6@Àè–­IŠn­6 ¾€8(ÄTÅ]XÀš‡ù&ãkž0@œCñCX a‰B…ª£xOîÄ ebùü>Í
+hÖǾËÜñèÊe¿C¼LR$[Æù³$ç7æLw6…Ö§Úh<=ß œéØô¾@¶ÂÕói€ýôÍuX;ê ýµJWQµEEBÊA}ÙªŠ•ž›õhËE,w”ØŽÜpåNpîÅçìì=Š/à³óñ…0ß^Ö+s)pÿpÚ?:!ù<—î·ábý>¿åO"~š^¶íÌþ6ÌnW±ø‘¯Ò(.[Vgz=qüs.ài7yMŠŒÞð¼äø5…5Ü…G`Ch·i¶E8_¢»0Yrì6Ì2çÒññ¨TQ5ªCÓ2Yo’„=Þsè×Aö•_da’£§5‚n“ÔÔt··-÷F|ù­¢ŽñÏ3êp ­„“sìWo²Y1ŽU1Z,2žça²yÓ:.€¿Ïz~²Ã¾ÏËM7aãðì!ŽøUŒäòLÿÝiÿpÚâÃün[励äõÔV'
+žäè‹ÅröëÍö% c¦Qºj-ÇiR„qÂ3,ýé0S"¼ëäÏð ³ù‰Çð]ntÕ¾¢Ý毄;*#ø£éÈS<ÆfãÙ•òò*)´Û-ÙöXâ»ô
+endstream endobj 1306 0 obj <</Contents 1307 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1307 0 obj <</Filter/FlateDecode/Length 1028>>stream
+H‰¬V]s›Fýù÷:fÃ. žÉ–‰K"KŠØ4ZŽ*! -pÇÿ½w$ô[µô
+bë]⺜ƒáâ=gÄìšØq:nÄ-h ‹¿ÔZï ¦I-3°º„u:`Ø.±8><Ía 6øþ‹“ƒÃ(á@Mb1 ¬K¨yß … ±E®!ïÌ.ˆ‡}zL>#-·âwSÕ!bë”i6p*¯üR-jÈ&šNéÕL¹Nå­ÿ.>I²_Öt;Ü%¶SóµP•4Û¹©í¶ë(íŒZŠ t›5è”÷ˆ}¸ŒÄY•1ùDß«ÄM‹¬ Ù§U‘v-´fÙ|¯ˆ4Jw}F~¸ë4͵7wÃ{7šu¥w´ÑH¶—Ù„«¾Yð¯¼FºÁ´\·µBÞÄY
+:µ4””ï÷”v\ÅPñÄ6;bA¶¦I³TˆtEí5Ž’h*y(²†F]„UE4sVª›ï‚Ñ•4Mp,ÂùÎ
+'$ ~óñ‚S:Ñ':¨l¦nká-V’@>et¤‹,¿J"Ÿ¦Å"ÊÅã]²lïçaÐóáIaQ‚lX%öf<¸6V;A~Æ gµ,›ŠBVbí`½TÄ­Míg©ÜMó(-{YZNãéÉC…þ—¯þà౪’7̳‡4‰Ó¿{Q’ô³é|M¬:G~ŽD0xý³UƒÊ~wZyàUÈûÜkëľá/£´ÀÝ…\¤®½ç/éÁl–%ë'¹žðûby'ï¢\– üâžwYrO‹ê¦ï™átc·š¡æ
+coàŒÑx(†½aßðþ œ¼CòÊ.O®4œÿ7ÝÑõ}RƳiQzóy…ª9ì à9Á·r5ò»Œ £ Ç-JgÑ90K½¤_?K˜L÷a¼L§ ºs‰J¥U8s.^Äh‰„ã­™t8 ±bÕœ,/½¢ÈfqåõÆz})F†ðƒõLÂUµ°5xëÉø3Nçx¶àr5h«…–A}s{bŸ>µvïóIÝ—FXNËûõlKÕüÁ×kì ÿR*×6{+ì,™Ÿí³4z8-¶·Ú?E ¾gôƒPluóÊ#ävú}}¯PF~<nŽ5F厧VO@âõû
+endstream endobj 1308 0 obj <</Contents 1309 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1309 0 obj <</Filter/FlateDecode/Length 1210>>stream
+H‰¼VërÚF~‚¼Ãù)uØVW”™þ ²ì¨!‚À’^L§£€LÔb‰J"ŽÇõ»÷ìJ ÂŽiR˜a—ÝsÿÎe_sÐä7_ÀË‹±‹^rö‡ øžw©ëš&÷¦Nµ®f€eSÛqà× €Êÿ”¬æ šÆ à30ºTw –K ‰ç ø|HŸÃß`˜T3ÁÖ5iÔÐé]ÊlÈcøRx͘‚‚¥\"vZøÍ¡yº  ·²ï²ÒÉÇ([eºbÉÄjÀ‡ê€ªLA;`ª¨ÌVt•0EçLì,õwþ“0öýÆ\Çt©e×öGLf¶Û&Ù-×–±#u(v¤[úV:Ó©ûH0Pôq5BN£F3§ê&S3èF‘uš!ê­–u D$J·Qâ¸ß
+FÔl@×`„×’nGâ´ˆA憾E½6SßÃU3Ì.®pQÛ ¦ÙVÒÝ®˜£ÌÀXžÒïðêÕ0ößOüÐóáN’3긺.\ç? „Uÿ]˜Ìã´LÊ[ÀÏpçG2TB™+„^*°ìyè$ÊPºßóHø¡UÁÜêGRtZÐ%>ñ¿”qZ`|
+qÈ\ksÙ¬Ã<+³Y¶ÜPzYZFIçh÷ú"d~q÷0ò`öúæ­}Ê}mò~0Ú#U3m¥Ã¨ö†d8ð7èÿî‡cT&#¹À‡(¥ò›ÿnÔ¥ÒŠòmšÝ¤ã8ÿœÌâ^GM´öqqh· a(0Äƽ s6$Šñà
+o!¹ájŽ©¢Q,+Çv¦ê‰H?l‹—-P£nìðŽÒîjç6êP@а<ZAÇm;%Q¾£•’")ãù„£Y^¼\’ Œ¯¯þ‡
+Ö‚“ÖàL´˜ììö&ugxÃoW±$¯þWQÊÆR&×1™ød\F·ñ<H Rò–ãÖ>³—K|ÑŸŽgS•±wÍz4.›ôª›u'Õ¶õñ}Šû8fÏH¯ÚMDà*Ëa/±ü Ì X¯VY^Bœ~ŠÒY<‡E¥ëe”‹Ž/HR0ñ¡@H¦/ I%¼€B[€©ký0S’9i”øµ®‹U5Ÿ7
+xàõúÿ’Ešá¤®J{ëãsD2WZĺš2ùc?”à‰¸;â5x]|¥YL
+endstream endobj 1310 0 obj <</Contents 1311 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1311 0 obj <</Filter/FlateDecode/Length 1277>>stream
+H‰¼Vmo£Fþ÷Fù„«co—åŜԎ"·‰í³¹´RRµ^'Tø€Ü5Šòß;Ë» ØI«Öþ
+•çL¾íÀ-Ý&†YàâoŽ:S7l3‹ZmEmZmi{£FÓýn¤Ò Õo-O:å¤rdü3/Ò†QpGá†Ùr"¹?,XÈ×#áÔ5¤Ãþ6ºéFáKY,$a5ƒèYÙ8|“O!Ë %‘/A€q3ª—E§°ÄëLn+<yšÈè®ÕU/`j9Ì fJ ŒX¶¦•8)ׇ eÈLNtý°ñ !Çi®¢2Â8fvÊKyîƒûCÑ G¹,³¥ìryëkoû(
+ÄÂO;taÒwÓ°×*ñ7¾·ùþcìùOcID€ëÎã}CùÐÚEI ³W¤OyÎdÆíKŒQ©'U]:ÌæñUx³åª@þ6ÀI*»°,D=½ÇÕ]c¢Z›+ð½ÉL½²’]& dú%ûöºjXaBû¸×bùÍD
+R~|ö,¼±õaÛ\ÿX>ØËyK],u$e+aæºÆï¡Ø…ˆþüœúÐWúVÈ›¾LÊ_¾©?Œ(ªÂƯʿ
+endstream endobj 1312 0 obj <</Contents 1313 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1313 0 obj <</Filter/FlateDecode/Length 929>>stream
+H‰ÄVYoÛFþþóHÞÍž<äA‘YW…®H릀ªÍØj)Ñ% §€áÿÞ=H‰º\Çq[ùa—ÃÝ™ïØYóƒbÿŠx{>%pSÂ[E%@A}ÑñDZ€b= “ˆpÂ8µ|õ»ÝAë˜ÊA]0 C@2Æ\èÅ×à%jÚ³˜Å(Áœe¦)|‚|P[Ptb›™‰@}݇ÇÌ“‘Çߥ«©¦:·O™'AP3røÙ°O=fžOùˆzÄÄ©™Iÿ³úÉ€ý¸†ŠË ÆË@50c³ÛeXíP-E+»d›ì”áø 1têãeLž¦ 3¯’ ¯ É—U19d-´Çe¸WÄ”¨)Ưàmëè]züܽñظË$Ö6÷fL}…/½ÒLù
+|Ê=­¨hL'0ѯíº,›h™‚=lãz “9˜ PŠÃ˜±'á"ÊŽ…Øí’æ‡1¶  ÷GqवIÅ”k­Ï4¯fñ£¯EcºÅ {¨Ô›ºãŽ@1Yhì²ô9ê­¾äÅr^9þ4–&õ»wïÁ%u•féæS5é Ï[¥öpín—ó‚]@6¯ž±ïÒÐIz—h' ¯ûã¨×MàÁÁÙ%ؤ½K‹E~½¸Òœg
+¹4h</æË´J‹ò´ÆÓ®é}ºªè5k½5qí}N…v±Æ8²+´÷ø2Úì ÝÛ¥ÝûÏi‹—ÑÖæY¶¯Ë~ s –]åY–^™sîÖa Pwóâ°b¯GÜô걊¶ §ÉÇ‹d蘻+á`>Îsðez†ÆØ>tL¯®n‹´¼Í³k³T­FcÕ ;ýÓÃÄt¥Ú”E‚’¿ªtUjÐ¥ š›c\äU®u]¿éæ«j¾X¥…ÆÿpT[“©—”ðXןtÛŽð×=tGM¨¡Á¤3ìŒÑx2R£î¨’_T2œj¤Ö¤ÃÞü{H³î–N†ƒdÒQÉ<,KJÈ),K&í Ý“ºh=r;ÎN–¥¨#5Ð'mwÐAŒõò­#ePö†*9O&ú Š`ÌéÌß­ÓÎú-W…|ñUñõ6]¡ùý|‘ÍËÒæ_ß‘ Ãt˜Üî0ȧZìŸ]oëÕ¤ú>K—³“gXú´Ô‡¾¶Ï_PKþŒëi-ö2Ø/8$ÞFì
+endstream endobj 1314 0 obj <</Contents 1315 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1315 0 obj <</Filter/FlateDecode/Length 970>>stream
+H‰ÌV]oÛ6ýû÷QB–õY`v,b[•˜vX2 ªÍÚl)“Ô¯ùï#)ɵ-'H ü@šä=÷ÜÃs%9ý«Vðê*%°ªá§ À?Èum
+äܶ0ñ ÇÅ®xÀ7`€ÉÿÒ´‹À„P|ÌÇ–çrÌlyx FÈÓH„þfcbƒkQl%˜Y@-S*ï €1ߣ"5.R3âÿ<¤g©3
+‘-¿Û6'O%¶I-Ûª‘ÁÛv›Ô<àÎ0©kX&¢QëTÍóþ«"ûfK׳ì¸_öUEó87î®ÖuRì ;Öwtjáà 1$ôãiNŸ†Øwæ “MÞ&rNË¢0œNhƒ9þ ‰2Šß'ñ‚3ÜíŽõn vezF«ÛµlëkcðIB]_e:F­&yY€I™!µûK'Èm}n-2µZ ÐÞ°¾ßzGÓjijv–Û B˜íòU¡\†mû Ht/°Œ<Dá—Fµ$R«E8Û͸*›rQ®·'.Ë¢ÉòBTðMþ¦n"î˪QQX?ÀÌcÍg£ë ÐL)–0V«¢˜2yeÙ™cÝlDmñŸÁxèÿ.º“4hOªå½âv`òC2šb's>¿œ_£ð7ÎRI^¿þEÒUP‡„ú4{„ö’œÂìVRC±¨òr©s‡³›i˜Œx8o›šJ]À¦¶º‘u£Ýn7úr¼ûIÍh”º;±í¤²üN–6RPí®¬î¡½—*ìµ
+ë*ÒðÍM8» Ÿ”R:kã¡û¶vÓ <`êub\ô$v¥Rç×yñwš­Ë•lå=¸ÞYÛ³ÃÇÞY|¼'ëÀ6}ÈQ¹» "§úÇ0“†öþ÷†~–ÂY‘­ÄF gµX¢é„£Ñz]~ÃÊ SjÏ­¥²6FS].êivHá±V™f_ÆySe¦×†M¢í€hÆë0éþÝc-—RÑ4DW=BpSä ä5¼Ï›d'B-Ï|ˆw“&šNnPšÿ+úö|Š)Áòµê¹þš]bIsó@çƒ2Nz9Œ§)ŠyŒ’ÑEÍvqHyÍ®äGUýÊA’T4OK0Y%ªTTŸò…à_ïÅÐCO½u6×M¾Èêæb¨
+t»e³¿z–ºägÞ
+endstream endobj 1316 0 obj <</Contents 1317 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1532 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1317 0 obj <</Filter/FlateDecode/Length 1125>>stream
+H‰¼V]s›Fýý÷:eÃò!Dfò ËÔ¡#!E¬›¶v§CÄZ!Eà
+j: ›u4ŠÓ³iøvìgq²Œª¼€×¯ß€\N½Åˆyç°‘“G‰ã¶5J¨‰ÔÏqŒï²e¾¾-xYòXûÈ£˜?É
+pèâšÐ]#ë íB÷Xl²Mó˜ï$®£ÄÚ6G×ôÍð´×ÄÓ¼¯ÏÄH—mÕíÃy‘Wù2O·;P£*·QZl £š€ò½òa6gþ,MNÌ`Û•—uòùãït]0škóÅŒÍƳ‰æýƼ DbrT6Óv§ÏüsHb-LVY”¦ø—öÅDóÉ4˜àÛêè4:¾Ž>óÇ£‰Ï~ÄÈñÏc°ã X 4MÂácÓ1•ù ¥Ûò[QH”Âcß´ºáqû
+endstream endobj 1318 0 obj <</Contents 1319 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1319 0 obj <</Filter/FlateDecode/Length 1017>>stream
+H‰¬V]s£6ý+÷:A‹Ä—ÉL옦tb쀲iÜéP[vèØœìÎNÿ{%66Äëf2~@èÜsÏ=Wòˆ‚.ù>ÝF:¬ øDñ_:` +¾>@®kš ¹|l¤t,ÙŽë
+WÔlŠ®CÈ_Ëï6,«é r¨zM“T4%;b7‚è†9
+endstream endobj 1320 0 obj <</Contents 1321 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1321 0 obj <</Filter/FlateDecode/Length 1127>>stream
+H‰ÄWko£Fýù÷#T™Yf
+ÌŸ’ª¦’É‹0‰Aeº‚5êºÕ`Œ·‹s‘ðån& (o¾Íz%“o‹Iã)”Ñ®Åy­SÓžtYƒŽN ãP*øA ²ÌMÂ8ùKr@
+Òỷ3#wVm!ÙÝÝÚã¾g_5—j ˆ("©ÈD$X’'Ä.`Î+ÿaac Ü­N¡ÓNº¾¬½~*|Ìtrð«3Ø-͸›Q¸¹7ýáÞp-¡ñTº{j|pªŽVƒÿ•¶#ÿ_“µÒ¡ÿˆÏŸý¤ôIì¼ec'Äs$ñ{³h ?"EM©Û5ÉrŒá²0>8ÝD€Ï-!»=\‹W¡öƒ¿çiò?¼
+>JžÈ* “4ÌŸIÎщ÷[Êï[h‹p¾h‚û¡i»r‰÷¼»óH¦ob¿¿³G{o/ý¯£Ô™¡ÍU˜–=–ÃÁùezv2É5ͮģGÍ©öÚ
+Ș ˆ“> Àª
+󹜞m³YÿRùW€
+endstream endobj 1322 0 obj <</Contents 1323 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1323 0 obj <</Filter/FlateDecode/Length 962>>stream
+H‰´–Ûnã6†Ÿ ï0—TqEê¼@/œX›ªpd­Í´E­¢PmÆUaKYIÉn°Øw/IK>ÊN¼I¡ 4gæÓÌ?#_20ÔSÎáÝõØ€yïùË
+¦‡©ë‚nûØ´Äå €Ce0ø¦… J°ÄÀ&B=L(9ü9\²áXùÕåÎð€}>Ä£òŽôhú+¾É*& ß¡È‹ÈÕ„_WX#Hp@‚4â ªéòœÈ­ýÉ~‘°׸®åcÛixÍ#¨³›M™Û¾£r§7©ØònÓwB±"Âõñ0ÒOÆ°í ’e˜xÈþ¾(Ò‡Ý$™="…âµA\ÿ j»%½ 2¯5ű¬.µ±¥Êf£\¹,_©Ù¨’›¬ÈA#&µÚ¢0?«{ žÊÓŠƒÒÝT½Á¤+LEG J°ëSÚr¦åîÉW6À1±eíwIÜuötÏuþ¥æy¥€D¶¥(7:ÁÄÙî7Mµý¨ÃÃû÷?AÝÞ£ úðU™m“I—Ä_¹Ìî-=ÍgºØ8Môí˜ã–iÏöÛ6ë ÌîÐ~+ɉõ¡L—|Ì?=ð|Ê£‡åß¼õšPEaÄ‚ë`” c3Ñ@Õá…)ÚŽy™³l:(¦i-2æw…Š3>ÞÑUp$W+ß$Tz_”u–Ï{Ëâ!¯>
+y ®Ö¤³ÀÑ)¶Q/êÅz<²áÕp ¿³  F%€Ó=ò”g s™æ<¯£ÞX¿ ô°¯¨®~†ÏˆR4ðøI Šu»Ï‚—“äY¬®ù,ȧåÓ½Lno1/ʬþgYíöP‚Æárr%N¢‰Ž~8ù
+>;Çà %°•Í4¾ž¤žùô\âä‡næ–á”ûsføŽ×Aï2­ø쬙´H³AVmfÑ êòàp*¬ÎK¦Âé)Ѐ6½%Ûþ™†»¯IWÂ^Ñã¯{±0'¨-L›á£\¦_¢rx'îWëî95DÅÅg÷Šé$È‹ùœÏnú¬ɾ>W\
+TXï|ÜVBì7ºƒhcÒ(Õß3iÿ_…·ïüö!ÿ`
+endstream endobj 1324 0 obj <</Contents 1325 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1325 0 obj <</Filter/FlateDecode/Length 924>>stream
+H‰¬U펛F}‚¼Ãý Q˜ÌØDê¯MW®¼˜˜Ù¤ê:ŠÈB¼´6´@²©Vy÷Î à/`•MWþ1hfî9gÎýð…
+„Žq Hà=dp!N¤H`k©/<qß•GÕ…ÈÜZßMÍ)B‰mjØÀ‰Z¼«7I ©Ö†Iƒš1°Ú'êË6?ˆß”Ø·{¹#î"Ûiô²©Jf¿6n»ŽöÎj¬8B·éPä>b†„¦Q8- æk³ÃÄ1C{"ûçX†Ým0‡uHT¡Œ[’‘û ¹=*½ƒ]š##Tv©¸Nƒ¯jMTú
+Ó6Jõ‘昄ÒQÞ&ÃJë{Û$R»eº6è!ëLz–WÌø¬±z"‡!ÎûºB?†:uEaÒË‹|³Iâ«™°¼oÕÜ+a5ñ'¬–b9].,ïwáùá|éÛ7¿ÀƒÆ"häRª|/%<BHoãÚ)N\ þ½Ý?#íWÔ)Ei¶™gUR|¶š×󯯼ÕDx³Ž„Sà’Ätüª¡=…’ƶs|°°cB{#Ž)ï ¡8æý, Ç#ÚÃqì:½1‰y/ÏÁØãû'¦v øgg_Š¨RUø$ga—f÷=@PÜ÷
+Û‰µ˜‡¢•!°¨w^í¸?3ûÜÏÔS3)ÉJY«åùA‘Wùm¾ÝßœæY¥YRÈz~€›a÷]6Ó2rºMÖ/²Áxîv|\ÛÓñÐàx–‰äEeù_vŸ¤©Š|9òé¼Êi]å?_¦j©ÑUÑ,-o‹TözTå5ßÅüŒmmðg" “ꤙZüº•äiÛBGqWIu—¯_Ä“,¾.£Mò?eh¸Ø€ÁRÒž¬¦ßEP¤y¡:÷‡&~[ÙwéæÎjCûFu–»hÛ¹rÔV£|Ò
+endstream endobj 1326 0 obj <</Contents 1327 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1327 0 obj <</Filter/FlateDecode/Length 1155>>stream
+H‰¬VÛnã6ý‚þÃ`Ÿ¨"䊺ØÖ}p!U‘ØŽÅÝ^â¢PlÆaW–¼’œläßKR7Ç—lc~)Íœ9sf8ô)Sÿ²|<MXäð‘ÑL Ànåûñ<Çìɵc³gÚàvH§ëu-ÁþÕ´ò ¦Im`3°{Äêv»±i<ä³0Ð>ƒo`;Ät cQâ
+ÑöJ~×eLJlƒZȇª§ _ÊÄ Hò€)2hY¦ÈTï©Z¹Æßì7Eöª¡Ûu<âv*¾öªŠæ~nÚÝõ:Z;\I±îZ-:µˆ÷Šúp…S‡1©±É1mÒr‹¢0ÜJhdwœ ªQzu®÷µÝh½kdŸ]4«êZ.qtÙl¸WO®Ê—.ÊÕB¤ ÔFRQ§.º ùYÛÅ<Rosº7¬¶êM«¤©ÙYZÓvz€{*Q:6qœ­³ñ¬{½êL µ¥˜gÕ™Ù
+Šz%ÔªòÉB¹ž‰|–‰¥H¢"Í
+~pw]ëFÍø'¼xH³¯X$·i¶ŒÊÖ«o°´V6AkÓÜ5ï{æ±cv©þ¾6סÊÓÐU/Ï|¹®O¾Þ”Â6§Ôw£’;g÷µÑ o±«cFÊÕš¯å˜íǪçæo›%ߤ/—ÎzœD%¾ÒØU6ï9;dÞ“Ý“þ)îçË%/²Ç¦µß6(Ko1Ã7b.2>+/–}ùE­í:Ù4Æóô!‰Eòuß,:ìµ^µ>j6mšþÌ‘dþ'À
+endstream endobj 1328 0 obj <</Contents 1329 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1329 0 obj <</Filter/FlateDecode/Length 1267>>stream
+H‰ÌWÛr£FýÿC—Ÿ eXî[•ÉR¥¼’VàM*V*E`d“B Ì ÇŽËÿžn d­w“Zû˜éé>}N÷Ìhè‚’ýÓ;xwå(pÇà«þ®€
+Çû²mH6¾š¬ôLK¶zvÜ5 ºf+Ôb…¬(ª®z_Öz=L[Ö 4@»Î$[0vá/Ð Y1ÀÒTÙ
+íÙR\Š0û¡Ó2*Ö!¤ö
+#/õ>%ÑvMd“Ð^†Æ®NF±¼*y%>—õרV"é&f[ß'Œ­¶QôäR/fë0MI°ƒ†>xUž`yQSa –åŠPû¤êüuNïö>ü½æ1í^îŽ4PÅGþlÑ j¬ÜŸ¶f¡’–Ú¨ÔºVÇõyùšòunRغŠ aJ“QQ%œ~Ž!'o8q‹7Ç]L¦WÅGQØåG?+ér‡ô[½ÖÝCiîQoMRBó’HpµÅ¡8%$†)õR’m
+)ñS^aeãµÀC 5²øÂ>xuäÅÖuêvj˳Z £ð?«pkù|¾%þåÙÑ ×`*9IrïC“1°{/Šàá]œP<×ÃUuûÕó‚àl7¼ÉprçÐ7TÎk÷ ýn(a$N%iÿœ2Ž±Ô.û,wá~yVÉÌ{ü­ü ·p½]¿œŽžàx”°Sî^e=¦yâ—‘ÇîAníóâ`WæW5Œ4`OkŒDŸ&qú^šÐj[´N·pëZÿÔ–wIÛ~šÝÕ‹y‘ùÊ´Sz©yZÖîšõ^Ø]:Q‘Õ ± ½/ª£®{Á-øœÍ}¥¹tÆ.NàÚ”ÎãÅçE瀜ž;)%Þ:ŒïÎA’.Ze4J2…èàiF~\ç‡ú¨>Ø)‚3º‘œðŸÝåâÃn¬t†³µr+ÕsÃíñR~Âë
+BóžJœns°K–ÆO€oZ"Ö^D¸bNĆi™ZÙeÓßFAN°]¨‡›á9!aŒžø]3º@ùcþºË‹Ë<8nÒ}s­j‡%[ê'E', }6"̧áf·ÿ8Ç ©Å_»ÿ
+0
+endstream endobj 1330 0 obj <</Contents 1331 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1331 0 obj <</Filter/FlateDecode/Length 1426>>stream
+H‰¼WÛr›HýÿC—Ÿ`ËC¸#Rµ¶ÌzÙr$E"ÙK´µ…ÅÈ&…@ä¤Êëßžá*@¾­çAdè9Ý}úL÷pæÌÿ¥×ðæb!Ãuo<åðÖ¸>’l[×Øø¬«’<’50LÉ´l ¼  zŸù¥Ü!ɲ¢·m$©–Ä°%MGã
+ß’lõ0×ü€K2ìÒ‰¾{ntY«Ý(ÆËœ0 £,£ ™fÏ “á¨rbÙ¯ œ–°? Ú…h ³ÓŽjH:…·ì—2q¤¢!dì!LbMPÔŠIJ†9¾ævõÙjF+Om4U†©aòèT³"DÖôKTSÃ$»¢[¶*ÞM˜ë@vãG\Qئ4£qù î9Ò
+GBžúëu¸‚UägYu~Ë(ƒ`ÅÍ “ø–¦™Ÿc–~t I
+Ç‹<¥þ&Œ¯~  #Q f‰")º Þ9‹1¥Q²â»çôË.L醅%¶%̇_ñœ¦3ÏNN/OŠèåYÓKä2ûÐ!ηœÆâdlQ±úeõ;K“<Y%Qm‰iå~Óîàn~zFf~êohŽ©28×Éîá:Qt“Tx’H’ÄIèE)ÜWë«Î¶¼WðÖ¦Áp`~:9‘Ù|êMÇÓKâüá9“FoßþŒI~Z.Pu¶°Æ²!ÝÔG¬®4ö¯"
+a„E P)~nŒ.ýUÞRø!;³hyäÇ?÷™,’5ø…ר…
+v?XIùº"9xõ/:Ö0ÆÐÕr÷—|:öÞÜ\´&6oÝNÕvŒ›þ`
+endstream endobj 1332 0 obj <</Contents 1333 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1333 0 obj <</Filter/FlateDecode/Length 998>>stream
+H‰´V[s£6þýçQt‚q5;Óâ-|Y¬l/q§Cœ°CÀÜÝŒÿ{%Œ/Ä»I7ã4’Îw¾ó‹|IA“¿òÞ¼›ipWÁJþÒ€
+–¸ªXi ŸNééâŽ@4Ü-¿Û­O:ãØ
+Ñ‘&_>l7°Bçs¤éŠJ&ö‰XYÊŸôAöýŽ®cºØ²¾ÆTÍ~nÒÜrm©ÚH±‡né:ѱ{F ý´ÓºÑ̹râÉÔ ¼sd½Ì‹À°¡‘a;'ND¡ Z'Žûr»Wz·Èx§8h:ÙÕ-lÊ´ð¯ø2‘¾R±P%i‘ƒB Ä5Û¤kñcy/c±Ø­ÈÚл¬74õ-MÉN·[A4À:j`Ø4z#òxûö'˜ùïoüñЇGYü;®®ocT &—øŠ‡¿¯pt
+¤Â´ª‹edlT$솳$†?O‚¯':/jÿaUéCis<~úÎ.õYgâöõ:ËúPüñÍÈ<ê_5.¥AƯ^,¹•\p•6è¯$ß™àžÕ1¥×/^äõ öš½r&¦£šÿ º¨Gæ-¹úµlŒŽb=ÔoŽfÁâC0~ˆ?.G³È›+s&×½Ò¶#1n:2'ýtĈϨsI}Fæç‚+H5<
+²MÉ0
+h0ô€þΟ–lQóËuPöÔØ4ògRŸE‘'iÍSg°9˜·UzŸVøPÝÇY3X•¬by éê{¶5Ï„±}&xF X‚ðÂ!pí¿¤æ%A£¦ù"[',ÁÀý|óøb¿¨Tú¤ø>åzÁsÊåh–R•~Y1IeoLè뺌󋓒ApÇŽ^ë ˆk&@Yd^–ŸXò¼
+endstream endobj 1334 0 obj <</Contents 1335 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1335 0 obj <</Filter/FlateDecode/Length 813>>stream
+H‰´V]oÓ0ý+÷1AØóW¾&ñ0 ª† *‡ ¡Ðy] MF’vÄÇv’-m³ &hjÙ÷œ{ν×IŸK ö[®àhXUp$é'ä¥Þq (ÒkÁ0 ÏÇ~ ×à€+¿Xm˜ÊA.‡˜ /Â\èà p&2>µ€‰„oÀ&|F±
+ìl°»®·2Y#Óªc¾Jq1Öé$\„€Bc™€Ï±û·$+–I­e “R%hVÔè$ËŠuñÔÞˆbÊu­_êà²HÖi¾ê‡¡ÓÉ«´B¯ûD X>ј¼@ñ&­“Ï™B/T–À@l“ˆFM¢Õ|£X•Ût©ªÁtó×ofC—1šÇhYåEš7IJõm“–»ŽºDã!–\Õ7Eù]&i¶)Õ2×¢’M}U”é­ë²(Qm„½ˆ§m´íAõW·¿Ü£:ÌovzMÝ _¨®g‹ÆØZå5?ƒÉìÝ›ÉâDN^ÂOKц>}VTU¦ªjØW®†J²W©.\70«ÓµzŒç‡-èΡü~­þÌZÇ»QÈt&Í·E¶žb2t܉kæZÕ©13Û¬?«’X?§39™NúéN0fžwîÞqÛk3>»”t’J¿Oy8]e (ksSÿ®Us}Q²wÇ;+U¬Êäú*]&ÙAÐÿiÆYkæ4¯µ¸$Wÿ 4é—
+endstream endobj 1336 0 obj <</Contents 1337 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1533 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1337 0 obj <</Filter/FlateDecode/Length 1276>>stream
+H‰ÄWÛrâFýÿC?J)K«Ñ ´UyX¡HlТñæbR)Æ^mä•„×.ÇÿžžA7$0ĵ[Á…%†™>§O÷™
+šøKïàÝ(Ðà.ƒw”ü¥z‹ã}ÕqLïM]Õúš–­Ú=§t Èô³XAŠª¦èŒ¾ª÷z XŽj˜8y ’Gƒ±XàQø†©j&Ø:QM šjè@ô¾JlHü
+1 è ,â*üNëýÚ¥§ó9<¢álùÝl1i€±e¢K˜„_ ø¸Pe"!˜K2±%]Vˆ¤ñqÂï,ùOú3'û¡¢Û3Õ² ¾Æªœæ~nb¹åØB;¥¢ÝÒëèDWWÄÀЇaxœF3çrÉÔ µ²Þ†ÂcX…Ð’a;Þ(ý¤ç|ƒÚ6ZïF2FrOò}^]ÝRMQ6ø•ñò¥²%eü&Jb‰!¡¢fYt føµ˜·b!͈ÞÐëª4õ-MÁN·KA4ÃìƒÒç‰j`ªi¶ ÎØ}’æî:ÙÄ9 RÏÑ¥òúþýàM®¯¼™K½ x†˜œC¬ãÛÄwßÄƱq(Šo£8ÊŸÎAUUxA²è4…¨ÄÀB]~l¥?
+»MÚ[’åkV(A3»Ni_3ÚÑÀ;iµmÆ7MȯFcà/Š7Ý’ã¾u
+Ç_÷K«QÓJ‚ðqå)npoïCõ4¡Qá!hu\Ë:Èhƒâœ±e…UYêbgÍØrz¸J&&qÚýþ} yèVýÚ€†”uËúŸìxÍSÌØ>â+Yà6I«߆<‡¯à‰Â?e‡üç¶Øð§(Hn!ŒQ›p…lb|²zÀî
+0
+endstream endobj 1338 0 obj <</Contents 1339 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1339 0 obj <</Filter/FlateDecode/Length 1192>>stream
+H‰´VÛr›HýÿC?BÊL.R•Yf]lÙ’‚&{³v·(iì"%(±Ëñ¿o7tC¶¬uÊàÑÌéÓ§»Ïp&@/ÿ²[x1Òá6‡÷‚ÿ«qƒë.ó<ËÍÃwË`º«›`wXÇñsP@_ʼ:Át› &`ºÌpÐl™nž‚â‹QPð|Óbºƒ3 ¸ÎL¸á2ÞLÂïÀ™Ø ‚À%®Foº âû.=ƒö¢é-ù]/cŠb«ÜPl°8=Møm¹ÀT® +*ï(†ªqE§uNo¶ú·ø•È~jè:–ÇìNÅ×ÜC•h¶s+Û^§ÔN«¤XC·:7˜÷Œ½? áÔatk¬îD²t“5ì㢆] ­˜Ž¾„Å­ƒ8ÞÔv­õ®óBu”áªkØÌ*ËfÂ7zJ*_¦ÚJN/qš€ÊMµê¢ëâÏå¾™Œh5—Pö†±ªzEÓXÒ,ÙZÝ´\Ð\JT‡ŽÉ,k› ºãÊ#çOµP~]ȼøÖ=Ó†QÍe!3Í¿/d2•Ó‹.%…”Ó³¸È¢B^ÆyA ܳ°^ˆ ×½ ÄŸ¨æ9¡¶ç(þÂï‚AöÅ)ÓA㌛X×sCBCä÷{>¤wjÍàé”`ⶱ%JN2ߤ†GEQMŠ)–\ J`´¸»K3¤WÑ}<_Ì¡ŠAͳ¤Æ½%µCÕk`uü+k 67” l‘œãyÔŽÍ<—m ™6©œ»ºÒÈT Ž´êD­=º!iˆI)áª`k*ŽOÖt¬Küj÷õiö–¢.ÕÁù±Ê‰wuÖ±*M×%-" « uà®U?ž–û8Cnm&U1¶:¾Þ\ÊS½>ÙkymÌùÚ¡—Æw«ÿ>|ø#ÿÓç2‹±2
+þ¢gl|2îûÙàf$ï"Ú.²èæ&žœÇêˆ åcu¬ÂàØE>‚÷õ‹ÄŸþ½i¼2‰ñI­w#T3#oQ‰C+PSŸ¼Dþ')ÿs¯Ð1»ÃdÞж=¡j{•x¸“›ê>nÍß–•Ëo2ÁüJðé¿Sh¹ŽÐKÈ3º™ŒÈKéÚC/¬—6Ž4ØÑd²È¢ÉC/J€ /ü ?ÄÓdScEgŒé2èJÝË–¸[NAÞ±c‡©“ÇÓE4CÍý,K³0²¼J§9–-ÎóvÁú{cµ]5y—&¤pë1wíØnÈÊÐc_k® |û›£~³´H'é¬ÙÙK“"Š™ab­éjàçOðÔT ¥
+ÿœ-?RÚÍÒïS9‹N[F¾ü¡Hg’lãt›x…°Jéˆlöu|\ ~ñÌI÷¤™y(%^öð 'ðc|ù>aпØ0³DŸ-wp¥¡m&ù ¶ìƒ¹ò¥=<7ù·ž ÓE'·Ýé4“y^aØþÃŽSíÒyá]Sdï¬èÇLUªnAì‡ÿ
+endstream endobj 1340 0 obj <</Contents 1341 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1341 0 obj <</Filter/FlateDecode/Length 1419>>stream
+H‰´Wms›Fþý;ùC8^$‘™~dÆ¡#K
+\Ò»ÓÁâlÓ‘ÁœÄqýß»wÜ $!;q[iƇÛÝgŸ};M(Xâ[^Áë“Ø‚«
+^Sò§è%îLßw]0||vmÓYxs0ô‡@o@þ%$ˆ”0-‹8@WàŒL{8ÃóMÇÅÃ)hC!PøŽkZ. lbº@,Ó±Ø#“  dð ä0¡[PP±Ðkð'kôó><›Ÿá¿ÁwÖؤ1êÖ‰­yà¾:ð¡Ù0u¢!8×t2ÐlÝ šÅ÷ òô?èÏì» Ü¡ë›Þ@âu@å0û± qÏî IEG»g·Ú‰múOª›áz”Ë=×÷,¹–cn y/³Âux’hÍ’=#<QFÊÈèeF:Év¦9'º¯-û¢Ò14 ÿAq³Kž@¶gº"3øÄWÆ3¤Ô=­âY‘ƒN ƒæª¼² Â×âÜš%|·b ÒÏn]
+endstream endobj 1342 0 obj <</Contents 1343 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1343 0 obj <</Filter/FlateDecode/Length 967>>stream
+H‰ÌU[oÛ6þ+ç‘B–Ô]öà8B !‘U‰é†ÅE¡ÚJªÍ‘<Imºþï#u‹"Ëmj¤@íR$Ïw¾sùÈS´þ·ðê<¢p[Â+ÎÞS`ÀoĺMG×;b®«„ÚTÃ$¦åXÀï
+fˆÊu&g†òŽÿ&ɾééZºC ³å« *iNs«Í Ǭs‡ÛT Ð õ©ÄùJ2ôa7§sCõ¥²çI§éÇy‘F›h¤YêžÙ(vçÄr^ ¶ƒÖ»FÚ¹b¡ ÕU ¢×eÓà³Y¾B1P)'ižÂ4$2ªwE§ŠíúÜ&‰åj™@ÝêcÕ[šjC³f§š]B¨¦Û€m(S#º>ÒF…oçsìe7yqW’Åë׿Bä¾¹rý¹ µ±UmBÆŒ0MdüLDYž­P ÇB ~§Aˆ³(â¡çŸ·Kyºý‡ÐRY*'PÁ‘@ée4ä 0ær1çîSÈK€Ò®ßÅ_¢ô¿dqã5lúH™9-e‘Mi•ºØýR%Y)Ü•r±vØnvcPäU¾Ê7ýÉyžUqš%…HÌì'Obzn¹ƒ,î-üÙEKe:…ˆŒC¤¸äˆosw=)êÀx7´|®ÑAÒÎüY€ƒpÁóÅvÿஉꎘn„Îá Šû—ã¸Ø&EÃ0ÈË2ý°Ij*®ué†3îž}ƒUQŸW+¼mOZ*Ò?²Þ#Þ™Lo0†è»kÍæ0î¾ñ(coѪ«ÕÕ©²ç»–øŒfÞsäÜåk{qé§ë$«Òê_)ç`ð½Ÿ<¡¥`݈Pœ¾˜ÍO†zÅ•ÃSÑàÔþ}òrâ¡Oˆ±¿rŽëËGПH,Ñ,ð¾Oe¼M1’C½£ w~餔%»Ú®ã*ñÎjþžÏÝs7ýL…3FuÛ° Ù×c2ÑǸHÖØOªû¼øûèÇ«î÷§.À¬ì›5˜ÞŸîr5mó&~¥I/Ýx8¨¾›“Ý8z`žrP¯aIv“oÍón¨¦b8LpRVñ‡MZ~¼wƒ`ºNWq•‹ˆ° zÜŠUñI\½‚Ï®×ý÷\©ßÌË1R|¹ë_Þ%Qz›Å›MšÝ¶¹è:ñùŠìŽy¤Ä‹ð¿
+endstream endobj 1344 0 obj <</Contents 1345 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1345 0 obj <</Filter/FlateDecode/Length 1089>>stream
+H‰ÌWírÚF}‚¾ÃÿZe¼­¾@™É ŠKÆ‚ä~™¶#ÃÔÉÕ
+Ç­ÇïÞÝ•HHštêáÇjV÷ãÜsÏ^-èê—~„×—¾9¼èï:Pæb¿M\ײ
+c
+-o²7h¹vPëÇé$à/7ÿ
+Açcxu€ä‚ú\©öpoDêµ¹YÅ€
+‡¾|.—pÇà>e\¤hÙ‚å¡äÅÌ?(¨Ç–ÑKÿ‚á$‚˜%k.ñ”תâÓƒDT›³ ²Î~fü ’ÎÉ`|ÞȉU"š­Ã¥8@»uªÃ0nzwà0Í
+¸Ãy VaÍyì5¾=0ø‰‰—7áÔ\<rܾéx'þEðAw¦SÆ9ÞéÛñ›N] á:[$iÄÙltu=àå7§SÝÿzÞXÀËèý1hÿ¯š¯B·rWÜA†œ²úuT×QÛ6m1à7ãösˆcù,}ˆ¦ ƳDŒ•ÅÜ\{ãNàõNÜÒ…Î|é_c¾HÖ˾cøž¥’]6;ß¿‹r‹“ì ëáŒâ[qÀSüùG€
+endstream endobj 1346 0 obj <</Contents 1347 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1347 0 obj <</Filter/FlateDecode/Length 1382>>stream
+H‰ÄVën£V~‚¾ÃhAX®¶Y©?–¦´)öÂÙ^”¬*NV¸@ÒZQÞ½s.ØØ]g[©ŠÃ9sùfæ›aÎ ü¯^Áë‹Ä€U¯‰ù‡&<Ÿéžç8 yøìXº13lp'údêMÜ*ùÄ5L©¡†iÉÀžéÖt
+šë鶃Â9(IB®ølG7˜X¦î€i趦5ÓÍ Ô~…ÎÉ4ÌíjìɘùkÏb2Ì¢í |WÂ'IжjZŠ ŽÉ~møE誩 ¸VTs¢Xªf*;7Ù“«~ ?2°ïvp§Ž§»‰×~*ƒ9Ž«»Þ„çN“©èYw­½uÓÒ½Ï$M?ï†ÙéÜε:ð䶾sä~fÕ‰Vì©3pˆ2ëœL½ÿ ¶=ê])ö…:U–KV]ËÕ^6Ø/eå«UWiØCQ• š¶‚uº¢ã5—[Ó”687¬}Õ%LKÀäè¬ jêSϲ:œ†íÌ@›± ˜Øºãw‰®ëœø†PÑLÝ´1³oAyêÎ3 ßÊ~ê9²¦Çe“ê¾Î¨F*’Ö+Új¤NËf“Ö´lýªlÓ¢¤5¼yó,|‚ø‡Ñ…´¿wy¥hÛ¢0
+»Št>$‹¨ê1ß?3Ò*{;Í*‰EôáœޠJEÉzÅžèöÉ•ã}8…{’§ç;v¯/àá1§ô<¥|º^‡o¹ ÿ‡EèðȵúmÙ'<4\í=‰ç‘ÔU]oª
+×ôÍZ)±A\™e$œ?âºÚ°QºîÕyâêöÌ•_š§³#䚼ŸDþ—Õ§›#üù¹~R#0bǾ֛@b6ÆýÃñ¹ZÞß}¤õâ&¼˦MËŒ6݈†W#Cù¦ëJ|î [5¤z7LâƒÛqÙmÕÐ2,[ºª±uY#a­Qe¾^Uxr{'Íù'²Ø»®\ õ¢ÛŽ|#Ö{·00=$ºœ"ª Ìêí¦ñûªNŠÒqͶ4ÿ©;èìy|–Y±¹¥5Údpö&9|A‰cø¨ï9³Ñ˜ÂgBð“ÏCÿr¾èbùrûä`‡¢\‹#îçÊÛîý€£0û„G_‚Þê¾ÛË75mØnXˆ•š›è/–ûàËøØæÈgÜ6q¼¾zð¿(ªõƒX÷ÆÖì$Ž’W8m‡Ö~ëdCH,ö|YÊ1@røÚ øpIú_â=5V\¢þ`
+endstream endobj 1348 0 obj <</Contents 1349 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1349 0 obj <</Filter/FlateDecode/Length 1712>>stream
+H‰ÄWërÚF~Þáü„NVÑêòL~`¬8ê` ’œ¶:Y¬±R,I8͸¼{Ïꎸ;nkf,±»çÛs¾såÒ1ýDsx{m‹0á­Cÿ‚së=A׈ŽïŠ$ˆ=QU´®ÞçÚÐq¾¤4—D‘Êàx ÷©Û¢ê‚¬àá´ Ç6Sï +‚¨€&QA*
+²Tê TƒˆÁ/À¥³¡
+§¸„¿‰=p¾m«'ñ3QÖ3ý>gw:6bw¨ÔVA¡ü)çlAèÐ6êÓv‡jm©Ch[ä딿©ßŸ¹²Ku»Š.¨Z®¯¼GU®ænÝRqU×RîHNE ]•*t* ú2zÿ5§¸FT¦­›QÊ‹Ô—ÝÂ1Ôœè¶ÜU·.áÒ+.éê¯àÛZè}nË×n{2áÞ•TAIÝ&Ã2£¶cþâ‡t¨ÜFF•Âé"X¸ž[0—¯Æ ÒØ*¯çjJ™š©v’Æ¥BW—¤BOQVz@zÜd4YP”f–DýKâDƒäÆ].ý`
+%ApF`1  ]‡$¸w  ¿ó™ ïÁ¶.á1wÞ‚¹Š ™¶RµÂ(ïÁ ¶
+]U™sÜq +˜ÓÔû¯yg8Ÿ“Â5€«r4È<ÑÌE*T§ÝÙÂÒ²úž”,ð|VdŒ±g}+“·uËP#wÿâ8–ÏøÙËU™†ëL£ik+ùj”7ýmy¿~8Ó^1†ÿ0
+endstream endobj 1350 0 obj <</Contents 1351 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1351 0 obj <</Filter/FlateDecode/Length 1145>>stream
+H‰¬Vír›F}‚¼Ãý ³ÙåK"3ù¡ìª#K2¬›¶Q§ƒÑÊ%•€
+æŠJlEW5¢`±NÄ“¥þMÁ^mÃ혲ì*^ãD¨"Ìã±Éã–cKí´JŠº¥ïЉŽœgÄàЧiNMƒÍ¹Úb2±¶DÖëX†U ­»E"ŒÒ­H,ãÙÒ>WЦߌ‹ÙL”S·P‹Ž`uw^:Á&ýãȬ&D?Í+ñŒÚH¦°„¡ò
+wLÞ3Uë(¹|Œø•( ¿êJ,¯ òåò”.¯Hn1Ë.<P‚­äzù” åaÞ­«lôF6<ÕªHØ0» u…l™æ~žï]iô!eðáÃGðÝ«kw2páQ¶%AG¯Ñ"/þ§Ájå?¬o’UÎs"Ž¥€üô§Ó±Û›œŒŽþÂÇÁ}´`ý ^ÀÞ‰ŽwÀÄÀÊS½î–Ce/³Æ!™û­`q%±Lc4¡î…ëñ&Ö ŒiŸBh®¾Þ½¦^orž±¯‡Ë÷…š+þè/q#­ƒo“lº”'Ä|®rÎé¹Ü=÷aY-ø!jŠJø e®ðtlË2¬¹Z©¼,¬Y×r_3:šNzã³Cá·ÄÜW‚ rwRæbQÆQýXßgYR$a²Úî$qD1Ëxz-ÁâÈÍŸàiÇSû¡ÚÇKQÕi›¨€;¹¾t½u‡'4­ïì:ëfÉïˆÕ\ÞnÖ­£»-|twçøn‚ñÏtø)E¯öfÚÌ›Òé`:ÖÜ?¨;ñ¹ÀR ÇVd»2?ÂhÑBs{Þù`R–|Á¸S*=ðFt4èGôO><¿°°à¿XNGÙQBxfæ¹¾4~’Ü)Áê©òí©rñF=nÒ¦vr´<'™¿¹ÉÃ,ºa7ë2Z±Ñp™dÞùì`>ð®Õ-ûu“ÁO6YÈü"(¢¼ˆÂ|ÈeZ$ÙË Zsä)cá¿Çüµ‰ÿ‹“ûø˜ÇŽÈô‹ù›4M²‚-¼^_›Y°fËúQ‘óü¾;õ|–òców£Y°\Fá0ʸ_ÄÙŽÁš¤Â}S 5F«ž¼ùªÏþÔo0h\ÇQQ7Q‘CÊ'WÎÂÃx^2“JÈ°ÕŠ·Õ Þ£5p:¾œð÷c\DÅŸÒ³Æ×vÍy÷nMXÒ”/~ŠÙ-+$ùbûN8 ú©¾•ò‘ß|7µÛ÷ òþÀè{Ó„ù½¾V•}χ†Þ+ß›XŸ%Í¿j—AšFñ­D¬
+Òh<hwž×߶ØÑÑZ÷Õ!è`ëfÆ-¥ªÿ¨ÿ`
+endstream endobj 1352 0 obj <</Contents 1353 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1353 0 obj <</Filter/FlateDecode/Length 1001>>stream
+H‰¼WÛnÛFý‚üÃ<’…vÃåEôA– ‡…-)â:-jE­m2©tR7ð¿wvy‘lÒŽ¡8È]Ξ93sfG>â`¨¿ü
+Þž„\𖳿 `À/qD=϶xøn›Ô8C:t=ø h óÔ VŸ †Á,à1X#jº.Ç£–ÆkÐ|ê€ÏáX65lšŒÚÀ j™ÀÌeCÈü)ñTXáùfŒ€éÒ3¥D´¼ŠßE哇ˆ­3SsÀfòiÁÇjƒêLC°Ôt6ÔL0ÍûL¾9ú_ü7IöCK×µ=ê k¾ÖT%Í~nê¸ã UîHŠ=tÇÜ¡3“zÏ$¡Ÿv#q7†½Ô;žlâ­#ç0/é­Y®Ûq"…2jœ¸Þ+ÔvOzšu¢»Ú|.«k:ÔVe³à³|
+Y¾\w´B¾$Y
+:³4̨ÝÝ€~VvÉÝB€Ò†¹«zMÓ¬h*væ°IˆaÙ# #¨C‹Úö£ÞG„ç“÷ä,Ún“ô*(Å ¼{÷+„þ‡s:ñá«êF]Ï4«  £ÌÂœc|P @pŒÔ™çh
+oW—›ìKx|NÂä?ÑÞ³*‚jL¹â/Z5”Ú†ç,õ'î`8O“’Vøx•1y÷OÑÙ„ã8«[¨nž¥fʦ9¤¬|¼|Œáµtz6MÖ"-“ò37ß[v‹)g²nóŒ#m<ù)Qõ´rãù{[a‡~ÈÄùÎI©zûYvQ~%J³0»ÍcÃ2J‹m”c•v9ê(éñ¹P2¼F]¾Tw„?OZˆ ”×Bš×Ñf+"³µXãÝ_B„çÒ囇žV·ø!Ž³|ÓÊL!”w[ÅVÄÉe=.±òLË.«¯*¤žòwŽÚüò¿
+endstream endobj 1354 0 obj <</Contents 1355 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1355 0 obj <</Filter/FlateDecode/Length 1230>>stream
+H‰´VÛnã6ý‚üÃ<JEÄÕÝR€>8¶àªÈÊ^™½!^ªE»Z8VVVvù÷)J–åë¦ÛäÁ$5œs8s†œ[
+ºø/–ðn4Õa¹wÔøSè×=âû¶ šcÛ$º§[à¸Äíù=  €J?‰†ÜAtÝ°€ÎÁòˆÙëæøIJÑ8% ÓPl(|Ë&º ®i X&¦G 
+¿Ánét,üj|¤{@¿îÓ3¹ ÷hù¿û
+“NÑ·j˜Š¶Á-øµZ ª¡ ˜)ªá*¦ªŠÎ× >rÔôgNöCC·gûÄq%_ëUNó07±Ýñ];M†¢åÝ1·Þ “ø'‚®Ãp?5ŒnÏÔ=$[·Hä¼ …ûpd «çíp¡x5HÏÿ¹mIï^±FjO™LxvM‡Ø"m|á¿Œ§¯PeÃY¾Õ°Œ¨]']‡? »Køê†Ð†¹Íº¤iV4;Ó­¢[¶šÇªƒká!;µ¡iå%»p åß æOEÁÖ%|aņSʸœm`óÈæÙ"›'%®^Wka
+˜'Eñ,¼ÔgU¤žÉ5‡F“bÉJˆ£”¹°ÔäwÍ †e #¤5ÍŸŠ9v´HÖ›ÇDäë2ÉÖ¬¨1äÁÈ‹CØ5‹n9žôÊg—yÅC&›Š¦.Ú~Í0e Ü’B¶æéµ\bcjïmÿ£0—Æ·¸e(ï¡Õ'Ö4Y”§ìV£yųžn™6DáææG(j`Jã0½ô^¢ÞN§ ¤ÂSñ–ì¡; «ÄTöѹ ÏÃw›Uñì°Õ*Lÿ¸U … FA,g3E'Ät=ÛrlÇ™©;¸×ËÔà§q8àEìèr¬½•b
+RÃ]
+BÚ˜»QÝœbE0¨&R?¯o—ªôË£7 >üDgã÷x÷>ÊRUV>cD&­éÁøÉc¨èÀá!„
+òºÉù.À}#Î,ЂJ¶æ7؆/
+òcý;)ò2Ÿç«Ær+õxiŸ‘; ƒÍ+¼ÂxBÃqÔ¿Û¦ò šaÃVl^²”ö à°aÞŽ
+fò|rèÇr"Ýà q?êO´I<¦ãÁøN ~§A4Eú"g‡SÕ’W—”ÚSL½e_Œç5$kéb adWýVQÝubÚÄ¿è¶VqkÒI`ÇyQñi×wGp Î÷\x@p”s2§u²s‰Nv
+endstream endobj 1356 0 obj <</Contents 1357 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1534 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1357 0 obj <</Filter/FlateDecode/Length 1045>>stream
+H‰´VÛŽÛ6ý‚þÃ<JÅŠu±¬
+؆H¾7ŠúÑÑ8fx?ìÏÁÁOã)l4ðeáïݽ7þ¦÷ÃÑ8Zñ8G•5^[e™òäS´ä(uU ÍMò%O¦z1EN•~ˆÌ«Džæ}Éxœâ™“ŠI©ÿâcùœ&»l·Ümª•½]œ…QŒ }†gQÄ÷ÒxÉ”ù“ñí°iŸòGf·ãÛ©6Mؤ7jÞß̈&[p\y<œZÍZ€~ÿiwXAV)ß8éÚzcèíø$i¯HÁÝ´ä}¾Ï>Jlo|?òf·ÌëŸ_m·M¡• ØòUtø¥Ú~9·éºá<ÏË×»dfò¬}Ûô—¨Û¹®@&‚Ìxaÿú@gó7§êĽ\«ÌYßdòªi¹ J0tÇ>|Œ§anyÆ“´
+endstream endobj 1358 0 obj <</Contents 1359 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1359 0 obj <</Filter/FlateDecode/Length 1204>>stream
+H‰´VÛr£FýÿC?BÊÌr—pUd‰Ø¤lY+Æ›‹•J±0’IР
+²Ÿ7t{¦C,»æk *hvs+Í-Ç.c§Ô¡hy·ôgïšNœ‚®Ã? ŒjÎä=$S5ÈÈzŠðaÕ–Œ¾º"„Òo@zÎÿÛ–ôn$ãLîI“‰È®n³L›wâÉDú2Ù’rñ§dÍ0¢f“t¦8]®KX Fs¥6ôç¬×4õŠfÉN·Qô]oxª†Ù¥/¶¬‚mÓÜ=%„Røje¢hD30²#žšñèwõyjUk5§\K³ d“,]‹ ÀMM‚,X²‚e¹âþ]xnÓÁx0Q&Ó+z5¼ºPÜŸ©;ö½«1œœ|¥ó6õ.Š5l‹â¶É \o*²S¦Yó…Ïò{|žfË’<`葉$˜ùîçkw<tEünŽ7•Ó9Ë&Us, ÄnÍW~¶5ÖÛ”ö¼uïö¼á»"Œ‹¥9È–Ó«Xa²Š4L“Íä0åEs–!šØýãÎóµ¨Õ‰~ª—7Ï« Å,.:öýFñm›tf¶6z#Å÷hñcÐb+ñJ™°– ½1uÏÜ)¶•Û² k&7¡}t7ÔîS@_ )ÖŸN½ñâûÞ¯.>tBŒ™üŸHЇ•À¯DþÍ´6z XQ`³»8ó/«f‹7…7V Qõß|‡Ã$ÈóRîøúÒ¨;zE)aÊï°þ•Â ’ã³ — –˜öödcs¬žAXÄw¬Ëökþ¹ÈÒ5ºŒ?@¥"
+çä;Éâ4‹‹èJR#ÐGÈW6UêL>†ÛxqËò¢Ê×1$é}ýeŠOž*«Ú©²ÎÙì(SBÚO•Òµoù¡»à9
+bÄ’à¡.OÏ…Zp¯ÆšT_í~Oj×<. Îa'IœãæÑ;š“tÍóub˜¯“ä¡d¼Œ‹‚E£ ¾¤ÉzÉ`¯ ˜ºc:vOwJŠïëˆ<_¥Yq<°lE2€%AÀŸzç³d«ÇB|õà-Û§Ùð\ñF°ÛzÞ°ÃE•É&‘£­ïú°õ›ÅåÑx{ Ózƒ¼Þµ¾~ÅzG77›˜îtéîRøBË~Ä»M~ÚÅÿ¸ûUU)Ûðoé±»Gh³/ÀŽµo¿xóµ HñàkÂÄ5©<ÁÎáÜWÊd]†J¤ü€ED>q\ï­³j±5„·ç,œG˜Ýbúœ…G\GÊm§çzÍpêQo8¸ðè//xšívÎçv3Üdsêú¥¼ÓUÕ"žþénbÝa±„ÅUFûAáÅìèõ `oýW€
+endstream endobj 1360 0 obj <</Contents 1361 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1361 0 obj <</Filter/FlateDecode/Length 1076>>stream
+H‰¤U]s£6ýý÷:‘ñeØ™}ð›Ðql/ÈÛmíNlj‰‡Ö/àM2™ü÷JlŒÁu²öƒ@Hçž{îÑU‚"þÉ
+>\û
+¬Rø@Éß
+ lÞ¶­ë€lö¬«X± ›»tÈô±ƒ;°¢ è=hV;@†5-^‚äPß
+ßAÓ±¢ƒ©¬Q°¦Q-LLHø"èÑ#* Xà"þ¤X@Oé©| GÔìœß,I}†-U2@'|Ôàk>e"10—dbJªŒˆ¤ðyŸ ù/ú'ûeO·£ÛØ0 ¾Z UN³™›ØnئÐRTÐ õ€NTlŸƒA·‡á8eEŸË'‘tEÃû@Æû¢p £ZÒ,r„Å*‚XöÙҪơ¶Z{m+Ö›Iڵܑ&^]ÕÀº(›?øÈH•ÙÒÓÝÀVi9[9c7sωè휞V’
+ãd¢I¬z:¹Áð•€[j,øl
+D³Íj."˜hL²kcqæþ‰þ
+Òkùz_¬$v¾’Oå]¡ câÐ0L3øøñøΗ©à1—|÷O>Œ7‹'¯ÛCþîîÑMçò\†ñg\§W-€«œNRh$–̳pµ
+¡/›4ö:ÖGÎzܧ¬Ø>õÜÑõ¹†±ª
+²BIå$ûs $º‹¢`íFq²YðšëóÒ˜~Ìl“%‹(ÝÆI6\<Iw¹L‚4™‚6}º*9V5€Ý`‚&l%í6wAÂN€Èšæ`<¡Ì]Ýáê”U!Yè ç) ¢”e•¶é;Iâ,¾×û•ý8ÊaÄB¾ÀK®ªÈÃ!]'}…×:“6Yø¨0ïór%ðº£.ÒÓq<D‡“È+Ú\ÈŸäø›=oƒñƒ“$q"è8£é­ãu©38k1 ¢8C»h$iÇË«JØ’È&LÓ0Z]50z[÷¸<„`ZGºdßÔAÝÕ* V‹,¸]<…›Ý¦f{{ө۵ âÇhFÿ²ã"ÌÞ°¶òäTUÅi7Ý
+Œ3qŠþKá|ŽbŸ¬EæfcÏÎ(^—JT ï2îˆ:׎W¼‰»(å¯Ògk^守 ÂîÂ,…-ë!ipá!o«öÿJû3Ì+~¾€yUûËKà†Ý»qòŒê×ÌÑ…öŽ^È ÙÍÉ‘ú7c·õà”Pá& ™\àÞún“ ÃMP|wܦNÃlzºm–ïKì$öû_®ã¢ÿœí—z½ÖRüž‹Ü]SaÚþ'À
+endstream endobj 1362 0 obj <</Contents 1363 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1363 0 obj <</Filter/FlateDecode/Length 1116>>stream
+H‰¼VÛrâFý•~”¶<³Ý@®Ú.ZG),X4l.&•RÌàR
+$V‚M6.ÿ{zt!„ƒ]ÎÚH3ÓݧûtŸQŸƒ–ÿ§ðþ&Ðà!ƒ÷œý®¾Äõ.uÓâ೩S­«`ÙÔî8àkP@å欴 šÆ à÷`t©Þé
+ÒqÞ€ÛZëÝ)ÆÚQ&É®nQ3§Í€¯òWHúRÕR2ù%1¨ÌP°¢fEºSÜÎÏ­D(W3yoèÖK˜z3G§Û(£G×+œšavteÊØ5Í&TعAß#Þ®ªåt˜¿'Üû½ÑäÁ5 Œ2k?¬÷Æý3Æ‹¿“†˜âT"—¸oEœa!2¹Èk¿9I“mrŸ¬ö'I¼ £X¤ðU(éÀs³'x‚F¸z)$jæHÔ
+PJóY×[EBÊSµ~ß0‘˵"5€À´ç÷&d2óñ`<"îÏÜõÄ×׸tõÿ!kz®˜j°
+£Qó:÷=^>|êù7åË\ ¼_ݹÂ(Eù›«sµÆâB`*–"ñ½¸>ÅžÇ\nK¶ ©ÿÝ Y$í„Äv† guDn8r:œ‘@|ÙI§þný6b£eežÏÝwŠÂ­Qj[–aÕ`¾4¬ß´ŠöVQÛÛãO¼x™¤ëp›ëTÎÒ#ÜO3׸åûã©B(°Lõ@ø~2!ÃË×Z6W%#õ¦>X /°Ú«Ñf±cæÇzÄ3–ÛˆÃÞ±£ê*ñ¦§á‹=í1-ÂmXZUuK«Bw›(Ž¶Q¸Š²¼æy”"´äâdëêLû_(°— -µA¥rRo+ûÿÐݪZÔ­$üDÝ.¥ÖâÛ ¨ÌáÑB´ <ZGñÃ0Z–Ú1É,Ï ¦÷½‘Çè!Nð“A%’œC˜VûâоÚS7ÈÇ&ÙHäáêéêdP_¤îo]Ù»öf«ºGVr<àøRió«´mBn“…ø,Ò¢5›=Y×6y”±Š
+K+³ÜßÏç¸ÝúÑ3Œ¶ß‰Iíµ@]¨ä}áX-´ ÿx˜>ˆmoñ$±–aËhËMøìÎÒ¿
+endstream endobj 1364 0 obj <</Contents 1365 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1365 0 obj <</Filter/FlateDecode/Length 942>>stream
+H‰ÔWÛNÛ@ý‚üÃ<®+¼Ý‹7Ž+õ‚©ª$% ­„«*
+.¸
+N›¸ô&þ½»k;ñ-&TPÚ𳞙sfæÌØ9@ÌßòžM\®à¹¤PÕy{žã€í©k‡aÒ#Dw]Ïy ,ùÉxÐÌB9Èðf® ¶ð0w”ñ _NÆÁ—𸃉]F±”`ÎÌI–!¼…d‰‰ŽÛÓqõ•ò“ßêìQìt@îeô ¢œd˜o6¨B`§—Á2,ØTØ £#¸^wS…
+@Ý£Xt·'Å=a›üÜ–¬„«NS¸sD™E9àPýÍá,=ÀC
+dQ1¢Ï¨°ÞËWer®ãiNYÑïºqYêv-uW°MtÊ°×’½
+½FÇÉaˆX5$‡p¼†¢cˆ\.¼Çk Zíy/©ëaÚÖÌu/•Ž·ö²0?çˆY.•H)EY”!5?7ú;´lŠ––@+}-b0 e©¶("p¢n»y8Õ§«¨þf›®g4YJÓ°cݼ „«1°{:Q]Ž§2à§òdh÷Ãù|phûß“¿u²?¶Ç'#9ê^Ûþ;é'ƒÑ^¼x ¿Ì0PìzŒ¥5°)¦\µàP
+ÆØÜ'ú–|è6ÿw–YR/µL‹¾ú¤D¿`nÛpV´‹ßY8_̢䇿J¢ëišúÇ£AßoÍäÁÕbý\ÄÉtžQý¡ž@~Žk÷÷Àt¥H çm”\…Ë$š5Æ<n5,o!©}Oã™òžF±Ž/<5Ò­X6°o %NûñEj{A§n¾× ’|JLj:Ú¡û稞4X¶.ˆ–ÁÄsêS!èÌwPÂäs^¨4Âé2Š/×Å-–·b³.k%#W͵BD‘¯/ŒWj¬ô¡Dvs¼\$‹Ùb¾¶èk(—Šö¯†®fC| ·0K5µû¯÷Úò{è¢7Ôü¡÷ÊqÔ˨} *Š> S½]…ÎsåKôCB¿'µi¥„ignyZÊn*3ù§aañCË­©€é§_ Á'býÙWË 3¿sOÿ2UÈ_7ŒûZ§ƒ¡ôüõàÓ‚ Á˜ XÅEù‚ÝRÍ\³AçZ˜Íï’mÐyÜ zA«¼ì Ø{=lÿîb]W­„Õ¼n›!tÍ.ÊÉVÇ£øn¹%½|rJ3s÷$ÞdLk»Ïãc¾¸Ü¡Ÿ ·½Ô¨Ÿ@¿
+endstream endobj 1366 0 obj <</Contents 1367 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1367 0 obj <</Filter/FlateDecode/Length 1086>>stream
+H‰´VÛrÛ6ýÿÃ>’Á…¤ÄÌôA–X‡Zr,ØéŒÕé0$,##‘
+IÙU:ý÷¼ÈÔ5NœRAìîÁžÅYœsÀå/›ÁÛ‹ †Yo9ù ~¯æ{Èól,OmŠp3p\äv½.ð`òÏ¥©-Æ„€õívÁr<Älµ8Ãç“ 4ð9|f#lƒK ²`Ä(ÚCÄ…LÀGHàœoAQŽK¿–áð§}xT¯Ñ™Wừbò‰òmj8`ýÏක@&1˜&q jZÄÀzžè‘cþÉÓ`?làvm9n—ªaÆVš;ž[æΪSÑòîÐgï„"ïD2”ëãa´Ÿ& ¶§æ^$3´ äüXíém°ž½DJ¯ Òõ~·­Ò»3Ø…Ù5®®4»ÔAvIƒGý/4}™é¹È4“0CeÔnHÇp­>—ëæ"Ô³¹€²6è3ë5LZÁ,ÑQW%¨ëQÚàÄÌîÕÓ[Æà2dÛ»§!T>®L,‚S™‚ño3SŸ§V j-ñʵïÓL~M“"œ”ÅíÈ
+…ó[1O#Y¬ûI|“Dj2”I±¶ü¿‹ÀÏáº?ê_YW×c>Œ·ü?¸?šžM‚ñÞ½ûþ)¶·ÓÂvv ¥{Ûäeø'K!bø\„™Lf%”‰ÿáÆ ü“˜î øTÛ˜ª¤¨›'qÿ¿®ç§Fˆ9ÞÔì@Ih‰òò°eÇÛ_ÛÝ©Ùø:AãÖ–ç£6Úeð%iØlàQd²ˆ6ð¯{½ãìdb“Ï-GC™‰¨¨ ñœÚetwÉN.^SGBèŒø£›KÿºÏýá7Êuµ|
+³¸S‡o³§O‰þöíCx’½c5Ù€ïGÑ* £õ …J›_qp€BÛåÈãéÚIe$&«å2ÍŠË°ˆ‚$VŠ4ÛÏÙNÒJÉ+Sq0]IZXüOÂà†§Ì´³–cZ‘á0‡U
+3×Aî^ÇPW䘞ƒt±(kÜaÄŠ{™H³gèŠS_óŠ•ÃÊŠ¾ê~ªq慨eÁ›W=åæ5[ÊÓIj®ÞE\â×àó}ªŽ˜þ`ßÉqÕˆ*Èðùz)òú@oy‘ÅÊ*Ô… «ã!c‘ò^ŠØJ³Y˜È¯a) SC]j@¹¬.ÒOr.†éB5¿zjz¶·ñÕ¢È-uHEž«E´2ŒWs¡_™zËÂ$\ÖöJs‹¨WÒ|ªñOÏžwP¾´ì5›Cÿ×`pÕ‚'пáãË>Àû“J1¾¿‘œûÁè ïŒÒ~­\ºû€º iyÚÓL|VrÜ9KÒLt´<ÈûµÞsK½^ò*¹P•&ÜÑ°éRsÎ;¥JÜš—E˜ÄZç^@>†…|+¶ƒÞƒªïÖÀÿ
+endstream endobj 1368 0 obj <</Contents 1369 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1369 0 obj <</Filter/FlateDecode/Length 1197>>stream
+H‰¼Wms›Fþþû2Ü "3ý KÄC¦–U‰¤¬N‡ ³†Ë›´“ÿÞ=@[¯v=M>p:nŸ}v÷Ù[|
+gã†X }Ç“E¸Ù9/ó¢0D›hÄŽ%”ÁƉã¾Bm{Ò»Õø•îhÓ©ª.¦U—ÃzJU¾\Z¡q–‚N¹†µ6E'0Ã×õ¹D†j·Pkƒm«ÞÒd Íš³Qj:.cž„[0*d67-ë)UH²(L@®£€? ¼+o†¤F[hÄ4m!¸Xèo¡öNÀ &å˜ü±²^%ÙeN©+”ýÍåGo´æþØ›þ_á5¶H+xÚº×Z5*<ê*¼¦g{Á<v6ͳH.«\Ž²¥ÌOíŸÊ×û÷?uäkÚL éÎï3)?ee‰÷­”i%òÇ°ßfå¥Ô|Ï@èStžžÊ­äñj%ó8]]Ë¢W]Þ”oòéÚ› o ÿ@œÆe–xÒX7GßBQE®ïªÄȪ2ÊÖ¸W¥Û]Ü^\l^´'àÇ‹’îMÆÇr©Äη=IZ­ n‰FëûšcÔjÔÎÞ4ì©ÜñÊ7mÝÕ`”¥E¦¸,u•|*8ÕÆòÓ ö°êø(šPöwÙÛdLM§³È0àÍúWç@u"5Yê¥÷ÚhJXÖ(úÅ~›6©¯Ãˆì”q[§³ád856\ ÝN,qY¥Ò=
+>^Ê´Œïb¹4²|¦ñß¡
+ ლ
+¢›–x™ZŽãj§f]ÄzEöÍL„ó+c&q¸ã`ï NaÑ>VŸšT\5Æ4—÷aÞôÈI8ÖÉ;ü¶˜3YdUÉa²ÙQȶph‡¬0yƒv,ƒä(L#™´4ÎÜ:Æt>›ÌU_–ò[`—w2‡Í(í=w‹“Œç2ªò¸ü~_ÊCžõ¾sNp¶~–áç,©Ör&ï³¼<? Nƒˆ÷y›ÎB–
+endstream endobj 1370 0 obj <</Contents 1371 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1371 0 obj <</Filter/FlateDecode/Length 1156>>stream
+H‰Ô—]o›H†ÿÊ\B%(óÅG¥½Hl6ò*q]CÚ‹¶ZQ;ìbp’¦ÿ~glðÇ8dw/vmÉFˆyÎ;ç=ç
+Ûq q
+°o#Ï lLÄÅ0Â8š©a ¾Ll‡
+õ2º ¨ ¢ÐÈ•Q íí¢8˜øÀò¥`¸Ø&ä8yfÝViÒˆÝ.Ù¶â 0ià@|L‹x^`Ìæqx.E.Ùx÷î—îú@éq€mˆ…çÓ–7+ó&OŠûкcu¬ÙXÐÂâ7-cšs–61OÊzÅøhMÈjЦ÷OŒU’Mª²áU!.‡E„š]†œW|Vfy›¼W‘Fc´œGÖ4i’_+þ#áYwý$ÖˆìHŠ,·Îž›^èKP¢Ñ¹åùSÒ°¹£½¡‘“¹5eIÚ(ª°<í™/!]Ä%«Y#~ªGžªò{‘äiÄ-¯æW Á+ª½ÏcMñuâ®®­»*ËW?—ìû#«›1°@£¯oÞBd/“å3Úa¬ë–Y¹ªøFqû Õ5Ì}mYš¯òt€ÁÛ·‹šiGJï·E^þ9
+¨z
+¨ÇY2ì—Ý픕¢)ÄÆú96©6Û‚5ªO”Ùg*›`Í~õ8q“Yå|#EBÒÈ¥{ŠlÓf\j=B_l½hùq2Yp¶M^[>ÄÕ 2¶L²¼š$Ûä[^äÍÏ»¤Izƒ´À}³¨§ã#µí[Ñ0X{fðlwp¹e7ÿèsO ûs}˜ð¹a¥œ ­JQâeS^û¯HÜo]“ý›äyÑ>«ÌÂzg|?Û´F¹”žŸ»
+X5UZû¤œ‚Gct¶ØVèëVÓ«vnÅhýÿTËœ¿_Mã´@]…Hˆz9¨û‘ ¥ ê^|ºÕ³Ç(_‹I:ˆRôˆ³·¥Žµ˜.Ú§Uª—0¶³¨rÕô/nêê[RÄͬŒßI¯º 0
+endstream endobj 1372 0 obj <</Contents 1373 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1488 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1373 0 obj <</Filter/FlateDecode/Length 1201>>stream
+H‰¬—]s›8†ÿŠ.qg ñÙ™^`ãºìÄÔk‘ìEº³ClÙaC8iö×W`c¼[ç"DFÏyÏ—Ž2Êò-ø8Ã*ØàcÿRᆮۊãè:ú¬kŠj«¦bZŽÂÀ(ü›ï€õEU!á
+ [Ñ, Ȇ£ ¾¼Ò4Ä>ß0 Á3@º¢êÀÔ ¢¨*HP³h‚œ€?@
+Æá‰
+æ\™=©6_/åiìFDN¥ï¾²bÊAM2€Ùoîªe%ª|—FД´‘ %•­CödŒþ cb?ȵtG1ÌZ/He2»µñí†còØÉu(ZtC;Ò¡¦8=Á h±Æįú÷Ñ…%]EÊÁñ߬0†QZB¶ua„ŠÝ±œ_ÛVéÝKh6²¤Å‚eW3§ ö›°ôå#C*ØCœ¥`‘D#ª7IWÁ’~ÍßKHÄV xmhǬ×2µJ&W§™M@T¤Û@¶™£*0‘¢ëçwÑ ÿ¶Áä)Ê£’„y´ÙÄ+/Îɪ¤š
+@­[Ž&ùA8M—àÓ§Ï@Ü<TèZ*Ñ<x-ärLwóÍ€DµÆ@Õ“]áÂǽwYB¿„ŽñÎÖZIe:'öoÈ I¨ñ¤~-çæÌ 7)ï¢dOŠ^4{”,næAƒ¶G"Òz¤Ü¸Å ¨˜†úôàÀ–™ Й ÛifcV4+²îé=rü´$ù†"ZÉç–œ¥;–ñþa“d¯'¾‰@–@P‹3Évq•¼5+aÃükɤ<I™àôè+öðäëܬ¿0÷d8į®¶L³l3ß'e¼ŠŠ“ü%¦A_üvÊÚœ«ìhw:òâD¼e0¡ ²žß?@æã9Æn«y‡voKc,1Þ«ó©wþCF¯­®™`\ÕÄûÝçô(šàÙ°‡‡;v.Ý/9yÐzvŸ’$þúätvÂéYºþU3CpL^iŽÿ%ô4šc?Ýd}8ÔnåÈ¡)¼úÍÍUÓ™¼íðá|/µrX÷?íD“_MëË[ãúº¾â¶vQ—$Yþק¶uŒ0C×jéš?-¿ûK$¸ï]º~°4U¯e7'‘¿&i—o'E"ζÚUk5 d/ÛEqê§kz–YÞ
+0
+endstream endobj 1374 0 obj <</Contents 1375 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1375 0 obj <</Filter/FlateDecode/Length 1187>>stream
+H‰œ—[s£6Ç¿Š¡3°ºqÛ™>8¶7ã6M½FÙvf·Ó¡¶ìÒÆÆ‹¡»þö•¸ØØ I ~çnÒÑ°øMwàÝcÁîÞ1ô'°­xîÛA@)°qO± }H€ãÚ®x€íLöOñª¾°!D°5 ¾=XN`*^Þ
+  íàJ –·ÝB¤…aI@ÍÀÜ òR1TZþrq!«IjW?•>Ú&2„AðÅ0‘k`ÓB”Ï‘¼sÚŽ{4°·ÒEF{]|înáµÕòÚsð•Ž°-^Tz-Ðj3’S›ô‹Ù²D!±/†œ·Y‘ §ªƒø~ˈ¬}¿6â‰zÕ¸sÍ!ôÕ9ltÓgƒ<šž±\Ê‚ÅŽM‹´ðŸ¼r™¾ÔtŒ“¼‰“01DDitVâßÅ{¯<’OO厯Y¯dâRf¡»R(²½
+EXÈFD$dVyºü=OBëen-fW0
+£KJ,û¡¤­&Ö49dü{¶Èø¾S£’E›Qp‘Ø€>ŧlÔQø-¡³(‹>$é·(݈¨Þ
+¾ø®$»5¹H`‡æ6Þ
+WÏ¡5;¯øW
+Kæx¯}Îˉw´è9-7Ðh­¸£iªkµ
+:z‘¦¨_éæ~1ÐàtmUãî— Ž PW¬Š‹\ü9MöÇvþ•p] Z²Ž21yt¥«.
+t‘»·ˆúDßLjv`Ÿè_Ó_’M¼ï±Þ}ÍA}ª¯hE'+Ѫ!ó}î,d5— ”|·B:T©wÚ=^kXŽJã¥ÓØùÈ;ÊKÃtUúÊYà8äà¨ú,œ,F{¬j¬p²\ §¨š(Lòtͯ»~È…ºy­¤Y,aQºã™ÅÒèp:F©8øÈ£ExÚšªšÓ”‹º§©†â=B1Ö)®…&µôÑŠó_S1ß‹Ñ2JÏʃŸZ¼ªw„εY·\(]«wWÕCó¦Ú/½­Ã©Ú§ ¥< DgžN6›”ŸN× WÕD,w;ž6"9H¦ªn“ÒD©Yªnzy²ÙÒZÎ^Ä‚)‘šç|ÿ—(¡¡[’§Û’Êù4Kšç¶Þ8z¨=EÜ‚Fe=Õà÷3?‡Y”å§Þ
+endstream endobj 1376 0 obj <</Contents 1377 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1535 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1377 0 obj <</Filter/FlateDecode/Length 1398>>stream
+H‰¬—]s›F†ÿÊ^¢Î,ÙåC‚ÌôBBŠ«ÆRTAÝ‹¤ÓÙÀJ!A ,`×ÿ¾gÙHhÉÔ¾–áÙwÏÇ{–Y€Hõ+öèÍOÐ>GoúA;øÞÑ]ײváÚ2tâÙc}<q'(8 ‚¯Õ´yB'„š(‘éèÆd‚°íê¦7GH[þ²z` ïÈ´tb¡±Au Q¢›¢†£Ó1ý…R4 Τ
+j÷ŽÑc­ø’{MäM®©HO‹ûŽÅ Šì%.UîA„ÝK¶n+¾$Ë Û
+ÍwIö™%Ûµ‡—óæÞ[UåŒ{TB9ËyUìP¯ð§—Ž¯åª„NW<ÏÙžû…(â9©Ä9
+Ó¤¨tn˜`^p‘·[I‰sê¦yþ8—ôDp•Eñî¹Në
+ÎÎ
+\ITµ‹¿á@x¿á;!ŽÃÚÅu:Ùj©\‚ñÿ9‡2jù;®èÈO éM,N9T–a=Ë”{=S-Ñkþ4ó}døCÉ«Ö2ƒÂA‰ª£ü¬!—þ¶™{Ö&ŠcXà,yj²Êí[_\~~«(iê¦q­o=ÅÓ0“;ßô€n¥ÄVlz#²Ç8ªKþÂÔûpcUÁ/`Bâ™ïáVž>%…Äšé%,ÏL|»àõ
+¤,|ö`¡CšRªš1  >\Âúp†Bã&ËcY²à5g".ž‡5½$S9sé›,«¯.úG„¹³‹Ã «2º,WUœ;NF©}³&à€ž²$h,Ó(»Ö·U~ññÜ—ž>õp„ß%Ù`5TÕ{.üÙ궓ý–ê•ä”þ³ꪜ«…»ž–^®¡ê$'É=œ9Z{'²ò8l<RCÕL§Î|W&»89@Õ6i¿8(©Éª¾º2^ê†h÷–«j-`Á8äa&"¨QæŽ|õ»>nÕtK!º¢Ãô9²}Eû±c15Tíú ä<.·Þ0¨¡j/ÞYB°…ÍýêÊ¡®¨j°-bHÐ(ß~ˆ@4Ô U§µ -k¹‰sÏÏë©ûëƒ#÷º<|–£¼m±J©|gá_A•ÇÊœ?°¤ìÌ5Qõæ2ݬ/sÐËQ½µxëÕlåßÇé·ÊŽ¯){¸M-ôŸ
+endstream endobj 1378 0 obj <</Contents 1379 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1379 0 obj <</Filter/FlateDecode/Length 1327>>stream
+H‰¬—[“¢FÇ¿J?bªš¥¹³UyÐѸQË(³yØM¥X8º$ÌB;—oŸîÔìVfdùÿ9}nŒBb¨ßbKÞݯ ²-É»ýmF¸ïëA`Û„âÚ6uÃ7,⸺ë ‰Fá?ê V=¡³HË×MÏ#Ô tË_Nˆ6 ×SõÀ$$߉eë†M\“é6a†n™„™¾Î\R
+lg,D¦ÄÝ-Æ@W°Ú
+udÝ8»E]¥kX@ÔÌÍ6 Ó¢o-NZ¨ï+uM(ÎÄ
+©Æœ&ñ”¿õfbU´/©<‰Zâ÷fbE´Žè2*¢GàP\äz +ŸÛݲ—D+ Êzæ4Š½ÆÆÉXýTôð”D\¶Í¾™ä`…Îï§}­„•LXDYù”\ˆúw±ªyÈÊ},ºC¹Ùïfiöošm«Ô§³;mµSáiÙ§ ;=ŠgO ŠG\-ö_¡èyâX w"Í3¡ñDæ‹Ñ»I··J'ûÍùÛ¬òô  ˜ÐñÝot>¼£bkØå/ô*IQ¦k`IŸï‹Fë5 ó0‹W×*áDËϸp‚GbfGå¸ †ÕÁ™›×ìý” +‘ôÂ\¦Ê8â‘boμŽàXèNïö |‚]_·ì ¶ëI“’§¢6à²;àDëؤÄ|È9<>qµ3öÍ mÛ!­úéEïÂY¢o Eš'i<ËcU²-ôÝõ\¿m…È÷bŽ^ô™^ÝËÅê‹yÍrNyN¿Ý—PÁ¦Ó M“²êa6yå%¬wª^ûTïTKêåB¨h3ÍQ}²r¿·2ŒR9 åv@Ä;’Š‹ø”ð£QiŽyUAÕ_ˆ®»$bm½ÖÍ£{eµzU–}½:Ì*ªbyÓ+»Û+ÔÚÙ«æRŽ»…çxSE·‚—ëxÑbÀk;Ó›ZO{m9‡Õu— ,n˜n'@Í¡Ù°m1ÅÃäc•žÁËìÖÂÛgùØì<_Rþm‘רÃìmžõ×[Læ[?Ýî|«¹øÜb¤/óR-g¢-Ë)¼†æ+m ÛSO¡ ˆšÁˆ²$¾ÁÆÑØ®:*ò(‰£’ß@!NŸ¾‰Ñ•m‡·²»8}ly.,©
+¬8ÀýÝúaÙw>ûU=NBòŸ
+endstream endobj 1380 0 obj <</Contents 1381 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1381 0 obj <</Filter/FlateDecode/Length 1284>>stream
+H‰¤—[s¢HÇ¿J?ÂV5C7÷©Ú5Ƹ +ÌÌÃÌÖŽa Å4˜¿ývƒ7ŒHÖ<H(øÿ¹öq"½úãKôièhY O!ùGG…O⾫yži"ì‰k“jº«Ȳ5Ûñ®‚Ôðßê ²CÓub 0F†«QÇAØò4Ã'H‡Á´za¢d˜šn"›ÍDD× Šu5b#ÎÐ7´Fð!E€+.–Wº‹ÂŸoåQùŒ$^­ï{m3 [%T±Iä·¾Ö74•(Bú¡¨ÄV¨Š‰¢ËûD^YêßáRì_G¹Žéi–½×k
+¶EÌÓGÆ}ž?‰ØNoxqëwŠ…iL°(¡sÛAPó4JrˆçEù*=€Pã4€þ;€PÓÔU3š‹šúz€ ¦9ù½@P‹ù–Çlü«dëDÌÜùH–sýR7jÙwa>S[äÅ©û®ÏõPÓ\h?™`j :,WÃц )©ê=F|ÉÊ#ù¬ `,½8/ioÒw¤ÂÌcU;Ì…ûƒ¬¬bìG<Z‰(rÑö›MÎK–L¶âÞºd,¦%J& RqÕ¼bu“ðƒQiŽ’}soLÑi±6‹~›9$vËju«(z»%K
+]÷Èîö6tò¨¶Ðâ‹Óæˇü¸îÛéO__ZœñZa/[VbOK-õFu°;l\°!»©iƒ\Xãc^Ì’>Oi÷ &wwëSzãuÌw ÿ“ízŒ;j*§"ŠKž–;±"”,>{í4Ô‚Fòâëh„ï=Iãý"Ó8a¦ ~ó|5êf9­ú6Œ×ùñó¢H3Ö<>`.ô³®^p]ŒÍ¤…æ*ý@T™?Šƒq“Eâ´ìfPGñ—p1˜‹ßü5¾‹ÖIþÊxO h+ñ`¹äl)zP4~ºÚ®DG.Äç%s¡ýPFrÆVbu-žÓ ʨܱ½ŠÓ€6ÅË2<ˆc&ÿ,O.’ÞF„VÅ©¿ïp<H.¸=Xж8
+n‡Í_}ÕAk£ããp·agPÌä(*ŽMCÝæ:3 ¦Áͼÿþo@µýðô”åÑÅ|/úeÖ„Šü~ò ‡â\(ä!qíoæ&Bå=Ê9gY39²~øý‘0Ñ
+endstream endobj 1382 0 obj <</Contents 1383 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1383 0 obj <</Filter/FlateDecode/Length 1370>>stream
+H‰¬W[oÛ6þý|”
+P%êV`¾%Õà[d&}¨‡A±hGƒ,e’Ü®ößwHÉ·Øtœ®
+S"ùçÊÓeÈ”å
+}¸™hU¡Œün"‚ؾûFPŠp
+¢ÄðËÚò4mê#ì‹#›Èµ J_RMF†G<®6%_ó¼Æ½"_¦«M×’ŸxO8fƒÛAŒA†öñã/íÈ¢6’ÔL„‰Al°L¿õÙ ´í£Æ¢ {ß@LË´(Óú;îeqUá0OÒE\e»þU8ç vÔ¢ñ¬3xV,$±i\Æk^ó²zÑS6êt÷(ôª¯8¬¯`7ŠóxÕX£W¼Ñd'ËŠo<9:¹:PÐü”®žxÙMk°¯ØSœwôø\Ýdñê:hÇT°fe¼à`ð,ã ¡T<ÈkaºpŠ;I«ê\¢ <È<YâÞì¦ kIàhèuÝ:–Šeºæø~€guü'aÞãY"@ žÜ–q¾Ébáq{e¨e¨²©ã{uÆÇžzŽ^RlÄE™¤ùjšíF|ÉK¤‘Ž)ñ_aê(˜†#Qúšç—Ñ\ÑOÜ‹7°^žù–*žŠtÁg›ç碬Gq½x:ˆý]Nº€«Š­h=ôz‚j ØdáC¾jPUTµ a¾,ÊõËÄy ÑUS'_<åt8ã°…]Uô°Mžóì†îvo®Ò£«Š£³9Jò•ÉáªÂg–®ò8ËÀ×%2
+›‘ûv,UØŒ¼·cùÇ52$¨¾Ÿ.Ûs?ì¯7PœqÆ˯€Šeº p›t™òò8¡+a=SU:ÑMoŒÕ<Odq<ªj@r9=LžyseÁÓÒícÆ_E´TÞNÙo?‹<žWÂ8C(=%ÔÄRÅÊjp[¥V Þ+Ê’g _ÈWÚÊ£
+ÆÃO2ée°‹@ª[V[ªpÄ1¯êø1K«'™1Îär5º«¢Wõ )²"?4N% ÷U.å©=à³ïÏüª£ûêŠp׸euR .ÀíÂGv7ò¿§×tµ×ýC©Ú`Ü—óæ~æp›hì}_cÒ¦_pl¸ÑJ9z#Z!LhÓ1P+0Lÿe˶áépA€›}§9/u$Ç&ZŸ/Ó<…IðDøŸC?S5:ß®˜g;JÅàX®†1zÿ¿©Hq©QÓîàÛî8(‘§ÁTßÔªõçP2O yÞÊ­PpöÎïÈVèŸÓÓ¤õ×h®™s¥ÛT›à¢\Åyúws=™kfy]¥íÂuñ˜f¼_¬·ý4wræͺ®pg±‰k®YÍÆd“qñjä¸ø¹Ýÿø,¯d;ÕRŸ¿“äçšÿþˆ"úƒ›p²p2ž¡Î=›Œ:,ì!Ö¹!PjÄCÿ 0
+endstream endobj 1384 0 obj <</Contents 1385 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1385 0 obj <</Filter/FlateDecode/Length 907>>stream
+H‰ÜVÛnÓJý•ýTÙs±ã˜£óº¦•$Äœª d¥%v±].BüûÙãK_RZ(/´Rm÷¬µ×žµF=–@‹ßô=<: (¼Ïà‘dï(0+\Ç1M0|79¡c*À‘‘íØ · .?;XµƒPÊÈ%ˆ1ᶠ†åabñ%hž übƒ'á“PFœ%‚ã_Nli¯!†cÙj¹£€ õJñK¿?N±?)œ²Á‹’TÀ¸Î¸fÉÔSÀ«rèLÃFô·ò™jëÅ®1››„ñª3N¬C}©–†û(˜3jÕ!À9ÖÒ9'Î¥—Qç&%Ï…öFãºÁ,²âa (3b*bqwYj»UÉ2ú²,Þ 3”5:| }˜FáÔ4Ô|£÷˜L*ÈŽÈú5…aU^Ñ„#z$ÊìãšÄv»AŽhì9>lϽø\hâT·µù\”[ÄTŽÄø|VÏÏOKuKËÔË:‰AgBÉšµo),ðsQ·‰BµšEPØ›7§^µÉ3Q>ªB…9c¬„R bš|{§þ´ðnåƒ&p '•¥÷
+/§þ‹—šA]…í³;Z6¹ÂÊ)«Å½
+7×QßUªŸ«* [Ž­Á.‘5k×b?úçñÚ—O!8ŸÊÉ?“_Ȭô£èJÃwáKßœùò|7ª–Þ½MµBy>÷ÔÈJ¥C—Å ¼©«Šö$†èÇߘ?Òð¦ÔOŽ1Ÿø‹ŸÆ§±ëïŧ‰ájf¹»oªÂþí äî‰Ú·'¼„\-“ø²…WöqpÍ ØyïÅÿœþ`
+endstream endobj 1386 0 obj <</Contents 1387 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1387 0 obj <</Filter/FlateDecode/Length 833>>stream
+H‰Ü–]OÛ0†ÿʹªDŒ;Iƒ´‹’– µ¡1_‚iªJ@™J»%Û„øï³4IÓ²1àb£½hpì÷<çãMØ@ô7»ƒ˜ÀM;‚~"@A\Ëõ.ö<ÎÁôä5·0鶃×sAÜC|Ö'hyBˆ °.¶\LÛÃŒËÍW€‡ú@ à+0Ž Ç¢˜%˜Y@­.¦d œÂ öÄ
+ŠÖº¦º"]ß×ñ,µG)2¯à»(bŠXjÔB6pª~œ Ø HrÀ%2¨ƒ,䈨uª®lã£ø `*\—{ØvJ^öªÂÜ̦۞£kg–¥h¨ÛV­N-ìý¦Rúñ0Jg†ðKc-' WìçEQvYhÄ<¾D JwÄõ^¡·Ñ»@ìÀpQ©îZ6æºm îÔo¢Ú—6ÊÕE:ŸA’å˦ÉÛzß4«Õ<=VÝõÓ*05å, Bï‚ÙU‰pæ¼åÓP¼‡ø| zgp¯çžb׳¬"=“bÊduû2ûz6€Nz¨bKÝ—˜ò$ÚG±
+QÓs•O&m³µ„ëfi4Ò.öËgNÓNoÓMéÝx‘@ü.
+Oz"0à ~¶}t¶¡Ô迆Mô3øÍZ~ï@™ç:áS¼ÑʯÝÙÍm¯çïÕ¼Qï¦1÷ç³Å8%Ùê+fé
+õ øgÌ°¤“S\cß·^4Ú#Š?NÑ8ß>hË”ÿšþ`
+endstream endobj 1388 0 obj <</Contents 1389 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1389 0 obj <</Filter/FlateDecode/Length 955>>stream
+H‰ÔWÛn›0~‚¼Ã5AU<s•&­íh•©JÒÀºicš¢„NLiè =LQß}¶!˜p¨B›‹-¹
+÷üòð%ª©¤ü%Š— ª0› c˜°ÏbÞ"œòÑ4‘ºŒz.SÏd
+uºµq¦F´>7ƒE‘aTC·]ñÜËOîðÔeYæ ¾òFèfú8NâU<‹7 Ô@…Ñn‚Ø*=ó‚F¡,8ž\ Eábάâøë5CðÂÕxšLožž2< ˆ×é–˜8X©Á®'ÇÃã±6žŒüÑéèB¸A™ŽŽÞAa×ZÀ·ÊŽ¸Pâ˜
+
+endstream endobj 1390 0 obj <</Contents 1391 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 1391 0 obj <</Filter/FlateDecode/Length 697>>stream
+H‰¬•kOÛ0†ÿÊù„´ßr1Ò¤q (ÓÔâ±itš¢6 L¥hiaLUþûlçZZb´b9öû>ç¦* ö_\ÃÞiBàz{Šþ @A]éýK)¸R¯Ã$$<û @Ý
+(RIl/D
+~˜ðÅ(Áœe!¦>|9ª5-lu]³"!¨ß›xÌœ1Š\V|—•§J´¶Cò@PóäpQm`‡"ÍcäP1Ç¥ˆ˜}jVžó]}4°g-n $öüš—?j0·³ÙëžômîÜ:=uuê”aùL2´ôÓ6F§±!bìl8 Âqkä½ÎÅhxu¢—þ†‰i”°1 äÔ¶×z—ˆŸ:Lu™‡…-‡{óÌLù
+ÇC ³ÈoçàPŽtFEStçúµ=7ËR³»ÈÀöëª^c²
+ÓÒ1߀RHÆNÂEnhB&às,ÄcTÈ–Ù|¡A.ÒÙ]¦i¨ôÀùÁà`äŽÎ‡jx4üäF_U4Hâá
+endstream endobj 1392 0 obj <</Contents 1393 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1393 0 obj <</Filter/FlateDecode/Length 2246>>stream
+H‰ìWmoÛ8þ+üH+®ø&QÇz×s»±Û°]´¶ìêε³’ÓtÿýÎ %J~M¶ûáÄ¢$rf4Ï3Ç×3–Ð_½b?ÞN¶jØ3ùŸ„I6[²\$‰U4!g6i’h–åRh•¤lö™qÍþK+¤_‘À
+|5gÊŠTç,vV8©ÙlÁøx6}E Æ3öÓ¹`<sàÅÀrå„L™LÀ8«KömØõl ÚVmÇ›Çý½É6F•øö~gSpIÅ-3¯š½÷D$¹ ûÈ#™rÅ’'ø\âÈF¿Ìþÿ![¥DêBÈúb´è~iõAt<nâíÛ¡}©DþdFtv‘=á(1£/•'BÒo¿Á‘·qèHçÙð›€6½—,ȶ9;yÈÃc}9þö- _o?;àµDëÈòÕvÃ"©9$×tè'ì^Ó¼uYàÓ¦dDÕÃßÆ©D×}œã”
+é¾Fû[ÎËÅCÔMA¶À[('×E‹Ÿ°bÃìyIñL¨HF00Ò]@ÔX%"Ue àÁýu
+.ëL™SM4oË,|û¦
+‘Ì' |Ãv4Áëò¹×öEƒ¹†é¶ÀsGwö˜ãa_n‡PJaÙîžÆ˜¿ˆ÷Ð/„“Ô·ãp7±ÝÓXH彜łŠ±À)Í
+endstream endobj 1394 0 obj <</Contents 1395 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1395 0 obj <</Filter/FlateDecode/Length 3955>>stream
+H‰œWÙrÛØý•û¸L î‚mÞ䱬x2¥Q$:ó§R IœÀ¤‡„¼ü}ÎéÆ&ŠÎ8)[Ä]{=Ý·ûÕÒ¤òoo~¸¸IÍýÁü°´ÿJ5Ë;S%iš99P™,Oò4õ¦¨lâ]š›å™xù»Ü°z#Å n­ŒË’ÜWfQfIi½Y®Mt¾¼y+Ηæã«€xQ‚KÀuW&676q³oÌofk^-çÒ¶ ¤½Ø|~*¢’ìet©Êø廼‹Øº(3ÁòëÍßu!‰m’Ô¼b›G.^Ø(åºå(‹ÿ¹ü™ÿ "gÎ%y9Šìÿ«´ô©åö‘tÑ¢7ˆÒÏæô3üþ¯,²,Ò9 Ÿ&Ådõ"©ÜŸÙÜÏù•c>á}<ãäª4±3ÿfÿ¥qÌÇWå\#àrâRT߃¢lBQñ Es O òq]]G0r€xó‰ß†@ÙÇYtà`³ÛšØúÈ:=Ex¥æÛr®mj®#(t¾z9Ý$§µ”SF¥ŠYåY®bbh
+x!§¤¹ƒÖƒ¤ /ÊࣛñLW›»¸Š61ä<˜{àzÑ#þêýšgŒžÜovüêÒf‹}Ó=à·‘;æ§8.¡Œ¹•Ó¤*çaæCÃÓrqƒÃiÄ)™ ¯q÷<^¸èæ|‰…™3’ûë寿aZF¿Ä¸$^_œë• ßÀ¢ÌšE5©5‰Þ› úSšea“à¬Y¸„&@¢Yê^ÇSyJ ‹vãÐÀ\e ÝΔƒÝ./ob[Eo&êÏì]%N¢+Ø$ó(¨rƒ·T Ì²I¬¹gÄ+Py{*™ÃÒñ¢Š¨ó >¶•èˆ;2}Œ^G¦›Vúdvý–º/üDÌ©-¬¾ÆçaØ<êÀ}÷‰ÆÄžŸeñlІ9÷3¤¿jöjºx+þ'˜eÔZæòìF`óîܼA±Ðèþ¦û:r˜¡Û»)
+=Yx‡ìhz˼ úû¨ÞRú5Ñ=Ô¤Öï“ܹØà»>© >𱕪r -¬¾»­ù´Añ’?‹·¯ãaÇÑ8úת½MÒÊ~6+Tè·çïcó™áÿ€t¡³ÅÈ\ðг!šM½ê4P>ñØÖd”ébà¥\}F®¶LR {”È
+C²Êó
+™¶1ë «’O’ÂVÍš™¹Šºss…äÛ˜U[K8ËuxŽß‘ifFñÙQÝ4¥L†Ç<9-{†·ÞYÉÊâ07äó5– ŸŽ™YpüE²á±O¨ÝÀº Nb;òàkauÛ,º¥9Hdö FF\zý ›˜r>ã5¾Ë}Y5ƒ
+yø<ŒEë<åG% ”WC.úEFqï5kgÑJj)ósµ“r„‰Õl‘8WÌ_ƒv‰†°=$h›
+»Õê‘þV÷Ãù«ñdÛ2ˆ3 bâd{ÏCw< ÒÈÁ»ía| ÆcQò ØÂ@ë#¨]5›uJÛ»u3CÂÞÊ?´ñ['²”j¯LX»Z–°C˜ZÉö‹'Tæ~¤O·w¹>!¹1<óF˜¼zo&Gä½#¬Q‚Dð Ï]3 "È<Ã`xŠAØñ˜Ó,È\Ï
+9 Ê”ÕR,û½žÖa0úÈŽE‚¤ã T2%ËÞ"‚ÑBiÂeÙ;zFÍ~}a¤ò²Íφ•5Ú¥.0’YPÕðö«ϪÑãŒ]œv˜ÍY~Ãa¾ô³¤}vsÉäŠHyݬ¦™­/õ
+ÞCÖQ¯LÚ¢ïÖ+””bÒ+K“𠽨LV™ã„Fe®U(ò™F×g,/©…Œ®D±RQô(`ÂamœÆûÝ£–+PGËcL #Äj®¶™´÷«´¯0‚R‘J%U_ËM–Ó('®å;¼úpÂL¿«©¸üAßèÔ´Æáµ"k”9­ ¨‹E‡Y.G
+5Ô âŠ#›ñý÷(a ®¬Ø©„$CÝß38}tºÞtòfnòfÞMîÁ4S„‚ÖÉž©d¢Rr$¬lÑUÉè÷òRPðé}€‰žÃ’Í\k2n/B•LÈÅ$/Gs!µ$f®TÿHfPÿ¸Ô“Z€̨
+¹>ÞÓÞU!¤´k ò¯Ú4m0± ÀÂ&V„9[¹õœ­X²¢`+ßkÿp¤ýÃÁì|\ú‡‚¯Ÿ?y—õ±ÐrS^M?Ö^ŠâÌფԒ­)óû›Íýã^
+yÔ –BŠžÏý¨ÕÛU̲1ת1°h”åsYƃ"{¬288Ìfk®ñÊ8¼U.ç«5 ¯Ðy:{ºÝucã©Å ZÔ>K@æ^XíX@6Z—N%)ë}ˆÁª–2(«H6'RÝtleƲS¸·èføÕf†œ4D|F^ÂÌê‰7R¯gKá%k2ƒÎhªÈÆŠ%•f)Í¡-ì«úÛ^èUK†kÚ+‘«^1ÑQ™äáŸVÊ,Ùt™GQúæ•ûrJhî›»}'ôï§R[¶Öw/ÍFtµ3Ô¡R¨¨èR
+*ÿçXŒ®ugð¿´è +-0ÀKœr@K³æÇ¥¶5·"3ÁB½s˜Bn<b¸Vuø›˜_»‡Þt, µãúGþ µàgÛ[$jI wqí KÞ(“êN%o˜¦%Ñ Û:äzw;×kщ¦"¥ÑêGDš´é‡ZˆÜOŠõÈ^¶Pe£©UÓƒˆrÂG&€o¨Ð­)–µ¿KG×°Ö¯Ù:ÕìLZ©ä]tËA“˜)d¸+=Ù8¨Û~$¤‚ !Üç®Ç¶ýÞÞ0”¦«š7›ÑnÙ1üÆf¯é‘ØSñ(Ñ(‚¬%VGZ®Ðq`fjPàÁÚUžŠ‘Bþúy¢wc›tÒ‚Â,ïgfÐøÂÐl>bŠMdgôAšA"äòLßIƒ1ƒÏåè[
+ý.v’|äÔf;†Ä#F·\\ Š‘„0þëU²Û¶eŽ$` â"‰òí!bà½8ÉE†¢m|’Aцõ÷骞M |ÊA—áL/ÕÕÕ Oë]‰{ðe’é§@Gœe NiYb•(Bˆ±*›KoX•Ú’pmæÒ€ |½äf
+P\:s‡z|’¡Pæ\IãwXw‚'û±Æ‚þeÅ¬Ò ô6}gžú*;Úœõ*oC!·¹ŸÔR)æŠ žcR&XÏâ°Nª0¼`6Ǩ5çÐ4or7茻¹
+ÏHêË?)a4O¦#³ë‚Im±t‘Tj@s5ݯ&:ƒ×™…ÄÒyM‡#¬’KïÎò
+endstream endobj 1396 0 obj <</Contents 1397 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1536 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1397 0 obj <</Filter/FlateDecode/Length 4331>>stream
+H‰œW[oÛÊþ+ûHÍ]^D&O9Ž¸Az"´uq@‘”ÍT–\ŠJŽÿ}ç›Ù eÉIZ°–{™ë7ßþ¶R)ÿ÷êêã—TÝÔÕJÿ‘*­VU'iZÞP«¢LÊ4ÍÔ²ÖIfÒR­U¤âÕW>¡åDJ'°Ô*S$eV«EU$•ÎÔªSÑÍêË-¸Y©ÿ¨¬Î¾¬è–œŽ›*Ñ¥Ò) Wc¯þ¡vê·Õ\È69d/Ü5ßOU‘VG“ŠŽÿ”{W_èŠX›¨P¹Æo¦þ.I¬£<IÕ]ë22ñBG)æ5FEü¯Õ_¡ðßH嘤¬¼ÊÙµ…¢§äÓ/´‹Ö!"¿˜Ë×&©ê‘lyá¢âÂEi~Ïî2ušè™û‹ÿã"‘ñò¢¬®ç6QÚ„[–õ¯¹A^žyž‡!ÆÙǸŠ>F˜Éúœã—©oøíÇ1.¢Ã~§bEäÜÜE?U¿Ó2ïÛö f½â$1!üVO#zR è<‡rº (Õ9kÇã ! r¯!ŒŽËH½_¦±i'¨¡‹èK¼¨£g\¶›lø“tÁZZE7ã¸ëàÝђꪬùnÊÛ|YË݇»Mž,ÍüîDÇu¤>ö»~l¶ä, “²™ë\<_—E)ž?1-Í0°âßï šÜg¢÷±Î£u¼ÈÈÛe4ÅYĦ’‘YÃÆ?±Y,۷푾Fì•óßqþç{:Á;4ê)_Ú~øFÃs»{,oŽØÕR §aOÊßÍ–º(H}¢ÙTÔú %ˆIÜ^Go1g°*ïÍ.Nr£ÕÂ$0¶ƒ/Ò”æ"¯OO×bŠìí ÿa·7
+úH©=L|â• –4“˜Ú6þÒ, ŸÛÀæKä_¹‹ÉþG6šhRë^ù»ëGžöûŽðëè÷ýûÜ 2ÜZÐ7MBµÛwñ»`rZ;“ î^ØËg6x3áã'¶/¥h°\mȶ=6Ž>”BYDCûÀÖs(0ìÕ–wÞó*O·´±ÙÑ⽫†ƒHÂEÅ’ÏliÐL}‡1ÙÜ'ØŸ¼õé—IE}¢|ÇÞÇâ6œ:p I“tYòÇ[šT)ïžø
+ÅG ü{ÃFO§J‹65f[¨às2‚bî2ò`¡âö»ègó‘“l¡mšiMbØ
+¢|ñ£Ü«ŠvxMýª±ðáaD#`¨ÊK*:ql ¥¹üžàƱ—JaEwýíÍ™|yVw±ØLÄ–àvF€\{ ¯lcI«ÌáÍZ¨
+ã*µjµ¶b*;y-ñ33z€—BÅìt„º’eÖy4Z{¸–—pÐØË×M¹UF¾p0–<bË–pøÞ¿ÌÎØX1ÏÑ[hpƒd¸’¡/`&ÁDâÈý–ÂÀ§Á*GX:¬m{þA–Ù¥ƒ <çú5ºhÕEÎ4͸Rcû³½V}æ³`F„ˆðþ5—ÅÎïÊÏ ÓÏr;Ð-¦¿ì8†ŽÒB‡æ+!×:èU*“ú0} 0Ù/ÝÝ>h¤³ó×±²ZÈ)gB½·Ã†üÏKsæýœZÓ΂‚bô9—ð·%êÚÂË,%Y¡œòÒ3#V!Ð=3';bK ù²î `Ò'Ÿ¼Â½Ø‰¡–¬‘E ÷3ZcßÏ,ü5B–ú&üÁ5áZzpÍ-yî^: -ðZ¤×ƒ}R`n/DÀgâ¾ M8&¿]†Iœ/·?
+3y\Is¯„†Xæ¤>"v «;ì¸LQ¹…T›jšãj؃ÅBÃ[8Gí¥§¶¶ÝB”¯ðþ¨<öø ú¦Å*qà‰BsÒˆ
+¯{.ÎåçþŠoù–à`d¡mÑ'nf§c^÷ÛýüÑÕJ“ã’Õ\Ž hœ)Èž?Ò‚²ÚW›6¶kæÆùï8vVùJw¼Ý·EÄ„wHk´œRœüYÀ¢HÏB¼K-àörƒ­}=@¨Ajи®IVÌîßW'/Z†8ÕyqÚÏžØ?´– ÎJ¢pa[þJØÒÓêpØ…èwU%.}å:Œ=yÄÔüÜ«¬£u»mŽü%Ï&Y’³ Á@šÀ+#KŠ„Ÿ+iÛwY\VŸ÷®K\‹Ñ‡Lt/® „sÊU–Èa¤rÏ
+‚iÛçìÍ·Š5ÞñcŒídv‰wX=ã<Ìuúî¢Ó Ð0¡)Û7¡¨âø·fF¿ÞkÃ$rù•ÄDÓÓ ‰
+ìéyãæÖ¸?FàðÕD)÷z
+°€Œí…VŸÇ,@úÄçÿu½ú“/I{Ù-íJG7š‹}ÏÙbåN»s¤êú' "‘ g]îÊB„…†71·e4·UÐûµì¯Ó¿žŒÜDÉ›Ö_Î Æ\£<ÎËįpV3KÜÖЯ,»/“å,ä÷›ä¯mèÏ‚W¾Õ“¿°Ã´y"‹ƒ¯h7†Þ‘æý<0b &ñEÃDãGª<1â6s'C
+_…‰¢0Ün\^ãÝËêÎÇøˆ¶Š&çù+ô'uŸp4B“0% ”æ*™n*YoFŽËÖ¤ÿjoZ6!i•Šr±R,¨˜x·‡ðµ®ôm%/Êÿ%WÆW“ µÇ¾vŸx÷9Zxw¯x⻹ÿp™“K)
+ËxMyù†¹´îZz7‡Ó=ƒ¹¿AòG¹,ùº|A×ýöŠ¿åÔ@È™_]¦_è!)Ì–¦Í‡¡‰–áЂáwWˆÑ’™”Ã/Œœû ƒ:…¼=ñy!èfðDùÅ£û-=ÕÇã™Ã˜wÒði3´ÍØŠVpïÒcW£ҙøÂj™žb iu,æìé_)pä‡LXGŽ¡O„cÆì¤ÂWÜUª¸«+áݵ a™¤g¯ê×v¸xGG‡–A÷èH«G€D #G2ã\¦Jö›Yp¸÷–‰öL^'ð ìmŽ4P|ä(Ä|¸<˜ôws#õñ|
+&"šð#º2}
+áÈ‘n¼¿?–à»p›½Ä”™gþœõ?Q5f4©Åa¤Çâ±äö ;>s®<¤ÜOc vyr:psoÖhô
+Á°õ+fæ»éî Ž#O^Σ’Ø·¤!•<9¯0èƨ0΃Z©UAæ~á
+jê¾G°zA<7%ÇÇ?äNX£mº6OŒª³ôüU˹Ó9šL QZ…x
+Áû¶¶?tœD´P$šëÉúxr³öÉç¦åF{5øóQ¾ªV?†ù–of¦¡!µ­ÂKÖm ùjà›FtuðÐÞMðGkÄ1À·O®‘(‹H˜ÛàÂìS“ÌÅÄ%:]zØ—I‚M×/!÷>LJ1èŽ@\‰SjWY÷žðÞ;¥9Ñr%ܧŒœ›þsò̺DËâ“ÉÚö—–üÊà$W¬«qÛÔzpRºvÝJ©þô8„·‰ÍÑÛÄ„=óÀž;¶C-Ž°òÅ;¡hÀ(÷[ÊýV{,÷äo}«œ‡÷;¦
+HúvÁ¡×é6hQ­ÍóKö¯
+endstream endobj 1398 0 obj <</Contents 1399 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1399 0 obj <</Filter/FlateDecode/Length 3826>>stream
+H‰ìWk“Û¶ý+˜|";M€àËýä¸jFd½õj’Î$-qwéÊ¢Jqíøßçž{A«•l÷õ-“‰„€û>ç^|»V)ÿ7Ü©çßݤê¯õ?R¥ÕúVÕIšæ†Ô*/’"M3UÖ:ÉLZ¨õ{©xýŽoh¹‘Ò ü´Q&OŠ¬V‹*O*©õVEËõÍŠ/,×ê_*«mBÂËŠ´XºnªDJ§$\ ­úIíÕ·ëÐÈ6²“šM‘ÎF“Š?‹Þõ ©ˆµ‰re5þfêGÙHbÙ$U¿D±."/t”b_c•Ç_ÿÿ•LÎIŠÊ›œ}ÖZú8€|ûĺhá"òóP¾6IýňdåEùE©ý%t™:Mtþü?P$2NÙ4 }¢²™µ”õ×$9Ÿ“\>IrX‡sŽ³ïâ*º¾FšÉ{ËùËÔüm‘Ç!Σ#]¿W±Î"
+®²Ÿª7ô3ŸÛµ v­â"1súf²³®r®@MµcËš­ãõla^Âé$‹u©ë¡=¶{,7-oÄue¢ïÜöÃû‹1^dQ× †Оù˜ƒ¤%HuAqP7ÞŠ¬ ÏÉŠ?÷ƒz5ä­ŽöŸHZ-q=m´Zª;ÚŠþVü¢èÓDcG÷lÕ†/ßãnCiìc׳0G×°ŒWŸ"Ñ%’Gðs´§45;Õl6ý°íðuGÿ«±Wã=-ZÖ¤^ÆÚF7ñ¢Š®­Æ¡ÁAJ_Ý"4í øãíâ—1ÎØýJ_Ï(›‹<bWl(/¯!ŽîÑ!^بÝt·]‹OÞkÍÐŒí.^Ô$Ö¤ÎçŽõ©ÛlŸònfù -œ§ h›‹»Ê4pJ¶êIž†<Dž–4â#> ¹dö§4Ð’l&8—2-(ì´Äg/LÄ:šØD;ÚQ”gö€’ñ.ÿ¼ÅÁ×zÏà« óÛÅ‹¥W’}jlR™zJ¨Ú ¦#2ù†Œ»"XݨæpØu›†ªiRoIdÍÛ¦£V2'¦lô|ÈÅ]b~­?H‘ä%^vw´ÚÎÉI«ÉdÃ6/œÑÈM^Šå=ªä5Lj€ ïìi½iYw;úáŽcŽÕ[üóŽS—gA›]s<¢üŠèåÛõ,ròYÐ^¼!W^¯9Ÿ¯_aÍ¿Gfpf„-ož91¸ÿ_ŠrÇ+v WŸáà×éYœ(ú~1—Gæ˃qú(ÿ Í÷orm ]W7«×Wˆ—EmgÐͪ³¨ÙÅâcwÀ d—7 ¸ F„ÜÙc@æ¬ÙEÁž:E'ƒ³#$°TN­vºÑDI8·á
+ÉÎ2'€[SÈ\ÿä(NPÚêU/n[ðGu,Q6N ‹ÌÂ$d“D=§ÀV’ƒ,Q?4èÈ>¢£$°ožØy+D{êóJè‚„r7{>·1ãÚ˜ê˜\ƒÔ
+¾RkP3í0Pžû͆Ùa`Ù
+S í6Š{=SÔD?ÂW<Lø:;,u)ΈsÅÑ''I¥°8Ç !ãð"ÙO.«ÝÃT.˜óo3ÀÊéÇ©Þe2Ê¢ãQ2tÇñ>SzØžj9 jùIsÿ¢Í¬ú3EÜœ-ýò •iˆJý˜ˆà
+Ø™A™1.OÉbì,ídhâ!«2²>žyçqŒ…<¸¹‹XoÏxúõäk=ùænú3E6Ïi©g0W
+P0o!úTáÐPGûQíWnTRÙ˜;¸ºëˆ½Bq×RÛLnŽçVè.³ÓÛB„aãâà!Yº`Ë4‹¯ú:îØ‚…„&Ÿ¦Rb~Å…‘S,—·X8^D \L]U­pm‰8?—%U[¨~4LÍٿ馥w¦þü³2O³$­=+-BM© WäU?*tšþ=5žûv¿E·Òé_ßjú‡_ò|e Ÿð®K¦¦eZjÑo¼r[fImB娶„Rn KÚ=pÉ×~Czéëaàb¦²"þÄðØoåé£ÓèìË6-}ç2Ÿ{ÙÚ<K´ÙÊTxBÌ2¼—Ò]\ó/üÂIÜŽ÷Œo†ôŽ:UÛŒm¢IÊ-ȤZnV£Ã?·„ƒt ÏLmøIXc3Pålš]\÷„è«wKcaöà×òQ´sç1X3ãdô:`Kù©8?3Ä+èݶç’q:|Qìµ—C5%Íœ
+jËCÓ/*¨o)#Ôš¤¤ë!BGâ*¹…aØØíaÁ
+~
+’O¿½àÏÙë<0××NjæVYáÙ7í;<ØV$h‰Ùúlù2Þ<mfnÜ\P)U6ócçÅÁí”éPÈëÜ@IZ~Éz2u£äW¥Ü@›ÿ~bƒùDŸM¬;M4ü“9ÄY‹w¼\ÈÐoΙxÒêJʵk>ËxýîIÜ{É›”©Ÿò¾™be
+ÖÜm8D÷ Ošâ¹—bô#ÿ–àÜó0®‚'ÀÜ¡+o6Û½Èhm·¢UÌÛÜM‡Ö½%+ ÷ n£gS‡fK`º4/|wUlÌÁf·£;ïpšú¼§g=§‹ [׉!‹]x']Þš.bÉ !xn,¹×®ø%1 t‚% ùy1KJžÀLŒð9Î*齄Ò0Lè¼Ê¬D[=þZæ
+Þت+Þ™[oeè¥ouCíª•gÍ ‡çÿžY>‹.N
+W½?Á[–Ã`{à† .ñ6}e_;ûØ““(äw¸‹YPAž üRtM¬õ<;¥H±›E‡~A:x™œeKÖ
+;Ë-'"©
+ïújIãuáõTÍȪ9vôìõ\¾&õ½HîÚi¹¿S?ðƒ/#Rªùÿæî‚y'ÔW%Y^†æq¶—B¶˜dnãוM~£¼JvÔ¢à¯X9™Ä ØfrŠ2r‹¢‘rÈÉ1†™ˆ`‚þ>UõÚ Œ1Œ»Ý{׫W•D~’ÂañïÄÇqÂKøbTë¥9ßuxÝ/ÎS¼‚ïØ!.ú‰DO?}ÌŽƒjðãò+°òì=N*å /à°i=Ê®QCˆ8ÌÜ9^²ÎlDƒ^I¿™ë…(!-x÷ iŽ±>c@ÿÁêÃ`3
+«½•óÁ)‰AÂt–õ¦Œap¨¸á )¾G¦Ð?¶Ù “Qb±™Îã>!’5W«§âF‰$>*Ê
+f5k·Ç÷µ|ÒX“ÖzkÙö)xQ¥Úž¾ø€<À ÈZ¿œfÁeBjq@鬵ù§"MÓ¸”ú7èk±¸”©FªùL}8JĹù´DÙÌã•åxÙ±¶œT´D£˜·¼ÿzÃu÷kô†BoèG†Çi’C`×^Õ°úŒ–Q|7ý/]
+#^nßÉïoc‰V˜…)è }4F¢«¶9%·i«AÉ[ƒtl#àZ‘ui&‘ÇÑvd½m¶Ã{ôoÐùñú·É’Ý+Üaæf&6¨ÇXÃâMÒÕŽ$áÑ,×ÁË$h(¾\VQTÇõK'k¡‘œíÚ A!»/(é½ÅžMók/5–ZÑw6_¦^ê{ù›ºî+6´ÂVÆ3†SïÙÜʘy¢mBšÐBA%fqHXA
+æ6ŽÄ@RTB õ[îÔ4Šý›vãU{ÉZm·âÀGÚ ø1íD•æ<tÞ2n½˜¦äie#"›Ð™)ßr®Qoví®‚Ù¼µWݯZeÒŸWhѸ“Z¶]>HÅŒ <#".°øLt^ضe3‡ô^ÛVÔÅLeäRc²ÉšåOƒ!,;sÆjc¤·j¥ÚSÛ¬0¦KTÈwXæßÛÖR†SË’o ¥•z­)lk H}WùYc"É—^ùÕv,œ ¡(^;[·zòþ 0
+endstream endobj 1400 0 obj <</Contents 1401 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1401 0 obj <</Filter/FlateDecode/Length 5389>>stream
+H‰ÌWM“Û6ý+(ŸÈÔˆ&Àï=¦v*5{HecÕî!ÞÚ¢EJÃdL*å¬ÿ}úu ¤Ñx¼ÞË–Ë#îׯ¾ßª”ÿÍõö‡w©:œÔÛ­þwª´ÚîU“¤iaxB£Š2)Ó4SU£“̤¥Ú~T‘Š·¿ò
+-+RZO;eŠ¤Ìµ©‹¤Ö™Úv*ºß¾{à÷[õ»Êš<!ãUM»ä´ÜÔ‰.•Nɸš{õO5ªï·¡7°mrØÞ¸mþ¸tQLZM*>þ"ûnßѱ6Q¡rßLýC’XGy’ª÷Q¬ËÈÄ¥×x*âmÿ‡ÿN.Æ$eí]ξè-½ ¯¾ò.ÚØ€ˆý"´¯MÒ¼‘¬º±Qqc£4{™&Mtþâ6×å©ÏD°Yw©š¯Ir±&¹z–ä‡kŽ³â:úé'¤™NŸsþ2õ ¿=ò8ÇEtÂÃ0*ÖYDÁÍ]öSõ3}æyO}‹ÑS¯$fM¿õÓ~2ÐÙÍLÜlÊ¢7‘9‚~šÃÓÒЩ§[Ú&‹ã&ê)»~øDCœG#ýè¿¢ †ß¦®W§¸äÉíS¼©£'Zò+zr{‡s,´R-bî8O»¾;Óóoèઅ•ŽÖ§yq³p.ge·P<°ç´µ¦Ÿ‘§L³úMñ&£¹êán¼¥­îÕÁÙŸ°ÓQá/>°8bŸÂí†
+ÐŒ„7CÕÈØA»épÊ Ã0^©Úº©4•çìEñ­£.2dKÆH[ðl‰ÿ‡¿TÌáü
+y^¥Æ…RS'M.L™rðQ0}!·C ÐÛ€ Žœ %ß¹_ºƒ10Œkš55ÍBš&MœÉWú9b<XÐR¢g~ýÍužeÑT Þÿ‘÷{s}ö¾ñ…lë8­sÉ]ôsÿ+õxrÅéts-³8ç¹ä¼J—ó7kE>äLÃîÑ6úB» #7{§VnÀ ¤¥£è‰G› V'º[ÓrušÉ“ªÉ.
+ÿ9I®©>âH) õä/SëÜ =OÛ¾›ÊeC×I]k"/¯¸³M°8F‚g¹ü~ž ¬ºaç{(õ$€¦q¬aJ  f?§ ½ÒÆ `•§…Œ”¨,3‡Ÿz7äÛ4žøõ)d« ×b¤(sO
+Ï+¹âÿRò\Í„k5`Ì©˜ÚR¡¨í8 ¯í0Z­òsµjÐ*ÜÖ•MFeÓUc*–Óª_W5E’Í+Uó¬BLtÛLL7:å3d®@÷-NK‹ËòÄä—-ŽË©°‹!FPN á#ÞPI5‡ß0œ; ^ôkþ¸BO>k±¾ysµ–¾}]?ÞwZ[ý›i³ÖÁ‘×ÈÀ‘\@˜ 0 ‰:ñ"r¼’«dj(½Fþ|Ž ´‹¯Ùæ¢d;^-…W_^ …K_¼—Âð:Œïš÷ÄÁØ.-ß±X1ôxœ¹óÊ_™&Ïê‘gŽÐ‹HH„CBçÖÑZŽyÐ¥S¹¬’ºª®Œ8ôpàî2á/c^që;õ#-¼Õ?ã]½ëÇΆé/ì÷ÍB¾R!$BŒæ}³ÿ+"¼ç/2/ÊHÇÎ&ý~¥™Or©tà $#×SéàöÉuqwã½lÞÕzãuù^Ýjà`"Àþ*z±ƒçÅ*E˜ð3ÊUå©öá0‚e
+hà¾Ô˜×Ú!,Ji’™ oq4ì?«wxêEðnXñÚ×ùk$b‘ä~].4¡\p÷X{ƒh<}A=<|Mìî\õï«¢šõn‚)ã4÷ÎÀÚ‰z~¸qwZC\ø"®¥ˆ%aˆG¡
+®UµCT*ðEçÐHÏ×&¨q\ÒÛL xÒ=+Ù·0 ¨CÈJg±zúîø³ÛqX,?i"’3oàðYÚažñÈw[qHn:ÞQO‘Uèà98…ð; ˜
+÷hþÅ™ÿ:6UÝüo±ñºûáVõu%{¶ß!§+$ƒ 8æ}Ôÿדþ¸¨½­SÂêŠNÆ+®4¬¾÷1J™o8'Π6×gV‹ý ¢Y¦©»æ£ÆÓQ#ltçĨ½=ñ^äÀ÷ã$w©JTÙWŠ·ÉjL/ˆOñ{ÆPÊ2»[áëzîåݺ?®Žx.â†Fú¸È}è{è5Pä]éM¯;Ö"^ï³và:gaµ* è´@†œ”“Û#¯rÄP_CêõFfœh/²‹û$­.¹.|¬¯@t“=€ôl„¸ÂÐr[ÞŸú èêH¾œà ->ñwCìEÑ”– =ö[¸eÂ$Õá/›mU¢î»fäð´êý¶˜óÄÃgÞ‹e•—[g@¨x½GJOˆl‰¬·<§WòK¿c% 2Æ~8§>x§$ÈÑïÒŸä
+!ñžw³ÔÐ#vÝm–ÛsÔf³¨.Ÿ£:Ö%=×Ï¢I²ÌK=Ü ¸FÃ.ÝF>›¡%t]•ÎM¨˜¡Ë¸Ñ·#"¸…!Juyhà>Ë:ð¤uŽì€ïb½v‡É¾[܈±‹'CœUÎÍ>Ëñѽq
+ä6šò~ös„¾q,O(SÇE™{öÃHi+ò»pwlì3Ôoñ
+ØÐ9wÕY)¦Ö4`¥…áÌwN4ÕÈ_Åe•9”V²MÓtg˜“ÁUHP+LÈï2|¢SЫ|èñ=ØÈ1³Ã}£FH†kÄávnä  †ˆh%˜È~¤×æHÅÏSá;YJòÊ
+­.Sè4í™r!›¬KÌ3úøß&#¾¿g¾fbgº´IezçÐLSÓ¯ Ä,Q㣶ã×z¥#‰²çÅñ¸ÍH7Ì4X,B,{À‰°¤ìÇÞ¾ÞÙƒù2èH?ý‰ ¯iïAíiGö*0hy€QÊåWg¦««"MT¹ªÒqäÏÔ-²`ý#8+šÅýÚ²O
+Œ!ò¡æãUÕ€}2Ï>â.A¤4N<Ó Ü`/ëo°—Â’+¯/øË\F7ÈiÈI—øˆ+jý™¹²ünúFZ²ÎŒ¾ªÅ_RÌ4eå³ÜâðçÛ¤¨V7íF¨²ÐàéV\ð™ ¦‚‹F!TÚäŽÖ¯%@ƒåœb=`Ã64ùÏû³)Ý&ðÞëYº ¹æ"§a‡ Í`KæšÝ€dd…€_LhãxPý<kß‹¥ŸjNÒë—\$†F~}Çx̆Z²TÛ~Õ—Ì\í³rՔ᭩›Su³S»œð•‰:t\à ™7vnØ‘¯ŒŠžazÎ’_æŠRR’Âåêhýï ù\]ò2ÝŒ·òUˆµ×•|•9íð_Ôð³8I^%õ×ã$ä $Í•H„¤²3ƽR`Oá2bRìÍx—‹ ]Ç"c*ù)ć;@½øɲ Y2®“f‡Œrb§,˜±;/œ\é.®Ï‹?øˆ½ÓÀ|eÔ3ie“×`– –šp:§~6P;K%ž±`ç÷üIø^pš!c¤4W&Æ0©s¨b¤›’¶fø”ÔîÅ;À:+Ò®¢bP¦‹mQ¤‰Kê nâü“²¶7èÓ…Žxh†Vu‹v.­ÔkgçX=æ¦s%þ0áç%*F[h­îZÕ@+ŠZ›Ñ§ÀŽøÁß19²v)œü¨ª‘À5ðù»Ì^Ë}ˆ:,€/O8ÿQ|(n÷Àzþ8ì¬ÙÅ?<ˆ6
+ž–q™;f¥F#2)DtG| ÃÅÛnyųð„b¸êø:{¥J¢ñ|
+Q¥-èì4‹µã_:¢
+¬ÖÁˆ¾bhÚ+…ÐëÈ<Aæu\y¼_ßq¬Wø¸àƒILש[ãh‹Ps=iØv­ýNsô‚J @c.N¥SW±ÒFnp„‘íÉAC¹c©Bê—BYá ¤•iáUñÀ7Aª³¤>ç£IœÕ…9¸K˜5˜=Û©›EÀ*§.ÉÒ@x%@g«ãZšœà2ʵŽs.½kõ #0dÌBåz]C°|`€¹EB$© 7“v#p(JÍ ½2–§æ9h3v̽< Ô4;çp$S3¼xû]ߦÓ4æc'¡þ[]²|D¦Ðùƒ)ÏiÒÿ”ÅRÏÉÀÌÊ@ØRª5Qf8þ¤–îŽVå!øE:ŠH¹*ù'j©Êʯ“ߣ‡Jÿ:2ðìmü@2—]’Œ-uOö?üVÔ3›Z|à‹yÑ8Q ·ˆÆ±±Â¢ÑsÜî+¥i¸†µl¶®“½ÜÕ¬6ÔfåRÁ²˜›—(Y< q0Ü F»©!uÙ9ñsöÒ\²>XšŽlZ%Y›zMš%f‹Ó‰!ªÙ!HÞyÏ„†¥|R³Óo¿ðl>ÊO>›ø$<±Éû$ï2•}dgÖ¢ö=Ò£-t¨ÉîþÍKZš±Õ¤C¡?I‹b%ÆÏÔ$ä65úî'BÕ·kP¯D²BÚ*løΕç
+ƒs8µRéÁJŒžãÓHÓõ»è
+endstream endobj 1402 0 obj <</Contents 1403 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1464 0 R/T1_5 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1403 0 obj <</Filter/FlateDecode/Length 5156>>stream
+H‰ÔWÛŽÛÈý•Æ>‘E³Ù¼:o  ‹-$Ù  )ŽLCµåÿ>U§úBJšõlö)0Ì¡Èîºõ©S‡ßoUŠÓ^½þá}ªögõz«ÿ*­¶OªIÒ´È° QE™”ijTÕèÄdi©¶ŸU¤âí'ìв#¥üªSY‘”¦Q›ºHjmÔv§¢‡íûGlxت_”iò„ŒW5yÉi{V'ºT:%ãjêÕ?ÔQ}¿]Fö³œmoœ›_×!ŠIc–JŒÿ¿Û÷ä"ÖYT¨\ó_£þ.’XGy’ªŸ£X—Qot”òsÍwEü¯í_8à¿QÈE–%eíC6¿-º. v_EmlAÄ~±´¯³¤ùfELuÇQqÇQšÿ/|eMšèEù‹ÿÁ‘ظv”§Ù2'‚MðR5/9ä"rusÈK†36?ÄuôÓO|Ì”}Žó3ê ÿíù§¸ˆÎ|3ŒGkQqswú©zG¯±îзüôÜ+€$ ÇoãÌ$N‰Nû@s QŽòªA¤¸Ñõ"Z.@RÄ õϦitô×á|Žô{OѨÇ5Ntµï£ý4Òíå¤ aÅ2ò!š²(¥V €)é§ `K¹šè#™íéº~øB·Cl" Ž)}þ5îzuŽK,nÏAÍSßÎj–ýXù9Ö) ðR*t GØy|xMùðío²h¼ÐÝIµ]7N;äãŽY’È2N"Ë“*ÓÜC;
+–*SQPU¤æ‘Vä´›†™“Ï®=ØÛ¯±vÇ'=ÞìVŸó•i_°g–&uÞ8_íÌHNꉓ"#y4±ß:$ÛØ\7%xoÙó6I98̼C ycŠ¤¨ÔF':/Äëuy€…P®Î¨'€ì\™€[Û¢—Q‹_{¬ã;Ü)Þ˜¨ï†'wDýîÖ³ÍÕÊ%§kFl K‘*¿¿o»“f»rN¼˜ü~ %TF±Í>5laï’âô†}´ç ´{ ¤
+â ¦ç
+Ó¡zs'?ä®&ûªDÚk$]{ºyeîÍ+"¿WN›ùyÉÃ"L*R؉}D¼š«&%Nzæ¶heÆÐÉZù&Çk×µsïœ}+*Õò±6øiÜ+ZbãašdT“5‘_ÏáwÜ)nÄ~ÓYJ`–‰ê³tƭ̨ÿ˜ÌÐk™¡ŸÌ@! Õ;Ë…öKèlVXÏ>@2ýíèfìŠqx Gž#ž¤¸ëb‡KÃoÀ±Ü ŒkëØ@DÌËÕÇBÂWw$¼4Š“ü¤ {K¯i34Umyuä–;'“ èXå»þ„’¯µ¸×Qž:¿rf²é%*é•”ú·5;Þ!«…ø æ“ËmAl l­8áúíEœðl÷¹Æ³sÉxle=òõt!x-îÁé«NÌë—+~b÷
+¯µ¾¹ÑúÅ
+žTÛ@„*(ýá9O:G9L–À$k&þèzðü*õ©Å£–¥Ã²Ÿ2ß×0÷S£³…³_0ƒ¬™®ç³´×ž-±0PçXL˜‡…½;Âç4K¹<P;Ž¤\K´¯?ÿzu8ès¹õ~æ8n ? U¸ z3|Çæò»qòEªkj©nR9p]ç {ˆý‘¯`.«þwêÇQF-7Ø_¿Bˆ¾ï;Kod
+Gbú°ÏÀÍ‹ òxFÑ þòlÇJÆN1Pl#’?äA”ôlõt“T¥+ÞzH¶lj'eqR?} Í31úiÍ
+z"‰Á¯è1øz¼´úÉ"oµôˆy~^×½¹ÖT8ÿWê–4Ìg„#«¼Á gʤ)×zÅŒˆ/Ög”’é
+ô`™¢È}Í÷—Á„ó<<sTâÆ‘¹v‘YçuÕƒ¨X¥W XúYþÓûI™dß÷±!DÙ›³”®*ÏT†¤%þMGщÂ\Ñî®ÎYƒªÒéÜ»çÈýV0AßðzOä­ÝH2vÃ<Ю6$›dlþqÜCb*a±¸Ùz£æ±ä¯ o…™²#ÉU¥óíh!ðôð]6¹õU¸Nvóx=G!k‰Ø1Ê[a0o²>:tô.™B¹Îx õ±ÙÛ¬e  <VQ©g”i™)÷x‹ÑÞp<èT“„5 YZ”¹ÊóÙhÞ"#ë{µÌfÈøþA üÚ‰$òž¶fÒÆ9m}¥ð¥(f<kè’N²…¼’Wð‡(+ž“çIbçÑ›/,ìc¥åcÈ =ƒXDvRõât¥õ +5q¶5šms‘´šÌ¼§h,¿•Ê/èÈ‚FW[ý:©¿Fõ×@‹4oL,¿vöð÷¶ödk[Ä­-z®³½-B3¿%e‹1ž0Ýl®&µí
+,Z\x ¼®ÅO"¶…Øi§¨¿=•L6O+fdT¨7é´ þ„Xë&G~ñz^ôI×AºL¦ºÆ@­_à+× |H]j 5Ð(ÿhM‡
+1ìÕ. 1<c’Ë\“=ýXa¡,ṛ̌|”i3SJ°i]ä×:÷ÔE÷ñÌŸ{½E{³úy:™"ܲTsEì"Ñæ‰FµùHµ›H´Åc™ÏEÇ%nfÎx3Ú•{Ì1ïi.1ÿà¿"ÕUî|ímªÛ,èL+o›]4ÍÔ7GûàÆÁ»<‹$ëJí’ÞÁoRÄ+”¯Šæ;ŠÈC[”…||U;<ER|‡àGh“#ˆƒ.½ñ‚<ÆŒ¦@cÝ)ˆ(ÚvÃ8c ‹ÕéfÅú{^ü²Ëįy“öŠDº)±>u ~=
+X뚣ŠÔÆÇmbtFkzÖÌ ;Pa]Cló7m"’b0ÖõRë-T}Ô `ÔByYcu†z7kãn€–vdI" Ú±¿Tge?ÏÒ¬.ÄFw%–á-äR€%ÛöÎeU1 Ü”È+ÿȹÞõ|aâ„­6ZB1j7Š¢ÐNí鎺ä…Î$ “û¯ÛoíÓ!r xüzuéß¾ž³Xç3±—ˆ(x%O³B±ðÛÚÊÊ=@ß6Ýd÷¦aÒ
+T*ÿš  ?¡…㺠Kb_Î= Ò~½ßÜ‹à‡Çö‡óúG:·“Ç‚L¡ðãvvxþžð
+òúÿTðßOÜ!p8G¿çƒaꟊ«ýþy¥B¼·tîf¦nÞ3?­ì£°llZª´ÿ΃Ñä„®ùH¶ÑH1Ôbåt‰ÕÁnVïx­gd¬ ‹1B£´1:Æg¸ õ„;j‰ù»Ö§ãTÓ-þcO­3ˢؑ•>¼ÂÄC®ç$º-Fß_88ņ;¾r§Ø³þA­¯…|3D—á
+L8s±·ej›":+ß9E½Ð¶¼È ¤D1N.3gåìÞ¼T©³õ”7³’­X’îž­‚Ðù,›ÚÝã`ETÃÑmõ7\ÉŒØò²xeLÊ5ZÆÁjQFá1Úo‘5lzc#} ÿ¬Ê©|e}¾âŠkÀ:“ï)6¹íf…–“7îÛNɸõD&÷?ŸÃû¨Òš„ñM¹ìßD²¼¹,’yöl¥Àm«§KY¬å­>ПÿO f >òy£ª}™–ޜƆáÞ'2¤1)¦"]ø•‘Q™~×[qˆ%'¸ ®X7®Ø F]'ÿ8wŒùÀœ+¹LvH tù,J¿eŽt O‚»qL«„H«FGÕXïÂÌ÷p~ÃH®ñI¦^æ†Vùȯæ³sÇFÊl˜ëvÆOæF¦“p2óÏQ:C4ÓôŒÛ?59¼gá·üÃíÙŒr†:Gò<ˆtnS[ª8~y›±Ì/܃quþ8 —¬5Ãœáêé ”Þf.\W uÍB×*¯kEеJtmI“UŒú Ÿ.Ô­>' 0
+endstream endobj 1404 0 obj <</Contents 1405 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1405 0 obj <</Filter/FlateDecode/Length 4622>>stream
+H‰ÌW]oì¶ý+Dž¤Â«HÔwßšÄ \$@Ú»h⢵ôZÁZr´ZßÜß93$Å]{ï òT¹ÖJäp8sæÌ™o¶*åÿæ½úúû©ÚÕ×Ûì¿©ÊÔöQµIš–š´ª¬’*MsU·Y’ë´RÛg©xû+ïÈdGJ;ð©WºLª¼U›¦Lš,WÛŠn·îxÃíVý¦ò¶HÈxÝÐ)m×M’U*KɸšúYê›mè lë¶7î˜ç.ŠIë£NÅÇ_äÜí:"ÎtTª"Ãß\ý[^$qIªî£8«"o²(Åû OeüŸí?àð?ÉåRë¤j¼Ëùg½…£çäÝÞE±_†ö3´_ŒH^¿sPùÎAiqgé6M² üåŸ8Hl\T¤yx'‚ÍzJóg®
+8˜R‹ºeùy OÙ^ââIE!Rñ¦mttw{TÓ7‘º»U{<L§—#E†–ôfx…»f§†Q}Äã<{Z¿£¯†œŸí^þ6,Oj™èˤž»ñ^)¾‚ø›{5&)ÊFY€~‰¦¾?ͳqr¼)"ã<3ó ³£™NǃØ}™ÍÑŒ‹ØGhò
+ñy¹ò-fbƒ}ªÓ¶Ä#lÓ%65€Óáï"?÷ï@¶
+0 LÅÕÑž­ºn_Ø·LÃ(1%WÙë¡Œ-І’”s¯Û™Å7‘ÆÆF;…K€2Z²ÒÍî®PÔl ú¨b2¢Å 릭&fW
+FÅ6 5£D<ŠÛÙ‡5ÂOêNË©M:´ïûÅ““s-})³èÞEžÿÿé¬K5zEfåg2K;r¢rÚM¢B¼’Xԓ׫†õâGÛÎçéÓÊ
+o·¿ØñÈðVk?zÙdÍüÀ0‹v—©ÙxözGgA.rŸ(I/òã€Ú)„Òœ‰~Ðj€;/©´ß 7Ön4\ËWÝ+%ž&m©]F.T$á'Å¢ðíðèe!s‘¶³ >9i ­0Ì#Þ!»I®³¡ O‘Ëûs˜¿mIânLУðDÉ=<±Rz»2:ªð #£&Ð^MdÛ•àSµ¿:èsD™ù ÎÒgwCßYEûùY±çåšrÒm#úê*·ë¨—ÂæòÛ>Å<X:ô1üÎA¡G"ýä@<íj䳶ùüU8¹}]zü‘èGƒ×B+Ú’
+=ÜÇ_!þIà©vÔ¥«ÏQW¶R×5±š¬=5åIZø&5sA¢ÁÑLW®¸
+åÁ‰ PaZ½ìÃýK¦D¢ƒrƒfš5>Ç’d*Ó¦õ:ÄzRx}l lа2x&™JÁÛÓ$3ËCõ`ó½Î,¶Ia3À]UÚÌC0=å«VÚX//[~ËÅ›]²²š^Y)c¤dIžå<#deÒV-@ʳ*Iˆ±ŠB'µFæžÉz–&P«~˜ötkÊYN´ ”þ®.Ó 5jÉvYñ9íÙ14
+à˜b™t%óÈU/BìÀZ`æðˉ¥Û0ñü%ÔCOñ|öÄÙöÄp¡Ü‘†×ˆxØO•,eÐ̆%Ævœ;[b$cýr`ÜݨVr.£­Sq a7ÒåQ
+»:nÿBQ½:έZ“5`½¬Hfq0ì¨c‰IÔJ¸rbêÔC/Ù¹o”ˆJË¡kçáA6´8Ç¢‡?ãL׊
+þгé'Ö¢k).^$ª
+÷´½Ã~/Û´<H
+H› HÛËc4OâTM:0‹L†±²»f,wEÂ( v
+ÒÕ¾ÇÏùNÕÑãö›ƒdwŠt-Fâ_ÂLmÖlTŸ
+iªÔwõ‰G“ œ72a¬øj‚‚®Iw‡×ß…xœ}ú‘Öaó-k3¯ÐÁ1©3k&•ÚQÁº}fDO×Á% Á´ymüäþ:Ð/ÑŒKÜ1æWýùü8ÑÏ*o*ãz¸ŸÌõ¹bLë‹AK °÷\TÀ
+¶'^K—IÁù,y”ý ÓA¾ˆ¸lªæ€ikKbEÔ¶6’fïj í³Ç"u<<q,µcÖ`
+endstream endobj 1406 0 obj <</Contents 1407 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1407 0 obj <</Filter/FlateDecode/Length 4058>>stream
+H‰œWÛnãÈý•FžHÀâ²»y}ổ×ë²™  )Zf"“ZŠöÌü}êT5›”d{’À°ÔêKuu]Nú°V1ÿ [õËç/±ÚÔ/kýÏXiµ~PeÇ©á ¥J³(‹c«òRGÖÄ™Z?©@…ëñ -'b:¥Z™4Êl©VEÚªõFWë/×|àj­þP¶L"žtKBÇMéL阄«¡Q¿«N}X/µl“@öjºæÛ±Š"ÒéhbÑñïrïú ]j¤*Ñø¶êo2…:H¢X} B&\é ƼÆ( ÿ±þ3þTN‰²Â«lßÕŠOŸh¬œAD~º”¯MTþÔ"6å¢ô•‹âäk¸¸Ë”q¤æOÿ‹DÆéEIœ,ßDa3ß’—ÿ“ÓÙÉù™“—q8ûØ~‹àön¦×'ì?«^ðÝÀC˜ Ú¾S¡¶7™¼«;Zæ}»¦Âì¡Q$fv¿ÓÓÌzr,ÆQ‘èB´,³4-á¸<Žò Šf†=)ºR_Œ§ÐØ âaÒÇHZ´ô_‡–2«Hlp5 ý)ÖWêLűZ™¢?±èp…CmüÚ”e›`K¦iTGŸ}¸J‚QÕôM¡N×ë`©jlïwâÝß`–4ÃU<Ò)™šºi_ jP=Ò–jl"Z„¶“†fR0.¡àJG‰Ñ“–Òò÷p•²Ø†`äÚõЗÖÕN5x´jd'Rz³*U‹aCþÚ(ªŠbègLbï(z>…%›—œH“ø_X/T-YW¨ilDNŒEÃþ!ÔÚ½ºRõ®:„y€ÊøýÐ×Íæ™î.Í…ª:ú±ÁKè^ZÇÙã=jÓ7|;ÉôdZ…ÝiÁ k«ñ–ÙÉ…w²fŠvdJæ¢"?’â9—Š‡Çžì±ï‡QÌ*äWÀF)ü¨ë¥‰HÌâ+;%Áñ¸ zªˆÆÛ¡À)Ç$=¾&‰Ê"›ì[ívêžÔm`žD¤· §RHm`ÓBlŠ»( x#Gï ®y±­)h98ÞÒ¥à‹¼Jq9édĨ¢ÓÒª÷M†X´c u0{”Iöz„S«Ž?÷ØÅ<Üÿ$9!½@d×Õ3ª!xÊ98m°ÃL©5?rÑcOAX ‘AG—QžøȽè$c`‘ó›…¨zë}Ä•4‹Š,™]_ÄõkÊ$¥W†MšD6ד„5)0ÐÑ–|±Ý6Ó°Û*ÀSà¿Ú¾ªšžÀr>ô+:¡¾…I&#Å4y‡O¬1Ë“ ‚ùU•µÉ,S˜£ øÈŠgp>Ç% î‡úÔVÛ®g¤iëë&ÃÞÕ-=›T‘M%0éá;ˆÝ9ãÂÐH—ePï
+q§Œý¢ÿø7ß'
+;ßqsàikîk«qµöȽ×7Ÿ®?BûK¨%ys å~½QGEé¬{¹Pí¨˜¨2`ò%Ï¢§‡v»•îd¦ý‚-Îðœø,Oìv®™=ÇíÞ¬%œè»^¨ôE‘–n@´îqb$´œJ猔CܘY_mVrïÒ>Ò­ÛÈóP*9P†ˆN’ÜÌl§^ _Ô[ÃâÆšKZãêgÎõÓE)£+ œtxGQc ÞEVƒL${:ÎÄË‘ ëÚÜ·ä¼Ó-
+1"—JNË
+.RKÕlƒê™Éi:5/L\Ÿç®â¦ŽÍJo34ü¦EjSË„ðïãà¯gÉ›)|g úNÐ5l&Ž
+"G¤ dÏ äù¦9ߊ`AÙ\^5/¾ k…-ão€v GÜ@ï¥*'R•½ºÖ«›9«–ÆwBØ~„ÒäqwõÝû{Nðo(ÁHpO U=¸n”§ Aý‰Ým[Hë¡s2Å?¡'÷TUe«Ÿxé‹ã“¯6B+§÷ÒÊM5ìZ*®S` ¾…&'’À×›iï ûõŒqg>ˆÎ¿PEŸA–Kœ.¢XÇVá yBè£gº¯Q:ñÞ<%ºµoê†kÝ©[ºª!a ”¨ªrñÝÍG¨ÌÅ‚J~2SÁ¯§§gìí¸Æñd'@㫵JSº\%¡©UR$Qò“P
+¨õa}ÖÆè©IßïblNÙÌÏŠ4w1Ÿ›®Á` H{­Ñ>i´~¯±©Áà¤)‚ö M[ƘM”[ø–¤iæªÄØÉ–-¥È"›9Š—{HÏÉß…(©ä*2”—¾¨1¶˜N9åSª§|bbÍävà+Õ…Ó ©ñQ0•E7Mzò|Ý;8•xÔÁs'´0ê» %ì}3ó^^UÒtøÞ$v´^Øy‡Å}?ðÎ9­2 Öç½a™[’-§:Í£;DÝ%ÝxÃz œ¸åˆ`ë‚SsG6—ïÈ=æÉŒlÈXf÷S®’‡ŸÙöÈÌâ<'@›|‘ý$lcúiÐU¹°5¬$â‹ŠúÝåÍå­ºkÀ‘ÑÄÐ)Ÿ¯yŸg˱+Re‘±û5ÄIF,c¥¡L1ÉòJÊ•RR…ÒÄ÷)'™23O“¿—)&µ‘ö/Z39yd&½g¡!s þÕãã
+µªèÂ[”'µd°gcf®¤]×xWéßœ¿Ò
+ßj-æ²J j¢WœYW‘`œ`,ñÖ±/ÐÇbÝÄ¡€©¹s')¨«ql¡ÆJªA\˜„½µÓ>)Í/Ó&“ jc€~‘»X-ƒw5‡¢Â–ú&”Süm¬únÍ{ëµ²ÂU#öoœYåjóÄMÔ‹©~ýŒúóE,ùÕj“ôjmǃ1À– /émUϵKg)˜âƒ)’Ö"úáx<J½
+pœàR8uRwç^çÔ‹R+˜u)Ìj»‰Ô¹·æàVބΔn7¤Û|²fJ·±x­2$±1øü¹üYÜ}¶m„, šìšßC˜ WfAŸWéf6÷£'KÕm*ÙÎq˜LBµÀ«2­ûÖÅY•u$%´o@ñøô
+ÉGCY\:Õ©‡¾íÂÍiGØ·ýß:ÁÖw‚"íR#óüÚÔÙS*ž[N<MŽ®·>šmð欇È} Û%ÉKý¯úßø÷j³PþÖ/Bk;youíÁ8+½ZÒŸWe˜A—u½‰‡5®£ùÛ³m´˜2äé;„Ù
+endstream endobj 1408 0 obj <</Contents 1409 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R/T1_5 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1409 0 obj <</Filter/FlateDecode/Length 4830>>stream
+H‰´WÙrÛÊý•y32ă%yÒf‡)™b$úæÁ¾•‚IHBŠ"m²oþ>}º±‘†|e»R*‘ÃÙº§ûœ^N*æ¿úN½zs«»zµÐÿŽ•V‹[•Gqì oÈ•O¢$Ž­JsY'jñ .þÃ'´œˆé––Êø(±¹šd>Ê´U‹•
+.7S>p±PŸ•Í]D—§IqtÜd‘N”ŽérU—ê_j£NCmp·q¸{ÒŠùz¨¢\ÙèhbÑñ½È]܈P›À+§ñmÕo2…:pQ¬>¡NNtc^cäÃßÿ€Âÿ$•½1Q’u*Ûïj E ȧ´ &Aä~?¼_›(ÿS‹ØtD»á@–ÉãHÌïBÜq,ÈÅ~ø&‚M/%ÍŸãdß;9ýÆÉCö>¶oÂ,˜Ïáfz½cÿYõß%üX‡>ØaPm7*Ô6 ãºÖû±º¦eÞ·. ÌîJÅ 1½û=M¯'™ôäQ£fžøDÔ„ç:MC¯n5]Ü“º%‰M‚h3£I-Ãy8É^¹à—¡Žƒ+^? 'Í~¹dNlp5SÓÙë+xK³ö`-ÒÀ¡ÑAIHÉ
+>(xòŽuè×eö¿4«–Û }íCÍÆ~ª½hÍ6-lo o:Ÿ c˜<Jr¬èÑç\‘Šu˜årO#µÀ¸Øìèó–~—¡ãU5å·n0·ÅÄÆ œ'ï]†rî;]†~É;¿@m£8Ë[MÔôâå÷b5ÆA^å\p}rÊ¡ [\Ö½¢¾ª‰óäo£&:Ò>9gpÛv½Ë?öº½î£ŠKtcÜ{Üë#“˜âªØÐ%+¨Ÿ?¥þ @òícMb—·=û žœŸ‡–Gs¸zO¦‡’.P{N ¹ÄÛQ%m§$G`FŽ,Òk)0gz ¨O5¡ŽL
+Ô-¾o!„;ÅT!Òu¹æÙƉÑYZ“‘¾§M<pŸmü7eŽ. æ Ú2O!qÇÃ")êÕŒ)ºÞ. ú}b£ð¸a®±Æ|Í©Ú~*ëb_®”„|¤Á§OÛzßU©&Ø®JjÕX’ #wÚë!‡êú< ~qù}ò»jÐDäUÉ“ÅȪØLÚóö}\é£Z(ž9/z
+W4W~…(ìÛÃ1|¾Âˆ}£
+6 þåAŸÑÊÃKɪ}Ÿ/Ñ3Ì‹e4ÜYþ5Ú ôå°i*¯4–Ù· 'âjɱÃÃìÜöoÔ¬yøHâB‰÷¤O–ã]wk¥¢
+%뺑ws”îGjmÜÔw‰âÕ$²m“Ø´Mu”Ðbeî°ÅzMX~*²üDPƉֶ K.¶Õ<ìj:lÀM;¶d­Vž+jZ㜢åîRmyð±¬KtŒáÄ¿ ’úXô5ŽÏ=/Ê4 ¾dÈÆVÖòYÚ²e3=Ötv}
+Æ–ƒñ¸`E¤š‰½F‡‹‘fhŠV¡cîe“p\À̤ûCZÊ
+]î8’7\±M«Òr…Önýê}ˆðDû¶…i8B·vËIºâ¶ÏÈš3²±Tg´þ;í _B´ÿ„üE)w…Ï%××ÂêÐMaªab{ÁãÕ+l¯U·K=búÓ–W…ú*6|"Ç23lÜÒΘFÇÚ ‹€›²FWÑËŠº, 9#Á$uUÕårÏÂñ|Äž,€=_â9€Z´†ò⇡š„š±4Å“$hçSâ $ÏÍrs+n÷Û‘Ðå©ù1&rÛg‚KÉê`QÁ“ó6M
+¾ õËÕ·Ñ€lDÄ­ˆ¸Ž–3K>&ººo°LÏe¬–Òì>àó!Ƨh3³Ž…ŒÌ踮D5cT…*£OSeáÖ‡4B9Œ ;×còÃ1©Ÿ¢²q*ÜäbIËÓ\pþ²ÉȆdÌJ®É{—ŒÌ'#qÝ ÝCaœãüe'^P]Œ]ñX yPé@ðª3‡'7ôê…„ÿ*LûÈcäD/áY짨ð_`Æl¼sÌ+çïVÃ/Ǽwà›èíeåw௲ùëAÏwì"u<œ—ç5:ýÝЧHGèƒ(úÂòºÀ›+*DEÛÊMŒ—õ•¢`Wy1BÁƒÝ¤NYì#TÕ =öò5ŸAÒƒâäöèÌd¥o°øŽ8{LÈ©)…€€rÞq!«š!š vr‚ Ê=Nᶒ³=CRœ±=bε[{À3j*ØŸúùwU:(”_‡…Ò ÛSü EJ½¨õSÓº$,˜?ÇfÁúóÿÌ‚qწÄ.¸Rxb™¨|›‰ñçÅñ´DÌΡß,Í’`¤DEZjHuw;¥Á"õŒµ?šÆ38+Ë'<dæ#sðOšcCèÇ5¯à¨u’8x¸ŒÈq¸†OhÐòG? R\‹1ŽúDPÑ°ɱXV©wºµ! Ù‚
+}Q3[>fîp· |z‘eh‰rÜiF£µLkuôjX†>­'Vá¢A$鹯÷’H%Rä] ’3D2>8RÖ–qRÅiÌVzuœ3ßY©K^iÇI[³ŠC":WXTîvÛ=Dw(¿Î`Ú¬ûí?²hKÏM6¬ÅÖ¯øÈðÉ÷¦·Sâ0QžLŸ|ÞDáôùbhÝ tØi͘òò=ÃïVÌø_húk¾¿ôö·|u…®×ÑÕúk|ðÙ‰9o /‡¶É}Ûdçr’‰WK2:F&«=¥K:1[&·8õò•Ácî1!%&ë%¹ƒ„¯+-¸{Œv‚©òÛoûŸg'¢Ìc …e&²2ˆ  åžT¯x’ !)tR–—TKÚopÑÌc¨Ð7¦³Õ ]
+Äå .—¶¼ryfƒt>C¯]„ûÁβ餵¢
+à`¢£‹ «ƒÒ0¹kàKbo+fÒâÔL½‹ïÒV
+Mî¸${5^}A¼‡ÈG? ²¤Ó##TÞ÷bœ.ü¨9³§ Ã{…ÃôMÇãªÆ,ðÐà1ÇödövO&Ù2NFЧÚõAZÕ]5{Ú˜^ÎË·3I ÙÒíñ
+”ËÓ
+÷åh³oqFC3Møî$µb¸íEÔÖ.­ÒkèK¶ s›¦¦ÆÖÑ"ÿɹ„MÈ
+Õ8r¬ãáØš"b'ÆïYß ™ÍØu{µ«b`Jf±M!`(Ygluv‡.Ú¹}Š ÁxËñA*X`=ÁêB€nÌzC[ŒÄv¡ÿßÇv&À­E5ˆ¿AæBBæ>#êF6ÚïñuÓEæèEÿD`Ëv‘Ã`í­Ÿì"‘Ó)hes1]P4‰ÇÅäÆYgDgŽVSÎ%pXošòQ Ysk‹—û´°q=UvÈìZºnKÿBÏ«åÁŸæzÍ}üÃh-'ð—>Kn Í¢¶îñaÑná¢ãJ\åC°Ì“Æ;çp3×ÛèÈ&\ý6?ô¬Þ¿ ¸OôýxA])!™ƒhŽHi+!Ðî¢CÇd ("GÙÝïã·©¬]ž©}AR
+endstream endobj 1410 0 obj <</Contents 1411 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1411 0 obj <</Filter/FlateDecode/Length 3476>>stream
+H‰ÔWÛrÛFý•y¶L3ƒÁ%z²(ÆË-‰RD:~ˆS[0 ÒØ¥„ûï·On$¡P‰Ÿ¶T˜[_NŸî¾^ŸÿÊøáÝÜ›ƒøa!ÿí )k‘x¾o/H„ ½Ð÷µˆéiå‡bñ$á.þÃ;¤ÝáÓL-…2^¨1ŠK-+áLó)o˜,Ä¡“À£Ã£˜n h»Š=
+éÓá¢Ìı׋¾48[8{Ô\óDZˆöÈZFå[µ÷.æt…+•cD ñ«Å/öƒçJ'ð|ñÑqeè(w$ß%FÆýmñ/ü3‰l”ò¸Yÿ©´ôØ€¼ûD:gTÄžoúçKå%-¢£‹ÌÀE~ðÑíݥߓ=ó›¿q‘=ãô¢Àû:lº[¢ä5N6“£3'÷qØùX¿scçán&íöŸ¿ã7ƒK×8 òb'\©2nÐxß4Íë¶YŠ¯‡L0HTçþZNÕÉ)cÈÉ#iÅLBZ1á¹VÒP‘ܑ֤q>“´ÙŽ¢rG‰}%!hæ-„›‘(ÒÜ­Ú—Å2;¸¡ƒ‘óNZ£œÊn­ÒrƒAe¿>ºQ}ƘFdée–ÿŽyÞžò>£Xòý´3•«2ßá$±,°
+Ø&¼-ãׯ,ó¡:¹¨óŽ¢^š¸&÷Á?{‚oZG/ÑKÔ&Æï[´ŸÒmCÉàíÑô†f¨ -Ë33crþ¼Ç^(›Þt–¬±^¾6£9Æz]¡2àçƒHGÚc”óØBåRuuf=é{ ûàþ«ÆÓñ‚Œg¬ñÌ€ñLÏxƒ–S]?Y˙Ӌa»‹f7±fÀ*[
+Ÿy½~蘨ð|£ûýÐOYJBÆ0)‰B]Jà\3–Ù—gôkœ=(‰ÀËl[,Ó*„Ř˞¸i2NvluÔR>u´Œ¾ÝÚÓŽMJš]ÈbîÉì)]O8œÜú=Yà̶®n€¡G¼ÞÞ[<7>¨×ê Òuˆœ|¤i7 ¹¿Ú¯=!ùvjxG!CµJÂ-ÓË«»4^дjÊ ·j¢ëà õC±+e|¦wM¥ož¦è…-Zˆ ¯­ÛNÓôk¢,ñüDöpú#`?Ü}Ä/ᥠSÉiGIâŠé8í*Û̧½À»ÜÕr–5ðâ@~OYm:ÛÀïʉ1‚rÆ‘‰jÌÀãDÖ‚Ÿ+<)„P[—¯²'U…úµ¤E‚ÁE^(×:Ú‚q÷)9}ʪ ÆÆ ¬Q{wè%RõmnÎdÅ$¹$]§¾”IH$¢°U5
+ït—‰énÝ O´Š“ ²E±»$:•ef-èTw©øbÆ L'|x^ÓÏnI¡¬2Ûå> hukã/â‚_ T¯«•B“¾B)Ê_‘Š.ªzòb
+,hOú-Ïû2*V•ìte»~¤í8{ zþæ*žŒ¾[ƒ¢c
+©ð”ÛçX­ã‰
+Ys1ž|ÝVçN¸y‹o{ÎõlÎýœõ׶*@åflñ?Ò«¦©mˆþsÀ™XþÂåÄ”tÊLK3™¶wC›C:Išß÷VR$SSzìH»«Ý÷Qôۈ㑀³f›ˆj€ù‚jxÑ{AŸ¯~žo$Ž†„²Œ ñí
+!Ö°¤©¤¯…õ7®S4è ßÀÃgöÅžÇ9‹‘iyL#â°³hŸ«Ù¶+yõÄÈ츱ðd9z÷¢›ÂEétèv‹Ðm:ïéþÂN¥Q¤·Ÿ•áSãZÜ5Vã©æþ·¯žè|§Šñù0NÈ#ïEÐßAªøW1Àæ±YíäÅPœÕ8¯úÙ÷˜ØC÷‰=
+išÐÀP0Í/oØlÿZ59 ªÃõf`˜ˆAEì^¼z£Ì‰§ÚÎ®Ý ž]ìŒ Biöˆê× c.~[W•‘-œû72Õ¡d™ëÕ:;Eä°­j
+î€Õàºk©ó;>6<xÂw÷ñÞLŠîæË
+;G6Ao E;·yð~Y`,-¶!½
+¯ýàž©åÖÓï‚‚?©-Qªëkkõm&ý–Å+(ëlý;Y;‹Î08‚Ñìð‰‘:r6ZsÛ.Ôíž¼©äÛ>nG¤m©æÒ
+,Z5ò–ÓRh†pîѬ '²X7ËGf¢Vò $j"=Ä6í¸ýb­³5NKL¿ª?
+endstream endobj 1412 0 obj <</Contents 1413 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1413 0 obj <</Filter/FlateDecode/Length 5066>>stream
+H‰¬WisÛÈý+Sùl™XÜÇú“%s¥¼´W¢6âT
+"!
+[© ÿ>ý^R”írR.‹3ƒ9úxýºûli|þk6æç7W¾Ù´æçeðßfyk
+Ï÷“
+“¤^êû‘ÉŠÀ‹B?5Ë{ãwù'Oz—ø´2aâ¥QafyâåAd–kãÌ—W<0_š¿LTÄž\žåòJ,ÇÃÜ Rør¹i*óO³3gË©4¸;Œq÷¬æÓ¡ˆz¥•1ôUÆé»Ë+y B'1q€ßÈü¡ ž8±ç›Ž¤NèÎÇÇz€Qâþ{ùü»ˆœ„¡—æƒÈÑW¥… ‡äé#霙5ˆÞŸLïB¯ø¦E¢ìÄCɉ‡üøƒ;y+,|/˜˜?ù‡ôŽã‡b?›ê$°_ÉŠïqr2:9{âä)GGoÜÜyÿnícú/2ñ[Á›8-õ~gÜ rĸqï}ß\ÊgîÛV%VÛÊ$áè~+g8z9/+R+f‘&©Š Ïe¾—¥4 Eë^ÒÅÞ%NWýb–ò`âܹ™S¾ƒû£ñ~1Xoñ”<z~Yk¹çjï¾ó؈ޫÊ\Õ¢Áº2úÑ…Ž¹vcç­›:òNê,ÜB'»[ٹǽ—Me'+u¿ºD™¨*î\A” öâ4ìe1s ŸZîÚA(³Úó·“…¦l¾¸¡ˆƒ àè£Ój'ã[!ßʽ"ú§^‹œ"pê”æ×}#Z}ÂK%FëZ–wÑ7}eõ­ ¨pêpë}÷§ÍFEs«hPdú:ôüà’ÂtÄcØ:‹
+/Ê33 ¼ ÉTÜ•¨,BÉ{
+§”aìtõpÔtš
+“òãmÅM¦»“¥Êtb€Yìl0éŒ|
+ËÅy®µŸ;ÓñWÀeÀ€
+G@)‡*Þñw¬8ÄžNöTko”.ÊGPô´¬ø,ô .ü|q‹À3ˆ¤;@¯:…ì'à^ˆdKÀFΪ¼Úl°Â†‘Y™ß\kñψÒ{ÙÆÇÀœa ÛÌ¥î>…ê`
+qúDZ ¡ÜÀÙ/ \î
+MêDs£ç»QÒ#1_2m=‹C¿WþõDùwê€Æù¿ˆ _ÉÎg ÉšêOŒ«•ˆEóȶK0#"zDóp‘EƒòLæ<ÅP/ÃQ…•?Saešœ2&§É)+¬dÌ=È!“SÆäl˜¶ ÁÀ2Av‡C»bÊ|·¸šO‹1k·D 2Î6c¤}³¨Rû|–3Ë÷0+š½Ì!5ªä4?ƒz4š=zšq“lˆ¢0ð
+?êiòœ ~lY1,£%zå‹P»ÌD*ÿ¾Ë¼è«—ÂyÁb¡‚{< 7üK,+
+®Q‚îJl¸¡f[6ƒôg‡áž«f®¬"ÌÝÙnàà@­p”Ïwj ×¸÷±¡$µí `aËc|`;Þ¿Âœ—vÃuúe§r¾$ß=Oßaâåq0d½ÿ…Àû¢WœÀ«kÒš23¾L’iúž]Ÿð×åè@ʘn¬@»²ÛÕ;HqÎÒ¡íx+ßÀŽ¥•Bƒ”/?‰IuѨ›¼j™þ°(Í7TØAü|ð¨y„bºFãÏ"Zˆz©=0ïØWZÉ@ å`!!,-ã¬%G+®OÒJú=´bË]›jÞlÛÆÄ †Iã§=Òå¨ùÓ!ï¤t„4xmÉßME§¶ººÓZ§PZ@!9v—+9⠱˗Tz{¿´­äPé ñTñµ¼y¡Eº;ô)Û®jv*Þ¬?j58--leʦd2e¯%®ÄÞRÆ[&P
+ÇüsÇuL?öÜMU1?>²W[Œ
+­ÑähÏd+dmÄ,Š!RØoá) ^¬½è·áÞ}ÜøQl
+#$²ÙÀapø¨8KÖ—¨=éjî­–òu»E¹žhªu)hBl…#¬VjÖIKÄ묇c_÷uüúU°O¼ð[pO5x'£¯ZQY&ÆÍØɉÙÀ¶¶bËiÀåOb³Onˆd‰
+âά‹ÚAÆ"(€Î
+ÿkéU6;Vhgæ½tBðJáÜWâNØôIµíG462’áãÌKÂ19Î_ºÓLÛ:B²‡ ¥Ü+’è(“ ŒÂ§ZÌÆÎ’œh2Žä }o ÏÀtúB*Šåiã–aߘ…²1<¿âÂ5"ÿý) Õ ÿå½J–Û6‚诠|"«d˜
+×
+–e{ò7%w¿Ã‰d hk)ËBN¾ÇfªØ‚SU'bø´ËÃÒ5E&ǾÑ%ÚݾáÏ^J­3‚yªG„Lüö+·€I•"”×+¹ÊÂáùŽfQv¸¿ßl÷ôl¤-y#i~sò%…¸‹Ý(›±²V*9Æ˽ƒ/rÓçcµ a©3J“é/9ö‡òeÅÂÙó åDõ–5éT"ŒnäxCªo€L›ð2(Íãß{'ÂO|¬Ž&d„tC[RètÃ%?D‡Ê.7OPÂnX~ ê¯ò­,G³Ÿi¹xhsg~*—ë™THTêÚ <çI&‰hçõAûtÈ’æM.®ÈòÞ<UN*¨«"œèn”~_do{ÜhS‡ßº[x>u=€I†^=:™ÄÐ6ÐÒ ë º )AÄ<«£ô¿ßnö›å¦g®†PåµÙ‰A ‚æVWa«@ïJ8¼õèž×1±Œ’Š_îjÍšçmƒ5 ÷·¬’@\¹6HŸk†¦­pµ3v
+¡”ºzÓ›ð!«š½ŠôG«ÆàñeÞ8hhHDÞ³Ù4xë<i»‹ta
+J%\:j[î=ЃöÐÉH%ãIœ™“À3H_&véëƒé>t…jtÞ+<ÿôî?š@í¤_s‚™'=«ÏÒ8­§GV°Í> “]É¿ÙB½dHÎfrE"Šwè;ÞåÍœ8!ڛ䣎mu&^DAk9R…–°Œ!–÷w‡â{À7 @àÞº™G#r@R»äŠÁ–Xni\‹lm‡g&wóeÔgceŸò0òô ns3>ÓØ=0_Á”#ÄÆå°ƒrÆŽQM‘3{«³Ÿ8Ë¥vq/4­‚‰pë
+Ö§Râ´¥ºmnzú7FuÈ+þØKâBn4²µ² –ýåÍÙ† M1fmº6gÓòÝšý,[DC¿.ŸÁ º¾”l#§¾i !ßÇ©´Öcâ)$¦Þ'xT¬-*Ö#‹v’#ÆÎ/V;£Jaꂺ;
+UUiW±®ï´Ã+í/µ–UlcM¥±š“†Ž¸§„\vf½ F;Ú¨A L|ó(VqY:'÷Í D•Q-­Tz¤šÆM¿WºÖ×w˜æ•¶Î
+ÿFÃå´5K=/Ø0Òpøƒ À
+7d¨ xo—¹äƒlâHK]€Ø¿¸ aÿ_£Pâ
+endstream endobj 1414 0 obj <</Contents 1415 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R/T1_4 1464 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1415 0 obj <</Filter/FlateDecode/Length 6053>>stream
+H‰ÔWÛrÛFý•yl‰w<ÊsK¢d‘Î>Ø©-˜„elhR@»ü÷éÓ=€-yó²µ¥0Ì¥¯çt¿Z©€ÿšõ˯Ë@=´ê—•ùw ŒZ}R…IÈ
+•¤~‘Ê
+ãGaªÕ¥•·úï0²# ø´Vaâ§Q¡&yâç&R«Ò³ÕrÎf+õ§ŠŠØ§Ã³œn‰i{˜û&U& ÃUS©©zµKƒ³ÃgOúk¾‹(GZÃ@d|/÷®–t…gB¨Øà©ßdÂ÷ŒŽý@}ОIuèMŒ0o0J¼ßWÿ„ÀoIä$ ý4w"GÏJ A È»O¤Ók9?ŸoB¿xÑ"Qvæ¢äÌEAüÁÝoFæOþÆErÆéEqu¢°q·$ÑOøØäO5ÅÞà×èW/Ówwp-i<v”
+?KG†|ٌƢõ$°ä¼'Äž‰4-ÿŠw…pi¼T·Ôû⯡ϫdº§Ï¼n[•˜m+eðá­há Z>­H“TDC„8ë¤!™·nE÷ýÙ£GEzáÅzJoÕòd¹õÿ MÕÞ$ÓŸöª=àóãã¾éèkåEzs¡ð…ç[/§ó:,·g³ì9: –
+¤’ì¿B0I.#ƒ?C‚ê\,$î„=KðA8Ø{–…™Ú\ ÅnÈG¯h2Ð-Ùå×4ªÉ#»?øù æ»O4Ø#»²ãfG3ø H쥅W`zÇ„9¤ á¡=Å©[·Hû@O2 E?eb”K‡ˆ¢|¸”ÄoÞ±Øj¶x3Ì-¬~‰ž]©ûgÍ5‰|kçûcVü…E¢<ä7õ†ÃíÌ
+ç '¸=ûŽ¸LÀ¢ß6¿ób/Iï>#Y
+F’i¹ Á.Õåz ®HÈÉ$Ù~ßÐà ÀšÑòŒµKLÉIµL8À›’s½Ç™;:ª#o÷3NЄ4“ HàŒÃ”—R†sÏðè‡Äd¾#¦eš#ƒ\Á#÷îç5¢ê–·Mí)ŽHÍçøs Ä) ³VÇIù”kûL4O÷bÌ]Ùð$/²
+Âp©=¥åüÊ‘ ´oˬ€¥{*N™<½ ÁãŽÞ’ÀéqLÊaäg=—¿·DÒ³`ÉŒ¢B¥uZd¦Ó1EÑo¬ŽPY3Vhm`*!x¬T~®”•llà¦ÜÔ{ªÅ[Éÿ˜I°Åå(U {Û+WìÐ{•D ‡ÏY.ߎߩ£²¢ „Á·¨QpC½aò…nü¥Ѷ5?T;p=c•ß7\|Pf“–GZ³™Ù›ßGrSh‡×蛯s¦ RGy‘Mtk$zÍùSqRÕœ>ˆ‚šòËfÖGšÌè..i%µž`»€kªô(ðmtÜ] ‹/T-„ºÃ³«…K¿ŸåhmŒù‰_Äù¨¤ä„ésþ¼LBqRÙjÒ ¶…-<4ÔäçñÁ
+¶Åu 8ןöx¾#5JŒ)äñ: g£O´(ü<LGxæ3=þÌÆCéD -ãìåäõ™`5gz`2Ý(‚ßB_¶§ñÖÔ…A!lø…›•™IéRÃE­”DîÖГbÎäú°ál¬0#CËл‘2‚M£xã׊Ãr7ªSΰe~G)K1CyvƒR}`ÝTLn Ó¡¸¨ûŠ‚c4¢`
+#=ª(Îó4$B
+¬¯Éz‚åZìêùì™ìÿ¨{!›ñq/ÍÁq¿ÙÊ+2XKÒÂå­j,mÑkcÍe@R(1aI~l몥|ä|éF-’Wz]™|'ýæ¨Ñõyâ|4[ñþÛhŽó
+ 纴rMe|µÞc ®±Z’SP5}ûö¤»‹_êîÌÀÏ9gÉü,råœÂw©=v!4~$—5œ‰þê4˜ômÃ$D±ŠÂÌ7Ð#bÙO%?xéy#œ2#åôþÐ0ºª{ûÔ+ô¨ç\‘r%«üPav´Ÿ°³Ü¡0x,&"^äü–˜ÁoVùqVL™v°bÉf§
+þ x„‘ã.Mb?ÈFàÁ$·Ké\"K)eŠ¡n‘Þ
+ç”#d Çv£ÊGJº-ŠðU¤]C² /Ä6ñŽÚWi㇩Ãxæ“õܸá,BßÒ£zõ¸ï,§”[9U²­ØiÙ´bÿ „4‘yD1¼QC{åw¨ÇÜpÒiMB¢D"£QF]² ¨¡Rh1˜וëðo‹ nžé{D}ÃíÅ#ø¡$õ+a¾9Z3t9óÔ»‡þ=iÃHèÐ[—Ös Ý7Ç‘êÀpÈýÑã–ÛGÙ²8.°Bx H,å_À³‚©Ò åÉ$ûuIº\U3œU‘3mš÷¶…˜ãr¦+¡yƒöÁã*7‡#N.4qS&ÉõÙã°K4ù ­¸EÚm¤zæi²¥0\®e#FwB.3¨°€%߸OötkðL_᫺úúÖ~ìO\ñôRÞb!Ÿ¥æÒÐÐð5ÏÞß0òÿxÃ=_µ©äþ°äùžѹ²~m[òû­Âäu»Ïò»¥ß”‹6ÞšKhž5Öê ÞL}îF1ä*tÓ÷«ýhW_S¼Vå¾U÷¶.ˆ¯)B%éCÅ1¯„ ‡Ê(LÜçê/Ê«®©m,‰þ½­]…UÖ·4o$ UX û23B‰fíµÍdòï·Ï髾’1 [•"²toß¾ýqúœ}_Ù›¾`hÕF8÷ëø^FC¢µbÓ–’"d4edÛĦTª¤/ÿŽ—&^û)À&Â/Ó¾µnO?çݵûçMpɉ§Ôoÿ.®š‡i>䪿؄8t#Öœ”iœ›j+G¸4 Ä›`Z¦Éäâ,|q¼¥> K¡ <Sκÿ㨜šåa<²þVÞ½¸:JÆŒBÌ#ã_/˜ 2<…&§OÚ¿¨Dö6XÔûÚp’m”ÖÛ…bàÉûÎÕ— ˜Þ,¤ƒhÎÄ8ŒæUŸ¹³šÃ’Þg;f¶gn×pÌ"¹ú<­I³ÅrŒJÙTöwlŠúMóÇôEs9Áhê9¥W>W Æ e¿:eॹºÉƒØäAò†>H‚‘þ;|}uwn¤Î<&ðiÜ‚o&apñhôÂ4Ñ
+¬þÂo™[2úÛ…4†TmKPEŽ€Gî&lÛ}GcñéÑÑÛ £¸tKÿ½€ò_9x¥5i¢…ãâÞƒ=ªM–wÛÚÞÑQ;î~fûÉY"Ÿj¬yy!‹ù!šÌ-ëgäócµ‰†úˆCkª›mû_ÈÍÖ…$G삇Ÿ(ÿž˜I©µÓPÉ«†:´ØQyº]¯áVâ!xNŽçB猂}æ°s<bN
+n–èÃU|‹öeZÍÑ`&©i-É$„s¾¥äòaÉå‘öœt Ø#LЋK`­¼–QÛ›ò )-!QߌEš±ûNË5xæ¬(LV¾¢$¸µ(¾HS zu¥Zó%B^ö!Çž7Œ‰>añëOKü«»õÊíÃMˉfóõL¦ý¬æ#qf~Š}•v¹ á³&'þ»Ýºé–¾æl9«l¸˪ jÝ4‚ÑÎüÎÄ…ðWµJV){ÚÝtÈQ”&ðƒ“L>ÎFåQ\®MˆÊvIg¸:¹×®&lD% "àânäêDêpsƒm³ïþä—güCJ.MXth’ãš¹CîÇ7Å:®ÁFX<ÑÍõ.ð»v WÃñ{ÉÏz·@'Á`Zãu&/ÃOÑ¿°òW˜Èåçïx8A)2«oµ’ƒp…ÌŸ8³í±Ò0ø²ªlŽ,Ú¦“B’¯4=©4å¶]®›zo´oÛª6Ô0¶»^
+¹$¥ JJŒ¬Ÿ¤´»½JœG¶L‚:¥^à8ñã?ëAõþÐjÈ‹ ʬt`¬î쥄ùÔ³VúÀÕØ¡*ð”X=¸µføaÉhìX2]Pí›`ÿ¶Î{göœÝ
+„»¼¡šV@Ò0°Å3€*œ@¹Eq ¿gãÉF¿ã$L*cVKua…ƒ•ÐL•›rî÷Ã*–‰YïÚátp¿ã¾çinÜôn
+5Æ;qÏn×=ô¶¨cÈMYÓ»v X0Ä`î¡ntÔÙ]ÉgLÛeÿÍßfÉe./ª„4Š¾¶ŒíÍ‹È&2‚ŒaFry{êA1ÁÓªÃsW$Ùä³}ÒE‚G~=£C·
+_\^»xƒ zÔÐ5_)|ã7?ñííR²×7ÜÒúzæßßá¶üd¬[ CØê®æÿßôŠ;}»Ú³Ä™" Üþ»û¬¿Ÿ·8·qͅȸ £q FBù–'<µ£±ÇQ
+h™*IwG«n”™³ãòþÇ4€œAÃÉ>ºkwSxÌE¿M|ùŽemÏ6K­NîÝrPUèôRësÇÅ2:ª(€)œ”W Ù©üâÆËßÆzNÕº×ÉË{Î
+Ýö ~*ç¥Èe>¹ Îñüçó…yr~†Ž‡sçDºKö5¿ÂÂ=_^\;cÁþ~’ÎÁìú"µA‹‡+G2„ ¥‘2†(¢|+¶Î}ÿúz~w¯pÍ‘ªªŽ€zÔß”oCìß^çß±níÝ*,Ë|Àï‚„“Lžddo©Z.§`“NëìµÔ¼°ÞfG•aÈé¹%*Ö¹ß8¨-H—J>Õª%–Áÿ§,¬knáþKeìJX½øzƒ‘”*Ëz$ÉÙ>èò¼ƒ¿æBvRÓ UXåÂ8çc¤•\^h^TfaLÔ{’mUaTõ$ü×$'ñ¡Ðž>ÔžV,IîA«Pø_òlD}P@H¥ø}ïÌ{h‘'kVC–G$eBÛ?¦$fòŒ­«'Qí¢yßE4FHÚ YË‘j ú“ƒjŽaÆ[=ó¸‡v«ù6;òt)ÅZú¼^Ùy\«`»ïî9é.àI„Pd˜íaÆ­EU#(™³¶\<¸l;ºÞ{êk ˆ÷ÝSDzúFBqÖ=>¶Û–oĹ¯—3ÔÝ|½<*í|jËÂUoš§mWŒ´Dòˆ¶{C×S "î2kþwôÆ,e˜z=›‡¹grÄx~e¡º!˼àäÍ{~Ó.wú-ë9x¢i|þDr  ± pØ „˜å4bÈH*_¢¦ŠÀ+®¢¼êɈøÌ_úœŸŸÅãKýÚ}ëU¤^æž__Étøt _èÔp|<†ôži:
+‰À ÊKQȨ)I*ÊLQ
+endstream endobj 1416 0 obj <</Contents 1417 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1538 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1417 0 obj <</Filter/FlateDecode/Length 748>>stream
+H‰œ”YSÛ0Ç¿Ê>J3Xè´­GŽ4M§„#nû
+Å‹£xt·¥29â°hà ÜÀnÕ§!mëI;ëÂ<>EL’+F«ãiŠ[M0„4Vð†ž>§%ðJÙ&VfFhZ7ôä×ê#r°VååÙý‘–@Ÿ½ŸÑ‰lU¤úúƪø׊¸â…@á…@ÚŸÉ^,µ2½ò‡ÿ”4žò:ös±ÙD)â[š6M.~kr7=vCYŠ£#j3fï¹èÙP2ˆ%½Ìoo@'°¸¾ë¾†Üf»¶©iuÙ
+endstream endobj 1418 0 obj <</Contents 1419 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1419 0 obj <</Filter/FlateDecode/Length 4858>>stream
+H‰¤WioÛHý+ý‘VöÁf3X, $‚¡Eâ8±2³ƒd°`$ZV Ã‘äÉæßï«ê桃²3ÃÕÅ®óÕõr"RþÛÎÅ/W·©˜ïÄ/ùßTH1¹E’¦™â
+‘ÙĦ©y!­R+&+‰xò•oH#Å "M…Ê« 1pY⤓™ˆF“Û1_MÄ7¡ “€yî Åàºr‰´B¦`.¶•øM¬ÅËIWâ­ ñÔb¾ªèYUêuüäåNn!"–*Ê„‘ô­Å¯þ ‰ed’T|Žbi#d”Ò¹¤§,þcòoRø=TΔJ¬kTÖµ%EÈ·´‹Á!žÖå/UR<韔”šÏqG–*ÒDvÜŸýAžÇ± #Ó®M€M+%/žä¬ r~ä.Ûë«ØE77fXo8~ZüIßÅqgÑŽ›µˆ¥Žà\SG?@æ÷–UI§»J0HTþ §òz²vŠôdß8RSº$•ÐŒô”®UTãÜÔŠ×k²ÑÿĈ[¬ï 56ÛxPD«r¿ø³ú¿µØ,#åYžäJ
+ãLâ„LŒ!çÝ©Ô'^æ‰rµøÃëá˜?’
+‹}VËE<È£u÷¸ÈKfëdÖ˜§É¼T ÅmòšÌH¤€æÚÚèÃã’ùÄp›¸ÛlÅ—ÇŸÌp² ‡õ\x¹+˜Ž8ìÊyWÚµ1÷ÎÌ
+­H“Ê«@âH
+‡!àSm¥MÉ€ÒÍa+ê°)zm`T"qÆ ’× BÖ®J¶yMŸHàbæ ¢)“öüÚö8mP•PèSÏ
+yõBŒ¯Ç1G_EãáFÖÇ‘x;º½¥â8¼ÕqT)ÇQ‡8j¸-÷å[”¬k€¢n£qc^ïøò+r×À„0ä¢w×í»ï?Žn=I¬€=溣dØÖ% J<¹©]¦J¨fÂY.±¨"„qŠ‰À!> |Š¯Œ~š~‡4~\[”®µÔÂ`+´¡ÿ’œ1ašr“vÍ'!kbøàDß°_¦ôV¹#pÿÃv3å„Ec¬ø¬ä[3/ó{ÌùÇ -
+Žö?<‘oí¼k
+~ zÊ×Ô˜"„òY(E£@0žèÅ9¿Ä6-!kî³s¼ ;–]Ö剄ÑIâk¡²µ°žß>…}=LH«P‰P’ºˆ~^×$ä<´kd=‰m®vQ•Q®%Mð ¡°ƒ¢vê‘<Ú¢r%ŠzR[*õŠ&!ÍÙàºËàGË?4ÕKºp‹‹Ë€Sæ0b‡ˆãêluöu¶E­Q§<꨹̈x}¶ÿ.¸,½a]¨qž¿¿Ê5Tì•P×{c`Ù6°òÎjã ])Ï£„è
+ÄÁõá®á¨˜ã'_…®Iì³€–_™/ÔR'ÆÙƒrzÃU“@v5¾¾z^í ÅÛ¿<¢¢HÿïBƒ…¾ãë×ã¾z(¡S5[9˜=îé[¼ûuÄw?¯N}f¶¯Ûh([û.Õ>)¼¡Ýx¬x”‰Y¢Å‡¥:VO=Ý!æÜÌsÀNžÙbË-• ŸùýªòÊOïqV>ì«-²{M‰¤¬“Ô”bc¨n¾ÀIÌgÏòŸÚÕš¸ý$.~¾
+*“&ŒÍ–ZºfØ d;‚rAKE3ÖøËÍ-øexG…Ü¿3tpî7‘ Nh›a “_zVCø÷7±®=œv¬ÌÓ¸ÀS¦¼•ž™hsX\›8ýr…R±Ý<>ˆë›cÿHL­€h­Â“4Óî\ÏåHpÄp-ÇÉĵ¦š” ÂTez¤1¯3o¶¼ßUëé…JIŠþß´Ðs¹d¡Êä¨Õõ™Á<•–“ö¡\Ï«®Ä¼ Tü»–1—K–é4OòÖ2­žÓfBô•à@¤gx§¼o)dºvÑC%Ú0>ZšD3ï,O¬ æ”ë[4hú^šû5Ì„ö·­(eïøÓ?¯§MÿÔl‘Ll¡ø’T+¼£à&*0-Âó:=…pîɇú7eêÀ7·Õª\ï1=*ôEÇè3<MR¨#Ÿ|ŠfÕnJ9³xðŒi0ÝòdЭºI+Ÿxu"Þ³91éÕ¶Ó(è¤5JöO–¥C™ÌàªMžuQmeïÏÇ˳91ÓFþÝb¾®fÃuÎ_`™†ëÄ_ª¬,åâ“[Ôa ƨ=üÁ}úhr ®]²2Ü.^Öý:„0H[°ÏS•ÖI?±ÈÉ×=Tœì!)ï½h,Þjmêyêé<£‹f Q§u¬IUŒž®‰Ó[^û°`˜Ð’öƒfÞºœaê–®¨gÇ·~‰$BŽŽÎ=NO€ŠÔt\buV³ú7B:ßÒ¶‚aJ‹y¶úZMIÈž49† ÜÀsÝ "<YiäPðR“mÐ{È!ê}Ôö2ǽ‡V¾"ßC®CßC>}ÊÉ.\”ÛþØK*NMÚ‹·˜´¼›Uš(§ŸŒ¨nöt½BR1ób»å4oP£ó5*5§Š¶Å)†Ð}ܼØÆvš ±Gj͵ÌQB÷Clû¨!¶=dŽm­Žm9Ķ‡\Ƕ‡üMøÖœ"–4g?5™Ÿ,šˆ§<aäÜQ^6å@çyXô.†p†Pq©Q<Ž 6Ô“…t
+õ¥ÑŸš¹_iÕϼè£Y™®‰õÖÓ郇Z“tɃ•Å†›.JH‡#v€.–žÌÑ^†mÇØè÷­¯„`EÙ`´ñ›ceê+úç)íNûÎÐQd¼=ÏØ?{&ýf×I Ðhûs$¨ÐWÿzÈ!Gú¨!GzÈœ#=´:GúÈ!GzÈuŽô¿6­ƒ~h‡ K‰êõä<¤{anÉûªÐIV_ÿu¦¯Ü‡kaqua&ÇbN°‰£ù ØN]~ºVbì2i`gš’Ž‘?ùç*.¢ÿó^n½mAþ+DŸÈÂ"¸Þú pä8Ûm>é‹¢(‰ ÃjTµMþ}g†³$EòX¶ô¡¥ÃÝg¾9³$\㯋¹ :yÕ)f5]Þ^—CYÏSk©WÓC~:RnšÓÂÏͺôTõŸ&>>OØ×ÑCÎüÓÝv·n1OCiA9ëØÕÿ̈Ålsämë?’¶¡Ú°dfiÊ6”¶‘¬l#™pËä­*Vˆíü!^<GÉ. Õv´œÏÏz\W…¼†tŒëƒÝeépwT©¹´Ôgý¥ƒ ï¤6¤°!ÜdŠøÙ4âd™+?„›.¯Òû†n—å#º]Wñ, ˄h»ß4€ÙÖY3¤˜5Ü P#YaFªÂ dhf$+Ì@0ylT§H-›®oKæ%:ÑyŠ,ãPZ
+Qñ
+1Ä@þåýlCv½mq¤t0Ã+S© ã w°²p\+%IGÕ°Q×l˜È+Q*]¯h¾‹/Ê2]T®cfÅ•–ÚjA]•ð ¶j¹ÙºÜTñŽe`ÈŒÝÈÿ›¿WûaqË|š[ÈEˆ(nHn¸€jÃ’™ ¤)Pn¸@²rä/œ£‚¾ªÕjªFÞñiMU¶âtWyçEç¯[R¨ƒólËͳ Ìò&ÃcF%°_ÊÄí4ºVåh·¶"òv¾uxÑa~=Ý~o¨o”£Ñt0bØÔÒ™ÿóˆ1,™6uU>Y,MíÄu¡KQZú§sÓeqx)€¬—©z)€,—háR Y/Ã¥
+ú£¼)gÍãa6Ä•o +©HUR,¤-Šd%ÈT ?Þ›šÜ¥¶xæ=ojä¨ÜˆõŠ7å †g "Åä;Ôƒ]®FtN€Ù!Ü È¸i €ƒ>S«ìà¬ÊÂPïÃPjP×D²B‰T…È%ДHV( òDže– gꪡÙúKo;—ø<ºSY¶•ëWMz÷¹
+1ö¹Ïãé HÑʤø»çjiã(G¶>¨“¢áûÝ[8½ÖPg·¾UÉ÷º¢·XÓ;½Ö:î¹ýµ¶ÿ›CòÁbR»µ¾Nmo©€1½Ž$ù°™^ìÉàv"åÖö#˜kIí…™›~¤q Ej·VqtÁàÔE^4üñ‰-‚T@Ì‚Ò%­€ËíA&“zò¾3›òƒLæåÕ[ª.^Dæ'B”uô±ùò3ëèåâ/C£³“èU2+âöCõš|úùðañÇ-—¡}ôY† ÿ³Ž–¼’ÿÛ$³:þD?G†Ÿ–®v›ýfµ¼ÝìYûFߧ<D÷=½¤­¶ü ?¹þò·î·¿m¶µô@6q·yèCó»¢}sH;k‚erM’e.óF^6Ñzv}™šdæi-í˜ñöYü'±Ž®¿ü¶¸”ƒNi÷EtuFÁ¤ifËúG:*ú¡û¼ãwà?6wTŒ—;Ròf»æ¡èûÍëÄÇðÄ“h~¢Å©,zyÉ‘óÜ lübñ+ý†& W|¿,•ÿHß'6–»ˆÿYʉü”ü¢“ðìnÝ´Ü/ßó·½XYÓ‚Uq¬²6NÏ)Nš7Ù÷ßÄrþ‰ NïÌáŸpQÉéÓ\ðó;y3þE9äŸ*'QÈ|Y¤«9Z”n{ Žçè4)›ôl?r÷Œ–’4‰ÒËE´}ÃK×+NÀ¾ä¸{}_· áíôÂ?ï¶{ú9Ûß¡í-ýùr1ã Nùâ“à–‡ ¿¼|³Þ¥mþO€
+endstream endobj 1420 0 obj <</Contents 1421 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1547 0 R/T1_3 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1421 0 obj <</Filter/FlateDecode/Length 4955>>stream
+H‰´WÛn¹ý>v™^²x”³Z!Ž7p,!»À:dyìµ!Y^É—ÍßçÉîéé!Gw9]dÝ«NÕ³!Ó¿«÷⇣c)Þ_‹NÔ¥Pâ䈃”–Ò…(¬œ”Zø¨MÒ‰“ щþäcz¡ò ‰L:d§£X;¥ÅÉ[Ñžÿ==8<Í
+ƒrBI0Wkñ‹ø$žÌµaÞd˜÷jó}[Å̲èH2ëø[–{r ½¢Î
+£ø-þ? ½êÌ Åë®W®£~¥:ÉߟlÿŸ“ç¬ð¿ ²%\˜TÖ{µeE·˜^/´ëVÅ!™¿óW4Ä=¢}E­’æu?“EQjæ~{A™ÇRQjnÒf#ÅÇÛÙn‚ìw‚<ÏÃMŒõQº—/9Ì°Þ¤øiñÿ_s¯zÛ]óáÃå'Ñ+ÝÁ¹fŒ¾¯@N÷Îקüõz-R’Ð&üEOZz$벞ÑY—õäÐMª:‚Ù£ª?õ®»ìWÔ]‰/û{¯d·g—WWëëÞwŸ/?ñ—·@K§÷üG@9êze»ã~åºö:©®Ä9î‚*»ÿõD™óW~ÂÌÿ*˜åzŸó9‘Þœm^¥éÖL³†ƒ‘ìg»õÆn¥&»ùøÉk£I†§óÆrrC£å )QSwø'kpñù|-‘S|õÝ«5›v¶þðmýVþzðóË}ìÅχÇÇG¸¸ÑgJ '…Aï ƒ´³0\#×,ðk¿ÒÝE
+Ìï¾BèÕ—ßñ—_e·\çêyû¥_…Ž/œ~êWkV¹\;»Î¥º,Ç%w+D3ßoNùc~‚ÇNd‘ÙÄd—Ÿì"¶‹ôà—šéo…Ý›Ë$X|9}ÃjŸŸ^‰w=¾gMqEgU èVšeŠÓ3dÛÛ,ô}|¹±hߧËï“'ÖâÍúüß{rÈ 6PŒ•¡Ò?
+ŸE*餈jñ a ngÎû!¤–Àñ{±þ¶>ï)t¨Ôâ1ã¦"#³’b¥ ëG<yšP>•ˆë>à ӡ|ðe*á[ú’Ï\è—uU
+Õÿ°èÀ¯ç‘- ‘ Œ°ÝFjš(ÛT…ôkRKȹ Â®¤Â½0˜€{& RÅ„ 6Öóðw^Nl~` ZeÈw´Ûýe ~ÉéôŽ-Æ&Y%­ás“•ËZkÏçÕhf¼¡bÌ™SÛ×zky„h¾µ‘' ¦Æä-Ì53_ŽTŒiR­æ ¥I i%]Pgq(÷Ò`4‹CzÀaH‡ìù»~ë˜Üž¼¾}.˜ûàFÖ,'{d猺ð°Ê:Ößj‡ÏÍ·È{K­·S©’0ÈZ.0ܤG<ï•qošõŒŠ)OB¾ëÕ‰ªM*"â+Ñ©h`»™0¯س©¾yÝ”€åÓuƒâÛùU«2É»&&­—Þ¥’¡#u›¢Ú ™ÖÖg4Óæl¹qMñÚÉýBµ)æ ªCÄkuS¨÷ÖM¾  {× Ü>Wê ¹h½J}r'»#ÄϨ ÿëÔ‹oÑ5ßÍL“ó 3:8;œ8×͈m/
+¶ìRÜ'ìÙòðH°§N±§J°§;žôëÐs·º%ôÄäÞÂRà`Zø@Ê¥jo¼EŒšÐB´ÒHëêlat&³Kšð¦BÁ¦úéÒ.ÒÀO‡‡# f³m<XøLæú®¢)Û|(cZT½ o[l'˜QQ'4º gøgÅ„3[¨#ÎT©ÎÔ©#Î4BÅ÷|gžd>SÑç«ÚI‹R@ë0Bj_‹â‹CcÈ—zMc&jcFjc&ê 3Þ{ÆܦbT`Ó8AŠ×’.«Ø &) Æ*ÚážÃŒ#-槽ÛÓí¶;n›N[±²ØË‚m-7¨ÇyÅ
+ws3IÏM3J3ŽZ¾—âZ¨ú1«[ÊN
+fkŸÐÖ0[û‚Ú r“n3°¹æÓhÒ0Z¢µôd¡YÞ:Õ–a¹Jµ² Ú­(Œ÷ÀåÞUŸoŸ+UBÏ]jŽ;.¤¡Mô.µß‰º\†‡Æ[Œ¢®EÜ ¬§0ímˆ±©|ª5¢B„¨J ‰ªÖü
+ѸZÛœ…
+ZºMÙÝ¿`n‹/6&ÏÂ+¶æY3ª­EEí§¨lS1¦¹6c W0S¨–ž©>Å»AÅŠ(+!©œ¨ûÂPî¡}É'Å™ !ÄTQØ›ßuÛE.dëoy¶l­O¾¯3ÞÔ‹É;mÙ Û crå&…v>Ruµ*ÂQk~#U×ç,XÐê…÷ô cù] à­QµFnš6ü»=sþɀ±+L¡Zº±m{kD'ËÄ\%Ú2l·üŸ¯¡Г¢ Л!XPƒ`ç|OÔ…ßåšÄ‚ Æp¹k2Þ¿ã1gï°ãq†›qÇ{¾wÇ»Ýj°¼EÍ;¨äQصvÐÉPÀ†!CaSDn² ­ÔãÊPƒ÷,ƒÐ!lËŒýn6
+Å!áfÃSÚèæ£Gp3—dð|ˆzœ¸‘žD= Œ.gų'ˆ&îÂ.gBx‚LÓœiVe7{XÃŽüÌižÂÏÆÅAÆ…»0qZo·}p÷R@Tîn>HÍYÎ;bÆ­ßK'_¨ú1«[z<RpΣE7í×d0裼ƒ(žÚ4:©¹ž8dÜÏ®ÿÝø¯4êFÙS{D`' Ѓ` /H{«Âí @ƒcP>ÛWT;¿±ˆx½_|ð
+?̪Á-øÕ ò "“û²> ¢ V½7ˆ| ¢cV‚B‚”–UNºluèàãXÑ0ÙkÉ›eßOÕ…ê7šüÍÝ«»Ãû[±öÓ£¥SŒÅ8ľéöQÿ/c‡Nh7µ½Î„&ú(1ì­Þ”UÔÎRÞs.µh)­¦¼•’€‡t‰I(cÍe¼-5“çá¾;É>™Q­7(ïº#:ؘñ¸²šñÂ"=+[ùôz.Ó²&NúX‹ÚûM„T
+>uÄ0ž
+!£Ò¿õœHÜÃõó)Êa1ËŒš×-
+v¬TfÖhóäºâlQ|°Í:‰eŽ£îFß1ÚéÏJ†`´ôY¤D¤éèª6†%‡½°Í=Veô3“}tT|2+ç–)Kãn´¬äUÅ:”üït–N‹¨•âºt8¤}d¯aÍ)Q^*°yyIc\3Æ';¡#”„¸IãÌ1)As@ ñЩÆ%Ëо½`®†íjú Š¶¨{t0ë0gÖë-ê²*£†0q­9×6°‚)ýÑð¯ôYžb0Ì•Ž&i:lʵŽq«\i9‚Œ#q"jº*­ÞÓ†@«yÑš9U:£:‰‰Ö]ô§Ô%ŒZ“™S—Ba©o
+5JšðšPc´.Z3§.„XêÒì.ŠÇŒ
+K]Ch”öܚػÖ/fÁÁ‹fΨ m+6iݵ„§«B­;‰“åEO¢h!4š d“¬W…æ“8Y\Ž>‰¢S¡X1¹Ö»8 !3êò®; •¥\Ïq`M_CƒkÞKzN]ÊÌñ4ŽNîzØzŒlÇÀ™Åýƒ5FCXÅ
+J,̉•#\­(ñ«ÁÙþjÐ}÷ëõ ]ÿ8hÎwXÝZõÝÐ:®ß¾¬íž“ú‡›Á¸þá ×Ý ”ãB¼&í~Ð x…ç»#ò•
+&ã F— ¢5!ô¶_
+ Wù°Fúmò êYàำè€Î?´šàð:¥d:3 v@ÿÛ"/´»ÈÞ¡¦è€©
+Ç*„J]#É/'‡Ep®–·-9¬†ô^¤D®õ l[ä@ìhtUM­«æñ(È[#(ÀŽ¬£jĦÈN)¨XiϪºsH:<¡T~~ Lúù°
+endstream endobj 1422 0 obj <</Contents 1423 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1423 0 obj <</Filter/FlateDecode/Length 6449>>stream
+H‰´WÛŽ¹ ý=vèZ‰¤nëKœ8û°Ù$Ù 0œ±aclïÚ†“ü}¥ªê›TÝ3íÆ
+¿çEÇv/JŸ|à!Ù­Oi9ø}óç¥Rª-óÜ1/IÐÚg‡¤o^2ëŒèÜ^&ó¿7Xïêköh_}~ýaëZµüË d úhPýæ¥1PèPµD)TÁÀ!ÌÛh‹ßOþ°m`ޙ϶92ÄPj”‘»ÕÓºíªˆ*ò]=vPDƒ|v¹ƒ=K¸ØA—pΑƒ?^î [R³ ˜sQh×ÁTA¥8x Êq`µ€*`çz!¸Äà0dœ"“ì&hpø  xt")F v™b¤­‰|~y"g/¬4 9®´'KŠ3Û曇És
+êtÃ×÷Õ_}¯rxI¨¿{ss"AúÕÆ°´T]§>Õ!‘òrÍâš'î…Å¥s¶ðõ½âúËRî”D‹ ×/ËÝ|GqÎï|@<ØÈ‹T!oÆ;£BÉxÄ•ƒƒ`2é›òÙ$ 8úRÖÔ•b¦)9"ÅW\…[Þƒéá”ñÒ4:I èýø‚”ð¶mªßà¾G¿D#cç§7ˆ‘Paêõ…%Ý10B•íÎRÍÕVŠ@Jêê‚9êê
+V%éê‚VçªJ´ ؉å$½L]i@¥R_ÿGÒ<Œßjµ“‡¢ i(5ò ýÞc {‰úþó˜€ÝøKù£¥S+†^?íI)W'é~„IÚ®®K@OwÛ96|FÑítN8lK¡Äjy\ü“”Kÿu¤¥ïûRýKO·Ý÷ø¾ÑYwø«Õ7º]–¸H#ôn,ÐIz6.ô¿£‹¤jAttYêxhër®C¦fë0’£#95â<Iµ¦ºÒ(HÆRÆï’.s{m3f¡<|‡¶aÆŠ;®ŒÉ£GZ_êªm鈳ô ³å¹£{’Ôãì$º±¡Ö§•iõÓˆ†œQGq|&i|fi|&é)ðÑÝÀ…ï
+÷r!W'a\+Ësl1c\è<ëH1”w…{#‰1‰]ÿ`…±¾.Æ•²;ä¨ÁX'©p‹íÎÒÔbÊ“Ôs‹eï¤aúÜàš› 'YØ÷¸š$3bÏdÐÌ»OܪÅ"¶½R\õâK,—z¥â^Pj~•ÂškuÌ(­kGG*ôc±o4Sç=¾mΤaŒÑUÓÀj®Ý•Ä>”¤vt‘TêªÆÊ«;ª©F¥ÒèšQêíÈvÛR?å¦4Ø‘c÷’0}ç/WÜ\8†B†ÉÐ
+¡-D¶# ~G´^(÷ÅÌÐÉÜÖÝöŒp¥ÑT"¹Ð3øP«$ºqí1ÛI
+k|ÌŠg©G`S
+ð¢¥ÝE¿‹ÛλúîÂ@ä²Pñú8¾}Q
+™¤ U©qG{Eꪖµ¢2‹FËLÒX2Þ‘°°FËLRtìbˌߡíÓU¦Øá6Γ"ù,<h‹P]l«ŽÑÑÅ0J=ÕmÏ°/œl\çž ‡-ÃèÝ‚‰Çñ."nN/áú­±WDÜš—;)‚wiÛl×Çp?éC·È¦-ÔÇx_ê@x'PÔÉFƒ¿NRtb‹øNÒÜdÌ£´4ÂRÆïÀ+íUÁ(§f\1+¼gé~
+KéêbÜJWµ0ážê©ÕN‹ÂZ¬R¾´ù¸Ú½\ZíÎ[<Å`ÍÓa1?f·Õeïß¾9›Ê~ë ŒI~„µS²¨Dl㙊©¶…SKÈ.™ÁuÆ€¿¸<à:‰=ñ¥þi3»p ÿˆ‡Ì颂8e5G)_³
+u½¿8ÊVÀ®eñ©ü¼f#
+/<ZTV¸Ï¢.¸X5ê«F}‘Ph®}6G~_%AîS:i×ÍPBÎÔ
+p HvU É}iöË5ˆpÃNS©@òÚ€~M§‘ûà»q¢N$”ìǪ\eC¸O *ïm† «Ìh§¯qQ&°›ì1úŠ‰vo”K)
+¿6Þ$JÇ/òa-¿•|ƳÉâ¨ÆQGÇÏü«’ßý0@ày €…a bhu#›m£3ÕÍþLQì9ÿ}l½íËø°±Þ~†)Ÿ€€!Ó°@ùøƒ­â%m”чcbM¼çç~^ñë11|½ÚlÄ×”—l/$6#Û÷Õ…Ð#_ãfç4W
+%:Ò]Ÿ“2®"aêcm—°yAIXK‹ ‘°P¹de?ìäoŸ,Êø ¬sDi(”:·ò%‚96 \‰B8oËæ9p;F¿à¬ìjž<Ö!º<8 ƒZø váWÇoEx½>r2ðÜÉóaÈèÐÙ|)RªL½7­Ñm8Þ´á°¥êRe¡= ‹ˆG^òB¼ü”0-(D«*-
+
+f®h|~¥Ríãg„W7ÏðþiÙüí¤[m…½ÃŸaKà 3¢ˆï÷“¡êÓ3“ôDYšSãçVèZã1!aGÊs¸ü;4(xÏ°yl¸ Œ‡¬c_€ ¯‡yT È‹šZ¥**r,zZÞsÀÛnsÎJf:—R€×¯Ñå‰Â€ÜîpÇaÔ`WÄÓó+n†FW—a¢y€lì¸Jc9ûóT–Aw,ŸŠ¶<בËjäe“ªœSÀ0n€æVA}Ýe--B -°€É¼,Æ×ïÐ ºRÞÝðÕÿ6øÂsä7¹¥B(_±(à4—E˜ÚŽ¾ †ìj
+8ƒ{¾WQ}ˆ–Â|‹Qø*?»F=Ûhý5ï1Ài T&Zîôïà&Ïü|8ölWU`ñ”¡*°ý/oó–‡èoA%¹öœÏù ±¾@ëþµ=ÈÊoÉ¢ˆ£¿ï$j_9}åp¯ä ï^¦Tå¥S'Èü™·SrÖAãû.²_xûÇ B`}Hz§*l6Ñ}ˆ'lÚñ­¬„*“‰ˆns÷Qê\?wäÛ®‚³Q¨2ôÔ9¨ÊtWz%%cÝÌ{Hµ}Øí¡TŽõnÝlª§jK@DWx žzµÜÔÇoÑÛzù¸ÝNÕÕ”Qªè÷ ‘…^—£«wP™pÃ\l¼dX<‚Ù ôÇR£ðK§Ê†³¦-²IŽbÐð¬m¥ü2ÒZ¼S#6'Úû™ŠR]E¡ÏYÝŒ6ÏŒ¤îŒÙ±¼7›lDu&ÁiQ¿äXm±¿ÌìaF6?…¡¢Gû@60ÑôPÃMðÐà÷À°Ü
+ ›…}V©<œÐ¨ iP É£6
+þ¶gþ†ãŠbÞߊ‹Ê|IÌ‘Ï[Ï'J¢˜î§3¬§ß#—«çêXK†&´p&³a œñͼ$…¦v`ÉyÞ6¶/DÙ4€‘p•SJê
+l3LÙÇ*úp;¡Ÿ¸káÛêø²°«å?,ϼ/Ï2κv74Ír›ÁŠu.×üu.ÕeïR¶,°YÞfÑâÑ 1wã•íñs´ôØÕË~/GZßï(žRòâԚןÅiÉ7 vFæÄÓˆÌd£Š²ù
+Ö…§ á;ê.+N*x–*xŽÜTðy¢cöC-›j:ÏS¥Û:¾KdÉ*ãçŠ~»Ùïw{6IãÊx»;ªÚuí!”è H/Ûu¨ëñ¯—¼ï¶Yjv»u(f9Dz("l§™ÔPDZ¿ºÔéy·;‹ù1ïö9rãörëöòµXB[ÇöÙ` ”Ÿ sõÇÚ;…’óÜ#§ŠZV€"-]Wǵœ?p9F¡Ð¥;¶=ò¬|»Hº´,L`5v½3ø›w½5€¾³SgŽ|î¼° N{ ÝÀ·õ'™Ø¢#ǺÌõ¿ tBÎzß önª³¸KúYÇ¡¾UJ0fóqSauÁ\£Ó\ÏB¢Yr“i3äÖY3ä«3M3t¯Í´~|¨"ý ë;ÕJÆêvݧÝw¤\%Ë锃´Vi©çSn†|u›TÖtö™AöÝÌgßq8׋†œíâ<¾ “³ë›½ß5•SЧËvÙîLq}˜\"§: ír¤ÏžíØd] 5åsw‚j† (â³³
+ÑJúá\t”ê§ÔD…Ì‘›
+™!·±!OTˆ¾ bu¦9üšÚø©ƒ“íW7ë×ÌÞýpĺ>hù ˆm¡¡!€ýƒðjéQÂÅÇDjPb†ÞÑJ=´—÷’õÂn$`«$ìŠßï›qì€B{ ÄóðdÞ3·ùÿ
+6zQRÙ9¬[Ó“‰7Æ#f¢]â®oX5h²ºu$¢±m²yO¾ZƒêágÏ s¹å}YÛB×ÕZ£jW9Œe(#R@Æ…ÖÇb„$_Ôx)ì¢ ÕÏ_¿éŠlgl^¬²ï:“KøIïF̱lû;VCÿÈ „å9ÎÀ‹{]H³$Øø†þ„l0/üÓŒ-ÏWÊSÁ˜æ 
+«{=Ù7ì]o²vQ¯\Ú7Ö”²EëØÈO{V‡ å{ž.<¦…c™Tn´™Fìµå;у½ÅþrÆ žÉ 7°Ë•k
+ðOºB5P†o4•ñ‘…0i! ¬pø‰Óš’Þ“,‰–+%åøÂÓf©CèKèKÙÌóšyO“Œ=
+åcLÜZ…üì¹ì@R„ý ðQf˜ oå¹û®¢}kÚ·Œ¶å:'†QUXgÚd=jqT&H¢å‹QÅ@JÅ4}ÏÊEè[ô‡ºÊËý)5Áre4Ï™F$!ç sªß>¼¤ÜĈ;€ÝL”bûœ“p!‰;á_
+endstream endobj 1424 0 obj <</Contents 1425 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1425 0 obj <</Filter/FlateDecode/Length 5566>>stream
+H‰´W]“[· ý+|”:£‚
+þ\cZbÌG1^§áb~³›ï¾Ó(ãòRÂÇæ‹þ}ØîÜæÓÖo>¯CI⇸8–íY¯òìÑ‘Wu»#·þõëG³%Þ ’¢5Õ¬ùÎ<hr=>ü¤o??Ò¿nqp<ßÕów ­ìà3h…ó 9+1Êów+¾ÜÀƒÛæyý?=槿=>˜­OyãÌt$•(Ñ ¸X0) qp†á½óNÝZêüãÉiÂÇÆ‚OŽiņTÒÒÉxõïÛ‡/ðíÈ<nÉo
+/ >’ˆ2kêHemzá¬T‰h®udKÝê¬Elg§Y‰ÏZ“uŸ¶uŸ–uŸNæïŽÄç ,êûÏÇ,r$•'MpZQ»‚¯ò¤- 9Vž4×±/z³ø  ,éqN|ô;YiÏž¤ÆYzšÆIyÆEx:éÀãšÊ3¶
+õé¥:6J~_ ¥Ò궂
+U°sN,/s@‡8–qûaö¹Ì­Q™°Ò•‰K³°àCÜ™[-o1¥Ôê•«‰[Mv1!ÝùRÈÔ=˜| ¥Ã¸yÆ5µŽ†sHeþêXñzmÜ«IœlQÆÎRÕ±þZÔ«\×6ZÖÙš[íîdEÁl´Ê³5·ÚìUÆïÐèÅ[Ž2 7ûkõêê9GwbÐäû3*4²6Wí6bá
+ÕFš
+–§¸R…úç[t)V=MZŒ­uîèX‘/rš7‰yϧͅ}£vU`b­èÚµõ
+Ó[ºp†}éÉÆùqæL8¤ ƒ»$­"TL
+¸U׫ûhÐg÷éÿ¤WÙnÜÈý•z$“`m\ü``)€2c'ðy±ó@u³%"­n§›²ã¿Ï9·¸‰jj σZÅZۋ/JL`€¹×ý >—’ŒlvYÏÀÌ 40,<†ÌŸaÀçÂÀq>íØ‘Áó÷°žE'»ÝÐY†·ß.aHíz¯"ÇËžè§è&N|tˆ]Füºhk=ÉÆV~ÙÆÚf‘jq5T÷ÀMüïÛ¿‡˜ÔU^fPV«¦%0Bæ=×Ùõ2SÜ앱,¿_jïFíáÈA{[æ+DQ dX›ý tckñctTS÷{ÙT¿w±³Ñ‰ÛOÜÞp·‹-?Zmø×V¯é^– Ù…î§æ×#^zåµ5+T‘ÐÅÒ¢Ÿ"us §ú(}.†Qt„ôNL–šÌ©Ûퟎž(a8³ º”)h“ýÝQþ⤊A®€‡H´#Ç6¨â² J`‚û®êׇé•z‡µ $[ntmð.ïêB¤•Ûß{y¬¯D€¶®÷r3Hy”õ™ƒ`ØyÔò5oé*Íј{Ý—¼\â
+íaUBc}¸…*¨ƒ€Ù a"ñ¬É£/ð²é×ðd¢õðï8xçêþYÆ(>et7{xºè)7æBVRd¦.Ÿ+¿ÖFÇÅdÁÒP!å€}ùCØ ñèØazE ²(p>ÑÔ1¥%ljØ\" L*4[–èà
+¡*F8!”ýJiA
+LR]r
+Þë<ËCáÀ„R2ºK]…<ÿ“™ÕÖ3{=ûqÔ ýƒÞ•hÙ·Òc®ÿ'™_?~áÕ=_6êÈõNÎ¥Œ×áß©Ù4r»ý*ÿš-ï©R„ô‡iùOÖvõœÏ5äÑhoŽ}¯ò¨üàP·²¿"´ª•|Ç;}xE/Ò¡HôÀO.äÍvø
+¢Ýˆª×"Ê…‚…š)ˉ ,˜ÔºÞŽ7»ôÙQ5KÚs 1jQæ€=ÕœNÇSë[ ÛØRÖ*â‹V®ŒŸ:K#ß¹Ï/-¾ŠHð(šènõ9ê{1ŒXŸdý¡Rª9îñ“ж5:.
+0Bà‰ß9’å)ïùa ¥‡ç— í¸}ž6Á•¿ðM
+¬ªïŽ_åÞEnò†È~ð»–\+"*À?u×
+p CE˜D]&ÑÃVõóà.<ÎCc<»v‡Þ> r;’r[
+Œ–6Ëu>ŠXS‚}ÛÙvÇS¬siªhÕ”­{2J§âY'ß[4ñÐñöoØÙT›6©,Æ}j ®²9Äèà_ õ‹ÁŽ­A©ë=D„]>wÿÚqïþ•ãÁý+Ç/ÝoòÅ|zÙÿº”´lïÿ›«±{–ÜÁæí6ù5Ö‚Lžûéæît| X
+m–z+ƒAÙ¹÷od«…UѨSõìLÀ™‘£¥Á-+ÿºÁ æÄ|=ßÖŽ{ƒ¯_9¾oåår4šZ›´kàGBÕ/M×v‚¬
+} )" 2¤ÉHÉ,цO«ÒR ÓS}·éÆ—ÈÏÕZ³v|!V§P]ïíÆUüù«Tl‘–"šYaLjõUŠú‹Š¾?~ ³I ß)©Óòñ·d±Ÿ•¥èÐeœá¤YßÑ}R\BÙ>cÍáx‡‚#ñ¾è&B«–NÍS®Ó Š)Âj)Ay¶,AÆèsëŽqù³*_™K§EN—Lo‡ŒYyÌãbzíž=í³iíi°wã±Í%“^ÀÐU±/Oûp²Ë°&VÇŒ&ADµÇ8²l!£ ÄÍðE!®ÆÔ¨U‚VÝw hÿÀß-<b¢kåÞöÂêaó!„
+Q ÷žíV9Ç¥ü…:&¨»GÄú†_OülFú½³„ªËsUJç/RW ÔÕ (dÑuœ ƒÏìÆP8ä*ÔðGÉFÇõPãJÕ©§ç=FÊLEú‰u)Ý/-Ë>›Sœ¸€À¾åíw(¤SF;¯ÚîÜ~cö xŠÏžþ¿
+endstream endobj 1426 0 obj <</Contents 1427 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1427 0 obj <</Filter/FlateDecode/Length 6134>>stream
+H‰¼W]¯·ý+|”
+ˆ!‡Ã¯Ç¸qݺyHs…æ¡.Š ½j\;‰S¤ýù=CR«•Dîê~¨0p½«Y’‡óqÎÌ«½2åßçÕoîŒúñWõÅÞþÃ(«öïUÖÆx*dåƒÆ8³ÕŽLPûj£¶ûe…­+ VˆéE^—Õ.y¬SûªÍëýÝŸÊ‚×{õ‹r™56 §0–SÒ6(k°¹ú|¯¾SŸÔ«ýìM,{ïÇüçbݲa$S1þ­ž»¿Ã[K¯ØÊÿNýµþ ·vÃÚ¨w›­ ÚîìÆÈïVžüöïû·ø/€ì‰tHd·ˆV€ž:°¬>C·Ù5‡Ôýý|K:¯zÄÅÎA¾sáwÛÙY”¶3÷û'T÷8?ˆ-Ïï„´9žó5AöÇ Ç‹ Ïóðc÷f›6ß|#aÆí¹ÄÏ©ßäÿ{‰ãç­ßü*ÿúé“ÚZ·sù}£¾…¹|÷pÿ½üúë½*IBÇð7œTqn´ÏÈtà´H#Ž¹
+f¥BŸ ŒT%pÒ?ùE®#lVŽA
+bMýl²JS>²ú,55¶RéPάðD`ñ]Ô„ÏRlÒîüQ¼ųí ÍS ÚÙ³G“ê7.\¾1ãÍLOïá"FSŠc³Ó .3¹…)È—#««mÅdÅh0·Â Ã¥\~-å¤Å(-¼x
+‘›ù±3—á``ÄÊ40¨Œ¥ ã,
+F…ÑBÓŒ}¡9»BS«Bsøì9Bž:}¾,²Kz@fIй•Òé‹ENrô`c‹ìãu¡±‰dÝ$4‡Îì\hdì <šƒµ/4“µ+4ͺ*4‚tÖÞÝ\il
+¥½êk‚Í5»’`QÚ«¾•L¹Þ`c2µ…ê/µ®2KWlšu 6“µ+7ëšÞLßÝXpÈ”‰aÀü$W-|W vGH× 7¶‰õи¦7²µ§s½ùÃâ°uÝ8(4šeç#iLšƒ‰s  äV`
+ìö î†>©2¸môM”u)_
+‰F)ˆ™¼JjÒçsáS×èçDšM]ªËÁèéõŒ’KÚ"0¥M‰¡4O×–+[1¸ŒwpKGœ]¨ýãd=!0Ñ —¦‚sh EBç*Ä°†KgMÖÜZÞ®ô:!:XskµGahß¡ç‹OnÉ®˜i¤±7¤¡<»è*ÄþÚ0Þ6´ö¥ßNLãK‰xiŠV
+ÆV9͹ìf•ÓøRì'k<Ö„µKã‹@å©ðn>¾8Š[:ÂŒN¤æ×Àëøb{ý€ѧáR7NNWLÆõ` ½ž·‘îvù` ½N{æþò™4{ù–ã‹'Êø‚IÄô¼gËø2YÏ<ï ıHÃhcÏe|é¯=– s_ âIgP¿\ØÕ$ö(h²R—¾¸Õ|ìRßÁJ=ڜŋ¹@-º›Ï/ŽËx(® =ÿº&©¡_†Ò‘5”v´1º´ñÒè+µHsqI<Íš¹Ä|dÅÚ¥U«tÞvi~™¾ËÚÞr~ÔùÅôÞ•ù¥oô±Î/¦«ÒU Fk9è¡ñX5®¶uŒœD&œ+õ‹®°ÃDÍGö8¬¹Ë~Å(ìðæ,T@ÉDz»}SÆe2é7{Æm—3GK}™eŸÔˆxv ½¶YEzÍïÁº}s³ZÛk¹ç½qû.Àu·lÊ ’õ±+µ˜^hn=uç
+±¿–Ç&ÌF<ÜvmÈ«ŒŽ™JòuÈ{»8ä]7†2œÍ®˜n1ê²CYlíÁç©-g8k_ö dAö8]à®±æh†.{^=á—Ðýæ]ŠÏ¥ç”4¥›
+çbÿDÍ}+©®dÜ©€å²ÕùûõDAã›zzbtAþÊ‚ágÁCáæÊ™~X8Ï£{Od%‚¶)\éͤÉ.;9!¤cƸ€ë‹cÍÕît:Æ•`A_2á/ÊJüE8øJ‚•áËð9˜¶†«¾?—
+ÙV*Ϋő1G™óIh¥8rƧP À4ñ¨§B$˜`<¡F‘’—ˆ8>À¾SŸÎð‹ ¡†¦¤…áœÚúRÜ"¼&ü¶á/'€=Сx txÊ e½œ`½vÔ<Dó’‘!Ö›ÿ±^5ÍGô¯à¤ æ3À\å¬[©ò&µVåâä@Qä.+©¢¨Ýøßû½
+¸][Ÿ¨ã+˜
+©Õ@ƒ¾ÎIa?5
+‡-0~¨p),ˇß^‹&g;Ô¸ü±Ð]X‘¸âsAÓ»âªpl†îLïd è)òAߎÑÌŽ³ä[&ò˜Ø^~>Å5;µº¿7àdúPm­'‡þš/_
+ZVdêüóèò‹¼ˆn{¬xìt{ý—Fò©öÒÍÙOÏn¾_¦!ýr&N%í³gWh4.4Iˆ5Ï6¦e»u ƒÐé­{Sƃ͓¬Â!L`Xz+sŠ#„ÑV`‡“iƒ!«ÑÔ€9¤ŽhÍxm‘ñ:[d¦Æv ¡0Çë:pl°4©'WñÀš-2Ò`ìƒ$x‰AU6g©\x­Ðmlue/Ë]{VFI=:0B=®G\‡fzÆ:™
+^^æ°Gˆe‹]Gè¤Ð0_Ësø£³y&/»~MPvC÷øR¡Õ(´¼òAö<Æ·`Ú\õVL™húU‡»|›ñÌØΡw«Š²ƒt6à÷ú¥€=s1h‹oÙr¿ßíƒ_٠פƒTÈkYÒ¿b;ù‘Ç°t8i± §<¡éÎ÷ÿåòÇl.ê>l8¥pZ¬ø‡ž-¢»ÛìÇ(
+Ÿñ姌§ðu'mû+[õv°%.•ä¾"¢Ö×^sþÀ­L Üfó‡Ýîû.ìžéUrÆf“=t¬?&®ø›Ô¯„5Öà}7ðõžD‚WÌŸûøË·2ÍçüËc9P0úŸñ WõqȈß&§ŒJ÷Å#\
+P%b AbKf_Jü‡²O7Üþí컽.ût"ûtÓì¤nŽÈÚdö¥Ä]ö¥ÄÑo ñDöé´ß\;«{Îü}ßpOV’$¨'½þþ/—[¼9¨j=Ùâ´xSO´øq{/ñ´ÂáV _ŠÝZsŬè:‘9‹
+†¥é‘'ˆkÿ }ÕD%!ŽQIˆcTâ«1Á6£
++x6ôa(”™0”‚­ b­ÔrÕY}€ØsDH…ÈÔÒRD-%Žõ‘Ç
+Óþ~ç—î"^Z'¶ÇvvWìž•3Þ^ö`3ŸrOªÃ´uÊTŒN¡^°_@âÃÄ?øUE‡ä…G(öH¦ejîIf”©Ú‚¤’%ˆÕÕ/àÍ Ü›Þ”
+w|pYšT:ò·Á—IçȵmPœu”Ûëk°J£:©j)iߥ°ñ˜Û¨á4¥Ö䀰ƒØ&·ÜË „òï!zçv";7 ~êLè ;tÅšRÜêë_@2Ö›šcv…¯]mû÷°Pˆ#zÝ#B¼ƒ%n0’§®eU5J%MaEKëtˆþÉ^œØÑP‡NØý.̧¶ó-À
+
+endstream endobj 1428 0 obj <</Contents 1429 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1429 0 obj <</Filter/FlateDecode/Length 6135>>stream
+H‰´W]“[· ý+|”:£¿ãÆuëæ!Íî$M§“I×™zÖNbwÒþü÷K)iW«x&{uqI€<8À«{cË¿O?›/ÞÜYóógóÅ=ýÓ2÷ïL¬õ\>ÈƇ!XëLÌ48¶ÁÜ0³½_VP]a±BM?öCpÙì’9sÿ/³y}÷—²àõ½ù͸,6 ^„Œ“Á&C{›Oæ{óѼº_£[ëÖ““ÿîX7#d;FXœÞßnÿÇÂi³_Ö N¹U{~Êz{èǬ=8h9>óáÜÑœSG»rJt¶ºãÏ¿oˆ·ä6Þé_g¾«/†-o
+¯é_ö'òybÑo8²òÃv勳]£ ôžî¨îqèH
+öË÷yc^ÿOƒùñïfëSÞˆ™\Rù‡Y™-ˆÈ„8°qˆ^|§a-Åñ¹GÉi‘wÁ1Ç4âˆGFúÃÊMaÏ£ñ}ýð;b{
+¼àACtš‘ÎA¹“ÅEKLé4ø'Ü[%@Ͻë¸G}$] I߽猔T-÷2¹ÿÍÐ`=Õ-
+¤C7•glêÓKul”ü¾@K¥Õm ÊÔÖq¥+.z¬t×’«%f’ž=´Fë"=më$=Më,=<ÌßIÏËvlŒ0¥+lmm„šòA
+0jM ÖLÖ0¶»M+ÈÔHÑd c“ÝKBýN;½|ËÑÅ¡:j7„)Ķ ´e°éXƒ_™öáEíuým½Óè;kΈ+}tJÉœÝûűíµ¶³•Ç2Ö²NcGÏÊcùì4Íú]\˜wóáÅA‘u<4¡‰oߤ¯WÖB•Þ¸·6ä!u—BaJuɃmPf´Blƒ2“k”©Vm¸é$e¦ï2ÎpK¡’“¶­ó¸*+ã-BjÚK«FôÖ
+¦·táŒó¥'çÇ™3á2Ü%i¡bˆ­êULÒ,{0iõr•"çKK6’íöÚârQÝŽt‹LbÚR}Èå cÐÏê TµJ³ZýëhÕÂßj|'khvÌ£•¨Õj¯Ò0}
+Wä†u•{¼ºª2ò’ùIU•½&ÁÙ ÔAë)9¾°p
+ L¡‘ÄUbhl™ѵ•ø¿7ÂOF|Ù žÕõÿg½ZzÜFŽð_á‘\XûÝôaÍz²˜
+÷`¢nª!¾O"°0–±†Ì°Ó”Ÿ&Örº¥Óð}'VôãDŒ$”Ô-ÁM6„û$Á(²á²[bwÅ\‚ý-.BV DZi=Óî…xÙw‹‡Tˆ.¨’‚1íÅ £°Å a0}‹=|™âé¦8ðoµþ”Þg+“²•ðé¿:ÝgB¦¯|°åߊñ¬Š4©ñ©M“æ ýUÙ¿þ0@àž sÁX‘` bh¡¶üÄfÝêLêßR\:HþûÔzÝ—‹‘ÑzåíSà@C¦Ÿ`°é9S
+?R¤k²ý‰“M¦Uz¢ãW:ÞÐi“)z½ÙlÄW•×l÷žJbbû©ºzäKk¼Àìœç
+
+ ¥ÄŸ$0G!+Vßë²}ÜšäW|+»š¾lê]ú&pf5óÿ3Ø…_™¾cáõšù<ñ—ç‘ŸÏCFçÎæk‘en­ŠFÇp¼áÐ¥èRe%-z‰IVˆ‡+éBºþœQZ9¬ªûSà ÅÛô5-r¡Dçù CrÿnjÌ1À"_|Î}íÑèÄPÃÇ% K¬‹JeÂWè€"(Xü€~%(¤Ò¦/¯lŸáýÒ²ý;r·:0=y?E- /”>}\<͆ªOÏ‚Óe©ÆÆ/­>Š¢ª•Å„´ewkáÄ÷,>hPðž¢æ±§Ha`¬¤Ê œª1è°¡KÐm¼Ä^‡žæ±Ê&ÞaÏ“üî€n»Å‰ é´¡<Hß©òL²
+ ¯…üëDQ@wìž"/uy©#íªàYæÅHE,®†Ñ¸§Ôò¤¯ù––ÒQ-87h¨Îx+à¶ïÐr¥°á:mÑ(•œQ³ä Å;žì½ž‚Ž=OjÒ§z‘QͶk3ÃÏ[µe @Žm¥^hÿ\#œ‹ðB[… §ráÙ/¢ õñwšçTÔ¢ e½¡!Fmù‘þ’I‰†¿*5oy”ßý+fýüBŸîéf•éyÇtî}ëðwª6]ÿÁÔ÷Ñ,>p!1ë÷ýã?©Å&ÏáÂù¼~â¦^%›c 9 z8$¬ëC§3?±âÉ:á—c÷]P!ÜÊ¢‰‹‚f8 ^éïlã[PïžÍ½cufŠ½SKv*JqDÒ)Ý:õ~—A¡À!LöúœAŸ5+tÀYRNÇSPðkÔ™"¥Ë”nÔüI÷ŠëôH‡Ä"í9mªÀå“h$=ý—nl“5K| Œ㦓gD6æΤû»ä·H
+Ç8¹Kˆ ½ÒØ´PÀî°ÀMfMIêk'9P¡«”G©IÖÇ?èÞ› *8§õ¾bû}òØ"˜¾ìs¶
+Ÿ<6P‘ïànÒlbúÒ¥
+ "îM+Y¢ðOÕ*þ
+l;“O6Gž°¶—­â›úøjDÝúؾ!¶
+Œ¹2à\=G^4æÑ0Ŷ±jy°ªXHS2D-¨í^ғχ¥ª”~Ľ,šÚŽü²røRERrm.ý«ÜN
+fçAÌ!¶Œ©úÆc‚p£‡æÛáŸ
+endstream endobj 1430 0 obj <</Contents 1431 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1431 0 obj <</Filter/FlateDecode/Length 6114>>stream
+H‰´WÛ’·ý<’©â 4nV¬(QüàxYöCœJ¹œ•+ª•lK)'ŸŸÓ
+‰k´Wûj£¶û÷YƒŠ†††ˆ~RÆ Þ&µ‹nˆdÕþ_józÿð—¬ðz¯~S6ñ€ÃC„†º‰yE‡«Oê{õQ½Ú/½‘³ ËÙ»ÑÌ],GV.>þ½ØÝ?ÀÄ–ÌÆ)&ùkÕwåÅ°¥ Zý°Ù’ߘíŽ6ZÞ“<¹í?öoÅá¿ÁegÌàãä²]õV=0ky·ÙU@Êùny>™!EƆ!×0¤ù‡í–Iz üî
+CåŒcCL~y'¤Íl%¤K‚ìæ ‡“ /ópŽ±}³›o¾‘0ãöœãgÕïò÷Qâøië6Ÿåáß¿|T[²€ËcôµúâüÝÓãòöó£ÊIbæðW?Mñs7gº\B¦ÃOBqHÙÑü<;ëÌÂÙ/3ØÁmÓF½þŸ8óã‡_ŸÕÖÅ„ôMRþ‡Ê fpÀP#¹=)£,¼
+ã5ˆ.Ó]0…î&®cÂRA¦2‚ð±‘7ù³I*ãvOêÐW<÷¥&Ï GR
+×nŠ’^ÙA'S­¯¾¹ÝA
+qp8wç–Ç=o2†,';Ñ—¹ƒ Ÿ³;£¬e ÈÂg‚LN:ê³@––a"Ó—5€R ¨ŒZ^GŽ¾/ÎÖÂSª6™E ¢;}HlžÔC)ë¨#_;¥hÙÛË%Îr=~Bغ”÷Ö •°à•±–&bÁ‡¸³m¼YckV."Û²³ùؘÎçF&îAä‚ÏÆݧ0[RKàh°±õ1ï_)^/…=ÉF™±£*<Ö×E¿JE·1²NÒÔwG)fcTž¤©5f/ÂP¿Ã î¹ÊX¸Ù_ø¬t¯.ŸÛ`VMëCGG–áª=F̵Be¦ŒåZ­âÿ¹V¹d©XãVÅTiÙ;:Rä ¯×D`¬¼ëËæÂ9Ì¢w`d-èê¥ô{ŸƒÚÑEPMW5äÁº§30"ª¥¾Ž»M)ÈØÑ(õuÈî¡|'“^ºçêbÑe¢[ê¼Øt¤Þ-D‡ð¢÷Úþ±ÎŠ÷ݹfØæ9:ÆŒäJÍ°„óBmE£í$5µµ¤ãÚÑ“šÚ>;C³|æÊ»ûòbÁȲž
+ÝFÉ© Ü´Z2ãw w¸'Ñ€ÉI–Ýæy¤ÊBxT¾l5mÕÂ=]ÃôTçš±.ÏduœjÆ—ŒEí·šPÄV÷Ê"n¶=ˆ$€~¹‘uy$«Åvn±)³n‡º™G2m±>èrEèåÅU3°V6|k~­Riü­Áw”úæÄ\¥D­Q{†ñ;èîI.É
+3¡ÉÀŽ…¼gé!HœrÓîè¢ÝrWÕ†LmÕs«$…ÖØ¥$Ï9ÖÕîíÚjwÙæÉ@›µÃê‰Ün/¿Û²QÀ"â9ÝÅR
+ò›ÛA–î댽ÙA©`ò÷pÐØ!Ù(Yà Çw’%i©ä“h½¼ dZp®À¬] 3jÌó`fóÏ;bÀ`k’:¾F4Ï«iŽäÑ3—b€O1€k?rõ}q·vxtÇAšÚ“zè]_‚‹a9F™1j›t„Ï/£F
+«Ç/Þñ;¬¯™¢úçcqåÈÚËz‡‘C ûä.sŸ$¦„㪓øä·ElÏ\_2þ‹©,¦!¥ˆõáBôP¹V(uL¥£ß bnÕ¼ÈwœT™Åµ/—™ÇR‘,¯o¢Ãe]0 Xö`U ’/SòƒNÑìO_àš«æ/«LãÝ@ŒâÇŒ ºòw(~ã6b‹îµ¥o€`g ;–þŸ/h¯‚ˆ¨Œh ¿n†Í
+)rǾjà{¸¹«Ä%™guUã$V{)Œî¢56ÀŽn†u"ÅõÖ*½›… ¾R>9 ÀŸW>~ÉÑÉïsÅcšm´AvWI<4JÔîÅm=a¢|Ê-8Êa㋾9g“Ð~”7}8zü½Ì^§­žÎFdÓqóp³pi—·Ã™.‘
+ƦP„ :±‡ u(=Ýtþu®ðä<>øÿÊô…& wróá~;[#)”9XuÖk$¼ &LŽÏO`x©Í l¡’D*plÞ1µeÿ¿WÜp†]> Œ:+ú¹Äqï±Ä©ºŸ-D#{ŸÓÒf¯±õÅF¢©?Û¥… ‰¢!ù ÿg½ÊvÜF®è¯Ô#9°ÖÂ"é‡&ãΠŒؼØyP«ÙÝL´4´¸ã¿Ï9·¸‰"eC‰ä­ºûr®Ü§rd"Áô$`ÝÂĽÞKáþÐK®'ÁêœL¯–î%¤} & ^BÝùk$ÈýÚKx|_‚M
+u¿Ð`IÑ¥ð[„ §³¦Ò¯H”åþ/^$£s/öû æÎ*ŸÍ\SýrŸ-Þë®Åë {¤Ç´¶×Ôf¸O ©å49ï`Ø'1+`a~MÙ æ‰@d,'δ`Kç 7®ñ ¾‡
+P• =ú%R·7jÍÅ0Hq¤æelF^3l«š;%š«AÑß=HÊhÍ”±Ñr›<:>”Ì”ÙÁW¡¨ÝõQ©„ý©¬smÂf9%aqÐ,‚ZÂLg’•Eô¸•¿]<+¢5XgˆÒ Q80(U nä‹‚9. \ŠB8ïŠú9p;¨ßqÖvOª]ž œ…A%ü¿»ðk¢"¼ZŸ'9xnåyßg´om¾)]̽·ÑM8Þ7áp…nSef<zIªfˆGVðB´ø3-(Äô«jŽ&ð„âõwI‹¹¶ºõ|ÐAÝ~Z`æ/ _ç®ö‚Žhtº¯áý”†àù¤†Æ¦á: 
+&iÞ(ø ýJ3¤ÆG/¯©ŸáýÒ²þÛJ·Ú]}ÄŸeKà 3"î{w£¡êÒ3‘ôDYÚSã§Ö˨:ë1!}1‡»ÎôÏ,#hPðžeóXq/±3cç)œê0øF¼–)t›Ü`×BO˱^ª<Ãîeä=âl—a¬¡‘çðÁðnUYS
+Qñ@ ÏÂc¡ÖÕ~Op‘ÍÕ­hy#\F*41aæc°iIëjÜ>Æ:„ÂÙS‘ÁûX¦7[¼L¯"Z–Á¬5ÏcòG»ÿðʃZðl =Å2yÂ<Ñ@R‘E#åöFýщê}½QäÅW*½Æ€R›òE46OG
+.Õo<Ï€E^-î·ßxöª:×á
+ñËÌ‹‘ÕæIø’ y÷‹tá¿Z©ûåe»; Œ9ô
+/¥x~dÜ'¦MÝ‚<¥ÍãvÅÖHÎÅ¡ÚnÔͪ\—Îç,"¥:TËŪ:|WªÅÓf+¬–c“U‡ÒJ nA)%Öw“<oÄÊà†`ƒr±!6älH|[º)ÚGËý÷˜56Ë{7ÎdyâŽC/o'ìÀ?žÞ‰n<fò 1q}xäX€Y‹½zŒsf—GP·R\¯ Ï>v@LZÕÁUL
+€àëžëäéëåS5çT/çC×ëàzwæz˜o/¸>ÅV`:ï8wêú rãú rãú òH¥äã¤uºc'jœþ i]¾”‡JŸh¢ÀÎF1®1Žlv÷åNF{Úv{ŸöõÞ—¥ª¾ËX9[–àŽÈD46Gþ’±¼_ÔaÛT“|©ÛŒ X7Oò]êNPd&pŠèŒÌ|©¥:À½š;I
+l|íÕ›˜d:“\0Éc¢?¬ 6}>W›ey¢§€×¯Ñ‰\e¾Æ!çöJ«Ï®¶€@¦ûƒêt‘sÒI–«ãÿë®6µ,Qoƒ|Ò.ò®+º
+¯qX‹¬é!ŸëâkÄëç¡8òË s YÖæN—úÝ´12mî~þX´ØöÅøÀ…Xøèµ¥8o·+åëRÖž¹ …AA;7ÝA4@aÓ_U dœÚôqjÓ>Æ©#;í™M÷ÄBfÓCîhôwtß—±Q7»ÝvÇÁjÓB|V„¸ÑeÜ 9Úð^Ù™{´®žvO¢…¦gÛ¹qйñÐùZ(b
+ƒaA®CíÙ0_P|,¼ÃNÚ]¨7ÏÕt¬¢eƒÈçEÚñc%ç÷\aÐLÐJ¥‘6ítºvórÛ¯ÝÎõIä4ézSÐ#“ÓiŠ|î<-ÓiÜc9ò²Lѯ2ÙEG"݃é
+ 9-N°@ ØN ºÜD¡£ê9wXw–t
+MBÀÅ I\õÐ@'áÛ…ƒîˆ¨•P™ÒÙͯä%Ô‡º)OêSã£ÁÝ\AA2|ÜCÐùp—ltàAé’ò£h¸ºý¿øÄШe6»Úàøñèö;¥=éo17UÏ'ÁĨæ ó¶qñ£ Kk¥÷טäGšâ䟲yO#!jûºóQ¸…æ¨CþhŠZ¹3 ó„-'<­‹5eJºrõé'¶ýÁ ÎSÃæH
+o¬sÆ2”S7Ì
+T¬uÞrSü`
+endstream endobj 1432 0 obj <</Contents 1433 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1433 0 obj <</Filter/FlateDecode/Length 1030>>stream
+H‰¼WÛrâFý‚ý‡~¥V³s‘Úª<<\¶0°h’ìfI¥([&¸lH€J¼ÅòFÄÕ`»ü 1šîsúôœ–\“@â¿ù>4Cã|ôOäø˜—Å|p+¸Bϧ˜3Rù,yGÐ$‚¨ý蘋+Ü»êâ*å o ¶ã
+Ä44O cDÎ58ѸU%­ãÅ°ú6Ge®:¦)âiôø÷Ct-£q?þ ¡øü‹èÖ¬bSRìù:›bJÕý•" ýùl9»™=´ÅBéæùAaͮϦËÑdÍV«M[…¬×ïþ»~¥’ççŽÉ¯D§>GiJñ´Œ¦ Õ¤l-åX[PÙžá;…©’º¾‡z}ÙîuƒŽ¡°«@ã¸|Ræ†ÖéúM)D/o4¡´- ‚nзûƒžìÕ{µÆò¯Lú µ•Zâ´¯`rk©<õA[¶ëA§-¿*ßÜG7KS£üÚ˜ýãŽ>Ž¦·£ålþ} ?Œþ[ªqj§áÔNÅÙWOý4œú¥õ\†su
+Û¿ë Åøqô$†ÖЂ^c÷lTÚ
+e|=œàL'N’}Ž»1Ogê-\p„Øëó`ý¦Ãôï©»Ì Mƒl¨òW¶«µ½+Ë5Îv5ã]tw²ûlÛ§×ó¤x OêQt^ζâ+‰Æq+6R+6ÎxÆ™+Ÿf¾J Ú*ý¢ÑxæxF|C)´”c'äͦFÚ‹½g„¿×ÇvsøŽÙ©Îg°`—~ü5OÙÍóFöËΉÖq[¶Ž ÞÚû†<Á…r·N“»õ‚r_þeÒzÆ'dyZñ}ÓjC¥Ò„2ýsfY͵•Í«da}¶,“ð¿
+endstream endobj 1434 0 obj <</Contents 1435 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1435 0 obj <</Filter/FlateDecode/Length 879>>stream
+H‰äW]oÚ0ýý÷1™׎„TÚ¥ É %ÞGW¦ µiEW@´vªúßg; „ÈJ…4ñà{Î=÷ËœpÀê3º£zŒáf Gœ|Ç@€_ƒ‹0¶Lõ,ÙSp\‚¨‰mà}Ð@ç·jIW`±B¾ºÓB6uÁ¨X¨B(ð+Ð<ûjÇá'P—!QÜ©&–›Dl X‡QŸa
+]³öJÙ©¡t}ÞÓýîC#wt£À|íU1õt)
+·".b^ 3a–ZŸÍ¢çÉÍ"ŒÅ>:Îç‘ûeúfÎ5l{Q¾I,à½Æ .´œGÞʺݮÈLîi»I{íŽýK,ÙËÚ©ù1MM F¶“”Ôö"%ZN£
+ÛœvD&X¿wëâ/wÊ‚õá[Ãr&‚ÍŽ
+` 'ô§NøÞíô0î‡%Â×±„:vÈoâ¯á
+endstream endobj 1436 0 obj <</Contents 1437 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1539 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1486 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1437 0 obj <</Filter/FlateDecode/Length 442>>stream
+H‰œ“ÝnÔ0…_å\Úqgü“Ä•¸h!ªŠèî²kA¥¡„¨Ý– ‚J¨ïŽíì’´Tm…raË“™óyŽç0€ò·YaïhAXuØ ü‘À_à‘ÓùWª’È ò¬Œ¦á2|ËÜgPÌH¡OÐN•Æ£¨ªÙ |†hÂâ8'4ßa¼U±xUGÓu­¸S,ŽM‹÷Xã0ŒiRmmSíb'óë.b_r˨©g<ëuÃ"JHÖÂÁrZ ÞõJ²°Šp.$—BË‚¥sN;'?„× ømDvZ«²þ‹l¥M w˜³ïщbÛ¾¾×g­ü“1ÕBî!²çr¤¥=)µßý‡P_ã¾e?¾S|6ƒJåŸc²L®þ1yüÍ‘¬Ål–lŽ··Ù?ƒŸim“éD—6_¯ÖlDl®Ý¹O˜Çpþï¢]¦Ó®E~$z°Ë©{ÎLgL­ãÕl•éÒv
+endstream endobj 1438 0 obj <</Contents 1439 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R/T1_5 1565 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1439 0 obj <</Filter/FlateDecode/Length 3818>>stream
+H‰œWÙrÛÈý•~R&Œnl„ßdÊå<¨›“<ŒS)
+m3öææ`^ïÖ€´³ ½!¡ùõ\B¥èEt©Šø›²Ý}4ÖÅÖE…É-¾YüÏÝ_!ÉßD–¼Ì’2_dqìG¢@Š3ÖJàëhVVY”‰-bÍŸð€ºUP·~¢®R|¢îßUÏ$¶Qž¤æSÛ2rñÆF)ö-VÅZù¹¤Ü.’eNs}ýXóÍJó¡è[—ÔåÏ4ϪgÏ0JóOñŠ—«S„Ñ«ø?)ÇŒr—®u’d\ª®ý™3‹àÌê‰3×Ù|™½·Ñû÷ˆ^Ñ>§ÿ2óß~ã":a1&¶Y$ÆÍgï§æƒóÞ]ß`÷Ôƾ î÷r:•“Ò9ÈIÛl!¦Ý&©É §ÝA3ÙÏgA/aTFÿ5¯%â†Ã^¸¦ÑqŒ7uô¹™†/ý§ø•™ÙS¡¨’J2:ßæÉÖØ$Ïa¼ýs"¡€x™ìd²UⶳL.®.Ät”d„šÃé¾EÎ":Ä.šL{<LÍ
+ÙÂG‰a…í®Çr¤À¦ó–½œÚÊë¾Ù+ ™„tÝøÂÃÞó³¾É‹ÊìÆx²<ôBN⎄Â}9ëÌ^ éO^TWñæ-EôUî¸Ä§­g‹X_)2·TŠ‡xë›]Û¯*¥äj§æ”$4’™õ^W3”ê°’e÷€Ûw=»ëR›Ù´E‹Uº/¸ÉUsºC˜uym
+>r–]¾šÜfŽÌ}¼Õ¼Ö½‰&öéޛ˟Ma
+„Ñ¥kUïÏ&¿° ,HAïò<-Ö®ôÌeÉ_XÊ´ÚÞÛ½°Õl÷ž d]>­/Ÿ9
+Dñ9tZÿµ°ýݱ…È8})iõJ}?ö‚拯âuÕò­ÎKµv€/­ ªËª{Rê‘–õ¬ÓÇãÃ(VC ÍuH eEÉ¢‘íX=ûØB¸H27#ë,Þ@e.®gσÌGMÐÊÀ(]ËóîRÁV·@œ?¢Qžd•I|Oú _Ðùh$q´¨ôH­]‹>µóú¸í™Þ±v^¢¿À?óU”åAÊš„çí œ´~ÈÎ7Â×Ì•Mq«“¾*b¡\Ò2cZÊÜRJ!]wab¯
+Qõ뎰ƒ“Ô…U^nDÏõéªk^
+ZÛX
+V`L#Ÿ“õ’³Ï¥dtBåöISìÒ£ Nß{!ó Lý+<­jmG…Ïß
+ÞóÕ¸eSÂàÑp:Á 6®vØ:™ƒCØi¥%"»çæ,ODǼ[ ”_1•ÜB“¡õmZH™§ÉLëS˜$Ud
+>ж*XÁ)n³©R‡CüZ%inõ±¦D9žÐc—vb©•+c”s“’c®{Ch?v³ws°ŽAãœ$‰#ûvò(wÁ§8kI¢ÅìÞ9!uv[u´ãR†=½v:ŸŠ m¼œë®÷pêáÑŽNL˜_ßO€³¹oû*ׂ¯µ‰–ŽCJ¬nµûIr1D½2uŒh±ËÏýñÄAI7b #Ô4izÀÓõ>ŒQ—h öd–”-LB%ø4¿ž$óÈÕ‚³ÈuaÊV`]’Õ ¶jUeNÈ“ÃdŽ”¤êÈÏ!#糑bú>ØdERÙâÏÌ'•»Ò¸\0aÛÖ·)p•@ksÑ-GkÌ@´I¼HÉ­Ïg†ÐÑÑêƒ\‘aÿx’˜Û¬Y!(…+pˆ¬¢'xFkeµZqº÷S¯ç£ö;*±"tº}(C¨ú€ß—3¤VX`lº‚±aàT¿—IUȬÊCc[]ÏœÅ4¯û
+©f>ÞÏŠHeeoUùõf†}fl†'JnDsWæáWÏ_|jÞ„·ÜhtT>ãI£]JÎz7x£íiYNÀEÒš%‡/biýWaù1›¨§£¸0gdÕRgjT'ëÔÔ¦«8 ãÜI]¢x|Æ$%i-¾v¢òÉbE҆хI]%¥Ü&U^…¬íI@òv‡”UÏßHÃÂöé%ßÆIF&—ü~\u˜`#›ÍqúŒVnÕÀˆ"l•TÙÿx¯šž6b úWr„«õÇÚÞÞBÈ!R % ꡧH mªʇ*õß÷ͬ½Þ/')I{
+`ÒSÐÑlZ ÿdº†L¾²É #vMè\óîÖB>yä\¸érT´ŠjU"KÑÂ3ú†éé¾cÔ‰èšf-3+÷%
+ÁežoRg(–”Y)K¤Ì!rÂ|¹ì±ãbMõjU †‹>\(Öùêav„öù¢ñpÍ£ölJõ[å+D-·WëûÍvóêµ[Á¶E9×q*É3¡t“ê—Ÿk:JÓþÙæ~CGù3z¤ ¹%kC„;OÂÝjæùa÷ÒþÿûÇă¹ëåN#;Ȫ…Ët?·TéZô[Ó:2Kcè/)³O½”Y[‘¥CûÄL™ŸF…a;JÉ¢dð s¨üçÑ6änSwóZw¥í%/;Dî*‡*”!wg[LX,owËÅø+¼Fþ¶#v¯aǶ„þÇÏ~<ûñXÍ)‚·†±OÀ¿Èœ®)¨«™ý¯´õ+‹~‰²ËÞ3Yý …+,æÄýöüõ“^yò#ëN ŠØÁû8Ç´ðX رH1
+š,
+endstream endobj 1440 0 obj <</Contents 1441 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R/T1_4 1462 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1441 0 obj <</Filter/FlateDecode/Length 1734>>stream
+H‰ìWÛnÜ6ý¢O$P)âE•·Äphàf•öÁ
+y-Û*Ö’«];ÍßwÎP7Û»¹¡/Š ^J$gÎÌœ¹èu)þ×_‹'«D\oÅ‹Rÿ‘-Ê+QÄI’>Pˆ4‹³$±"/tlM’‰òVH¡Ê?ù†7º­µ0iœÙBD>½¶¢¼ò¸\½á Ç¥øKØÂÅ$<÷¤ÅÑuãc pÑ×âwÑŠ×å dÙѨæãcˆAä€Ñ$ãYÐ[®H…ÒF¦ÂiüZñ[x+-]œˆs©t&Š´Lð^c•ªåÏ
+“ÄÄôÁ‚¤x¹ë«Úß³’_ ÃÉ•rò\ýŒ~ôKµ´àgÅÐ>ÑÞ–¸)î8DLbò"¿b3ÂåÉŸn‘¯vÎ"7P¡˜‘­ºû^år]“';)J[a…k,jlŠÉÖTO2 Ó+²Elém¤cæArI—{ø±ÝÒ_â bÐîÈÉâˆcÀkbGrì¥ÂDâ$ T0ÞM.}s,*Äær
+ïëÝÜ(4˸ªP <¬Ó°Žý˜Â~bûÄÃ'ÁÏ6x²Aép­&>´|ëˆTw¼$KÒC–$“%&ÈQ$ STää1¨ ¢äLØœ,º"U8·Ù
+‚Ñâý53Cx§bV~¢—/ùÌ13¥iÂiQ›Í³œ~c¤PD$È;;P{ÁFä+–¹Ùˆu×>°ðL „ ë< ºßŒ·ÊPÈ‘´ÁéÀ¹ÙÁôž3áV3(ÙQy¦TÞÖ5ŸŸõ]ŽöšŒ<aå$¹igs“‚™Sblãl'ÁÖSzÉ4§'þ•½'üá ¬á̇I‚2¹Ê“¨ˆÈnÁS½¹ ÷ú>/4¼ë‘oUË ÿTûE©š¼YSë­HuÜäàÿ2'ìÞéò®!`´Õºž=éÌœ@vp*•”e¢ŸK$G] üÜ#E.Ö›PBŠðÌû‚šWl=»„¬ÅŸ’ᮀÍ8HdLxç̦ð‹ÊØqÖ!ìnY„Âx0×µh@öœÑC}˜£K´Ú‚Ë~"¼ü5¹±ã’×z‰eÝ¡u{C[L¡ÄŒ‘Jå3YÏc4(ÈZÙ+j'MKa™"rÎGØËÔžïéàËàM…gÞ>v~Ä ^¡N͵{îÆí¨¡B›Ã7Nœ¡ÙìÍŒèw»Ýsç_„Â0Ql½ tðòœnÚkfàn>!êffh?æÌWUuMè‰ZËžæCOkú¡ªÿ´ÂsußSÚ6©çý5‹Ma–m
+®ìzn°7ˆË£f›4äзÈÔ¥KtÊБýÔ‘çžEé´b&Í}+;dÕ“&ž„öRé™.Ç·¯êÑ.Ÿaûv>ZÀDÁ`E½ƒ'5EY†rβ¯wŒWøòz‹TáÕé4±î¸[Ü«ølóTº¨øvê°<ƒGiœ&«h·èq© M6ô¸›648Yñçg†¶ª 4:¼E)%7Ó&—Ó€èŽçÛÛxÃ’¦fÞs¿EzР?¨¢–Ó }¬Y&/pÉJçFß„1: œ6#²„·Ÿkó
+endstream endobj 1442 0 obj <</Contents 1443 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1443 0 obj <</Filter/FlateDecode/Length 4352>>stream
+H‰´W]Gü+-ùeFbšúîî{ÃØâî,ÌŽÎætÚƒcÁ,,ŸÿýeUevWuwÖîlB‚er§"2++2ãûc#Ÿ۷ÍãgW¢yû¹y|”ÿlŽoš¡ªð Cc]ë„ÐM7ÈV+ášã‡f×쿇oÈø ßð¡W²­ÓCsèmÛKÝ_7»Wÿ_øñØ|jô`Z8¼ëÅÀ×UßJ×H‡7·§æ—æÜ|LÙø³•ñgæÏœb<9*9þqW
+Ý®ùáæU›J»4][ï’Âi‚/›„Jéé’T׺¬lðÞ“–QÆ÷k^6§}ÛŽOguR¬>LSt…v8uNû鋤»dçü+­V¨p\¡P x‰†(1ÓÙg…U“óJÁo¸DdÜ}¬\©pꢹ^œ¼|~M Ê™6¸ôsCÁâq|Á”ÈÔF ]Zøýô½*ø×™¼^Z†GL¿Ò¹ìÉÞñ Õ:éxæ¢ZWü÷÷Ó«/ŸÞøüáÃéü%­œ@.ªuZ8­ð$-vBÓf¦TV„I<ÆÃÎ
+g¥L[õþÓ¬ØhñÔEé~:ˆý™í¦:ìsµÊŠ+×x(pï z¦—ЊŪeAÓ+_¡$¬ÃÎ_ü2%>O
+>ômÏG%,N‰L-Â0´ù¨C‚?Û
+ÕvŽǤXèðgZž &0ÈØå Ëåi~›j¾¨¯\iÉc' ç߸çôp²#>;Ù)>Ÿì%~ra$âi n/ön÷|ov‡aè ÓF)áF)…磴ÀS¬ð §Íxîô,&R8¶•[_Œ-ŽÕ’P8hNhÁ‡¦ñYŸ
+ct>J—©F¯&—;X<yq¯O>~¼½o&v§×͵¿×/àšã^ÚÝÜ·÷r¿ü'ðŸŸàßæ;×\Ÿ_‡øø>|ãÕþ ý×ýÏœ_Ÿn÷~ï)üòo×gÿ!˜ÿ¿›3{óÞ[ºe ¡ôÓS³³Ë é§x>‹ÕQ=óÑ‹ºè¾”q$ ³jÖÔ¥¤†ì!J$%‰äÂQ"™(I$&‰äÂ:·ôL";ð ‰áË%r];埸CuìŠêˆÐ¬:Rüu\SQnkªƒRˆ¨œRøžRÈàTP
+¶xF@‘7wžQ^ª Í,Šg|›Š—"Š§†°·l,l\ýØyr© ˆ²!¡Ž.òuL:JN ¶R’í1@7£I9Ú¸ÒjQ<DÙP¼/žöÛèöÖ6†1Ek{”a[k§…thÙt;z‰õTšÛ¢ 1ƒ Ì–'´¸<Õ°éÞÄÙÀ‘ØÀ”ù@Úå.ñz²ª`³Eø6P
+ÎRRÑfv ùªF0KH·fÝjˆÖõð¹gûŸœ F+ÈǃdÃhÙ8ºA>í ŸûAÃÇ+Éäǃâ9]ŠTÉên€'NoTÊ’$j“sˆŒ¸Uòƒ9·É‹Á/žŒyE/FlG/6õCÔ8$[Ë‹¥lAìÜB¼ïáâ!ÄÛu¹É|Ð,Ò>ŸfQ¿HPä¦Y”!ÒëÜî]µoøqÍ2쎪«`-µé'k©Œ^Q6/E(O»
+ÞUënr–ÊX¶xÊV°–Ú¿XƒÃY™åC”mÖ2C(OÚ
+ÖRþÖ’ÒY>$DÙNŠPHG˜
+ÞU —xW³ð+„²!OG ¦‚wUƒK¼«Õ\k+XR·{WÕûM†zÁ.zÁ£ló®B¡x®à] öck;±HQ6¤“"Òqº‚wUÎ/Šc:r‘¢lH'E(¤cu°­Ó±v²®À}‘¢lH'E(¤C›Ø¶·¼
+yå\ÑMŽ˜£›œÖý°Ò:VÁM®îes79B79Ù‹à&Çm´¾›Ì×臸IɹIJjr““+
+n¥¦›Ì‚7¹ê&uß/cÝ$QgÜ$F7Éǃ›dÃè&Ù8ºI>Ý$?s“J†úG7 Á™ÔL*¸_£JfRihŠþžf™E3™0C/IÔ*yÉœÚÒK2\ÉK"Ùà%S®(pȵ–•LÉ‚Ò-×ÄÛ Ü)BA¹)ïmƒHéä½ÂH/+7aåN‹…›’¯ Ü«UX7ñáNØ nW__·ó–­«Û˜SÔíT¢lºPS¶ó|8ÙöÊ&z^¶‘yø<!ŽªÍDI´¹pÔl&J’Í„I±¹0
+6=Ók¨µ7ƒQ¯“£^c¸–^Kåãýô¡£^'Фׯ¤×µL¯ƒ|ôe½F2A¯S®(k®¥×YÕqÃŽÐÅìIà0^Càb¼À¿™Nh$pcôû?óe³7 áWÙc¤-Ëç>AN9mЂm´ï_J"eÒò¸›X ì)?³Zr$ëãØ-„ó;„3û† ×k L¸!îë9|òûé÷K\òíîsGëãü=ÇŸÏo§/ôéŸQ?ÿxŽýŠüy»ké÷á5+åÎõ«ãVŠ^••fgüC³ÍJp‚YÉ¥¸¼v1+*¬Drb%P…•@V"¹3”+J[V¶&ç!+E®ÅJ"S;\ÆJ)X™õJ¬4­VFL묔f
+Þê$ãíI“L“'™³æ$³;ƒ&Y;‡ ‚'wÿOí5“™d@•I†ä4É€*“ È2ÉÌ“ •^M²àr©ŸåZ“Œ~¡÷°ñ¢IÆ¥aê½Ò$3­•“ kždÜ Jý"ךd¦Y×»}VJu”úY¯ÁJÕf¥ô³ú³zVš}»UVÊC©_ôª¬4;Y9 „ÌJîLÒ³÷†•@V"9±¨ÂJ +‘ÜÊ¥W¬ô}|9@¬d¹+ý¨ÞÃþÃJ. Y)z%VšÖ +càïöYÉÍ VŠ\‹•¦Y×7û¬”ꈕ¬×`¥j ³RúÙfeV¯ÀJ³o·ÊJ¹sˆ•¢We¥ÙÈJÂZ?`VrgÂiŒY Ta%’+*¬²°É¡\QÚ²rhÓ ˆ¨œ"v4*;Ÿâ~%Tvƒ
+ú-HC •ÜX"¥jLHÉÕ"¥éL“ÒÇ@‰^r)¹×JÝ*ƒ’[­JÕë'7Ž÷Œ¤W‚=u¹^<³™ßàžNçPoŸxay³® Ä{Ô¶“1×уx¹1`Çõ´cÙÎ\Øá*ìè
+;vÚ.¾‰´Óö´\ìLma‡«°£+ìØiÏÛ‰,ÊvúÂW9`GWÀvæp¯”É~ïr3{º¨ÙLqs¨ÆÔñ¢¿[!Dt‡¯ Å —oÍTÜ®ñq+úû±•ÑÑÙµ2vÔ X™‹Ã5>nE?¶"?deù.[ñk+\ããVô÷oYIáX¬Äl¬gc5²ñÖ¤Xgci‡¢±jF¢±LÇwEã%»dl†:NÆ^'ãž“q’±Cy–-¥8«cÇYÉMU㬱ãÚí8ë=:Œ³CC'©pŠ;^Šžü¨…)é‚…Ö’H¡wÖ%9ƒ¥!<9cvR+c@F §`1¯ŒOù²”Ó3XÔ17IµC)X£-¢ƒ_̤“WkSêFkKuYúO€
+endstream endobj 1444 0 obj <</Contents 1445 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1445 0 obj <</Filter/FlateDecode/Length 621>>stream
+H‰œU]oA ü+~¼“ÈÖö~¿Vª*x*ä´BÒ
+E$ü}ìÝÜݦɥŠÔD77öŒÇ»½
+C¡/ÀÞ›a•¼Idaø
+ÝÕ°~]Wü›‘â1I'tN†JqØnà<ÂåЪÑÚì´öjló÷Pb-¹×ÈX5~¬}‡µ´è‰;ŽôÛÂûúÀôÔ9ƒpÛõ:îWÔ¡>'ýåû»á
+~+’=³ i’lϪU¡‡,ì'êºÕ~ µ¾oë›üìDl<ÑÈŸh„î¶ozqFCÍøý4ª5ž6rl[O²6M—`"?²CöG!·{8gl¯ûØÝÜhÌâÞ•ü,üÑïæ¸í}·Óß~=BO¶“áº1}„w—÷~l>·‰3Y•:ê—{Ù Š|ÊGòkÅ#ý» Êâ¹;•œLq,{]–TI¶×¤Œ&8Õ §4?Ãò2ºÖ™«…=ÎQò8€£Ö‹¡èvÆ6;w¯þæ+BŒòÙ¨ÕÔ] “Ç[‚sx5{Š’ÏÔ/éÕßá<yé:>í
+endstream endobj 1446 0 obj <</Contents 1447 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1447 0 obj <</Filter/FlateDecode/Length 11268>>stream
+H‰´—_sã¶Å¿
+fúBÎT ðï£×ëî¸mvÝHMšN†‘h[Yr)m2ùö½À¥
+•'…®Å¬Ê“Jj±X‰èn1¿7Ü-Äÿ„®³/+¨’ÁãªJd!d
+ƒ‹®ÿ[ñaá»Á±U†cϨÌo¡E;¤ó¨Rëñ߶îb%b©¢\d?µøÑ^HbeI*~ŠbYD*žÉ(ÅëËãÿ,þŠ†ÿ–s¥’¢ê-ëA·h4l yúÄ]4s ±ãçþøR%õ›Ñå…Bù…BiöSìÕRušH¯ýù7²cœÊTæÏ ¶Í±JYYäü¸ÈåÙ"ûûð¸ÆúS\E¸Ì0û̬Ÿ¿âg‹ëØÅy´Ç_Ö»­ˆ¥Ž ¹­~*~
+“YUÂ6ñ½æ%ö•¼ª,ÑÅ··ÑŽvb6Ò©üs#Y¶éë™U«qÃ]ª¸ÃmOO+ˆþ xó¶Ëjèþø‰1ÓŽtî´ÌϦ㪼c:~…éèæñîéÀaRU?òl:®Ê;¦ãW˜¼ŒjåM'˾e::ýtê³é(KÅwLǯ00:dï[•âÛ•€«4s°«Ì
+µ«YéÌp¡“ä©Bg`V«z˜•T Ngèô<EŠå$y¹:{õŠÐyÌœø+‹É e_âÒÒk%>Ìçâ°Ÿ[ˆŽUd¾Þ߉ݫå剱…´ ˜“Ñÿü>®£¶|CÛááO0Üh)£ïcw<7ÛÕîW¸«íL˜åXH§‹K¤Oš ƒF°T|Èéœ1 ’Q‰Šœl©È¨DEF&*r²xöV‚ ÒÉS%È 6ÃØéJ³ ’ô‰d`íj*:3\‚$yª˜Õ:¦"Uç¤Ó§Hž1>A’ŸË ²W¯HZ÷h”ù
+n0
+þPlñRÁˆ(V¸Þ ý
+ eàãXø£iY̵<âOòHøóª]Œ?.ƒð'q,üyeU½
+ãOFGøãüøu
+àOºLãÏ¥?Àò^=àÚ¼¢¦‡Îˆœ~CM‡}§'²ÕÛ‰9âïü¾Ñ†xMk9Øvös0§$_›Äz4Çì‚*(k
+±Pò¨,ôî² ‘T›©°Å–… ‚XXˆbåQìœ
+V%ýT0 9ŽÅª¢i™©‚<4d¡ä‘XèUóXh0ˆl‹YÈe %ŽÅB¯,q%ÌB±ów²pÔ)-! ¥Ë4 ]úXèÍÙ¼7Þ6ùBÇ5,ém÷þ°1l’? û#hfþ®5ô3N¹59¬† (‹ AQò¨Pô¦B‘VÕ* ˆÜ "HŠ(¶P©@ÄE+gç‘f¼
+"DZ ¨”^A󑇆P”<½jC‘Ë (J Š^Y•—a(Ê芜¿Š£NéBQºLCÑ¥—@qå X˜øêù’ýšÍÉé’Êpp³³x¨ÍÞ}›ÜiZ¾$Cgv >?wýð5ß³2O“ç:L¶æœoIžºµ(0.eÙ!\J—Þ A\jR’›‡©àÅ— \‚Xp‰båîœCÒR‡ä8.ËòC¹š‰KâRòH¸ôªqY\¢WVÆ%—A¸”8.½²e…Xθ”Ñ.9'.G¸”.Ó¸té¸,×'‡,¼ôæì=à«Œ\¯»ú5+iòúæ°´<~5ôÓ˜¾gÅ:mš6¹¡£õ‰•È©å"ý#+*óC¹¦ʧìj…é'«ÑOò¨ôóîÒOå´|0ý¸E
+ýPléR¡ˆ…~(V·ÎÉb¾þPŽeÑAÔ^…cG?‰ÿ%ý
+áX´L?ÚÑÏñ›é'¹ÐoNµ
+{Ý7› Òdi _“<¦¯ù7‘FϤ ø7¾RAŠ-Ò@*H± ÅʃÑ9_«««€¯qË×êšfm&Òxhèk’Gò5¯ÚÅHã2È×$Žåk^YµDåi2:ò5Îßék£N¤I—i_sé%¾¶8!-äk¯0áksd˜=t}¢7>þ–­ÓŠ®éÙÿ¡Év—•©Þù‰væÝRr¯_QË®æ2æ¸ä[s<>6É^c†^péÊæú$€Û¬ÈÓÉ!ÚgÅ“RV’?ɣʟ77”„”2 Ü ÈH…”(¶¤©ÄBJ+qçäo¡èbXþ8Ž%4-õ\ùã¡¡üIIþ¼j“’Ë ù“8–üyeÕ*“RFGòÇù;åoÔ)@Jé2-.)–†LJoÊn:͹¾oôÇ6»Z’ØöÙ*5IKp<êÝÉ`¾'Ÿ?ß$:mõ·{¶†É7}ÐF]`mKÌ…ÝWs€9Ô]¨±×!~!9e"Ç”<ªcz“ÉIˆÉŽÉÍ€c‚TȉbKN
+9A,äD±ò˜wÎ1+OÀ19Žå˜•^Ê3ÉÉCCÇ”<’czÕ.&'—AŽ)q,Çôʪ•
+“SFGŽÉù\ÇÌßsøK!=¥Ï´gºôÏ,OžYðéÍÛ}ßm›žºº¾VËNÙÙí>#Ú÷[#‡ýð6E«mr«U±ïIOïZs•½F =vس½"ʺB&)yT“ôîòÀ‘L’›“©ðÅ–‡ ‚Xxˆbå‘ìœIÒŒ/&Éq,“TŠ¦e&yhh’’G2I¯ÚÅ<ä2È$%Že’^YµªÃ<”Ñ‘IrþN“uJKÈBé2m’.i’f¢Š U€…Þœ]ïvûÁ€­kƒÁ‡¬H³oZù˸oáڠáKôöö OÛôæl}–¥äðÔ$÷·Ÿ‰¤‰=gÛ(Ù>šS»‡ä«Û7’Ñ:Ý›£æ*ˆŸ²‘OJÕ'½ƒü4èÀüäfÀ'A*üD±å'H…Ÿ ~¢Xyä;ç“´¨ª€OrË'Ë’®0“Ÿ<4ôIÉ#ù¤Wíb~rä“ÇòI¯¬Z¡rÌOù$çs}ðsÔ)ÀOé2í’.½À%Ë…ãg¾ ðÓ›³zÀOÝQ“Žˆp× «´yìÅÉ5í®­ù àÒ^k‡$~écGÇ>é³ ·]âÖò¿úô¦O~ÍJ•^ßÿt›ìÛ¡é6úЭ>´ñ ô”²àhJU4½© T9!ƒ’›Ñ©€Å” P‚X@‰bå!îœhækZ»X49Ž%šai®hòÐP4%$š^µ‹AÉehJK4½²j‡A)£#Ñä|®hæo‹9ZŽŠ¥–ÒgZ6]údóÕC®ÓÍósמ¿—þhE²ë
+{½[ƒN½âfw²l€º<¦ú·Šp§ÖK"Æ7›–@”
+îPlqRÁˆw(V¨ÎIà²Ö?(G’@µ\ÑÍÄ %Pò8èW»w\I Ä‘$Ð/KÖø“Ñ‘r>Wó·ÅóFÅRˆ<é3-‚.½DË“Vøyó¦E°ëûf;m#å3({j«ˆ´oórÌŠœàWäÉmßg…>CÿŸü‡Ù´;sÔ¾} ÂOr=ÉcºÞ«Ÿ‚=¸*àzÜ ¸H~(¶ð©ÀÄ?+[ç\¯þ?ëeÓܶ‘EÑ¿Ò•° Šø A.e[“¨Êv2–35‹l`’YE
+Ëq(…Í4¸æÅ(nóÒPa%¤°^µÉÜæ2Ha%¥°^Ù¬H‡¹-«#…å|¬ÂÎ_sðî‹ »¥Ïeué`¥ÝzRËÛÛ¯%Yi£noâ$Ò›DýÝý7N–ÑmœEâ4¥K ‹Þß©x–ðŽ;ÚL¢‡‡Û_ã"ºSïËñ:ªÝ_±z¦­]<K£–6Úx–GÍÄbû7ÚWé°Ñè¶i}0)ÑÇðÙtŽN¹‘÷JÔ{½qA~æG˜ŸÜ x/H…Ÿ(¶ü©ðÄÂOgù®y/EZ÷.sŸib^
+Bñ3ÍnÒùH~r3ç½ÒLøÉÕBñÓ«6™Ÿ\V¼×ue~r×`üôÊfE6ÌO)'ÞëÚ1?¹ÝX~tö: x¯t±Þ+M„2§I²7Ò{½™}$½»zF`¤á5Õ¾ìˆiê‹‘ÕÎØjU”6d}´•ßÃVýIÿø¬1¨ù–.“îž_ÊöäÎ
+qÝûäÎðÎsÙU[k×F“««¯›Õ”i§i¬¦‘¤úRr¯yT§­D÷"ÚTêÅlÔmÃÕöØT—¯/f;×tZìÂl†e»w6!ÛiÍ"ÅlçæÀA*lG±e;H…í ¶£˜ÙŽ–öÙžHõûˆsãÜc»ÄŽícÞ1ØN$=½­ ³]–vnœûlw¹°}Lµ¶{Õ¦²]ʈç>Û],lÿgc<±Ý+›`Ìv·úüì$2Û%wl¿ÖnÀ{Å »>ÖsŸï§Tˆ6bXé‰ïó!¾{s{èêõŽÎ´QZ °4ÚtJŸ{³ýR7¶V5ws,ÎæÆPs¹@m̹
+5ï'@¨Ñji¡&ÍDü¤˜…Jj06PC)C Å 5gŽ^-}µbe¼kºZ›$¬éšXVi†„UªV¿Úd¨qY ¬Ò5”°úe³Õ¨I9 ¬Òîç„µß «ërQXÝœ&)Úâ¤hš?³Ú-µQ¾eÛÜ){Žgd«‡Nû¨öWã¨Æ<µÓ©Çº16jÌ´nšjcŽ$Ï5ò©?¬ºš°¨ew_•noe>–«r«ÿnwöcñ,‰ì­22{P÷Ge²jìi‚Sf´r3JF´¢/[ʈÚãË‹Qï¦Sæ÷Ußãt©—º5î­¥Üü9<™_÷\u_Í^óÛý3àó€’\Ç’ë_èy Á9_áç7Y\úÏÊó
+Góåaó#N/ÆŸÜF‹³ þ$Š?ïCü㛩àÅ üXð‡âÌ×5ÎÆšÓ7÷ñg†´A§†_P’Å þ¸™Óai&øãj¡ðçU;á/'K£2Ãø㲢î+ã»ßW6Ÿ§Ãø“r¢Ã®ãÛÅßüu1ÇÀ^±"PúX%–6‚@™Õ$'®èÍíßñ*:VmgL”à×Tzã©l¶ÖMŸÔƒ¾>jÆ4_‹LtÕßšvú¬ÑØPXÚǪQåa{ö¡w´Qêuæÿê_uó=NV‘^E{$’^7#™‚ÜÀ×.ï×@<ýüœ®Ÿ\€xØÙŸ^j„‹û_¾’˜â\ÊI¬ƒS\h1™â
+-Qli R¡%ˆ…–(Î<νZúŒ–)žy–Κí·pìh9æ¡;@Ët¡7ÆÑ’—v´tÂδ”\h9Ö
+"Ql RA$ˆ‘(Î<¸]‘¿dMôÄò'q ùKÖéM:Rþdi$.#~µ©ˆ”2@þ\Hþü²yºD¤[ÈŸä?'ýN‘®ËEù;¥ä&*ˆÔ/¼‘ç'xݾiÕ¦Ö£;l*bZA¾·5ØûòCÓÂCgP÷wœæQת®)í£ÙeŽG¸s· ð@—õÀ1¸;»(îæsº_ î¤Ùe#D)ãÆw(eÜ¡˜qãÌÕ#LŠõMŠPâ@F˜¬ \Æ᎗FFèò0FèW›Œ;.ŒÐÅŒÐ/›gÃïºnu`„’5ÂùëbŽy½bDžô¹h…§t‚fÉ yÙ
+’6ÙŸîžn˜‘h„Ö“ ‹£a óõ_©r§§¦JžZM•¢{J•Ž5'U.Ðæjœ–lFK•"ûJ•ŽÙ<^ŽÓRf×R%ë>R¥eLO•âg8Uvê-©rÖs1B̳‡<«¿O›–ᮢ„yÈ€€Å”9[:·ßµ!醎7 ¢.…ÇC”$Uoì±ÍWü¬Ê€±šðx%]ʺÓÒ¥è^Ó¥ûVi¼œ/`6—ìLI—Š*¼ÔdÃKE^*²ðR“3‡t×Òe>ƒƒž.Yö•.sZðÓxÉS«éRtOéÒ±v3/ÙŒ–.Eö•.³yª™c^ÊìZºdýéÒò&*+ÅËpºìÔÒeºèX¯FXéÔì<à׶պ‹Ç(ÉÍéà3þâ%ø£jéäÆÌmp%‹pÝå!9Ñ5Šõ7üÐUËŠ(óô€¿T( K ¢O #t_ ƒx‰ìG‰Š*ÔdƒAE *²`P“3`×bc–Cu ²ì ƒÙª6ƒ<µŠAÑ=aбæ`p9ƒlFàȾ0è˜Í“+”Ù5 ²þN ZžÂLÅ xÆ`§Þ‚ÁU“ :5{ªmSR,ì)Hqï5>ý|AúµQõ·oÚ£‰“{Š—@ɱ~‡·…~Ž¯Í=¼6ÏpT(KJ èS8):7xF!0#I„ìLA¡¢
+
+5Ù PQ…Š,(ÔäÌØ5¦\LG!˾Pû‡ùÔDÈS«(Ý
+k6
+S²¹G!›ÑP(²/:fó,G¡Ì®¡õw¢Ðò4’ÅË0
+;õfË…é ’=Gsú{çü<žê5ä¾Y¸Á|×ÔXMáþX·˜î6{„fÆ?PQ'KFCè^QçÜŠ:`´vuìì|ɨSTA&Ô)ª N‘ušœ9º˜ú u \l$õ±ì u ®½‰¨ã©UÔ‰î uŽµËÔ·G›ÑP'²/Ô9fóøJê“Ù5Ô±þNÔYžÂTExF]§Þ’úzÔ…>§dv¤£8÷ÉP éh[Ñž6¸/K€
+ï
+vM‰C
+•íÂð|¬°­®tîM7`_]3˜âKoŽ/»ä)zÌF{;•^Ð?{êl´kßWÀ®8Nó8íâL:Aÿâ‘q¶Ö5‚+Ö†e(œk}@Œ˜>пâ„=©P‡½)%Êû60×ÛÀÙs…X»­
+,Ù!ºËÂ*˜÷‹²ÄÃF°~n€#~‰Vá'8~€¿`Ý ×p
+endstream endobj 1448 0 obj <</Contents 1449 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1449 0 obj <</Filter/FlateDecode/Length 11989>>stream
+H‰¬—_sã¶Å¿
+žðA
+å
+)û{2¨ej•êÁS”C!?Æn!kòáœàéßV)ëT’É·Ïj¹÷¬·ÓvÙ²“JÞÞâÓ
+³·øxÂæù‚ÇRvI._ðê]‹Dgšké!VâdwÝs³À³/pϺÙ.¿v?°ßÁ
+“S¦Eä5/±¯½lÓ¬øö6úÑöÌZïð€¹ÊѨEÔUd^—ÑSͺ‹=¹1v<IC¨ë½•G¨Ëa%£Êáš›:Cã§5ÊÔý>ÓzoŸù‘÷zvÕuíºi_±q/â¾Áãòµ[ánÙü™h%ÅO‰ÉdûЈKxÚõ¦kŸÅç.Ñ…l—îú‡×®9Üø\eév6Y¾Ó×\¹3½®#öO¶Âɪ}œ¸!÷¦ 'á?Ì©÷Ï+nžR¥H¦ð®ûãE¢­2dë@Î<Fo“RΌµ^­«´âUí*^'¼Š–âÇÎ1Y¼œE¤Û+½ÃK[Áçe§âe®pßÆËPšå%éñ2²v6/ƒŽ—$OÅËȬµÙ8/©:ÇË ŸÊËý µ…æÀ˜d™I~3³WOd¦O$niQƘõí²MfVv
+ºhn,è€æ`,†û‰‰zŒJ ãd:F%Ð12Ž“³QÇ¢ž)`0tAž
+t>œõBit¤OºÈZ:ǸrtÁ :’§]dÖÚjtT]Чˆzc|Ô#?‡a׫gÀγÀÓnvQÛ®’ë‰Éä¦Y¿¬Z„ÃZ,‘gíz³À¯+ rë¦s  Š÷xâž–/ñ÷D—rÝ~Mt 7Þ7ݼwµlÄE׸ûÅõ^Ãb‘¶‡EÒOÅâ £¹³0j¨‘Ôü0©Q †œìaȨCF&rraìXêÓyZŒ¤¾ OCØoù©©/”faHúD0Œ¬ú‚†$OÃȬÍ9s†TƒaЧ€áÀCòs†½zÎ{¯®é½ûÆÒ0êÛwW¿Íá¥öêæþèVÊ7âúæÝõå|³¥k|³ýpó¸u§î-?Ü~¸¿x_kq´i8Ä‘>iò‹¦ÆÂÎànâaœ1ÉQ vœìaǨ;F&ØqraêXòSžvAž
+vª€¶œ»Pš…éÁ.²vvò f8Ø‘<ì"³6ÏÆaGÕ9Ø}
+Ø Œñ°#?‡a׫ç$¿z›üÆ¢_Ô·KXäC\×5ËÍ
+•8ÉÉž“ŒJœddâ$'gᎄžFˇB’'âdQ縟ÊS8I¥9Nöú4œŒ­
+É ÃÉ^žˆ“±Y[˜QNöÕN’~*'#rèIjŽ‘½—ƒŒÜªç0R÷ŒÄ湿À7ð ñÎÈÙû×˶íVk„ÅO C52Ô×îà"ñw]ÜrÜë÷ý^Ÿ’{ñLYîÁŠÏ‡äìp>äÔÀ=VvÜãÔÀ=NÜcå,"Ö‘|XT¶"Ͻ OÅ=؈æÄ|H¥Yî‘>÷"kgs/˜á¸GòTÜ‹ÌÚ"çUç¸ô7roàI–{äå0÷zõDîùDè8ˆÀb/jÙ%äÂs!–ɬ„|7Ëä*©¤SÖø¢b I΋»›KqýêNú[ýýˆ“ü´ò7ÕÀÉÚåFvL
+È‘µ}~ªq~3ÄÏí‹’ç'ÉSäȬ­˜ìBü¤êjg‰ŸAc@x’†e'yñìܾþŸõriNÉ¢ð_ÑRZàГDzÚQÑSÝå^ΆƲM –<<ºfþýÜ{ó^¡Ní\T ëòH_~9ÿæ÷¹_yt¿:ÀNoÎþAÎGjºqBú:Ùˆîê κßý_FK–{ªÂÙ¦_ñ‰Á‚ƒâhPs2·>Ë£Š£÷U!øÊéÃ<ÇàÓf+¦à©Å| 5ðØÀ‡âÊCÖÙÐ'ࣱª€8jKé.¬nGŠ£å‘ÄÑ«æ¯äš‹0ø´ G‹c‰£W¶žÏÃà³Ñ‘8j~«8ð:¥Ÿu¹,Cz£4:Ü5ž³*
+²ÂÇ>›4é–¸F’ÆyºÏ&cošJÔeótG¬„|³ç‰åQÅÎûFoEC¸À|Óf@ì@j|C±ãHo 6¾¡¸òÈtEìšEýPb±³8’Ø5 šÓÅΆFb7äqÄίv¯ØY vCIìü²õ¢ òmˆåŸ»q'Ì·¡ËE±;¦÷ˆ]cbÇ Cxó§ì‘XÕ?·«dõ¶ä¹ë^Ûäù°5Í#ôUéÓºè;ý{¢Á"Ù›¥­ˆ]Áb':»áb7ä1ÅÎÿ®|9ÝXì¬Ùe±C©‚Æ>”*øP¬àƒqå!ëŠØ5ò­¡ØYIìš¹ü4·O‡Fb7äqÄίv¾i|ZˆÝG;¿,=baðÙè@ì,ÿœØ;Àg].ŠÝ1½Qìd¢¦Çí<@>oÎhíO±ºÕò°k“¿„eÄì…q ³ïË/Ta#{Ù%]èà÷ŸƒœØí³¢ÁÔ³§èÞÇÔ½“{P¯¡n°îY³Ëº‡R£Šõ@jÔ±QÅ•Ç«kº7£Y èžÆ±toVÓ驧CCݳ<’îyÕη³È¨”zZéžÅ±tÏ+Ûäu˜z6:Ò=Í?©{£Ni ©g].ëÞþ-ÝË‹Y€zÞœ=½-·ís"ðãÉÛ ûí¿wÉÚùÛʹ\'ñj/‡gIÞ{9¶É¿Êrš|cîuŠÉ÷lR±2gú.ùƒ³mF§ºSõ¥u0E”´§ ¹¡åQÝп—%çåCpCmܤFI;J‚Ô( b£$Š+o×ÜpšÓŒc7Ô8–NKôFJêÐÐ -ä†^µsJ")%µ rC‹c¹¡W¶É‘¸*%mt䆚Ò G”´.—ÝpHotCÇÆE€ÞLýš-Ò¯ô³ŠòÑ‘!™ì>ÚÕú…y¶^%<‘ëw&ÚÇrŇýNÎòöoŽßIˆ§ÂÑ}»•w/WíåŸAhEË£Š¢£ Î
+º/1µEQìRC ˆ (®<x]ÅzAw&Ec‰bCÃäùì&êÐP-$Š^59×ÌÃÔ2H-Ž%Š^Ù&_„h£#QÔü“¢8ê”Öå²(é=¢XE±
+ÀЛ³G‚_ŸMŠt»mWƒØÉfWN'cJ~ùg²ZòvŽreEž.ùºÍ¡MHþ¦¤‚¯BÈ íiB"hyTôïDAÂEAmD¤FA;
+‚Ô(b£ Š+_×D®žDPãX"XS[EP‡†"hy$ôªS¹–RPË ´8–ze›¢
+SÐFG"¨ù­"˜ŸP8*–BZŸË28¤7Ê °`q$a ¡7o¿=Ò¯ü”,7kX÷Îlk»}ò3+é:›”éþ-ÙñYÂcº|uˆ+ƒ ³éžåQuÏ¿èˆE@÷´Ð=èPì@Rˆ t(®<D]Ó=~4º§q,Ý+ÓüFÐéÐP÷,¤{^5t²ÙE,QÐi¤{ÇÒ=¯lS4aÐÙèH÷4¿U÷B à³>—•oHïQ¾étó
+ze›
+•S,ÚèH5ÿ¤
+Ž:°h].«àÞ£‚ÕQ›
+µBýPìèR£ˆ~(®<n]‘Âj1sJ,ô£ £OÓîyD)Ì4ký!úY3G¿Q3£ŸV‹%…^µ#ýª<ŸrÍ<H?++ôwUúi×hRè•mêi~C9¡ß¸ÒOÛ}R
+G0ý†.D¿Q£ŸÍÓ]Rx„_H
+½)û?ëuÓܸ„ø¯àò`—ø-=Žw£CfgíLíe/Œ${X%“ŽD%›¿š"l¾UÆE¦ôRD"4î¶ÛfP­Ó³G}`¤ôÏ~÷E=~ç¶pßý'«è¨™S¯µ>íͼ€Ùö|Õÿ0½e¨¹?<¾uîÕæ‡~_Û¶q0T5¦elõ›¾á!ãÝá'‹‰ÔNÓyg.<;4¯ÚK=O+<O=}ùBæ©‹orššRs}ÒÇe—ŒB—ëÿZ—ºãã'>ÝœÇ]v|SÚèñë½ê¹Mæ·¿éÚO|ѯ|RÏãð™ÎZ}飾ț~[Þ™tøÎ0X7|þ†-–«¤—ƒzîÌòËÓÏßîdŽÿ WÚ•arõÔ®´‘4³ÿQ­žÛñ‡Ÿ…ñd<‘< ÿ~¿.Ê`f]ók×Eñ7è®ÀÕã6Ÿ^iIñ®@*çÏG…›u¥v]„1¯‹(µë"Šíºc³.¡߭‹ÄwÚdË%- 3×E;4Ú y˜][ÚÇu±ò¯‹¶°+â@»·Ø¢@‹¶]et°+|î®`ñ±0YÇ…Epm”z&wçô*ôsA?õ,Žî¼Ýíµ˜Ìæ‹ñt¥[ýÊa—üV£Õá§ïú¬ÍpÖ¡¯éýyèÿV|Ù}¼4¿Å¼²Úó¢›JýeWÀ"¢U…WÇ{´£ž@°£ò;Šw÷3[•Ä
+–ÓV6½£@©È‰b#'HEN‹œ(Îó.í(ªÂ지œ6%gUݦ‹™rÚ¡¡œ’’Ó)Í‘³Ðe¢¦ÝÊi‹ArJJN§Ø¢HýrÊèHN›Ï• 9ªÉ³£Z¦ÕÒ™jòD¥ç-EîQÓ™³Ÿã2:½íyS±Ñ;†ºçî~K³iP;îÿÛ݆ûÓ†w -m¸£mÍvDoCØÿ[úäBôI”>÷Aô- ÒÓg+B¤›µôTèC±¡¤Bˆ…>gZ†~G_™›–ÐgãPô•¥þiæÑg‡†ôIˆ>§´M#êË,}¶DŸÄ¡èsŠ-
+ÔÑZúdtDŸÍ?Iߨ&}RË4}Cz}éêL_â¡Ï™³u»Ùk NG6¬kÛ¦-Së_ã4‹žÔSóÒÖ{>­ÑcûÂ(®[æϨY÷ò}þKcõÒ÷¯˜|tGwÒWý÷›¢¼ô0)bRò Lº7b²Êi1“¶2Ð!‚T˜D±a¤Â$ˆ…Igp—:Ä"»]x:D‡b’¦e1·C´CC&%ĤSÚÕLÚb“‡bÒ)¶(–~&etĤÍç2¹øXØ`娰R)õLS9¤3©d Ü&2 )i»ïô¾öpà=/u‰UÔk ›xqÒò¶·“ļWw_ º­>>é—©z“ý3N–Ñ!K'Q“ÉŸ½êkr¼¥3ùlÄ£<fˆGɃòèÞDˆÇ2£»óh+]$H…GA*<‚XxDqæÀv©‹ÌS óhãP<æ :“G;4äQò@<:¥9<r;Púy´Å %Å£SlQ¦~etÄ£ÍCð8* ó(õLó8¤Wt’Yvî$ μ=;=qmßÔúï^mâdu$&ô1aÙµ<·Ý³4—kµá†sÛ´/ÓÓnÉ“G‘'yPòÜ‘GÏLæéme #©‡bCH…< y(ά.u„Ù‚îBLžC‘—¥·ËÅ¢2¿H
+º,Kž’'y òœÒÆäe‰.3÷“g‹AäIŠ<§Ø¢Bíª%OFGäÙ|.y@»QMQ
+¹“Z¦¹Òk¸+ÎÜUîœ9ûÈÝ}\²vúݦo´]KÔÅIQ§)çpϯõq§Ö:;Æ7½‘§—@y”’%нQn‹iééÏ<]Ÿ­ t} Ql©b!Å™ƒ×¥®/YÑÿ ´q(Ó„JŸI (y ÒÓ]Ÿ-(q(b‹êB×'£#mþIG5E $Pj™&pH¯!0?XztæLÀa§çð™=õF±ÙŸqRE;õÊ´™¹úÅ8w2‚nÕswP cÇ=`ß$Ñƪº;:¾3©(Ê+L¤<jˆHɃéÞHˆH²$ñt‰¶2Ð%‚TˆD±!¤B$ˆ…Hgn—ºÄíémŠHºB¹¾ý‘vhH¤äˆtJsˆÌt™+?‘¶D¤Ä¡ˆtŠ-ªÌO¤ŒŽˆ´ù'‰Õä饖i"‡ô
+"ÓÕ™ÈÄC¤3gë¶?tÛÓ»–Ð(™Dê¡>ìÿÖ$ªït'<Р~¡ƒZزúh¯¿G(¦Qû¢þ›¦fýÒôq’G¯ñMÕoê_ñ2zÓgó§|v×zÛIyæ•’µÒ½£•„Jâi'me ©X‰bc%HÅJ‹•(Îå.´“tÏÒÙÐJ‰Y™2ƒó¬”¡‘•CÆJ·4ÇÊär;)Å
+¢Ø*ãÌñëBǘÒMœãŽQâP
+.—·ù¹cL¼
+Ú¡¡‚’RÐ)m¬`žë2 ¿‚¶¤ Ä¡tŠ-ª¥_A)hó¹
+.>6P8*,‚J=ÓéfɹkÌ<:óv·o^¸w{Õ{Þ]K‘êž4¬ Ó¸SµiÕ‘{Ìßo6Úɽ>£æOŽ;Õïþ§‹ª¯Ágü¨ßøZ»ýú¼Ûì6¿ÕŸ¤¾žqxê‘’‡ìßÝS·å¤–éŠØÀ=£T6Ý3¢T´D±Ñ¤¢%ˆEKgŽs—zÆŠ
+õôŒ6¥eU‹j––vh¨¥ä´tJs´äÝkå×Òƒ´”8”–N±Å2÷k)£#-mþÉžqTS”@)¥–i)‡t¦”ÆG_§èÌÔÃñ¸ÓSÕöM­ÿîÕ}\FÝáÀŸnt·—Q·GÚ1œÔX>RÎáž_kbqøèÿ9e‘|ò!ù$*Ÿ{ ù–A‚峕>¤"Š| ù@,ò¡8s̺Ô'–ùmêémJ¾’æt1S>;4”Oò@ò9¥}”oå—σä“8”|N±Å²ôË'£#ùlþIùF5E)”Oj™–oH¯éósXz tælÝö‡n{ÀK<ýö9&"ÞøðØœ;ÆŽ;Ŧ}QÜYî8ùÑmºTÝŸúµƒë“·”Ç 1(yPÝ›1Xå$fÐV@
+ƒ(6 ‚T±0ˆâÌìRXdô_bmŠÁ‚šrƒvhÈ ätJ»šA[ bPâP :Å«…ŸA1hóO28ªÉÓ
+iYf4XK[hA*Z¢Øh RÑÄ¢%Š3ǹKMcžÞ.<M£Ci™çôñL-íÐPKÉié”vµ–¶¤¥Ä¡´tŠ-V¹_Kiió¹Z.>69*,‚bJ=ÓbéUb
+˜Z¦û½WŒÁV%Ç6ê)]³|OkE fÑ_¶ƒ$ö~è×f€U=ÈM-8æƒ6^ÉI<ZGïyìƒnH7fp-øø"úÄšN|d¬<«ÈXɃëÞ‰ÈXzH OGj+)HÅXcA*Æ‚XŒEqæèx©#¥_x:R‡26KiЙÆÚ¡¡±’2Ö)Í1–+ýÆÚb±‡2Ö)¶X~cetd¬ÍC;* +õL;¤3åÉ*uMF[²ï~ä2Ú½vÆIÕ{ò•&ñ9& ˆP:Ü©¶ë5«;Õh7ZµáÏë·~wˆ“*¢Ú¦çÝš'Ï2Oò æ¹w2÷ÌÓWÚÊ@_ R1ÅÆ<Šy óPœ9Z]ê+“݆Ø<‡2/¥aÎ}eê5Ï Í“<yNicóÊJ— |ól1È<‰C™ç[¬*¿y2:2Ïæ³ÍÓDòÖë¯9Ql‹øWámà!)þ zßìtnUª2}»:sﻣ˜¦Æ@âtõ·¿{öFNd!TÎKT–älò«å|½éü;(ŸN5,_—ΑoÕÉG%ËgíÞ'ºÔ›í_?ƒ8ô7ÇÝÉ{
+É¿ÔûÁ7Mù'?–‡²ùÅ<z{†°>zÏ|˜ßýBÿ⎾-ÞsùVò¥hŠ÷DTçFÚhäן
+~Ç)ˆBÜ%þÙ¼Õû¾©vü„»eèGÞ•…˜A½ƒš;eÐúäAò"iŠ2hŠ UQÜ2ReÄÊ Š °M1ZÑ‹›¢ÆŽŒH¸lbSÔ¥ƒ]î†A{´¹ ê0€Á.vÄ =l¦£ v«5wÕûÓá¦ØM5â%bt1Á"Ú»÷B—Ùׇ1»cwÒ–ù;·§S‘Œé2”•÷;?1GMy·«ùŸ¼mÌ?©ø¨gNÛ˜7ø¨ñáÙÝ„
+î>ŸjÜ×Gïù?Aî?¬ÿà×Oüü ýSïÛãs{è‘$üÏÞçµybŽ­’èßë§çÿ~{¼¾rºÝnMÜcÿ2†ñ²iÊß#ñ†jrìŸNæÅƼx- ç2WËy_ á\Ù˜Í9ܺxPò,!ì°ä2´9N3“¡}ÉAª’£¸•¤*9ˆUr‹ähéw’›ÍÆMVbW’'ô¹Ó‰MV–†MVsG’[£Y’/'4Y5Y]In ›Eé¸äº:j²’PòÞL#’ë,ÃýµKçô×äÒ_#|½»À‹Ê½´Þì¼ÿmgÞÃÂã–z໡†šûå¾d3¶lû¦1Ïëjx·9½cPgÕÜigµ>”ŽHˆS,L:+HU:·ÒT¥±J‡âÄ2êVg5bé$v%]Ì,M”N–†ÒiîH:k´ÙU†AÒiìJ:kØ,ZŽK§«#é$ÿ t½™F¤ÓY†¥ëÒ9Òeé–#ÒY{Æ ÕÇc±U½¼ÚPn’¬`±/ŒtEµåÊZx'ó°mXÇÒ¼·‚ØéMƒ°ÓÜ)vÖǃØÑšqˆ±“É4µ°©b‡â;*v VìPœXL]-ý»pÕ–Z€Ä®°‹"~2 ;Yb§¹#ì¬Ñ®±»Qëd„Æ®°³†Íâp;]a'ù±ëÍ4‚Î2Œ]—ÎÀ.Î;ìÂÕvÖž=Ю¹½õÀã—?£_©©ï5µG´¥þ÷ÂÛñQþÕê7ïŸ
+Û7ø𙟽ñ±Âèr,~ÔGsbÜÅ~õêíùŹûï[þï ƒ· šzó!45ŸŠæ•Öæ@*éŽôB™ôB*•(n©©R b¥ʼn…Ü^Hck¡¤®  Iìe˜ORVFNjìˆIk°¹LÊ,@IM]!iš¡M$uq`¤Ä$²7‘#"u’A!»pNŒ.m0ÒÚ¯Oå«·eÕä7n¹75ÏÚ4Z÷¸3r7ôþÜðS±óø‘º#?p²¦¯Ç~üÚ–HãæÝ‚†6Ž–üºøD+È ÞY@A6Gk+ ‡!Ÿ 9”Á†‹#C” A(‚T$DiÒ7ìFe\Ò÷7FI9¸\ÑÓú¢,ŒÔØ ƒÖ\s”Q€‚š:RК4‹“Qum€ ÄC°76P4° 'ØVCƒ 1p¤$Z»õPsS£‚ÈÔÚ2¿áFW+ß$U[ƒ(j_{ß¾ýÄ¡ï=ÍëŸc"BtáŸÛâgN'úÚÓzzô4v‰žõÙ‘y+úZá(c @
+y(5äPÈ©‡Ò¤ÏÕê—ÓwW?I‘—/ïãå4òdaDžÆ3Èkï’aózƒùwW7®Ø&kÛ4hÛ°h7æh%Ó•€dL²ñAD2dP².œÓæ—6—cɬ¯ÑSÕëÝ™¿Kúc·òL…Ût‹›bf~Ì›sVx™)p§…9‡•ûÒ<våoø›Ùò¥·àKc—|Y˜îˆA¾èÒ-qc“±†…/”¾@(|TøBiÒ§çFcË´Ã/Iñ•å¬…òêFË—,ŒøÒØMc³æº4¶”ÞË3¢^Ôª&£
+endstream endobj 1450 0 obj <</Contents 1451 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1451 0 obj <</Filter/FlateDecode/Length 12011>>stream
+H‰´—QsÛ¸…ÿ
+É3
+ ̪ÜýsÆ"±¨5²7µƒÆäÍþ¡ìu… ÚÔYÍ«ªÖ¼ Nx—äû.ežU†—uD³¡G<-jøàyêå¥xZJÂ<žú¡Yž’¾O#kWóÔ›áxJòR<Ìm¦yJ£s<õú\ž2( <%Še)y¹ÌÒAÉR‡Ðf¡Q¥îR“´¯‡n Ÿx=AÐrÛC*1 îóSªjŠ´C8(’¾(ãùç X6Y^_âž 7‚Œy²1*‘“Ù•ÈÆÈD6NÖ“Ά‘MÃf™HŠ^^Šlº;3Éæ‡fÉFúBd‹¬]M6o†#ÉK‘-2kt=M6#›×—HŠ1>)’ŸËtÔ+’bÞœ¢¢šà\T·û¾]c’[¿îmÊ[oäÙäØcÇ'¼Ü û¾vöžíƒm°Æ¶­™Ø
+¢æÃpÃß k~ÃÖÝþyg‡ØØ¿îmÛµ*~}Ýw—§Ð㓶!‡OÒÅg¼È8|gò‹±Ñ„»” †ŒJøäd‡OF%|22á““u¾·‚an 3Ÿ^^
+Ÿ9|™ ýÐ,>I_Ÿ‘µ«ñéÍpø$y)|FfMÁ’ðI£søôúÃÀÓD0$/—Ñ9¨ÿtF5»ƒ ~Noò¤ÝÇ$LU‘lw½ ‰ðqo“#x°ìì~GÀ_ªL²[wŽˆˆ?Þ@ m%¤/ŠÀx¡pVȉé1 ’Q œìȨ„@F&r²ŽàõV‚Tef&¤——B ì²rn‚ôC³$}!FÖ®F 7Ã!䥙5%gÎ#Fçèõ%d`ŒOäç2õ ꃲœÀ`T·ûþØ=Zšm¦M"¾Ûã+"Bd‘Ääβ áĤ¨Ü¥>"ɘv´k8Ú‘¾(íâ5ÁÑ.ÇíÄÓÎ;c£í8ÙÑŽQ‰vŒL´ãdqê­À' X<í¼¼í¤²Ì¤š¥é Ñ.²v5í¼Žv$/E»È¬)‹iÚÑèí¼¾íc<íÈÏeÚ ê´ƒýK´Cð±´‹êv—VÉn³í]º{?Á…-~?¬-Öú£ýÕ¿î^1Ä*Ue²‡uÑöö‹kÁñ€w@R|÷1Íe²ûûj-6/;üØtöGHÚi!I_”ñ:â©
+˜6žÞ“•ÉÉŽŒJ„dd"$'ëˆmoäANl¶„„=dŠ–i±\4M‰;©ò„d6¶#$9s„ œyB’µ…[ ™+´i& If-!C¯Žäu)BÆfMYOr0g ºs„$w 24Ærð„ ÜxBµº†º©*žqÝ îwûÎk£^L;üù&‚PÕmo_z·˜œ¸·µ íƒek»~²wwßPî6¢µ]®mÏûvý'^¶I/~±÷®Û#ÂÖvºsã|NMÒ}ÝíçóH•êvMerªŒ*¦*S—˜¥=+¿îwë]m^¡ÿ{®½
+@ŽÀ2†m¢rT_‚é¿·zyñÂ`gêÖ!<#ÙñÈcTB';ä1*!‘ yœ¬#X =Bž‘.ïò†àìzñòR‰×äY-g"Ï= oÈìy¤/”x#kW#Ï›!äÞ|òH^*ñFf©¦‘G£ËÑ$ò¼>7ñ2È <%ŠEyqÈ;½äUáœ_•éòj@žl&˜ÕìËG˜á[‡°Í¶´Ñu½ÛÛ ×­O¬ÛMÓŒöG9*ÑŒô¹Qn‚fñœs4ƒmŸKžfÞQìxš1*ÑŒ“Í•hÆÈD3NևΆѬh ༼T€+XŸI3?4àH_(ÀEÖ"šÕh“ËHžfÞ àH^*ÀEf©§iF£sÎë?àOIÎÒŒ¼\pƒzM€+O4›zCjvß÷»Í«a©R€-a³¾“ŠÏ÷Ms(éK·~j]BƒÔ¶=¤MòrÈ:—ãÄÇÛ»»ÓîñÉ%@xÉÅ)±/º¶u»î&©HûŒËx¤ÏÍx³^pãUÄñ@¢&ÒžwƤ=F%>r²ã#£™øÈÉ:"Û[i/¯]Öµ|„db>bg ¦½˜›ö¼3ÇÇÀñÑ[[*íEÖ®N{Þ¬åcèÕóÑ{],íEfMõÆ .™³| Ýy>zwsÓž<76@20–°Œ$?ÀÈÀ 1’juUâkN/¹So¹QÝ·U ÉÜCR;H®lûT'møŠW]ã£ø´øãOËEGJ¼x»Ùì»^<ˆ/ô`¥¨·M•GqëÚâ?Ûùzkï‚°™l1g^šUªÓPÅ+ê¤Õ©Nz¢NZfyMuzjûÍ3VR±µ´íÅçÔ$·ïÅmª*°£Ý3lñ­ï—®‡§(ùÁÛw'B"yææäY'B¼o¸¡À»ùÁ;·×ãþD`T:8ÙŒJ'#Ó‰ÀÉþDà†€û¾@‰yÞ®//u"¨j<óDðC‰yÈüþD }¡!²vž˜õô‰àÍPb>½9¹ä¥N„Ȭ©8sþD ÑåhéDðúÜ9 O‰bOòâóé%±
+çü:ÊéåÊ ÊE5³¸íÛÇÑ%Þ#ÙÚC‡u܈۵…™å›ÍÂíqkŠž€x|ÂoøÀ¸Â¶–°`>Âg é@àÀH¬ÕžÀHú¢`Œ—F\ÌFʌJ`ädFF%022‘“u„´·¢²4îE£——£¬3YÏ£š#é 1²v5½Œ$/ÆȬ©¸ïÁH£s`ôú‚1ð4FòrŒƒz Ë« 0F5ûÐC
+ÝQwú¹âÀ­ƒ‡ˆŽ¡—~-õ;vôÒ©íï¦Ô܃‡ÄçWšmÏ~×èçoýmèˆïÞß‚•ÿIýžh¥êQÿ{aùĨ\ŽÙÅ™F%F'üÎn3jþØÉUF3EÚ*ÇŒòdÒ/e0f¤Â(Š{FA*Œ‚XEqb
+Ç®zqž.Òp"£¼ôÀèÐì™QÉõbc´÷Œ®ìŒò0Âèùþ¨gTbW½Ø6_ÅvFeõðâ$
+£œßÙ‹G3ù dTfé=ß
+ãs>¯.ÏuÐ⩱e¿¨ó[’‹]éý»Ù 'zúVi!èôWU©*RcÿªƒG4t`Ûê#7ºS«Ø€å?¹ˆ²‹ýü$ŸÚ!-ä™? D^/–!&ç:d&¤BŠ{ò@*äXÈCqb`õné ò²HE¸9rìª9f‰ºæ'’ÇKÃæ(¹£æhŒ6›<5G‰]5GcØ|•ÛÉ“ÕQsäüÎæ8šÉ!y2Ëõæ8¤›ãpR{ñb yÆ–­«VßöÖ›Êû»ð·§]Ü6:¨Zï+{§ ¬5k¯^IGì·ºå}i릭»ŸAlizrù ¦'¹Ó¦gþ8{y¤Áìñd éTØCqÏH…= {(N °n5½4\Ä–¦Ç±«¦—Æ‹xjÓã¥aÓ“ÜQÓ3F›ÍƒšžÄ®šž1l†vöduÔô8¿³éfò#ÈžÌr½é 錦—¤g÷r‹{ÆžÚê¨ïM÷›þµyéoYë=|¯Z¡î‡Vð'ýß«÷ž*™ÿŽ©T!ÌýêWò™¿x›f¯Ó²Ö€VmXD¹²Pý“|jý›$¢±PÄ,\ä–"È“"RŽˆ A,"¢81,»Uã•úÖ¸r쪪ó‹ è/,"/ ‹ äŽŠ 1ÚXÄ4™ "ƒŠ Ä®Š 1lFveuT9ŸZÃ÷ƒ ,Žó¡Š2Ïõ28¤sÊ`qVqeQÑØ·§ý¶Ö
+–~lö^C/B¢÷r§ÿ¿éª­÷%ˆ–þ?žƒ¸t<~/µz*í ìþD+¿iƒ(ÂÊE…ê¡äNë¡ñÕóEzÄ®=Œ!Oê!HC÷‚T0±`ˆâÄ`ìV=Œ–‹ÐR9vUc:`"†¼4¬‡’;ª‡Æh³1äaP=”ØU=4†-ÂØŽ¡¬Žê!çwÖÃÑL–z(³\¯‡C:§Fg „'8÷+ºãm›S××¹W¯o„ôª÷L7»ÿ –þ£:ðsð°Ä´É%‚zžäN{žñe mñr‘ZzOzH…6÷´Th±Ð†âÄ@éVÏSg>L1m»¢-\ªE'ÒÆKCÚ$wD›1Ú{Ú
+;m< ¢MbW´Ã!ØH¡MVG´q~'m£™üÒ&³\§mHçÐv–-¶ÈflÙ3ÝÈ~Tˆ…¾Fl­ÎµwìÊ×ÊK<ÚÌãé@‡¦íôóæzGÕzO§ë{ÍÎÉõ‚œ“Ü©sÆWƒÎ©Ó›X*Oœ©8‡âÞ9Šs çPœBÝp.]ÑÏ:'±#çÒ•ºP'V8Y97änœ3G›[ádàÜ;rζˆ2«sÃêÀ9Éïsn<vn˜åªsçÔ}…3÷l}:œ {ñ^‚(óOTÞv»¾¾5ßê®tÝOî¯Ë =þÐw¬e»=öÛ­ÈÏ,i€ßuñkè³ßeGŸ]Ó¶«éãTEì[£÷™šd§?³ixë Zúß˶޿Ú4®J é»ÔÔÜ?¨iH?¨©LvycÙkŠRÖÆZS”²¦(fMaœ¾[úBSuÁ-qk”Ø•¦êÒ+&¶FYj*¹#MÑ MS3²kÊà M%v¥©1l!êYSYiÊùTMÃ÷ƒ ¤Žó¡¨2ÏuQ‡t†¨ñê ZdÕØ·Gu’´m«M§µköžFPéê«EÕCêWúJó· ¿ò:z]¿ÕkNúÉ–Ò’^骭÷ô•^û—úü‡ ñõõi›æ@~ Ô‡êÛ–¼,½Q¿r¤# ¢r5"E%wª¨±gHQâ&ÂT&»ÞIQ*Š¢¸W¤¢(ˆEQ'†·:i¡N¥“r<YQ h‘-ò]_ '¯á”|"œÀKë$Â"/…X”x"‹
+ôä­ùƒüQ‚‘EõÞû°þ¬[D¾´½_:û‹®œ•[¡ÿL¯®×ÕñXk<÷¤Ùº+ÛŽþÕ|¤U ý¹?Vú‚‡C' ‚Nò©ÐYx36…x‹®ñ¦~E‘¥$ò< $‚TxCqÏH…7 o(N ˜n•Ä\Qa)‰»*‰yJ¿W)‰…µ$òÒÐ:É•Dc´sIÌÔÁ4&˜U4äa†»*‰Æ°EŒ,)«# 9¿ÈÑL~…”Y® 9¤3„L’³™…HcÏ4lʸ•¯µ[«síõÌí½ß‚håW‡Jµ¿Ì¯;–Ïûäþ‰þ|ûVµZJuìZ‹wÔÝŽÞ»ÖoR>Ò4P®*d äNËžñýóEv½ì±bkÈ“²RÑŽ†  A,¢81»Uö²H Š5äØ•†Y²HÉòÒPCÉihŒ6[Ci(±+ a‹8µk(«# 9¿SÃÑL e–ë霾˜†K‹†Æž=«¡ði ÕþÑIÿðÑS¯&ý«å¾|­Þª}G¯¥ÖM®¤›äNu3¾Ô-§5±n<èz ÝPÜëRÑ Ä¢ŠÃ¥[]/¥ëƱ+ÝÒX]Þu㥡n’;ÒÍí½n±]7é&±+ÝŒa‹$´ë&«#Ý8¿S·ÑL~ u“Y®ë6¤3tKÏ]/¶u=cÏ>©|¤[ÓÔßwuI;ï1(|UìüVyúOÇ›®æ^×è£Uîý¢¬GGèæ÷5ˆrý¶r|©èO©QK•¯t¨þ;ˆ" ¥\pJÉBil „2S–Xj Oj HJ÷P‚T ±@‰âÄ îV ŒW‹ØR9v¥:¿ñÔÈKC(%w¥1ÚìÈà (%v¥1l‘ܨ²:‚’ó©P†ï´ æC,ežëXé ,Õ!‚e”Z°4öí™îdU\IT´=ª;ßfßUÔûüÿ‘sÝ¢&BMr§¨_¢–¬ÔuQãÉ@û© †â5
+j ÔPœÝjÑR}KŒÇ®PS×U4µýñÒ5É¡fŒ65¡&±+ÔŒa‹ ǨÉê5Îïl£™,÷¶2ËuІthgÏb‹gÆ–‰gç{[ÚÓ'oÓlëý+íæ‘Ž€œÉe8“Ü)gÆ7€œÅêRµt4ž t4
+g(î9©pbá ʼnÑ­Ž¦Nwhéh»â,¤—'rÆKCÎ$wÄ™1ÚlÎxęĮ83†-’¥3Yqƹ‹Ž6 w4™ç:iC:‡´‘i¶Zcß®u´uu<ÖêÆ•6ôײ&/vJ=ÿÔV×÷˜}“ëù&¹Sߌo}S§5³Ôµÿ³^Ýi#Y€ÿJ-K 2’J ´tH:ísÆn“ÞõFe‡36xdÑ™Ÿ?¯Jï *Ö-ÄqmÖÔ£¾\x2P×@*¾¡¸÷ ¤âˆÅ7O¦3uÍT–è›Ä‘|3UI‹NóM–F¾ yßüÑÞûV}“a€oCÉ7ØÒ áz߆Õo’¬®Î¤sdÛ0˨mÇôÛòÅ`[ºÄ¶ù{¶>¼¾îÛÎ9¶T·ô}Ûߺû™dK½oÿ3#Û2½³Ç¶{^»¼yp†¬“¬Ô›dVèÃKÕ_ºmþ±dn“YÞ×=÷Œµ¤UìUeì»ÌD$}0Å_I’- Ã=ìò˜vú»íLéËÇÝP&ï†(e;aììD)Û‰b¶ÆÆSïL74t{-q7”8–t£-'vCYÚ)y$;½ÑÞÛ™‡íäaDzÓ¶,Ò°²:²“óÚy2“Π2˸C:Ñξ :XH§·e«}2›ë–
+=¥î’™!ëÈM{hgÿQû¤Òö¸º¿º½ºS«cæN¯)ßö‡*íÞª}³ï¥làN{pﳺ¿§ZÑ74ËJ\0‡› !)yT$½}AHšjN«a$y²ñ‚‰RAÅ=’ $A,H¢Øx¼+˜%M(˜ÇB²œÓè’àw#ÉKC$%„¤7Ú)’¹ó€.Hò0I‰c!é [YIY!ÉùT$Ó÷ƒ Rž ¦!”2Ï8”CzAÉ4ÙP23ÒÛ·Û?'³ŠžåF¯éûVëæímK•ð‹Eí`Ë`[Û~ézâõW[+¡qr¯ ã$jœ÷‰ŸãÆÑ…Š OŠ HÅ8÷ÆTŒ±‡bãét®.,Ø8Žc· ›.h/ “<’qÞhïC¿SÙ8'q,ã¼a˵T6NVGÆqþÁ"x2S Ê,㾠龋`Vxó¶ìŠZ¡Ý?[û1VÙ
+XØþVØ
+HüQ$-¾Î¾¬~W¤`ª¯’L¯fîUê·gûà^ò3ÉZ]QÛãtm=üAåp¡_í;ºc¶}Ú„þîÜ
+«ãªÆrÇÜéíø7̺Ê]Št•<ª®Þ†B]K«*Ö•' ¤¢+Š{]A*º‚XtE±ñ\<× çuå8–®sc¯õiºòÒPWÉ#éêæéjì˜&¬+ƒt•8–®Þ°e†c]eu¤+çÔõd¦€®2˸®Cz®ù|hiˆWoÏVôï]Al›­ˆ™­ˆ„[ÑVÝkE£ì•p•}kïÔ–z¤=É•Ë™eõ7"÷¹ùŸí ê®~Úîžq»´<æºû±?¸7Ußû–zý )·"Rò¨Dz›‰\КÊ“
+R!Å=‘ "A,D¢Øx¸+ é( Ç"²È?S (/ ‰”<‘Þhï h&’‡ADJ‹Hoز˜‡‰”Õ‘œÈ“™t‰”YƉÒKˆÌŽDš
+]»¢·¥i3J¸;®lò Ôw{RíšçSÓ©ë/6;öNªŽÇoên­ìë\ôR»·°í\EEnÊý‡Ü”<ª›ÞNA7ME a7y2P$A*n¢¸w¤â&ˆÅMO¼sE2[~ÊE’ãXnÒ­›§Ý䥡›’GrÓÍs3›P$yä¦Ä±Üô†-‹*즬ŽÜä|ª›éûÁ<OÓÐN™gÜÎ!½ÀNs¤3Ðém›Ð!ֶͦs†‘“{eB”ÙÜ^e¶—i“[Ñ&yTÚ¼OiË—t÷cÚx2P A*´¡¸§ ¤Bˆ…6¥s•¾ö<P 9ŽE[ZÙ¯f1‰6^Ò&y$Ú¼Ñ<Úò ´ñ0ˆ6‰cÑæ [ÎÓ0m²:¢óV“™•PfgmH/©„Ë£kÖ¼-ƒ¬å=k7Inôg:!Õîéš®õ¸}:Ð0ݶ{¶'6&¿‚'7Oò©à˜ó>d.³™ãy@ƒ©0‡âž9
+s æPl< Î4¸¼¢]Á NâHÌå´ki:9Y17äq˜óGó˜s?zAædÀÜGbζœçAæ†Õs’Ghp§ƒÁ7Ì3JÝ1ÞàÞÇ¥î¹q¿Cß’™ÑªÉ¹¹îš–m“l¡÷‡ÞÁÝ“rçu]c^^ÝȹáÎÎ yÌbç@(^º  Š'“;”²x0vâ¡”ÅC1‹cãYu¦ØåK»ãXâ-í¢Å㥡x’GÏíbñx$žÄ±Äó†-ç&,ž¬ŽÄã<†x'ƒañdžqñ†t¢xº´rXÊ
+Ê<ã
+é
+šì¨  0èíÛ*YŒ3hzÿ{°O›ƒKvOªî’ŒÚaÛ8Ý+7Î@û¬wpì[`÷äNBîIµzŸ
+HTdÈ“RŽ€ A,¢ØxvëóŒ
+
+ÈKC%$ 7Ú©€E1A@ (q,½aËòL”Õ‘€œÇðd0, Ì3.à^ÒËAÀ´
+èíÛåë3ñ•ÒÓÜè5õ7U¿¾>o›7)ªyŠÔ+ôFÝ­•Ýä‡}_ü¶»`Í“Ûq'y„šç}¤Å§r9Ò Ô<žÔ<
+r(î‘© bAÅÆãé\Í+R:#Çq,äŠÜ^mÓã¥!r’GBÎÍC®œ€ƒ“8rÞ°å2#'«#ä8ÜÉ`9™g¹!½¹Å¹e
+œ®H’y¹~i”ë£{äM’ý™ž¦úÆvÐ5]+êKÝÕý+þO{ý5·‰dQ
+éeœøÛ€6p[w=n»ÚûÐÕ•÷Oå…¦îtÖðéÑ{lÔ›»vÐO¼/T÷2¿UäuÔ©:ªv˜öGQC¼Q
+‘¥úñd úT°CqH; v(N ¦nU¿4$"0v»ª~)4V¿Èj/ “ÜQõ3F«½—/¨~< ¢ObWÕÏ6Ìsp󉆲<Òówv?c¨Œ$ ÊHó éš
+XŽ F1›êûQJœîl?jïK×òó-½¿W­îмèÓ¡§Ük ÚÈÝáü_õAÈžÜ>ˆ=ɲgœ ý¤óì‘‘¥ãñd ãTØCqÏH…= {(N °nu¼¸¤Ocö8vÅý¾tí-c—†ìIîˆ=c4ƒ=Ý@Á¬ÂƒØ“Ø{Æ°aJ²°'Ë#ö8wQ'“á(óÌ›7¤kJàH^l!ÏØ·É£*=¦jã¨ËiÏžƒÈ÷èñ¶QTê3¯Z;ï@Ï°ôï[×î”w}!¼Ðtçú¯ Nü³:ð¹í¼ßÔ_éÈÐ×/·t5yÛút:Ðß‚¨ôßö\(!šró!4%wŠ¦±Eͤ$=0š<èŠ 4QÜ£ RAÄ‚&Šƒ»[]1*hÐ šƒ½ý·p< )ñßDS߶ Ñä¥4öMÉÍ%£YÐ4F[&#hŽÿóìÑ”XÐü{Û8¢i ¨˜ š²|øÓ¯(hr> yc<àåd(?†`Ê,=˜cQȧ?úæ’ŠG1S‹˜Æ¦=¿Zžú¢HT¾4•n†­ç‹÷]+Wuu§í|m÷={S&ˉ’_i•úåp:wqšõ_ÚöðþZŽ—.ˆ6¾N¹³Ÿ~¡Sr¡sÁŽÝ¦ÓØ+Hg\К˜Nž ôM
+(îé©Ð b¡ʼnޭ¾IVjé›»ê›aIv,¤“—†}SrG}Óm5< ê›»ê›Æ°agv:eyÔ79_Ú7“¡,tÊ,ó]sHWt͸éŒ,t›öeû‹ê›¸]Ûv{µƒ$[ì÷Zž©NæéGÕ3·×ª äû;ý;ÂùGp—éû{pW` å¦B=Rr§=Ò8{ˆ!]¹¥Gòd G‚T0Dq!HC †(N ÆnôÈ’N×HNµHÚ²da‰ä…Q‡”ØM…4æZË 
+¤¤Žú£1)˜[ ”ÅA{äø}åq2P™­ŽC¸¦9¦#ÌŸ±]OÍî¨nÿËé§âH"tµXùT-U<«÷«³nõë›öÑ{ÖßPõ’”|Risè+buô¾=*S¿>úY¢Ü]  Jì²;E 7„‘çšo‡ dQª9!kRƥɔ±½°Èèì`-äÔQ+,ÔM·ŒB^uB‰ÝTBc®µò( Jꨓ…¥•BY´AŽ—–Áðz,ñp2–8”afëà®hƒ‘¾ëéEX` Û~ý轪æV½m‘h^tÇ;·QNÂÝ%~·÷>oï>m>{U³÷ï>Ñ+â-¢ûw{â°ÿøI}RNnÐü$vYüŒSEÊ•í DŽÇšo} däPª‘!#RF¥É¨}/OïCÜ÷8uÔ÷ò íì2äxaÔ÷$vÓ÷Œ¹®‘‹­Èñ( ïIê¨ï“†ÚCFN}ã÷õ½ÉD~„€“AfûÞºï{Æv=]¼¯=¼u«N}#¯JÿGÝxûú¬ßÙ)êκ’ºê^xù~¬5‰O[‡“;t8‰]v8ã,‘ntEd¸ÂñXó„¬Jµn dÝ@ʺ¡4™Êt£ÂmZV8NU¸MJ+º4zÝxaTá$vSጹ¦ºÅ…š±°êÆ£€
+'©£
+gLJº¥VÝdqPá8^Záæu›Lä§H7d¶¾ áŠúgƒnaŽu3¶ë~ØV?®Òóªâ+â'Ú˜žh#ß{«» ÚøÏm÷”~ÕègÚÚSÔúötéô jô¼Ú¨—gïMÁ¡9{OêÊùð¯ JýÏôê ðï·ý-;õÇåüeû‚G£Ül öIì²ö”ßdz0æ ]¼ÆML“3‘º]¯Ã”îÓÉ=šà@¾ÿû
+endstream endobj 1452 0 obj <</Contents 1453 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1453 0 obj <</Filter/FlateDecode/Length 11842>>stream
+H‰´—Ý’Û¸…_—ä…h€ÿ¼´½“ÝI9®ÉHÉ^ì¦RŠDÉJ4”—âØå·ßn
+%QERf±¾ YåR&¢¨T”Ä2‹ˆpñ_}‡2wH¸¥•ˆ³(O*1+³¨T‰X¬Eð°˜?êâ‘Tiƒ%TIáö¸ŒT.”„ÁE[‹_E#Þ-\78vœâØ3*óÕ·h†´ci<þfê.æP"Tq‰TáÿDüÓœˆB¤‘¿¡Êƒ8œ©@ây…GYø¯Å_ÑðßÁrÇQ^ö–“A·hÔo ¾ûÌ]0³ 1ãgîø*Žª›IŠ+…²+…dú{èÔŠ+)§ýÙw2cœJãÂ}&X6§*E5f’³Ó$“ì®ÃÓ'?‡eðô„Ó OŸêùKÄü_ã<¶añ`whD¨’
+€i)rô§`1Eeyz¢ÈÊ(O{9)q‘;ò;wËÁsÇÃS‰ƒáÃæ*ªâþac|AÞzgUe'gàS¦ni%¡c'k™^Ì#­]83ƒ]XÃF>…i0“¹ŒK´Y]÷ªÀ&3qåž×¬À¾ör%ù÷·ÑŒvaV–IƸ+Swcy6‹ªôÜ«Â[Ö¬=ß”ãÌT ˆ½—Xf^+ªÂ­ËÂô¸JÐøm+f{iœê=_l43òEÓÞïÃY,ÃY´;<Ü„³8ØÁö[…³Â]¨`§¡xÀ¯ ~è]wöõˆwÔúŽGÐÊVËzˆOx¨uñ6T©©°zÕµu!}â[Xâ/¯aì?p´‡!_ú \С&ñpçôe+ãY{kÅãVÿKôÀcâùãû˵’É$:M@’-…Lê3½Ž½¹’ãROÏ%õ3SDq¤¹z°ÇpÃ2J¾2*bóaŒybZ&ø{àȉÙàÍö¡ôy…µ*£’WU„.yœð*îÉÉ8*r^N<:_”>c|ZÂ?žñVžŠñ™DHc¼-Í2žô‰ïYó_ Ír˜ñÖ Çx’§b¼gV–i2Ìx*Ï1Þê?ÈxÇDOŽñäå:ã{u$ão'æ㽦Íß<AfÞ5dáA¨Œ
+ò(æÕFðÿ&>|Ö‡Ç00Ãä¨@F>îš­ÆÞÊ|ÅkõÍëºYaŠ­Áég=ZÛí<Ø
+}A³Ò#6Ç ÃIÐÕFÐZYvÒäØIú¤ìôºÅ² _ •¹»E™ØȨÄNN6ìdTb'#;99ñ¨w+6*\ùÄNØ\0²ËÎ8‡3Ó±3†ƒ±±Ñ:3ìtœ;­µ©ØéY»;6Z³š®WËNëu2vzfÕ0;Éf§kϲÓÚËNy鬨ã,`ùI~€ŸŽâ'5ë.~Æ=?U:
+ôÑÏ?Ã
+Œ(çõíí~·m°q/á, ê¦Ó/±@¼§ç’à#,±[[A'DÉŽv
+âHŸ4ÄyÏÃP„8ëŒ qŒJ„ãdC8F%Â12Ž“M·B\ZÁ|ˆ³òT!.S`}$áli6Ä‘>Qˆó¬Ýý’kÍp!Žä©BœgV–¹&•çBœÕdž¸!Â9Îx‘ŸëA®Wïr‰ƒ¸¡ ç5_tm[¯Ìì¡ú…v$ºOxX ͺzÙìš­£®vËWûæúEÛ¿¿ÇÒVâB铆<ïyY+Ô@ȳΘǨ„@N6dTB #99ñàu+äáÕ!ÏÊS…¼TFùØgK³!ô‰Bžgí2äq±´f¸GòT!Ï3 Täò\ȳúØÇÐÏ1(äåzÀëÕ{ÞHüyM{»^ï®ï©nÍɵþ·´¶Zš Î^ÿª"hÃ$8¬ê5ê¯m}Œ€´¸Hú¤Ð{`–)ÞÍóÏ:c" £ÿ8ÙðQ‰ŒLüãäÄ#×­k^`Í?Ø 0²Ë?ØÐÙ„0F´äŸuføç8#þYkSE@ϚǿbD´f5ÿ\¯–ÖëdÐ3+ËâÿÈæŸkÏòÏÚþ9¦‚˜åyþ9NˆÔ¨ÿGüóšöجöHƒ×ãµøgÂœŽïÂYè£9,¡cãkÓa$|l6HÅCû²Äë;¸w§GiÄãƒèô!æ ”ÔÍë£FæJ_Lµ£oÖ?qÑ·CVíPðŽÚ1ï–m'pÙ×¼bCê#?ån »Ü°@'pŒ ´÷æÅxR
+¾·­úh½ ÔŸ¦%à‘à®é'ò@_Zƒ¸“(?­àNrÁÝA½èvΙBð1qƒ› @¤ƒ¤>ðTÀbŠSY'K/Yi©6à£;£pÁ—EZ|}¹]–Ü&sÝŽ›ðš ø¸š/·sª]ív\VƒoÜ•ÁÇ]½¹S–À—OƒOÚiðë1ø¸ÞÝnT*L!ø¤ oÔDÀ'ƒºÊíÒáI5Ÿ
+ƒw}Z­·UÕZyr e2vnWLÆü†Ì–°š˜Lªî~™LÕvý‹¦ü>è4Fý¡­Î%S#Y…ú•vÞC}8è¼Ó‚[
+å–ʆ-(”Ü+
+)@3’ £›© Å… ‚XPˆâÔØ%¦ŸÌ²À(äØ
+£qË¢8£—†(”Ü
+j
+—´—ªšé4
+¹ B¡Ä¾Pè”ÊU<BY¡ó¢pT*L
+¥ËyÚôç‹çK' è íŽX¦éµ'”m}o5Èê vÅØAÎÉý‚8'¹WÎ9'Fg{žs„¨Äœãf )Æœ©pņs ÎX8‡âÔ!ÔÉÒ.ç²Ua„W8gq©"±åœÄ¿Ç¹l¥_Ìâœ,m9gIm8gsáÜœj˜snµk9'e„sÃ~§9gcáÜïÑrÎ-Kœ“dÎÙ壣«Èœ“ÜrîB½óœ—Âœ³] 熽}9¾èçfL*žm£ ùs‡öØ<·ÕNñ`×´êÏs .úúùZ9fï‡ühRÌ1› Ç.ÕÇôrëBzÑÙEØÒ¤ÏyKC)Ó Æš^(ez¡˜éãÔáÎKËÊœ®-´4‰=YZV’+Ï´4YYšÍýXš[íjzq`i6ödinY¢W9M/YXšä³´q)üÀj»œµ´!½ÆÒ’ÁÒ² z9C£Ö4¬ÚmÕwû_Xï‡:èž”Žý¾2OžoÖ´>ØU¿Ô.=ª6­þL·­ÔGÈßÂfZÝìMÔÍæ>ÕÍ=[¿l¥.
+†7;¯n(ø¡ØÀ¤? üPœ:غ¤nËì6›P7Ž}©Û² #Ì„/ ÕMrOêæT»~\©›Ä¾ÔÍ)­¢h~²<R7Îçª[tÚÌpÔ,„
+æQl0RÁ<ˆó(fÌ£¥0¯Œ¼‹¾Z 6GáØæ“ø¶ˆfbž—¶újœ1/¹'Ì;ÕN1ŸMcžËˆ¾1óû¼S6ZÅÑ4æeùèè*
+æ9Ÿ‹ùè´™eý¨YQ/}ŒÂmËñ…¿õÙ€úbõÎà~.Šðm[õÃÝÓYÌ ûïèÃïêsò½ÀOîœüh¦B<ɽÏ9=H<BCœ`âq3 ¶ â¡Ø¤B< ñPœ:¬º$¶Qi´c_Ä£#ävkM,2ñxiH<É=Ï©6&^¶œA<.ƒˆ'±/â9eIlÁÞ!Ä“åñ8ÿ ØŽJ…9¤t9O;›^A»XOJ½¢9 ;gf÷m¿ï¶ïÊØ6‹›<ìõ’ÀÖ©¿OÁ—ÿ.’$ìëv[oƒïŸo”ÞßA¾É}‚ø&¹W¾9gD¿¼ó|‹KºÑ1߸™pBŠ1ß@*|C±áH…o ¾¡8uÈt²´Ë·´\j•6|‹¡>Jú?Úë¥9q$‹ð_ÑRZàÑ“ÇÒå®îpD—££˜ÚõF2E!jzþýÜ›ºW(A'vö¦ t0yIЧ£ÅÌÔ]O¾eDWßæ›NÖù6ì¤o:š'ßìц¾e)™:}ÓaoV³7¾é¬¾|³‡¥F‡ôí|ë§3¾YwÝô2ÞÇ|fÈ·~òͺ‹1¾õuW›+Nmn†³7í‰
+Ú.š$aÙl_·ì9—QS37³)yu°æÇ-¿Pïs7|ä¸=0„?¶¦ÖmÌ«¿DI|Ùù¶76·½tÛ{°Êãq×nßùÀ®
+ÞË®*îv<Lµ»ü6uú¼gý¥Ž‹@6§ãsÝ£/ü‡¨è n”äá!Ø¿ò–í®J>ü&ÿá?6Ÿ>áOÏ º:è'ê®ÖÍ«9Ò+äóê`ÿàÕvfÛ¯NnŽÓàäòàê€R¹:ÀØ\P*WËÕÆÝÕ.}vu˜Mù¤:µßܾ:HÜ_4þ›W‡Ùœ>ÙWYºo¿ùÙÕAs½:Ü2šãê`f]2sá¾:È0Ú~󳫃Æzuø{Ûxº:XÃÆ‹ôÊÕA—ϾE½:HÞ_®Œ®ƒ¡Â^t–®ýægW‡>UùnÙ©ätuÈòY›ökSýçXñ¶Õ«ÿ±ßÁï¥y¬š€¯{ýìŽl*sX™ÿñ•:§çKq¶“êœæêÜ ïºsÖCÎeô=å9vN&Ó6©ƒ‰s UçPÜ9RuÄêŠ3K¨‹¥Ïœ+rS–Q žææÁW žNùD½Í9™ ¶`ÍW ¶F»tnævN†E-XfõÖ‚­aɹÂíœN‡Z°Œ÷Á<ÊáœÎ2Þ‚u£îixsæ¬={®Ûf¿>šöÛšLwÏTìÂà·h>Ò÷ÿB¿ƒå2ø3äånÛ5TórÃ]Y¯ƒG.¯ëµy“ÖÄ”^ðŸ–ü¢®G“4ܘˆÑëøymÞdi|=´Õ›yü3
+¶§vá~oÜ©þ:0fæi—è÷LOº/ñëãËã_¤ˆ.ëÃæªrÜÝ\æÖ×1Ÿéc.Ckù›Ú˜ƒT1Gq‡9Hs+æ(ÌÑÒg˜ç™¹[èK«î¹`.±/Ìóbp‘ sYº/­º´b®¹'̭ц˜Ó0—a´´ö³
+æûÂÜ–0Ÿ»1×åã³oQ1—üƒ˜†
+ˆ¹ÎÒ•V]I‰êÓ{0_œ0winmÚ}Ã䦩Nœ·Q’‹Ógžÿ¾7•µ4 S5Î?Sbwek
+ð:øE oËÓK¤ÌÛëçZqö-(šßÍ£«ðZ›2{˜Yd´&6R&…¤j$Š;#AªF‚XDqfév­ðfiW÷‘û22c$âÙMFÊÒÐHÍ=ivi$ª”b¤ ƒŒÔØ—‘Ö°ñ"‹ÝFêòÈHÉo52¾œ¬‡r0YÔyÆìÓ{œì™ä§Ikß¾D‹ðq–г4 —má÷f_®W%;qˆ&yØryøø)XVmð-Jæá{gÈ„ˆÁÜéiƒ¸ÓÜ+wÖ‡ƒÜå¬æN&S6t0á¤ÊŠ;î@ªÜX¹CqfAu±ôwiÒbÀľ¸K³‡4¾‘;Yr§¹'î¬Ñ,î̘¨t w2 âNc_ÜYÃw©›;]q'¹î“aîtžqîúô®;×Äh zgmÜ•¿‚;!?¬¢É,l£In© š¤æ‚W®‚Ý+ƒ¯/OÁó/P9=[rš{UÎúHP9Zsæ(u2(u UåPÜ)RUĪŠ3˧k¥Ž¢ÔQê$ö¥\’òWsÛ¯, •ÓÜ“rÖhw+'à å4ö¥œ5,)—»•Óå‘r’ðÆw0”ãÆWg®Oï(tYvºñ-ÂY›F=.3w¨yøW”æDݬ¾ß‚úøöw³j‚=GÌ=ƒå–åØÔæfv·ãÿlëMðMÃ}ÍÇjsg»b$ÛíÞ ž×æ`ÝnÍû˜ª&JfÔG#ÔsY©¹W+­ÍVò/ÈÑe2ÐAªV¢¸³¤j%ˆÕJg–rWaJ0ŸjìËJ’‰nQn²R—FVö¹'+­Ñ,+ “‰ÓJXÙǾ¬´†%+ §•ýòÀJÍ}4ÂÁd°öóŒzyJÿFhmÜ·ÏÁ³i}?MáÛE“iø“ø3 qmêàתOöÑ¢«%j™»mwÜ”ÇuGéüeø•ü'GsŒ4\uoKÍҬ̯hƒüÔ¼-/oÞ•ßpc^ûlÞaÂt™w8ßþ@Îöç+p¶Ï½:km*t6¦ÓwRl¼“¢Tœ…±q¥â,ŠÅYg–W:i:ŸÓZØY‰=9›Î´hï,èyâ¬, ÕܳöhCgçÙõNªÃ g5öä¬=,9»p;«Ë#g%ÿX'…;i?˸±}zG'MO4vtR{Ó—/ô'“GÔJËïÇ]Ù%ó°Ûnj~|‹&9©HÏjF²%E›à·(MÂÇ( ù—Ëàµ*Ûcc^lëÀ¼Ù’â´xà§y’Y✫¨gRQsŸ*ÚÛ@?¨QSò-ÃíS'oŸ(UQÜ©RUĪ"Š3˳kís6¥ß*VQb_*Îh×âxv“Š²4TQsO*Z£]ªš²ª(à 5ö¥¢5l¼ÈQ7uy¤¢äÚçp2Ü>užqûô³y/cê€ÑÚ·ÏÑdþ¥yø¾Û®¶Ô'©ë5ÕkÕD ÕÄz%IXL™l÷L^A?Œ)Õ?ƒ^škÑ"ÊšŸ¬ûà p3 ê9…,ÔÜ«…Ö'‡Îg´¶P& ¤j!Š; Aª‚X-Dqf)v­!Né×éhˆû²pJ=}z£…²4´PsOZ£Yæ<fê¶P†AjìËBkX²M'êòÈBÉ}X8˜ [¨óŒ[ا÷Xxj‰‰«%ž}ËÓ°|ß7mÅûwlÁ×(Y„ÕÏ(‰Ã-Ãê¿ô¨šžH5ͽªf}¨þ‰£áÉd áTUCq§HU5«j(Î,®5¼‚~÷Ž†'±/ÕhÑi|ã}¯, UÓÜ“jÖh—ªånÕd¤šÆ¾T³†%Õ2·jº<RMòÞ÷†
+S(šÎ2.ZŸÞ#Zz-wˆfmÚsÝ6ûõ‘÷mÕnÙ…}ìù¿¯Q+v­<ø¡
+Œråμš†ÙS$ëž¼%ÿHÚf»ÙTæ`µ¦qùe;ó^«RßÛÙùô,C:jîUGk; ŽÄHâè|2è| UQÜéRÕĪ#Š3˵k/çŸ!ÖQb_:æÿRåÉc§Ž²4ÔQsO:Z£tœÇ©¹Í™¹u”aŽûÒÑ6^`'UG]é(¹Î7˜ w>g\È>ý„´6ŽyÛ7M5Æcû££{aµ3à•óì_ƒ/Qš…Ÿ¢É"4ÏØÈ`¹ÝÔånÇïdêb½1¯6‹ÔFÇÓBN+õœCVjîÕJkcf‹q+‹ŒÐÀVÊd I‚T­Dqg%HÕJ«•(Î,å®5É,¥A±•ßeeŽ­Ìò‡<>Ý×ý+5'yì®”2DSó;ÐŒ‡šƒ!ÃÉÅù®:ʪHGoÔ˜xe¡P×BJîƒÂá@BgœÂ>½‡Â“„©CBëçÅ×»ŠÑÚMæ]4ÿkL;ÜŒ¦ê5UÉ-U@~ü^våqݱYó_t<ã§!çô|ÉÏ~‹êœæ —_ÎY›á¸syJ¶²s)ïû…s2è„ UçPÜ9RuÄêŠÉ¤ÇçÎ¥¼ãØ9‰}uÂ4£Ó¾ï„‰“7Yò¦¹§Nh6ì„…Qxáî„2 ROc_Ж:aê<‚Pò[!†
+Sˆ Î2Ž`ŸÞƒà@Á¡ µiÏuÛì×GcÝy%$#>צ–õJØ3ÝíÌ‹VåMõNOÄžæ^Ù³>'dÖœM1{2¨w UöPܱReÄÊŠ…=´ô{¥Žz'±/ö’ô!odO–†ìiî«Õ fs´:Yù¦ñÇZÝ•Q3] a&¹V7‚¦óŒƒÖ§w€w§øƒùâ gÖêqùòUÓì›®¿Eº&YH÷¼L˜9ÐrW3ÿ]ó?-ýù#¶4÷Ê–õy˜­dŒ­”ÏlÌ–LÚH•-wlTÙ±²…ba -m³•)nkûb‹ŒHNm tŒŽ-]±ÕçžÚš5Ú°­Í õ¡N3hÖǾښ5,µµÌÙÖúåpšß ½,¯Wn0^ æú©F™;¥÷ô¶âÔÛfè¬íû?íu³œ6EøUz)-p-óãd¼H*U$ áP…#`jüös»û^I :m‘ô¬Œ}$úÒBŸVçánN¹ agžR×ëí)NæÑVûf+Y¹Sö§yH5ÁsÉÙ²G´ITžªþ}·=™v§Ž¯úø£9²z1¯Õvoêß{úŠ}ãŸßãd ýlïCàg›õÓÙ&Re¸öMõí
+ý”ɆkJÙO?QÊ~¢˜ý„±õ.}áç’þ¯àÚ'q ?“Âü3ç'/ ý”<ŒŸîhŽŸ³·Ÿveä§Äüt‡%?Ñtì§,üäüÏžvûCETSfV³MoP3ížv§ž§]wÓÚ§ÝÔ>í&ü´›ÒÓn©Ÿ÷ê¯í1.¨ RÒ¼Ò+õ°ß˜š—’ÏІîS.Ý“û¹'yH÷ÜŠÜK
+}Oc÷x²áÞˆRqÅÖ=Š{ ÷PÌî¡¥/ÜËsZ »Çq(÷ò%-:Ò=^º'y ÷œÑnv‡AîIÊ=gØ)½ô»'Ë#÷8ÿC÷zCE tOfv¯Moi‹I×3{ΦµîeÖ½”Ýˬ{_ã4‹>Ä“"2¯Vô]P/‡¦6¥±Z«U½;™³{Íê'wÒOò ú9ê·Ìé+‰õãÉ@ë©è‡b«HE?‹~(fýÐÒú-ôwëÇq(ýtûŽm}¼4ÔOò@ú9£]ë·ôëÇà ý$¥Ÿ3,é—øõ“å‘~œÿ¡~½¡<­OfÖ¯Mÿ‡ÖçléW5}ßÇYô#Nf†<BðqK¼¦æêw›Æ½—xBù=9‰Óè§~À5§Èùß´“?¹‰~’ÅÏù´¿\_<ŒOªH?[ü@*øXðC1㇖¾Ào>£Ïñã8~´h¾˜æ£ðã¥!~’ÂÏÍÁo®Çœûñãa~‡ÂÏ–ð;)øÉò?ÎÇâ7¥Ã’ñZ{ãE
+2(S 3ئ·0Xt%0ñ0èlß%ðôK¿¬Ôêü¨_Ÿš8YDÛǪQú÷ïM½Ùî*³ÿŸèk£6u£,Š3+ä;z›ÏMõ·>æ\™’øôª¤:4ÛºÑÒ¦žÞ(· ¢Sò t:;é\èÃ1<è :Qlé©Ð b¡ÅL'Zú‚Î]Ooä8³ùÝbloä¥!’¢Óíº7¢çR¦“‡AtJŠNgX¢3óÓ)Ë#:9Fgo<2Õ0mzY× _ƒt¶ïýê[¼ˆîõô«ÔÛ¸6µq’GªÚ=K‹^µ6d6Õ®~Òþ•§­qv?| Ø?¹’õÏù˜Ð?‚"ñTGž TGŠ(¶þTü±ø‡bö-}á_¦?5öãPþÑõ§oà8ÿxièŸäüsF»®Ž3¿< òOâPþ9Ã’¨Ø²²<òó±þõzCE)TOfV¯Mo)ŒËN=zWXw»oúçwMßþYãPÕI×½:žPm<jà·ƒé“ÍÉÔH:FMP©z£>Ò¬è¾ÄKêŽk“ïmÕÍs[™¦yŒ'3º>“d–c#å^CFJ>ÖHŒÎ^@g)eäy@3©Èˆb+#HEF‹Œ(fÑÒ2¦´ÏýfØke丕Qâß”1Íè}FÊÈK·2¶¶³Œ’‹ŒcFóÈèŒv-ãÂ/##2vÿ!­Œ‹Œ¿·ŒÎ°$#šŽe”å§WQd伕ñÍñÞh†½ñ<ÍP¦²Fv½ ï_þÎÈ{6ÒÈ«K]i_êLÓÓ¯wªÛT{€)‚†Ls ù[óª_ªr¿æãè,Ã&ùJ˜–ÖÈz¯6yÇCdª_fúü»éB¿vaº$SnÂÙÅ7]È”\È|k§<d:[ɤ•
+O™äy@™©‰bK&H…L ™(f2ÑÒdš—IŽC•É$%3Z2Á# “ÉKÃ2)y 2éŒÖ‘YL§K=&z\e2yT&%U&a§EžøÉ”åQ™ä|l™œz´ìMA,ežáBÙ¦7ÊlÞa™{´t6îc¼ˆÊó±RÖÊÖá\)½—/åAÿ8luǤ­ÝÔÒ‡ëÞø9Næчx†“»ÕBÉÇÖÂö¿O;ç£-ïÒaíè;{
+"O
+"HE;[í@*ÚX´C1k‡–vµ#YRÜ9 UI–,g¯ŒÚ¡ÄÊ¡3˜#]®‡,¼Òñ, Jª:£’s3¯s²:h†-†
+(‰’*‰Î¤DßÒKŸ,:"Çc;âôz,ñ¯7V„ø“akbÞR‹Î¿ûçlÙ`KÌ.[â^­jýâÜ<Ufƒ>ÅIA“›t8‰Çv¸1 9
+¶¤À]ŽÇîr dÐPj@!ƒR ¥4´¬ ÚB“»§ºÜ"§ÇÆ £.'q˜.çÌu RÂƣ€.'i .çLJ ^ÐdqÐå8þ³.×›(Jf2È`—kúœ½ã-fØ2g·î×ÛSÝÄJ]évê']éƒþ}]žªöùSýи­è Rº}õß}|æqašÜ' ¤I<¶¤aÉœ„$ËéÚàj¶˜ÓúâB¢ï¯ëpFgöN´Êù†µ!‰W¤½3™@pª¾…R ÍÔ;ÓðˆN¤/ø¼;Ó|Á»SOp®Nóv`ýìí…m]ëîÃØ‹Ý;ײ‹Î½N»Sÿ`
+endstream endobj 1454 0 obj <</Contents 1455 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1455 0 obj <</Filter/FlateDecode/Length 11726>>stream
+H‰¬—Qs㶅ÿ
+É1
+KüËÞ²Â[šµWƒ Ï;ÄÞ°TªÄ Å‚‘FÒGcT Œ@}6šðü1¹Q ŒœìÀȨFF&0r²#7õµÁx0zy,0jøriîóS³`$}$0FÖ"0Vh“KVŒÞ F’ÇcdÀÈ¥RFšž£×ÇÈ}3>÷‘ŸópìÕ+à˜W=õ
+Ú î/Í‚hšAzjίŠG"-‰¤ŠÄ¨
+5„Þ‹käåÒ†p¾|à…šyqÍÀQ3è«rUD.ûˆŒ[†åb´Åûè»n~Gø¼?=A²…àû$ìß6ûB$n,™6]Óü/Õy²mŸ"T“”Α´?µŽ¤ý±3øƆ8Ugpj ¤…äqê–L|9•pÊɧŒJ8edÂ)'{œrSá´„Ã[ñ85ʽŒÄ/“¯"óëéå±ôòÖF
+¾±µ0ø›y«áàëÍrPó^Ç
+¾±Y¾œ;Ï9rÇqÎÛ!ø†ÎøàK~γŽŠuë¦ÖÕ¬‹
+w³^o÷[d®;üÜ`,½k÷)ÄÂæ©Ûîÿk3ñCgU¸œ4++n¡íïO öw-0ño^ö#Þͬ´l×âî4i«ÎùŠßû;¹Ø€Üðš©C‰^L™gº§&<öÝÛ§³öë¿´+ ÿ5–@Ìïçâ±y¶·¬Ò:ÁˆOFµaú
+¼’}ÐüÔ®SS? úÁ%ÖúAd-êÖ¦îÞŒí¡WßH¦~ðme<ôƒÈ,ôæ½€úM/V‘ú×û~ð=¦¦’‚íäzA0®W t—Tê
+22Q“=¹©(;¿†^+ª&½‚~j6’>R0Œ¬]MAo† †$ #³@A3LAšž †^¿4Q0pÆSüœ‡½zE8Ô¦§ ¬(n¾ïÞWûw °Fì6–v¯Ýn˜hÞaNË;¢ÃžØì:{£ÁØø¼[!—ø}¿ÝáZ'ºæÿZvKä«r)³às H:h\L$}Ô˜Uƒ¤e &zgLLdT$';@2*’‘ œìÉM²¬ Ép‚L Hiàúx1QBÕ.Œ‰äÌ2pF€ôÖÆŠ‰‘µS@–ƒ€$³¡WHïu´˜™@Vƒ€ìÝY@†ö< ½½Kc"ÃÆÀT¢88ö^
+„þÝîŽiGìôNŒ{ö.ËX&V–g¢÷ÓofUf‰Â¼2ê©=´[ò“\©~<í n‹´IîMÉ;ý•åÛ´ªšäKód^ÑìMð`6û¸wyµyåõ§äú•_öZÜ+žM»lNï˜lÃy“.Ù†Õ¸‡n–dV¹Ñ ø­k÷•¹Ð d·cíî!v«—[À¶wœ Ût²¸×êÐæ÷½™-Û(¶alØF©°baÆ–m¸ô€íÍÒ¶zíµ®¶5ŽÄör³æK|Û²´ëµ®™[¶]‡m4m3ff[†Ñ^{þ~cØvq$¶ýa‰ím˜m]~>8ŠÂ¶æíþP¶uÛiÏßåÖýƒ~‘WlõÞ<š¯hy{vÓv]µÏfKê«iͶMÒr }4øÖÙŒ•¥ç'jºoü øú¯Y¾Nï~»Nî~ÿ÷Í 4P/¨rpÖŠ.¿ØÀ@õ?:‚p¹¥Tbe²ñþŠR…ÅB*„ VQ,¢¥®KÛÞ„Ç‚pM{º™¡, !Ô<„ÞhC(à 5Ž¡7lN„!Ôå„’O…pþ~2§ao²b¨óŒcèÒKÊÛÒuØ †ÞÆÝÐQnY1FñT3j·‚p#ÛNOü°J~É6é1›i{Ï¿Ø~ç7ú7ËŠôös–oÒä±íÜ~»KÌŸyÞ™¿Úû¡^cÈFÍ£Úèm´‘ÏŸ ¶Q&Sct0±¤j#Š­ UA¬6¢XlDKl\-lE6JËÆš©%Q–†6jÉFo4Ïƹ
+Û(à 5Že£7,Ùˆäuyd£ä1lìM†mÔyÆmtéÅ_l­›€ÞÆÝ6ÒÿŠtŒÆ/³?è4øžå¥9®³…ñ0¹«º?¹$ÖûŠªá2Ý1¯†¿‡ÖU—Ü~áÎ9ÔË
+q¨yT½Ï9\ó®ce2PAª¢ØrRåÄÊ!Š…C´ô€CÒ$TE‰cq¸,¯æ窸 r(KC5Ä¡7ZŸÃõšÇDeL8”a‡ÇâЖ>ØIåP—GJƒÃÞd˜CgœC—^Âa~æpàÐÛ¸›v¤#&×wß®è¯ñŽî¸v‡êÄ$&7¿àxLn?'œ>ׯÙ6}ÍfeZ ÁF¨—"Pó¨zŸwsUŽ¸*H+L L!H•@[Aª‚X D±ˆ–HöÍPâ‹,1eqµ-øë ‘ùö…‘e¾ Z(3@ 5¿ÀÂyÀ°7d:{w+z²*BOã‰èê>E„Óµp’Ç®?NçÎ¥·pÀåE
+¢¥
+æô9mOâX
+<ŽSpTP–†
+jIAo´ž‚ynˆÉÃ
+Ê0HAc)è K
+nÂ
+êòHAÉÿ¦‚½¡Ò*¨³Œ+èÒK,Î –½M»{{yi;‹ÙcÛ%/æ îÁ€Ø,ˆ/ÖÇçú¿\÷v§Ú6Àä¯,ߦ5·¿ÓÁ¸"üÊô—l“&ÏÕó=¿¦²ò©~±òig»#ý8T&‚RꇤÔ<ª”ÞÖl¯òq)‰”"Ðe2ÐAªR¢ØJ R•Ä*%ŠEJ´ô@J:Ö¾(q,)ç[:þ¥”¥¡”šG’Òíb)e$¥Æ±¤ô†¥Ïð”º<’Rò¿)eo¨4‡Rê,ãRºô)s#%?âÅ!”Þž}70f³"íÕ)¹©ŽÇäö³sóë·OIÍ 5ü’Ù}KÍ2géòô“|ý µÓ«i§yTí¼Ïµ#æ^(“^RÕÅV;ªv VíP,Ú¡¥}íJ:WM+6ÚñíaÕ׮ܮ®Vý^¨hþœvåÖ<˜¤NfµëM&ÚéhN»)£aíüÑ.ÕN‡5ÚõgµÚé¬N»ŸÛF§?lN¯ jç¦3ÚõdzÚéxN»Æ×®?ÖÎÍBÚõ&íÜF9í¦ìÔÆõÂkçïÙm³?òž½½Öü_ÛØ&ø˜‘¶é-©émÓ¤nH¿,_§ÏÙŒ|<eù2­éåöÕô„lÜí™Á}Å¿{}µM°mNæmíÑ<¯›daþÞ“a¶y0«ò?ù½U÷þàé–¸ »¤*—窸”›ÍU1×=yéZûÞ:ûYø#';Sg’?h[¾Ð5‘¼˜V·]mwƒ ²6g–v§6ïÑüƒÃû®~°[cþöñhêñÿt×Ðnï}œì]Ãé¤w 'ˇw ÿ<w ÚÂ9îÈ:¹ù}op{×@©Ü5`lî(•»Šå®c{×€Kîë¥ý†0Þ‘5ŽÔ‘Ë5»äîÀ:¹kÈÒ¨#»<NGöGswœÎ3sÃ؆ï2 èÈ.ŽÔ‘ýaé®îÈnyБ5ŸÚ‘MÍßçî½ñÒ¼èT£mùœþ°ô¶om×U{gÞðRÚ?á.-î'_éù¬(-ˆ&µ&Ÿùñ£#µéñÚ6ã‡JœÔë ´k—Çl×þvl¯ŠQ'ËÍ’v;)“·k”ª“(¶N‚T±:‰bq-=pr¹0%ܵëUé9¹*ÍWXN®Vòo‚“2™k×:™:)£ÅrÒÍs²à1‹°“2¬¶k7«8)³FsÒ–œDŠ‹“:¶k7ž8)ãMuèØ*ЮuÛ®uÕQ7ê"‹³Že@GoÓ˜µ#õëêGäþ}}¦ÿN¦WÉõžË kÐW~L%Z
+tû˜|ãß6³³®›ô\JÏ·Î,Õ’[^§¹oߤ»Âríöë’YÓxÞ òiµÑ½`ð þVŠ>wg¹Œã
+¯óB W0.†î4høº¤3.Cƒ® R5ÅÖpªá VÃQ,†£¥†—…ù’áºné.±3|ÊÖ€áeÙûöñá²´ëºåÀpÍÕð)£ ÷F»ØpF»n90\c5üç¶ñl¸7lN_Õ†ëòóÁQTÃ%w†00¼7TÀpÅ6Ür`¸KU¬F±roZy[%ZkÃïµÚ[ö6Ù[¾÷,Û’ÇyÓ‘¼ÑHµ-­O?86m—Ÿï¥î¾òo!„zU•ƒSW!Ô\!œpº|Üh½€t:A e2m†:˜hRÕÅVCª† V Q,¢¥ÒŽ/W= ]1¶J«Ñ.´-5”¥†®“‹†šGj´Þhž††šeXCF5<³±j«ÑzÃ’†‹°†ºü|pUCɧ6ZN­wã9{ã¥3è¢Ne]<Ÿ[÷ÿEM®X»n; émß ë–»m×Uû“1­Ù=s­j©ß³¼Lw&?TìuÞ4©¾Ñ»>q/-ÓÏô09µÉîÈq}h’¿²|“ÖÙŒ^ü”,ø·+þW|×*Ò…§ÐPJ½âÊÁi­Rj>µ2|ô¶úhhÀ>Ê<ꌎ#>‚T}D±õ¤ê#ˆÕG‹hétÍ”¶(q¬¶Xô&ú(Kö¨y¤¶èö¾-nÂ>Ê0¨-j«-zÃ’eØG]µEɧ¶Å}ìðQ§ï.ØÍž-œù2ࣷ}·Í©ê’ß©^Ó'I»_³b‘¶÷õ±>ý`)“¶»‡äS–¯ÓÝqg5Ý0›-Òº9˜Ýoær™¾ áO/(T5Z½Ï !\̉4 ¡LŠ"HB[Aª‚X!D±@ˆ–@8ßÒµ‰‹¢Ä±ŠbNìL-Š²4,ŠšG*ŠÞhï!,ÂÊ0¨(j«(zÄ`'B]EÉ£ÅÞxuªñ¢èÒKŠâò\×½íESòº¬HÛæpv—-Ò_²MšÜšFØUÜ+óŽªaQÈCþE¨þéu„êŸæSëß$ÿ¼ ýË·4öO&E¤êŠ­ Uÿ@¬þ¡XüCKûþ-ès¸j«Îç¬Í$ÿtiT]©z£½÷oôO‡EÐűŠàÿh¯¿æ´‘,
+à_EµORÕ:«xôx’]Wͤ2qfßecjˆärvòí÷öí{%5ÖQDÜyˆƒ9˜¾4è×gXòÕTë_¿<(‚š/-‚@½ÑPa‚Ôëg™¬CzIýK†ú—ͨçlÚ¯TüØ°Ó®=žÌ/ߤJ×<p!üd¨k À²>=•m”ÐÕ±X™¦vå+¡å0xkûa³ç瑆Lì¯-Ð ûÜk't6š› š¨“MwB”Š‰0fQ*&¢XL„±5.}fâÆ\°jì©fº{a'Ô¥Q'ìs?ÐíbeÐ ûØS't‡%Ñtb¢.:¡æ¾:áx<Ü û©&;á^Ò Ó¡æXÇ—ïuùôÔ´׺çöQBTšž<?™»ö¥‚‡¦ ÌïIÉ÷¦;^žÚ¦kúfØÍCõrÕ°Ï}VC÷Õ"³íšÄ ÊdÓÕ¥Ê Š-ƒ UA¬ ¢XDKŸ1X¬l1fé:¡g3¸.Ìë«fë ½²… Êd–ÁÑdÊ Œæ©º£9 & ”a™Áñ¬Â Ì꫺Ã&ñ*™gP§cÇã ƒ2Þëªáx¨0…øé,„ßhÅO7ê’jh!°ÕpÆ>gÏ®÷ûÃÐÍÿÔÃàöCp×X wV>z`Ë·ØÅS”Ä´Ï´Ù‡:ø=J³ðê„qÈ7ïèÜñïßÌãêÝcÛԼȩìLÉ<DW¼ y‚ÛúÛeû¥ì±…Ò´Ì—ï¥îP¿Y>ìP1³E}|cÝ¢ßÍk —·5¯.—WWNô.JÖa¥aÙvÜ¡‘û2­uÌ‹¸¯¾ø¬¿î; ݧÏm>Ser¾4¸¸RuÅÖ}ªû V÷Q,ÏÜ_å¶üƒú+±¯úK‹Ò'l™û²4¬¿š{ª¿Îhc÷³ÜŒ¹™w_†AõWc_õ×–ÜÏæÝ×åQý•|iýî†
+sè¾Î2]zûôÕÔÒÔœ=»¡7ØHöïhI›‡»Ÿ-›üÇ”âz<Ôfk?Oï¯à¦ *µš{-µÎ˸9]å7™ ”Z*n(¶¸Tq±â†bÁ -}†[žÙJp“Øn9mK¼7Y⦹'ÜœÑ^–Ú|7ᦱ/Üœa ·b7]á&ù+q &7e·>]ˆ›§,Á¾qsöì¦1µ¥¾Jÿí¢+SѨp¢mÈIm~PÛÝRÙ¥ûƒ›»w¿˜Z
+Ó §¹Wàœ—[eo¶)N&S(´V
+p UàPl©bÅZú ¸,µÝ
+:/{û&›V07¨`e2Pó@ª
+¢Ø*RUĪ ŠEA´ô™‚))0Só$ö¥`š½Iã…
+ÊÒPAÍ=)èŒöRÁÕ¼‚2 RPc_
+:Ã&2"VP—G
+J¾TA®VÉËñzGã…WÐCjÚÃ>½ÄÃtð0ŸñÐÙ¾»æKeUk º"¬v/h º†7¸{¬s㶾ç;žÍzü¥YØÜŽ‡î3ø¡mvæFµ¶Ï9ýþŽz‘!5÷Š£³GZs=Se2PAª8¢ØâRÅÄŠ#ŠG´ôŽ¥3Qb_8&©ykŠE8ÊÒGÍ=áèŒöGÄà(à 5ö…£3lÉ<Žº<ÂQòWVÄÑPaIÔY¦IìÓŸ@¢³i·u×6{Öm׌ M°xQ·¾Üò d÷ÁíßQ0Ž¦6>—Çà®+ù þâ{›'«ªR¨—¢Ps¯:¯Rh> 3=Q&=¤J!Š-… U
+A¬¢X(DK»¦äNŒ{¢Æ¾($x¨b,¢P—Fö¹'
+Ñ.í‰:  °}Qè Kf³öË
+5%…£¡ÂQØÏ2Iá^Ba2P˜ÍPèlCSÛ–ŠaÀˆQ Ü›¬Ìýü½w]ea{x2÷ÒCzæˆMý óûǨ°t´õ°4·»ËZ›ÛÁ;6óp|nme|,mÅ<²Âü˜Ïs€ö"
+ït=õ®Çz×Ç ëð´rß™ÄÚÖ/Ÿ½;b›æK«ï4kó£ký(–5]HXÒK
+\>¸»æ~¦>R£¬Žtt_¹}R÷\K¯•–¶k¹á•]µçßïÿÏzÙ4·mCQô¯`¦r¡T ¨¯îÜ6z&M<u–Ù°eiÆ&=4ÝLúëû
+Ñ@,DC1 MÝ!Zºq:k‰F[žîìÎÐrF¡[ÓÇc…Ž›9¢yÍ„h\m.¡ ªD³5‘21Ѹ¬%šß•‰Æ]gº ,m;L4ig‰æ×c¢q½±Bˆæ• št!¢yM„h²P“d®ý2»ú2,É\^-,Á¬­©¿næÇ/ñ.R§²R¿Óy¼ÐQ·ºg¿ÇžT]–ömžU?h ²yá®n{Ί£Acù/]–›wUL üë]t‰ITŸUQ^?:Yf¹F"Þ-CÒÏÆv-R:‘Ëf·Šiô¤7wpôöÁôHLöQ
+z] ÉžWÀ’t&`M XëA`Éä
+endstream endobj 1456 0 obj <</Contents 1457 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1540 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1457 0 obj <</Filter/FlateDecode/Length 11825>>stream
+H‰¬×]sÛ6à¿‚KòB,~_:N&“7Õôb»³£Ø”«Gri9;ý÷=Ä¡‰/#Õh¦‘Ä—$Ž
+±æÇØd÷£¶;U›­ë9³¾çü%” …$”<¨„þã’&fZB"ÃLö“åxÃŽ¤"!Š{ A*‚X$D±“ }$¡)éfXB‡’ÐЛúL ÝÐPBÉIè•6–°²m6/¡+I(q( ½b5ý7/¡ $tù+%5Ó1J-Óéf„Ü:B½9»¦~Œ:Zu›uO÷wÌ^mv[eßìø ußòìî[ &§œlÕnÝ·[û±½³ç=ó},ª+¾ºû“ߪÊžÍßWÛûÝwË.u¦åĺ95eó!5%ª¦ÿhA5‰—t¦t¥þ¤¢&Š{5A*j‚XÔD±S }¤¦.’r¦tq(5i_çönh¨¦äÔôJóúÇšËD.95]1HM‰C©éKhþ ”á‘š.¥š£¢"Õ”Z¦ÕÒKúÇCû8§¦7g×´¸;î »®½Û›šºCµc>×êö3¥_øþ_­»Ý·¸‰Ô?—<ËïÔ~§~¡ãé˜=rK:jlŸl!dŸäAíóhŸáÍ…ís¥Ž¤bŠ{û@*öXìC±³ }d_šÓ£ísq(ûÒ’¦åLûÜÐÐ>ÉÙç•vjÒÅÙçŠAöIÊ>¯X²¯˜·O†Gö¹ü\û,3ú´¼AÁQyÑ*(UM+8¤—ôŽúÐ<f3 zÓw—}k( Ç`­©=TŸ)o9_÷ ^»µ­ck»B(žl$žäAÅó (žÎiþ±x®4ÐíTÄCq/HE<‹x(vâ¡¡}ñJz rÜíIH¼²)xOTçˆ'C#ñ†<Œx~i§â•³âI1@¼!$ž_,‰‡ªëņâIþºno\îö†Z&;¤—t{å¡Ý«±sþ¤½k²«íVöwîÝcËÔ­¶‹~}báÔ×vÍ?jwT
+J¯X‚´Ö¥  tù¹PÚŸ¢ú´¼ÌQyÑ’)UM“9¤—©ff3fzÓw—=w]×Þí­q÷íÚºhIœõŽ Ümïm²ßŒüüÀzò9c“EÆ™ªè5ë½åfsÉ=¦²#o×›‡—ÎZJòF›Ývz-¤²!‘¤’•ÔÜ ¤13ÓrºÒ@Ë R‘Ž¤ IA,’¢ØIŠ†>’4çÉÃ’º8”¤Eš4ô@Ÿ%©J*y I½Ò.–Ôƒ$•8”¤^±$)˜I‘T†G’ºü•-稨(ƒ~J-Ó~é%~?«?½IcÅÙ¹U·éÙ¼‹Y´²}$qfE¥Ò/'ýJÆšÐÏô®½Ûu÷ Þƒºm©ÏÔÑ3_ìDíOZ·Ô\VQ»µê¶ª¿@î·¨Ü -±#Rùéo·² ¨œ¼)³—'†¾%í_š›_Õ–gg<)Ó2ö÷8^)Y¨ŸOЖ½Ð–<(Úþ“ Ñ.£íJí/Hm÷hƒTб b‡6úí¬¢Œ¶‹C¡5¬Îyí¯¢-y ´½Ò.FۃЖ8Ú^±„v>¶ Ðvù+ш¶Ô2ö^‚vv@»˜AÛ›´«®]©göÔb½{âl­·W´ðÔ#»¹aÖŸûžxcÏF‚ßùк&x®y•í„”<¨ƒþÃÌëÄÌ4¯®4м‚TDqï HÅA‹ƒ(v¢¡4eRÏ4¯.å ©©œ3tCC%ä WÚźbƒ‡rÐ+Vë,wP†Gºü•ŽŠšqPj™vpH/qPÌfô&5kY¹õf»é;Vþ$]ëZ}g#W|ìñ¥7r·¶ú}Ýø.¶«ç—®å#ßXÔÖJ¸Vö¦;¾º² ì~s¸ç¾õR¶òRò ^úô’`13}£+ ô /QÜ{ RñÄâ%Š—hè#/uA7Ã^º8”—´#ËsûF74ôRò@^z¥z j/]1ÈK‰CyéK^šy/exä¥Ë_é娨/¥–i/‡ô/M1xÉ¿¡—Þ¤]dz®û‹öúëj9¢
+| UøPìà©Âb…ÅZz
+Š6´´[¾¶»KšÆ‘JZ¾^^N»’6Á¦K£’ÖæqJš?Z[6Íø«_„M‡%­#•4Ø4‡¿¶Ëƒ’¦ùÇJZ( [;ËÉ’Ö¥ç|'›¿i
+`§³œlq]zN‹Ë;ìì¼M{‹·¶Úv+~÷Ñ™·5›f’.“;vÃöííËŸä¬ÌÏŸ&³yò°NÌw›5:–ý<¼Ôü)GósÁg”¹²olyFaµŸ…ÕÇ”Æ6Y7ÛôrqÒÑ|ÓrØQítiD©:Šbç(HÕQ«£(GÑÒG—ýÀ¥QâX¥q™[Æ9*KÃÒ¨y¤Òèæ9:QeT5ŽU½aÉÑeØQ]•FÉ?X{CÕYN—Æ6ý?”FoÓn«cSo_¹ú½ña’&æød_–¦*ÿ°%ÑÜÞ˜‡º1|8¸ßÓ\Ì#ÿ»'-›»šÍ4 Ö³%×üJf3ªwôâŠn+³©¥šº³Ê­y¶ŸZoK½†ÿ¢çœnÍîÚØ»|mYÚŽßLe7¤¿CúŒéðâèµùåÓú¸£¾«yÔ¾;¸™/§§&3³@ß•Ñ@ß©:bç4HÕi«Ó(§ÑÒ§t ïJ«ï.è÷ÛweiØw5Ôw½ÑÎvZ†A}WãX}×6M—h:qZ—G}WòöÝÞP§u–Ó}·MÏé»içô,à´·i·Ï/Mýo&—û¦yl\-}ÝTKTe]µ<3¦O¥q ?—,ï—ë)ʼnTØ­áCªÉaïD·/÷ÜŽaÕ§ ÕXÍ£ÖØÁ=„x$G²@•Ñ@©òˆbÇ#H•G+(ÑÒçt@ ÆJ«Æ²e- | ²4¬±šGª±Þh=ÓtfÇœ†y”aPÕ8Võ†%ß©±º<ª±’°Æö†J2È£ÎrºÆ¶é95vÖñ8ðèmÚ5W7M9è°•y*øçVìkS˜k[hïé®ø4Y‘}¶ÉrÇÝY
+ôK ôK*Ž(v8‚Tq±âˆbÁ-=À‘nn׌cf;©‡#=/yÄ~™®éFâ(“9{“)Ž2Z¬~év6Ž2,ãØŸUp”Y£õKoXµ_ÁQ§cûã Ž2Þûeo¨$…8ê,„coÅQ7êœ~9K;g½M áHñªâ×\
+™¾g[4wÿåžéÃúÁª8Kþ6¹X%ßmë4ÛâXª’¦à6Yæw‡)}ØÁ~B¹¥sèçÿh/»æ6•,ŠþáA.¾„¤ysœÌ\WÅ®TìÜyV$lS#£ƹ•ùõsºûœÙtÝó`[b#õö‹ZóÒË7GOfb'6ó†¡'‘OÓñ4Tm—i|»O6ñ×Ë[jè¡81²‚).°˜+¶–â
+òMªM *J™o0Ö|C)ó ÅÌ7¾Á¥G|[•Úc­ V¥Ã7º@”½‡â]ët&߸™Ti&|ãj¡øæT;›o\VÕve¾q×`|sÊ߀ê ߤª­Ç|ãzÁø6¨çá›´2ª*„o2²³øvÂ[îÁ›3½ëçÝñ§ÑF=ÅÇn«aöz0~ÙôÚPµqöI¶ŒŸêÈ(ês}£å(‘OŠãí/VP½‹6Üh§7©—‡ƒÚª¿Kã³}ÚV(ULD¦zØ9¦º®~£ªÅª"VÉ8ºd±ÑUóø uõ¨_ï¶úOO¿Ó¸1Á„S35Y ƽPålÜÒ.@úb³¤•0é¹õ´É¢THbCz
+éA,¤G1“-="}UèÇk²¥KzŽ-éç<zH_-¿!=/mM¶‘^r!ýœjÒ;ÕÒçª&è*¤ç2b²åˆô éÿÞO¤wÊéQ;&½,ŸŽŽ¢žsKúõ¼¤Ôó^Z“-G¤·©`m΃meQŸ®=lsÆwÝöÝqÿª¬µ5S ;ª·S'ßI_Ñ_õ'K9:#p’ àæüG¿õÙÑ©€(·"┘r\M¼Pš1å@*”C±¡H…r Ê¡˜)‡–QŽ QTÊY-6”ã8”Ï.Ë‹|=“r¼´¥œ5r¦œä|Ö©v6希Pîô\c('q(ŸuÊfyšû)'˧££(”ã|®Ï¶ JÅ9d›t1l;=í†ýÿa±ÎÌ,Ú
+ƒ¶œÑV´õOêe½è=~ü8j³íµ‡ª-‚¾ò„¾¶îÿJ²ö¿¸ûOôòÄ:Ü>NF£\aåè44J~¶ûùÐèž?•º¶0¹š Fš1A*hD±A#H 4¢˜Ñˆ–¡‘˜˜{ãPX
+DóÐÈKC”<
+ê¤FÝ°£ŽëÍU<€ºA©8ƒ¨“.„ºAA ê±Ë6Vìô ꜡]·}wÜ¿ªçÞ]²(ã¾I2¥lÑQmzˆv =ȶm=Øá'mjú_ô;ú®6×Ä<¢$Mž{×q]·Ñ·¢m»¾Þ^Ezw‚c¼U›ÿJŠ2þ7}SGJ—LÆ`‡4“øˆÙi >âÓ·U©=Ñoï.¿D/Íc»UÿÒ¡iÕŸÇDŸô‹§­þ³«÷Úr¿Ö‡£ÌVÿçU«^GßëÞ‚ŽøS·WÉbƒoüÏš›ÃA|sõ`÷
+‚7‡|CËá›W×ÛÍùæ
+ó@,ÌC13-=b^µÔžm˜7”FüÕR«p(æ­Vtѧ«YÌãf†yC_eæqµPÌsª½e^åg—ÕÌs¬ß0»cžS–:–~æI;Í<ç©Ã´çzïdÞ ”‡yÒ…˜ç<áæÉ Îb^yb^åaž3´+:Âõ»íšM:M´m¯`×õÔDѧÅ7Úó^mU'ÅeRh\Fwu÷3ÙÄÍ®Žþ ÷[…ÇV‘pTÛë.ºþä³Ñi_w ý=ú£î¸}Ö‹·ožÌÄNLf"ײo&ù4OÓ¨Vt] »úEý÷}wš„àÿ…þÈu®f¸î<‘® >Îæ:@º{ÞC¤¯—Ô#[ëíƒÒŒt
+ÒQlRA:ˆé(f¤£¥GH_FâÆr
+éKuY[jÈH祡ÆJéNµÒ‹4×gÍÊt.ƒ4VâPHwʪێé²<ÒXÎç"]Ã3{[ÏÂ}P/^@¸K«i¡µé9p_à¾ñàÌßå~ß(~åJ_ê/‘8Žž•£6
+úÚV5òšöQåÑOµESüðjŒV¥™p’U±¾ܨ]>ÊÝ€šÿ8v=q½W·õéƒþ&ÄJ¹îKÔݳ*»(¦Y•ù“«‰KJ3&H˜(6À©
+Ž~S&b—)I’úñ¡d¼óÚP……"‚÷9ïSa÷ô‡d'æ%&;·* R!;Š ÙA*d±ÅLv´ôˆìy¦Ÿ?
+sJ…óB=ÌSa^ª°äTØ©æ=S5s?Ù¹ Ra‰C©°S6ËóÔOvY©0çsUð|P*. ϥ˴
+Ê@,(C1£ -=BEù£ŒãP(Ëò‹<‰2^¢Lò@(sª9(ÓgMåG—A(“8Êœ²„2ZF™,PÆù;Q6(E¢†P&]¦QfÓ3PVd'5-<,s†vEÊwTfØuõ”›vw_i?éP{ªŸh·ý¡âíw½÷Aÿî)cšv¯ßî¶ýQ &$¡\Pˆ„’%¡{º@*ãÉ1 ¹šEL“IR!!Š A*$±ÅLB´´KÂŒ°“c©“8 ‰;ÙL©“¥ mˆ„Nµ·R—yI(e
+[)à +5Žd¥?,Y9[©Ë#+%›•ý¡pkìf¶²K¯±²<Y¹ÀVú'íŽìš¦ÿ²]Ç-u¾ÃG-y^ÙMwïøø‘|`Ù lú| Ø4 ÛÙÕG°™%?´6m¸¢TaC±ƒ ¤
+ˆ6 lhé3تŠÖ°I ¶jA‹ê%)§AØdi›æ‘`óFëÃVZØaØd›Æ±`ó†%ØŠ0lº<‚Mò±°ÙçÊ\Ž××/@âtªaâºôâ–qƈóNëµÏ&yºjëûQ›MèWïÑv<ªˆ|néå±á7/µÛÎ4ÞB&&?Ðw¬øƒ mù³Ûìn/\íw¶õ3¿·[nÿ¦Mîï2Sa;õDvj>Ö΀˜þmE_8,梢Û‹)*RÅNLª˜ V1Q,b¢¥ÏÄ,ùîÅbJKÌ’ùéH1ei(¦æ‘ÄôFóÄ´= ý01e$¦Æ±Äô†%1Ë°˜º<SòhböÆ ˆ©S ‹Ù¥Wˆiì9Óñ ˜ÞÙ»mÚvKžô73†mlø•úþÝ}b·˜¸]Óf¦HŸyוìkéãwÐ;}€wšGíŠþíå«øzaùd4ÐAªò¡ØÉR•Ä*ŠE>´ô™|Åœþ,ŸÄ±ä£E«rZ’O–†òiI>o´Ë®X…å“a|Ç’Ï–äCÓ‰|º<’Oò±òïzC¥z§³ {×¥#½³½pš+xyÀ;ïœ=¶¤Ö<ý;«¸¹é†?mùŸäþç,Ÿ¦w÷O’£Ý)ùõáVßÊÎKÚwÉ ÎÙKÚ´û’ü~— Uú‰’'­ýwMKí7·5%/¼Ë‘ÅäOö€Ȧ>}ˆMÍ£²éß[Í’÷ÇlÊh 0‚TÙD±c¤Ê&ˆ•M ›hé36çt}…QâXl΋›rla”¥!›šGbÓíêÂ(à 65ŽÅ¦7,±¹³©Ë#6%#›½¡Ò²©³ ³Ù¥WÔÄYÁgj¢ºyv…ËtûÒì3“§¯ÇºáHUq—ð›ÕóŸüB šôã«}{ü’™iš¬ÚÆ~>ð?í¯-¿[íqë• ‰ÆYºíÞ%õ!!Šçé/å-­ûÀXB+õ‘CVjÕJÿ†‚V*&P1e4P1AªV¢ØY RµÄj%ŠÅJ´ô™•3þ«±•Dz’n
+X©³ [Ù¥×Xy¢2T1/.ðvS·*]íð«™Îõêh_›C²ËL‘6Lf›<Ð!G·¼qÝíx!eò ¿'»W–ÖûœóQÅðÅ*õ‰CTj•Jÿ~‚TÎs2S)£Z R¥ÅŽJ*• V*Q,T¢¥Ï¨Ìé¼ôke'®£RâŽJÿ'•ùŒ¾g$•²tGe‡½P©¹R9f´
+ß>>%ë¦i7R8sW-WŒÕÒCÐ?}Œæg÷ªú§¹ú÷µ¿: žk@õh©e  Ê@  ‚TÕC±S¤ªˆU=‹zhé3õl„ ¢Ä±
+¢É鱩ž, ¢æ‘
+¢7š§žoVO†AQãXÑ–nôEX=]DÉßX{C¥ª§³ Ä.½¢ æ‹SC  ç3¶Ì¿v{ªy ¿R)L“'¾>ð^ü_ò¹mÖ™™R§|å]h¢ZK!~Ù&ÍŽ¹LˆÆOvÓaÓümh›Xë½­t8âQŸ7T5Zý» BI·O¨‡2¨‡ U(Qì ©B b…Å%ZÚ‡’PÊq;”4V9$”f§r˜‡˜”•Q7Ô8R5ôë!i–S÷û'„¤Ìš¡¦±Š¡7ªÉ $RW½Pâ7ÖÂÞH¸ê$ƒ­° ¯(…4~Çc¨z'ì6+ÓæÜFú¡K«ñëÞq¸¢ºç6ÿ“™%wAj€Ÿ’•Û¶}v
+€ ÿPêøCËúú-ô×Á–(i¤’¸œò…Ÿ,Œ*¢Æq¢7×¥}á‚(£€~¨i¤zèMJíæèÓÅA9”ømÝ°7QZ ùtÁfØ…×Ãy'¯äóN×ýáØ6®åYûŒß »Þ¸çhŸMÈÆu¶$ ·+ÚûÉOYnÒ?()S[mýs]3yºü?þ’-Òïè«Þ?p»
+êcº Æ1«àÙs3D8+p”¹†{ Å@”ZA(‚T D©3-ëXU7SÜ
+endstream endobj 1458 0 obj <</Contents 1459 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1541 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1459 0 obj <</Filter/FlateDecode/Length 2398>>stream
+H‰´—Ý’Û¸…_—ä…¸
+åVHXÒNh“•y#VµÉj•‹Í£HÞoÖ÷vÁûøŸÈ›"ƒÍ«ª°\×™*…’°¹èZñ³8ˆ»Mè÷Öî½¢2_ÆÝ–Þ£–Îã?\ÝÍJ¤J'F
+_sñ“û KURdRü’¤ªLtºR‰ÄϾ3é?7AÃ?€e£uVÖ½å<êŽhWOÜ%+ß·¿ ÷7ðóÖf¦„ Kä2«†®WY£¿Ö󼺬cw™Ö)~IƒJº‘™
+î¯ù†:n‹:ùèŠ`.‡*UsÍ™aŠª‹)
+}¢üû´NpŽ É…\ü†¯-J—šä„oöǃHUž(í¾…ã%Å Ûï=·[üôÔ
+;…z˜/eÿÁI \R‰þLkV×Ã= SgeÑËy§(ïÂ3 ×­ãw7Ë-Œ]l©ñ
+yë5Mfgà3Ð'x ¬{Z®´váÌmva ùÉJ媑h³™÷ªÀ&3ºÊÊ‘WSa_{¹ÈòòÛÛèv»0«t)wuÞE-'wQÕ#÷ª5kolÊî11•hBpïEK3jES…•´¬Â›®›_שøAs;_4íþpñtìÎûT©NÔ}‚£$Ö÷›TÉßà<þ †áÃGø!ÖçíáqõæÙ~ïÐÚ¸?Øc÷&Í“þõ!UÕÌÝ02φKÌ‹ÉÜh
+t•Ww ÁÈKÈØ-g&ƒU£‘1Æ3UI(ª„¥·ýáœÄ¢Öxo9·Tã‹ýUÙÏ~Ñ©MÕ¼ª @°æå:ÏxNò{©³ªäeQ\é F‹^xŒzy)Œ‰ ŒæQŒúÒ,FI_£#kF ˜Q´YÅ1êÍp%y)ŒŽÌ*m˜NF©<‡Q¯¿£©¤`1J^æ1Ú«7`4W=F1J³ÜáÒ%ŽÓùØm±}çÔ¦ÛÉã“økªóä.]5‰}·†iwí¶k;±n;H62ÙïÚ¾
+€«]ö6=ìíö3ÉK¸MObï6ÇXþ#ü›®jž¸tú8â’¾(q'³•©yâš&ÓõTËðt~È™Ç&£69Ùa“Q ›ŒLØädM®ô›9œÄHúôòRØÌ|ž¸›¾4‹MÒÂæÈÚ%6‹86½›$/…Í‘YHŸLŽ'lRy›^%6S‰b±I^æ±Ù«·¤ÏrHŸu›£¦}%}~pOogñ~õw˜›DÃ)>XšÚ÷÷íá¼?ÿnútì
+pÈÌ Ë(}i¤/„À‘µ
+#³J× =©<‡@¯¿2¦"Á¼Ìƒ¯WÿÁðâo_^ŽÝ¹Eè}îžý†oŸ®tÒ~IUäq—Ç2Ò v“[ŸåóTÓxlxªykL°cT¢';ª1*Q‘‰jœì©Æ•S­lŠLi¢Œ=ìRM0ËQM–Жë¨FÎÕgD5om)ª¬]R-þ¸Kf-ÕB¯žjÞëbT™ªÕQªõî,ÕB{žjÞÞ+©˜â©Ö{ªNˆjÔ¨[¨–çCœ3ªšÖ?îæ ¥9û¸›Ãã®NÄùW|ÛŠ½Íh»®µ±íÔ>ÚF[îmŸ?·¢ÃçÙíá“û6>êþ˜–6õáë)0qk·xdd“\~áâ¶ùf ­¢fÐ!Ž5£œÇb߆²)‘¾ í“»Äýyo¯>šIÉ‘ãxH ÏqÂÅÍg>™s᪀ÑbN®íçi‡pNõge‹pNõçdpVvgKONl,Ÿ¦$/„ð²6˜®C¸/ÍÓ^_áck#„×W Ü›a‚i//„ð±Y@xG8•g‚)é¯Cxh*‚pò2Lõ–`ª‡`ZDØ5jÚÝ»µXoÏíósª
+oÿm¡n¸:BÇQ÷Þ­>Z²uíEÂUC¡ÆÅÐóï˜j_ZŸnqé³ÍÇí ?`HG©˜Ì+1tbà×ûuN%+æìËKžÞ±„œy2*1“•ÈÈÄ@Nö äJOXJ‹™`è奂a©³Z^É@_š †¤/ GÖnf 7ÃC’—
+†#³À@g •ç‚¡×_ S‘`H^æƒa¯Þ ›}*‚¾‹;¼}y9vç{÷¹³°³1ϲmŸ®tÒ~IU“¬Þ¬?‚–)±³h<œ,)!æøÑß[6ŠÝ¯–‡;üå?Q(ÒÙâ‚!é×Ã
+'󡘡#q ©’¢ðXΨ¬ –zN2K‡£Ž*@³ÑÁZ¢(³ÏžîU{ô‚µ±ÜR8&XkÆ°˜̬F¹lã(½òxæš÷>¸&wóƒÕžÞÜêyX ƒó÷ó€ühJè°ä=´¬D–Fáh¸ÃjϪ*2ÕÀ7ìÕ•ÎP{ä?
+endstream endobj 1460 0 obj <</Contents 1461 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 1541 0 R/Resources<</ExtGState<</GS0 1558 0 R>>/Font<</T1_0 1549 0 R/T1_1 1551 0 R/T1_2 1548 0 R/T1_3 1464 0 R/T1_4 1547 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 1461 0 obj <</Filter/FlateDecode/Length 846>>stream
+H‰œ–MsÓ0†ÿÊ¥CT­¾u¤C§Ð …zÊ2LÒR¦M IaúïYIvl§Q(L'±›W«}÷ÑJöq2ÿ­náèôBÂíŽü"¡¹(¤´*ˆ`pRjð…VÒAó
+ŽŠY0˜®.Ë‚#3BÂãè˜âd2ýŽéÎòÏÍY2üž,[¥„ [Ëú Ûdt 0Gï¸c“H™ßçG%â_‰h¿'‘Ý“Hš+>È¥¢8Àoÿ#Q™c7‘Ñ8¬‰Ú¦ÏâãKÙö‹ìŸ-ò°û5Ö§<°óó´ÌT½Éë§áWºÎÓ:®¸eëts·\
+Á# 0&‘¹éòéž ö\07?Õ@„°dVT8ÒL)5uš ]ê×Ü°%WlÆ{¤{à˜Êul±¡ºáy£+Ùsì)Yì:A;Îët¡44{ùÊÇ¢ ÔÝf(뼡££NhEŒ"îÄVäéÑXÌgŽðÎëÒ1ÑYW:&m"')8‘‘*-™Kªš,ŽÈàý;#Xâ°¼ž¯€+ï%SYE“Çpk ;L÷×÷4îŽ>³é¦½K½5F‡´å>:YvÑQ}ÝÚ#õ”; GŸ‹ªÈ-½š<¦W#åȱ2;¤´È'#œMéú˜¾¦DŒ›€<qeØu+7ÆeXêE°\¤»·•ŠìéQúzÈõVMnaUäVEÞÓjzÛjx¨Õœn i¾âèÙUÂÀ  e™O¬û'rÞ楮‘³¥ käjrK®"wä*ò˜œ£3²œ_ò 4ƒ"lu èâ³ÉY“«V®¶£cc·ÜšÜ–[‘»r+ò w•ÂÁùS­O›ƒ§šÞ‚’B…}*µß0´+¾‹TŠv[ÙÓàap‹¦Czoéd­é° ÏUß{ä>xg–—1Ýî‘ë¤Ýy5%¤
+endstream endobj 1462 0 obj <</BaseFont/Times-Italic/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1463 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444]>> endobj 1463 0 obj <</Ascent 699/CapHeight 653/Descent -205/Flags 98/FontBBox[-169 -217 1010 883]/FontName/Times-Italic/ItalicAngle -15.5/StemH 76/StemV 76/Type/FontDescriptor/XHeight 441>> endobj 1464 0 obj <</BaseFont/Times-Bold/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1465 0 R/LastChar 150/Subtype/Type1/Type/Font/Widths[250 333 555 500 500 1000 833 278 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 350 500 350 333 500 500 1000 500 500 333 1000 556 333 1000 350 667 350 350 333 333 500 500 350 500]>> endobj 1465 0 obj <</Ascent 699/CapHeight 676/Descent -205/Flags 262178/FontBBox[-168 -218 1000 935]/FontName/Times-Bold/ItalicAngle 0/StemH 139/StemV 139/Type/FontDescriptor/XHeight 461>> endobj 1466 0 obj <</CharProcs 1470 0 R/Encoding 1469 0 R/FirstChar 0/FontBBox[0 0 1 1]/FontMatrix[0.01087 0 0 -0.01087 0 0]/LastChar 0/Name/T9/Resources 1468 0 R/Subtype/Type3/ToUnicode 1467 0 R/Type/Font/Widths[21]>> endobj 1467 0 obj <</Filter/FlateDecode/Length 211>>stream
+hÞTP»nÃ0 ÜõtìN /éâ!ÔIvE¢1%Ðòà¿ä:):ð
+0
+endstream endobj 1468 0 obj <</ProcSet[/PDF/ImageB]>> endobj 1469 0 obj <</Differences[0/g3]/Type/Encoding>> endobj 1470 0 obj <</g3 1471 0 R>> endobj 1471 0 obj <</Filter/FlateDecode/Length 66>>stream
+hÞ22T0
+endstream endobj 1472 0 obj <</BaseFont/Courier-Bold/Encoding/WinAnsiEncoding/FirstChar 46/FontDescriptor 647 0 R/LastChar 46/Subtype/Type1/Type/Font/Widths[600]>> endobj 1473 0 obj <</Filter/FlateDecode/Length 240>>stream
+hÞTP»nÄ ìý[^”‚‡OQ"!G‘\ä¡ø’žƒµ)„qá¿pÖE)@³™]ÒõϽ³ ÈGôzÀ£u&ââרÎ8YŒƒ±:íQýõ¬L¶%áܻу ùÌÅ%Å /ŒÞÓ; ïÑ`´n‚É}}çÄ°†ðƒ3º¤ƒcCºWÞÔŒ@*ï/yÚ¯1ÛG{ƒKP£r‚ \‚x¤ЙÿµæxeœG}Q±¹vröÄeÆmÁüá˜q«3¦´í2.B‚Sž{²ÞÎ,Êeá›K½Æ˜¨W©6‹Aëðv¸àCñS^ó+À
+endstream endobj 1474 0 obj <</Ascent 0/CapHeight 0/CharSet(/space/arrowright/bullet/lessequal/less)/Descent 0/Flags 4/FontBBox[-180 -293 1090 1010]/FontFile3 1475 0 R/FontName/OFGCHH+Symbol/ItalicAngle 0/StemH 92/StemV 85/Type/FontDescriptor>> endobj 1475 0 obj <</Filter/FlateDecode/Length 376/Subtype/Type1C>>stream
+hÞbd`ab`ddäówswöðЮÌMÊω¨ÿeü!ÎòCŽGì·Çï¿®ýjc•e`Xþ…÷{0ÿ÷8ï©‚ó~H 1°02r‰ä—椧–&æ$å—e¦g”8çT‚
+Éš
+†–¦: ÒLZ‚HK0i®à˜’Ÿ”ª\Y\’š[¬à™—œ_T_”X’š¢§à˜“£
+endstream endobj 1476 0 obj <</Differences[2/arrowright/lessequal 60/less 128/bullet]/Type/Encoding>> endobj 1477 0 obj <</BaseFont/OFGCHH+Symbol/Encoding 1476 0 R/FirstChar 2/FontDescriptor 1474 0 R/LastChar 128/Subtype/Type1/ToUnicode 1473 0 R/Type/Font/Widths[987 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 460]>> endobj 1478 0 obj <</CharProcs 859 0 R/Encoding 860 0 R/FirstChar 0/FontBBox[6 -60 74 0]/FontMatrix[0.01205 0 0 -0.01205 0 0]/LastChar 0/Name/T10/Resources 861 0 R/Subtype/Type3/Type/Font/Widths[81]>> endobj 1479 0 obj <</CharProcs 1483 0 R/Encoding 1482 0 R/FirstChar 0/FontBBox[0 -51 30 1]/FontMatrix[0.01333 0 0 -0.01333 0 0]/LastChar 2/Name/T11/Resources 1481 0 R/Subtype/Type3/ToUnicode 1480 0 R/Type/Font/Widths[38 0 38]>> endobj 1480 0 obj <</Filter/FlateDecode/Length 222>>stream
+hÞT½nÅ …wžÂc«Ú¥RÄr»dèšÛî\pR¤Æ ‡ yûnÕ ûÃÇÈÓð4PÈ ß8º3L<ã7vœA§Á—¬E·Ø²Àã¾f\š"ô½ï¥¸fÞáæÜuwêä+{ä@sQî?>‹0n)}ã‚”A1àqòôlÓ‹]dãþÄóžtË»ctô¸&ë-ͽR¦m
+endstream endobj 1481 0 obj <</ProcSet[/PDF/ImageB]>> endobj 1482 0 obj <</Differences[0/g3 2/g44]/Type/Encoding>> endobj 1483 0 obj <</g3 1485 0 R/g44 1484 0 R>> endobj 1484 0 obj <</Filter/FlateDecode/Length 100>>stream
+hÞ2¶P0P0WÐ55T06PÐ5TH1ä*ä22Š¹¦`9C…ä\.'O.ýp#c.}S.}§
+endstream endobj 1485 0 obj <</Filter/FlateDecode/Length 67>>stream
+hÞ2¶P0
+†\ú Â)ÀDyú*”•¦ryºpýçrõä
+ä0
+endstream endobj 1486 0 obj <</BaseFont/Courier/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1487 0 R/LastChar 150/Subtype/Type1/Type/Font/Widths[600 0 600 0 0 0 600 0 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600]>> endobj 1487 0 obj <</Ascent 629/CapHeight 562/Descent -157/Flags 35/FontBBox[-28 -250 628 805]/FontName/Courier/ItalicAngle 0/StemH 51/StemV 51/Type/FontDescriptor/XHeight 426>> endobj 1488 0 obj <</BaseFont/Courier-Oblique/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 1489 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[600 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 0 600 0 600 0 0 600 600 600 600 600 0 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600]>> endobj 1489 0 obj <</Ascent 629/CapHeight 562/Descent -157/Flags 99/FontBBox[-28 -250 742 805]/FontName/Courier-Oblique/ItalicAngle -12/StemH 51/StemV 51/Type/FontDescriptor/XHeight 426>> endobj 1490 0 obj <</Nums[0 1491 0 R]>> endobj 1491 0 obj <</S/D>> endobj 1492 0 obj <</Count 432/Kids[1493 0 R 1504 0 R 1515 0 R 1526 0 R 1537 0 R]/Type/Pages>> endobj 1493 0 obj <</Count 100/Kids[1494 0 R 1495 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R]/Parent 1492 0 R/Type/Pages>> endobj 1494 0 obj <</Count 10/Kids[1546 0 R 1 0 R 6 0 R 11 0 R 63 0 R 127 0 R 191 0 R 255 0 R 318 0 R 382 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1495 0 obj <</Count 10/Kids[446 0 R 510 0 R 574 0 R 619 0 R 621 0 R 623 0 R 625 0 R 627 0 R 629 0 R 631 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1496 0 obj <</Count 10/Kids[633 0 R 635 0 R 637 0 R 639 0 R 641 0 R 643 0 R 645 0 R 648 0 R 650 0 R 652 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1497 0 obj <</Count 10/Kids[654 0 R 656 0 R 658 0 R 660 0 R 662 0 R 664 0 R 666 0 R 668 0 R 670 0 R 672 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1498 0 obj <</Count 10/Kids[674 0 R 676 0 R 678 0 R 680 0 R 682 0 R 684 0 R 686 0 R 688 0 R 690 0 R 692 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1499 0 obj <</Count 10/Kids[694 0 R 696 0 R 698 0 R 700 0 R 702 0 R 704 0 R 706 0 R 708 0 R 710 0 R 712 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1500 0 obj <</Count 10/Kids[714 0 R 716 0 R 718 0 R 720 0 R 722 0 R 724 0 R 726 0 R 728 0 R 730 0 R 732 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1501 0 obj <</Count 10/Kids[734 0 R 736 0 R 738 0 R 740 0 R 742 0 R 744 0 R 746 0 R 748 0 R 750 0 R 752 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1502 0 obj <</Count 10/Kids[754 0 R 756 0 R 758 0 R 760 0 R 762 0 R 764 0 R 766 0 R 768 0 R 770 0 R 772 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1503 0 obj <</Count 10/Kids[774 0 R 776 0 R 778 0 R 780 0 R 782 0 R 784 0 R 786 0 R 788 0 R 790 0 R 792 0 R]/Parent 1493 0 R/Type/Pages>> endobj 1504 0 obj <</Count 100/Kids[1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1512 0 R 1513 0 R 1514 0 R]/Parent 1492 0 R/Type/Pages>> endobj 1505 0 obj <</Count 10/Kids[794 0 R 796 0 R 798 0 R 800 0 R 802 0 R 804 0 R 806 0 R 808 0 R 810 0 R 812 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1506 0 obj <</Count 10/Kids[814 0 R 816 0 R 818 0 R 820 0 R 822 0 R 824 0 R 826 0 R 828 0 R 830 0 R 832 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1507 0 obj <</Count 10/Kids[834 0 R 836 0 R 838 0 R 840 0 R 842 0 R 844 0 R 846 0 R 848 0 R 850 0 R 852 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1508 0 obj <</Count 10/Kids[854 0 R 856 0 R 862 0 R 864 0 R 866 0 R 868 0 R 870 0 R 872 0 R 874 0 R 876 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1509 0 obj <</Count 10/Kids[878 0 R 880 0 R 882 0 R 884 0 R 886 0 R 888 0 R 890 0 R 892 0 R 894 0 R 896 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1510 0 obj <</Count 10/Kids[898 0 R 900 0 R 902 0 R 904 0 R 906 0 R 908 0 R 910 0 R 912 0 R 914 0 R 916 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1511 0 obj <</Count 10/Kids[918 0 R 920 0 R 922 0 R 924 0 R 926 0 R 928 0 R 930 0 R 932 0 R 934 0 R 936 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1512 0 obj <</Count 10/Kids[938 0 R 940 0 R 942 0 R 944 0 R 946 0 R 948 0 R 950 0 R 952 0 R 954 0 R 956 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1513 0 obj <</Count 10/Kids[958 0 R 960 0 R 962 0 R 964 0 R 966 0 R 968 0 R 970 0 R 972 0 R 974 0 R 976 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1514 0 obj <</Count 10/Kids[978 0 R 980 0 R 982 0 R 984 0 R 986 0 R 988 0 R 990 0 R 992 0 R 994 0 R 996 0 R]/Parent 1504 0 R/Type/Pages>> endobj 1515 0 obj <</Count 100/Kids[1516 0 R 1517 0 R 1518 0 R 1519 0 R 1520 0 R 1521 0 R 1522 0 R 1523 0 R 1524 0 R 1525 0 R]/Parent 1492 0 R/Type/Pages>> endobj 1516 0 obj <</Count 10/Kids[998 0 R 1000 0 R 1002 0 R 1004 0 R 1006 0 R 1008 0 R 1010 0 R 1012 0 R 1014 0 R 1016 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1517 0 obj <</Count 10/Kids[1018 0 R 1020 0 R 1022 0 R 1024 0 R 1026 0 R 1028 0 R 1030 0 R 1032 0 R 1034 0 R 1036 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1518 0 obj <</Count 10/Kids[1038 0 R 1040 0 R 1042 0 R 1044 0 R 1046 0 R 1048 0 R 1050 0 R 1052 0 R 1054 0 R 1056 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1519 0 obj <</Count 10/Kids[1058 0 R 1060 0 R 1062 0 R 1064 0 R 1066 0 R 1068 0 R 1070 0 R 1072 0 R 1074 0 R 1076 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1520 0 obj <</Count 10/Kids[1078 0 R 1080 0 R 1082 0 R 1084 0 R 1086 0 R 1088 0 R 1090 0 R 1092 0 R 1094 0 R 1096 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1521 0 obj <</Count 10/Kids[1098 0 R 1100 0 R 1102 0 R 1104 0 R 1106 0 R 1108 0 R 1110 0 R 1112 0 R 1114 0 R 1116 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1522 0 obj <</Count 10/Kids[1118 0 R 1120 0 R 1122 0 R 1124 0 R 1126 0 R 1128 0 R 1130 0 R 1132 0 R 1134 0 R 1136 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1523 0 obj <</Count 10/Kids[1138 0 R 1140 0 R 1142 0 R 1144 0 R 1146 0 R 1148 0 R 1150 0 R 1152 0 R 1154 0 R 1156 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1524 0 obj <</Count 10/Kids[1158 0 R 1160 0 R 1162 0 R 1164 0 R 1166 0 R 1168 0 R 1170 0 R 1172 0 R 1174 0 R 1176 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1525 0 obj <</Count 10/Kids[1178 0 R 1180 0 R 1182 0 R 1184 0 R 1186 0 R 1188 0 R 1190 0 R 1192 0 R 1194 0 R 1196 0 R]/Parent 1515 0 R/Type/Pages>> endobj 1526 0 obj <</Count 100/Kids[1527 0 R 1528 0 R 1529 0 R 1530 0 R 1531 0 R 1532 0 R 1533 0 R 1534 0 R 1535 0 R 1536 0 R]/Parent 1492 0 R/Type/Pages>> endobj 1527 0 obj <</Count 10/Kids[1198 0 R 1200 0 R 1202 0 R 1204 0 R 1206 0 R 1208 0 R 1210 0 R 1212 0 R 1214 0 R 1216 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1528 0 obj <</Count 10/Kids[1218 0 R 1220 0 R 1222 0 R 1224 0 R 1226 0 R 1228 0 R 1230 0 R 1232 0 R 1234 0 R 1236 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1529 0 obj <</Count 10/Kids[1238 0 R 1240 0 R 1242 0 R 1244 0 R 1246 0 R 1248 0 R 1250 0 R 1252 0 R 1254 0 R 1256 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1530 0 obj <</Count 10/Kids[1258 0 R 1260 0 R 1262 0 R 1264 0 R 1266 0 R 1268 0 R 1270 0 R 1272 0 R 1274 0 R 1276 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1531 0 obj <</Count 10/Kids[1278 0 R 1280 0 R 1282 0 R 1284 0 R 1286 0 R 1288 0 R 1290 0 R 1292 0 R 1294 0 R 1296 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1532 0 obj <</Count 10/Kids[1298 0 R 1300 0 R 1302 0 R 1304 0 R 1306 0 R 1308 0 R 1310 0 R 1312 0 R 1314 0 R 1316 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1533 0 obj <</Count 10/Kids[1318 0 R 1320 0 R 1322 0 R 1324 0 R 1326 0 R 1328 0 R 1330 0 R 1332 0 R 1334 0 R 1336 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1534 0 obj <</Count 10/Kids[1338 0 R 1340 0 R 1342 0 R 1344 0 R 1346 0 R 1348 0 R 1350 0 R 1352 0 R 1354 0 R 1356 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1535 0 obj <</Count 10/Kids[1358 0 R 1360 0 R 1362 0 R 1364 0 R 1366 0 R 1368 0 R 1370 0 R 1372 0 R 1374 0 R 1376 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1536 0 obj <</Count 10/Kids[1378 0 R 1380 0 R 1382 0 R 1384 0 R 1386 0 R 1388 0 R 1390 0 R 1392 0 R 1394 0 R 1396 0 R]/Parent 1526 0 R/Type/Pages>> endobj 1537 0 obj <</Count 32/Kids[1538 0 R 1539 0 R 1540 0 R 1541 0 R]/Parent 1492 0 R/Type/Pages>> endobj 1538 0 obj <</Count 10/Kids[1398 0 R 1400 0 R 1402 0 R 1404 0 R 1406 0 R 1408 0 R 1410 0 R 1412 0 R 1414 0 R 1416 0 R]/Parent 1537 0 R/Type/Pages>> endobj 1539 0 obj <</Count 10/Kids[1418 0 R 1420 0 R 1422 0 R 1424 0 R 1426 0 R 1428 0 R 1430 0 R 1432 0 R 1434 0 R 1436 0 R]/Parent 1537 0 R/Type/Pages>> endobj 1540 0 obj <</Count 10/Kids[1438 0 R 1440 0 R 1442 0 R 1444 0 R 1446 0 R 1448 0 R 1450 0 R 1452 0 R 1454 0 R 1456 0 R]/Parent 1537 0 R/Type/Pages>> endobj 1541 0 obj <</Count 2/Kids[1458 0 R 1460 0 R]/Parent 1537 0 R/Type/Pages>> endobj 1542 0 obj <</Length 4037/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TS 125 413 - V12.4.0 - Universal Mobile Telecommunications System (UMTS); UTRAN Iu interface Radio Access Network Application Part (RANAP) signalling (3GPP TS 25.413 version 12.4.0 Release 12)</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>TSGR</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ <dc:description>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TS 125 413 - V12.4.0</rdf:li>
+ </rdf:Alt>
+ </dc:description>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/">
+ <xmp:CreateDate>2015-04-08T08:35:46+02:00</xmp:CreateDate>
+ <xmp:CreatorTool>ETSI Secretariat</xmp:CreatorTool>
+ <xmp:ModifyDate>2015-04-08T09:11:33+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2015-04-08T09:11:33+02:00</xmp:MetadataDate>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Acrobat Distiller 10.0.0 (Windows)</pdf:Producer>
+ <pdf:Keywords>UMTS</pdf:Keywords>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
+ <xmpMM:DocumentID>uuid:c1db360c-3ae5-4a15-b6c3-e20c83e904dc</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:eb6681cd-d518-4930-a431-3ec3cd607fb5</xmpMM:InstanceID>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 1543 0 obj <</Author(TSGR)/CreationDate(D:20150408083546+02'00')/Creator(ETSI Secretariat)/Keywords(UMTS)/ModDate(D:20150408091133+02'00')/Producer(Acrobat Distiller 10.0.0 \(Windows\))/Subject(TS 125 413 - V12.4.0)/Title(TS 125 413 - V12.4.0 - Universal Mobile Telecommunications System \(UMTS\); UTRAN Iu interface Radio Access Network Application Part \(RANAP\) signalling \(3GPP TS 25.413 version 12.4.0 Release 12\))>> endobj xref
+0 1544
+0000000000 65535 f
+0000237877 00000 n
+0000238141 00000 n
+0000238275 00000 n
+0000238418 00000 n
+0000238572 00000 n
+0000242038 00000 n
+0000242331 00000 n
+0000242463 00000 n
+0000242600 00000 n
+0000242769 00000 n
+0000245969 00000 n
+0000246581 00000 n
+0000246698 00000 n
+0000246815 00000 n
+0000246932 00000 n
+0000247051 00000 n
+0000247170 00000 n
+0000247289 00000 n
+0000247408 00000 n
+0000247525 00000 n
+0000247642 00000 n
+0000247759 00000 n
+0000247878 00000 n
+0000247995 00000 n
+0000248112 00000 n
+0000248229 00000 n
+0000248348 00000 n
+0000248467 00000 n
+0000248586 00000 n
+0000248705 00000 n
+0000248822 00000 n
+0000248939 00000 n
+0000249056 00000 n
+0000249173 00000 n
+0000249290 00000 n
+0000249407 00000 n
+0000249524 00000 n
+0000249641 00000 n
+0000249758 00000 n
+0000249875 00000 n
+0000249992 00000 n
+0000250109 00000 n
+0000250226 00000 n
+0000250343 00000 n
+0000250460 00000 n
+0000250577 00000 n
+0000250694 00000 n
+0000250811 00000 n
+0000250928 00000 n
+0000251045 00000 n
+0000251162 00000 n
+0000251279 00000 n
+0000251396 00000 n
+0000251513 00000 n
+0000251630 00000 n
+0000251747 00000 n
+0000251864 00000 n
+0000251981 00000 n
+0000252097 00000 n
+0000252212 00000 n
+0000252327 00000 n
+0000252442 00000 n
+0000255342 00000 n
+0000256051 00000 n
+0000256168 00000 n
+0000256285 00000 n
+0000256402 00000 n
+0000256519 00000 n
+0000256636 00000 n
+0000256753 00000 n
+0000256870 00000 n
+0000256987 00000 n
+0000257104 00000 n
+0000257221 00000 n
+0000257338 00000 n
+0000257455 00000 n
+0000257572 00000 n
+0000257689 00000 n
+0000257806 00000 n
+0000257923 00000 n
+0000258040 00000 n
+0000258157 00000 n
+0000258274 00000 n
+0000258391 00000 n
+0000258508 00000 n
+0000258625 00000 n
+0000258742 00000 n
+0000258859 00000 n
+0000258976 00000 n
+0000259093 00000 n
+0000259210 00000 n
+0000259327 00000 n
+0000259444 00000 n
+0000259561 00000 n
+0000259678 00000 n
+0000259795 00000 n
+0000259912 00000 n
+0000260029 00000 n
+0000260146 00000 n
+0000260263 00000 n
+0000260381 00000 n
+0000260499 00000 n
+0000260617 00000 n
+0000260735 00000 n
+0000260853 00000 n
+0000260971 00000 n
+0000261089 00000 n
+0000261207 00000 n
+0000261325 00000 n
+0000261443 00000 n
+0000261561 00000 n
+0000261679 00000 n
+0000261797 00000 n
+0000261915 00000 n
+0000262033 00000 n
+0000262151 00000 n
+0000262269 00000 n
+0000262387 00000 n
+0000262505 00000 n
+0000262623 00000 n
+0000262741 00000 n
+0000262859 00000 n
+0000262976 00000 n
+0000263092 00000 n
+0000263208 00000 n
+0000263324 00000 n
+0000265844 00000 n
+0000266590 00000 n
+0000266708 00000 n
+0000266826 00000 n
+0000266944 00000 n
+0000267062 00000 n
+0000267180 00000 n
+0000267298 00000 n
+0000267416 00000 n
+0000267534 00000 n
+0000267652 00000 n
+0000267770 00000 n
+0000267888 00000 n
+0000268006 00000 n
+0000268124 00000 n
+0000268242 00000 n
+0000268360 00000 n
+0000268478 00000 n
+0000268596 00000 n
+0000268714 00000 n
+0000268832 00000 n
+0000268950 00000 n
+0000269068 00000 n
+0000269186 00000 n
+0000269304 00000 n
+0000269422 00000 n
+0000269540 00000 n
+0000269658 00000 n
+0000269776 00000 n
+0000269894 00000 n
+0000270012 00000 n
+0000270130 00000 n
+0000270248 00000 n
+0000270366 00000 n
+0000270484 00000 n
+0000270602 00000 n
+0000270720 00000 n
+0000270838 00000 n
+0000270956 00000 n
+0000271074 00000 n
+0000271192 00000 n
+0000271310 00000 n
+0000271428 00000 n
+0000271546 00000 n
+0000271664 00000 n
+0000271782 00000 n
+0000271900 00000 n
+0000272018 00000 n
+0000272136 00000 n
+0000272254 00000 n
+0000272372 00000 n
+0000272490 00000 n
+0000272608 00000 n
+0000272726 00000 n
+0000272844 00000 n
+0000272962 00000 n
+0000273080 00000 n
+0000273198 00000 n
+0000273316 00000 n
+0000273434 00000 n
+0000273551 00000 n
+0000273667 00000 n
+0000273783 00000 n
+0000273899 00000 n
+0000276807 00000 n
+0000277553 00000 n
+0000277671 00000 n
+0000277789 00000 n
+0000277907 00000 n
+0000278025 00000 n
+0000278143 00000 n
+0000278261 00000 n
+0000278379 00000 n
+0000278497 00000 n
+0000278615 00000 n
+0000278733 00000 n
+0000278851 00000 n
+0000278969 00000 n
+0000279087 00000 n
+0000279205 00000 n
+0000279323 00000 n
+0000279441 00000 n
+0000279559 00000 n
+0000279677 00000 n
+0000279795 00000 n
+0000279913 00000 n
+0000280031 00000 n
+0000280149 00000 n
+0000280267 00000 n
+0000280385 00000 n
+0000280503 00000 n
+0000280621 00000 n
+0000280739 00000 n
+0000280857 00000 n
+0000280975 00000 n
+0000281093 00000 n
+0000281211 00000 n
+0000281329 00000 n
+0000281447 00000 n
+0000281565 00000 n
+0000281683 00000 n
+0000281801 00000 n
+0000281919 00000 n
+0000282037 00000 n
+0000282155 00000 n
+0000282273 00000 n
+0000282391 00000 n
+0000282509 00000 n
+0000282627 00000 n
+0000282745 00000 n
+0000282863 00000 n
+0000282981 00000 n
+0000283099 00000 n
+0000283217 00000 n
+0000283335 00000 n
+0000283453 00000 n
+0000283571 00000 n
+0000283689 00000 n
+0000283807 00000 n
+0000283925 00000 n
+0000284043 00000 n
+0000284161 00000 n
+0000284279 00000 n
+0000284397 00000 n
+0000284514 00000 n
+0000284630 00000 n
+0000284746 00000 n
+0000284862 00000 n
+0000287224 00000 n
+0000287962 00000 n
+0000288080 00000 n
+0000288198 00000 n
+0000288316 00000 n
+0000288434 00000 n
+0000288552 00000 n
+0000288670 00000 n
+0000288788 00000 n
+0000288906 00000 n
+0000289024 00000 n
+0000289144 00000 n
+0000289262 00000 n
+0000289380 00000 n
+0000289498 00000 n
+0000289616 00000 n
+0000289734 00000 n
+0000289852 00000 n
+0000289970 00000 n
+0000290088 00000 n
+0000290206 00000 n
+0000290324 00000 n
+0000290442 00000 n
+0000290560 00000 n
+0000290678 00000 n
+0000290796 00000 n
+0000290914 00000 n
+0000291032 00000 n
+0000291150 00000 n
+0000291268 00000 n
+0000291386 00000 n
+0000291504 00000 n
+0000291622 00000 n
+0000291740 00000 n
+0000291858 00000 n
+0000291976 00000 n
+0000292094 00000 n
+0000292212 00000 n
+0000292330 00000 n
+0000292448 00000 n
+0000292566 00000 n
+0000292684 00000 n
+0000292802 00000 n
+0000292920 00000 n
+0000293038 00000 n
+0000293156 00000 n
+0000293274 00000 n
+0000293392 00000 n
+0000293510 00000 n
+0000293628 00000 n
+0000293746 00000 n
+0000293864 00000 n
+0000293982 00000 n
+0000294100 00000 n
+0000294218 00000 n
+0000294336 00000 n
+0000294454 00000 n
+0000294572 00000 n
+0000294690 00000 n
+0000294807 00000 n
+0000294923 00000 n
+0000295039 00000 n
+0000295155 00000 n
+0000298821 00000 n
+0000299581 00000 n
+0000299699 00000 n
+0000299817 00000 n
+0000299935 00000 n
+0000300053 00000 n
+0000300171 00000 n
+0000300289 00000 n
+0000300407 00000 n
+0000300525 00000 n
+0000300643 00000 n
+0000300761 00000 n
+0000300879 00000 n
+0000300997 00000 n
+0000301115 00000 n
+0000301233 00000 n
+0000301351 00000 n
+0000301469 00000 n
+0000301587 00000 n
+0000301705 00000 n
+0000301823 00000 n
+0000301941 00000 n
+0000302059 00000 n
+0000302177 00000 n
+0000302295 00000 n
+0000302413 00000 n
+0000302531 00000 n
+0000302649 00000 n
+0000302767 00000 n
+0000302885 00000 n
+0000303003 00000 n
+0000303121 00000 n
+0000303239 00000 n
+0000303357 00000 n
+0000303475 00000 n
+0000303593 00000 n
+0000303711 00000 n
+0000303829 00000 n
+0000303947 00000 n
+0000304065 00000 n
+0000304183 00000 n
+0000304301 00000 n
+0000304419 00000 n
+0000304537 00000 n
+0000304655 00000 n
+0000304773 00000 n
+0000304891 00000 n
+0000305009 00000 n
+0000305127 00000 n
+0000305245 00000 n
+0000305363 00000 n
+0000305481 00000 n
+0000305599 00000 n
+0000305717 00000 n
+0000305835 00000 n
+0000305953 00000 n
+0000306071 00000 n
+0000306189 00000 n
+0000306307 00000 n
+0000306425 00000 n
+0000306542 00000 n
+0000306658 00000 n
+0000306774 00000 n
+0000306890 00000 n
+0000310762 00000 n
+0000311508 00000 n
+0000311626 00000 n
+0000311744 00000 n
+0000311862 00000 n
+0000311980 00000 n
+0000312098 00000 n
+0000312216 00000 n
+0000312334 00000 n
+0000312452 00000 n
+0000312570 00000 n
+0000312688 00000 n
+0000312806 00000 n
+0000312924 00000 n
+0000313042 00000 n
+0000313160 00000 n
+0000313278 00000 n
+0000313396 00000 n
+0000313514 00000 n
+0000313632 00000 n
+0000313750 00000 n
+0000313868 00000 n
+0000313986 00000 n
+0000314104 00000 n
+0000314222 00000 n
+0000314340 00000 n
+0000314458 00000 n
+0000314576 00000 n
+0000314694 00000 n
+0000314812 00000 n
+0000314930 00000 n
+0000315048 00000 n
+0000315167 00000 n
+0000315286 00000 n
+0000315405 00000 n
+0000315524 00000 n
+0000315643 00000 n
+0000315762 00000 n
+0000315881 00000 n
+0000316000 00000 n
+0000316119 00000 n
+0000316238 00000 n
+0000316357 00000 n
+0000316476 00000 n
+0000316595 00000 n
+0000316714 00000 n
+0000316833 00000 n
+0000316952 00000 n
+0000317071 00000 n
+0000317190 00000 n
+0000317309 00000 n
+0000317428 00000 n
+0000317547 00000 n
+0000317666 00000 n
+0000317785 00000 n
+0000317904 00000 n
+0000318023 00000 n
+0000318142 00000 n
+0000318261 00000 n
+0000318380 00000 n
+0000318498 00000 n
+0000318615 00000 n
+0000318732 00000 n
+0000318849 00000 n
+0000322797 00000 n
+0000323543 00000 n
+0000323662 00000 n
+0000323781 00000 n
+0000323900 00000 n
+0000324019 00000 n
+0000324138 00000 n
+0000324257 00000 n
+0000324376 00000 n
+0000324495 00000 n
+0000324614 00000 n
+0000324733 00000 n
+0000324852 00000 n
+0000324971 00000 n
+0000325090 00000 n
+0000325209 00000 n
+0000325328 00000 n
+0000325447 00000 n
+0000325566 00000 n
+0000325685 00000 n
+0000325804 00000 n
+0000325923 00000 n
+0000326042 00000 n
+0000326161 00000 n
+0000326280 00000 n
+0000326399 00000 n
+0000326518 00000 n
+0000326637 00000 n
+0000326756 00000 n
+0000326875 00000 n
+0000326994 00000 n
+0000327113 00000 n
+0000327232 00000 n
+0000327351 00000 n
+0000327470 00000 n
+0000327589 00000 n
+0000327708 00000 n
+0000327827 00000 n
+0000327946 00000 n
+0000328065 00000 n
+0000328184 00000 n
+0000328303 00000 n
+0000328422 00000 n
+0000328541 00000 n
+0000328660 00000 n
+0000328779 00000 n
+0000328898 00000 n
+0000329017 00000 n
+0000329136 00000 n
+0000329255 00000 n
+0000329374 00000 n
+0000329493 00000 n
+0000329612 00000 n
+0000329731 00000 n
+0000329850 00000 n
+0000329969 00000 n
+0000330088 00000 n
+0000330207 00000 n
+0000330326 00000 n
+0000330445 00000 n
+0000330563 00000 n
+0000330680 00000 n
+0000330797 00000 n
+0000330914 00000 n
+0000335010 00000 n
+0000335756 00000 n
+0000335875 00000 n
+0000335994 00000 n
+0000336113 00000 n
+0000336232 00000 n
+0000336351 00000 n
+0000336470 00000 n
+0000336589 00000 n
+0000336708 00000 n
+0000336827 00000 n
+0000336946 00000 n
+0000337065 00000 n
+0000337184 00000 n
+0000337303 00000 n
+0000337422 00000 n
+0000337541 00000 n
+0000337660 00000 n
+0000337779 00000 n
+0000337898 00000 n
+0000338017 00000 n
+0000338136 00000 n
+0000338255 00000 n
+0000338374 00000 n
+0000338493 00000 n
+0000338612 00000 n
+0000338731 00000 n
+0000338850 00000 n
+0000338969 00000 n
+0000339088 00000 n
+0000339207 00000 n
+0000339326 00000 n
+0000339445 00000 n
+0000339564 00000 n
+0000339683 00000 n
+0000339802 00000 n
+0000339921 00000 n
+0000340040 00000 n
+0000340159 00000 n
+0000340278 00000 n
+0000340397 00000 n
+0000340516 00000 n
+0000340635 00000 n
+0000340754 00000 n
+0000340873 00000 n
+0000340992 00000 n
+0000341111 00000 n
+0000341230 00000 n
+0000341349 00000 n
+0000341468 00000 n
+0000341587 00000 n
+0000341706 00000 n
+0000341825 00000 n
+0000341944 00000 n
+0000342063 00000 n
+0000342182 00000 n
+0000342301 00000 n
+0000342420 00000 n
+0000342539 00000 n
+0000342657 00000 n
+0000342775 00000 n
+0000342892 00000 n
+0000343009 00000 n
+0000343126 00000 n
+0000347171 00000 n
+0000347779 00000 n
+0000347898 00000 n
+0000348017 00000 n
+0000348136 00000 n
+0000348257 00000 n
+0000348376 00000 n
+0000348495 00000 n
+0000348614 00000 n
+0000348733 00000 n
+0000348852 00000 n
+0000348971 00000 n
+0000349090 00000 n
+0000349209 00000 n
+0000349328 00000 n
+0000349447 00000 n
+0000349566 00000 n
+0000349685 00000 n
+0000349804 00000 n
+0000349923 00000 n
+0000350044 00000 n
+0000350163 00000 n
+0000350282 00000 n
+0000350401 00000 n
+0000350520 00000 n
+0000350639 00000 n
+0000350758 00000 n
+0000350877 00000 n
+0000350998 00000 n
+0000351119 00000 n
+0000351238 00000 n
+0000351359 00000 n
+0000351478 00000 n
+0000351597 00000 n
+0000351716 00000 n
+0000351835 00000 n
+0000351954 00000 n
+0000352073 00000 n
+0000352192 00000 n
+0000352311 00000 n
+0000352430 00000 n
+0000352551 00000 n
+0000352672 00000 n
+0000352793 00000 n
+0000352914 00000 n
+0000356438 00000 n
+0000356680 00000 n
+0000358374 00000 n
+0000358630 00000 n
+0000362170 00000 n
+0000362398 00000 n
+0000365920 00000 n
+0000366176 00000 n
+0000369951 00000 n
+0000370193 00000 n
+0000374847 00000 n
+0000375089 00000 n
+0000378784 00000 n
+0000379040 00000 n
+0000382464 00000 n
+0000382692 00000 n
+0000386220 00000 n
+0000386476 00000 n
+0000390940 00000 n
+0000391182 00000 n
+0000395689 00000 n
+0000395917 00000 n
+0000400685 00000 n
+0000400927 00000 n
+0000405898 00000 n
+0000406140 00000 n
+0000410100 00000 n
+0000410356 00000 n
+0000413575 00000 n
+0000413763 00000 n
+0000414005 00000 n
+0000419262 00000 n
+0000419504 00000 n
+0000425329 00000 n
+0000425571 00000 n
+0000430698 00000 n
+0000430940 00000 n
+0000435519 00000 n
+0000435761 00000 n
+0000440972 00000 n
+0000441214 00000 n
+0000447050 00000 n
+0000447320 00000 n
+0000451618 00000 n
+0000451874 00000 n
+0000456368 00000 n
+0000456624 00000 n
+0000460018 00000 n
+0000460274 00000 n
+0000464737 00000 n
+0000465007 00000 n
+0000469535 00000 n
+0000469777 00000 n
+0000475563 00000 n
+0000475805 00000 n
+0000481330 00000 n
+0000481572 00000 n
+0000487689 00000 n
+0000487959 00000 n
+0000492198 00000 n
+0000492468 00000 n
+0000496923 00000 n
+0000497179 00000 n
+0000501548 00000 n
+0000501804 00000 n
+0000505472 00000 n
+0000505714 00000 n
+0000509866 00000 n
+0000510108 00000 n
+0000516025 00000 n
+0000516267 00000 n
+0000521594 00000 n
+0000521836 00000 n
+0000527574 00000 n
+0000527844 00000 n
+0000532525 00000 n
+0000532795 00000 n
+0000538577 00000 n
+0000538833 00000 n
+0000544067 00000 n
+0000544323 00000 n
+0000547046 00000 n
+0000547316 00000 n
+0000551373 00000 n
+0000551643 00000 n
+0000555140 00000 n
+0000555396 00000 n
+0000559141 00000 n
+0000559397 00000 n
+0000563303 00000 n
+0000563559 00000 n
+0000567503 00000 n
+0000567759 00000 n
+0000571279 00000 n
+0000571535 00000 n
+0000575905 00000 n
+0000576161 00000 n
+0000580445 00000 n
+0000580701 00000 n
+0000585362 00000 n
+0000585632 00000 n
+0000588837 00000 n
+0000589093 00000 n
+0000594358 00000 n
+0000594614 00000 n
+0000598290 00000 n
+0000598546 00000 n
+0000602231 00000 n
+0000602501 00000 n
+0000606754 00000 n
+0000606996 00000 n
+0000612926 00000 n
+0000613182 00000 n
+0000617057 00000 n
+0000617313 00000 n
+0000621817 00000 n
+0000622087 00000 n
+0000626057 00000 n
+0000626327 00000 n
+0000630927 00000 n
+0000631183 00000 n
+0000635735 00000 n
+0000635991 00000 n
+0000640622 00000 n
+0000640878 00000 n
+0000644226 00000 n
+0000644496 00000 n
+0000648825 00000 n
+0000649081 00000 n
+0000652635 00000 n
+0000652891 00000 n
+0000656232 00000 n
+0000656488 00000 n
+0000660398 00000 n
+0000660654 00000 n
+0000665992 00000 n
+0000666248 00000 n
+0000669955 00000 n
+0000670211 00000 n
+0000673996 00000 n
+0000674252 00000 n
+0000677686 00000 n
+0000677942 00000 n
+0000681414 00000 n
+0000681670 00000 n
+0000685130 00000 n
+0000685386 00000 n
+0000688180 00000 n
+0000688436 00000 n
+0000693269 00000 n
+0000693525 00000 n
+0000696855 00000 n
+0000697111 00000 n
+0000700291 00000 n
+0000700533 00000 n
+0000706154 00000 n
+0000706396 00000 n
+0000712056 00000 n
+0000712312 00000 n
+0000717083 00000 n
+0000717339 00000 n
+0000721256 00000 n
+0000721512 00000 n
+0000723938 00000 n
+0000724194 00000 n
+0000726977 00000 n
+0000727233 00000 n
+0000730240 00000 n
+0000730496 00000 n
+0000734034 00000 n
+0000734290 00000 n
+0000737439 00000 n
+0000737695 00000 n
+0000741273 00000 n
+0000741529 00000 n
+0000744084 00000 n
+0000744340 00000 n
+0000747745 00000 n
+0000748001 00000 n
+0000752733 00000 n
+0000752975 00000 n
+0000757638 00000 n
+0000757894 00000 n
+0000761438 00000 n
+0000761694 00000 n
+0000765194 00000 n
+0000765436 00000 n
+0000766809 00000 n
+0000767065 00000 n
+0000770277 00000 n
+0000770519 00000 n
+0000774854 00000 n
+0000775124 00000 n
+0000778077 00000 n
+0000778319 00000 n
+0000783294 00000 n
+0000783564 00000 n
+0000788132 00000 n
+0000788388 00000 n
+0000791554 00000 n
+0000791824 00000 n
+0000795444 00000 n
+0000795714 00000 n
+0000799992 00000 n
+0000800234 00000 n
+0000804652 00000 n
+0000804922 00000 n
+0000809048 00000 n
+0000809304 00000 n
+0000813609 00000 n
+0000813879 00000 n
+0000819395 00000 n
+0000819651 00000 n
+0000824683 00000 n
+0000824953 00000 n
+0000829933 00000 n
+0000830203 00000 n
+0000835729 00000 n
+0000835999 00000 n
+0000841224 00000 n
+0000841494 00000 n
+0000844332 00000 n
+0000844602 00000 n
+0000848562 00000 n
+0000848818 00000 n
+0000853650 00000 n
+0000853920 00000 n
+0000858417 00000 n
+0000858687 00000 n
+0000862199 00000 n
+0000862469 00000 n
+0000867375 00000 n
+0000867645 00000 n
+0000870703 00000 n
+0000870973 00000 n
+0000875067 00000 n
+0000875337 00000 n
+0000878208 00000 n
+0000878478 00000 n
+0000882323 00000 n
+0000882562 00000 n
+0000882603 00000 n
+0000882665 00000 n
+0000882708 00000 n
+0000882978 00000 n
+0000887073 00000 n
+0000887329 00000 n
+0000890676 00000 n
+0000890946 00000 n
+0000894862 00000 n
+0000895132 00000 n
+0000900064 00000 n
+0000900334 00000 n
+0000905213 00000 n
+0000905483 00000 n
+0000909899 00000 n
+0000910183 00000 n
+0000914343 00000 n
+0000914613 00000 n
+0000919226 00000 n
+0000919496 00000 n
+0000921653 00000 n
+0000921909 00000 n
+0000926318 00000 n
+0000926588 00000 n
+0000931435 00000 n
+0000931691 00000 n
+0000937433 00000 n
+0000937703 00000 n
+0000942700 00000 n
+0000942970 00000 n
+0000946875 00000 n
+0000947145 00000 n
+0000951649 00000 n
+0000951919 00000 n
+0000956562 00000 n
+0000956818 00000 n
+0000960116 00000 n
+0000960358 00000 n
+0000964226 00000 n
+0000964496 00000 n
+0000967708 00000 n
+0000967978 00000 n
+0000973638 00000 n
+0000973908 00000 n
+0000976885 00000 n
+0000977127 00000 n
+0000982650 00000 n
+0000982920 00000 n
+0000986151 00000 n
+0000986421 00000 n
+0000992601 00000 n
+0000992885 00000 n
+0000996726 00000 n
+0000996954 00000 n
+0000999438 00000 n
+0000999694 00000 n
+0001002892 00000 n
+0001003134 00000 n
+0001006126 00000 n
+0001006368 00000 n
+0001009891 00000 n
+0001010133 00000 n
+0001013756 00000 n
+0001013998 00000 n
+0001017931 00000 n
+0001018187 00000 n
+0001021432 00000 n
+0001021688 00000 n
+0001023260 00000 n
+0001023502 00000 n
+0001027356 00000 n
+0001027598 00000 n
+0001029214 00000 n
+0001029456 00000 n
+0001032966 00000 n
+0001033208 00000 n
+0001034130 00000 n
+0001034358 00000 n
+0001037688 00000 n
+0001037944 00000 n
+0001039046 00000 n
+0001039274 00000 n
+0001042128 00000 n
+0001042356 00000 n
+0001045648 00000 n
+0001045876 00000 n
+0001049944 00000 n
+0001050186 00000 n
+0001051909 00000 n
+0001052137 00000 n
+0001057311 00000 n
+0001057567 00000 n
+0001063205 00000 n
+0001063461 00000 n
+0001068837 00000 n
+0001069093 00000 n
+0001072253 00000 n
+0001072509 00000 n
+0001076462 00000 n
+0001076718 00000 n
+0001081666 00000 n
+0001081922 00000 n
+0001085764 00000 n
+0001086020 00000 n
+0001090499 00000 n
+0001090769 00000 n
+0001095846 00000 n
+0001096102 00000 n
+0001101358 00000 n
+0001101628 00000 n
+0001103697 00000 n
+0001103939 00000 n
+0001108054 00000 n
+0001108296 00000 n
+0001111113 00000 n
+0001111369 00000 n
+0001115186 00000 n
+0001115456 00000 n
+0001119973 00000 n
+0001120243 00000 n
+0001124399 00000 n
+0001124655 00000 n
+0001127235 00000 n
+0001127491 00000 n
+0001131255 00000 n
+0001131511 00000 n
+0001135315 00000 n
+0001135571 00000 n
+0001139930 00000 n
+0001140186 00000 n
+0001142321 00000 n
+0001142591 00000 n
+0001145975 00000 n
+0001146217 00000 n
+0001152170 00000 n
+0001152412 00000 n
+0001157995 00000 n
+0001158265 00000 n
+0001162584 00000 n
+0001162840 00000 n
+0001165644 00000 n
+0001165902 00000 n
+0001167283 00000 n
+0001167527 00000 n
+0001171145 00000 n
+0001171403 00000 n
+0001175740 00000 n
+0001175998 00000 n
+0001179818 00000 n
+0001180076 00000 n
+0001184054 00000 n
+0001184312 00000 n
+0001188871 00000 n
+0001189143 00000 n
+0001192545 00000 n
+0001192803 00000 n
+0001198347 00000 n
+0001198605 00000 n
+0001202260 00000 n
+0001202504 00000 n
+0001205233 00000 n
+0001205505 00000 n
+0001209617 00000 n
+0001209875 00000 n
+0001214155 00000 n
+0001214413 00000 n
+0001218692 00000 n
+0001218964 00000 n
+0001223322 00000 n
+0001223608 00000 n
+0001228851 00000 n
+0001229109 00000 n
+0001233018 00000 n
+0001233276 00000 n
+0001237700 00000 n
+0001237972 00000 n
+0001241621 00000 n
+0001241893 00000 n
+0001245997 00000 n
+0001246241 00000 n
+0001250567 00000 n
+0001250825 00000 n
+0001254673 00000 n
+0001254917 00000 n
+0001259213 00000 n
+0001259471 00000 n
+0001264181 00000 n
+0001264453 00000 n
+0001267827 00000 n
+0001268085 00000 n
+0001272312 00000 n
+0001272584 00000 n
+0001277151 00000 n
+0001277423 00000 n
+0001282161 00000 n
+0001282405 00000 n
+0001286653 00000 n
+0001286925 00000 n
+0001291392 00000 n
+0001291636 00000 n
+0001296368 00000 n
+0001296626 00000 n
+0001299962 00000 n
+0001300206 00000 n
+0001303420 00000 n
+0001303664 00000 n
+0001306981 00000 n
+0001307239 00000 n
+0001310939 00000 n
+0001311197 00000 n
+0001317029 00000 n
+0001317287 00000 n
+0001321242 00000 n
+0001321500 00000 n
+0001326832 00000 n
+0001327076 00000 n
+0001329762 00000 n
+0001330034 00000 n
+0001333488 00000 n
+0001333760 00000 n
+0001338266 00000 n
+0001338524 00000 n
+0001342224 00000 n
+0001342468 00000 n
+0001345456 00000 n
+0001345714 00000 n
+0001348758 00000 n
+0001349016 00000 n
+0001352503 00000 n
+0001352761 00000 n
+0001357714 00000 n
+0001357972 00000 n
+0001362040 00000 n
+0001362298 00000 n
+0001366184 00000 n
+0001366442 00000 n
+0001371069 00000 n
+0001371341 00000 n
+0001375550 00000 n
+0001375808 00000 n
+0001379849 00000 n
+0001380121 00000 n
+0001383458 00000 n
+0001383702 00000 n
+0001387792 00000 n
+0001388050 00000 n
+0001392658 00000 n
+0001392902 00000 n
+0001396682 00000 n
+0001396941 00000 n
+0001401228 00000 n
+0001401459 00000 n
+0001402471 00000 n
+0001402702 00000 n
+0001403665 00000 n
+0001403896 00000 n
+0001404927 00000 n
+0001405158 00000 n
+0001406185 00000 n
+0001406416 00000 n
+0001407564 00000 n
+0001407795 00000 n
+0001408856 00000 n
+0001409087 00000 n
+0001409962 00000 n
+0001410193 00000 n
+0001411017 00000 n
+0001411248 00000 n
+0001412119 00000 n
+0001412350 00000 n
+0001413299 00000 n
+0001413530 00000 n
+0001414447 00000 n
+0001414692 00000 n
+0001415883 00000 n
+0001416114 00000 n
+0001417172 00000 n
+0001417403 00000 n
+0001418440 00000 n
+0001418671 00000 n
+0001419808 00000 n
+0001420039 00000 n
+0001421143 00000 n
+0001421374 00000 n
+0001422416 00000 n
+0001422647 00000 n
+0001423515 00000 n
+0001423746 00000 n
+0001424873 00000 n
+0001425104 00000 n
+0001426291 00000 n
+0001426522 00000 n
+0001427773 00000 n
+0001428018 00000 n
+0001429514 00000 n
+0001429745 00000 n
+0001431179 00000 n
+0001431410 00000 n
+0001432786 00000 n
+0001433017 00000 n
+0001434457 00000 n
+0001434702 00000 n
+0001436432 00000 n
+0001436663 00000 n
+0001438078 00000 n
+0001438309 00000 n
+0001439645 00000 n
+0001439876 00000 n
+0001441038 00000 n
+0001441269 00000 n
+0001442351 00000 n
+0001442582 00000 n
+0001443849 00000 n
+0001444080 00000 n
+0001445257 00000 n
+0001445488 00000 n
+0001446589 00000 n
+0001446820 00000 n
+0001447877 00000 n
+0001448108 00000 n
+0001449233 00000 n
+0001449464 00000 n
+0001450660 00000 n
+0001450891 00000 n
+0001452151 00000 n
+0001452382 00000 n
+0001453421 00000 n
+0001453652 00000 n
+0001454541 00000 n
+0001454772 00000 n
+0001456161 00000 n
+0001456392 00000 n
+0001457955 00000 n
+0001458186 00000 n
+0001459590 00000 n
+0001459821 00000 n
+0001460875 00000 n
+0001461106 00000 n
+0001462298 00000 n
+0001462529 00000 n
+0001464160 00000 n
+0001464391 00000 n
+0001465628 00000 n
+0001465859 00000 n
+0001467155 00000 n
+0001467400 00000 n
+0001469148 00000 n
+0001469379 00000 n
+0001470917 00000 n
+0001471148 00000 n
+0001472546 00000 n
+0001472777 00000 n
+0001473946 00000 n
+0001474177 00000 n
+0001475257 00000 n
+0001475488 00000 n
+0001476875 00000 n
+0001477106 00000 n
+0001478557 00000 n
+0001478788 00000 n
+0001479980 00000 n
+0001480211 00000 n
+0001481384 00000 n
+0001481615 00000 n
+0001482837 00000 n
+0001483068 00000 n
+0001484440 00000 n
+0001484685 00000 n
+0001486224 00000 n
+0001486455 00000 n
+0001487748 00000 n
+0001487979 00000 n
+0001489070 00000 n
+0001489315 00000 n
+0001490707 00000 n
+0001490938 00000 n
+0001492119 00000 n
+0001492350 00000 n
+0001493564 00000 n
+0001493795 00000 n
+0001494886 00000 n
+0001495131 00000 n
+0001496532 00000 n
+0001496763 00000 n
+0001497936 00000 n
+0001498167 00000 n
+0001499750 00000 n
+0001499981 00000 n
+0001501065 00000 n
+0001501296 00000 n
+0001502401 00000 n
+0001502632 00000 n
+0001503661 00000 n
+0001503892 00000 n
+0001504949 00000 n
+0001505194 00000 n
+0001506498 00000 n
+0001506729 00000 n
+0001507829 00000 n
+0001508060 00000 n
+0001509198 00000 n
+0001509429 00000 n
+0001510456 00000 n
+0001510687 00000 n
+0001511684 00000 n
+0001511915 00000 n
+0001513013 00000 n
+0001513258 00000 n
+0001514389 00000 n
+0001514620 00000 n
+0001515627 00000 n
+0001515858 00000 n
+0001517013 00000 n
+0001517258 00000 n
+0001518654 00000 n
+0001518899 00000 n
+0001520082 00000 n
+0001520327 00000 n
+0001521543 00000 n
+0001521774 00000 n
+0001523028 00000 n
+0001523259 00000 n
+0001524607 00000 n
+0001524838 00000 n
+0001526430 00000 n
+0001526661 00000 n
+0001527905 00000 n
+0001528136 00000 n
+0001529378 00000 n
+0001529609 00000 n
+0001530881 00000 n
+0001531112 00000 n
+0001532248 00000 n
+0001532493 00000 n
+0001533818 00000 n
+0001534049 00000 n
+0001535066 00000 n
+0001535297 00000 n
+0001536470 00000 n
+0001536701 00000 n
+0001537642 00000 n
+0001537873 00000 n
+0001539041 00000 n
+0001539272 00000 n
+0001540396 00000 n
+0001540627 00000 n
+0001541817 00000 n
+0001542048 00000 n
+0001543149 00000 n
+0001543380 00000 n
+0001544663 00000 n
+0001544908 00000 n
+0001546258 00000 n
+0001546489 00000 n
+0001547490 00000 n
+0001547721 00000 n
+0001548763 00000 n
+0001548994 00000 n
+0001550192 00000 n
+0001550423 00000 n
+0001551513 00000 n
+0001551744 00000 n
+0001552944 00000 n
+0001553175 00000 n
+0001554209 00000 n
+0001554440 00000 n
+0001555436 00000 n
+0001555681 00000 n
+0001556909 00000 n
+0001557154 00000 n
+0001558494 00000 n
+0001558739 00000 n
+0001560238 00000 n
+0001560483 00000 n
+0001561553 00000 n
+0001561784 00000 n
+0001562669 00000 n
+0001562900 00000 n
+0001564249 00000 n
+0001564480 00000 n
+0001565745 00000 n
+0001565990 00000 n
+0001567482 00000 n
+0001567713 00000 n
+0001568752 00000 n
+0001568997 00000 n
+0001570159 00000 n
+0001570404 00000 n
+0001571859 00000 n
+0001572090 00000 n
+0001573875 00000 n
+0001574106 00000 n
+0001575324 00000 n
+0001575555 00000 n
+0001576629 00000 n
+0001576874 00000 n
+0001578177 00000 n
+0001578408 00000 n
+0001579526 00000 n
+0001579757 00000 n
+0001581034 00000 n
+0001581265 00000 n
+0001582414 00000 n
+0001582645 00000 n
+0001583834 00000 n
+0001584065 00000 n
+0001585079 00000 n
+0001585324 00000 n
+0001586483 00000 n
+0001586728 00000 n
+0001587998 00000 n
+0001588229 00000 n
+0001589458 00000 n
+0001589703 00000 n
+0001590977 00000 n
+0001591208 00000 n
+0001592468 00000 n
+0001592699 00000 n
+0001594170 00000 n
+0001594401 00000 n
+0001595801 00000 n
+0001596032 00000 n
+0001597389 00000 n
+0001597634 00000 n
+0001599077 00000 n
+0001599308 00000 n
+0001600287 00000 n
+0001600518 00000 n
+0001601423 00000 n
+0001601654 00000 n
+0001602681 00000 n
+0001602912 00000 n
+0001603681 00000 n
+0001603925 00000 n
+0001606244 00000 n
+0001606502 00000 n
+0001610530 00000 n
+0001610774 00000 n
+0001615178 00000 n
+0001615450 00000 n
+0001619349 00000 n
+0001619607 00000 n
+0001625069 00000 n
+0001625341 00000 n
+0001630570 00000 n
+0001630842 00000 n
+0001635537 00000 n
+0001635795 00000 n
+0001639926 00000 n
+0001640198 00000 n
+0001645101 00000 n
+0001645359 00000 n
+0001648908 00000 n
+0001649152 00000 n
+0001654291 00000 n
+0001654549 00000 n
+0001660675 00000 n
+0001660919 00000 n
+0001661739 00000 n
+0001662011 00000 n
+0001666942 00000 n
+0001667186 00000 n
+0001672214 00000 n
+0001672486 00000 n
+0001679008 00000 n
+0001679280 00000 n
+0001684919 00000 n
+0001685191 00000 n
+0001691398 00000 n
+0001691670 00000 n
+0001697878 00000 n
+0001698150 00000 n
+0001704337 00000 n
+0001704581 00000 n
+0001705684 00000 n
+0001705914 00000 n
+0001706865 00000 n
+0001707095 00000 n
+0001707609 00000 n
+0001707881 00000 n
+0001711772 00000 n
+0001712030 00000 n
+0001713837 00000 n
+0001714067 00000 n
+0001718492 00000 n
+0001718722 00000 n
+0001719415 00000 n
+0001719645 00000 n
+0001730987 00000 n
+0001731217 00000 n
+0001743280 00000 n
+0001743510 00000 n
+0001755595 00000 n
+0001755825 00000 n
+0001767741 00000 n
+0001767971 00000 n
+0001779771 00000 n
+0001780001 00000 n
+0001791900 00000 n
+0001792144 00000 n
+0001794615 00000 n
+0001794873 00000 n
+0001795791 00000 n
+0001796303 00000 n
+0001796492 00000 n
+0001797123 00000 n
+0001797312 00000 n
+0001797531 00000 n
+0001797814 00000 n
+0001797858 00000 n
+0001797913 00000 n
+0001797948 00000 n
+0001798085 00000 n
+0001798239 00000 n
+0001798551 00000 n
+0001798786 00000 n
+0001799249 00000 n
+0001799341 00000 n
+0001800013 00000 n
+0001800214 00000 n
+0001800442 00000 n
+0001800736 00000 n
+0001800780 00000 n
+0001800841 00000 n
+0001800889 00000 n
+0001801061 00000 n
+0001801199 00000 n
+0001801752 00000 n
+0001801930 00000 n
+0001802345 00000 n
+0001802533 00000 n
+0001802573 00000 n
+0001802600 00000 n
+0001802695 00000 n
+0001802851 00000 n
+0001802991 00000 n
+0001803136 00000 n
+0001803281 00000 n
+0001803426 00000 n
+0001803571 00000 n
+0001803716 00000 n
+0001803861 00000 n
+0001804006 00000 n
+0001804151 00000 n
+0001804296 00000 n
+0001804452 00000 n
+0001804597 00000 n
+0001804742 00000 n
+0001804887 00000 n
+0001805032 00000 n
+0001805177 00000 n
+0001805322 00000 n
+0001805467 00000 n
+0001805612 00000 n
+0001805757 00000 n
+0001805902 00000 n
+0001806058 00000 n
+0001806212 00000 n
+0001806367 00000 n
+0001806522 00000 n
+0001806677 00000 n
+0001806832 00000 n
+0001806987 00000 n
+0001807142 00000 n
+0001807297 00000 n
+0001807452 00000 n
+0001807607 00000 n
+0001807763 00000 n
+0001807918 00000 n
+0001808073 00000 n
+0001808228 00000 n
+0001808383 00000 n
+0001808538 00000 n
+0001808693 00000 n
+0001808848 00000 n
+0001809003 00000 n
+0001809158 00000 n
+0001809313 00000 n
+0001809414 00000 n
+0001809569 00000 n
+0001809724 00000 n
+0001809879 00000 n
+0001809961 00000 n
+0001814078 00000 n
+trailer
+<</Size 1544/ID[<6B7738D9D7F3DB68CEAAFF4290B41148><55F590983A53D3469ED7D4C490EB8A97>]>>
+startxref
+116
+%%EOF
diff --git a/specs/files/ts_125414v120000p.pdf b/specs/files/ts_125414v120000p.pdf
new file mode 100644
index 0000000..ecdba29
--- /dev/null
+++ b/specs/files/ts_125414v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_125444v120000p.pdf b/specs/files/ts_125444v120000p.pdf
new file mode 100644
index 0000000..e73ed9b
--- /dev/null
+++ b/specs/files/ts_125444v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_125467v120300p.pdf b/specs/files/ts_125467v120300p.pdf
new file mode 100644
index 0000000..a0e0b96
--- /dev/null
+++ b/specs/files/ts_125467v120300p.pdf
Binary files differ
diff --git a/specs/files/ts_125468v120100p.pdf b/specs/files/ts_125468v120100p.pdf
new file mode 100644
index 0000000..df4ef14
--- /dev/null
+++ b/specs/files/ts_125468v120100p.pdf
Binary files differ
diff --git a/specs/files/ts_125469v120400p.pdf b/specs/files/ts_125469v120400p.pdf
new file mode 100644
index 0000000..4ccde4b
--- /dev/null
+++ b/specs/files/ts_125469v120400p.pdf
@@ -0,0 +1,3736 @@
+%PDF-1.7 %âãÏÓ
+463 0 obj <</Linearized 1/L 536171/O 465/E 172973/N 123/T 526790/H [ 14096 1836]>> endobj
+xref
+463 690
+0000000016 00000 n
+0000015932 00000 n
+0000016094 00000 n
+0000023108 00000 n
+0000023735 00000 n
+0000024697 00000 n
+0000025328 00000 n
+0000025692 00000 n
+0000026211 00000 n
+0000026260 00000 n
+0000026308 00000 n
+0000026356 00000 n
+0000026404 00000 n
+0000026453 00000 n
+0000026503 00000 n
+0000026557 00000 n
+0000026749 00000 n
+0000026950 00000 n
+0000027133 00000 n
+0000027314 00000 n
+0000028855 00000 n
+0000029973 00000 n
+0000030489 00000 n
+0000030680 00000 n
+0000031936 00000 n
+0000033176 00000 n
+0000034229 00000 n
+0000035193 00000 n
+0000036142 00000 n
+0000037186 00000 n
+0000037469 00000 n
+0000037522 00000 n
+0000037594 00000 n
+0000037672 00000 n
+0000037960 00000 n
+0000038804 00000 n
+0000038998 00000 n
+0000040968 00000 n
+0000043279 00000 n
+0000044611 00000 n
+0000044791 00000 n
+0000044968 00000 n
+0000045145 00000 n
+0000045322 00000 n
+0000045502 00000 n
+0000045676 00000 n
+0000045850 00000 n
+0000046024 00000 n
+0000046199 00000 n
+0000046380 00000 n
+0000048471 00000 n
+0000048645 00000 n
+0000048819 00000 n
+0000048993 00000 n
+0000049167 00000 n
+0000049341 00000 n
+0000049515 00000 n
+0000049689 00000 n
+0000049863 00000 n
+0000050037 00000 n
+0000050211 00000 n
+0000050409 00000 n
+0000050587 00000 n
+0000050766 00000 n
+0000050944 00000 n
+0000051121 00000 n
+0000051298 00000 n
+0000051470 00000 n
+0000051647 00000 n
+0000051834 00000 n
+0000052017 00000 n
+0000052197 00000 n
+0000052397 00000 n
+0000052580 00000 n
+0000052766 00000 n
+0000052952 00000 n
+0000053137 00000 n
+0000053320 00000 n
+0000053500 00000 n
+0000053680 00000 n
+0000053854 00000 n
+0000054041 00000 n
+0000054224 00000 n
+0000054410 00000 n
+0000054599 00000 n
+0000054824 00000 n
+0000055104 00000 n
+0000056123 00000 n
+0000056266 00000 n
+0000056406 00000 n
+0000056562 00000 n
+0000056721 00000 n
+0000056871 00000 n
+0000057056 00000 n
+0000057298 00000 n
+0000057482 00000 n
+0000059224 00000 n
+0000060516 00000 n
+0000060827 00000 n
+0000061426 00000 n
+0000061612 00000 n
+0000061804 00000 n
+0000061996 00000 n
+0000062184 00000 n
+0000062367 00000 n
+0000062555 00000 n
+0000062739 00000 n
+0000062925 00000 n
+0000063108 00000 n
+0000063303 00000 n
+0000063517 00000 n
+0000063711 00000 n
+0000063897 00000 n
+0000064091 00000 n
+0000064277 00000 n
+0000064464 00000 n
+0000064650 00000 n
+0000064838 00000 n
+0000064985 00000 n
+0000065176 00000 n
+0000065358 00000 n
+0000065562 00000 n
+0000065757 00000 n
+0000065939 00000 n
+0000066128 00000 n
+0000066310 00000 n
+0000066493 00000 n
+0000066681 00000 n
+0000066858 00000 n
+0000067049 00000 n
+0000067211 00000 n
+0000067399 00000 n
+0000067582 00000 n
+0000067761 00000 n
+0000067950 00000 n
+0000068130 00000 n
+0000068292 00000 n
+0000068478 00000 n
+0000068660 00000 n
+0000068840 00000 n
+0000069016 00000 n
+0000069205 00000 n
+0000069384 00000 n
+0000069556 00000 n
+0000069742 00000 n
+0000069919 00000 n
+0000070094 00000 n
+0000070281 00000 n
+0000070461 00000 n
+0000070637 00000 n
+0000072933 00000 n
+0000073118 00000 n
+0000073298 00000 n
+0000073472 00000 n
+0000073648 00000 n
+0000073824 00000 n
+0000074001 00000 n
+0000074174 00000 n
+0000074317 00000 n
+0000074493 00000 n
+0000074666 00000 n
+0000074885 00000 n
+0000075062 00000 n
+0000075235 00000 n
+0000075441 00000 n
+0000075614 00000 n
+0000075807 00000 n
+0000075980 00000 n
+0000076166 00000 n
+0000076342 00000 n
+0000076522 00000 n
+0000076695 00000 n
+0000076875 00000 n
+0000077058 00000 n
+0000077231 00000 n
+0000077411 00000 n
+0000077584 00000 n
+0000077761 00000 n
+0000077934 00000 n
+0000078138 00000 n
+0000078311 00000 n
+0000078506 00000 n
+0000078696 00000 n
+0000078869 00000 n
+0000079046 00000 n
+0000079232 00000 n
+0000079414 00000 n
+0000079587 00000 n
+0000079761 00000 n
+0000079944 00000 n
+0000080117 00000 n
+0000080321 00000 n
+0000080496 00000 n
+0000080694 00000 n
+0000080871 00000 n
+0000081049 00000 n
+0000081224 00000 n
+0000081399 00000 n
+0000081577 00000 n
+0000081757 00000 n
+0000081934 00000 n
+0000082077 00000 n
+0000082252 00000 n
+0000082423 00000 n
+0000082605 00000 n
+0000082778 00000 n
+0000082958 00000 n
+0000083129 00000 n
+0000083303 00000 n
+0000083482 00000 n
+0000083656 00000 n
+0000083827 00000 n
+0000084001 00000 n
+0000084181 00000 n
+0000084355 00000 n
+0000084526 00000 n
+0000084700 00000 n
+0000084891 00000 n
+0000085073 00000 n
+0000085247 00000 n
+0000085418 00000 n
+0000085592 00000 n
+0000085772 00000 n
+0000085949 00000 n
+0000086122 00000 n
+0000086296 00000 n
+0000086473 00000 n
+0000086646 00000 n
+0000086826 00000 n
+0000087000 00000 n
+0000087179 00000 n
+0000087356 00000 n
+0000087529 00000 n
+0000087706 00000 n
+0000087885 00000 n
+0000088062 00000 n
+0000088235 00000 n
+0000088410 00000 n
+0000088590 00000 n
+0000088774 00000 n
+0000088951 00000 n
+0000089124 00000 n
+0000089300 00000 n
+0000089477 00000 n
+0000089657 00000 n
+0000089830 00000 n
+0000090003 00000 n
+0000090176 00000 n
+0000090354 00000 n
+0000090527 00000 n
+0000090704 00000 n
+0000090877 00000 n
+0000091053 00000 n
+0000091230 00000 n
+0000091403 00000 n
+0000091582 00000 n
+0000091761 00000 n
+0000091935 00000 n
+0000092108 00000 n
+0000092281 00000 n
+0000092459 00000 n
+0000094285 00000 n
+0000094472 00000 n
+0000094645 00000 n
+0000094821 00000 n
+0000094994 00000 n
+0000095171 00000 n
+0000095344 00000 n
+0000095523 00000 n
+0000095696 00000 n
+0000095873 00000 n
+0000096044 00000 n
+0000096217 00000 n
+0000096391 00000 n
+0000096564 00000 n
+0000096746 00000 n
+0000096927 00000 n
+0000097100 00000 n
+0000097278 00000 n
+0000097451 00000 n
+0000097636 00000 n
+0000097813 00000 n
+0000097986 00000 n
+0000098158 00000 n
+0000098332 00000 n
+0000098503 00000 n
+0000098685 00000 n
+0000098866 00000 n
+0000099039 00000 n
+0000099211 00000 n
+0000099384 00000 n
+0000099569 00000 n
+0000099749 00000 n
+0000099919 00000 n
+0000100093 00000 n
+0000100273 00000 n
+0000100446 00000 n
+0000100633 00000 n
+0000100811 00000 n
+0000100981 00000 n
+0000101157 00000 n
+0000101330 00000 n
+0000101518 00000 n
+0000101692 00000 n
+0000101862 00000 n
+0000102039 00000 n
+0000102217 00000 n
+0000102390 00000 n
+0000102586 00000 n
+0000102764 00000 n
+0000102934 00000 n
+0000103107 00000 n
+0000103299 00000 n
+0000103473 00000 n
+0000103643 00000 n
+0000103845 00000 n
+0000104019 00000 n
+0000104196 00000 n
+0000104366 00000 n
+0000104566 00000 n
+0000104738 00000 n
+0000104908 00000 n
+0000105105 00000 n
+0000105280 00000 n
+0000105450 00000 n
+0000105644 00000 n
+0000105819 00000 n
+0000105989 00000 n
+0000106170 00000 n
+0000106393 00000 n
+0000106564 00000 n
+0000106734 00000 n
+0000106908 00000 n
+0000107081 00000 n
+0000107262 00000 n
+0000107432 00000 n
+0000107606 00000 n
+0000107776 00000 n
+0000107960 00000 n
+0000108132 00000 n
+0000108300 00000 n
+0000108474 00000 n
+0000108647 00000 n
+0000108830 00000 n
+0000109001 00000 n
+0000109175 00000 n
+0000109348 00000 n
+0000109532 00000 n
+0000109703 00000 n
+0000109880 00000 n
+0000110057 00000 n
+0000110234 00000 n
+0000110418 00000 n
+0000110590 00000 n
+0000110764 00000 n
+0000110934 00000 n
+0000111112 00000 n
+0000111284 00000 n
+0000111465 00000 n
+0000111639 00000 n
+0000111811 00000 n
+0000111990 00000 n
+0000112169 00000 n
+0000112344 00000 n
+0000112516 00000 n
+0000112690 00000 n
+0000112864 00000 n
+0000113036 00000 n
+0000113210 00000 n
+0000113384 00000 n
+0000113556 00000 n
+0000113735 00000 n
+0000115674 00000 n
+0000115851 00000 n
+0000116025 00000 n
+0000116208 00000 n
+0000116385 00000 n
+0000116554 00000 n
+0000116730 00000 n
+0000116907 00000 n
+0000117079 00000 n
+0000117269 00000 n
+0000117449 00000 n
+0000117621 00000 n
+0000117798 00000 n
+0000117988 00000 n
+0000118168 00000 n
+0000118343 00000 n
+0000118534 00000 n
+0000118718 00000 n
+0000118892 00000 n
+0000119075 00000 n
+0000119255 00000 n
+0000119429 00000 n
+0000119618 00000 n
+0000119793 00000 n
+0000119973 00000 n
+0000120147 00000 n
+0000120334 00000 n
+0000120521 00000 n
+0000120695 00000 n
+0000120926 00000 n
+0000121100 00000 n
+0000121274 00000 n
+0000121460 00000 n
+0000121642 00000 n
+0000121816 00000 n
+0000121993 00000 n
+0000122167 00000 n
+0000122360 00000 n
+0000122534 00000 n
+0000122708 00000 n
+0000122882 00000 n
+0000123080 00000 n
+0000123257 00000 n
+0000123431 00000 n
+0000123605 00000 n
+0000123779 00000 n
+0000123981 00000 n
+0000124155 00000 n
+0000124348 00000 n
+0000124520 00000 n
+0000124676 00000 n
+0000124850 00000 n
+0000125027 00000 n
+0000125204 00000 n
+0000125378 00000 n
+0000125558 00000 n
+0000125740 00000 n
+0000125917 00000 n
+0000126091 00000 n
+0000126265 00000 n
+0000126443 00000 n
+0000126617 00000 n
+0000126791 00000 n
+0000126965 00000 n
+0000127141 00000 n
+0000127318 00000 n
+0000127492 00000 n
+0000127666 00000 n
+0000127843 00000 n
+0000128019 00000 n
+0000128462 00000 n
+0000131465 00000 n
+0000131612 00000 n
+0000131749 00000 n
+0000131886 00000 n
+0000132045 00000 n
+0000132192 00000 n
+0000132335 00000 n
+0000132472 00000 n
+0000132657 00000 n
+0000132800 00000 n
+0000132947 00000 n
+0000133090 00000 n
+0000133230 00000 n
+0000133373 00000 n
+0000133513 00000 n
+0000133650 00000 n
+0000133806 00000 n
+0000133980 00000 n
+0000134136 00000 n
+0000135795 00000 n
+0000135969 00000 n
+0000136159 00000 n
+0000136350 00000 n
+0000136546 00000 n
+0000136726 00000 n
+0000136909 00000 n
+0000137095 00000 n
+0000137275 00000 n
+0000137455 00000 n
+0000137641 00000 n
+0000138909 00000 n
+0000139092 00000 n
+0000139281 00000 n
+0000139464 00000 n
+0000139659 00000 n
+0000139857 00000 n
+0000140051 00000 n
+0000140244 00000 n
+0000140445 00000 n
+0000140651 00000 n
+0000140858 00000 n
+0000142211 00000 n
+0000142395 00000 n
+0000142576 00000 n
+0000142759 00000 n
+0000142936 00000 n
+0000143121 00000 n
+0000143302 00000 n
+0000143488 00000 n
+0000143665 00000 n
+0000143842 00000 n
+0000144026 00000 n
+0000146517 00000 n
+0000146697 00000 n
+0000146875 00000 n
+0000147052 00000 n
+0000147229 00000 n
+0000147410 00000 n
+0000147584 00000 n
+0000147765 00000 n
+0000147942 00000 n
+0000148123 00000 n
+0000148297 00000 n
+0000150004 00000 n
+0000150193 00000 n
+0000150374 00000 n
+0000150554 00000 n
+0000150732 00000 n
+0000150913 00000 n
+0000151099 00000 n
+0000151282 00000 n
+0000151476 00000 n
+0000151662 00000 n
+0000151843 00000 n
+0000151901 00000 n
+0000152009 00000 n
+0000152097 00000 n
+0000152230 00000 n
+0000152422 00000 n
+0000152516 00000 n
+0000152613 00000 n
+0000152776 00000 n
+0000152942 00000 n
+0000153051 00000 n
+0000153199 00000 n
+0000153306 00000 n
+0000153443 00000 n
+0000153557 00000 n
+0000153695 00000 n
+0000153805 00000 n
+0000153943 00000 n
+0000154063 00000 n
+0000154172 00000 n
+0000154334 00000 n
+0000154431 00000 n
+0000154530 00000 n
+0000154638 00000 n
+0000154742 00000 n
+0000154847 00000 n
+0000154965 00000 n
+0000155067 00000 n
+0000155202 00000 n
+0000155299 00000 n
+0000155409 00000 n
+0000155567 00000 n
+0000155665 00000 n
+0000155776 00000 n
+0000155952 00000 n
+0000156050 00000 n
+0000156160 00000 n
+0000156309 00000 n
+0000156406 00000 n
+0000156515 00000 n
+0000156658 00000 n
+0000156752 00000 n
+0000156846 00000 n
+0000157016 00000 n
+0000157126 00000 n
+0000157235 00000 n
+0000157390 00000 n
+0000157487 00000 n
+0000157597 00000 n
+0000157754 00000 n
+0000157851 00000 n
+0000157960 00000 n
+0000158114 00000 n
+0000158211 00000 n
+0000158320 00000 n
+0000158488 00000 n
+0000158617 00000 n
+0000158726 00000 n
+0000158890 00000 n
+0000158987 00000 n
+0000159096 00000 n
+0000159222 00000 n
+0000159346 00000 n
+0000159492 00000 n
+0000159618 00000 n
+0000159742 00000 n
+0000159888 00000 n
+0000160031 00000 n
+0000160139 00000 n
+0000160265 00000 n
+0000160389 00000 n
+0000160498 00000 n
+0000160623 00000 n
+0000160823 00000 n
+0000160920 00000 n
+0000161031 00000 n
+0000161201 00000 n
+0000161298 00000 n
+0000161407 00000 n
+0000161524 00000 n
+0000161654 00000 n
+0000161765 00000 n
+0000161882 00000 n
+0000162000 00000 n
+0000162131 00000 n
+0000162254 00000 n
+0000162365 00000 n
+0000162489 00000 n
+0000162597 00000 n
+0000162731 00000 n
+0000162848 00000 n
+0000162957 00000 n
+0000163081 00000 n
+0000163202 00000 n
+0000163328 00000 n
+0000163456 00000 n
+0000163575 00000 n
+0000163688 00000 n
+0000163813 00000 n
+0000163939 00000 n
+0000164059 00000 n
+0000164177 00000 n
+0000164288 00000 n
+0000164399 00000 n
+0000164511 00000 n
+0000164631 00000 n
+0000164763 00000 n
+0000164886 00000 n
+0000165008 00000 n
+0000165116 00000 n
+0000165237 00000 n
+0000165346 00000 n
+0000165462 00000 n
+0000165590 00000 n
+0000165700 00000 n
+0000165812 00000 n
+0000165920 00000 n
+0000166028 00000 n
+0000166136 00000 n
+0000166245 00000 n
+0000166359 00000 n
+0000166473 00000 n
+0000166603 00000 n
+0000166729 00000 n
+0000166857 00000 n
+0000166982 00000 n
+0000167110 00000 n
+0000167226 00000 n
+0000167342 00000 n
+0000167466 00000 n
+0000167588 00000 n
+0000167723 00000 n
+0000167842 00000 n
+0000167978 00000 n
+0000168137 00000 n
+0000168233 00000 n
+0000168344 00000 n
+0000168468 00000 n
+0000168591 00000 n
+0000168699 00000 n
+0000168838 00000 n
+0000168976 00000 n
+0000169098 00000 n
+0000169221 00000 n
+0000169343 00000 n
+0000169451 00000 n
+0000169559 00000 n
+0000169684 00000 n
+0000169804 00000 n
+0000169922 00000 n
+0000170040 00000 n
+0000170161 00000 n
+0000170282 00000 n
+0000170404 00000 n
+0000170526 00000 n
+0000170648 00000 n
+0000170771 00000 n
+0000170928 00000 n
+0000171028 00000 n
+0000171140 00000 n
+0000171251 00000 n
+0000171368 00000 n
+0000171482 00000 n
+0000171643 00000 n
+0000171741 00000 n
+0000171924 00000 n
+0000172046 00000 n
+0000172173 00000 n
+0000172344 00000 n
+0000172451 00000 n
+0000172597 00000 n
+0000172722 00000 n
+0000172850 00000 n
+0000014096 00000 n
+trailer
+<</Size 1153/Root 464 0 R/Info 462 0 R/ID[<57B8B8004FFACAAB73A102D1DC714356><C54F4B9CDEE0C44EB3E46CA07ADAB118>]/Prev 526778>>
+startxref
+0
+%%EOF
+
+1152 0 obj <</Filter/FlateDecode/I 3828/L 3812/Length 1735/O 3796/S 2837>>stream
+hÞìWl×ÿ¾wïœ;“ÄwçÄui@—³\¡Û’‚‡hy¦Žq —5•‹Úé˜Ò(­º5¤vÒîŽl4P
+)£Òucý)ëHŶV:·ÿäŸ"«ë&VM“ÑX[M]çIS»J“ºwçرÐØÄ´ý±“å{ß_Ÿ÷ùþ¸ç3
+<ëh»AöÁÑÃfB]€Oá
+Ä¡ÛäÏá×`£Û"!6“T£ðò²_q{àÍr¶$=ŽßÄW
+;ÂfÍ™Gúôí]¹»•‰F€û:&.'3Ľ.]P>\Óe¥ýåÖ¶6ÐØ%ÜÙ¾ßp™Ë‚.È™õ21>Þ¦Ð~ç’Þ\ºÅˆkgÉX5UÜ2r×´z$¥†F5gô¹VŸ·2¦µX‹5º*èÕzTÓÑ«zì¿æÂ’ùw–¸Ô“þ':é†ìv=.ô¿¹ùu©KKÆæ?W†Ã¨Jgñ¤)°CÆëym¤"ÌP p¦ÕÀžâæǪ!Ë Pí@ÖêG³,_íÀu Ö|g$yaÃõ0Í7Åt"ã =†gñÖHfÞU­ê…iµ•,Žz^}™áá|É×7Ü«¤4-1\Û¬oQ-g2´ºd›(,¢otÔÛ.âƒz&>_ Bt1Y??PX_@ôWÚ–\uZ¸iM’—ŒÇP«Þä:žo]¸7#\ÏM«Ã6ìÙ¬\ŒhV.¥ãI‰|Ý(kKöZÊ@k ¿q쪖žøå“ûBÓúþÿu•7(V¶C˯çXÕÙË1Žøµë†¶w“'lJ?<0!Op®Š¤ ½¯N’ç¿!<¹Rßî:ùû¿¯ˆþ¡å½„3¼óÙÍ…ävíèWÚC
+L3^\.”²vJ™ ’±XÚúeçˆ'l¥AœñÜ
+qÔ/ƒöÅ}–Ì÷ ^Q´ûÃô$™_…ÌÐî?¡ mÆ7¹ÊŠ´Þ&m=}þ¹]y¶'}§XÙfÂÆ)2Ÿ°2Ëòy{¤C}–”zÒk[ÔíøÞNãûäÜ*´Z4¶Ù4ìZäRŠ‹î MÂê3d:VL‰ê€=¢ÀQRŠWÂC²óy"Ž¢òf[¿‰Nã¶t4Y<"—Ÿ&F¼Ø+0
+{œÙ1è"ð;ï9gŸÙ0
+endstream endobj 464 0 obj <</Metadata 461 0 R/OpenAction[465 0 R/XYZ null null null]/Outlines 979 0 R/PageLabels 443 0 R/PageMode/UseOutlines/Pages 445 0 R/Type/Catalog>> endobj 465 0 obj <</Contents[482 0 R 483 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R]/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ColorSpace<</CS0 471 0 R/CS1 472 0 R/CS2 473 0 R/CS3 474 0 R/CS4 475 0 R/CS5 476 0 R>>/ExtGState<</GS0 477 0 R>>/Font<</T1_0 466 0 R/T1_1 467 0 R/T1_2 468 0 R/T1_3 469 0 R/T1_4 470 0 R/T1_5 484 0 R>>/ProcSet[/PDF/Text/ImageC/ImageI]/XObject<</Im0 499 0 R/Im1 500 0 R/Im10 501 0 R/Im100 502 0 R/Im101 503 0 R/Im102 504 0 R/Im103 505 0 R/Im104 506 0 R/Im105 507 0 R/Im106 508 0 R/Im107 509 0 R/Im108 510 0 R/Im109 511 0 R/Im11 512 0 R/Im110 513 0 R/Im111 514 0 R/Im112 515 0 R/Im113 516 0 R/Im114 517 0 R/Im115 518 0 R/Im116 519 0 R/Im117 520 0 R/Im118 521 0 R/Im119 522 0 R/Im12 523 0 R/Im120 524 0 R/Im121 525 0 R/Im122 526 0 R/Im123 527 0 R/Im124 528 0 R/Im125 529 0 R/Im126 530 0 R/Im127 531 0 R/Im128 532 0 R/Im129 533 0 R/Im13 534 0 R/Im130 535 0 R/Im131 536 0 R/Im132 537 0 R/Im133 538 0 R/Im134 539 0 R/Im135 540 0 R/Im136 541 0 R/Im137 542 0 R/Im138 543 0 R/Im139 544 0 R/Im14 545 0 R/Im140 546 0 R/Im141 547 0 R/Im142 549 0 R/Im143 550 0 R/Im144 551 0 R/Im145 552 0 R/Im146 553 0 R/Im147 554 0 R/Im148 555 0 R/Im149 556 0 R/Im15 557 0 R/Im150 558 0 R/Im151 559 0 R/Im152 560 0 R/Im153 561 0 R/Im154 562 0 R/Im155 563 0 R/Im156 564 0 R/Im157 565 0 R/Im158 566 0 R/Im159 567 0 R/Im16 568 0 R/Im160 569 0 R/Im161 570 0 R/Im162 571 0 R/Im163 572 0 R/Im164 573 0 R/Im165 574 0 R/Im166 575 0 R/Im167 576 0 R/Im168 577 0 R/Im169 578 0 R/Im17 579 0 R/Im170 580 0 R/Im171 581 0 R/Im172 582 0 R/Im173 583 0 R/Im174 584 0 R/Im175 585 0 R/Im176 586 0 R/Im177 587 0 R/Im178 588 0 R/Im179 589 0 R/Im18 590 0 R/Im180 591 0 R/Im181 592 0 R/Im182 593 0 R/Im183 594 0 R/Im184 595 0 R/Im185 596 0 R/Im186 597 0 R/Im187 598 0 R/Im188 599 0 R/Im189 600 0 R/Im19 601 0 R/Im190 602 0 R/Im191 603 0 R/Im192 604 0 R/Im193 605 0 R/Im194 606 0 R/Im195 607 0 R/Im196 608 0 R/Im197 609 0 R/Im198 610 0 R/Im199 611 0 R/Im2 612 0 R/Im20 613 0 R/Im200 614 0 R/Im201 615 0 R/Im202 616 0 R/Im203 617 0 R/Im204 618 0 R/Im205 619 0 R/Im206 620 0 R/Im207 621 0 R/Im208 622 0 R/Im209 623 0 R/Im21 624 0 R/Im210 625 0 R/Im211 626 0 R/Im212 627 0 R/Im213 628 0 R/Im214 629 0 R/Im215 630 0 R/Im216 631 0 R/Im217 632 0 R/Im218 633 0 R/Im219 634 0 R/Im22 635 0 R/Im220 636 0 R/Im221 637 0 R/Im222 638 0 R/Im223 639 0 R/Im224 640 0 R/Im225 641 0 R/Im226 642 0 R/Im227 643 0 R/Im228 644 0 R/Im229 645 0 R/Im23 646 0 R/Im230 647 0 R/Im231 648 0 R/Im232 649 0 R/Im233 650 0 R/Im234 651 0 R/Im235 652 0 R/Im236 653 0 R/Im237 654 0 R/Im238 655 0 R/Im239 656 0 R/Im24 657 0 R/Im240 658 0 R/Im241 659 0 R/Im242 660 0 R/Im243 661 0 R/Im244 662 0 R/Im245 663 0 R/Im246 664 0 R/Im247 665 0 R/Im248 666 0 R/Im249 667 0 R/Im25 668 0 R/Im250 669 0 R/Im251 670 0 R/Im252 671 0 R/Im253 672 0 R/Im254 673 0 R/Im255 674 0 R/Im256 675 0 R/Im257 676 0 R/Im258 677 0 R/Im259 678 0 R/Im26 679 0 R/Im260 680 0 R/Im261 681 0 R/Im262 682 0 R/Im263 683 0 R/Im264 684 0 R/Im265 685 0 R/Im266 686 0 R/Im267 687 0 R/Im268 688 0 R/Im269 689 0 R/Im27 690 0 R/Im270 691 0 R/Im271 692 0 R/Im272 693 0 R/Im273 694 0 R/Im274 695 0 R/Im275 696 0 R/Im276 697 0 R/Im277 698 0 R/Im278 699 0 R/Im279 700 0 R/Im28 701 0 R/Im280 702 0 R/Im281 703 0 R/Im282 704 0 R/Im283 705 0 R/Im284 706 0 R/Im285 707 0 R/Im286 708 0 R/Im287 709 0 R/Im288 710 0 R/Im289 711 0 R/Im29 712 0 R/Im290 713 0 R/Im291 714 0 R/Im292 715 0 R/Im293 716 0 R/Im294 717 0 R/Im295 718 0 R/Im296 719 0 R/Im297 720 0 R/Im298 721 0 R/Im299 722 0 R/Im3 723 0 R/Im30 724 0 R/Im300 725 0 R/Im301 726 0 R/Im302 727 0 R/Im303 728 0 R/Im304 729 0 R/Im305 730 0 R/Im306 731 0 R/Im307 732 0 R/Im308 733 0 R/Im309 734 0 R/Im31 735 0 R/Im310 736 0 R/Im311 737 0 R/Im312 738 0 R/Im313 739 0 R/Im314 740 0 R/Im315 741 0 R/Im316 742 0 R/Im317 743 0 R/Im318 744 0 R/Im319 745 0 R/Im32 746 0 R/Im320 747 0 R/Im321 748 0 R/Im322 749 0 R/Im323 750 0 R/Im324 751 0 R/Im325 752 0 R/Im326 753 0 R/Im327 754 0 R/Im328 755 0 R/Im329 756 0 R/Im33 757 0 R/Im330 758 0 R/Im331 759 0 R/Im332 760 0 R/Im333 761 0 R/Im334 762 0 R/Im335 763 0 R/Im336 764 0 R/Im337 765 0 R/Im338 766 0 R/Im339 767 0 R/Im34 768 0 R/Im340 769 0 R/Im341 770 0 R/Im342 771 0 R/Im343 772 0 R/Im344 773 0 R/Im345 774 0 R/Im346 775 0 R/Im347 776 0 R/Im348 777 0 R/Im349 778 0 R/Im35 779 0 R/Im350 780 0 R/Im351 781 0 R/Im352 782 0 R/Im353 783 0 R/Im354 784 0 R/Im355 785 0 R/Im356 786 0 R/Im357 787 0 R/Im358 788 0 R/Im359 789 0 R/Im36 790 0 R/Im360 791 0 R/Im361 792 0 R/Im362 793 0 R/Im363 794 0 R/Im364 795 0 R/Im365 796 0 R/Im366 797 0 R/Im367 798 0 R/Im368 799 0 R/Im369 800 0 R/Im37 801 0 R/Im370 802 0 R/Im371 803 0 R/Im372 804 0 R/Im373 805 0 R/Im374 806 0 R/Im375 807 0 R/Im376 808 0 R/Im377 809 0 R/Im378 810 0 R/Im379 811 0 R/Im38 812 0 R/Im380 813 0 R/Im381 814 0 R/Im382 815 0 R/Im383 816 0 R/Im384 817 0 R/Im385 818 0 R/Im386 819 0 R/Im387 820 0 R/Im388 821 0 R/Im389 822 0 R/Im39 823 0 R/Im390 824 0 R/Im391 825 0 R/Im392 826 0 R/Im393 827 0 R/Im394 828 0 R/Im395 829 0 R/Im396 830 0 R/Im397 831 0 R/Im398 832 0 R/Im399 833 0 R/Im4 834 0 R/Im40 835 0 R/Im400 836 0 R/Im401 837 0 R/Im402 838 0 R/Im403 839 0 R/Im404 840 0 R/Im405 841 0 R/Im406 842 0 R/Im407 843 0 R/Im408 844 0 R/Im409 845 0 R/Im41 846 0 R/Im410 847 0 R/Im411 848 0 R/Im412 849 0 R/Im413 850 0 R/Im414 851 0 R/Im415 852 0 R/Im416 853 0 R/Im417 854 0 R/Im418 855 0 R/Im419 856 0 R/Im42 857 0 R/Im420 858 0 R/Im421 859 0 R/Im422 860 0 R/Im423 861 0 R/Im424 862 0 R/Im425 863 0 R/Im426 864 0 R/Im427 865 0 R/Im428 866 0 R/Im429 867 0 R/Im43 868 0 R/Im430 869 0 R/Im431 870 0 R/Im432 871 0 R/Im433 872 0 R/Im434 873 0 R/Im435 874 0 R/Im436 875 0 R/Im437 876 0 R/Im438 877 0 R/Im439 878 0 R/Im44 879 0 R/Im440 880 0 R/Im441 881 0 R/Im442 882 0 R/Im443 883 0 R/Im444 884 0 R/Im445 885 0 R/Im446 886 0 R/Im447 887 0 R/Im448 888 0 R/Im449 889 0 R/Im45 890 0 R/Im450 891 0 R/Im451 892 0 R/Im452 893 0 R/Im453 894 0 R/Im454 895 0 R/Im455 896 0 R/Im456 897 0 R/Im457 898 0 R/Im458 899 0 R/Im459 900 0 R/Im46 901 0 R/Im460 902 0 R/Im461 903 0 R/Im462 905 0 R/Im463 906 0 R/Im464 907 0 R/Im465 908 0 R/Im466 909 0 R/Im467 910 0 R/Im468 911 0 R/Im469 912 0 R/Im47 913 0 R/Im470 914 0 R/Im471 915 0 R/Im472 916 0 R/Im473 917 0 R/Im474 918 0 R/Im475 919 0 R/Im476 920 0 R/Im477 921 0 R/Im48 922 0 R/Im49 923 0 R/Im5 924 0 R/Im50 925 0 R/Im51 926 0 R/Im52 927 0 R/Im53 928 0 R/Im54 929 0 R/Im55 930 0 R/Im56 931 0 R/Im57 932 0 R/Im58 933 0 R/Im59 934 0 R/Im6 935 0 R/Im60 936 0 R/Im61 937 0 R/Im62 938 0 R/Im63 939 0 R/Im64 940 0 R/Im65 941 0 R/Im66 942 0 R/Im67 943 0 R/Im68 944 0 R/Im69 945 0 R/Im7 946 0 R/Im70 947 0 R/Im71 948 0 R/Im72 949 0 R/Im73 950 0 R/Im74 951 0 R/Im75 952 0 R/Im76 953 0 R/Im77 954 0 R/Im78 955 0 R/Im79 956 0 R/Im8 957 0 R/Im80 958 0 R/Im81 959 0 R/Im82 960 0 R/Im83 961 0 R/Im84 962 0 R/Im85 963 0 R/Im86 964 0 R/Im87 965 0 R/Im88 966 0 R/Im89 967 0 R/Im9 968 0 R/Im90 969 0 R/Im91 970 0 R/Im92 971 0 R/Im93 972 0 R/Im94 973 0 R/Im95 974 0 R/Im96 975 0 R/Im97 976 0 R/Im98 977 0 R/Im99 978 0 R>>>>/Rotate 0/Type/Page>> endobj 466 0 obj <</BaseFont/Times-Roman/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 480 0 R/LastChar 150/Subtype/Type1/Type/Font/Widths[250 333 408 500 500 833 778 180 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 350 500 350 333 500 444 1000 500 500 333 1000 556 333 889 350 611 350 350 333 333 444 444 350 500]>> endobj 467 0 obj <</BaseFont/Helvetica/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 481 0 R/LastChar 233/Subtype/Type1/Type/Font/Widths[278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 350 556 350 222 556 333 1000 556 556 333 1000 667 333 1000 350 611 350 350 222 222 333 333 350 556 1000 333 1000 500 333 944 350 500 667 278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 333 400 584 333 333 333 556 537 278 333 333 365 556 834 834 834 611 667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278 722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611 556 556 556 556 556 556 889 500 556 556]>> endobj 468 0 obj <</BaseFont/Helvetica-Bold/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 478 0 R/LastChar 150/Subtype/Type1/Type/Font/Widths[278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500 389 280 389 584 350 556 350 278 556 500 1000 556 556 333 1000 667 333 1000 350 611 350 350 278 278 500 500 350 556]>> endobj 469 0 obj <</BaseFont/AvantGarde-Demi/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 498 0 R/LastChar 84/Subtype/Type1/Type/Font/Widths[280 280 360 560 560 860 680 220 380 380 440 600 280 420 280 460 560 560 560 560 560 560 560 560 560 560 280 280 600 600 600 560 740 740 580 780 700 520 480 840 680 280 480 620 440 900 740 840 560 840 580 520 420]>> endobj 470 0 obj <</BaseFont/Helvetica-BoldOblique/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 479 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[278 333 474 556 556 889 722 238 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 333 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556]>> endobj 471 0 obj [/Indexed/DeviceRGB 65 492 0 R] endobj 472 0 obj [/Indexed/DeviceRGB 0 493 0 R] endobj 473 0 obj [/Indexed/DeviceRGB 6 494 0 R] endobj 474 0 obj [/Indexed/DeviceRGB 8 495 0 R] endobj 475 0 obj [/Indexed/DeviceRGB 84 496 0 R] endobj 476 0 obj [/Indexed/DeviceRGB 252 497 0 R] endobj 477 0 obj <</SA false/SM 0.02/Type/ExtGState>> endobj 478 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 262176/FontBBox[-170 -228 1003 962]/FontName/Helvetica-Bold/ItalicAngle 0/StemH 140/StemV 140/Type/FontDescriptor/XHeight 532>> endobj 479 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 262240/FontBBox[-174 -228 1114 962]/FontName/Helvetica-BoldOblique/ItalicAngle -12/StemH 140/StemV 140/Type/FontDescriptor/XHeight 532>> endobj 480 0 obj <</Ascent 699/CapHeight 662/Descent -217/Flags 34/FontBBox[-168 -218 1000 898]/FontName/Times-Roman/ItalicAngle 0/StemH 84/StemV 84/Type/FontDescriptor/XHeight 450>> endobj 481 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 32/FontBBox[-166 -225 1000 931]/FontName/Helvetica/ItalicAngle 0/StemH 88/StemV 88/Type/FontDescriptor/XHeight 523>> endobj 482 0 obj <</Filter/FlateDecode/Length 1469>>stream
+H‰”—ßsÛ6 Çÿ>J»3K‚¿ÄǤ͚ì¶,k´í¡Ýí²Lͼ³“&NÛÛ?€¢$’’]çü`E|
+öæý‚ŸGzgÇÅ yƒMÏ“9O{/åE›ž9OJ®_Ê‹6=Oe<ã·/ä 6=Oç<ey#"õA åÞV¶ˆf ž¶a™`Ow£õ«Vþ)˜díGæÑÚô$zd¸±B1'==XÖnYÅêö_\°N?¼‰?´ßeot3½š­%²÷¸\‹oã#°ö+S¸Þ4®ßјwÜ…HœÇ}ÅHÎÚë Ö^æY‹à𠜃P ×x¼S€»O\ r*–Ý(ýÉèˆ2ãÓÖqH3žái]øÄOØæ½IªmßoáY´sÅ´“´Ëàì}õëýúK ²êžv7öÓÃ_ëMÇÚnSÿÑþ0D!•¤ŠÐºáÊb$Bsi)[nz=;Ç')—걑bŒ¨­›êÝ uÉ.j[}þ‡Õ®ZãÓ}•QX.X=M¨ÜèlGŽéXˆ'
+ê•«„4©ÒQþ†1€ŠïÀÐÌÔÁ.+%MÙÙ4ÐmºÛ‡íösmªû¨w;vývËÝs·exeXq&ˆa,3 Ö¾¨d_JùDÀÖ÷ÏÝÓǛێ?l±wìòáïŽR@¾:¯Wªº<ýPÏ‚‹£µXwD|S­«=# `…Y=ð˜ØÕÍÓ3Æs~yŠCS]}¨Ùn}W¯<N-+¨n6›õýKC¤MbXC”‹öPŒóhz@ÍìæS…'Yþæ4ÃÔ¦÷æÈÄ))™)ÞW8JØ
+…øK-UÕÕ+Y=íèXÒ + ayœrp898E›”€M9ñº¿Ã’¾Ùuè­8–QÁPJøÒÔ‘hù²ŒûrØÈd|u¥I5JÔ4lY®ûí o Jà0ü™ÿ>i{Z§«IœDªJj\ªè$’¥šCX¬`\¬‡ÅZÓ¬‡Õ@ƒý;Á“ïíFQÄßšÌuffÒDZ Ã{+Ñ–@:â8­<›ò$mˆиÖ8'Dê^)1³ˆH—#te›€¤Ë‘¾8ðÌ""›)BÒÒ(cIçHl:2‹2³ˆHŸ#û÷Òâ (yÁ›–÷8sœ mêh\¿|½Ñà†<W&§)91±ˆÈdšÒø¯¤iÂÒe̪,3 *œëˆÌ-"${‘KÄÞ UN¤‹
+6(&uY;ô7rdb‘zZÙ‹bÊŽY@š0 ïAf (·ˆÈäzR¹l¹´a9L'ïû_€
+endstream endobj 483 0 obj <</Filter/FlateDecode/Length 1046>>stream
+H‰”—=’! …¯Ò'Àüù&ù
+4<£¿Å[`â ¥ËöÄÁžÀ¶Aˆzó×9°¡[gúS‹– Nï<À~Í„ÜXëÍ+ÐÜK¶AˆÉ9)€SUã‘°ÄØo6CT BÔ;
+o_pR
+¡Ç²iSÓ!ÈlT…}¶'Žh£ŠÒ
+©ì$N1Ï’fâ±$èJBÚäÆ3‚ÔÒ½#SϬ[w!Í·0 BÔN®Ip àÁßN-¼X¥CjÓÑlæCáço¼úyÖ{þî²ßvû‰c„§v ê—*Á‹037Ô¸ùßå³ÿÉÞà’±_s‡MÒÏàPAÛ«²ï½ŸÿĪ^6þáôi—Í QËæ—OþÁînÛ <5£¼´=Ï#«gö¨8Ý‹ªwxõöÙËkÆÚœ½‰/®®Ÿ1ýnÎÕƒyX…– ,<6÷*Ñ`Ôæ
+U¾kÁ"ï:6"nÀº"X<Á8¬`eù$Z/<tä¨ôµg5Îå[ÔÉË™A‚EòmAÎk„Ü3Ev Q5±ùõO€
+endstream endobj 484 0 obj <</BaseFont/Helvetica-Oblique/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 485 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500]>> endobj 485 0 obj <</Ascent 718/CapHeight 718/Descent -207/Flags 96/FontBBox[-170 -225 1116 931]/FontName/Helvetica-Oblique/ItalicAngle -12/StemH 88/StemV 88/Type/FontDescriptor/XHeight 523>> endobj 486 0 obj <</Filter/FlateDecode/Length 1184>>stream
+H‰”—M$5 †ÿJŽÝ‡ÉÆN*â†à
+VZi@»þ>¶«Üå$5¨K#º;¯Ÿ¸Çv½wïÝ—RðÙaȾ!8(>¹àcv_ÿt¿º¿I€ÉºÀü{¯ÿøêÞýðÚ²ûî¢m<$¯/™x ‰xÒžÕï¼by‰VD€€Ñ§ÑCh¾Z`g°«%òêâk"Ž¬ŽtwL›1©>‰aá¦øPE
+qÓ+±õÄšD± a dó{¢ÑïD§DÈ׈ÿŸHÏ®7½í=\¢G$
+tòc3<«VžáB½‚ Ç™@qÐø©žÅ©Zqé ó\4§±œáB¸‚ æ(òŒ«>?}ªV\™r…XŸÏÕ+±ž‹ôêç‰Åôv€6ÝbV,ù­[œÒtÕ`Gb˜ª+ðJõREÂX`¡eéÜOX•+ÏxÜÂ/ðŽŽ?ñ¦€7z
+Hd‡ž¢Š:5;h‹4ð"slSCã3z%Ú»×÷ÞøXoÚ9î—ëÑyuýéÎ;Íõ¢ã5r¬œª,7½Ëcš òc¹NC,$/ì(‘'š¹:|§úÝ#ë“°»W>/]o~žçyËìÀh®Åp3‘"šDo†ŠÖÈõÆ×xr ¦Þc @“¤ãE&=Žv ‰ñð o´­Sã”ò v,¶J4)8^|”9˜ ÌØãÂcñd ïj´
+ÊÝÎÝý;v6ãM4Ù'¯º~öŽ‚¡¯½…MŽ÷óf€vŠ&q«ŠÛ:÷TGåVÚ¯2“-ÍÇž<1E˜+¶~øí-” §Lž™®1Í”e™÷7¢Q
+'äw-zkÛÆ>Bµó*~™
+|=d‘ŸFHoZw²Õ7Êé*1HªuÄÐgß¡·D[})\ v"JòtDìóéÐ[¢~R6¸:>2ö Ÿæç'ŸG
+¬=0×"µýy Z(° @y¡½Ü-và €L倻…¡.%JˆŸª…q
+endstream endobj 487 0 obj <</Filter/FlateDecode/Length 1168>>stream
+H‰”W=7 ý+*}Ed‘¢¾ZÃ)’.À.â …‘.Á¥ñß5ÒjHÎLö×ìO||ùÄùâþvŸnîã ~Gîö§ƒâµêÿm¿]BðHð%‡ìn¯îƒ{¹ýå~¼¹_Ü›£TQõ1ƒƒì‰4Ÿ«û÷÷å@|ØÜíÛ UB!DŽˆàúõç¯//‰»ý<(¥L…8 g¥<Æêk
+àyši½9H¾ÒŒˆï*/ü=؈գ5ILžïÁb“%Î[E"Zæì¹ÚŠ™~Ë;1—³VI½
+Ÿ²%G‡ý y>IÞK¾ÌhE°Ócg=ƒOE³ó¼ÔÎ^Eo½A{Äu`F«‚]_Rç >UËÎ5â^[xΔö0*9ÌhM°—Þ_‚}«Á§fÙ!¯0äà w^è
+ƒ Ö…J£g4rÐÔeÙÔ{¨úýÔBÍwÉÔÉÞ8â6
+#+>É2”8Ü[¡¬j<gZW¨4] 뛈A'+,åsa½†BWì‰ßñS^öU_¶<”¼ “~
+í^‰^`V¬˜ÏÐÕ
+ÃÐ…•Ã¦s6Å5{QšiÜúÀi<”5r#ãÐvUêQ‰å~¹m^•È«Ç•*U^_q?0eI eA”ÛØ4%êš‚MÉQ™FÇkeÛ‚¤Ñd•Q}RÕç”Q}F™D?V&Ñe€WÊBÕÊ2­S™ôD³£óWP®u ¸¶¡L¢óµ²#ؼH}—>¦m‹ø#ä‘HnvUƒsû¯ÄC]ÃÕ»ÌÆq€¶]‘2¾¥Zp V›Æ¹"ZƒJÒ
+›2” Úë$×±»‰Ä« ªãáÖèhõ„s»ÐþËz†£ü”$LÐ,À”óX%šxˆÔÆ:UIhºVuØ|Gö¯ÃgT üT%œÂnâ9ùjàÐÊy;Ý_, ®dit³²â¹O\ÊŠk6©*YÚ
+
+<
+endstream endobj 488 0 obj <</Filter/FlateDecode/Length 982>>stream
+H‰”—=’! …¯Ò'À $~r'ù
+endstream endobj 489 0 obj <</Filter/FlateDecode/Length 893>>stream
+H‰”—M’! F¯Â HâoŸÍ,³ÊRYNR“û/m ’hÌLÍbÊö Ï{{‡˜Í÷¿æ‡ù0²ÁïmŠÆYŒæßoóÓü©Ÿ×€Œkí}
+É¿ÞÍ··÷£µñPâ%ؘ±<ŸŽ6N8TªD 'wƒ³y9ù{ó R‚¯O¿$và[õêàQФ£ŽCÂ×$LæCðíµ¦Ã¤‹²°Ìê7®,DwYp‹…hgA·P>aaâð´öa@(ï載°ÀᲷࣦ³Ó€ª…ZkªÄ ­à1ZöŸ°0qÈ~óõN œ†}â˜Ñµ”i!-Ó†LRBÛaÞ”KßÉÑ(èð(ãÃA‚¤ã^µ$ö–‰CÎZCµj¸±àã­…0šL>·FŽC.; Ô6¤¢‹Ûlhn¡ýnG$ë–™Ð|üš¿da⟱ÀèOXàôÙ§¥WlvÍÜœZƒ›]ÃñŒ8|­AÑÛCâ¡AÑa·%bû§é¨5Pmסª4Ôtkfw<ž‡²=#È’†=ËoQ𩌷´h.7^ïÈmÉsM˜Ÿ
+Üh1ÏľT0qtnZ`TÀéðö`¦ XX'‚ÒB¶ ¾dáQÐ-I£Û¼[pØ[Xḓ@¶ÀB'-kÃhç©r¤€ÉöõÃ\¿Œ6•øøª8Ž.ï7BŠ ]N<·M¸î}\
+™¤7¿äž¾$|ʘ ÑM_$zùºBD¯u…ØtáržyqY$KƒïºØ휼 &hPòˆ§ŒIúEÆ(/ô)c’gPZµ¦—Œ»•¦BCTG|—–÷Î&ŽxŽ§÷1£¼Àç˜1šFÌ’p¿èHXÅ,Ø\ßZt YqpÝTy/ÈŠG:ÅkÐæ¿
+endstream endobj 490 0 obj <</Filter/FlateDecode/Length 878>>stream
+H‰”—=rÜ0 F¯¢Ð þõiRºÊ2)Lrÿ"¢i’
+ÐïºWÒ½{mqàjTûQâ¤Õ€ŠZ¹àR :é–C/hn(Ü</ˆ¶ô´,@ï·nœî l]ùtá6Á£tCÒÜMžFŠk+hn´wãèÓÆMÒ™¹ÍÔ@«¡[©ñFÞ¶ÓMÓ’]m`°[5N÷&ÑC¾Mãüì>O%­ú·\I{~NŸ2+/Ùu¾åö9ð »ö•tÙ½±ŒMÇuW8é¬bZg Ÿ¡Ö‚–C9Ø\=,T46zEÄg¤áë^WzÑg#;£y`¸‘wåÔøAbªbNc\¬ #Ó€E¤ò¢áE‡8dö,y%Ê·Ø–¥6€BR<ÆxŸ„ÓêVø
+AÒy~t .g'Ð)xWRðzËÊ&:™B¢Î¥`Ù’Uw–B¨w^€Éîbà°[¶Btøf0ÂõhÒ)ØðZ
+6¼˜Â(x‡·)pxŸ§U
+gßÃ+)T¾¥À–RµéÅX7Îcò÷!H¸ß»ç½6 AÂQk-´PLûó‹t¼Y9aJ+$U€)í´8ÜoÝ í\稠3h/H/yÁ˜_ŸxÌ›ž•°^”¦^œFîesé¶Ç^ o^lµe)¼xÉÌtç¥a?¼¬“^t¥ƒöÂÕ™{!›1þ‰×(À|ûÀÑpoZ¯~u/Ngí«±1÷65¯Q@°X‘(ûò¿¦íuƒ]vÒ+;× ^o^Qx‰oÚ¼xÎ/e,“\Ótï%a¯½ÜjnLÆ|ã›Xz"6
+ÂJŒÊr£é¸#ýe’4‹ç2÷ŠYå›YÞ›ñ:wÀã¿
+endstream endobj 491 0 obj <</Filter/FlateDecode/Length 973>>stream
+H‰”—M’Ü …¯ââo?›,g•¤²œ¤’û/¦AOØÝv×Te1ùxðž…Ð|üÙ>·¿[4Ž6Û~Œ—`bÞ\I¦Û~~mß¾±³ÛG§ƒaƒË&ÑvæЕBt×ûª¿¶ÛïúßÎ5ÔŽ2t5G­›žóíl² %ã×\%>ÎE“âöBsFkÉD>мZ#Û¬Z­9ã"Zscï¶`XsÊš§Sk²€]Û§=M±–FrHG¡ ¡µØV¯tÒÖ¢ÉüÌZ m'?œÑµ3\À.Ýˉ-–4¸Ð>ß‚’]=q~ÏSãßò$ .=!zá У§VGçžrÖž,ÏÔ¿cJ0Í˽ÞÞjŒóŸ—q9NpdJ<à^› õÖ¸Ús(¯æȨëe{ÓêüðÆàmßíè 0ÍÛM©QGoëaÙ>;lYNûØœ¡Ä;§•Lóz{MËa‘ž×ÛáW°Ô¾ÊÊæså@Îè²Æ`¹ÅP»ç·”sr1qò#…ü¢c¯\ÀÞ^¦€´ToÐíÞò¨ ÄIÄ—ŽYJ·é¹íðäý&qîùwú‚·ªâIÈ³ç‹ 4=ËVkÏèø2ͦ5O§dÖ¸8é݈@xöOJ"@z–lÞËT"(+Êö©ÿã)x™|ÚYj
+k!ø¢ÄêÓÞ ¡ó#‡!Øó„o;ŽÍuÄ’Òå*€£½Li·¦àâ{)¸xšBNã ÷®Y¬yï΢Ã?Gã¬Ûzîýx±$׫±¾ÇÒ‘ôH+|”ÒŽ02sŒûûýP´½Ó£¢Õƒ¤ð¨žÓ¾þ¾¢ð¨P‘›«¡¸|Z‘ô
+£"tâVAÞÈQxTL¨Xöo=ízÆþ+Qœ<*B«äÚÂ;9
+ŠûU¸}FáA1a+³í®ÝŽQpÔî`Ë>FÜ=!ð¨£W¨3;Cˆû®CLjx8êyÔÛŸû'ᾌ–sûˆÂ£b@Ålò;‚¦ç¹¶£û•<*â$Ä=÷n¹Ñj¦çýÛþ 0
+endstream endobj 492 0 obj <</Filter/FlateDecode/Length 212>>stream
+hÞ
+
+
+xxx>>>œœœ¤¤¤„„„~~~eee<<<
+endstream endobj 493 0 obj <</Length 3>>stream
+ÿÿÿ
+endstream endobj 494 0 obj <</Length 21>>stream
+ÿÿÿÿþÿÿþþýÿþþÿÿÿÿýÿÿþ
+endstream endobj 495 0 obj <</Length 27>>stream
+þÿÿýÿþÿÿÿþÿþþþþüþýýÿÿýþþüÿÿ
+endstream endobj 496 0 obj <</Filter/FlateDecode/Length 217>>stream
+hÞ$ˆÑmƒ0EóĨ%Œ
+'Ì È!|ívQ;"w(ãö„‚XB¬`OÖð¡~
+endstream endobj 497 0 obj <</Filter/FlateDecode/Length 773>>stream
+hÞ
+
+
+MMM)))IIIQQQ\\\ˆˆˆ iii@@@˜˜˜YYY>>>%%%|||eee©©©DDD蚪Èj|µF]©3KŸ#=›7¡"=§-FÃ]sáŠËSl·-GÛg~µKa­/²H_æ—ª­:¯/½0Á 0Æ 1Ç
+0Æ
+.Ä .µ .¢9ÌZq¨:µ4Ê 1È 1Ì 1È
+.À3®2è‹žÞ—¥©6°6O—I\¹5¼3¸0­4¤;©'Cª)E­+E¦!< 5¥3ª2µ3´.µ1´6¨8¥p€Ít†ž1F¦7µ#AÆ@[àk…÷‘§î„˜ám‚ÍMd½4N¥5™2 8|9JŸ_m•"9—8œ(?ºYjã“ Ó‰–¶jwCR®Š–ŽVc„%:¥<RÜ{Ò¢°’qzO]Ó–¥Í›¦ïˆì‚˜ó‹¢Àcv¥3J9¥.J¼VnÚ†™êŽÁIb𕧷9Q«4¯ >Ê”¢ªN]½5½4²4›H\Òz— 4§5³6²<­>«>¯=¯9±8°3…L]ᯠcs’&=¦@VÅiç–§¾i~©Ul}5I¦¦¦Š`jˆ,C¬D]Ý~’´ž¡kwè‚—ÇQk»9U®'G±(F³*HÂ@ZÍSlæz‘±]m–;M¹u„“#;š]l666–)@œ5¬4­6†5HÀ¡§‹BU•$@š;›#>˜&?ž2I¥;Q›/F'=Û¤Š,D±E_Ûo‰ù—®Ú ®Œaj“³³µVVV
+endstream endobj 498 0 obj <</Ascent 740/CapHeight 740/Descent -185/Flags 262176/FontBBox[-123 -251 1222 1021]/FontName/AvantGarde-Demi/ItalicAngle 0/StemH 133/StemV 133/Type/FontDescriptor/XHeight 555>> endobj 499 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1813/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ÊΞ F1õxôi]ë3ÓÆFÖµ½‚Âêݘ̡.VÆ„Ÿ? ºê½-â5=ÐOâ¸þ­ö϶YöÍÛ·³ôyüÔ²pÕ€OZ>n{+ý^ßä–Ÿ¾R ¿kþƒÆ×ü’Øèbõnû^ÂÈnßSAº]êVmÛ}gÏï8粋†=Ãfå{ ³ãûÍ0|ÿ
+endstream endobj 500 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2154/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+žN8i1ÁÔ"”eÑŠbõqo£agÑ?D÷ÀªÖ0<»ó›ãæ«Ø-wÐw>^j…Õ:§ÇqÁ
+PXŽð«ä?u‘Ù¨ó
+™è¸Ná9tħQ))§B¨Þõnã¡YÙåðjÚä\
+Cìw$ÃGå*»sƒG%Zc lö˜s»ù$²ÎUîØõ^n6€M>Ù ÉQv[¬s²®­®e ó>;†ººÇWè7Scµ%5Á¥Áú­óñ?2ÁшNµCé⻇>³ü¡¿ñ‰Öµì¦4
+xßMÑôö;gÆRꮊ…¹õs¥bå—ß’âÑV­Ç+ Þ•Ûgt7‰ãv©¹1 ñN2¬‹zŒ&åô¬ºY§Ïs± žšG˜\›h¹Ï55Žu‚e Ñwx®Ïû _e®ˆôÆÂçºf<6B­Ð† ÌÊÕç¨Oë hÿ
+endstream endobj 501 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1175/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+Æ-r}CÀá Œ/t}å\Ð
+«Ü|»«Mhá ÑUÚZZøÐr¢, (êcÁM­LЈÐ)v„@
+A0
+@&”…
+m
+-óDl&á“ZˆÐ™°¦ØL+à ÀLÕ0šW
+endstream endobj 502 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 47>>stream
+hÞš8q¢!°°°0 (¨©©0
+endstream endobj 503 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 42>>stream
+hÞòôôdbbb ((`
+endstream endobj 504 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 40>>stream
+hÞòõõeccc /ˆ‹‹0
+endstream endobj 505 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 37>>stream
+hÞ244dbbb  `cc0
+endstream endobj 506 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 36>>stream
+hÞª¨¨àââbbbb 10440
+endstream endobj 507 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 34>>stream
+hÞ’““c 1¨©©0
+endstream endobj 508 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 32>>stream
+hÞÒÔÔdbbb 
+endstream endobj 509 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 31>>stream
+hÞ’’’b  ’’0
+endstream endobj 510 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 30>>stream
+hÞâà
+endstream endobj 511 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ*-666ê&&¦©S§
+endstream endobj 512 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 44/Length 1934/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+?Í ÿ
+õï©ßY[׺vëa¹´{r;ø<yK˜åŽ?TuäÜÁÌ{ž™i/ÍèI%Y°¤’L’—I$’KóâKÕ¿ñ³ú»ÿ
+—þ9ŸX?vŸóW&í³í˜íº'ðL—ôOê«úWõž·ÿ
+endstream endobj 513 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞRTTd `aa0
+endstream endobj 514 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêèè` 0
+endstream endobj 515 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâàà` PTT0
+endstream endobj 516 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÒÔÔd 0330
+endstream endobj 517 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞrqqa ðõõ0
+endstream endobj 518 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞòôôd HJJ0
+endstream endobj 519 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞ233c HMM0
+endstream endobj 520 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâååe HMM0
+endstream endobj 521 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêëëc ðõõ0
+endstream endobj 522 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞRTTd ÐÔÔ0
+endstream endobj 523 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 18>>stream
+H‰Z¶lYEEEHHˆ‰‰‰”” ##cee•””Ô××`
+endstream endobj 524 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 29>>stream
+hÞŠŒêAAA€
+endstream endobj 525 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêééa‚ê i .0
+endstream endobj 526 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 32>>stream
+hÞš8q"m€››@€
+endstream endobj 527 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 33>>stream
+hÞjlldccc `aa0
+endstream endobj 528 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 35>>stream
+hÞJMMebbb 1HMM0
+endstream endobj 529 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 36/Subtype/Image/Type/XObject/Width 12>>stream
+qqq888
+
+
+666YYYYYYŽŽŽ
+endstream endobj 530 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 36>>stream
+hÞ²²²bbbb =àââ0
+endstream endobj 531 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 20>>stream
+hÞš:455YXXˆbbbqqq7n0
+endstream endobj 532 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 39>>stream
+hÞêëëdÚ&&&+++€
+endstream endobj 533 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 23>>stream
+hÞ244d 011éêêN: À
+endstream endobj 534 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 45/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš5kVUUU\\œppp0‰€……EDDÄÉÉ©¥¥ À
+endstream endobj 535 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 42>>stream
+hÞš7ož®®.}ÐÆÆÆF€
+endstream endobj 536 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 27>>stream
+hÞjlläââbbbb 
+endstream endobj 537 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 44>>stream
+hÞêêêÒÕÕeccc```bbb ;àââ0
+endstream endobj 538 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 29>>stream
+hÞÊÌÌdÊ
+endstream endobj 539 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 49>>stream
+hÞZ»vmLL /0 (`EEE€
+endstream endobj 540 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêééaaaa *`€
+endstream endobj 541 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 52>>stream
+hÞJJJ’`bbbdÀÐÐ À
+endstream endobj 542 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 33>>stream
+hÞc P€
+endstream endobj 543 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 57>>stream
+hÞš:uj`` „„Ã`,,,†††
+endstream endobj 544 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 36>>stream
+hÞªªªbÚ
+endstream endobj 545 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 38>>stream
+hÞêééqss“‘‘a %`aa1ƒ¶¶6€
+endstream endobj 546 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 63>>stream
+hÞêé°°0 &&&†A Ždaa1440
+endstream endobj 547 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 69/Subtype/Image/Type/XObject/Width 109>>stream
+hÞ²°°`  `ccsqq©©©éëëkllÌÍÍõõõUUUabbb #€['===ššš2 ú À
+endstream endobj 548 0 obj <</BitsPerComponent 1/DecodeParms<</Columns 91/K -1>>/Filter/CCITTFaxDecode/Height 88/ImageMask true/Length 95/Subtype/Image/Type/XObject/Width 91>>stream
+ÂÁXV‚°¼2
+`L2 ¢¡‚†C4´
+cÿÿÿÿÿüÒ#y:a2s> ÓZO¥ÉFš¥Ñ1Ý{þ¿þaÿBÿ×ßßN9Ç“ÏÖö½Á…
+endstream endobj 549 0 obj <</BitsPerComponent 8/ColorSpace 471 0 R/Filter/FlateDecode/Height 88/Length 851/Mask 548 0 R/Subtype/Image/Type/XObject/Width 91>>stream
+hÞìÙ}s¢:`{ñ-®ãId7Xú¶Zp·íÚïÿ¥î XEK«¶Þ;Ó~ÿÔfà1òÒIK¥ošÑŽ
+‡cÃø|-ÿtb/—K8s¤žÒ///ü¬0³¥®'Ñuý|,ÞkÚv*#mYg¬E§×lnFÈt:=WE,_v:[iJÏQ J}Ë÷;;{2™œ¡u¤}oÎL&aøÅ>?Dz^§þÛù†óùWʽžã¸ž?×çsÏû¬»tâw×Ï ÃðôŽ a<.g|´F…Ÿ¦ËÊww'Lì†ì }piE™«ã+줤Y· !«•<‚<SѤ½' ¼ò}룒S{µ"H›HŸ¶á ìëºËòŠ+ÝŸg M<ó3»ʺûôäûóg!dI!zž×v´”ž)úÓ[¥®?åÑZBy#Σ¿ëEŠ)R¤H‘"EŠ)R¤H‘ÿ#ƒÁàÐ%÷÷‡®¨V+ÍÇù€Ý¾¿ÏÚ†°w<Wúñr§µÛíRúQ¯jívÛ‚?¶²¢³öï8Ž…:¤³.wìårÉXzÀŸ/×jê¸k2É4ìÒ¿1„íE
+ÓÅÂxØ©P–Ö4 U·¥ åº}6›#äîXî›FLN§ûÅÏÒéÁ}RP!XÖ)´T£Â3N¤=σ+BðQ2EÊ„sa¨Æ›·©X.í¨ófÆ‘6ßÞÞr Ò²þ0sÎ4)M¾s<o¿:·Ö¶]*µZ-ý~ÚŒ·p˵‡ÃŸ>e›GÙ œ;Ž¢¯®2#„sϳ‡kZÎi¥bÞààcFÒjš&gƒ„vÎýzCB$çn­&÷zí*zø:>õÔ¼¤À'kºßïSk0Àkß×y4³ä¨}Cã¼Wÿüã0­ér¹,¸šè½îë̺¸¸ø§\N>V*-‡Vvµª×Œº¹îN©Ôh4´¦Žy}9(—[­z»£õºÝR.{.‹ò!º¤ä„Öº›û½þˆô»+qJo6t梔þÞûÖ¿
+endstream endobj 550 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ñññ˜˜˜|||
+endstream endobj 551 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+ŠŠŠ‘‘‘
+endstream endobj 552 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+­­­uuuYYYIII\\\qqq©©©
+endstream endobj 553 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 24/Subtype/Image/Type/XObject/Width 8>>stream
+©©©‘‘‘†††uuuuuuuuuuuuqqq
+endstream endobj 554 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 15/Subtype/Image/Type/XObject/Width 5>>stream
+ŒŒŒ\\\MMMbbb‘‘‘
+endstream endobj 555 0 obj <</BitsPerComponent 8/ColorSpace 472 0 R/Filter/FlateDecode/Height 45/Length 30/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìÁ1
+endstream endobj 556 0 obj <</BitsPerComponent 8/ColorSpace 473 0 R/Filter/FlateDecode/Height 45/Length 87/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìÒ1€ DQFïd©€‚D‰d1ð_AûÃfB
+endstream endobj 557 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 44>>stream
+hÞÚ¸<==ÙØØèXXXBBB
+endstream endobj 558 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1585/Subtype/Image/Type/XObject/Width 116>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+aÙù6å¿ÀI€ù6¸?{ŠÑ«Šš­¬í-
+endstream endobj 559 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1135/Subtype/Image/Type/XObject/Width 116>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+I$’R’I$”¤“._ë?Ö‡Òÿ
+qýÕ‚+iºß¤åHä}’£ÑúLäçdi•Í°Ãá溫½.RèvUƒÞîͺ™Ç‡ _ã¼’á_ÏO» hcÑÃ@䤒J‹}I$’Jq°ú–KZò2Ø4ÜѲÑýjÏ?%£Vn5º5û\9c½¤|Šˆé¸€Èo&ª™Ã ˆswÀv±ó:§ÈÄìÇ 56$b²³5¹ÍñLýòŒ˜½J†w]é¸"-·}©¨oy?Õj>Fy:\ç–~àqhÿ
+endstream endobj 560 0 obj <</BitsPerComponent 8/ColorSpace 474 0 R/Filter/FlateDecode/Height 45/Length 155/Subtype/Image/Type/XObject/Width 116>>stream
+hÞìØK€ ÐQôþ'Vð³Ôši
+ÃÃÄý.ª°[19’)ÞC¿Yg¾Í¦'³Ïõäõ!£6éP[¹ 0
+endstream endobj 561 0 obj <</BitsPerComponent 8/ColorSpace 475 0 R/Filter/FlateDecode/Height 44/Length 443/Subtype/Image/Type/XObject/Width 116>>stream
+hÞì— S‚@Ç]<P<²<¡¬ìÒî !j)²ïÿYÚeY¦ÆD'emÊÿÌvñ½y?öí¢
+QФÜt
+,ÆL¤Op‡ïÜ`À伊`Üš§ekÌñ{;{&ÞZj L¼§€-“ {nGœ#æ½EÝåÂaÖL·¿s`æLú=ÌÉ>» æ‚ù›™ÌŸÏÄ\œÛ?Ï$·Ñ¯ÎËF"~LÈ:ý™þ½Fƒè-À¯0±˜÷ÜKÒÛ`˜Žxž.ŽÇò<LY9>© :‰O©D ©£n×½„dRRiAÈ q)M,8ó rÒKÈ.¯äò…âªX(æE±T*‰bqx9_ʹA’ b#m¤6³‚”Ï–%I*K²ìŽ[ÄÒv¹‚ÆŠ,K^ÂÎî^uÿà°zt츦¨'ª¢ÖU¥qÚ¨a+gç4ˆ\'ÁšR»¸¼º®È72-«5ïZZ«9ì{bÝKд¶a>tŒnϵÙ1ë=ÝÀöÄ$ht So·µþcß-ýô ­ BËÏ4áÚhjÛÐ3üb~Ä‚X´ÜÛàÝš\К…ìÁÀb-ÛfÏ´¬3@æ‡
+endstream endobj 562 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š3gNÔÔÔäææ"¶¶¶Y³f
+endstream endobj 563 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 25>>stream
+hÞš:ujff¦˜˜‰€ƒƒÃ
+ 7nÜ`
+endstream endobj 564 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 33>>stream
+hÞZ¶lY.Šˆˆ°°°0P0„„Ddd$@€
+»
+endstream endobj 565 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 39>>stream
+hÞ*,,444äàà`À˜˜˜¨€v-\¸ À
+endstream endobj 566 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 44>>stream
+hÞš7o^``    ݘ˜˜
+endstream endobj 567 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 49>>stream
+hÞš3gŽ§§§   À&&& ÉËË[WW`
+endstream endobj 568 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 47>>stream
+hÞòõõe&0`
+endstream endobj 569 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 54>>stream
+hÞZ¹reXX˜ 0111 À
+endstream endobj 570 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 59>>stream
+hÞ*,,cbbbÜ@ V®\ `
+endstream endobj 571 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 63>>stream
+hÞZ¸p¡ ÀTT1™ xyy
+endstream endobj 572 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 59/Subtype/Image/Type/XObject/Width 66>>stream
+hÞ*,,”““c€&&&j ™"""ª``hhèààà&&&ššš‚‚‚d˜ q*LMM0
+endstream endobj 573 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 33>>stream
+hÞ
+ ãàà` 
+endstream endobj 574 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 20>>stream
+hÞZ¸pa!ØÙÙ‰ˆˆ0˜˜˜
+endstream endobj 575 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 32>>stream
+hÞÚ¸q£““0111P€&
+
+j‚Ajjê¬Y³
+endstream endobj 576 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 16>>stream
+H‰Ú¸qcRR’ŒŒ nÀ¾¾¾
+endstream endobj 577 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 29>>stream
+hÞZ¹r¥¡¡!5€  `HHȬY³
+endstream endobj 578 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 14>>stream
+H‰š7ož••6ÀÂÂÂ!!!
+endstream endobj 579 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 51>>stream
+hÞjiidbbbhÀ@ K`` @€
+endstream endobj 580 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+©©©­­­­­­­­­
+endstream endobj 581 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 28>>stream
+hÞZ¸p¡®®. Y€‰‰ NÊÈÈ$$$lܸ À
+
+endstream endobj 582 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰²±±aaaabbbÀ€R‘‘‘
+endstream endobj 583 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 21>>stream
+H‰š3gNnn®¢¢¢ˆˆÀÂÂ"(((%%¥««Ö
+endstream endobj 584 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 27>>stream
+hÞZ»v­…… Y
+endstream endobj 585 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰š1c†””0 ˆ`ii)@€
+endstream endobj 586 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš3gNXX˜¢¢"Å€——×Êʪ®® À
+endstream endobj 587 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÚ¸q£ 0 4Á ££ À
+endstream endobj 588 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 11>>stream
+H‰òô&&&$ÀsæÌ0
+endstream endobj 589 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 36>>stream
+hÞš5k–ppp0111Ð
+endstream endobj 590 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 54>>stream
+hÞòõõe¬€……¥®® À
+endstream endobj 591 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 25>>stream
+hÞZ¶  YXXˆLLLp6P#//o`` @€
+endstream endobj 592 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 27/Subtype/Image/Type/XObject/Width 9>>stream
+uuu
+endstream endobj 593 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 41>>stream
+hÞŠ‰‰c  `bb’lll†††
+endstream endobj 594 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 23>>stream
+hÞRT0` 011‰‰‰eff
+endstream endobj 595 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êééáàà`@,,,ººº
+endstream endobj 596 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 47>>stream
+hÞZ»v­›› 0 4.í
+endstream endobj 597 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 21>>stream
+hÞªª&0` HHH466
+endstream endobj 598 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 27/Subtype/Image/Type/XObject/Width 9>>stream
+ŒŒŒ
+endstream endobj 599 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 52>>stream
+hÞZ»v­‰‰ à@Ç888¬\¹ À
+endstream endobj 600 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 17>>stream
+hÞâååeÀ˜˜˜0åää
+endstream endobj 601 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 56>>stream
+hÞ²³³cbbbÄ€ÍÐÐ À
+endstream endobj 602 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jlldbbbÀ
+endstream endobj 603 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 55>>stream
+hÞrqqáàà`bbbL€ €311Y¸p!@€
+endstream endobj 604 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 15>>stream
+hÞ
+ dÀ ˜À@FF¦®® À
+endstream endobj 605 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰
+ dÀ
+endstream endobj 606 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 59>>stream
+hÞÊÌÌäååe¬€‰‰ Î611Y²d @€
+endstream endobj 607 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰Ú¸q#n !!Ñ
+endstream endobj 608 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RTTd@L`™™ `
+endstream endobj 609 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 64>>stream
+hÞZ¶l™0111 À¢««»råJ€
+endstream endobj 610 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÕÕe```bbbÀ
+endstream endobj 611 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¹r%àåå0
+endstream endobj 612 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2139/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+¿œ÷oÅgä¹HÕÈ7
+o¨é¶ë¸†šî蛣‚}Ã÷B¡×2¬ÇéwÛH‡€
+¥_Òͬƒå>I­l’æñ0|“W¥V»¹
+`¥lzš(§˜Žåté“„Pº‹¸R오†­ãEDi{œ- ¢u¿LG3¢+â™üŸŠNþeƒÄ”¬úE'ÿ
+endstream endobj 613 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 60>>stream
+hÞ²±±abbbaaaÄ
+endstream endobj 614 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 66>>stream
+hÞŠŒŒdccc²€……ÅÆÆ À
+endstream endobj 615 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰êèè`Àxyy
+endstream endobj 616 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ
+endstream endobj 617 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 70>>stream
+hÞRUUe†¡BÀ
+endstream endobj 618 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰âââbÀ˜˜˜æ@€
+endstream endobj 619 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âââbÀ
+endstream endobj 620 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+­­­±±±±±±
+endstream endobj 621 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ cbbbÀÜÀ
+endstream endobj 622 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰
+ cÀÂÂÂ
+endstream endobj 623 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 64/Subtype/Image/Type/XObject/Width 38>>stream
+hÞš3gNcccfffHHˆ¦¦¦¢¢¢”””ˆˆ///0n
+endstream endobj 624 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 62>>stream
+hÞJMMeR€ ’’’
+endstream endobj 625 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰bbbbÀ
+endstream endobj 626 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 51/Subtype/Image/Type/XObject/Width 49>>stream
+hÞZ»vmOOORR’ƒƒƒªª*ÀÄÄ„Æ @´àÑÈ...S§N0
+endstream endobj 627 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RUUeÀ&Nœ`
+endstream endobj 628 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 57>>stream
+hÞòõõUTTäââbccc|€……EPPÐ××wêÔ©
+endstream endobj 629 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÊÍÍeÀììì
+endstream endobj 630 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 60>>stream
+hÞcbbbÄ
+endstream endobj 631 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Ú¼y+0
+endstream endobj 632 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 62>>stream
+hÞ’““cR€‰‰‰——××× À
+endstream endobj 633 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰dÀ
+endstream endobj 634 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 66>>stream
+hÞÒÔÔdš€ ÌÌÌ.\`
+endstream endobj 635 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 64>>stream
+hÞZ¹r%ÃL`
+endstream endobj 636 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’““cÀúúú
+endstream endobj 637 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 67>>stream
+hÞ244dš€ ØØØlll
+endstream endobj 638 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰244dÀ233
+endstream endobj 639 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 69>>stream
+hÞrpp`€ƒƒ#)) À
+endstream endobj 640 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²²²bÀ
+endstream endobj 641 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 70>>stream
+hÞ
+ d àâ┑‘QEŠŠŠ@q10àååebbb 
+endstream endobj 642 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²°°`À<==
+endstream endobj 643 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 22>>stream
+hÞJHH` °±±ñòòJHHXXXDFFæææöôô,[¶ À
+endstream endobj 644 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 31>>stream
+hÞZ²dIGGGff¦‰‰ •
+endstream endobj 645 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀ<==
+endstream endobj 646 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 65>>stream
+hÞÒÔÔdš€ RSS
+endstream endobj 647 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 14>>stream
+H‰ÊÍÍeÀØØØlllRÁ ­­måÊ•
+endstream endobj 648 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 28>>stream
+hÞâââb `bb’,,,555
+endstream endobj 649 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’‘‘aÀ<==
+Y0
+endstream endobj 650 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jkkcÀ6nÜ`
+endstream endobj 651 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 29>>stream
+hÞòõõeÀ ¸¸¸H,,,UUU
+endstream endobj 652 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ"##
+endstream endobj 653 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 49/Subtype/Image/Type/XObject/Width 26>>stream
+hÞZ¸páĉsssÃÂÂlllTUUEDDxÁ€ƒƒƒ………8™™ `
+o
+endstream endobj 654 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š8q"°lÙ2€
+endstream endobj 655 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 30>>stream
+hÞZ¹r%n””4cÆ ;;;&&&"
+endstream endobj 656 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¹r%6PZZ
+`
+endstream endobj 657 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 67>>stream
+hÞš8q"ÃLLLS§N0
+endstream endobj 658 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 39/Subtype/Image/Type/XObject/Width 13>>stream
+©©©ŒŒŒqqqQQQ@@@)))
+endstream endobj 659 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š7o°lÙ2€
+endstream endobj 660 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰’““cÀ
+endstream endobj 661 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 16>>stream
+hÞÊÌÌd 011ñòò
+endstream endobj 662 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÊÌÌdbbbÀæÍ›`
+endstream endobj 663 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+©©©©©©ŽŽŽ
+endstream endobj 664 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Ú¸q#0oÞ<€
+endstream endobj 665 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ª««cÀ
+endstream endobj 666 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 16>>stream
+hÞjll&&&Ü@
+endstream endobj 667 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’‘‘aÀØØØ
+endstream endobj 668 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 67>>stream
+hÞ244d `bbb #0
+endstream endobj 669 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àúúú
+endstream endobj 670 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰dÀRSS
+endstream endobj 671 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 14>>stream
+H‰JMMåââbÀ ˜À 22 À
+endstream endobj 672 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z»v- ''`
+endstream endobj 673 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`À&Nœ`
+endstream endobj 674 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰
+ dÀ$$$
+endstream endobj 675 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 13>>stream
+H‰244dbbbÀ ØØØ–-[`
+endstream endobj 676 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰rqqaÀÂÂÂ
+endstream endobj 677 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àººº
+endstream endobj 678 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰bbbbÀ.\`
+endstream endobj 679 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 68>>stream
+hÞbbbb *àààa `cc’111
+endstream endobj 680 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 12>>stream
+H‰*--åàà```` ''`
+endstream endobj 681 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰baaaÀV®\ `
+endstream endobj 682 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àªªª
+endstream endobj 683 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÔÔdÀÜÜÜ
+endstream endobj 684 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Z¶l™   ›› `
+endstream endobj 685 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰233cbbbÀ
+endstream endobj 686 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ***
+endstream endobj 687 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RTTdÀxyy
+endstream endobj 688 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰êèè`bbbÀêêê
+endstream endobj 689 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’`ÀJKK
+)¨
+endstream endobj 690 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 27>>stream
+hÞš8q"Å€ ØØØ
+endstream endobj 691 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âål ­­ À
+endstream endobj 692 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RUUebbbÀ
+endstream endobj 693 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âââbÀXXX
+endstream endobj 694 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀRSS
+endstream endobj 695 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ŠŒ&&& `hh`
+endstream endobj 696 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’````bbb@
+endstream endobj 697 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰244dÀ˜˜˜êêê
+endstream endobj 698 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²±±aÀâââ
+endstream endobj 699 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âàà`aaa@@€
+endstream endobj 700 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Ú¸q#///`bb²²²0
+endstream endobj 701 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 36>>stream
+hÞš8qbXX˜””000@HZ
+endstream endobj 702 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰òõõebbbÀtuu
+endstream endobj 703 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀâââ
+endstream endobj 704 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰233cbbbÀ
+endstream endobj 705 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êêêbccc€&&&8 À
+endstream endobj 706 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Š‹‹cbbbÀ8À`ãÆ
+endstream endobj 707 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Š‹‹cÀ
+endstream endobj 708 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰š5k6 ¨¨`
+endstream endobj 709 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ"##
+endstream endobj 710 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 12>>stream
+H‰ÊÌÌdbbbÀ€â¥`
+endstream endobj 711 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰*,,dÀ<==
+endstream endobj 712 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 26>>stream
+hÞÊÌÌd ð‚ÁŒ3
+endstream endobj 713 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’’’bÀÖ®] `
+endstream endobj 714 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 8>>stream
+H‰&&&$ÀËË `
+endstream endobj 715 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ aaaaÀœœœ
+endstream endobj 716 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ª©©aÀ<==
+endstream endobj 717 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÊÍÍe```bbb@
+endstream endobj 718 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ªª&&&$ÀÂÂÒØØ`
+endstream endobj 719 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰²³Ü@WW À
+endstream endobj 720 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰êëëcÀlll
+endstream endobj 721 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰’““c@ººº
+endstream endobj 722 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 12>>stream
+H‰RUUel
+endstream endobj 723 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1669/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+;ØýðQޛž$¥Ê%èeêzpŠ ’=ÿ
+76[=Â@êÉ1alwrÕ`*lvÒ
+¶Ó"Gt¤ÀèÉÂZB®€ƒ`‡ŸªASV
+AD' Ë铤†.
+­ìVʈAr­f×Hì†}¦?5ãErêÕW7M§â>(‘Ù0º(7«8¹ṁ¶xv¼éʤòA$p¢Ûv¸;Àƒ÷!Äeà¢ô##Õ:™,{ yÑj°OÐ{]ø~UÆœ›1òÝef ÏÄ;ÝüWGFCm­¶4ÈpHì²bŽ¡Ô`±¤Ó5D{áî5TqhH*Õ™ ]½“6€E&1b®2\yƒò
+C ~ãïM1=’$;¶XýýUQB»Ûö7èùÿ
+Q"ëÝ´oå ÌÕsv¸·îG¡úm?%º~òs¸G)Ý5bÚZjÜ ­l¶|ŽöÕ4/; Ói:pœ'±2N¢¤B”\$)¦Ñ ‚Ö²¹Tí©i:kv'……ÅÉ©ÕÍáVÞÇsí>=–½ÞœÜwX·ú~¡ô§oš‡ ­boÀ6ðL‘Ã8‘Ø‘¢k·CȈ$k¨FÁêVb<¥Q>æÿ
+endstream endobj 724 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 34>>stream
+hÞZ¶ œœœØØؘ˜˜¨ 233
+endstream endobj 725 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¸p!6`hh`
+endstream endobj 726 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²±±aÀ
+endstream endobj 727 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰*--e@lll
+endstream endobj 728 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰ªªªâââbÀ 455
+endstream endobj 729 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z»v-6`hh`
+endstream endobj 730 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¸p! *`bb²²²0
+endstream endobj 731 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰âååe@¹¹¹
+endstream endobj 732 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 13>>stream
+H‰²²²bÀ ˜˜˜,,,
+endstream endobj 733 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 8>>stream
+H‰b`ÀTUU
+endstream endobj 734 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰RTTdÀ
+endstream endobj 735 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 23>>stream
+hÞrqqa  °±±
+endstream endobj 736 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰rrrb@ššš
+endstream endobj 737 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 14>>stream
+H‰JMMåååebbbÀ˜` ,, À
+endstream endobj 738 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 51>>stream
+hÞ*,, AhÜ™™™
+endstream endobj 739 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âàà`À
+endstream endobj 740 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰*--e@LLL@²
+endstream endobj 741 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰êééa@LLL
+endstream endobj 742 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 15>>stream
+H‰jll”’’baaa@PP°«« À
+endstream endobj 743 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 52>>stream
+hÞrsscccc|€‰‰ À
+endstream endobj 744 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âååeÀ
+endstream endobj 745 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âââbÀ
+endstream endobj 746 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ244d ““0
+endstream endobj 747 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 7>>stream
+H‰b`@³fÍ0
+endstream endobj 748 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 15>>stream
+H‰š8q¢¢¢"n
+endstream endobj 749 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 54>>stream
+hÞ²°°`aaabbb”`ãÆ
+endstream endobj 750 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰dÀ
+endstream endobj 751 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰òõõeÀ
+endstream endobj 752 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰d@111
+endstream endobj 753 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 17>>stream
+hÞ*-999&0`À ²bbbmmm
+endstream endobj 754 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 55>>stream
+hÞ
+ a
+
+endstream endobj 755 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰’`À
+endstream endobj 756 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z»v-
+endstream endobj 757 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 23>>stream
+hÞrpp` 011±±±Mœ8 À
+endstream endobj 758 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰rrrb@†††
+endstream endobj 759 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 18>>stream
+hÞZ²d‰¯¯////`bbB*Ë€
+endstream endobj 760 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 56>>stream
+hÞêèè`bbbÜ`ãÆ
+endstream endobj 761 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰’““cÀ
+endstream endobj 762 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’““cbbbÀ
+Y
+endstream endobj 763 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰JMMe@‚‚‚
+endstream endobj 764 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 18>>stream
+hÞZ¸paXX˜””n
+endstream endobj 765 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 55>>stream
+hÞRUUeaaaÜ
+endstream endobj 766 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ÒÔÔdÀ
+endstream endobj 767 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰jlldÀ˜˜˜.\`
+endstream endobj 768 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 30>>stream
+hÞ*--åàà` 6ظq#@€
+endstream endobj 769 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 7>>stream
+H‰jiia@LLL
+endstream endobj 770 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 41/Subtype/Image/Type/XObject/Width 20>>stream
+H‰š1cFBB‚‰‰ ///°°°0`pq ÃÐÐpâĉ
+endstream endobj 771 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 56>>stream
+hÞš3gÃà,,,
+endstream endobj 772 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰233cÀ
+endstream endobj 773 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 9>>stream
+H‰dÀ<==
+endstream endobj 774 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 37/Subtype/Image/Type/XObject/Width 29>>stream
+hÞª©©abbb@@®®®®ªª*é
+endstream endobj 775 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 56>>stream
+hÞòõõeô@LL À
+endstream endobj 776 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰òôôdÀ
+endstream endobj 777 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 47/Subtype/Image/Type/XObject/Width 48>>stream
+hÞ
+ aÀXXXt1€ Â
+ <==»ºº
+endstream endobj 778 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 56>>stream
+hÞâååeô@WW À
+endstream endobj 779 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 22>>stream
+hÞÊÌÌd 011ùúú
+endstream endobj 780 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ŠŒŒdÀ
+endstream endobj 781 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 45/Subtype/Image/Type/XObject/Width 44>>stream
+hÞZ¶l™¦¦&‰€ H@],,,ŠŠŠ‘‘‘'N0
+endstream endobj 782 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 56>>stream
+hÞb`À×× À
+endstream endobj 783 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ÊÌÌdÀ
+endstream endobj 784 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 42/Subtype/Image/Type/XObject/Width 41>>stream
+hÞZ¶l™‰‰ „¤àààPUUurrJMM8q"@€
+endstream endobj 785 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 57>>stream
+hÞš:u*ÃP
+endstream endobj 786 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰ª©©aÀ
+endstream endobj 787 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 36>>stream
+hÞZ¹r¥¡¡!0À
+endstream endobj 788 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 57>>stream
+hÞ*,,d
+`É’%
+endstream endobj 789 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰êééaÀ
+endstream endobj 790 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 29>>stream
+hÞš3gõ@nn.@€
+endstream endobj 791 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 68/Subtype/Image/Type/XObject/Width 35>>stream
+hÞZ¸paOOOEEEjjj`` ®®®„„ ^ %%åææ™  .
+bªìêê0
+endstream endobj 792 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 56>>stream
+hÞòôôd
+
+endstream endobj 793 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰š5k6
+endstream endobj 794 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰
+ aÀ <==
+endstream endobj 795 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰bcccÀ
+endstream endobj 796 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 56>>stream
+hÞš8q¢®®.Ã ¼¼¼
+endstream endobj 797 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰Z¹r%6
+endstream endobj 798 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ba€ƒƒ À
+endstream endobj 799 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰Z²d 6
+endstream endobj 800 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 53>>stream
+hÞ*--UTTd9H€‹‹ @€
+endstream endobj 801 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 20>>stream
+hÞb` 
+
+
+endstream endobj 802 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 14/Subtype/Image/Type/XObject/Width 7>>stream
+H‰b`À
+endstream endobj 803 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 12>>stream
+H‰
+ Ü 33 À
+endstream endobj 804 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰
+ dÀ
+endstream endobj 805 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 50>>stream
+hÞÊÌÌTTTdbbb
+endstream endobj 806 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`À–@€
+endstream endobj 807 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âååeÀÄÄÄ
+endstream endobj 808 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âååeÀ
+endstream endobj 809 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 48>>stream
+hÞÚ¸qcdd¤0111 (ظq#@€
+endstream endobj 810 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 9>>stream
+H‰b`Àæ@€
+endstream endobj 811 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 11>>stream
+H‰JHH`aaaÀÚÚÚ
+endstream endobj 812 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 28>>stream
+hÞª««c*+++€
+endstream endobj 813 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 9>>stream
+H‰JHH`@LLL@277 À
+endstream endobj 814 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 43>>stream
+hÞZ²dI`` Ý   @€
+endstream endobj 815 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰âååeÀ
+endstream endobj 816 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰âååeÀ
+endstream endobj 817 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 16/Subtype/Image/Type/XObject/Width 8>>stream
+H‰âââbÀ
+endstream endobj 818 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 40>>stream
+hÞš8q"}¡¡!@€
+endstream endobj 819 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰’`À
+endstream endobj 820 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 20>>stream
+hÞÊÌÌdÀ ¤À€‰‰ SJUU À
+endstream endobj 821 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 39>>stream
+hÞbaaa /ÈÍÍ0
+endstream endobj 822 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰RTTdÀ
+endstream endobj 823 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 20>>stream
+hÞrrrbR
+endstream endobj 824 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 19>>stream
+hÞâååeÀ˜À
+endstream endobj 825 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 39>>stream
+hÞd /X»v-@€
+endstream endobj 826 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰ÒÕÕeÀ
+endstream endobj 827 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 18>>stream
+hÞÊÌÌd ÈÉÉ
+endstream endobj 828 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞâååe #àåå0
+endstream endobj 829 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰²°°`À
+endstream endobj 830 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 17>>stream
+hÞa ttt
+endstream endobj 831 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞâååe #°°°
+endstream endobj 832 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 18/Subtype/Image/Type/XObject/Width 9>>stream
+H‰rqqaÀ
+endstream endobj 833 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ*--e ˜˜˜ CCC€
+endstream endobj 834 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1782/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+·tûÏb¶$:¸ð—BÍ
+ªæ–¸´öVÔ.¯x‘ô‚)œl1¢ÏÍ?$p©Að*ÕVˆüà‰ bzZßÎ5
+AD)嬂xLÔˆµ õ«{F©ìˆ+Hrí§ÁRÉÅe¬-xøán>%ZÜcà`Š,gŠ&Æ„<ŽN-ØÎ’70þr¬] ¬·A ¬œ¾Š×K¨;îž|œ¹ÃQÙ»‡‰ôäÐ÷r›{Ûô\GÍí–Fèyk¿8N‡ýª½øÙæ-¬´~ðÔ!µâåUI#B)½¸›lý¥‡éTÓð—Ú)ÿ
+÷Õùíù„¸ƒ#­Ê µG¹¼w ТqêÕ`xóîœÀár¤×™«uZ<ણ+Т ´Áå8F{ǘá0yNÖJ4ͨÌ@j; h>ôŠ´i®Šb²D§‰Ð)c´l/Î#Uî'[?4>äÃ$Ó_Ñ$jcàÝŒÒ$“óW k·=ù»¸%^Æ>}ó>h‚P@iYHðüª­•Uà®ÜÓ*6¶Å >+ Aè‚Êk ˆxŸ‘Ñ°n2k qîÍç‹|ˆ»Á J'æ
+¾ÑØ ±â?£^MˆäÎ?H0åcôŽ§hµ†²æñ&BÖ©™Noé€k»í2'+Á;~ÓÜ`! ­÷'óp¦î<¹˜ÌäëñAo¯àQ/ðR{ƒ³Å/ÞmWK`¬W[<¦Áw‚³Smîãµ¾Õ7+®¿e•Õã^–»º´ÖOš¨
+«Cü‚0*ƒftå[¯|{ 2Äž¡›ëñ@!Ì0t*À”¬Ù·ßòñH©
+ûLë¹ûç]ß>®ëƒÿÙ
+endstream endobj 835 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 27>>stream
+hÞ²±±abbb ‘‘0
+endstream endobj 836 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 38>>stream
+hÞbaaa #(--0
+endstream endobj 837 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 12>>stream
+H‰Z¹reKKKRR’””È€
+endstream endobj 838 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 14>>stream
+hÞ’` ˜˜˜¸¸¸
+endstream endobj 839 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 14/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` +
+endstream endobj 840 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 21/Subtype/Image/Type/XObject/Width 16>>stream
+hÞJHHà
+endstream endobj 841 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 14>>stream
+hÞJMMe XXXZZZ
+endstream endobj 842 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` àåå0
+endstream endobj 843 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 16>>stream
+H‰ÊÌÌ”`
+endstream endobj 844 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 14>>stream
+H‰*,,dÀ ˜˜˜âââ
+endstream endobj 845 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 37>>stream
+hÞb` ðõõ0
+endstream endobj 846 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 18>>stream
+hÞ’‘‘a °°°øúú
+endstream endobj 847 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 17>>stream
+H‰êëëÓÕÕebbb``€¸€„„D``àÊ•+
+endstream endobj 848 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 15>>stream
+hÞêëë“““cbbb 
+endstream endobj 849 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 38>>stream
+hÞZ²d Áœ9s
+endstream endobj 850 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 36/Subtype/Image/Type/XObject/Width 17>>stream
+H‰òõõåââbbbb€&0`À
+endstream endobj 851 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 18>>stream
+hÞª¨
+endstream endobj 852 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞêèè` àåå0
+endstream endobj 853 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 21>>stream
+hÞ*,,d ppp(**¦‚ÁÊ•+
+endstream endobj 854 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 22>>stream
+hÞš:uª››///Y 22 À
+endstream endobj 855 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞÊÍÍe 0440
+endstream endobj 856 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 25>>stream
+hÞš7o‰€‰‰ Îæåå511ÉÌÌ\¸p!@€
+endstream endobj 857 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 20/Subtype/Image/Type/XObject/Width 27>>stream
+hÞZ¶lõ€ˆˆ@€
+endstream endobj 858 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 25>>stream
+hÞª©©qppàååe  
+
+
+endstream endobj 859 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 37>>stream
+hÞrssc ¨««0
+endstream endobj 860 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 29>>stream
+hÞb` 011áW ((èää”™™9qâD€
+endstream endobj 861 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 32/Subtype/Image/Type/XObject/Width 33>>stream
+hÞZ²###555YXX¨
+***
+endstream endobj 862 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 36>>stream
+hÞ’““c =`€
+endstream endobj 863 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 76/Subtype/Image/Type/XObject/Width 76>>stream
+hÞdÀ ÚÚÚ===¥¤¤ØØØH` (((&&&''§@¶„„„ˆˆ///e
+endstream endobj 864 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 36>>stream
+hÞâååe =Ѐ
+endstream endobj 865 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ÒÕÕeÀ –,Y`
+endstream endobj 866 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 50>>stream
+hÞš8qbXX˜0111 4’’jll0
+endstream endobj 867 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š8q" *€ˆÌš5 À
+endstream endobj 868 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ’` DFF
+endstream endobj 869 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 37>>stream
+hÞZ»v-íA.
+endstream endobj 870 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰
+ dÀ ¦N
+`
+endstream endobj 871 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 43>>stream
+hÞZ»vmii©§§§¢¢"½
+endstream endobj 872 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÔÔdÀLLL
+endstream endobj 873 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÊÍÍe =`bb0
+endstream endobj 874 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ª©©aÀ ZZZ
+endstream endobj 875 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 35>>stream
+hÞZ¹reMM§§§¢¢¢   0P011 ‚™™Ycc#@€
+endstream endobj 876 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰š5k6ÀÆÆ`
+endstream endobj 877 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÒÔÔd =‘‘0
+endstream endobj 878 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 11>>stream
+H‰š7onPZZ
+`
+endstream endobj 879 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞâàà` 0
+endstream endobj 880 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 47/Subtype/Image/Type/XObject/Width 24>>stream
+hÞZ¸pa]]]XX˜•••œœq€MUU500°ªªjãÆ
+c
+endstream endobj 881 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰244dÀBBB
+endstream endobj 882 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 35>>stream
+hÞbbbb 011éêêæææÖÔÔ
+endstream endobj 883 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 17/Subtype/Image/Type/XObject/Width 10>>stream
+H‰b`À ’’’
+endstream endobj 884 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+±±±¡¡¡œœœœœœœœœœœœ©©©
+endstream endobj 885 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¸p!ÀËË `
+endstream endobj 886 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 16>>stream
+hÞ*--e ðòòVTT
+endstream endobj 887 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 15>>stream
+hÞš:u*€ À
+endstream endobj 888 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰baaaÀÂÂÂ
+endstream endobj 889 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ÒÕ666TÀÄÄ”›› `
+endstream endobj 890 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 14>>stream
+H‰ÒÕÕe
+endstream endobj 891 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 15>>stream
+hÞ’““c 011utt
+endstream endobj 892 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 14>>stream
+hÞâââb hjj
+endstream endobj 893 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰RUUeÀÜÜÜ
+endstream endobj 894 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 10>>stream
+H‰Z¶ XXX0€ˆˆ@€
+endstream endobj 895 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 15>>stream
+hÞêëëc ¤¦¦
+endstream endobj 896 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 14>>stream
+hÞÒÔÔd ÔÔÔ
+endstream endobj 897 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 10>>stream
+H‰
+ dÀ 
+endstream endobj 898 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰233cbbbÀ
+endstream endobj 899 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 14>>stream
+hÞRTTdbbb ¤¤¤
+endstream endobj 900 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 13>>stream
+hÞJHH` 888
+endstream endobj 901 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞd 0
+endstream endobj 902 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 10>>stream
+H‰ª««cÀ˜˜˜
+endstream endobj 903 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 9>>stream
+H‰Z¶l 0440
+endstream endobj 904 0 obj <</BitsPerComponent 1/DecodeParms<</Columns 244/K -1>>/Filter/CCITTFaxDecode/Height 89/ImageMask true/Length 255/Subtype/Image/Type/XObject/Width 244>>stream
+ä0|¨
+R‚L€¿í}¼4ÞÃZîÁ„½Š®ÞÞÐ5Ý¡w¿ÚÛ´}ü5ïäPÌ£p i§n /°A‚ÞCÜD?x0¡‡¹‘—2»Å‡ÝØ…‡ƒ_üø†+ {X0O_;Aìfq¡ùZ‡ðþà P‘l‡:±
+Pax`¡‚ÿÿþF²µþwÇ3ÎŒ¨;8fŒÌͦN|ÌÙÃ>&Óûÿþÿÿuú¯ÓûòAù ¿“ÿøÿOÛJIÿü?ÿËÿÿ½{[ÿõøÿ¢cÿOáyo þÿþðXùgÓú‘#D°?Ãÿ' ÿéý¯ 0^ïûÐiªy]T7À
+endstream endobj 905 0 obj <</BitsPerComponent 8/ColorSpace 476 0 R/Filter/FlateDecode/Height 89/Length 2833/Mask 904 0 R/Subtype/Image/Type/XObject/Width 244>>stream
+hÞì›y|GÇ×–-˲eÉöÚ–åX3’V‘e­eÇkY–¯„r”¦ =iCCC!G0”–p%ÐÒ
+efF¸ÇáˆQ£êììä© z OhÌ^¯W]ï^¯YoÁ`°8Ìò+‰‰|Ú‡Bª‡Ò©£±¦¦Ž˜ÃÑÜšˆ S+ 
+2c³Ùäâ³æÌ©TªÌ0èâhw>í}¾`#S±
+30ΈөY±Ù ì±dFþõ⋦}577‰9 »ÝyAƒ(›°aJ^xA, ™@.}þy 5Y˜!p+¶ ŽÅb’x[ò200@½f9HdÆɉ ‚,2×0Y˜ÏÛse–÷Œ‡‡ó² úýR$ÎY˜}î¹4;s¶žfÍš%ÈoMª‚x*.?ŒC¡ü,øýñxúΦhmæs«­­M6PRR ³ È#‰æi"O$Ü‘8x‰ ŸzêÿœD?]]]²óàž›´ayyž&
+Ì€À²äÎ;´äË“€‰Pk«æ>LÒŒy’JéõzÉ-ØHœºÙN*vV€§fÏÖyÎ)’;³”Àá÷‹Ì<Ϙ1‹>Ö3ÓÎ £©7EfXì94æÖÖVÍÏ¢K˜T*¥%¥ƒ÷21£¼€Q48¨Æb1Ì…QY™ž¹§'gfÖ:YÛZâª.¯
+˜‘äW`¦*ÐÌ°\ÍÑÉ-G¨¾˜¥2ñY¹²îpÌœI&Yt'3‹~F¨ÚíÐû[“ÉhÅøªå¤É2ó<î±³6dc.2úÕÀ óÎaô3fh·ðfµÀn·#äñÈOâ}îX¬¬ F®L„ègTQM¿¹d¼ÂI¸¥E-ëïïG¾*语-Of°†ër¡öölÌ( 3™wûÐq£KϬ¼¿ŠŸ)fˆKÑ(¼§‘ˆÒHö³îŠœ)³ïÿ™И#LvæþD"!h!’Ä<8H²'KKóeözØPao’Ì~¿%íÕÕQ áÛtm˜Å"X@c–Ò°Rtæog"ÑÛ«&
+´o;`Vãƒ[WÉn@Ò?3dѬÈÌXz¥è?
+endstream endobj 906 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+zzzzzzŽŽŽ±±±
+endstream endobj 907 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+^^^
+endstream endobj 908 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+```
+endstream endobj 909 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 24/Subtype/Image/Type/XObject/Width 8>>stream
+ŽŽŽ‘‘‘~~~uuuuuuxxxqqq¤¤¤
+endstream endobj 910 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+•••ŽŽŽŽŽŽššš
+endstream endobj 911 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŠŠŠŠŠŠzzz
+endstream endobj 912 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+ŒŒŒ
+endstream endobj 913 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 11>>stream
+H‰ª¨¨c
+endstream endobj 914 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŽŽŽŒŒŒžžž
+endstream endobj 915 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 12/Subtype/Image/Type/XObject/Width 4>>stream
+ŽŽŽŽŽŽŒŒŒžžž
+endstream endobj 916 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+ŽŽŽŽŽŽ¡¡¡
+endstream endobj 917 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+žžžuuu
+endstream endobj 918 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 9/Subtype/Image/Type/XObject/Width 3>>stream
+‘‘‘‘‘‘ŒŒŒ
+endstream endobj 919 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 6/Subtype/Image/Type/XObject/Width 2>>stream
+ŽŽŽ‘‘‘
+endstream endobj 920 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 3/Subtype/Image/Type/XObject/Width 1>>stream
+bbb
+endstream endobj 921 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+ŽŽŽŽŽŽ†††uuuxxxuuu```
+endstream endobj 922 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 26>>stream
+hÞbaaa PTT0
+endstream endobj 923 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Height 1/Length 21/Subtype/Image/Type/XObject/Width 7>>stream
+•••TTT111111111QQQŠŠŠ
+endstream endobj 924 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 44/Length 1502/Subtype/Image/Type/XObject/Width 240>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ŠIPSsö¶wúOÀ%û_?ý'à4’U7Ç\êCü/à=o¨žlü ’Tßs©,üúÁÕþg$•*1õ“«Ž.ÿ
+endstream endobj 925 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 27>>stream
+hÞêëëc ðôô0
+endstream endobj 926 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 100>>stream
+hÞÒÕÕe `bbRUUåââbv€——755 À
+endstream endobj 927 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 35/Subtype/Image/Type/XObject/Width 103>>stream
+hÞ*--eaaabbb  ®iƒ
+endstream endobj 928 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 40/Subtype/Image/Type/XObject/Width 106>>stream
+hÞÚ¸q# •
+endstream endobj 929 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 107>>stream
+hÞadŽÀÀ@€
+endstream endobj 930 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 110>>stream
+hÞÚ¸q£””Ã( 0¦¦&@€
+endstream endobj 931 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 111>>stream
+hÞš5k///Ã( 
+endstream endobj 932 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 111>>stream
+hÞJMMeaaa777€
+endstream endobj 933 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 24/Subtype/Image/Type/XObject/Width 112>>stream
+hÞ24&&&†Q@1àåå0
+endstream endobj 934 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 114>>stream
+hÞ*,,äââb9
+(™™™
+endstream endobj 935 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1111/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+® © „2MÆ¢4­]ž*ÃJŒ†@S4¢´ 7É¥FBðS4©‚„Òˆ
+i Ã0T”R5+§L.’I$¥$’I%I$’JRI$’Ÿ0m’¦×ª ºxVgu±n)‹h PZéE%¬ÒL¢¤•Ù;„bÐF¼*¨ÕY×qئ‘Ô/Œº.aiòNÇ™G€D_^ÝG  Úâ+P® Vc‹L…a®"—DÚÐZa«#CÂm‚¢AiMÝpѸҊÒ:ì
+Ë\™ ËZXGµ¼‚§ÂŒ¯¶ÇH”Qª§[áYcLd(((@ʘ*2¼%H6•0šWiÔBA+§L’
+]$’IJI$’J’I$”øµWvñW*±eUºÚwéⵃ—0;ºu¾QÚí*·Jµ\§0”à©!¶TÂ+WN™$ئÍÃiäpŠuЪ™yì­‰yî™!Ù–$Ö¨ͧN
+v?iòE|m3Â
+Fú7ZäV¹V¯tjŒÙQË›Ì"ÖøAl÷RlΉ…xn1Ú"‚«W¹²£, ¤L0¦ÔÒ¸$I@)ÕÌ‚p™8MRé$’JRI$’”’I$—ÿÙ
+endstream endobj 936 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 115>>stream
+hÞZ¹r¥ªª*Ã( ““0
+endstream endobj 937 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 33/Subtype/Image/Type/XObject/Width 116>>stream
+hÞòôôdccc```bbbT,,,3fÌ
+endstream endobj 938 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 27/Subtype/Image/Type/XObject/Width 117>>stream
+hÞJJJâàà`bbbÔ666
+endstream endobj 939 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 118>>stream
+hÞJMMda€………°±±¥˜˜˜¨h@€
+endstream endobj 940 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 43/Subtype/Image/Type/XObject/Width 83>>stream
+hÞŠ‹‹d
+endstream endobj 941 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 82>>stream
+hÞÚ¸qc`` 0000111 G
+endstream endobj 942 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 38/Subtype/Image/Type/XObject/Width 79>>stream
+hÞjkkÓÔÔdaaa %`bb‚“ôlllººº
+endstream endobj 943 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 46/Subtype/Image/Type/XObject/Width 79>>stream
+hÞš7ož››///m
+endstream endobj 944 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 51/Subtype/Image/Type/XObject/Width 80>>stream
+hÞjll´³³ãàà`
+endstream endobj 945 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 52/Subtype/Image/Type/XObject/Width 86>>stream
+hÞª««sppÐ .0`bbb =€Ûb .üøñc`` }¬†ø4.. À
+endstream endobj 946 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1196/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+(Uªt« Na,’L$)‡þaù 'ƒ#²Zèš-Ä;ùÃæ¦×nhpîGtÌuâ …e¤!W{vŸ.Êu:ßHµ±4i8)|S1¨„ÆEët쬴ªcCõ;²l‚è–Ó\‹È•]¥ŽQÌ
+V9Yc¤*ƒB[ ¦H/‰m4©„”V•d R@)¸3Ná®0N‚”’I$¥$’I%ñë7‡ï™w‰Uò+k†ŸEüy£—X‘cDë¸T¢e‡‡qäVÏG  B²Zè<…{â©{!Ü‹Žä)±|Q·b‡J¶Ã¢ÏÇr½YÑ %N˜'Ij’I$ŸÜ°üB:§[¶¼u2CVXHìl·Ì!4«€áµÄ}ÉÊêØa
+˜A¥Ü„dÒ¾%NÓ´÷O!@x –Û ÁFiU©=‘ÚTr ±)Æ¡M… …LhTe6«vˆÍ*­nÕXiQÈ2D¦H6•0S
+ð'Q
+I«™“è)t’I%)$’I/—ØÍÍ}}þ“>#‘ó 2Æ­k?nߥ¸*vú[ßèjé0]¡þÈáláÑÉg³_¤ñ¨ð!U¤Á…ißAÓã§ÅUoó†8”Yq §Œå£QÐ,¼iZt̘æØjI5:KT’dé)JíGum?%L+XßÍ™âtLžÌ˜÷H‡stðEÑBÈØe0nÉ-‘0ÃV‚¦¶Ì å" ‹´wÅH&oÕå•n‚¦•MªÓ&l—Á3
+/iAo(£‚¢,¡#
+²Ã¢ªÅb¹„É2E;J˜(mSjŒ²L!…0šW2 Â`œ&©t’I%)2I$§ÿÙ
+endstream endobj 947 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 46>>stream
+hÞ*--d8ÀÂÂbff¶páB€
+endstream endobj 948 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 36>>stream
+hÞZ»v- “™™@€
+endstream endobj 949 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 44>>stream
+hÞ244dbbb
+endstream endobj 950 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 35>>stream
+hÞÒÕÕe 1ìèè
+endstream endobj 951 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 30/Subtype/Image/Type/XObject/Width 43>>stream
+hÞRUUe```bbb €Û%%%UXX`
+endstream endobj 952 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 34>>stream
+hÞjkkcbbb *@6ȶ³³0
+endstream endobj 953 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 42>>stream
+hÞÒÕÕebbb #
+endstream endobj 954 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 33>>stream
+hÞ’’’b `ccËÍÍ0
+endstream endobj 955 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 40>>stream
+hÞ
+ a #`€
+endstream endobj 956 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 29/Subtype/Image/Type/XObject/Width 34>>stream
+hÞ*-0` 6`bb\²d @€
+endstream endobj 957 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 2334/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+A0® ‚QN)d’¯—‰…Q»*ÖÔÁÝÆ'à°îú×eìsúu¸íÑÙ™'Ó¨Träè㜶wY<°†ç^Ý^‘2ä«Íê9Í7\üq«²,ý_TÒ;ï
+?nÂÿ
+‹µs›ûÍ |Q¾ØÛ¬²¨-s
+L&P‹¹F¤ê…ùů¤‘ÙQÝ©õ9ø=û«vË] ­ÃçÇàf}kêÆ×ÝéÆý§‰Zß_2¢¼\0~‘6¸ykVGIé¿YÝöŽ–Û[E§é1Á»‹T
+íÒ¨_2>#ò«‘½;4Jü㿬*…ÚØÑàóŽþ±üª.þ|Ï”|å°N=Ës¼-ÆŠ–,h¯²!1RÝ I ’KT2p‚”‹Ž&æüP‘±¿žjbº;†áLœ¨¨›¿Î)SôÁFÏç
+H§tX>dáH(…0˜Y.寤û¢Õ’;(nòYz7[ê=U÷QŠçÐƵ•¸Á
+‘_CØßð–{¾õÒ>ßûßµzž§Ú§êÌÆÝy쵫û
+endstream endobj 958 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 41>>stream
+hÞZ¸XXX˜˜˜è$À
+endstream endobj 959 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 32>>stream
+hÞ
+endstream endobj 960 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 41>>stream
+hÞRT&&&:^0
+endstream endobj 961 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 32>>stream
+hÞªªªb
+endstream endobj 962 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 43>>stream
+hÞb`
+endstream endobj 963 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 31>>stream
+hÞ’’’b  ÐÕÕ0
+endstream endobj 964 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 47>>stream
+hÞêèè`hÀÆÆfff¶páB€
+endstream endobj 965 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 22/Subtype/Image/Type/XObject/Width 31>>stream
+hÞêëëcbbb ÐÕÕ0
+endstream endobj 966 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 49>>stream
+hÞš:u*Ãà
+endstream endobj 967 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 19/Subtype/Image/Type/XObject/Width 30>>stream
+hÞÒÕÕe 6P€
+endstream endobj 968 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/DCTDecode/Height 45/Length 1550/Subtype/Image/Type/XObject/Width 265>>stream
+ÿØÿî
+  $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ
+ 
+ 
+ãB¯CtVZšV²I$éªRA $© ~Ÿ
+ÀR ¶A±¸\b$;‹èø¡Ù]2á³í=­gÑûÑz>N÷dôŒŸc¯6t‹Ùt]G¦ŒëÒ
+È Hª@$þÁH«“W®Ð­VÝ
+[
+µ;{+•Âqa ˜ŠØŠÕd ¤$ÕÊ„’N"uãºI ¼Jö´¼òî>
+ÂfíÚ6ñ'PÛ1
+Xû[æ¢ÐžÎG‚vDë Ꞗ@Ÿv…ÆŠØQÈ–X€É­N5)ÿ
+à¸R ‚p\ºtÁ:
+]$“ ¥$’I)ÿÙ
+endstream endobj 969 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 34/Subtype/Image/Type/XObject/Width 78>>stream
+hÞb`,€‰‰ H***¦¦¦²±±Q×X111€
+endstream endobj 970 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 78>>stream
+hÞ²°
+endstream endobj 971 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 25/Subtype/Image/Type/XObject/Width 75>>stream
+hÞâååebbbŽ
+endstream endobj 972 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 23/Subtype/Image/Type/XObject/Width 74>>stream
+hÞZ»v-///Ãp¾¾¾
+endstream endobj 973 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 72>>stream
+hÞÚ¸q£ŒŒ Ã0LLLrrr
+endstream endobj 974 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 70>>stream
+hÞÊÌÌäååe
+endstream endobj 975 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 28/Subtype/Image/Type/XObject/Width 67>>stream
+hÞjll´±±áååe²€‰‰É×× À
+endstream endobj 976 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 39/Subtype/Image/Type/XObject/Width 61>>stream
+hÞš8qb!¸¸¸¨ªªòòò2111À
+endstream endobj 977 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 31/Subtype/Image/Type/XObject/Width 55>>stream
+hÞZ»vmii©®®.0 2PXX`
+endstream endobj 978 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/Filter/FlateDecode/Height 1/Length 26/Subtype/Image/Type/XObject/Width 50>>stream
+hÞš1c†§§'///à"""
+endstream endobj 979 0 obj <</Count 42/First 980 0 R/Last 981 0 R>> endobj 980 0 obj <</Dest[6 0 R/FitH 759]/Next 1005 0 R/Parent 979 0 R/Title(Intellectual Property Rights)>> endobj 981 0 obj <</Dest[421 0 R/FitH 772]/Parent 979 0 R/Prev 982 0 R/Title(History)>> endobj 982 0 obj <</Dest[419 0 R/FitH 759]/Next 981 0 R/Parent 979 0 R/Prev 983 0 R/Title(Annex A \(informative\): Change History)>> endobj 983 0 obj <</Count 5/Dest[407 0 R/FitH 691]/First 984 0 R/Last 985 0 R/Next 982 0 R/Parent 979 0 R/Prev 986 0 R/Title(10 Handling of unknown, unforeseen, and erroneous protocol data)>> endobj 984 0 obj <</Dest[407 0 R/FitH 627]/Next 1144 0 R/Parent 983 0 R/Title(10.1 General)>> endobj 985 0 obj <</Dest[417 0 R/FitH 371]/Parent 983 0 R/Prev 1140 0 R/Title(10.5 Exceptions)>> endobj 986 0 obj <</Count 4/Dest[217 0 R/FitH 195]/First 987 0 R/Last 988 0 R/Next 983 0 R/Parent 979 0 R/Prev 989 0 R/Title(9 Elements for HNBAP Communication)>> endobj 987 0 obj <</Count -23/Dest[217 0 R/FitH 152]/First 1113 0 R/Last 1114 0 R/Next 1054 0 R/Parent 986 0 R/Title(9.1 Message Functional Definition and Content)>> endobj 988 0 obj <</Dest[407 0 R/FitH 762]/Parent 986 0 R/Prev 1051 0 R/Title(9.4 Message Transfer Syntax)>> endobj 989 0 obj <</Count 12/Dest[197 0 R/FitH 591]/First 990 0 R/Last 991 0 R/Next 986 0 R/Parent 979 0 R/Prev 992 0 R/Title(8 HNBAP Procedures)>> endobj 990 0 obj <</Dest[197 0 R/FitH 548]/Next 1036 0 R/Parent 989 0 R/Title(8.1 Elementary Procedures)>> endobj 991 0 obj <</Count -2/Dest[217 0 R/FitH 545]/First 1007 0 R/Last 1008 0 R/Parent 989 0 R/Prev 1009 0 R/Title(8.12 U-RNTI Query)>> endobj 992 0 obj <</Dest[197 0 R/FitH 772]/Next 989 0 R/Parent 979 0 R/Prev 993 0 R/Title(7 Functions of HNBAP)>> endobj 993 0 obj <</Dest[195 0 R/FitH 156]/Next 992 0 R/Parent 979 0 R/Prev 994 0 R/Title(6 Services expected from the Transport layer)>> endobj 994 0 obj <</Dest[195 0 R/FitH 234]/Next 993 0 R/Parent 979 0 R/Prev 995 0 R/Title(5 HNBAP Services)>> endobj 995 0 obj <</Count 3/Dest[193 0 R/FitH 193]/First 996 0 R/Last 997 0 R/Next 994 0 R/Parent 979 0 R/Prev 998 0 R/Title(4 General)>> endobj 996 0 obj <</Dest[193 0 R/FitH 129]/Next 1006 0 R/Parent 995 0 R/Title(4.1 Procedure Specification Principles)>> endobj 997 0 obj <</Dest[195 0 R/FitH 468]/Parent 995 0 R/Prev 1006 0 R/Title(4.3 Specification Notations)>> endobj 998 0 obj <</Count 2/Dest[193 0 R/FitH 772]/First 999 0 R/Last 1000 0 R/Next 995 0 R/Parent 979 0 R/Prev 1001 0 R/Title(3 Definitions and abbreviations)>> endobj 999 0 obj <</Dest[193 0 R/FitH 728]/Next 1000 0 R/Parent 998 0 R/Title(3.1 Definitions)>> endobj 1000 0 obj <</Dest[193 0 R/FitH 356]/Parent 998 0 R/Prev 999 0 R/Title(3.2 Abbreviations)>> endobj 1001 0 obj <</Dest[191 0 R/FitH 658]/Next 998 0 R/Parent 979 0 R/Prev 1002 0 R/Title(2 References)>> endobj 1002 0 obj <</Dest[191 0 R/FitH 759]/Next 1001 0 R/Parent 979 0 R/Prev 1003 0 R/Title(1 Scope)>> endobj 1003 0 obj <</Dest[189 0 R/FitH 759]/Next 1002 0 R/Parent 979 0 R/Prev 1004 0 R/Title(Foreword)>> endobj 1004 0 obj <</Dest[6 0 R/FitH 472]/Next 1003 0 R/Parent 979 0 R/Prev 1005 0 R/Title(Modal verbs terminology)>> endobj 1005 0 obj <</Dest[6 0 R/FitH 603]/Next 1004 0 R/Parent 979 0 R/Prev 980 0 R/Title(Foreword)>> endobj 1006 0 obj <</Dest[195 0 R/FitH 547]/Next 997 0 R/Parent 995 0 R/Prev 996 0 R/Title(4.2 Forwards and Backwards Compatibility)>> endobj 1007 0 obj <</Dest[217 0 R/FitH 511]/Next 1008 0 R/Parent 991 0 R/Title(8.12.1 General)>> endobj 1008 0 obj <</Dest[217 0 R/FitH 448]/Parent 991 0 R/Prev 1007 0 R/Title(8.12.2 Successful Operation)>> endobj 1009 0 obj <</Count -2/Dest[215 0 R/FitH 287]/First 1010 0 R/Last 1011 0 R/Next 991 0 R/Parent 989 0 R/Prev 1012 0 R/Title(8.11 Relocation Complete)>> endobj 1010 0 obj <</Dest[215 0 R/FitH 253]/Next 1011 0 R/Parent 1009 0 R/Title(8.11.1 General)>> endobj 1011 0 obj <</Dest[217 0 R/FitH 771]/Parent 1009 0 R/Prev 1010 0 R/Title(8.11.2 Successful Operation)>> endobj 1012 0 obj <</Count -4/Dest[213 0 R/FitH 210]/First 1013 0 R/Last 1014 0 R/Next 1009 0 R/Parent 989 0 R/Prev 1015 0 R/Title(8.10 HNB Configuration Transfer Procedure)>> endobj 1013 0 obj <</Dest[213 0 R/FitH 176]/Next 1050 0 R/Parent 1012 0 R/Title(8.10.1 General)>> endobj 1014 0 obj <</Dest[215 0 R/FitH 342]/Parent 1012 0 R/Prev 1049 0 R/Title(8.10.4 Abnormal Conditions)>> endobj 1015 0 obj <</Count -4/Dest[211 0 R/FitH 326]/First 1016 0 R/Last 1017 0 R/Next 1012 0 R/Parent 989 0 R/Prev 1018 0 R/Title(8.9 TNL Update)>> endobj 1016 0 obj <</Dest[211 0 R/FitH 293]/Next 1048 0 R/Parent 1015 0 R/Title(8.9.1 General)>> endobj 1017 0 obj <</Dest[213 0 R/FitH 265]/Parent 1015 0 R/Prev 1047 0 R/Title(8.9.4 Abnormal Conditions)>> endobj 1018 0 obj <</Count -3/Dest[211 0 R/FitH 456]/First 1019 0 R/Last 1020 0 R/Next 1015 0 R/Parent 989 0 R/Prev 1021 0 R/Title(8.8 Void)>> endobj 1019 0 obj <</Dest[211 0 R/FitH 422]/Next 1046 0 R/Parent 1018 0 R/Title(8.8.1 Void)>> endobj 1020 0 obj <</Dest[211 0 R/FitH 361]/Parent 1018 0 R/Prev 1046 0 R/Title(8.8.3 Void)>> endobj 1021 0 obj <</Count -2/Dest[211 0 R/FitH 771]/First 1022 0 R/Last 1023 0 R/Next 1018 0 R/Parent 989 0 R/Prev 1024 0 R/Title(8.7 CSG Membership Update Procedure)>> endobj 1022 0 obj <</Dest[211 0 R/FitH 738]/Next 1023 0 R/Parent 1021 0 R/Title(8.7.1 Successful Operation)>> endobj 1023 0 obj <</Dest[211 0 R/FitH 511]/Parent 1021 0 R/Prev 1022 0 R/Title(8.7.2 Abnormal Conditions)>> endobj 1024 0 obj <</Count -2/Dest[209 0 R/FitH 608]/First 1025 0 R/Last 1026 0 R/Next 1021 0 R/Parent 989 0 R/Prev 1027 0 R/Title(8.6 Error Indication)>> endobj 1025 0 obj <</Dest[209 0 R/FitH 575]/Next 1026 0 R/Parent 1024 0 R/Title(8.6.1 General)>> endobj 1026 0 obj <</Dest[209 0 R/FitH 511]/Parent 1024 0 R/Prev 1025 0 R/Title(8.6.2 Successful Operation)>> endobj 1027 0 obj <</Count -4/Dest[207 0 R/FitH 717]/First 1028 0 R/Last 1029 0 R/Next 1024 0 R/Parent 989 0 R/Prev 1030 0 R/Title(8.5 UE De-Registration)>> endobj 1028 0 obj <</Dest[207 0 R/FitH 683]/Next 1045 0 R/Parent 1027 0 R/Title(8.5.1 General)>> endobj 1029 0 obj <</Dest[209 0 R/FitH 663]/Parent 1027 0 R/Prev 1044 0 R/Title(8.5.4 Abnormal Conditions)>> endobj 1030 0 obj <</Count -4/Dest[203 0 R/FitH 258]/First 1031 0 R/Last 1032 0 R/Next 1027 0 R/Parent 989 0 R/Prev 1033 0 R/Title(8.4 UE Registration)>> endobj 1031 0 obj <</Dest[203 0 R/FitH 225]/Next 1043 0 R/Parent 1030 0 R/Title(8.4.1 General)>> endobj 1032 0 obj <</Dest[207 0 R/FitH 771]/Parent 1030 0 R/Prev 1042 0 R/Title(8.4.4 Abnormal Conditions)>> endobj 1033 0 obj <</Count -3/Dest[201 0 R/FitH 303]/First 1034 0 R/Last 1035 0 R/Next 1030 0 R/Parent 989 0 R/Prev 1036 0 R/Title(8.3 HNB De-registration Procedure)>> endobj 1034 0 obj <</Dest[201 0 R/FitH 269]/Next 1041 0 R/Parent 1033 0 R/Title(8.3.1 Successful Operation \(HNB Originated\))>> endobj 1035 0 obj <</Dest[203 0 R/FitH 312]/Parent 1033 0 R/Prev 1041 0 R/Title(8.3.3 Abnormal Conditions)>> endobj 1036 0 obj <</Count -4/Dest[197 0 R/FitH 258]/First 1037 0 R/Last 1038 0 R/Next 1033 0 R/Parent 989 0 R/Prev 990 0 R/Title(8.2 HNB Registration Procedure)>> endobj 1037 0 obj <</Dest[197 0 R/FitH 224]/Next 1040 0 R/Parent 1036 0 R/Title(8.2.1 General)>> endobj 1038 0 obj <</Dest[201 0 R/FitH 380]/Parent 1036 0 R/Prev 1039 0 R/Title(8.2.4 Abnormal Conditions)>> endobj 1039 0 obj <</Dest[201 0 R/FitH 771]/Next 1038 0 R/Parent 1036 0 R/Prev 1040 0 R/Title(8.2.3 Unsuccessful Operation)>> endobj 1040 0 obj <</Dest[199 0 R/FitH 771]/Next 1039 0 R/Parent 1036 0 R/Prev 1037 0 R/Title(8.2.2 Successful Operation)>> endobj 1041 0 obj <</Dest[203 0 R/FitH 663]/Next 1035 0 R/Parent 1033 0 R/Prev 1034 0 R/Title(8.3.2 Successful Operation \(HNB-GW Originated\))>> endobj 1042 0 obj <</Dest[205 0 R/FitH 437]/Next 1032 0 R/Parent 1030 0 R/Prev 1043 0 R/Title(8.4.3 Unsuccessful Operation)>> endobj 1043 0 obj <</Dest[205 0 R/FitH 771]/Next 1042 0 R/Parent 1030 0 R/Prev 1031 0 R/Title(8.4.2 Successful Operation)>> endobj 1044 0 obj <</Dest[207 0 R/FitH 270]/Next 1029 0 R/Parent 1027 0 R/Prev 1045 0 R/Title(8.5.3 Successful Operation \(HNB-GW Originated\))>> endobj 1045 0 obj <</Dest[207 0 R/FitH 620]/Next 1044 0 R/Parent 1027 0 R/Prev 1028 0 R/Title(8.5.2 Successful Operation \(HNB Originated\))>> endobj 1046 0 obj <</Dest[211 0 R/FitH 391]/Next 1020 0 R/Parent 1018 0 R/Prev 1019 0 R/Title(8.8.2 Void)>> endobj 1047 0 obj <</Dest[213 0 R/FitH 512]/Next 1017 0 R/Parent 1015 0 R/Prev 1048 0 R/Title(8.9.3 Unsuccessful Operation)>> endobj 1048 0 obj <</Dest[213 0 R/FitH 771]/Next 1047 0 R/Parent 1015 0 R/Prev 1016 0 R/Title(8.9.2 Successful Operation)>> endobj 1049 0 obj <</Dest[215 0 R/FitH 372]/Next 1014 0 R/Parent 1012 0 R/Prev 1050 0 R/Title(8.10.3 Void)>> endobj 1050 0 obj <</Dest[213 0 R/FitH 113]/Next 1049 0 R/Parent 1012 0 R/Prev 1013 0 R/Title(8.10.2 Successful Operation)>> endobj 1051 0 obj <</Count -8/Dest[263 0 R/FitH 424]/First 1052 0 R/Last 1053 0 R/Next 988 0 R/Parent 986 0 R/Prev 1054 0 R/Title(9.3 Message and Information Element Abstract Syntax \(with ASN.1\))>> endobj 1052 0 obj <</Dest[263 0 R/FitH 373]/Next 1112 0 R/Parent 1051 0 R/Title(9.3.0 General)>> endobj 1053 0 obj <</Dest[393 0 R/FitH 451]/Parent 1051 0 R/Prev 1107 0 R/Title(9.3.7 Container Definitions)>> endobj 1054 0 obj <</Count -52/Dest[231 0 R/FitH 324]/First 1055 0 R/Last 1056 0 R/Next 1051 0 R/Parent 986 0 R/Prev 987 0 R/Title(9.2 Information Element Definitions)>> endobj 1055 0 obj <</Dest[231 0 R/FitH 291]/Next 1106 0 R/Parent 1054 0 R/Title(9.2.0 General)>> endobj 1056 0 obj <</Dest[263 0 R/FitH 587]/Parent 1054 0 R/Prev 1057 0 R/Title(9.2.51 Neighbour Identity)>> endobj 1057 0 obj <</Dest[263 0 R/FitH 702]/Next 1056 0 R/Parent 1054 0 R/Prev 1058 0 R/Title(9.2.50 HNB Capacity)>> endobj 1058 0 obj <</Dest[261 0 R/FitH 143]/Next 1057 0 R/Parent 1054 0 R/Prev 1059 0 R/Title(9.2.49 Unknown U-RNTI Indication)>> endobj 1059 0 obj <</Dest[261 0 R/FitH 258]/Next 1058 0 R/Parent 1054 0 R/Prev 1060 0 R/Title(9.2.48 U-RNTI)>> endobj 1060 0 obj <</Dest[261 0 R/FitH 373]/Next 1059 0 R/Parent 1054 0 R/Prev 1061 0 R/Title(9.2.47 URA Identity)>> endobj 1061 0 obj <</Dest[261 0 R/FitH 498]/Next 1060 0 R/Parent 1054 0 R/Prev 1062 0 R/Title(9.2.46 S-RNTI Prefix)>> endobj 1062 0 obj <</Dest[261 0 R/FitH 625]/Next 1061 0 R/Parent 1054 0 R/Prev 1063 0 R/Title(9.2.45 CELL_FACH Mobility Support)>> endobj 1063 0 obj <</Dest[261 0 R/FitH 771]/Next 1062 0 R/Parent 1054 0 R/Prev 1064 0 R/Title(9.2.44 Tunnel Information)>> endobj 1064 0 obj <</Dest[259 0 R/FitH 174]/Next 1063 0 R/Parent 1054 0 R/Prev 1065 0 R/Title(9.2.43 RAB ID)>> endobj 1065 0 obj <</Dest[259 0 R/FitH 289]/Next 1064 0 R/Parent 1054 0 R/Prev 1066 0 R/Title(9.2.42 HNB Cell Identifier)>> endobj 1066 0 obj <</Dest[259 0 R/FitH 404]/Next 1065 0 R/Parent 1054 0 R/Prev 1067 0 R/Title(9.2.41 PSC)>> endobj 1067 0 obj <</Dest[257 0 R/FitH 332]/Next 1066 0 R/Parent 1054 0 R/Prev 1068 0 R/Title(9.2.40 HNB Configuration Information)>> endobj 1068 0 obj <</Dest[257 0 R/FitH 458]/Next 1067 0 R/Parent 1054 0 R/Prev 1069 0 R/Title(9.2.39 Update Cause)>> endobj 1069 0 obj <</Dest[257 0 R/FitH 509]/Next 1068 0 R/Parent 1054 0 R/Prev 1070 0 R/Title(9.2.38 Void)>> endobj 1070 0 obj <</Dest[257 0 R/FitH 634]/Next 1069 0 R/Parent 1054 0 R/Prev 1071 0 R/Title(9.2.37 CN Domain Indicator)>> endobj 1071 0 obj <</Dest[257 0 R/FitH 771]/Next 1070 0 R/Parent 1054 0 R/Prev 1072 0 R/Title(9.2.36 HNB RNL Identity)>> endobj 1072 0 obj <</Dest[255 0 R/FitH 288]/Next 1071 0 R/Parent 1054 0 R/Prev 1073 0 R/Title(9.2.35 Transport Association)>> endobj 1073 0 obj <</Dest[255 0 R/FitH 403]/Next 1072 0 R/Parent 1054 0 R/Prev 1074 0 R/Title(9.2.34 Transport Layer Address)>> endobj 1074 0 obj <</Dest[255 0 R/FitH 518]/Next 1073 0 R/Parent 1054 0 R/Prev 1075 0 R/Title(9.2.33 Transport Info)>> endobj 1075 0 obj <</Dest[255 0 R/FitH 771]/Next 1074 0 R/Parent 1054 0 R/Prev 1076 0 R/Title(9.2.32 RAB List)>> endobj 1076 0 obj <</Dest[253 0 R/FitH 186]/Next 1075 0 R/Parent 1054 0 R/Prev 1077 0 R/Title(9.2.31 HNB Cell Access Mode)>> endobj 1077 0 obj <</Dest[253 0 R/FitH 312]/Next 1076 0 R/Parent 1054 0 R/Prev 1078 0 R/Title(9.2.30 CSG Membership Status)>> endobj 1078 0 obj <</Dest[253 0 R/FitH 426]/Next 1077 0 R/Parent 1054 0 R/Prev 1079 0 R/Title(9.2.29 Mux Port Number)>> endobj 1079 0 obj <</Dest[253 0 R/FitH 541]/Next 1078 0 R/Parent 1054 0 R/Prev 1080 0 R/Title(9.2.28 Backoff Timer)>> endobj 1080 0 obj <</Dest[253 0 R/FitH 656]/Next 1079 0 R/Parent 1054 0 R/Prev 1081 0 R/Title(9.2.27 CSG-ID)>> endobj 1081 0 obj <</Dest[253 0 R/FitH 771]/Next 1080 0 R/Parent 1054 0 R/Prev 1082 0 R/Title(9.2.26 RNC-ID)>> endobj 1082 0 obj <</Dest[251 0 R/FitH 200]/Next 1081 0 R/Parent 1054 0 R/Prev 1083 0 R/Title(9.2.25 Cell-ID)>> endobj 1083 0 obj <</Dest[251 0 R/FitH 430]/Next 1082 0 R/Parent 1054 0 R/Prev 1084 0 R/Title(9.2.24 UE Capabilities)>> endobj 1084 0 obj <</Dest[251 0 R/FitH 545]/Next 1083 0 R/Parent 1054 0 R/Prev 1085 0 R/Title(9.2.23 Routing Area Identification)>> endobj 1085 0 obj <</Dest[251 0 R/FitH 671]/Next 1084 0 R/Parent 1054 0 R/Prev 1086 0 R/Title(9.2.22 P-TMSI \(GSM-MAP\))>> endobj 1086 0 obj <</Dest[249 0 R/FitH 98]/Next 1085 0 R/Parent 1054 0 R/Prev 1087 0 R/Title(9.2.21 Registration Cause)>> endobj 1087 0 obj <</Dest[249 0 R/FitH 214]/Next 1086 0 R/Parent 1054 0 R/Prev 1088 0 R/Title(9.2.20 LAI)>> endobj 1088 0 obj <</Dest[249 0 R/FitH 339]/Next 1087 0 R/Parent 1054 0 R/Prev 1089 0 R/Title(9.2.19 TMSI \(GSM-MAP\))>> endobj 1089 0 obj <</Dest[249 0 R/FitH 444]/Next 1088 0 R/Parent 1054 0 R/Prev 1090 0 R/Title(9.2.18 IMEI)>> endobj 1090 0 obj <</Dest[247 0 R/FitH 304]/Next 1089 0 R/Parent 1054 0 R/Prev 1091 0 R/Title(9.2.17 UE Identity)>> endobj 1091 0 obj <</Dest[245 0 R/FitH 147]/Next 1090 0 R/Parent 1054 0 R/Prev 1092 0 R/Title(9.2.16 Criticality Diagnostics)>> endobj 1092 0 obj <</Dest[241 0 R/FitH 557]/Next 1091 0 R/Parent 1054 0 R/Prev 1093 0 R/Title(9.2.15 Cause)>> endobj 1093 0 obj <</Dest[239 0 R/FitH 130]/Next 1092 0 R/Parent 1054 0 R/Prev 1094 0 R/Title(9.2.14 PLMN-ID)>> endobj 1094 0 obj <</Dest[239 0 R/FitH 236]/Next 1093 0 R/Parent 1054 0 R/Prev 1095 0 R/Title(9.2.13 SAC)>> endobj 1095 0 obj <</Dest[239 0 R/FitH 347]/Next 1094 0 R/Parent 1054 0 R/Prev 1096 0 R/Title(9.2.12 RAC)>> endobj 1096 0 obj <</Dest[239 0 R/FitH 464]/Next 1095 0 R/Parent 1054 0 R/Prev 1097 0 R/Title(9.2.11 LAC)>> endobj 1097 0 obj <</Dest[237 0 R/FitH 279]/Next 1096 0 R/Parent 1054 0 R/Prev 1098 0 R/Title(9.2.10 IMSI)>> endobj 1098 0 obj <</Dest[237 0 R/FitH 395]/Next 1097 0 R/Parent 1054 0 R/Prev 1099 0 R/Title(9.2.9 Context-ID)>> endobj 1099 0 obj <</Dest[237 0 R/FitH 547]/Next 1098 0 R/Parent 1054 0 R/Prev 1100 0 R/Title(9.2.8 IP Address)>> endobj 1100 0 obj <</Dest[237 0 R/FitH 771]/Next 1099 0 R/Parent 1054 0 R/Prev 1101 0 R/Title(9.2.7 Macro Coverage Information)>> endobj 1101 0 obj <</Dest[235 0 R/FitH 303]/Next 1100 0 R/Parent 1054 0 R/Prev 1102 0 R/Title(9.2.6 Altitude and Direction)>> endobj 1102 0 obj <</Dest[235 0 R/FitH 524]/Next 1101 0 R/Parent 1054 0 R/Prev 1103 0 R/Title(9.2.5 Geographical Coordinates)>> endobj 1103 0 obj <</Dest[235 0 R/FitH 639]/Next 1102 0 R/Parent 1054 0 R/Prev 1104 0 R/Title(9.2.4 Geographical Location)>> endobj 1104 0 obj <</Dest[233 0 R/FitH 205]/Next 1103 0 R/Parent 1054 0 R/Prev 1105 0 R/Title(9.2.3 HNB Location Information)>> endobj 1105 0 obj <</Dest[233 0 R/FitH 481]/Next 1104 0 R/Parent 1054 0 R/Prev 1106 0 R/Title(9.2.2 HNB Identity)>> endobj 1106 0 obj <</Dest[233 0 R/FitH 771]/Next 1105 0 R/Parent 1054 0 R/Prev 1055 0 R/Title(9.2.1 Message Type)>> endobj 1107 0 obj <</Dest[385 0 R/FitH 539]/Next 1053 0 R/Parent 1051 0 R/Prev 1108 0 R/Title(9.3.6 Constant Definitions)>> endobj 1108 0 obj <</Dest[379 0 R/FitH 102]/Next 1107 0 R/Parent 1051 0 R/Prev 1109 0 R/Title(9.3.5 Common Definitions)>> endobj 1109 0 obj <</Dest[333 0 R/FitH 492]/Next 1108 0 R/Parent 1051 0 R/Prev 1110 0 R/Title(9.3.4 Information Element Definitions)>> endobj 1110 0 obj <</Dest[285 0 R/FitH 266]/Next 1109 0 R/Parent 1051 0 R/Prev 1111 0 R/Title(9.3.3 PDU Definitions)>> endobj 1111 0 obj <</Dest[267 0 R/FitH 533]/Next 1110 0 R/Parent 1051 0 R/Prev 1112 0 R/Title(9.3.2 Elementary Procedure Definitions)>> endobj 1112 0 obj <</Dest[263 0 R/FitH 101]/Next 1111 0 R/Parent 1051 0 R/Prev 1052 0 R/Title(9.3.1 Usage of private message mechanism for non-standard use)>> endobj 1113 0 obj <</Dest[217 0 R/FitH 118]/Next 1135 0 R/Parent 987 0 R/Title(9.1.1 General)>> endobj 1114 0 obj <</Dest[231 0 R/FitH 621]/Parent 987 0 R/Prev 1115 0 R/Title(9.1.23 U-RNTI QUERY RESPONSE)>> endobj 1115 0 obj <</Dest[231 0 R/FitH 771]/Next 1114 0 R/Parent 987 0 R/Prev 1116 0 R/Title(9.1.22 U-RNTI QUERY REQUEST)>> endobj 1116 0 obj <</Dest[229 0 R/FitH 224]/Next 1115 0 R/Parent 987 0 R/Prev 1117 0 R/Title(9.1.21 RELOCATION COMPLETE)>> endobj 1117 0 obj <</Dest[229 0 R/FitH 255]/Next 1116 0 R/Parent 987 0 R/Prev 1118 0 R/Title(9.1.20 Void)>> endobj 1118 0 obj <</Dest[229 0 R/FitH 595]/Next 1117 0 R/Parent 987 0 R/Prev 1119 0 R/Title(9.1.19 HNB CONFIGURATION TRANSFER RESPONSE)>> endobj 1119 0 obj <</Dest[227 0 R/FitH 231]/Next 1118 0 R/Parent 987 0 R/Prev 1120 0 R/Title(9.1.18 HNB CONFIGURATION TRANSFER REQUEST)>> endobj 1120 0 obj <</Dest[227 0 R/FitH 401]/Next 1119 0 R/Parent 987 0 R/Prev 1121 0 R/Title(9.1.17 TNL UPDATE FAILURE)>> endobj 1121 0 obj <</Dest[227 0 R/FitH 550]/Next 1120 0 R/Parent 987 0 R/Prev 1122 0 R/Title(9.1.16 TNL UPDATE RESPONSE)>> endobj 1122 0 obj <</Dest[227 0 R/FitH 709]/Next 1121 0 R/Parent 987 0 R/Prev 1123 0 R/Title(9.1.15 TNL UPDATE REQUEST)>> endobj 1123 0 obj <</Dest[227 0 R/FitH 740]/Next 1122 0 R/Parent 987 0 R/Prev 1124 0 R/Title(9.1.14 Void)>> endobj 1124 0 obj <</Dest[227 0 R/FitH 771]/Next 1123 0 R/Parent 987 0 R/Prev 1125 0 R/Title(9.1.13 Void)>> endobj 1125 0 obj <</Dest[225 0 R/FitH 265]/Next 1124 0 R/Parent 987 0 R/Prev 1126 0 R/Title(9.1.12 CSG MEMBERSHIP UPDATE)>> endobj 1126 0 obj <</Dest[225 0 R/FitH 423]/Next 1125 0 R/Parent 987 0 R/Prev 1127 0 R/Title(9.1.11 ERROR INDICATION)>> endobj 1127 0 obj <</Dest[225 0 R/FitH 571]/Next 1126 0 R/Parent 987 0 R/Prev 1128 0 R/Title(9.1.10 UE DE-REGISTER)>> endobj 1128 0 obj <</Dest[225 0 R/FitH 771]/Next 1127 0 R/Parent 987 0 R/Prev 1129 0 R/Title(9.1.9 HNB DE-REGISTER)>> endobj 1129 0 obj <</Dest[223 0 R/FitH 244]/Next 1128 0 R/Parent 987 0 R/Prev 1130 0 R/Title(9.1.8 UE REGISTER REJECT)>> endobj 1130 0 obj <</Dest[223 0 R/FitH 401]/Next 1129 0 R/Parent 987 0 R/Prev 1131 0 R/Title(9.1.7 UE REGISTER ACCEPT)>> endobj 1131 0 obj <</Dest[223 0 R/FitH 560]/Next 1130 0 R/Parent 987 0 R/Prev 1132 0 R/Title(9.1.6 UE REGISTER REQUEST)>> endobj 1132 0 obj <</Dest[223 0 R/FitH 771]/Next 1131 0 R/Parent 987 0 R/Prev 1133 0 R/Title(9.1.5 HNB REGISTER REJECT)>> endobj 1133 0 obj <</Dest[221 0 R/FitH 323]/Next 1132 0 R/Parent 987 0 R/Prev 1134 0 R/Title(9.1.4 HNB REGISTER ACCEPT)>> endobj 1134 0 obj <</Dest[219 0 R/FitH 192]/Next 1133 0 R/Parent 987 0 R/Prev 1135 0 R/Title(9.1.3 HNB REGISTER REQUEST)>> endobj 1135 0 obj <</Count -4/Dest[219 0 R/FitH 692]/First 1136 0 R/Last 1137 0 R/Next 1134 0 R/Parent 987 0 R/Prev 1113 0 R/Title(9.1.2 Message Contents)>> endobj 1136 0 obj <</Dest[219 0 R/FitH 661]/Next 1139 0 R/Parent 1135 0 R/Title(9.1.2.1 Presence)>> endobj 1137 0 obj <</Dest[219 0 R/FitH 242]/Parent 1135 0 R/Prev 1138 0 R/Title(9.1.2.4 Assigned Criticality)>> endobj 1138 0 obj <</Dest[219 0 R/FitH 291]/Next 1137 0 R/Parent 1135 0 R/Prev 1139 0 R/Title(9.1.2.3 Range)>> endobj 1139 0 obj <</Dest[219 0 R/FitH 481]/Next 1138 0 R/Parent 1135 0 R/Prev 1136 0 R/Title(9.1.2.2 Criticality)>> endobj 1140 0 obj <</Dest[417 0 R/FitH 730]/Next 985 0 R/Parent 983 0 R/Prev 1141 0 R/Title(10.4 Logical Error)>> endobj 1141 0 obj <</Count -6/Dest[407 0 R/FitH 201]/First 1142 0 R/Last 1143 0 R/Next 1140 0 R/Parent 983 0 R/Prev 1144 0 R/Title(10.3 Abstract Syntax Error)>> endobj 1142 0 obj <</Dest[407 0 R/FitH 168]/Next 1150 0 R/Parent 1141 0 R/Title(10.3.1 General)>> endobj 1143 0 obj <</Dest[415 0 R/FitH 350]/Parent 1141 0 R/Prev 1145 0 R/Title(10.3.6 IEs or IE groups received in wrong order or with too many occurrences or erroneously present)>> endobj 1144 0 obj <</Dest[407 0 R/FitH 281]/Next 1141 0 R/Parent 983 0 R/Prev 984 0 R/Title(10.2 Transfer Syntax Error)>> endobj 1145 0 obj <</Dest[413 0 R/FitH 282]/Next 1143 0 R/Parent 1141 0 R/Prev 1146 0 R/Title(10.3.5 Missing IE or IE group)>> endobj 1146 0 obj <</Count -3/Dest[411 0 R/FitH 722]/First 1147 0 R/Last 1148 0 R/Next 1145 0 R/Parent 1141 0 R/Prev 1149 0 R/Title(10.3.4 Not comprehended IE/IE group)>> endobj 1147 0 obj <</Dest[411 0 R/FitH 691]/Next 1151 0 R/Parent 1146 0 R/Title(10.3.4.1 Procedure Code)>> endobj 1148 0 obj <</Dest[411 0 R/FitH 368]/Parent 1146 0 R/Prev 1151 0 R/Title(10.3.4.2 IEs other than the Procedure Code and Type of Message)>> endobj 1149 0 obj <</Dest[409 0 R/FitH 229]/Next 1146 0 R/Parent 1141 0 R/Prev 1150 0 R/Title(10.3.3 Presence Information)>> endobj 1150 0 obj <</Dest[409 0 R/FitH 559]/Next 1149 0 R/Parent 1141 0 R/Prev 1142 0 R/Title(10.3.2 Criticality Information)>> endobj 1151 0 obj <</Dest[411 0 R/FitH 428]/Next 1148 0 R/Parent 1146 0 R/Prev 1147 0 R/Title(10.3.4.1A Type of Message)>> endobj 1 0 obj <</Annots[2 0 R 3 0 R 4 0 R]/Contents 5 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 2 0 obj <</A<</S/URI/URI(http://www.etsi.org/standards-search)>>/Border[0 0 0]/Rect[218 348 366 360]/Subtype/Link/Type/Annot>> endobj 3 0 obj <</A<</S/URI/URI(http://portal.etsi.org/tb/status/status.asp)>>/Border[0 0 0]/Rect[211 253.2 374 264]/Subtype/Link/Type/Annot>> endobj 4 0 obj <</A<</S/URI/URI(https://portal.etsi.org/People/CommiteeSupportStaff.aspx)>>/Border[0 0 0]/Rect[175 219 410 231]/Subtype/Link/Type/Annot>> endobj 5 0 obj <</Filter/FlateDecode/Length 3391>>stream
+H‰œWk“Û¶ý+øH¦…AÒßÇölÛx¶Y%ýít¸´b"‰
+Iű}ï|HÚµ]fD$€û8÷܃ïWBÒ¯}ËwwR<vb¹Rÿ•B‰ÕF‰”©¦
+‘ºÄIiDV¨ÄhéÄj/"¯~£ŠgH˜¯*¡ÓÄ™B,ò4É•«µˆÞ¬înh›•øC˜Â&°x–Ã.¦ë<QN( ‹‹Ö‹‹ƒø~5·×Ö×^ Û|87‘— 6jÉ6þÊû®î`‹Xé(Öᵿð@«È&RÜG±r‘Ž*’8®ð.ÿ³ú;ü/09Õ:qùh²ù¬µhèy
+ÐY‘Ÿ
+êÞ%/ÅßàsôÙŠBÓMa…Å+ì&B+x~y‹sK^R±Ñ4G¼˜Kù9ÊM•6…*ƒ¶ìÞNÙ<O¬{4²lEÎå†<‚xèŒ=2ìÑ]ÝúŠ]¼¨Ýk^DÂØÛ¥p/hœ‹R~
+Ŧ¥éûxa Ü1%!ܨ‡@OÔLÁ׬§gT³íûãËå’þ@ÿ‰ï»:iÚÇ%¶€®/ɦuÙÒŽî´¨
+ˆB "nätX˜Eôª¯—r·Ð&™»bÑIÃ+Òð cÁ7‹:ÉfF£_î}ùµ:÷7ƒCÜnDI²¤¬wØʺxQÓdáwôu…Ñè9j[4"hªo»šßp7-ë%ÚÖ´Ã*Ç–æúD VW8“gõ,§®¸ 6vúp±`‘–qXV\ç2ÙLêCÙkÜò2u]ÌŠèÂG2¹®ÄÌ+;/7å*¿ÖãPyxÜ2ª¤†;B<Àå?Qcø6f‚4(¾G
+
+Ís×o}¢_CĨ(…͘oc·¥,ìvô”@×O—}³¦\lêPc£Æ™un¢ í’ <’Œ6*žš$̶9õh­®4T$‚¾h+ë2*Ê™¸å·õ'Y?0 ÕoX'ß$â†Çª²‹Yăôj6ä` Xa¡K-ÀcYìy<CʼˆÔg)•Ñ7d¸@}F=”£X L‘D©»¾><
+D†Ê·$3}Í™_3íÕ› %¶åzåO r8& g:$¼ „ÙS°=„¹£ÜWÛ€&Z¨;C—ÔzÙÒ†… ‚¸ä‹9ÆxÞî#©_
+ÔÀåûx·@:,ci¯~Ëœ2 ç|Š†Dºsg͵0ó‘}n›¶§£æ;ñVü
+±d,©Š²{ª¾+ʇc v³ãÿ}©íæÈŸ³aäÙnÐméÅi·˜¡$ãK¨#.Ú²7~H9úx:k)TС­xA‘==üÆÑã„ö A$ "ôÁõPmš~p†ÁÕËþ4z“Ì‚4É$eYËu§›Ã ÈfصÆ
+M ÅÔgdôÂ%:W4i<´cN"=0õîR¬`ÎÄ ÷3nfÏŠ|*÷K‘¡Þ‡.5û*úHÐí4sl§lè¤ß'ßgΧè¼I¬;ï`ãù0
+endstream endobj 6 0 obj <</Annots[7 0 R 8 0 R 9 0 R]/Contents 10 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 425 0 R/T1_5 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 7 0 obj <</A<</S/URI/URI(http://webapp.etsi.org/IPR/home.asp)>>/Border[0 0 0]/Rect[87 667 155 679]/Subtype/Link/Type/Annot>> endobj 8 0 obj <</A<</S/URI/URI(http://webapp.etsi.org/key/queryform.asp)>>/Border[0 0 0]/Rect[56 493 223 505]/Subtype/Link/Type/Annot>> endobj 9 0 obj <</A<</S/URI/URI(http://portal.etsi.org/Help/editHelp!/Howtostart/ETSIDraftingRules.aspx)>>/Border[0 0 0]/Rect[310 414 393 426]/Subtype/Link/Type/Annot>> endobj 10 0 obj <</Filter/FlateDecode/Length 3147>>stream
+H‰¬W[OäÊþ+-žl‰ñºÛíÛÉÛQ"ÊF&Ù‡lo†ÎØáߧ¾ªî¶†…#EO»]÷{ýºT)ÿíîÔ—óëTÝ êËRÿ;UZ-oU¤in Vy‘iš©²ÖIfÒB-T¤âåÆЂ‘>µÊäI‘ÕjQåI¥3µ\©èly}ÁgKõ›Êj›ñ²".–ÐM•èB锈«]§¾©úu9—´í…gó|(¢t2šTdü§ð]^‹X›(W¶Ào­þ!I¬#›¤ê{ë"2ñBG)î5Nyü¯åŸ!ðßHäܘ¤¨‚ÈÙO¥… ‡dìWÒE g¡ŸÏék“ÔZ$+0Ê0Jí÷xÆËÔ9ìíyåôü}ê×\Ì\Š˜I'æC÷šÉ½ö{ç8y7;Ëèò&½-<WÔê ¿<¸‹óhÀ¡ßnT¬³ˆ¼>ó©.u2™¼È>aòŸ!|+¦HFavÕ­»ç¡S¿3q/#¼„û—Ùæ५$ÕDÌt5Ù$£{ë™]lÆn½îÚq߬ÕånûØíÆxQG/Ð_Å‹2ºêïîÇAyÖ¹C^&¥ÑÊV–l¢ka„[/V6 ¨åë"/Dy/HD¯‹ Q¼°Ñ%¹!®Õ C·‰E4ö$à§
+Ž—¸Û¸Š¼1´¬{¾bì.Ž
+œP ©ZèDçtþ#›´Ï}ð7˜²!eÔÓiƒwôÂ’ål²’¡3Ê›½Ã¯@aãxïTõìH«&÷B€§ñ‚b«sßÓÍ ë¾õÞ#–Í=&YÖÀ0
+!•á»¶¿„È‚Øù$öTæ4›ºJŠÒ‹~_Àl›‘
+l·ŽáF:´x¥²COª<p(úÁõ‹ºêé‡*×d
+ô\]\^áú½üAáÿ]œ y`Á=Ìâ”GmAS=n™ù[ü¿ö§h9öj³õßoÝ/V
+·ÛaB¶,(…¾m@cæ•©uaÜ!¯°¹æ>Ù91ÀìÙ)ÆR[° ´g¬f³j€±bŠ¾“cqEõßUqõ­ÊäSt=£Üß¾Åy[÷‚ó°â<4QOI¸æÀK9†9úP| ™†»p;‰£ ^wí®›]ߌ‰ú ‚¨;ãÌÊ=T\¹kÕPŽŽÙvqÆׄ¿qݺ£.¦é§‚;í©87+Š—ŒŠÊrMoˆ.vZ%F\i¨yHÆ,I3ëÍ…:<ŽÜ8~ùò¥÷$§ù
+[7}² ww¾qVERYUM 4>”IZ‘¸¶
+sš¯}'ñòºyêœL°EQ'Uå»ç÷8á$žY&ϼe*Ö©“’l´0  Ð¥«"Üàwòí>¯‘(°üÜ
+e>ߣéb<Pg0à’ ZU ~
+Í+®—rô5°{rgËôyÎ8elý>?1‹{ë(ˆô¸C—bìéNp7B©ç¸¤¢&¥°Ü¯ÂÂùNøˆ;0Ƕʲe„Ç=à èêÚ}íÄb(í!~°œ (¢(‘f#ßøÙ%;bÕ„¹þÕM%@¿ÛO ø$¾ò¢”³’“M M6—)
+áÑA¼eòÌP b c®$ZYv8p_}%‹4ánHÔÌÏCG³,×¥R\ ;­OÜyÖTÅÛéر™fáoc'( we‡Ð+Ïc š…
+“†a(t|Ï£¥lm“j¥‹<!_¼Û ÕÐÊR»³uN“½´;Ò…òô gOYÌ9, hµ,ûI+·9™54Ò¯ÛUÃÁ«žºÝ ¥Œ,Rýf»æns'–ðSC:>õÛgUÎ… C€-é[ú™!@>‰€êgS€55eþâÍlÇceÓ†gN7eó–?œ}¬Á¬M=×*ËŒoç„»¹}p'tf½ÆðÊJI®µÇ?9åIà8W& ˪;vU´^ó…ÆüŽ6©ËìSMP¼˜Åž*ôç˜è¢ø“Ò«•±ù]:å?ö3ìL1)¥“ÌÖéL™™Y
+û¡ë%žþÂæIQèÙ
+ãQb³1å“êeŠNŸ% ÆüŸs¹rÙ9€Âjõº=ƒ™áÃ"Óñ
+Ï'殉 Md!cUÕu‰…rFó±¹@ó=Ó ]àÐèAJ}hð2¬Ì‚YmÍuól*ä¨CIQ£Ë
+2yÈsm™=·CS‡ˆº½Ò€r^Ënjj¥
+endstream endobj 11 0 obj <</Annots[12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R]/Contents 65 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T3_0 427 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 12 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 777]/H/I/Rect[533 705.8 538 719]/Subtype/Link/Type/Annot>> endobj 13 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 621]/H/I/Rect[533 689.8 538 703]/Subtype/Link/Type/Annot>> endobj 14 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[6 0 R/FitH 490]/H/I/Rect[533 674.8 538 688]/Subtype/Link/Type/Annot>> endobj 15 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[189 0 R/FitH 777]/H/I/Rect[533 655.8 538 669]/Subtype/Link/Type/Annot>> endobj 16 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[191 0 R/FitH 777]/H/I/Rect[533 640.8 538 654]/Subtype/Link/Type/Annot>> endobj 17 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[191 0 R/FitH 676]/H/I/Rect[533 624.8 538 638]/Subtype/Link/Type/Annot>> endobj 18 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[193 0 R/FitH 790]/H/I/Rect[533 608.8 538 622]/Subtype/Link/Type/Annot>> endobj 19 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[193 0 R/FitH 744]/H/I/Rect[533 598 538 610]/Subtype/Link/Type/Annot>> endobj 20 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[193 0 R/FitH 372]/H/I/Rect[533 586 538 598]/Subtype/Link/Type/Annot>> endobj 21 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[193 0 R/FitH 211]/H/I/Rect[533 570.8 538 584]/Subtype/Link/Type/Annot>> endobj 22 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[193 0 R/FitH 145]/H/I/Rect[533 559 538 571]/Subtype/Link/Type/Annot>> endobj 23 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[195 0 R/FitH 563]/H/I/Rect[533 547 538 559]/Subtype/Link/Type/Annot>> endobj 24 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[195 0 R/FitH 484]/H/I/Rect[533 536 538 548]/Subtype/Link/Type/Annot>> endobj 25 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[195 0 R/FitH 252]/H/I/Rect[533 519.8 538 533]/Subtype/Link/Type/Annot>> endobj 26 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[195 0 R/FitH 174]/H/I/Rect[533 504.8 538 518]/Subtype/Link/Type/Annot>> endobj 27 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[197 0 R/FitH 790]/H/I/Rect[527 488.8 538 502]/Subtype/Link/Type/Annot>> endobj 28 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[197 0 R/FitH 609]/H/I/Rect[527 472.8 538 486]/Subtype/Link/Type/Annot>> endobj 29 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[197 0 R/FitH 564]/H/I/Rect[527 462 538 474]/Subtype/Link/Type/Annot>> endobj 30 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[197 0 R/FitH 274]/H/I/Rect[527 450 538 462]/Subtype/Link/Type/Annot>> endobj 31 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[197 0 R/FitH 238]/H/I/Rect[527 439 538 451]/Subtype/Link/Type/Annot>> endobj 32 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[199 0 R/FitH 785]/H/I/Rect[527 427 538 439]/Subtype/Link/Type/Annot>> endobj 33 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[201 0 R/FitH 785]/H/I/Rect[527 416 538 428]/Subtype/Link/Type/Annot>> endobj 34 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[201 0 R/FitH 394]/H/I/Rect[527 404 538 416]/Subtype/Link/Type/Annot>> endobj 35 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[201 0 R/FitH 319]/H/I/Rect[527 393 538 405]/Subtype/Link/Type/Annot>> endobj 36 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[201 0 R/FitH 283]/H/I/Rect[527 381 538 393]/Subtype/Link/Type/Annot>> endobj 37 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[203 0 R/FitH 677]/H/I/Rect[527 369 538 381]/Subtype/Link/Type/Annot>> endobj 38 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[203 0 R/FitH 326]/H/I/Rect[527 358 538 370]/Subtype/Link/Type/Annot>> endobj 39 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[203 0 R/FitH 274]/H/I/Rect[527 346 538 358]/Subtype/Link/Type/Annot>> endobj 40 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[203 0 R/FitH 239]/H/I/Rect[527 336 538 348]/Subtype/Link/Type/Annot>> endobj 41 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[205 0 R/FitH 785]/H/I/Rect[527 324 538 336]/Subtype/Link/Type/Annot>> endobj 42 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[205 0 R/FitH 451]/H/I/Rect[527 312 538 324]/Subtype/Link/Type/Annot>> endobj 43 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[207 0 R/FitH 785]/H/I/Rect[527 301 538 313]/Subtype/Link/Type/Annot>> endobj 44 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[207 0 R/FitH 733]/H/I/Rect[527 289 538 301]/Subtype/Link/Type/Annot>> endobj 45 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[207 0 R/FitH 697]/H/I/Rect[527 278 538 290]/Subtype/Link/Type/Annot>> endobj 46 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[207 0 R/FitH 634]/H/I/Rect[527 266 538 278]/Subtype/Link/Type/Annot>> endobj 47 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[207 0 R/FitH 284]/H/I/Rect[527 255 538 267]/Subtype/Link/Type/Annot>> endobj 48 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[209 0 R/FitH 677]/H/I/Rect[527 243 538 255]/Subtype/Link/Type/Annot>> endobj 49 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[209 0 R/FitH 624]/H/I/Rect[527 232 538 244]/Subtype/Link/Type/Annot>> endobj 50 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[209 0 R/FitH 589]/H/I/Rect[527 220 538 232]/Subtype/Link/Type/Annot>> endobj 51 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[209 0 R/FitH 525]/H/I/Rect[527 209 538 221]/Subtype/Link/Type/Annot>> endobj 52 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 787]/H/I/Rect[527 197 538 209]/Subtype/Link/Type/Annot>> endobj 53 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 752]/H/I/Rect[527 185 538 197]/Subtype/Link/Type/Annot>> endobj 54 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 525]/H/I/Rect[527 175 538 187]/Subtype/Link/Type/Annot>> endobj 55 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 472]/H/I/Rect[527 163 538 175]/Subtype/Link/Type/Annot>> endobj 56 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 436]/H/I/Rect[527 151 538 163]/Subtype/Link/Type/Annot>> endobj 57 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 405]/H/I/Rect[527 140 538 152]/Subtype/Link/Type/Annot>> endobj 58 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 375]/H/I/Rect[527 128 538 140]/Subtype/Link/Type/Annot>> endobj 59 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 342]/H/I/Rect[527 117 538 129]/Subtype/Link/Type/Annot>> endobj 60 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[211 0 R/FitH 307]/H/I/Rect[527 105 538 117]/Subtype/Link/Type/Annot>> endobj 61 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 785]/H/I/Rect[527 94 538 106]/Subtype/Link/Type/Annot>> endobj 62 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 526]/H/I/Rect[527 82 538 94]/Subtype/Link/Type/Annot>> endobj 63 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 279]/H/I/Rect[527 71 538 83]/Subtype/Link/Type/Annot>> endobj 64 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 226]/H/I/Rect[527 59 538 71]/Subtype/Link/Type/Annot>> endobj 65 0 obj <</Filter/FlateDecode/Length 2841>>stream
+H‰ì—]wÚH†Áþ‡¾l] éïË$“ñdÏNÆ“ÉE¼g9a—€“dòï·ª[H-ÚX2\Ä#Ÿc˺›÷©ª·êù˜°ð³þ@~:»`äÃ-ùiÌÿÍ'ãkâKÆ´oðD›Ò0&‰õ¼”‚2þD()Æÿ Ÿàñ >/M‰Ð¥‘žŒœ.—d<#ôåøâUøÀË1ù‘^•°¸u°‹‚ WrC8ƒÅɺ"ïÈ’<§§Áµ…µGÛm¾v—¬Ï(X<ãû¸ïø¶(¸ š(ƒ=ù#>( NUÉÈ%-¸¡¢qÊð9Ç;]üküw<ð?áÈZˆÒ¸æÈ2{Z<hWÀðé;§££Z¸¾N×ç¢ô÷*"íŽôŽ˜º,’½„ר÷v/ ¿öuâww‘é׈i¿Œõ‡ðÕ-_ûß4[¼ò¬pôü ÃWˆÎxòÿVˆp]hz‹7óÕ’\RÐUmÁ3ò^ï[T|z[ŽEK¾>§ˆçŒ§óxPîJÆá@x<îÚóIx®¶ç{±Zn`M—… ›[²]WG
+ÛSÛDŒÇÐV€c7Ú
+ò¦º–šˆåT®j7ôØd<Òõ©ï¨|Ÿö•5Ña_™NT½GThÊÚ–I’Ÿ«ëù‹Á¼)hWl¼Y…gX®aE:YÎðNh:¹º
+¾„LÚ÷ãÿKx?˜ŸÅþ ¢ñ\ ×B¢Û^¯ta X¾ž™¼Ñq=¼m0Vª¶­.9F1€¨18è!=oæ+tþ¶Ú@  /Ýé½iW…ßjÍazB±MéÕ 7^½!$ … +k!„ð ûsqˆoá½S'¯5
+S>]@è%ýý¦Z·3>t§*<Ùºc…>HÛ“@¢Úà¨çoa{‹A‹M‹BÇ9HAss
+QvDO
+@!€gõU mø…SAtâ`ГE­ü ð‡Uó¶¾mŽ *,UêdÍg6)¼Í4ž$‘1_•¶mÛ~$ÒëN$ïxòÏÕs ºlטqe{ôv5›Vî± C*Ý> ÜÖ™!˜ÏbpªÓÕC°£9¸º"Y~AEbŸ.
+ù9l¥¸ ŸKP¢öÌ÷!yÈe ûûz˜â£I胱ݪf—)”;º˜h€i<å÷ÛõG“È9^I‚oMȺ3@Âè».¦ â ÕKÞµ€ÚÞK‡Ã‚k¹«¶Á×è *w¨»HÃ; –ŒÅìɺK_$‰Œy$¢—ÐY$Êw:®`÷o_’BXËè=ó¼ËùSu¹õ•;¼V;úHDœ°¨Hüèƒ^_͆zRì l«ù“ôTO‰jƒ£žëN7¥žÔ ×@"Ú`
+Õü¢ÐôŒü…OèÎWXÕ«5Î
+C¿!oof`©ä|¤Vȯš!0´ ZA]RÇe³‰¥Ð¹ùpÛD"ÞÐTàΡ‹· bùy*©Ð“@ªÚPàÖvz‹Ñ“í}ú"IdÌ# ÍÎ"1ºÓü8òÇj>ƒzâÍiûœôÚïÄÐ58õ0'W¹‰g€Vhí­Ü±EÁ¥fG.á{¯\ãýy Üý¥Nä,5¸RÚù¸Xlþ’º–:‘g°Ô’£KÛVjù—Ô‰Ô‰<ƒë5÷&Æ£Ðc0EA_‚þ£€[-£±g,ÀFã§jWÒ+àá#l_ùÉG:sÆÿè#l_͆öíÞt:ÿ´&X×@"ÚИwºÓ²øXÜßbćλ¡ãƒd ¹9 ƒÌÀ
+·¹yu°ü‰fCå·¢%•_=险'DÅ<}Œ@o0p†Š‘FÑ__?'µÐ2è| ŠÓùÌ„BCä·NŸ5 ò¥Z“óbdãk«ið퀫Y¤_WGó”L²ðÒª<ÞXU,/Çäÿ
+endstream endobj 66 0 obj <</Annots[67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R]/Contents 128 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T3_0 427 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 67 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 190]/H/I/Rect[527 759 538 771]/Subtype/Link/Type/Annot>> endobj 68 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[213 0 R/FitH 127]/H/I/Rect[527 748 538 760]/Subtype/Link/Type/Annot>> endobj 69 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[215 0 R/FitH 386]/H/I/Rect[527 736 538 748]/Subtype/Link/Type/Annot>> endobj 70 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[215 0 R/FitH 356]/H/I/Rect[527 725 538 737]/Subtype/Link/Type/Annot>> endobj 71 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[215 0 R/FitH 303]/H/I/Rect[527 713 538 725]/Subtype/Link/Type/Annot>> endobj 72 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[215 0 R/FitH 267]/H/I/Rect[527 702 538 714]/Subtype/Link/Type/Annot>> endobj 73 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 785]/H/I/Rect[527 690 538 702]/Subtype/Link/Type/Annot>> endobj 74 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 561]/H/I/Rect[527 679 538 691]/Subtype/Link/Type/Annot>> endobj 75 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 525]/H/I/Rect[527 667 538 679]/Subtype/Link/Type/Annot>> endobj 76 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 462]/H/I/Rect[527 655 538 667]/Subtype/Link/Type/Annot>> endobj 77 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 213]/H/I/Rect[527 639.8 538 653]/Subtype/Link/Type/Annot>> endobj 78 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 168]/H/I/Rect[527 628 538 640]/Subtype/Link/Type/Annot>> endobj 79 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[217 0 R/FitH 132]/H/I/Rect[527 617 538 629]/Subtype/Link/Type/Annot>> endobj 80 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 706]/H/I/Rect[527 606 538 618]/Subtype/Link/Type/Annot>> endobj 81 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 673]/H/I/Rect[527 594 538 606]/Subtype/Link/Type/Annot>> endobj 82 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 493]/H/I/Rect[527 583 538 595]/Subtype/Link/Type/Annot>> endobj 83 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 303]/H/I/Rect[527 571 538 583]/Subtype/Link/Type/Annot>> endobj 84 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 254]/H/I/Rect[527 560 538 572]/Subtype/Link/Type/Annot>> endobj 85 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[219 0 R/FitH 206]/H/I/Rect[527 548 538 560]/Subtype/Link/Type/Annot>> endobj 86 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[221 0 R/FitH 337]/H/I/Rect[527 537 538 549]/Subtype/Link/Type/Annot>> endobj 87 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[223 0 R/FitH 785]/H/I/Rect[527 525 538 537]/Subtype/Link/Type/Annot>> endobj 88 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[223 0 R/FitH 574]/H/I/Rect[527 513 538 525]/Subtype/Link/Type/Annot>> endobj 89 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[223 0 R/FitH 415]/H/I/Rect[527 502 538 514]/Subtype/Link/Type/Annot>> endobj 90 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[223 0 R/FitH 258]/H/I/Rect[527 490 538 502]/Subtype/Link/Type/Annot>> endobj 91 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[225 0 R/FitH 785]/H/I/Rect[527 479 538 491]/Subtype/Link/Type/Annot>> endobj 92 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[225 0 R/FitH 585]/H/I/Rect[527 467 538 479]/Subtype/Link/Type/Annot>> endobj 93 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[225 0 R/FitH 437]/H/I/Rect[527 456 538 468]/Subtype/Link/Type/Annot>> endobj 94 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[225 0 R/FitH 279]/H/I/Rect[527 444 538 456]/Subtype/Link/Type/Annot>> endobj 95 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 785]/H/I/Rect[527 433 538 445]/Subtype/Link/Type/Annot>> endobj 96 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 754]/H/I/Rect[527 422 538 434]/Subtype/Link/Type/Annot>> endobj 97 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 723]/H/I/Rect[527 410 538 422]/Subtype/Link/Type/Annot>> endobj 98 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 564]/H/I/Rect[527 399 538 411]/Subtype/Link/Type/Annot>> endobj 99 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 415]/H/I/Rect[527 387 538 399]/Subtype/Link/Type/Annot>> endobj 100 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[227 0 R/FitH 245]/H/I/Rect[527 376 538 388]/Subtype/Link/Type/Annot>> endobj 101 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[229 0 R/FitH 609]/H/I/Rect[527 364 538 376]/Subtype/Link/Type/Annot>> endobj 102 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[229 0 R/FitH 269]/H/I/Rect[527 353 538 365]/Subtype/Link/Type/Annot>> endobj 103 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[229 0 R/FitH 238]/H/I/Rect[527 341 538 353]/Subtype/Link/Type/Annot>> endobj 104 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[231 0 R/FitH 785]/H/I/Rect[527 329 538 341]/Subtype/Link/Type/Annot>> endobj 105 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[231 0 R/FitH 635]/H/I/Rect[527 318 538 330]/Subtype/Link/Type/Annot>> endobj 106 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[231 0 R/FitH 340]/H/I/Rect[527 306 538 318]/Subtype/Link/Type/Annot>> endobj 107 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[231 0 R/FitH 305]/H/I/Rect[527 295 538 307]/Subtype/Link/Type/Annot>> endobj 108 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[233 0 R/FitH 785]/H/I/Rect[527 283 538 295]/Subtype/Link/Type/Annot>> endobj 109 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[233 0 R/FitH 495]/H/I/Rect[527 272 538 284]/Subtype/Link/Type/Annot>> endobj 110 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[233 0 R/FitH 219]/H/I/Rect[527 261 538 273]/Subtype/Link/Type/Annot>> endobj 111 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[235 0 R/FitH 653]/H/I/Rect[527 249 538 261]/Subtype/Link/Type/Annot>> endobj 112 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[235 0 R/FitH 538]/H/I/Rect[527 238 538 250]/Subtype/Link/Type/Annot>> endobj 113 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[235 0 R/FitH 317]/H/I/Rect[527 226 538 238]/Subtype/Link/Type/Annot>> endobj 114 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[237 0 R/FitH 785]/H/I/Rect[527 215 538 227]/Subtype/Link/Type/Annot>> endobj 115 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[237 0 R/FitH 561]/H/I/Rect[527 203 538 215]/Subtype/Link/Type/Annot>> endobj 116 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[237 0 R/FitH 409]/H/I/Rect[527 192 538 204]/Subtype/Link/Type/Annot>> endobj 117 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[237 0 R/FitH 293]/H/I/Rect[527 180 538 192]/Subtype/Link/Type/Annot>> endobj 118 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[239 0 R/FitH 478]/H/I/Rect[527 168 538 180]/Subtype/Link/Type/Annot>> endobj 119 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[239 0 R/FitH 361]/H/I/Rect[527 157 538 169]/Subtype/Link/Type/Annot>> endobj 120 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[239 0 R/FitH 250]/H/I/Rect[527 145 538 157]/Subtype/Link/Type/Annot>> endobj 121 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[239 0 R/FitH 144]/H/I/Rect[527 134 538 146]/Subtype/Link/Type/Annot>> endobj 122 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[241 0 R/FitH 571]/H/I/Rect[527 122 538 134]/Subtype/Link/Type/Annot>> endobj 123 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[245 0 R/FitH 161]/H/I/Rect[527 111 538 123]/Subtype/Link/Type/Annot>> endobj 124 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[247 0 R/FitH 318]/H/I/Rect[527 100 538 112]/Subtype/Link/Type/Annot>> endobj 125 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[249 0 R/FitH 458]/H/I/Rect[527 88 538 100]/Subtype/Link/Type/Annot>> endobj 126 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[249 0 R/FitH 353]/H/I/Rect[527 77 538 89]/Subtype/Link/Type/Annot>> endobj 127 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[249 0 R/FitH 228]/H/I/Rect[527 65 538 77]/Subtype/Link/Type/Annot>> endobj 128 0 obj <</Filter/FlateDecode/Length 3359>>stream
+H‰ì—ÛrÛÈE¿ ÿÐÀ1}¿<Ê­áÔH²-Ê©”J1¬0E‘%Oâ¿Ï9 Ñ¢€ä8C•xÁFcíÓûì~5'ÔÿmoÈO'”ÜÜ‘Ÿæìo”02ÿL\F©âþG”Î4¥‚Ç2Á©&ó[’tþOÿ Vü‚Â/ð«+ÂU¦…#«2Ë™_“d:¿˜ùLçä_D8™ÁàÆÂU$#Ödš0
+C“mNþLÖäÕ<œ ŽÌ9Ž<ñ‘dþïæ‹ËrZÌðcqÕùa<e<QDj|uäøëüœÌ;˜Ž´<c»éHš©Çç£wó±æSŒø`>™Ì(ù”¤L'<°„ât¾Sá|癶õ|Dt.8¦Xþ×­k'“~1¾
+Çg<sÞ¯0{.¤ö\ˆÊOip-îTÆt}-ÏO»b€öUdx;P»›1¯÷˜zj§žy ^Xî;ñÄIj“·o±žàÆ%J§ù _s”p›ªäß,7k’2‘
+¦M’ýNO:ôL£ÀœSéWŒ0sx7h‡B˜-|G4J†â€ŒeTó‚Oõ^ [:CÀ(ùºWöàæ¶â­Y”·¢™–xsä}ñž¯®r(ø§Ï)c ]¥ès=9ÿ’o÷Ë „JÖxÐêq$ñ*øÚbå
+õ—%`ù˜ïp-lT¦3j]¼Ã¿Ò9ô˜Õæ
+-qƒ\Ë@ƒÛVÅa•ßcbxŽ0|´¥QÁf†¾Nú+ÐjCò¦ÆèP ñ7ܾ¸FC®v¢pØÿEÃå´ú×c­
+•²Ñ_Ó]ÍZÿtæä®Ñ|®zÒ ¥Íe+£ mùí€v€hp$d¼•N·
+Œ¤på³”'¿¦¸½Ùù‡¬zf°?‘ÿ{Ò¾ð`ðM ŸGáS¶'­è'Çë…ÿâüìb:¦ÝžÎ3EulûÙ€¬¿¬FÅð G÷Ä¿ûXXrgUT©éW·Ý^eŒÂÈe+ûX ôÆËU$M/ã¥_/þ[P‹fgÝëE°L¸G6°= )w*¦kÅDT1c÷Ä[ï§Êäƒ áÍì䲌š•Ô F€HaâE«å~ Çdf•«äƒ Š¿Ð0<aœ»…7Óò¸L>M[ƒ3¼uÒfBªjDpH/:ØäsÈMR+ 'ÓC§€í`´Ù™Üw¤“ÙéÄè´3Óbþ.b5ä*¤Ò}¥
+ðŒ[B©VÜÂMý!ã–îi`¢¡´a¯ÓL[H×F¡~=]ìË|ÝaÇÀêNë Ý94¤S_œ¾L«*¹—ïù"£¬³‡ôÇ0šv…à­À…üy¸.'(6þ@Ƈÿ‡ƒ¬[6pXÉ£…-SÙáž©nz’h &ÏY+k!uñtòµ7ãËt4ú½«¾/û€×`öÔ5RSUïF»d¶†Ÿ±gnÒ‰H¶¾qÞ¦œ' xË’ûåÏ ÓUî?ߦÐòõ=9Î?/ñ›%ôÕûtbýî]:ј˜é3;Rd÷GÁ°hýÕ ˆÆ[‚È$s&¦w¶‘•xæ»ïIŽ,ó”%ÛÅ
+ù‚ÉkÍ^¢w7bþÐm<{½™‡œº˜‹y´ s«±£›rß‚Oó;ˆ¤ø_Ôþ
+Ð\üF6/ÌÉo<ôÙµ_÷Kï1ß¼s )Gj¹õ#
+Ý°ÃÃhê©8õNÖZdªÁºl¿4"÷¡Ò÷«Eeü³õþîPxþf=‚Ñ?¢
+‹œÚ¤-ö
+endstream endobj 129 0 obj <</Annots[130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R]/Contents 188 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 425 0 R/T3_0 427 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 130 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[249 0 R/FitH 112]/H/I/Rect[527 759 538 771]/Subtype/Link/Type/Annot>> endobj 131 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[251 0 R/FitH 685]/H/I/Rect[527 748 538 760]/Subtype/Link/Type/Annot>> endobj 132 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[251 0 R/FitH 559]/H/I/Rect[527 736 538 748]/Subtype/Link/Type/Annot>> endobj 133 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[251 0 R/FitH 444]/H/I/Rect[527 725 538 737]/Subtype/Link/Type/Annot>> endobj 134 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[251 0 R/FitH 214]/H/I/Rect[527 713 538 725]/Subtype/Link/Type/Annot>> endobj 135 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 785]/H/I/Rect[527 702 538 714]/Subtype/Link/Type/Annot>> endobj 136 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 670]/H/I/Rect[527 690 538 702]/Subtype/Link/Type/Annot>> endobj 137 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 555]/H/I/Rect[527 679 538 691]/Subtype/Link/Type/Annot>> endobj 138 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 440]/H/I/Rect[527 667 538 679]/Subtype/Link/Type/Annot>> endobj 139 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 326]/H/I/Rect[527 655 538 667]/Subtype/Link/Type/Annot>> endobj 140 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[253 0 R/FitH 200]/H/I/Rect[527 644 538 656]/Subtype/Link/Type/Annot>> endobj 141 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[255 0 R/FitH 785]/H/I/Rect[527 632 538 644]/Subtype/Link/Type/Annot>> endobj 142 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[255 0 R/FitH 532]/H/I/Rect[527 621 538 633]/Subtype/Link/Type/Annot>> endobj 143 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[255 0 R/FitH 417]/H/I/Rect[527 610 538 622]/Subtype/Link/Type/Annot>> endobj 144 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[255 0 R/FitH 302]/H/I/Rect[527 598 538 610]/Subtype/Link/Type/Annot>> endobj 145 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[257 0 R/FitH 785]/H/I/Rect[527 587 538 599]/Subtype/Link/Type/Annot>> endobj 146 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[257 0 R/FitH 648]/H/I/Rect[527 575 538 587]/Subtype/Link/Type/Annot>> endobj 147 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[257 0 R/FitH 523]/H/I/Rect[527 564 538 576]/Subtype/Link/Type/Annot>> endobj 148 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[257 0 R/FitH 472]/H/I/Rect[527 552 538 564]/Subtype/Link/Type/Annot>> endobj 149 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[257 0 R/FitH 346]/H/I/Rect[527 541 538 553]/Subtype/Link/Type/Annot>> endobj 150 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[259 0 R/FitH 418]/H/I/Rect[527 529 538 541]/Subtype/Link/Type/Annot>> endobj 151 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[259 0 R/FitH 303]/H/I/Rect[527 518 538 530]/Subtype/Link/Type/Annot>> endobj 152 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[259 0 R/FitH 188]/H/I/Rect[527 506 538 518]/Subtype/Link/Type/Annot>> endobj 153 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 785]/H/I/Rect[527 494 538 506]/Subtype/Link/Type/Annot>> endobj 154 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 639]/H/I/Rect[527 483 538 495]/Subtype/Link/Type/Annot>> endobj 155 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 512]/H/I/Rect[527 471 538 483]/Subtype/Link/Type/Annot>> endobj 156 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 387]/H/I/Rect[527 461 538 473]/Subtype/Link/Type/Annot>> endobj 157 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 272]/H/I/Rect[527 449 538 461]/Subtype/Link/Type/Annot>> endobj 158 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[261 0 R/FitH 157]/H/I/Rect[527 437 538 449]/Subtype/Link/Type/Annot>> endobj 159 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[263 0 R/FitH 716]/H/I/Rect[527 426 538 438]/Subtype/Link/Type/Annot>> endobj 160 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[263 0 R/FitH 601]/H/I/Rect[527 414 538 426]/Subtype/Link/Type/Annot>> endobj 161 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[263 0 R/FitH 440]/H/I/Rect[527 403 538 415]/Subtype/Link/Type/Annot>> endobj 162 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[263 0 R/FitH 387]/H/I/Rect[527 391 538 403]/Subtype/Link/Type/Annot>> endobj 163 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[263 0 R/FitH 115]/H/I/Rect[527 380 538 392]/Subtype/Link/Type/Annot>> endobj 164 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[267 0 R/FitH 547]/H/I/Rect[527 368 538 380]/Subtype/Link/Type/Annot>> endobj 165 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[285 0 R/FitH 280]/H/I/Rect[527 357 538 369]/Subtype/Link/Type/Annot>> endobj 166 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[333 0 R/FitH 506]/H/I/Rect[527 345 538 357]/Subtype/Link/Type/Annot>> endobj 167 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[379 0 R/FitH 116]/H/I/Rect[522 333 538 345]/Subtype/Link/Type/Annot>> endobj 168 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[385 0 R/FitH 553]/H/I/Rect[522 322 538 334]/Subtype/Link/Type/Annot>> endobj 169 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[393 0 R/FitH 465]/H/I/Rect[522 310 538 322]/Subtype/Link/Type/Annot>> endobj 170 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 778]/H/I/Rect[522 300 538 312]/Subtype/Link/Type/Annot>> endobj 171 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 709]/H/I/Rect[522 283.8 538 297]/Subtype/Link/Type/Annot>> endobj 172 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 643]/H/I/Rect[522 272 538 284]/Subtype/Link/Type/Annot>> endobj 173 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 297]/H/I/Rect[522 261 538 273]/Subtype/Link/Type/Annot>> endobj 174 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 217]/H/I/Rect[522 249 538 261]/Subtype/Link/Type/Annot>> endobj 175 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[407 0 R/FitH 182]/H/I/Rect[522 238 538 250]/Subtype/Link/Type/Annot>> endobj 176 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[409 0 R/FitH 573]/H/I/Rect[522 226 538 238]/Subtype/Link/Type/Annot>> endobj 177 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[409 0 R/FitH 243]/H/I/Rect[522 215 538 227]/Subtype/Link/Type/Annot>> endobj 178 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[411 0 R/FitH 736]/H/I/Rect[522 203 538 215]/Subtype/Link/Type/Annot>> endobj 179 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[411 0 R/FitH 703]/H/I/Rect[522 192 538 204]/Subtype/Link/Type/Annot>> endobj 180 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[411 0 R/FitH 440]/H/I/Rect[522 180 538 192]/Subtype/Link/Type/Annot>> endobj 181 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[411 0 R/FitH 380]/H/I/Rect[522 168 538 180]/Subtype/Link/Type/Annot>> endobj 182 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[413 0 R/FitH 296]/H/I/Rect[522 157 538 169]/Subtype/Link/Type/Annot>> endobj 183 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[415 0 R/FitH 364]/H/I/Rect[522 145 538 157]/Subtype/Link/Type/Annot>> endobj 184 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[417 0 R/FitH 746]/H/I/Rect[522 134 538 146]/Subtype/Link/Type/Annot>> endobj 185 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[417 0 R/FitH 387]/H/I/Rect[522 122 538 134]/Subtype/Link/Type/Annot>> endobj 186 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[419 0 R/FitH 777]/H/I/Rect[522 100.8 538 114]/Subtype/Link/Type/Annot>> endobj 187 0 obj <</Border[0 0 0]/C[0 0 0]/Dest[421 0 R/FitH 790]/H/I/Rect[522 82.8 538 96]/Subtype/Link/Type/Annot>> endobj 188 0 obj <</Filter/FlateDecode/Length 3948>>stream
+H‰Ì—ÛrÛȆŸ ï0—@Uˆó`.-Û±•Z¹‹Þ\X©-˜„ed%R¡¨µýöéîÀ!EB$`Ò •H§üßt÷ßgcÆéoqÃ~ysÅÙÍûe,~çL°ñgæ3Τ <36³œ+æ¼È”ä–ïXÂÒñéîàpžš0i2«<å&Ë…bã)K^¯Îé†×cö?¦¼Îàá.‡Q4Ü.óLX&8<œ-Jöo6cgãx6øl©ñÙ£f˜¯ëS ¬ç(y˜ãÇ0îø
+†H…L Ó¿=û-ÈR‘茳ë$6‘éH$ Ü3éÆÿÄ ÿ ¦l¤ÌlÞNYuÎ'º. ݽ1»dT žoâç ™ùgQnË@fË@\_§ÑXÒÔ»ËÀça¯°9Š‰_VÌêeœß‡¯YñuOøÆKp…W½Ióäò ËkDg=û¿KD¸HMò€;Õ|ÆR¡ÐU7à9{§éºÛ²À£%ø-WäëyÊHuZ♗ƇYzkl˜%2k'j%jTOÔg2“©‡…å6‡aer?ªt”Ã]²Lu²(–0Q¼$•^èä%\XÀ…xNTÀŵM²´]ÿ­ó4é@/-j8’kzm•ÃËâkct?; S6d µ¶¨8>IˆŒ[lö <>Ds¤br +£I:é"¶ˆá™Õ›@ðŸ]¦#ÑòŽAd™\ÀêÀ|%á‘Éuòæê‚Nâá©0 ]!5‚…@œ8.$šgN=„)דE$àNyËBtÂPä& ÕDÇ<©ä~aTPˆÌðÈÍ*4€Ä ÆnYԠΧ%ÆβúŒ°*¸sRPÌ,)ú¥Ï7l¤Ú#ZúÉÝGé6u™N8ÒáÎÁìÃëZ7æy;Ï<S¹¨ßõ¾øTÝV˪Ä鬂”ÆR¸ªLæ.\ýsµIØQí
+üÝÔyMrÅsõ‘ÜñrL6@óX¨¡šçb‹ÊQó³bò|Ï©
+a‰;'ôþõ¶»ðPžó ÊzŠTØX©7,†þ³P…1ý'Å  ê÷s(¡HŸã1ªÚT6Ð()}Êʼ»Èa×€¢?ˆH½¡>IÈ Ÿ„ô (.
+°Hß!%¯„g iA|™d:]”x¤/sº¢³jÈ=ŠÆ
+ÓjR,ç¡q8‘üâ{·W5è¯}¤ÜÀŒc¬ÅÒîÖ!ä(íoójŠÙCœ²‹¶ÝõÖf^ï“Ò׶þjG UÛ˜-îÇ£Úî§Å²¬³9.|\çu¢]Ú Sy»u™}€ýì¯~$ÙОÌhµáyÐïðüŽâS †
+nuƒ BíÅšJ‰‡²Íº' è.…ˆë0GµÏ°Z]‡™öÏ”ƒþ|"M‡F‡’îñTï2¹ä*5§·þÑöó’è©{$Öà¸|Ã÷ ðrK\””noÉôÀÙ°ÆiýW©NÊ°þ=œÎ*,…ß“F‘p» ˜¶!SÝ«Ÿû ;¤ÑN*r™ï_<Yw TsÊË~LÎØù+p¡ùqSÍŽ¦Gˆ£‹ˆþ$"õ¶‘ ÁtƒB)Ù…B{‡¿A«,f ¹ÚÕšZ2Ÿ<Îfåm]·Ïƒ/mP…øƒ¡…ÆËq@Ë}ÃêiÝ@wKDU× ø`=¹mnÏqÜJf-öŽ$Ù_,ùÐt¦s»á²0™Æâõ¯ÔÀýþ¤ù¼eóOÕmÝÌáåWxkÿýý|±di~ôªÓQÅe&MW4õ×>Òk` ×NoqX–´½¯Û9Œ‰±‚––x\.ÊPE¾Añúd]܆äC-n_ý#цêoÕ å¨Á€"L£x[ÁÃbÇ£æÄ}ÞÏ×=k¨îFlqP9éþd݇VN¨ŸW¤·ªî2ÇåÕº¯ò‘\ÝÊï\ó'nÉC©^åø³?à.r(¦°ð¿âê%õ)LEçxí´šP‹&J›£óÚ³õ•?oè—yl•€ÖYŽ°gHÛr[@çp_L¢âzúLßÕ/ä™û{U¦UOé#½†J/܆ÍAéJû®¬n¾ÀΧ9š—Åöœpüe^oê{»wÊï/~¤ØNñek2]§úܬ9U§g}rQ>¤6Áÿ2‹Hnà\ 럔b Ó€Ûá+ï¯ï¾_XJZìõmI7ßá¥å ÜgÛV¸vŠÔƈ<S¹kÚ
+¨ò:ù„Æ ,S,ŠÉ2XÙïuFÄ£ajßp¨ë„¯xgX_ÂÛ@n|qõ.×)äCx±aËcÅßµü¡Ãe^ĵ§?âKw|©L ߉Xy½f¦TFyí Eò\·(D‘µ¹b®µ?¨˜÷×<Öihï¦r¹f¤À¡…¥¨´äɇ‡Ô%… UÚv¿¨þ„ƒÅ² ‹–Â)„ÞAw­Gb}†üœÐI\ô¡R}HG6\Áh­le(po„οŠ(
+ñb1e˜zñT˜ÿÕnEܬbH‘c0™óë¬?шÂ`¢NÀc¢2"ºÊr-1JPÅ‚RÒ÷T‚t—˜»ð@2Ÿ”S*iø£d¯ê¶ÄŸUKÂ6Ÿ‘ìÀ7îˆQÙiÞœvѸz¢‰äœàŒ_3o*T1’ûÕHkH(Ö¸‰ tÈ 1v“JÛü”©¯ÃD€ûæ<ftOý#͇†Îל¢&¦ êG¢ÔCŒÅ BØj€XP鄪9îÄqáí1‰ lj\ÞL$f7
+Œ¼Œ²è"Ü
+ Zk†}LÈý¤õ]kâfÁK‡p!uÌ€ø-‰jU6ˆÃì"W5ƒxÀÞó=\ôDɸ‰k‘øN$ҠɈ؀ĭ¬Ë¢q¸Džà€« ×'¢² $1íä>I °ôMa‘”ƒ#E¨ ¿æ¢HQ«n£UžŒóª¶TkE%‚aÕ1‹÷gÑ7kEúu—ó¸DCІÞhD·Úß1ù_rQŬö© åbw§8‘Ëϧâä3E¤†"úz¬HÒmPFMiŸÐ½ÚŠö9ºå"s m"Cpl9”ÐÉÛb6½­R›Ìn¨w™f³?pw6ÿ:û;üøL9 
+.{ML¸üVv}i±ÁN„¯¬'üËïŽ\mwxì­•ô‡Š=Çø"pYâ.û=è5º K˜¸ÜÛ(„V|T/Bß Ûº¡:sÐs>Y¨ô©òLÅAé•…ªA{UI4,GJ×@“ÿÆfB ófQì $àëܧG@j:ªñÿ‹,Ë#²ä"ñ:]¶<®,a
+‘/pä9CÁD’oË>¦™V™••Èl>«©=±;ê^øg:ÓCW+,Èõ¥”9ÜŸàì¤Q>A#‡ëÔö§ñ>ç¤lÜ ½?Ÿ!nVïVÖI1:¥ìÁh®Óa--²ÕCO,™É/ |ŒÊŸ l¬óÉÊv’©~Ê[©4ðt4› ƒó 4q¯¿oéhŸ¹JœÑq·¶ÌÖ¨B…Ì`N°ºaÿŽ
+zNe—(b=Ú©ðŠö
+endstream endobj 189 0 obj <</Contents 190 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 190 0 obj <</Filter/FlateDecode/Length 1592>>stream
+H‰”WÛrÛ6ý•};C€÷ä-ÓÔÓ>¥•&}h:š„l¦²¨R´çë»g—¤(Ùée2A`±{°çì‚~·¡Hþõ7ôújÑÍ‘^oìYÚl© £(ubPRš…YÅ”—6Œ]”ÑæŽ ›Ï²Ãꎈw`©&—†Y\ÒªHÃÂÆ´iȼ߬” ï7ôÅe²ó¼à( owEh3²;§ÞÓ¯´§w›%øv |¯¦0çÕåˆÑEŠñ7»YsˆÀ:“R’áYÒGk’0¢O&°™qÁÊšó£4ø}ó
+YÏq4—–³ W, Þ#?¼‘‹k!Í©Òž'IKqÜ«<.b~†8ZsÆ°§Zø˜A¡d~:¡•QͽNJßÔtõý]à´\¬Hb Š%xZÐyý}=ÐÐMZ¨„3!"Knt%÷þHÁíï[ÉÂþFEðÈîd¤Iúó4­†’¤[™”Äî›ço%/c]#eÂ( IûF6п¹È<¡„©–ñ­Níot¿ØmÁþw#ï.]€˜Ðng¨.6whNö,8²3G…r¤)XÙЦù’¤u˜+ª‡@täL÷À£jÒú–Ý=ÿìT 놖{‡ðÔ5íö‰×'«9OA1òþéÅ’tXŽ¼—ãë+j‡‰ .ô»v;®lnF«Þsw”­Z×çnŸ¡| \&Md6¢jÔV±ÌÚE;‹æ|}Ïùj?
+}l¥™Èpº»A·©µ©ãqÒsKšN~B­°šjðTÁi£jñ[÷“ÕèŸFW½t=¬Ž}p¯¥rí{’M£J¯†ÝNÉ$Âà |Ò¢Xâ¹XÍýžÕ³(æs›BðHûL ¹«÷ô%dáXóÂõW÷³¤ŽùT·H§
+h¶¹™YÎ1-wÐn5¢Væaôö¡~T­Nõ¼ùŽa¹ ª(GÙ0;ƒ|>°¶hоæ“eL7(¾¶èE²Âš9`_“xV;Þó–ÿ/è+gú$h<íz‚¼q
+ãYǽj·ik~‰Š¾˜jé\@¢ãfÑâµ»‹é½8`OZGû¹|duºGÓw»p©•™>‘Êê}OÏ¥rôõœl¥o! jÔŽ¥œqI
+ãR|ÜtËq¨üËP½\0^qê‘«›'¡A¼IŒ¶gÝÇη–µrkñAìti¡rÑŠ¯¨Æ¡Bãªý+½âÛЇ4઎6}@y­OžÁJ5¿Õ~ìÝz”ý
+W”ªƒóÜó ‹6S]ûöõbùC'Ï¥]&©"ÚC#bའù¡^|GDs·uùËÄ}eÒòXHcyãvAKj ©™*þ† Î9ËœÅZf:Ä’ÔljæëÅq}2 5hQÔ©’‰0œS™€ÉN=r’Ï9q#}Qî&þ$¯Öœ ûÔ¯o«©ÁÏŸ®ztý7“κDå,C×s®l;]Äô!óâ“JoæPõ3}þÿ-À
+endstream endobj 191 0 obj <</Contents 192 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 433 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 192 0 obj <</Filter/FlateDecode/Length 3069>>stream
+H‰ÌWïsÛ6ýW0ùRò&d €?û-NSÇ7s>_¬KoÆÊÜÐí¨•E…’œæ¿¿}»
+T8ûWhY‘Ð
+|j”ÉâÜV**³¸ÔVÍ*x5»¾à¯fꃲU“ñ¢¤]RZnÊXçJ'd\õ­úU­ÕÙlŠ¶M
+Û‘ßæã!D1é0šD0ÞȾ³kÚ"Ô&ÈTšã·Roe uƉš¡ÎF:H0®ñ”…ïfàä̘8/ÈöI´
+µ ȯ©|¢ÞÐgž·jkŒn[¥ñkÆÈ;œFp2:c™ä±Õ¹N]Ɖ&h
+ã·ÉÏÒÿKe2§jE­rR&µ<GºCà¥×%œ™]º„sÙ¡WFµ>ŽÌ–<(9“úAZX„9` &sý[ó2—öTŒŒ+“Fà=§„œ«¾Û3¡*/<IÕöHqã wÜ Mðž{¦â“¯Ì¼ã~8—Ä“'
+°xï»ÍX¼ûöÑ÷%ŸýèPâ)¼?Ï«E.}
+áò«Ÿt;w⇯$„Ñ>!œ^:ðC 'wˆ#"À:Ћ¾…7¢´ˆ–
+UÏZ>Ù¡·‹æX‘°Áú4!ô‘=EÓ1¼Á:
+1ˤ|ô|î'µß7;ŽÃA£bï/Ÿë˜ã †ÏKGçÔÆUYxV.×0;ÆÆ…YÃDnú¡Ünù–S£°<´¤9èÖ'œ©ÝM½ rIr7$´Ÿ£kc«Ì
+c%7Üù#gy’˜ùq ²@3Z"‘dSÿ–âGSƒPwâk¸¤î?ñ§NsöÕµ”{Íå>x
+ ôŽ=¶%ðN£2f†å#Ê‘a¾”纼BêDŸ)°«mº‡/¤,m
+`ë@Ôh9@䕦40̹İÁ¤8æݯ‘Ã÷\j¢ÅË s± hÓˆjÐn+Þtåv·Áý'tIÙÈËg/\yé€iÕ
+o»s˜s_õûvõì˜CG9EŸsïzs }êÝT·8Âò¢n~‡B!j³
+§Už8™ä¸[w«Cî–„PWr$º5¶¬~˜Áê¥ÜÉ&§•í0O”Ë–'â[\0Ð'$›zC—¾oJÃÓ{†Ú|kx@Nìab^zÅÇHo[’b‘t÷r­‹žבî#볉dÉÈ8À¶NEt}JÛñ¬É ‘¢ÇÛË[CÍÛ’^"«RSšIdRa^µANòÉeé{WU—-_Z>†¦ úô;ĺ4í·Yu±hånºÄl¾Ú@ñ·.êtögüKL† Žd¥ìÉšè¬ïêÅÿ¯–„a ø+9ZÐÒ&©­G /‚Áƒ§jƒ'«õûÝG¶Šx,]ØÍîÌìvŽ4Ì_¾X¾ ºèÁèQÙ|!–‰vª[eœ„PNEp­š]+Õ§b}dJ¥NeU±uÝw7 ÷c‡\€¦
+endstream endobj 193 0 obj <</Contents 194 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 425 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 194 0 obj <</Filter/FlateDecode/Length 3381>>stream
+H‰¬WÛrܸý<’)‘K€/z³v{ó (Ölü`»R4b–ž™åŒäèïÓ}©±¼Ù­J©4A Ñ—ÓÝW+•áoܪÞÞej{T?¬ô¿2¥Õê^5i–Yƒ²eZfY®ªF§¹ÉJµú¢"¯þZvd´ƒ?uÊØ´Ì•Ô6­u®V]¯î~Ɔë•úMåM‘’ðª¦S
+ÚnêT—Jg$\N}P;uµZjòMÁ²“阯/U‘^G“‰ŽåÜÕkYU”ülÔ?e"uT¤™úźŒLœè(ãyÍ#^ýþ©lIË:¨œÿ®¶¬èKb÷™vQâ"òíR¾6ió?=’W¯d_9(+>Å‹³LcÙßÓY–~ÿœ9"àü”zi!f6¦jþH|íßê›ø.!8‡7×Ñí-G˜ /8te£žøé8„cl£#úýNÅ:ȯÅøL½§ÏX7¸–gNi~š9ò^O#zB;]äi®-p¨ë4Ó¤+Jß‚¦–ASõ“»ïwqb£þDÚUlòÌFínÃsüF·ëõèžâ¤ŽúöÔÇIÑJ~U“FVBW6ie´*ê"­•N‹‚ýz¦-\Ù°²:­«
+NÕ–€Õ¢,g}u>Ç2Oµ(<)ës=Ÿ%Ï騵„«)É!×RnI+êÉɦ81ѨNäý‡Xg‘S‡G~Ž‡ý‘âéøGíï9/øÂË¢Ëàj³ï¿û"·ã÷ Šìr× 1Î
+ ÉûkA~ëÅÐÏFmN#W2ÕÓ.ÞÉOmØòø Bç­jÞ¢V4­£÷q)£Ó†ç2«XîÇò3Œiýq õp.2Ð$ÿÓ‹.¢¯\DøÒ¿k‡— € %"ã&çÀd*Ñ©¶þŸ(
+Ã5pmœl؉wÈfö
+•š::¹±í8(k|å2è$˜?=pR)L¼»¹â¢Ã ª Sþ5áãßR^}à·” &ÀžG’®„L5¹‚2²¥ZÄ°FVq.å8É„&L¡ýªL™V¹™*ñèül¥Œ'…ŒNn@°ŸcÝH³ìÊïi±ÈS'÷ò«“5§=kLÁ”GZqŒ‹×ð§~y¤VOvPž€Y#Þe º=@p`ÍwòŽæ;òèo¾¢i¸¨`õ(§Upá”5:úÍö¤åÎàeA>õ¯h/©úùÞ— #Ñ6îàð„—æC1bmfŒRkgu÷8Ô#šÖÎØ÷€äÕ¨¾ƒ·¹P„_ù¼Á玶ŽýÚm[>k34ß¯Ñ Ôk±–N‡yE^È?xÐ Vááà¼%a)r` xIÅ-¤T,bÄ´'ÒV\N‰›…ŒYÚËÖN™Æ³Kç/<5LÎÆ \»9älž¸úW J¤×âûÞ&Bd“DÞµÝC\/‘zµ$rëê/äMö@#P-Ô &‡’µAò·Š)÷àoëà…Xÿ±À^
+FKÉpÇ© 'qÒ5œÄ¤™‹ÁžÏ鸕ԳJ™tÇà* WI ¯±â¤FߨÐpÓà>åè¸lN}.™oš —``I™U=»ŠxýžóxþàëÂÊѼ…Ç $ëéÁI¯ÅAdŽå Si—2BÁ=¥•‚D™ÆŠ½ÔIÊ¿¶›X1e®Ò^ˆÔ=6 ƒˆüŠòÌN¹\˜8Õ—×SåctÇœPS˜9ÇâÅaº–UYZÑ•'kè*F×2C·3K…jy-›R„O:¿-iº}Ñ-)WVkÏè
+Š­ˆ›
+˜05ÅòøþfÅÈ45žä>1«ÒJ¢=¿Bø¹]{à '„^ü É0ØÙ"™™rVü:ºÎŸ˜J¯´Ì¹äø+Wô‡Î²ëb.-.[,Ãõ ØyjývT¾;4
+ªëÇ{¾aþ `…­pµ²yJ­ñÏÌÔ9 `…­S[žÌ€m%yÚ˜—°b¿ÎÐ2€5N²w; 
+9Íl<'T¯ã±Ås _1)#„•
+ ¬”‘”gPJŒzÆGy´àé
+¥Läbíß…f1ù¹÷X$æ.1=ËõÉ$U¸šiE)¬bJ¤¿ãÚ"<šaD8üƒ(³ùËÁOrÃP-\iüF²‘WñìˆËÈ37=jP<“zÚm¢Tµka ~cç
+—è¤ûéD"hF´ÛÖ‡§YpYùn‹¯ÒrQM_(§‡tî€Å̲À팔ôýÍÝ›[õÞ ¸„u(âD«ù±{jdáfp«S]S½¤K¤S€
+ uë¿|WÉn£@ý•>ìˆf±›¹e“sŠ¬XQÎ 2ÃŒ4?õ^Ñíع$@›®¦–·
+ä?ê~ßâ?Ü©yE`À|çQþ¬³SöD—6[…dî°çxã‚|²”Fr[æebuM[¶Â#©ªß7_°TQŽ€—Æ?FæÇʼnM2Sðήm\¤ïr³iÍPQḩEUÂÆ–6N@s—Ç#™_UTñÔ0‘Ûxks˜
+L^|\
+U¦Ak²…ŠûãÀÎgCïÑ#ƒù­’5ãiþÝÔVáçD|mp4ã[3iWq‘e^§4¦ëñ:¬JmZŠ«±¿M¹r² ŸxH¡[$eYNò IJû‹ìâoÛó(äs¶­­QMᇖ^ï"ÜlcÞ¹&T6ªùÚä¼xsR›§"š>Íc¾¯¢e¼b×Īù=êáìTBÊÊ/ÝWË-æÉ~FŽ^ùʸÅìy§„æL¨²|F‰¤¶¤A­½ÓÚÏ*Wí­d“úÇ"Á37p~+¸9ŸdðFóÌÞ‚›GI¨Ð9ŠÄ@¦îô
+endstream endobj 195 0 obj <</Contents 196 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 447 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R/T1_4 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 196 0 obj <</Filter/FlateDecode/Length 3967>>stream
+H‰¬WmsÛÆþ+7þtD„wx!èovÊ8êLÛbšf’N!-,Ò dWÿ¾û<{€”l·3)àp··/Ï>»ûrk–ü×ßšï^]-ÍíÑ|·µÿXk¶7f,—¹ã†µÉ‹¤X.S³ZÛ$uËÂl?˜ÈÄÛò„ÕK9OµqyR¤k³(ó¤´©ÙîL´Ù^]òÀfk>št%"|UÊ-™web c—"ÜôùÕÜ™—Û¹6í2È^„k>Ÿª¨"½Žn©:þ®÷n¯äŠØº(7Y¿kóW]HbeÉÒüŶˆ\¼°ÑëOyü÷í_ ð[Q9w.)ÊQåô«ÚBÑSòô™vÑÂ;DåçsùÖ%ëoz$]=qQþÄEËìxv—[çðw¸+—ßÿÍp~ËznŽ f¼ Hë¾eŒ%t]÷(ºs
++oJšÎM¡ÃSK‡§3‡/çw3‡‹-|¶këÊ{UŒZóh5˜AEôMÝ´Xþ$¯|À™[ù¯fãm¿kh¨ …çã`'lm‡¦¿¡.=ƒj*S7ýPÍÍ=þ öâs®ü¦p}×ôã~œü2en: ±Ml¾RÇÔ'NM£ÖËNÌå  h¢™¡ÞH- ÆÁ,xðpØ÷=uèϼú7s·ÁÔÌ,œäi\;5_°Ðg
+l5ïæÞï¬T¥ÜŸEÔ²êZ.<¨7ôh#Û>â #&`Ñ Î-™|“Ó7£7þ,Þx'¬µæÞþ²¹R¬¨"Ô Ò€„W··gàÄýÜö½œïDÃjÜ&L±y/VÑÅ fÔ•Ùà2é:9ƒ¥ƒÆ*d”$7DŒ¶X9S:@ïèsÌòFc¸iØˇ’~8‡ÐöOâ Æ"BÄëz.]$1^Ù3صȲ¹h!jŒF˜ÒÕD]DeÏ1saj@…'î<*¼g¬Ýê ‡}+‰*
+¥²xî¹µðëNmqHš;Å
+´%κ–·VÈýa,ùç³k6=jv•³b½róVàœ_IñЉVi·z]AMùˆZã?)Óó )ù€'Ñûº%}‡‚°j!8I%IŽa_ï;IvÞ3¶ŸÌ×µ $‚.hj§ïBÕâ‘0l8(o=¦zCࡦо¹óym&)ÂÕ,Vzí7j§êñx‚;œ‹à°Ë ÍÚ÷æ6 êƒ.«+ú¦sùÍ m¼jzpJ6s¹ ‚k6nÒœÔU7w±ŽZü&6ÝŽ.×ÞÍ÷m•ØWKÙ UÅ*ÌÜ!Ÿ#‚®ÕÏt\:áLà >ž¸1¸1]wçe:e%a–Z»dé;èTJñ‚o£ˆd¶ðír/ýÿ–
+è%CÕC2ù´öU¬"i  ÷<„v6ïtIßÜjÓîß'ê@\ ˜<aQ),sœ¡^Gß}
+ÖôZh³Y¡M¨ôÓ4ŸÙ¤\­Š¯“L–»$Ë&’IÍÕ¡©Û´êÒK7Æy½øz|’3Ò©Û±_ãŒ,]&åx×Jª³Ÿ°‘÷ÃAC‚®D(Ju–‹N6õüÒx_ù¦BÊ_}¯eânCÒìT€´ÓkÃ,µ÷,e ¶%ŠŸÐ×M ËËdzU”i³Ǻçxšeþ£úbš§Þ`¿¦tÍ1…I:k äwµÎ¢_ãE®\Ätë››@}Ú”{_¦›N¹ÄMÈÊA3°×TÔ°H:åíH[–@ry’­]h|VœVK"8g Òk­57$U‡fBöøz zä ´îa­jPêKc^W Ú-øy4RDª›Z½{h(púØ2JA­/‡AJi’¢ûuX¾–Ü´=™ÌtÍ04|6S×T,¡>¸ÂShÐèŒ%c`Í
+DVB5®ê h"îÓ:FÚÓàŒej6yÓf÷àTA›³Ì¸,–}ÀŸg†¯É-'Ω'ÊóàŠr"ÔQ‚^ãç%‹¹y×
+ë|oñ³WX™ƒb*DšcÊ­»üì´IÒ\IÀ¤St”°§’ÑY%V7M~j´³OCg%Åì4[!5ÐkH ñLO¢þÝxšˆz¯?•f”#¹ÂN¿»Ì¥—}~1àOÀEˆÍ‘$HS.óówN½¥Ñ=ôÓæꊎx.zµ1¯)æÅOL*ÉÎk+¤3}Ä=“PV&yî<dqòˆº8%r9&29Úûwþ–‰„$<pyà©3`> Š™wh±•¸0
+Æì= _jŒÓµ$Ô5‚HE`nC³·—Ž8s’F (¸ßK€Ë|„W¯®·ÂÜF•<èŠ1 $0¯KŒð¸Ö¹ö+?á0ˆ['°®ÍM¨¬¯Hz/XóÎ!úµJDßgî{-†RG«.êo¹‘ÏÀT½ñâ#ŒGì[*ð°ž‚™­bM!|æ™Ëaæíô–£¥¸Bµm3o ™ÕüÅ ìÙÑ"n(™]¤É¾3ÿsG‰ÎàÉ;4íy²ð/Öq\ÀËX«?ß+JdT‡Ó™¡8ÕÉGF•e-MÐ*-Ò¨à|”R«¨¥ú29oäAì–_KšºD:veÈå:îQmµ³ÕM¥Î -à6×
+³íÅî=¹›'æuž<‚â´Žü`57‘àL¨ pªÝ77Í0¶'¯úÔeßamå…øQV#6ŠÉõ°]ùg‰[ǃ²ñ€z OYûÍ—åùGVX¤ó‹$ÓA÷jeùˆ6úµæ7¼sæ3ÝÛÃý«\ÐF½w çóZ_œNÒhP¸›r*ëÐF—iøüo\¥úZ2ªËf»¦5Áqvz¡œ-5}Cɯ‚Üñýº˜â᪳$ʇÿW]z¹ŠVj›o›o[‘à¡„>‘
+è 9ÎÅÌK†Ê¼±[§¦7‹À–Kwc…u&™ÄÛZ³w[{NšÏnšO<ð<3ЉÎsÛ§o)Ñ”©WÕ¬6"O +0ØäëÁæ.QDÚð‚M#á@6'º ¬ëBœû½”»3µÖ‰­÷a!¢y€˜-˜Ë/‘XÈ'ÍŒâ¯C0[ÔÑ«¬{p&Š¶æüÁ×âz%w0ßnø!Õ<TÝŽ¡ËοFi’œ¨ß¬1SðžEƒê
+endstream endobj 197 0 obj <</Contents 198 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 198 0 obj <</Filter/FlateDecode/Length 3563>>stream
+H‰¬WYsÛFþ+ó¤Bs
+"Í„Ê’\—¢g³ÄJ-&sõ'ã3ô'âo¡K“@xaqŠ»²‰Ì…L!\l+ño±o']mH¶2$»WóíPE'Òë¨R§ãgwîdŒ#b©¢L˜œ®¥ø—{‘Ä22I*þŒb™G*îÉ(¥÷’î²ø¯Éï¤ð'¨œ)•ä¶QY?«-)z siõ< N~Ö•/UR¾ˆˆ.Δ9(5ƳT mLsVùº£œ”ã£dÚ5
+qÓšT”?âå¬õrqâån ¶NÖïc ‡äg˜oÈy)¾Òµ"Gnã,ÚÑÍr³±ÔÐ5µûS1™¿[USz»«„¤«jýïõTNO§]IŠ²Ê¬§´I*¡)*m«i†OL­i!âžÒýîi=ÛCØ,渗E×±ŠÞ^ ã^Ìòg!VäeR()Œ5‰21†à[ÔJé®R²VJ;ìÊ<ËvääF)Uà±VjÛ³èKœG•øpý–4¸ û¡‹L#A„)ÔŽvbï>Â{-€ù&îåÑj…‹´Ñ7âYâVFkzoÅ"î™è‰×xœ‘˜ížñ³‹Mô†YœÍ¬¹ÖY2°‰ñ=•¾sèÛ#-ElŽFq ×)œM—¤ùjíáÐí”~—ø'Ÿ;ÙÖ(˜Ö®XØmÿ5²8(ëHUŒöä–÷HÚ8.`7y|Ül÷ňä^CÈèÑN\áýf6%ò’n×Ä€b4!nŽe.W…ø¬éú²ÑÛ*?J–úÛíf+>L×tðœ _y3ø ÛI &ìÐ/ÎnJ¾xâf
+v°VÂ{’h_»Ž6*ŸFJèEý÷‚œ6¤º ªî98·'tΔDà•ŽÜQÛͬš³[éµ3èÑ…ŒÛ’ewÕ\ÐÕAKb|úzs6.K ÿwšÙ\ôÎV|>©óTƒDÑ5锲ã~!ÙQ*Ñ2SÏô‹ ž±>G–JÝÅPÄÜ4†ÎÊ-Ì‚?ŽºDFm6 v ÕÒ¸ÅÊÄÖ…p†fP§IÖí™F£´TZX™DŠþªz¨Öûéö;çp,mQ’ËJà®QË—ZGN¸ Ý*pœC¡6•aV°¶ÆbPû-;ö›ªývTŽònÕ!¾)t¼£O*JÅ_ESÁDÈÉIÁ>'¦¯u1œsÐduèùÒ#.Ñ,ˆqÊIÓ|•=&(ÁN£â
+ìB”OZlÒnœäu wS®Â¼dsÊg]˜6Ÿ #£;šVñB¾á̹\Ñч²Ž<w[ÄœÁ ŒA¤dòÇFîôd c9pÉóÎácƒpŸº± Qú=Öe«Â§3‡øAêôŠ:á5Ñä@|hš,,Í´µm…}Ѷ¢-œåÉáN܉‰ƒõr¿œî—p¶¡‰Œ;žï«îÊ (Ž;pöÿhkpŽ”ˆÄÁ$Ÿc4lŽàIûEÃõQÇ8šêIâ‰áã§Ù QK¦.žV↦›ýlC0<pøu ×XüŠü' wž3ÜHªrõ 2…5?éq–˜ž~ër?Ú
+þá¢H4™%]Zr¦òDÙ˜¡yn=š×ýD¢Ý$+lyi˜lREknˆ\+ SÀ— ª’É42ÿb´ëvJ§|í$Ž‹LFÞ÷NÑš³{ÄzFÃV%àZIó sÙq¬ë®B¯‰u}ªÂa¬+Œtÿ?›¸Ÿ±9Kó®B¯ˆm¶¹Ž@À? Ï&
+k?Èg¶"]çš<Šß¡v¶ÛÙ„ÜCëëâöq>ÝW¼hÄ=T6{@^]xððÓ§±ù„Áâdv•bW))ËùÆÃp^ûL!ëò%®wƒ?nGýc·iB%ì6lê™ô
+k·ȵÛäÚmò©ÛtÖöºgj¤”‰lrîZÝ5þßƆ6¹<Ú¬Ëû'd¶ªýrCoíÀâ#Ú%=28èÊù?CŽšhºÞ-*fw\¬ŽªãI[§WA“ªãžûJ}ysýnðþvDË ¯ŒŸèæº#ç¸ L~qG§\=/®ÇïÎg~H©jþM¤l4)5‘­&c**ÄÊ1j<&iâ±Mã÷q'Ë$ W]bù¬CCI
+Å3T[ Æž !f‰M«e–4!uOö1â&² sûq£Z$&Ìí3"Ä}ŽÜ2û|Ñu;*ó,w©[Aë%Õ=M{£íNaéÍy>¯=O_}HOmsÑC5Ì• ¢ hV2º£Vµâ­P¨7q/G’­¦;´5‰Z¤Ü¥.E ÏA+m4/#e†iæÅU®ÝäÔIÒ;d—É€MõýUõP­÷”³h©
+‰Û+£ï1JµnQR7³jþD7³®Â*B®÷ÚýЬ›žî,åH¥ƒ!_#@sÓœ£íK¦Ã•‚e
+£Gírü^|Œ¥EÁ,ÕÝñã–ZÄŽÞ}©Á|äVFÃáí#ÞÍéqJ?{JÛê
+»àÙ’À{¢Á+U÷àN5Åé#Ô½¸{ßd¿.Œi¡º3fš¦n-{†P¤ãî8 ",pOý–m±å1ß)Xsy€*Ó‚jïO}v&Çÿ=Òųa€óÙ¬‰y$òI0–ˆ*%ó÷¶v·vdðÞ3"p¡I°”ÛÅ&ÁJ=1UB§ìTÓɨOæ†åð¼è'åú ˜W•jªö ÐÿžeU;uZë¢( nÀ… Ò¿×±ü_d?.äDQ[åXÌN3²uàvÂRq†¾UWR?§‹»f#+K–§!ýä|üPëšžVõ{²ê8ó\î>–CvéÉÝf¼<\ˆCÊœ¸±( I€ômÒ«î‘D0]¹=½¢¦©^C"ÕætP•Ô>:0BÁŠ/¨r¿
+endstream endobj 199 0 obj <</Contents 200 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 200 0 obj <</Filter/FlateDecode/Length 3661>>stream
+H‰ÌWÛrÛÈý•yRvn¸åMÒremem­ÈÄÞ­MR]©%%»ü÷9§gp!EËrœ‡”JÄ`0èëéÓÓ‰Òò·½Q?µºÙ©Ÿ&æßZ5¹VM®uaå@£Š2/µvªjLî¬.ÕäN%*|”7LxCã >š)[ä¥kTVymœšÌU2šŒ/ä…ÑDý¥\ãs¯jhñFY¼ê•Ñ­¶ õN­ÕédhŒ¦Ô=‹‚„h’ÕÑ$j‰J~‡op¨ìÕPçwi µ¨=U®ëN…ÑpýYo*ʸ4Øü|¨“t¾O&celj\R(_òÚ¨…<5‰Ïµú#IM™Ø43‰æ¾áªHÿœüÚ[X›—½±îû‚Þ> F6FÁÄ‚aóæ›ÁpÕEÅEÚÿ‘tÙÖøNWóß©
+RU3t
+Øï]ªšÜ|;ÁE—`]=Ið°˜úüºó´N./ò ÷}jlR6ê¯ &r›ÉŽ‹åf­$½6œbúµºÂc9·ZL¹»[(ëíóí´ÁÎ`jòÂ9O;wí«F •uolQŒÅ:·i“¨ñãl¶Øí®W°©puòö~±âÉCšùd —h-M<iQ¢Á
+¨Q‚54"®e^I9;›×õ°Ð`§Á¾kçJŠ
+kb@‘H°eÞÔ¨ùŒmà—4+ÐÐÐao¸zäÏ6EsVuŽ]— ¾Yš•‰ù;Õklú„]iqӾ꤃[6Ç2YlºQ#B6<1[Ì£dSÑAÒ8ì ÑÊËè¶Ü›+¤Þ¦Y•Üóe4_¾‰k9ˆˆ1rÃÖoZŸCߣ Y@‰óÑcvÑ"¹Maª~‡¨o§«•Z®±X
+ç?,§ õ k>^îÔ=mØrØp%žÑ丹Pxÿ%55D.$R”'§ ¿7¸UÓNïÑ_Á°”0ÆØuÙpíºKM“y»ÝT®7ë4³ˆÃ÷™\-NQc8û‰+±L-”ì‹wêAèæm]™Då¦@ßø!›m`Näg!Ycš-Ô†cÑF7ÜîÄ5®æà•¿±Xn—ëÎS;±‰Ó^° ðö5åméÃFüùêá4¼^N™óŒÇÎßq™Ì.:³}4Ûæô€V_\ïÉ{#rÔR씘¥†"9W³éýôÃjóçѧ…[Òä‹'W)Ò.ŽÌÕ”ã!–rèŽCÓfŽ·åv"$Ê—©—PÑ÷¹®j¹U©êFÇ‘ÓjÅ ¾7ÅŸ¯¢Ér‰£TnŸ÷ÛDÚ¢_]øÁA?§›§Ù<Ãø:Ìe?«‹Ña‰ß‹((Âç¾!·J 1ÍðnN×]2•L}‘`‹}Ññ9S&TÃ~B牱Y‹8I¢)DUW¦nUq
+kÁ¶[e)«5VªßŒÈ)Y¬%k0¼ÂôŇûmÅúˆ/DÇ$À j|‡TOo(.°jaß'ËøÀÒìжEò<"ÙÒ(ò°Åê
+‰÷CÊíP*ìÜuŒš^ÇêÔ>z]ðS‹Å}’Šü„„ ê9‘´zopyŽ›(éEü$l‚¬érx¸%¤£tTôt$ý u,ô<«ÈËÈ_ÔÙ2Ṝ„)„íuŸ]¤¿a×x¬S6ÅaBO¶~bªDVƒ$b)L¦ìGæ¡{¸7D ¹8¸DpFè} kY°÷€b^¸®ý«·÷ÇÀYÿ` ŸIm7p{dÚ¶¿ˆ?o P`sïÑ`…µùÈÖº õ$Ð:È†Ì o‰h!2*±=¤yÈ`=VŽ“Ò °Òw~cB?C¿ÚŽô“v´{änÛ}¤1ÍÉúÛÅ,ðº<ßÊ»j¶YK‡g<ö‰Æ‡îG¿¸8:U±[Ék‡­J·­Êö­êØÀ!V½‡µd¢ÈkÛt©xÜJCäÈN¦Œík(,“•|”Éú¸­àq“üƒù9™Ïù΂Çw/êYø8EŸìF†Mr&ƒy!uXõÝ*ƒ"ξåpØ? –-b@æ*|òìu«}™/gdû«­øJg;?'‹ ‘ˆV ? :ðÍ/æ(t,Û¹ß!°ŽPòáx[òµŒà*ÌÔØŒ·”5çÝb ãhÖ}W¹¦Ìµ‹ùN.Çgéäã“Òv¤QÉ+èýv8B.¿:&J†~xV”Í00J3~Üš²
+_·¦r×fVµ5°]ÜDú­’v¶«ÇjÛ¬:l’
+¢å^ëòÓvåĬ¬‹¨'úwŽ~?$$ƒ÷ŒIÄ*' “cÂL½Q‹ò’]ÎñÛTŠœ_[räÐzøÔ3ï>šmý"ϲ{ÛSoê¥m¶7}üœ8A©ähâé:—²ì’ŸN©oŸw;ü&ÙaŠzV¸±Þª ÿçyŽßj 3y,…žJ
+ó´:`Éê[»6¯¬LCFXºwKš ÏjµÕŽPðgÔ¤ñºD
+â\ðÀKŒg,PlmBì3#²ÛWØÉh4ÆúSÞ8}‹< 9-SX;\DO•áºÛqòVæH§œ,ý­¥1¾:.N“ͽ€Ûwm[öÕMûˆh‚ž®é{Ïô]«èßmÏI¹ä62~!¡TÕál”Ìy ÿfM—Á’Aœ¿7@:úCç’ÔnL'™d±ºhaÝÞ~ÿ|…«¯ên5¯›zûK”ïw8rÖï#MÓÚXaerHÙ/ôŽœ)¹i‹Œ D±<è£M¦::߯wVÝ@ó=/™³…TV•Ñ.6Ìï9»mX½Ë
+endstream endobj 201 0 obj <</Contents 202 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 425 0 R/T1_5 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 202 0 obj <</Filter/FlateDecode/Length 3112>>stream
+H‰¬WÛrÛÈý•©<©
+ùÛÞªŸ.Æ…ºÝ©Ÿ&úŸ…Òjr£ê¼(¼‘µòe^…UU­skŠRMV*Qéä£|¡ã¾à«™2>/m­²àó ­šÌU2šŒ/åƒÑD}R¶v9„WZ>7!×¥Ò„«m£Þ©µ:› ÑP¶q”uj¾<†E¶M1¾z'c¨HµI¼r%kõ÷¸‘§:qy¡®“T—‰I3Ü×\ùô“—ü½1yzÈö›h ô±åë#tIÖ:$Ê÷CùÚäõôˆ­N(ò'î:è25и^Wý¿©ŠRŽUÁ¯£À›ƒIUý=Qö‡(WO¢<$â!Èö" Éë׌3Ìw `Y«ÏümÈmê“‹ÍZ¥Úd<Åðê
+¯åܲ™rw×(Í_sˆ‹Ó ˜nˆSçÞ©A#WÕ‚SÖ¬> °bÛT‰z»Þ=Ìf ×
+btî‚FZçP…-Ôº÷Š¼®ƒ‹ÄÉ4"îq=[µuïêg<rÎTñï¥RƸ\k¯²ÊA0*NÉ¥u]„Š²©˜*û#+u§Æ‘#‡‚: ˳ÑB^!Ê_WUNzb²õ–éÔš\±á˜ì4´;;0’u0“­ÇNù_˜ h)§ì¶¥n+õ‘ݤØ)‘¥Ö‚Æ&ïÒ ËÞ§M4‘¨3ôN‘»¢Ú¹o›Í}¾¯k`0j)öœ–oCIÛÚjñ~QÔ°·|ç:ùº
+ÈKUj/þt( ÊçUùrVç%5+5*9
+uF¹8É^GʲòºÃ‰.~¡þáx\Š‚¢ø<[¢Jûú)žO TÏ}—¶Ä>RÆ?ñtF#acWwkÒ¬,y¢ÿïx²b÷Ë µQJp(+àPˆrä­ÍQ0—G‡ùùÙ#Ìä!ªÚ/~¾3aVP»Ì0>AEÖ¡îW™ kOŇ¡9äÍâOñ°…¼èdÊ»¬5fx´3åäS—>]ÆV Ãù¢D“óå°ÅHÏÖeÛÚ-3*@I‚®cø[šùdÁ†{ËÕÿÛ¦èÕ*äص :d–fe¢æÿêlº„­©¹í>µÒÐu²ç‰f«^§Y-B6<1kæ­d]EÑQÒÛ5·Eö8µí{ö`ŠÚínøBà,‰N½âó=ŸÑ‹34ᩨ[ˆ+f£Öt„ÜUic]ë‚Ëvúý]ZÁêXñpÕl‰,zÀ:›®£š*Ú´GæÜâas`{EÓ ¶Å”É_ŽžKÅ7&ùˆr–"b‰„ïÄÒM§tí‹ç—óQ%Å«i'ãS™ _›äârÌ(L$\#nÞ½$bYckÂ…Z¥FËàƒvSù¥M.úÁB¼8ë=û…é`rÒë<92|MM‘Ü/fÓ%üö€ip-MDÿÓ%‘ñEÃ7jº%#êAüÜñ¬GÐpP\ÔxæLiÀ’˜7êwl5ôÏ
+ÝlÿHNõ+E€Î»/ðÅŽ&þü„8Q]ËœÀêȱÝV‹rNl$NÆI‘<.)n¢H¼dàJp¯;ÒŸÁV'¿"þònÆY’‹u|Ù¹·¨z¥OÝ›QW%º˜/U"äÚÄ”Íl«‹D ζ³K=nzáv e«•þê3à5Ûåf:?|dË£;À¤4k•1íé“l§+Î ç±¥~ctv+ÎSîÎZú’|vÕ=BñùäÏÙ‘E÷ti3[0²7œÄ 6ŒÖC'šºŸÌ³CÔ*Ó§;'º}ê ½&1»èûí¼¸
+E¢f½•ïΩoú°ã7'+MÝgFè=†ðö[u9R Ázb=á~S Z1A%-5´Œ«slÅ#m†î„µ‘pLQ
+wH*I¦íÕ~s0Ê ˆ¸Ä˜\ûÖªäOlG†Ø–ø,-þÍ'ÛÜëçD>J&ŽØäÐP8Š¤Ôü;)BÛŠ¦dA¶¦Ë¥Zw9…Â+ mö[‰ûWÉïnYx+¥
+ìƒÇµ
+;¹¬œ!ÕÓ#6ØaDâ£ÚueCòü3%I%ˆ a°êþî0œ4ÿbåØE<'ƱœÊK[]dFíë‹NúnN>‰³¸Œ¿Sñ\‹Þ×ì¨$îTt×üÞ&ËX&È
+µiÙY‹Ÿê$ŽÌ$]ëz`ªMžk2Ãll¢>ûШûf9ºEÄ$Ê\Mg³Ív¾ >‚³‹Q¯“³åT0ð!N{Lý§M¨-;*î»uY»XLü0³M¨x­©ºbb¦PÕ2m¼h2¤
+¢µåE€£8|µY«×Û nÛF˜"¢2ß×0÷íf°Ö0›k<~Àå÷’©b6$¯à§)“n ¤¿q±o@ zmè“Ÿ%¯ÿ+|¹]Ü.ÖQé5Çê:m‰Ò÷kqHK.d Ô¸0–yeˆÕrgxóƒrÝÃ0ÆÄY$\ûÐ(ŠöÎ #øÿb$¿Yjmr׸ ˜ù…1B?‘ÍVWÚh‚hòo{ Un”ÑuîPH\‰xá)×uLݨO
+uu3¾
+–ªø÷RaDTtå̸-È„ ’‹PQ4õº û+u§Æê:›´bíñòŒ#C º)sÈjƒÞ»ç‰ÁÖÛ¼ì .Aœð v4sö`0ë`[Ï6ÿý#ö:víVÛy`NXýoÖË&§aˆÂWñÅvê8,»
+ “‹´ÄõBšÑÅ)[l^u˜v/bŸÿÝžªÌÈÇú†=1- vµö¼;o‰¢ÅYfÀxÎN?ˆl¿ˆ4}¬iÝvzĘÆЂæg Ëù ëè=G)”àïFŸ†Ñ¼»¨>Wc<éÔÚ"ñh(Q¾º²ƒÁóPu)çÉS2ŽÇ=]e+4v‹ê6' Á(¡v/¸ÛÞ®Ñ{ÖÚΰ
+êŸ$äºÁiž/Ë^½ðgh­9²v1*PÆZ' Cs†qK™Üƒ¼‹ùÚû`
+endstream endobj 203 0 obj <</Contents 204 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 425 0 R/T1_4 467 0 R/T1_5 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 204 0 obj <</Filter/FlateDecode/Length 2442>>stream
+H‰ÜWÛrÇý•©<ͦ²ëÛ^ôfJ-WŠRH(z°R©°¤ÖXJÖßçt÷ìD;‰ó”JÄì\zºOßÎ\,UÎÿöwê›Ë›\ÝÔ7Kó\µ¼Uu–çÁò†Z…"+òÜ©²6™³y¡–÷J«dù#Ÿ0r"Ç ZZ)²ÂÕ*­BV§–k¥Ë›—|`±T?+Wû ÂË
+·x·Uf
+erWûV½U[u±œkC²­'ÙépͧcEdÔÑæ¢ãrïòW$Æê |A¿µú›Ld‰Ñ>ËÕ;˜BÛ$5:§yC£ü}ù=)üW¨¬ÍŠjTÙ=©-)z Ÿ>ÑN§‘æòÍê_EÄ•g.
+g.Êý»dv—­¡ïªÿ½«DÊéUÆÍBÜL&•õoñr˜¼\~áåy NNv—I¥_¿&?Ã|O,jõ‘~[rä> ú@ƒn·U‰qèúÁý¹ºÆ2ïÛ´ ÍZeè×NþzÚIOcHOU¢f]„BÔ$<GM «M—¸ÆëI©[õÝÕE’‚Z_B·ô¡Ð…–›ÍF­ Ï^ÑhcÐqÓôíÐѦ]’ýˆXszÅsª9°¥quÕñ~œµú™Ýa˜ëžä«>*)£¯p?+“%©Eb“݃i«ÑÜO°-µÙò"ÚâôçÄæú¡[5зy„I¹|éG|6›$­5-´´¢š}ûŒfäÕF™8¿š.¬¼Üx8݆kHêÈLu…©6±ºÿDBwûŸSiõºøs»Wχ8q ‹ŸMϼ颡•·t­É¼5|µ+¨|ý SuµÛß'–ÅDXUΪ‡ó¨{§@¥êÍ6ó¤^·«Ž”½M §#ý×YÌñ¢˜àÀù`²àœgÕP®|Ys ñxŒ´Â×4ˆ‘Ve.³-uó¸Btn7ýà*ýê¡Ý7Xéù>¹Ä~öìg䇩 Õ1²½ƒòHœw›^âä[…?¯öÝ­l)ÈP^ªÅR€‡YUŒ¡7Š@‘•T¦ ë3ŸÏ[ ®7Ò?0²–a³ª*Tê3“×¢ g BV½Xðoš8§¯e|IYûùàô "zÉ“ Œ®Õʆÿ¡å™²Ì¬*Œ#ï¡-dH^k2Ã¥éµ+ÏêšÂ´O í’ì^ÝǾy}‰=5–ªñÿ{¥,¬2&¨´pRÞç :¯J’M{€;n¹WÔÔ˜©!OQðu(QW-;ÞÔ¼Áñ#@_˜ì‚C9L.<Õï`²75ïf&C²©ìÌd0Sü &Ãÿ†KÁ9»]a¤ÓŸÚªbŽ‰KJÖ· #çM´9iš£O:&«m,æŸ4›æi½®Ñάڰ=ç廪 »Úu¤V°•¯~³tï馬*ä)GûU!+‹ÿ0bMV¡!§–¬äb$#K}ÛO;ï98úw×Ççà‚¶|BW Ç‡úK}~VF¥*£BIÍÃœ\ˆxÿi²±$í6Ãu±ˆ_Ó!øÌǯÇMü“ó2ýý xÍeŽ"= ,@vÒ_ªiq({èÄÅD2ŽIä1« d³DïtÄì¬|r!ë8—ñÔ–
+vY0Å"­¸z.òOG° ¯ô)æmUµ%CØšß”Ê^ŠMÏÃϸÓì‡8!p S9*´øA ˜äò),Ø°^:Ú¯§ 2!Öo*Môˆ5ƒæPâ¸ÝâkG÷£õ
+•ˆÎ±sj\JÚª5e7K·£h§(©ôŠ »«¯íÔn)áS0•ÒÐ^4C'tú'‹Úí­Zv÷(èç^¡v*#ÑXŒøS½\djðéѱˆÅÓD 6ŠùÑÑñÛ÷[<m~ÚZ?ßm×ô®#—Õz{8[w¼ù”¢Œ·­:Jzªúüi[••¯€óµÍÑ,wÃLs¯Þ, nUÖúº½‰^LËYQÊÍ
+–å4œU[ª[¼À5{GŸ{ÊôzÌ—#¤Æ¬³œuxÄâ•8Äq$!«‘P|‰Ìgª‰dFǤ¥ÝÒß¾»¥ü"ž±jf<D­ùZ©ÍÈmN˜X50±ŽÏì"µòz=g9~Þ|Æ,ÌK©¢þ¼hô;õÐîŒ=ƒ¥š‘Ž´œV;™‘ßmŽQ“ýÕ±;fs¬xÐ)iˆ&[Aˆ®÷GŸê\1Ö9÷üÌem9.Pï€w^®]CTpez©Ð`þÔ7ï7ÝÐûù©L£¡-|ÅW,UØü/ô5Cul®‚*©H¨ú z"úµv
+endstream endobj 205 0 obj <</Contents 206 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 425 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 206 0 obj <</Filter/FlateDecode/Length 3484>>stream
+H‰¬WÛrÛFý•®}¶“¹Ø7‹Ñ2rUbY¤×ÎÖ A]”¨”ÿýžîÁMíx”JÄ`fÐ÷9§çdIZþv×ôÃ|¡ézO?,Í5Z^Q­´V6Ô¢ŠZ;*k£œÕ‘–·”Q¾ü _˜ô…Æ¼Ô *ºšŠ*¨Ê8Z^Rvº\œÉ§Kú\í„—´x|n+e" á´ké-ÝÑÉrj ˶že½šOML";­N6¾Kz— ¨ÈÍùÈÏšþ&Tn2¯4ýšå&f6/L¦yÞð(äÿY¾dƒ_Ãä`­ŠÕ`²ûªµlèã
+ÍX—æy]ŠÀç6·›vŦì[2ü´£›4 ¡hȨàXÙ'2¨Y_Ö¢BÆcdB5ÑR)¯l^g´xhšv¿¿zØ
+±¬Û•^¦îp}!Ð ô,¾p]ô2e­èœ™ní]9ÚÕ1¤¤ ³2ZXîV"X,Ä)c7 Ìê„,0(*S'øW^0èýšGü³±·T)Ì:ôw¶È‹˜™ò/½Ád
+#”_ Ôˆó¿Ìr>»e·$è+öèpxfµÙÐúxn_¯-x˜¶ßß*kÚË<v
+)ŒB2¡LV³÷÷ìxÛ¬¯Ð­Q" ]®+Eô•ÄmÑ٧܆,M|Æ2o£µ¬p0›´é¡r›Bÿ‰›@Öxe–+‰¤ñ½ëÄ?½qõ‡E2áê²Ïbp1§•àÖ‡ÏÇ*îiN½ŠåRãSòút@v*éÔccYr™rȹiùç ¾›Á€’õËÌçÜ 3ÅÍKjÍdªUIËÏy3%C\[ðKÈB±>HÙZ÷Óž• ¯SrK¥q˜&÷.ü]„=ûVŒýˆ™e=ãbZ òsjZ¤RvÉb­“Wùm;¤‰bóþ “ì3ü’½¬) £¥K li—f+¦ÜôV=äl™l™-æiЬîyiõ^”mƨAjû;>hÚûäQŠ°¨;܈[Ç*%Œ÷””`çTeýphÛë5¾Ý§K|P±“‘¯³E¸zàÅö(ZÅÇ@]ªMàP;§ •.× IÄ ÄNèAšÛÂ3ï Æ›(˜—ý a¢Q|ˆ7Ô–¿Ó‘Jd ¥xˇ
+C;Ü®e|×ÈâgjømÅ?›„Õ_´)*ÖGáÞœ±¹™Z©þN¤í8,*f<@ºßîP u.M+2Š¦•{ÖÀXe±7·+^Ýî”nùî#
+p…a §Alƒ5²ÎÊyPð‰¶ÒO²ùx/±àO
+“XBÒ‚ jŽãK?Kså Üóá‡m;˜ÁÀ~ÃoŒ÷÷Ò{-þ…
+þ(ÒlI?§<fU`ÚÀ«bÈüÞrgW÷òªC¥‡û…áˆrdÕÖ¶-¦q3Ÿ?°™eˆëÈ: >ÅfšÙEƒÒ°¢qÕluUbYÚ'¥;¬/Ú0©_X³LY«’3åÖÙt3›¸)ÞËû˜tå²0$œ&†P¾/2&ÕG0Œ  „k| ^òy#PÃèÁPš
+µPW˜]?é3AQ#DR—2¾d w{áCâ£ïwì®e2Ü<Ÿ¤‘J
+¯¼™Né^6„Hi`ò[€
+endstream endobj 207 0 obj <</Contents 208 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 425 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 208 0 obj <</Filter/FlateDecode/Length 2350>>stream
+H‰´WÛrÛ8ý<’äWyÛØZO¦¶’Œ¬¬Æ[[
+E+š•%‡’“Éßïéo’eÇ“ñ”Ë"H
+-Ê s­
+'f·"éìwÞ!ãŽ;hªÊæN‘y›{©Ål!’Éìò o˜ÌÄg¡ƒÉ!¼ôÐb°]ù\:! M-®ÄF¼žÑleHvÖ©ùz1Šl1ª"bü-ê]BE*Ub…qô âßñCžÊÄä…¸NRé•f2)軤‘Mÿ3û…
+ÈV©Üù²~-=t ï>B—d­C¢|;–/U¾ë]žPdO(*Ìu:Ò¥И^Wø1UQʱ*iÇF!o“Êðœ(Û!Êåƒ(q²¾H}òþ=Åæ
+  â =k
+d“ÚdGƒÕv#R©x×tá/ÄÓ¼n]Ïéë®’žjˆ‹SEœ=ºJÈÜjÍÙ(‘G¦ ”ÇXëG`}n <$â7Ûæv¾"«Br¶Ý,V°c¿Úbv³¬´êÁ;F‘Ò"ú%8ë¢_(€½6íðÚeXHÕ誈ܗÞ0r‹ ÁDäö@VUliDnŇ àú2$çu6M³2©—«Ý¾™ïÙµ„˜5ÈÎ7Ê?íW¹Tƒol.É7õ¦nækžrCÁIÒ]
+û™ÐÞ$}†ÛäS
+Ðâ.Ílra“f&á·-ýìRƒYÞ b—ÃlŒ]®èd‰ 2ö“ùøX&|ïÓ,D¹,§ªÊj±Ú‰=O‰ø¡÷›t]tm~JçÞ/è
+ý-ù|Ÿª"©w€°'`¢šIK_4î°›T‰˜âj»¡|JuRÿ±'Lbµim¢­?c½LÞâ¼N3‡Ë/®h(¶M·(B#,Y &“¹´eDôó[ÞšA:8!¶?!æ;YP”£8Q(
+ýå}UÕ»ÝÍ=Ÿí“wwÈ
+ÌìY_6T>–•¨\zÙ¹ŒóšŠwØÙ¬–«MAž_`töV¶G W”—…@1jÜ^./©¾X?œ‰X¡\Æ3…‘Ö|k©Ü{'2—……Rh’¥J&ÓÉÅ›4Ó&¹œq&SÑÝ4’ÿP‘eYæJXœƒÃd\ŽôVð<ßœ7¸Z‹<o⽈pîиºmËúôk,J
+ì¿ãÿ!” iEfæpú3HvˆD¾$Ù¤ØÀý’[ñI\Æ+pè.ÙÆàQס
+³%£LfN˜ÿÐxm5êFg¼Cªø0ÞHŸk£GÆC²ôjd¼¶øâþ”ñJÆ:pÂnídlIŽíN%9T˜,Õ:¹H•Npî0ì]qÚDUÒ•®¸€:êM‰cô¤Ùôæ­WbÍöœ–¯½£Øë %˯¼¶|c:ù²ô8
+&:8.oÓx¸÷_)9¶Íÿ@Cñ/rÒ7ò³nÇ=vìÆ«'-ª3]òhn±en”dåDãè eÜ™ãÜ RFáßÄ—Ô7úñ¥¤ôÅ/bà8Pk^³ÛÚÖ­}§Û•ƒÑ­¯3º)Zµ(zÊ91²”31­ ךçL6v5?F Q>D„A>®û¨@| „Øä7¿Ÿ:& +òî‚ Ä N©^œ{—© ÅqØV”ÌlíLj€²yD@?›ô·‚‘Oì;¯~ÞÀ _ä×)¤?CÊTé¾Glîdù$@ÿwÉQžMøñ(Pª@!þø€2ØüS| [ò‚|@©’Ïäñ/ÎzãçÏ7þ9|àØî—àJR÷§zö¿…|ù^ÿa> ù´¿8ÀæP¾çÝŠ#>ð²xz>ð(žžãóº\¹1™
+Œbƒ·UO¸į́»£7¯[UÔXn÷Zæ@ö¤oÜ
+îB4‹ã•ƒô%þ#`ïSÉ#þ`“ØÐqˆ¾A/¸…DŸ’Q³b¨I/[Q¶ I:1"e¯3¬r=p’:ô˜”§¨CÉØ:hš¨CyŠ:¸uGÌAÐôWp‡K‰*¸ª ªà˜*P U'¸‚²Ü®õâºÞ,©ÔKÏ
+endstream endobj 209 0 obj <</Contents 210 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 425 0 R/T1_4 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 210 0 obj <</Filter/FlateDecode/Length 2235>>stream
+H‰¼WÛrÛÈý•~Rvn¸Œß,[Ñj+%97~ð¦R ÉØP¤ìòßïé
+†EÇ¢“–/ûƒÄ¢QâÇ vvIÚÄÚD¹œ=ý+¼Hc¹4þ÷ìÆõO sÞ¤#0«R÷M`¶€i˜T÷€)ú-ŠukélŠ!3†ý1€x
+æ;N¢ÜÓgþ­ãDG]œE¾iÚIhMØÅ©¦è˲oYWüvS“æ_3Æ¿ÇiFœZ3N¹+LŸgy€ÉþæVïΠÆE_cí£u3¯–ô6Σ
+/Mt
+%ΰŽÄ';(DE‰IU‰ú|½±e5&Z@_Q-áU›hû%N|ÔvÿuÑ?àÉêkÝXÿžØ0Œ×ƒ^3IsÅÊàϬÐ|¿è[„2ß¹~À®DëTg‚Ëæ¼õc”ÀØÒÙè×cDMÕÑMì0)¡4¶±‹ê®^P³ÂkªøÚnyõîx{G?Ÿ‰[Žâ$ë}³«zVé~ôGܑЯ«8hXÇ TÌvÂu 9 ûe‘ùDš2;SŒ$åìo,…? XÁ€–Al©Z.q~‰ ¹µx²Î Fh +Š¨Ù„ˆÿ|ŠIx]póP sÒif­„W;ÔTá%ßä~H¸Üy¾é®L¹ àº7W«¶»EÆÅ:3>zÛ® \°mZ¬®6t/¸PêÌáÇÒ;7%ºñ®Ÿ%ý¸ ý˜
+J6ðõ“Ä
+ M*øtéø„2È”µ-oò([ùÓ£ñp°øÛŸ¸ð ËØÿJM{g²7_j,,‡VX®D&Jûü{ssÇ,‚¢)a Á'Z¦ ñœtÊÓ‘P™PR8íÈ`ª*Ùg´“džz‰»(9S‡šp3Á<W¼êIdœ¹Š‘•ûãòz'D¸æœÙe-´ÛñÀ>™Úö;æs(Ç*ŽìÿrŒ/è¿€r,òÁù')g·å‡)Ç*ÇN|&åìL~qÊL~œržkòó(çÐî— ãsÖ¢Ñeþ
+Æaç;…®ŠþÝ”£=÷Ó§ lJ=E9»”ó²xÊyÏ@9‡x¦”Ã}… &gŸÿ0å
+endstream endobj 211 0 obj <</Contents 212 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 212 0 obj <</Filter/FlateDecode/Length 1649>>stream
+H‰¬WÛnGý•zÛž¦3}ïÎ[”õr7ˆ¯EÇÉbA“#›(2$åüþžªÎ2!'A ˆÓÓ]]—S×¹™S'ûôÕ춣újnþב¡ùÝuÁ
+A¡uì:G©íli¾!EÍü¹aê7øhI6èè
+µ9èlÍW¤^Ìoÿ-^ÌéWrÅk0OR<®Û¬M$Ó9í{zGt3?׆y[ϼۓ˜ß.U¬,mWuü©ÊßBDc¬
+ä#? ýX7tc”×ý¬•mZ£:Þ7¼
+Íçß±ÂÿÊÁZó¨²{V[Vô@¹ýD;Õ€Tþ᜿±º|—®
+WuþçæL–-ÐƲʟU¹<eÒ¹Qˆ›É¤T~—Ãäåô™—Ïqr²›5Y½~Í~†ùž }âgÏŽÜ7Ax±Þ>PcœºþäþŽÞàXèîûïz2ü´“ÿ=íY¤›IOÃzš
+ÁÚÁŸ)2wˆéN©y*x·ÖÊeݹ,0!®;”¯mÊðPhÚÕ¬ QÑËƉӲÚ4Ö¨÷€@ÞöÍìÃèÕG~‡zQíxÈø±j²U C{Ø"—èä@#(t&%"Åœµ‡>^üdKž#ò!Ëæ¦H:EP$í™
+cJ)¦"ݶ9Ëz¹*ê›hrÀèüGd­Ó©³Ô¦ià= €ð’DºuÌ•KpëH²¡t‹è“ø›ŠõE :žõ'ׄ&GÃÿzÕ£n®€ä‚ÓFzÛKŒ˜ÀØ£8Úþ
+¼I:Æ3ŒXø ½bÄ¢sÎ £!¯Àã"tè®ÀsÓXúÜF‹ÀôA½kZ'¬®Û‡Š&‘Îà ûR—KŠÏÛÌû|^²¶t/¶\çîÀÑETQW¡®‹ÑçßÉh…2ðçJ ãC¶(ȈqTÃLAÛ|rðŸŒp ¨ µ!s
+9D¸ÕÁæœb ð¢0)NÎsѳô¿X!ß%Ý•çb¹!¥ÏB¨aŸry£ˆB‘ —áçÏ°6)kVî^ÌE›EµÎ¯õyùÆdü~dcÓ7Ј­?Ë‘E²Ö•ŒoÝLÝérú(…Nº&_ðáÅu ä³f-UZº‰IC™ºnkÑ%P¡vv¦ê6m@áE£üÀ«GþA]V=e]§p…SF™¯ù—¾Å¦W·¨É3y‰òJú]~'üvü+E< ˆ·&©Å‘ÉûÊäVÄ,q`Ú•<ëïŸËé=ëD?ðû®ò®,Ö[~{¦5u&wÖÄOÍ©³Õjd ®V;_ªÑsÜè9èÐÄeM¸Ekœ½“v|àƒÅý=1,¢’Z×ÜÁ²QM<Юb…¾**ISgSÝìI,ú‹Žˆ8ÆÕ'^ %­$ûÌÁ %ÒQ8ÒšwWÕCF-Y…-E½‘Ù‡¡¢­\¾ƒ! zûâoâYD”Ø4yÊ«ÁW,úÂ_‡ãâ(Ø(5èP‡ƵŒ¸2¬’³Æ£QýˆÏÀŒJOŽ
+ö8û ÓM|~ºñ…3ó|º±<Ý|óþa»ß,d¶±µ¶+iŽˆ‰¢WÃÁÛ±•>ÍŸQƃOóûø t>šçuŸ ½7œ“•·ëÕip:›ïìæ;VÏæK|L5¦S»:À!¤­ñÕLaŸPÌÿ>¸'ÕîdSþ‚MΘfòWßÃ<îƒBsΦQZ,ÍÏ[
+´ÆS¸×IvÖ? åïyyÍ­õÛ¥’Ÿs® @` ¥ùÁÀ£§Ý#?÷»íA‚w{ÇHòp"¨Ô¯Pì¾ç/ z‹fùð(ß ßíyœ¯œz” ΞT¹ ˜@Ž¶ŸøÁÇ+Þí'¤¦*m$±ä«’ ‘R…ÄÊSbµÌd†ZðNêèP` ÚºÉE19=âG¾9Vb‚ƒ †M0RR¸F€Í–ó/å|”È">£¡4¨°föL±Z/…õhArcŠµƒö\Bª&¼ù¦1EÝX¾¾áÿ/À
+endstream endobj 213 0 obj <</Contents 214 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 214 0 obj <</Filter/FlateDecode/Length 2716>>stream
+H‰ÔWisÛFý+óq°µ@0'0ûÍŽÅ©”‘ZH¶¶`’˜¢H âò¿ß×=
++Û$µr“-Aà|ÊY‰bW²|káVŸœø†ã1*N®5­‹¬´Â— ”(ฒÒKíadœ†R ÁŸÐåB¯/K²³3oú&Iƒü5I“âš¾ß%Z¾JRoä N/°f¤—ðôÉ
+#+Köÿ`,ì
+ñyÔ4»ï®í«Klñ¶ˆŽøÿˆ‰ÍT^Š´°$׉ÔR,72D“bYÖ{q'&1ÅwïÁ^:x{Â׊j›¯=ÎñŸ‘JÉ—ˆºßEz0Þ À
+›Õ›í"Ö7œÄÐQv¸ %=2ÆPÒã”ÀŸ(+㆘ÕW( þêÍ1lŽ’uK¸[ ®8Ø·$ûï½6ÁÉ”ð».øXÜü™gIÂ61²j¶¢í| %ÁžÇ&Ï+H~<ñ€/ÞÙˆyµ­D´±S¼¿c³¬Vqaðž¼g;÷á¹tEôßvÝKÚV Û´Æx™±ç¬Y装ˆ_›8^¨–KøžF1óˆèq’ÌÜ’=´QT¸.yL¢#ã<¯)>~MxÃÛ7“‹‘G)…$£@ˆÅ ¥å ­Ã‹ìN1 •;Øä-Tr=§ÁÈOzð³´éߢ{ظmõq¹èm>0$:`Mñ#á ¥oUÂÆ«M¬ÎãW‰­s K ®+öäb†ª~ìOMþÄ:_Ä4èÆ\ÓÇÎ9¸Or ?°ÃؽìÙ¬[îï,=º³tÏuqž/Ú@œwÌM¸j‰2ÒwK&u¤8‚=êÀ죊ËZåG.ΓOΠÜ
+endstream endobj 215 0 obj <</Contents 216 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 448 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 216 0 obj <</Filter/FlateDecode/Length 3569>>stream
+H‰œWkSã8ý+úhouÜ’üžo S½4 éí3[S&qB¦†<`ø÷{Ε-;!ô0SŽ%]I÷qî¹×Gc¥åo5WÏ®µš¯ÕDZù]+£Æ3UFZ§VJ•fQ¦u¬òÒD±Õ™ß©@…ã?d‡q;4vpi¢leq©FE&Vã©
+NÆ×ç²ád¬U\&Ï Ü’`»-"“)£q¸ZÕ껺WGã¡6<Û&<{Ô]󼫢;²ÕÑj§ã¯îÞñ5® R•dü-ÕÝDš ‰´ú-MØpdÍy÷4üßø*ü*§ÖFYáUŽ¨-Ýu ìÞÓ.µqç§ÃóÊ¿ôHœ¸(=p‘N~ wÙÚ$þ®òŸ]åNÙ¿Ê”C£€›Þ¤¼|O”Ó>Êù«(Ø9> ‹àò’q†ù ˜•ê‰¿5¹
+Ó`Í—Es¯BðnÒ…_«+,‹Ü²®8»®•á¯íãßêiñ5&Ò)¼HÅäj™<‹ra6p‰àžå™·-Nh›tfÕÌ Óä×àgªwÁÇQhuÌ·†ºÝ‡Ö³0œšs´]…& ªÍ Ü«qhhoœÕý:Œu0«E
+FB¨æ¶Ç-Ÿõ>Ût"%bÂÄQi ÔEºÁMq¶ª¡ 4m8äwý`²=Âwùñ˜<À ¥ŒJJ l%/µütumr«p•úÿ¿(emA×\G…6ð÷üÆöÐvõNݪkjß³]o†Ä"ÍhŒ)u”耾ăîç‹#Ä1ê|èŠSKíZ£²Z•˜œàµw½úíöw«Ÿ%oÁ1Îld웚Έòïá(.{+q²œ»K!éÖŽÉÌó9*3RÆŠ}lˆ‹b`÷ž<èä…,ÜÃ^ÄÜÒì”ØïXkÀYB!†V–Gݺßì–sbxËo˜è|¸gÿH¿{xdo”Õ¨+P(O$´Š©ñ¬ZëL!\ªa_‹‚A
+b­'é•âL-¡v2g¡iƒˆÔ‚ ÐŒJ4D‡[†½Ò´‰  J⇜ª« or—à`9lÎ5Nß4[<WªµÒÙ5]L
+ŠVîô9†»¡X³£KpSvn2B­›:”O{”¯=IÐ’Õs¬ÝB¹ÅDÆ|í@Yñ”¥ã(JyùJŽnM(œüFUËU]M_èuS×~ 5©Ox«§‘ø©·Fg>èq›®ø^Ba‘t=ÄtÇ€Ú—‹Óóds˜hJðL ž ;bá€dƒã
+yÑŸ4]0¬`g^=íç'dßÁð™Öi4¹wGa9ÀDÚ‡·åˆ4*K³ÃÇ’èS‰³yT‰·)\[~ èê’“ÍGSÊÀ‚ƒ¬¾—à «26]DZR‡*Ôbæ*[î°ÿÎìrÜIϮӑ¥6=]D}f+ôEŽ±Ÿ0ªËJN]µrÂm÷$­ß‘É2¯DRôrM—ë“°SÊlWwsaü7pAË/Ò¢óÇÁhf}8s g’à“£<NVؼ§vá,wòׯý‡Õ
+Çw\”`‡ø[uj°ÚM.»ñOŽDÓšG4½\÷‡[Àãâx‡¦m§nžÍ«":ò_ŒÖ¾;†Yx^Œ‚þ.üŽSÛM4ùJ°è$RK±5“u¡0ìë5ˆ³ÈVûi²zë'LWÝ`åܘA½W#O=Ž…7B¯ÂŸy§¹"52$Múìd@+QÝÜ_ûCòk•Ë 7áƒ~'„zËc‹ƒíÃrµxFŠì`§»aÏ<\ÕÄKú3•×‘(ú$ÐêÉw0«Þ+ý²÷rJ ÁòŒ\Îx)/uUT®Lò’&‘gµ-tÁÑfÛZ?S€]bq¢ÆÞ%vQÖ+KËhÃnèyž•3ŸþãtnNjSW&ÚCË W°Š†ëÃv57¾©u]PïÅAòcˆ1)u^1LÏ*ŠÕæõ}™pðS©ÎRn(ß-͇ LäÙ¯eJ
+<‘µy*¢ØƸ˜\FuÝç 9u¶[Ôa6nTØúëš<Ñ[³(,ဠû»º‰ìx=,ǽ˜~VCÍ[îóÅt]Vh¹x
+endstream endobj 217 0 obj <</Contents 218 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 218 0 obj <</Filter/FlateDecode/Length 2811>>stream
+H‰¼WÙrÛÈý•~R½`Ë›¬‘eOÙ²:®ÔLÊESM‡›Hj\þûœs/
+if~‰b[D.Nl”ñ»å*ÿ=ú‰_Aäܹ´¨z‘ýw¥¥ ‡”פ‹’Ö J?Ò·.­ÿ§E|y„Q~„Q~‰¼\ iBÏ«þc¬”ÊcV.*ÜìU*ëßâå|ïåò‰—‡@Ü;ÙŸÇUtyI?Cý@µù•¿ ¹‰óhËÅlµ4±õ¬:÷gæÇroÞŒùuÛË_·÷+§S9Uºš‚fi]•–rZà(”µ*ë½°y5P‡ìØÜ<L&Ív{÷07q]Ûèݺٌq°‹“<šaAi[îÁY(_•R묙,Ú0¾>‡0ÖÖ¢˜/øÿ“‘ï<O¬õ´ýÜ܈_:ZÎp†Ô¡]÷™vÉråbÓÌÂã¶ÂBàâ]ZÃ$ý|Üš"+S_X<UÌSW(wOŪÌ[+d5o–X´&Ñ—I÷´%Ûž.Ìgãp#ƒù‚“"#ú+×můý!ïßó=ðM)YgiŸ#¥U½Ï_]¼ˆ“:JÎc¢qlÔ{ÖVÕ³z;oùá9íäé@·£²‚¬àR¹g\ãàǤQ”EêB'õõÙDpIÙOOF²y'^¿\ xÌ)–.‹Þ2ª.ñáÍneî:ñ†¼RmUžr„a^šV¡f•ø™ïx þæ4Úø;›ÓEE™¥å³ ddL¦‰9–‚ÐL\Q:úu¨Ìd¿+]w= ´dtC1u5o©èN©èë~-tûëø*t'ðŽ%îÏ ¸²eƒÝ\Kâ^¿21†·=Hs‘V1êóö:ŽÑÃúSy¡y“B&%qrV°RâOübC‡¤.8'‚óŠ¡"Þºç% ͦüûÀ?›ÖT©x h’_÷‘ýÿšëf¾â͉À
+¢ÖÏ2‹Jf·2;e&zÙ*%‘ݘ܊(½5Ý ?”d„&Òæ’
+¥™ÀDÊf¡Ý¶š† ,bUXÈÙ‚­&=ÇNœöX«ü•vÜÚR@æÇ ðnßZ=55ZSiò|«ƒÖÔûÑÎ">—Ž¤³HØ{BÀPýE& µU¨¹Š¹0LzŽ<íùo4‰Ô›'Æ@³M1FÂ@<gø ]Ç‘ÔB‚aØ‚ª6“±äË`ZªK¶vç._U¿‚ØX)زfóëJ 3¤Ž¦Á„þ2bþ
+tŒ?fÛ¦\P2Ü’­t¥¤–ð ‡—v@Ì3xxõþìú_æú ¿òñFÏ8}e2}qðªDª±;UÅVÚ«šZÃkð¨¤çît4«^MèÉ–†}¶s‡èÊúûG˜tÓÜËôÁùbg&«¥Ì,³i?{Œw³Õ’ßN¥h—åÊŠ+Y ïñ¼½;¸+‘öš›f2Sò1F1^Fã¹èØd$7E„Õb8G½’g¼ý‚ˆê§‘<Ò
+endstream endobj 219 0 obj <</Contents 220 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 423 0 R/T1_4 467 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 220 0 obj <</Filter/FlateDecode/Length 3747>>stream
+H‰¤WÛrÛHý•®yÙæVÄa_xË[âñd²5¹ìDµ[[ñÔ-Ñ67´¤Ht2ùû=@7ÉÖ…rÊ©TLŠÝ  ààå\$üo{+~~õ!·;ñó\ý7JÌoD'IªyC)Ò,ΒĈ¼T±ÑI&æ÷BŠhþ?>¡Ü‰'hi!tg¦³" eÄ|)äåüÃk>p9Ÿ…)m áy-Çu«L¨ÂŶÿ+ñrZC²µ%Ù³^Í×}Ho£NœÞù¨ˆ”–©°=Kñ/÷!Ž”´q"®d¤2©£™’ }Wô–FÎÿAÿ&§ZÇY1˜lÎZK†î;OX'gÞ!N~ÊW:.õˆÉO(JO(JìUèÒ%¬±ƒ®òiªœ”CUZ…—n5:£˜ŸÑãB{âNú=æÕû÷"PU˜XˆJù†!ª¥Ž
+û¤ª•7 Ùæ»$íq†\»‹Ãš/Œó¦êh•`#ÃX¡%<ð›÷¾*~ã~Kþ}‰?p‡žó>š•}€êO76 v?DÏ>ó˜`€â\Å8^j¿ƒ·ªb¨ø{ìÎÉB.¤¹õ®ó¹PÈëë-®èn:N
+¬ê¨º<6œPÎR”ËÍ•CÁ Çd±-»ª=­Ì‰:ºé„¼!:@…ë6¼£cüŽNÊôÌJ
+‘:Öª!]ÿ@ÉÍá*"E±×mž£ >vÚß ñγÖ/cTTzr¹—=±ìooƒÙÈŒcDzlŒ"<H¤™*ü›ÕÀ·ª°òõåß\CD㸯¶Òõ³ž%Õ{Qí¦šZê9Ò¸Þ~ããW’¿_E‚ëÚWª` JyÕòkÅ»œØkîÄØ´h豃¢g³,ò®«‘ÕCLÓý‹8®Í]1A–F®ÉiJT¤4š3³J¡Àù&;º~=Mâ\{÷ꄦµ½àL,÷Á™X>5Çœ Ž+àƒù@ ÞeAl4nz›ì06´{C?¸ZàYµˆ }¥Àp“T¾5¹°­·ä^Wk>HáqјÑ7þ©áúOŠ¼¨í™'ØbôržíÇhb¹ÑÄò‰¥cŒò“1bÚ’R ‡vá&«MñùsAù°^-";Ô§‰pœHÎUDGÄ?”,´qµhéñ°ô‚ Ž¯àˆ^6ìeŽþ®W­‹ms3Æë¨F j&ß‹Z‡\ÐA˜ÉaïÍt¶¸ÛíJûrÓÔŒ“˜!Ø¡ßñ‡­»ÈŽfЬCÑŽ«uçAź˜ <°¾zS!8‰¦hœI’#´}˜1UÙ“ËÀúHpÚchê4–³aUútýŸ8}jy<ì¨û×iºlËbÂv€_mŠ_ž¡ø6OÚ=R|M|þ""rEt
+¤3Rü\DTKðâ>‚)};ÍûíÀÓ³ÁŒamoÀ¥[_—}„ö;R+.OÌ– þ!'~Åþð€µMÈ%‹AY~Z‹œTÈ6ö3–=¦õßèÄ'ßF~¡€à-lòiQµÀ{~=iM!+·10¦Ú cAÛxrë‰|ÓÅ®ŸSŸXy>0ú_×-Ï.Í.ÌœK¹º¥è/ªOxTÓh˜Ù¬éuÇx0òº­c¾ÒÑÀ
+‚§~(*:ã
+Ñ(ý¾K±~'ÉÙØ~£¨vì‡
+I¦V•2TˆÃá.´ÎœVÖ
+yÛåØHè|R»çŽO-‡[ÎêÏÄÏRz!{Ù†™´åo4‡ÆeGýɼ ᦙtŸÐ‘Ub ²µ³£m†äÐÅAªh"¾˜;h†ü°q©¸orõàE¹)SDréºÚÌG”m/r|
+<:dLMiÊÉ|ƒåB@ŠdÂãO![X¢æòž 7ÂÅøÄέœºpn˜¹Œ])'²r+33Ðü
+ËÝrUlT-¾hܹª\IzwØË›æ®Ä€8ÔɨMYÊÌ]b H‘‚ï°Â;üÜUÅRhf„IßøMx ­“ÈÓ¶øxJªd±í›C•§WTlQµZ½òWéòö;Õc7ŸÂNYª¦ÆþøO¨æCÕü'À
+endstream endobj 221 0 obj <</Contents 222 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 222 0 obj <</Filter/FlateDecode/Length 5758>>stream
+H‰¬—oÛ8†¿
+ÿ”–¿DRÀa¤Í¶9¤i.1îp¸=,\ÛÉzáØ=ÛéÞ~û›¡8’i\×],kýZùðáåDÈøßöIüðîAŠ§øa¢~‘B‰É£¨K)+P‹Ê•NJ#|­J£¥“g‘‰|ò[|C5oHx¥™ÐUéL-ŠP•A1™‹ìjòp_¸šˆÿ
+SÛ÷¢Xx]‡R9¡$ .¶ ñO±—“þlplmqì‚Âü~8ÅfÈ4G-›9þ»‰;y€¹ÒY%¬ÃÏZü£ù¢ÌUfK)~Îrå2*“ø½Â§*ÿÏäo8á¿Ã”+­KÚ)›£³Å‰.`|ûÕì²"-H3~Õ_é²þêŠ?¨ $íÏy/–®a6¶UŸªåu(­ûI7]J¾>e—«n—ý`—û v›lÞå!»»Ã}†ô-n «Åü\àFnó*ÛáÃr³¹2¬®¥í—âäø»ÕbŠßîBá§îï?°ŒKæpbJTþÛö?¾óvÖ€æ}wÔÝCh•ÅÇyá²+˜Ôäê¾\Y}ÖóÛâ7¼š@&z[¥‚ꇰuYÝ«¸CÊ #Åq^Gº»¿z¸º}sÕ‡ÐÀ¶ñLiŽ£1ÄÏDŽ¤¤­*»ŒŒFËùZFF á0ƒ@÷·ïÒñ¦¬õwlQ3ÀÑ|jYª^óµxœºÓ¤§©p€åõ•˜
+ò¼4ÀÓ.(dð
+ÂÀ¥=|ÝíƒÑp1*ÁÅÉ .F&¸™àâd̉Ñ.Fñ­îŽ«†wÜ. ]îàr
+žÃ[
+ÂðgÏðfƨÄ''Þ™xcdâ“1'F#ÞyÄÌb« VÁ¨,nÒãM‹.­7йÐΊë·y4|h›w(Ê•ö M‡èKÉô«¢ÍaÛî‰"7²ÖÄ‘i+9¤q-jÇM ˆq§™XZ¦s JA¨$ŽÏš£Tœœ bd‚Š‘ *NÆœ bd®B*Sj£,K•«]ÿƒ×'ØðlµBªTTµÛ±ÒG±ÒUcP„•é°‚Üí°~+Vð$¬ÒBƒU
+2Ž•«m©X¯âÔ„+7XqrŠ“V¬ 9qZŠ“G°
++[ã+«
+Â0L)Y«âTbŠ“SŒLL121Åɘ£SŒ<Òo%¤ Ý#Nå \‡©{
+ÜO›­¸Üâno¦sü:þhŠO;|Ú7LVš}„|Ëd(¥IwBtĈe,Õ*Χûk*+
+—Iè…T^!‹à╶¡¶÷SÑg­Öše˧õs0B-®ÈI„¦5?‡Ð„!+mü­;$”Q‰PNN„22ÊÈD('cNŒF„2ò!¡EÓð`ªÚ*ó}î²[øw ›+ÞÀCºRŠ‹h@³Å.1h°Ìj“mæ½-Ûª‚'Ûjl²¦R
+DÞÝCìÝ>æ¾_[ÃÑÚjÕ÷õnA·Õ˜ÜK`R¸Á'Á”–ç˜R&ébõe7F%˜89ÁÄÈ#LœŒ91ÁÄÈ#0y„)ú˜¬YšªzñÖÇ®_¶¿ŠèUPcuö´Æ®Vø¿Y?‰ Ö×[€îF\Ìç[D„ì-2’ªëÀÅ´+]kO×wñåHÎËù®»ÐÆR«Jcü Ò†Ž´&1K=„ÖMÍ5Áv57{{) •r[Ñ’(‡?—m€·`ÚLæ²/»øMM
+c¸nEãùœü^{„¦c¾lÖ]¶hÎq)ÛWMÝ6ñ¥Ùf½Æ
+¼ª(95JVn%'§CÉÉéP²2äÄiéPròðPš– #MoUY¸mIßœÉxÞ^ÖëÅJ\¯‘– 2²}Ž}ï~¹Á^¿ê&êÃn¢ñmÙ¿EAC
+ÂpVéÑ nâŒQ‰3NNœ12qÆÈÄ'cNŒFœ1ò!gãLYXNG>=îçÍÍ/?]àÿ¼Ç&¢éL?-WK4 Ø燗ϟq{7ÛÔ/Fֺǔ֥ë09€ªúÓ¡‚äÑ’N€*-Ó9P¥ Tp¶Ç.· *F%¨89AÅÈ#TœŒ91AÅÈ#æe;÷r¼{‰4¼-–O¿~Š½lÓíþnG×s|X¬›˜ »Yîz7 ª¢Ö§czÓÑÝt,NG«2($#^Ü üK±ß´Åßø¶CÕ×PÌûÝÅ_Ÿ±äNÿ·Þlºzßm¸çüô:—å]9¶D›uû‚U4#}Ø»LW·Ð Ã:à[°Í ^6spÍ`uv?v÷²Ñ»¸eícå€klž7ÇæôÅÖ«VÙ;uƒ%/—7"·•á;uÜyšY'RÎ9W)Èø¹²,ƒ|­R­Úœ+NM犕›sÅÉé\qr:W¬ 9qZ:WœœÎÕ1Ε“¥ p®l0«é`á ú„ëÑ™¿:L¯I‚¹®âÙ…6AÕÿg½Ú–ÛFŽè¯àLÌ·<¤Ê–­ªµVKÙëJ%/0IÜH¤BR¾üýžî™$š’µyI¡1Ó3ÝçtŸVN ›ABå;W®#ˆ¬ãmQ“ ªÜ‡
+Ö€ Éì$˜‚s@d¦; ¶€ Á<Rd#år‘E* ô–õkB)ßæ¡Y€´íËj^u3Q?Y!‡…¬òL¬Ê±Áª~z®¢PÅy²|¬^‚,ïD@–2³¬›kYX•®ÈÒ/öÀ+TÒ\wæ<'œõ‹.…ÕTÀï`v`‰V{ØJ«¡Õ¢“£ñê8²ÕÂj“cu¿ý(v0/,>Î^¬^X¤¼àöe{
+æÜ@?>±ÖŸ9€
+ùg÷þÏ…Ñš¹»r™åŒ©™Ê«šá0³(QS4ÃÂþíjÛ.÷+3G$ËôØ$¡ñ0K…É´L§8Ï»Ïô+¤ÞtÚ!†¬)»|ÓOUåV¤<UÚ!-ý€áG)wÐЩá£j.6û7ÃW®úñ¿¤@ùµ9‹ZL=§„P†+bmKré‘zñŠÏÎTÊ??L¦æ(•‚"Y§óÞÿ*H8¶8>Â@Ý)[Qƒ ~P]¬Ž\m(w¼Ù¡»‹Åür~þf{­+òðWoÇ»œºv•*ø1Ŭ:éˆo§Í¸;·Ù¡»Å«ówóOÈݪGŽyÂ¥p7·ËÉ»j#Ô<DºZ_[õ±KÞð¯góä#«ºï‡6iÖWIÓ‘
+ w†;›N1Öå4_`§ýNí•’bÔÜô^¬
+^TÎ^²ÎÃ[ä²]}%àÒÙéwûÕ»©U’Æ{h¸`ý·ÝS v„òY/Á,j6Ч*Ä…¥-òÍCÕ°m‡$Ž«@· r§ 0€êƒ$ðå ®cŽ ÍsÚå
+`iUd¨ XÉ©ÒxÔ" ÃMù¹Q¤…bJfOCÑ ôÙìi(™= E³£¡dö4”Ì#eXY‘}ªDвnPxÜÞ&;¢ÂŠØv³¦p7wwÔ]~²¾q½˜þK]­: |ü ¸««-ôwÎA(
+,Cw¹¡¯õš—,÷Äh{ÿƒkÝ×.òÍß¹Jl†{êhø³]°÷¨fï'”“g6|fKgÖåѽ{úŽHåÑt]ñY|S•<E¾á«°2ßsà›dö|Ìo‚9ðM2{¾ æÀ7Á|\ìtß÷²\fÒ»Ëé§ÔYr±m¯
+ú`Ýë–²ˆ+ƒÞäUÜúláÀµ>©/m°Õ¶û ý¾i÷·ôÝÒ³mò$ñŠÈþ¶RæGüñ½Ð&]áü2Ï_
+ ¡Ðb{¯ê¾ÂnÛõ‰Öʈnv‡5h…Âó œœß ÏO.DgÔCÉBÀõ"ý$äMVþ$äñ¥
+ò@_Uâ¼³Ö³a „°˜Ì˜N‚¹€c­|V“¹è7· ðhµ§“´Ú‰ÌÈ÷`u`›°Ú(-ƒÝ=ZØ(,'s|ôš˜­öd•VWÀ}gÅ=1T–6bî{¢ÛciTyáØM Ï ¬&‚g5ýŠ£?
+endstream endobj 223 0 obj <</Contents 224 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 484 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 224 0 obj <</Filter/FlateDecode/Length 6271>>stream
+H‰¤WmoÛ8þ+Ä~’>H+¾Sû­I…4 4M÷ŠC»X¸Žœx/q²¶Û½þû›Šm™v›CQYÑóúð™áÙ”Uôo}Ç~½¸©Ø݆ý:åVŒ³é‚ÕeUiA j¦MiªJ2[óRŠÊ°é#ËX>ý‹vp¿£‚(š3¡K#kV8]:.Ùô–eÍôæ’64Sö7“µ*A¹u`EÁváJn¯@9[·ì#[±³iì ê
+uÁÌ?».z•¢ò>~òv§7`"ç"ÓLü­Ù¿ü‡2ç™*+ö9˹ÉD^ð¬ÂïßtþÇôwtø=¸¬…(ë]–G½EGwH»÷¼ËŠ.!^¿ŽõsQÖ'3"íCú€¡J}Î#[¢oTo«~™)¯eß”qP€›!$[ÿH•õPe;ªr Ä¡Èò"wÙõ5ÖÂWX@S³oøÛb!×¹Î6ø²|Z±œË ²«Bù+61­{hgøuÓ2Ž¿b¨ç§ð~zï:ŠoŠüä€#ekr”Þgµ‹œ…$”:¯áø\‹:{suÆ&ÍÅåÍ´™€+`·ù½9Ÿ22ŽFeT3JNm´ñÉÁ*ö&¥?ƒÉ)˜Ù}ΫlI©°d]d¹:„Œßfw¸¢e˼°~>03U¶BÑ6³/ð·Ê¾çBdl‹+ïý®7yQgW¹ÌÎ
+ âÞ>æ…ÂE:{Ê áßúÕÒ/¦%3²ö•Œl¾âsNVç-
+6 THŸЃ5}}~Z‘{‘þÙžÚ À¢£/—Xà›ÜtÉhPÖ/x >À|Ö°.=è ù9¢¿|¢rPÁyækEUÑ\»š@Q*ÁY!
+½Sº£Y¤è„L˜#eûæ&¯®.š›Ö•p2‚M^«¾ 6Òr46èAvÈ¡–§‚¡ \+Æ&Iá±— CîÀÒeÏ-›­nÙ¨Ä ¬l"¦:€Nõ@å“™mAÏ5=Ws|¶ÔQú#)5´1 Õâ¸u*^3jñ^Í(Ê›öq¶Ú.sèóM2¼¡›ïéD`{Mx3ÇV½|~\¡ö("%Té¤
+F}Ë
+½å;aê5H–x{£ÏPvüÙàø!ðšïyC¢1=E¼£¡(Ćû
+¸]« šÀ3ÚE<ãl¿jÌ3ÊÚü L½ÕÁ¯Kæ á×Ù9? TêÆG>À/!ðK‰;ø%Ä~ q€_JÜ•ø%Äcø‰~Ǹ Ô3ÒÙlþ@ËÓbíK!àDöØ®ñÖÙCKó®EeçÒa]ôó{ÁK+küÁ;‘Ôâ]î²oãvýð4»
+g2UÔâaswbet_ªü1­ ÉtLÑ7(¨ÁCbp 0{×&ȃT?ŒÝ¥éäuPŽ®7^Ú¨ªájvþ´º]Òt¸¢q?dk§n»V¬9`%¾
+±/pÙÅÏë–¾·«-ý½\°í=¾´ƒE5XT¦?À'ܘ`ì<·~º?ä¦ü4ägYWýØEfÁ½%ùÁüa˶O$ø§²½–øK¹Ó±B‰±”àщª¡ˆµ8$åNay#jï
+Ì¥a¶ì
+°¬ÅÓY¾~…lBզ׷èG> z£æÆa‰]8ÑÜNx-{^ì´nîxlGáÈsÌP¡±9R¶oîzÒÜ4WçMdUÓ£41þ|p¤¤:tÉrˆM
+¨OÅ&yÂêY›¼ººØ ÌJ¤Óÿ³l^ËÑÈjšÂ{;ò”!º†{¥›$…#¼BœRÃÿžK—=·l¶ºeNäï¬cª¥çU…g²Ÿï&-²Ð‚žkz®æøláhFØÆ–¦öD))ÞñðãÕŒ¢¼ig«íç“ù&éÔcÝ8°×H«›ù~–Ï4ƒö("íÅDñ¨ #ëÿã¼êzÛÖ‘è_Ñ£ü`C$E‰ºomj¤Y Ù^'Aqq/°p]5õ"qS+¶ÿ~Ï I‰²<ÎÇ‹£hÄÏ™Ãïf’ÑÙÀf}¿}bIÿ=ê›+ô¯äè8&;8EϲQ$¿}r܆¼.ïf’„Óå]·½Ûµ2¥ó‚K¿÷Z“óÒ XE’H&0õEµö?~ÔMÅ7Ç`N^»Ð
+à¥'9.¬6TÏÃbCóBrd¡„ÅSÔplåÕAÂÙ×CöOMÓ\X}Ì<,eh’y«ðµ×TH›kÄV¡ü”ëÛT?v%U̵[ð˜JO%W1ί ìø”è¹÷eœP±”›¦£W‘²ºÉo—Ùjy~q}³\q¾;£?gËO7¾¢ÒmÕ®Od`0Aªþ²ºá™ë;UëuÜÍjÞ€Îfšî(aïÖwôE›mgsç?¢Ÿ–[™/uˆÐÚ: pД'úò»_õ‘Ôájfò÷sê¥ÏñôZA•ùè‹ê¿6þcþdÍÑÖï}°ÙpÔ–^tßÈ¿¾§ ìùíãï.q¿Îná':C“Oñ/àÄ@¶l8%Y¼ùO˜ùëÁš…Ó À—Ž„ÿóç‚cZøš”ʺ†i°(Á¾¹^ÐÉ“v~ØîÛ 5s‹#¬ó?à$#±%òWȾÎçØÏùgzŠ˜›ÿG¨jêhzTα€uÉ {¶þƒMEÂ&Ä¡ÆÙó5NgcÞ¨¦ÄŸgçoQ¹Aßf®Â”“]B õÐ[}Îv±ÔŽì?¹æØÓî¾6>½›©
+ÕhóãålNŸÊ©:Bü?IŒJ3Ú•Ûë7á½ìÂW{ŒãÌB÷a ¯8±qü¥^ ÑÈWqíÓjy½¼:[&AµÑ¤d1*‚7äæœÊM—z‘DaLŸËM!ùšä¶zwu¾…„—lo÷–ÔØËÉÔš"I -Õ3ô ÌYÕÓˆäï0½¿ó‹evÃúò{f\þØfëÝ×l é‘ó+j!%_á(
+îiZS‡ò\¾ÌÒÑ&¼›I–×íÃzGf™o:1=öiøD3ULû
+Õõh
+Uquu?„2­“!Ô ¡E‡Pu0„¸šŠ.nºÆ'¨t1„êKQçÌ<Þˆf
+|3¿Žèƒ6únàЯ#úÞa
+? &jªK…FÃ&Á¯îY„_2øE³‡_2ø%s€_43ü’5À/™ÀÏÝJÑZºº%ø©o-ûë
+|â;çËÖ÷ Æû¹2~¦2>ˆñé kç9˜M9f~Šœ-ræbÆȉf¤u9“ÛfÒ³MiSd!L“3aŠ,„)²¦Éù¥YSäNª8†5] @a£g “6ƒéëëïq‹H\ Wˆ/¿ä<I4àË–†#Ÿ8âãð#.ÅÓÅykŠäêdЧÃSè—¿÷[ù– “µØ–—`Ê[s¦¼N¦Ñâ3=®Y`Òä “" LŠ,0ir~)E˜¹“/qõ&®A¡Àt¿Øs¼¹ÐVÜ^RV½AùA˜œãÇ°)Ñp»Æÿì(%Ò¦µ }Äk7-ÌU¢¹ÄI ´õ©}'s!høa‹ÌkøåÍ<ˆ_^§‡Ÿ›¦²WÌA,UBf¿Ò€<²“ÕxO©Š…Û~ñXU:K‚«ÊŒ´R9\HÔii¯‚|¿Øú!+Åñ‚VŠå8ô‹÷^á¹ù¸WýUïÏå&×nŽœ9ÅÍŽZjó´ÕÄ“'ØeÂ57žBþ2Ïy†qàvlŸ
+endstream endobj 225 0 obj <</Contents 226 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 484 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 226 0 obj <</Filter/FlateDecode/Length 5807>>stream
+H‰¬WkoÛFý+ƒ~%ËypýÛ„ãâzeuƒE²X¨2m«kË©¤¶›¿÷Þáð!j¤Ø[¡G¼œûžsÏœÍYIÿ6ì‡ËÛ’=lÙsñï’ 6¿g¾(ËJÒžU¦0e©˜õ¢P²4lþÌ8Ëæ¿Òv”°EK&«Â(ÏrWN(6¿c¼žß^цzÎ~cÊë”[V4l—®†‰”³MÃ>²5;›½AÝR£î<šùsìbPÙú(Ëàã§`w~ &2!yÅ´Á¿žý#¼(2ÁuQ²Ï<†Ë,¼Ä÷WUö¯ùßÐῃ˕”…qË꨷èè8´{Ï;ž· ú«¡~! 2#Ê0T0TêÏÙÀ–ôàîlù·™
+ZöMI=
+ú¦Éúo©rÕWÙNª<lľÈê2süæë ák, ñìüÛ`!7YÅ·¸X½¬Y&‡ìêXþ’Í@Lß=5 |»m˜À¿²¯ë§ ~’wJ £¢¨5£€6ÒÖ“Ÿ´î}­ÜÀW_d¹å‚žž½¿>‡*éùEÏêË+|};¯g覱pÆÐ4­ú ª­dÈ7• ÂRv†•ŸÑð"Tü2µÚBÀ ~JþœIÁ›-ZÅ—‹7l•åž~³m›É× ÙeŠ³_à§á_3Yr¶ÃiÏ{x-ø5$ô,Ë ˆ^Ø®•\Ó›<%¿ùG’¿lØØ
+p‰u¸k6 :¶óèºÑl¢zò®Ýñ}È5O’$*ç©>…–‚å*ã‘>ñ‹Õ¦YîV/Y^At–ÿ˜IÎ@”º
+ûü«ÑÑ.Û¬+Ûe—ÂTˆŽxaŠªM<ÿ ¾D¤QtEt‡Š(l®î)ûÄû¤ùa21†M–«=9–$|ñš8$˜¶U†€NÇÁâû9S
+yÄAãTáÊV"KÜM" ƒÒ‰ÁÅX*—i© NˆŽ™cBdZyqJÜFœŠk̉ ›ù"52yÕ_«±«mhˆØÍv»xh
+Ð3dÑrœÖÚ)>¶bÍ+Cþ­p¶™^»8I¾õô^C:ö¬|âõ¿<-Ö‹b†4¼XÀTZ}MLao:&è=ìgcÒc¡6n|`òÄÞÖçɨ‚›¦5Iq«9!=0L¦w8í%ÝßJ˜å«Ô&óîå>Üçñšó'2M‡ŠŸfÏ#n_mÙUͶ¨îqñôDŠ~. £à˦¡÷ÍzG¿W÷l÷ˆ‹–êbº@›î|^c"‡9Ïl PqÓ„_ ùZø²#¾dÜ[‘,p°۽ໟ`’îͼïŠÑDŠ%ttš”?ˆ+•ì‹tP(œÆv w¨b³Ôd*J¥£{î~ã%6¾Ó*‡—¹á©” â1eá!—R[À×½®
+¢r±}JPÂösÍ2ï$¿¨óY}yu;¯g=:<0ÀåˆëÊíZAÓZìYXo6Á6Ë<4_<€¼a+b+ø›&GÖð~—asÃO‹w6pzGŸ=Ò–÷¤òú,Ë-^²Úh׊ÂÛÎÝåG’“x1~@Øn~?Ö…'ëWä0~Nû›
+h×m ö3ùQg¹âE<Ò¢rž*Sh`ã9'ÈÅjÓ,a~ ^ŒðGŒ¸›.yt -êP}Ø3Êv‰Ç¥
+ë(Ü¡:
+‹@¿§ìS›9ðü2ü#þø‰ðX’‹Vöª¤±]ÈÉ‘:œù9"¢Úk"µ•=:VîðžT€-í `G´uóç録AËh¹†¼áÌXTh艛p"hÙóbÄ „C;@A!cG uà~Ð)Û7w3«oëëóz`U&F£D\_))'5œ±ÞŒD^*6%ÖP×ÄÚìÝõå(0«
+/ÿß²-G#ótèì¨S†žû ®œš$…“~…q='Äýš)Ç¿4l±¾c}ŸÈ_i1y怆“Áµf "å==7ô\/ Iq õx<Ú·©=QÊ j&QÞ6Ï‹õn…4j¹M†G:«©ÎÊnØEÃa»ÜÀŸÕº€öADZ¼u‰o¨ ëAÍ$¢ó \D–‹§ÕŽÐ×}Lµ¯ìѱMRp¬=µ¸]pÄ—^_® f
+ß“TÀLtIéÿX¯šæ¶‘úWx$«V*õ›=·ÄQ%>ØIÉ™JMe.ŠÃÄšŠåŒ¤ìNþý> »ù!
+²ãÝ‹D l ¼F¿§¡s­¼XûÀÓN0„ndçt—hFÆ’-e,™§‚ÌÔ½2i&³ÉåÑä±£W‚v¿_m1ÁVA3Í@Æ(tÖ6W,iÀz—µô­ &¿æôš94^òM~ y¸N!ýAÀ^‚çÞT33‹DKàüa×öü»C¤%¢Ÿº\¨g€.9]Ú‚ÁȘëx+Áša%™¬s†•`ΰ’Ì”“`Ë°ÌSXi¾ìÐi§èf`Eâ³Z¸¶‡öŸJ›ò0»¤‹¢Hø¡öÇŽtm„DQYã†O Ñ‘`£ç
+ý;ÚjGèñ@!ôtÞ
+"À©ɲ}å’!œk†“dNpÌN‚9ÃI2SN‚-ÃI0Ÿ˜R–á>g¦”Ó¤‰:8ÕåúÇ>·#©4ŸâÝì¡<ëÑ<rýPAËëzº…Í€êÆQ“
+*¿(¦š²}–Ružƒ¥DÀ}5¹ìL¯NX•næ3ýâ5a±ò 1ÏlvÄ!‹3…ÕÚ8
+–ÍƒÕ ¨Òêf1Üy+›q,¬6«ûņÙ d åÂâi×àÍ>sH}Aö¾Ï¾f^:!9ÒêSæ~q:jfªºBÍgbÁ…«Ó³ bÕb;8©Q&6ìdùAõ”׈ž{O8ð©é°†y5kJ?U±\­Þ®Š*4º¼¤¿®_ñ×Å‹÷—o¯ã‰n›Ô•‹aqõØs ˜&ÐIaI¹ò®òåò†î}¥ÐX3Uî)â‡|ýö¶ØðåAû–¥ßÿ*\=ŸðÓ Â08ðkw¼ä »¼~YÍ< Õ Ú›øsV5åëlàÿw¤íŽŒn´ˆ’æütΔåp8æ.ôWÞz ø¹Øì1þŠx¦ÈÃC±aØüÆV[îð{}(è ÄQ5²W”½*‹v·{ر~ ýßlúÔ¶ÛN„2q nfi73…!êã–>·‡ööÐ~žKìWåŽ)×D¨Ì-FÖLÏ©9´îÕf‡u®
+ f8Ý*èë9Å:ØþàŽfËÔÆ9Ö;(Öº\q5øñŠ"/Q·÷ËU/`1e­m&ɯo"z9ÚEc9Nƒ9Ñtq04Q±3¢pª…pìì8Ü»Õòfy}±DÕ°clå¨fD¯Ÿœ]ôr.;maèÃàÇÙ*rrÚÑÈ×â8ÚêÅõëå($ ¬.¦¢{ü©±—³©;H Œð€Pf‹s¤Çãˆäï8½åå²xϳÿge’¼ëíç¢ê‰ú-¼RhÀ(€®²`ÕÒEð…?wü¹½¥Ï¶›¸|" È„îaê‰{=–.£t´ö2Mò¦½_oRB·{1;öéNøTiªŒò"1×îowøÚ|ÇPߎtÖß…ÝìÏ·UOèŸÒ“àìešÐÅnsÀµ÷msà ùçp²Ø: ú¤É2ŽÉÎaÓMc¤KNóýñËÝŠn&Éan‚§ì¡8ZŠR½‚N÷ɨY“zéA¯@piVYªñIVøˆlsd´8D,r:3ÈèckµÅ¹HFh5ÜzQ`4š
+8X1-®nÉ.iu„¼Ø¬©µ_šÎC–«CÍ;©è:Ö깧îE¹‹õð|Å]ñsïË)âöiŒbÜáºkJ]þg¡ÑåÅÍëâjyõr¹ºysù®øýÝ«ï—U>Ã}S\—ã*{6C¥ÎQIEØòN7{p₉Ö}¥®ñjæKúsýæ¶ØЉâ—è£å7·°0ŠOøYCà 8Ћw¼æ þVåu¥Ê—Õ¬.g8ã¯?ÐSqx(Þ\óŸ1›qé+!ÕÌCòÑÆŠ ÅûŒ™sh‹ Z{ƒ“Žµý¶?±JÙñæ9­ïÅ-}¯»ýr6ü‹“ÛÃ]›73ïw³HU{Ànf€°HgzNÕ£-½ÚìÚ[¨ˆjæàÚ—¿U 24žpJKöè‘sÃ9û®mæ”Ê ÆwÍ¢G…ê‰Îk@Y%J\þ‰meÐ {¯ºÂ5§z¯0ÞB}äìc“îæ- œ4œSÕx ÃÉ?*B¦’’] ˜jøeö¡.W ~¼¢z/÷ËÕP )ÓŒ¶ð%4ÝDôr´‹‘Rqæä868:(žîZÇΎý[-o–×ËAT:~úÎ.z9—†¸¡Î§8†ÇõcÙ%„cgÇáV/®_Ró Þ\P®î¯§Æ^Φ
+Ã#i0º‡uõ´’óeœŽ6ÝL²¼iï×["h¶¼Ý‹é±Ow§Å6&‰½¢ b»Ã×æ;æã–¼2²šS—‘zB•žDn&]옗‚“ò”ÿ9.ÜáOß8$­_œC§…!ôè´šá/w+º™äö‚øí~BÛÊX”ÊOqFš5)—ô
+SäZÍyò:~DZ62PB&”ÙŒY¬(°lUÜÞóÿ÷Däíî[zšñâoø'?}ArÖ3óÌq<®—A‡ÙDÓàì½OäÿëQýHÅë@Ï’™¸6Ý ’¹‰“G0ËÌ^2[`BösÌ9iÁ|BåÕ½Êk¦*Ϥۄ5AÆ!¡Ýï×_[ Bå
+endstream endobj 227 0 obj <</Contents 228 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 228 0 obj <</Filter/FlateDecode/Length 4670>>stream
+H‰¤W[oÛ8þ+|”¬Š7‘š·´12]´Ù4q§XL×QR §µ5ÛÉ¿ßïð"É–é¤ò\?žËë+Ýßæ–½:»*Ùí–½Zð?JÆÙâ†ÕEYjáÔLWEU–’™šR”[ܳŒå‹?Ý îo”¸A¤º¨dÍfV–K¶¸fÙ|qõÖ]˜/Øw&kU€¹±¢p]Ø‚WŒ—`Î6 ûÄÖìõb¬ ñŠxÏ¢˜»*z–AGQz÷rW‘s‘i¦*ú­Ùo~£Èy¦Š’}Îr^e"Ÿñ¬¤}N+ÿwñ/RøTÖB•íU–Gµ%Ewènïi—Í‚C<=æÏEQ?éiÒ•ês>’%jh£zYõËDy.û¢„Ü &™ú9QÖC”Í$Êc A–g¹Í..(Î0_Q
+ä&×Ù–íÚå\fð®Šá/Ù%ÈîÜ]³¤ÝmÃ8ýŠ!þAO1BºÓ³,j«š0R¦vzºõ «¶#]áƒÜËLÒ‡ýöÐ^3'§d3Q!Øât|Lísž‘A8\¤H¸¿ËU¼›ÏLÆýW³|V[‘-Îß±§'‹9»œø8¿Zx~d–Ìâuä̽óëJWÞù„’hSeTa]€È¦œ'³¯B»Í+$†¼wŸ ž5p{•Ñæò䆵ÐÆýÏèÓ¸“kPº\fì þ­²Ç\ÀâŽ~uw~Å6ÏΫ×ùLƒôÀº@9w;3òÑèŸ"½]ßÐÞC>SˆþŒ+¨SgñÚ™?÷àÎ0ïù‘ã óÖ¸w9äz•×ÄiÊ&.¦@ذщ(lÓ¸Íf3»j®:¨pB ä hAŒk[;ˆJpŠ4aé~?m7ͪkˆÁ:7Ù/¹È¼/„*3ç“Å(ËäT†àJÓ—–¼Ò”ß_­
+aÓþ Ub®C…÷P±‡°ÂÆ3Øcö{æƒV!huŒ·AMWP5œ*É sñºžÊ´å$M8$YÊÂö’/N(É_:4¹å{ÒcóËq®çJì¨@¯ùç•ð\ö´ÈØ(=rËÇrT]è£ùѽ}^%Ä9fûâ..çWóó7óqö‡8Ñ •…<ž“KsLÊcÆ ¼bü§l“<!xM¤]žœŸífdQ‹6Ïå¨e5ÞäHŽ|J•µ¡ª‰©HÇp‚×·ó‹si³o [®¯Ù¤&ýWš„Mµ y[H`,
+¸l\Vsßû®Wôm(WRVàm˜š'Béì­&ý‚g3±òª¹_®»–2áj›4oh vyjCuhß°SªèÛÕýö[G¹™û`‘5[½Eüäb"ݳ™XôfÓvíjy×v.ã?ŽS‹ª DþFwe:Çà©Ð!ýöÆ=§“<.Ïfb§Í¶ÛövݤÁ˜òW̓î;ÑšøKŒ‚…¤H)VPY’óܦÜìeå*Ç@F†õý"¬Q‚ÜISq¶ºwû÷°Í1dwa5s—﨡
+«G}]RU…²#Z)°|BAAé+EI[ŽÊ Л¤
+•¾,ÐNS¶K%DÛ4s…Å&I&‹´hq‚<m•eÕ'¿Ø)Œ[ú˜šÐ”óï Ív»¼m¹*Pµ‘.xUhméu\»³ÔÆ¡í±ZàpÌ©µŒêBP3-ý!» ¸Àhý‡€=ÏUvEýN*à ÒâŸÍŠDw¤Ä>*Élû,àg½xAÈ>ð‚
+xØ"âkµ ­5B+EÐJ#´ä­™lJÐ"´ä)´„+xˆ¶æTRÐ*9ÕטnPÖ]ów.dÖÍÞR±`C^ø[ aÁr%µuªi( Ð…åõpF(¡ A’„ ž *«ž[€SIpš&¹  xœ‚ƒ^§ ä0œt CËÁóRŒá”¢8%ÉN)r€SŠà”$æ-À)E>
+X¬€ÚÀöYè
+þz º‚ºLþ1®“?@墻]àK\æˆBÉZֆ˛‰ÛBjÉ0£Ûº©Û¶k^!xcÏFd'nKÛÃeIÍÿÈe÷‰ËÓ¨ÁKå sB*.°Þ ÖWnšôÓ©Û‡ÈÃåðøähx*ý‹«+˜í^9DWáÑa˜;3ÔèíΆޕVÆõð_IÖ9/Ñzà%+Eî‹|f2î¿ÞRmE¶8Ç>^œž,æìr~uñïó«¹Oc¥Éß&
+¥!êˆúRÕOf ™}ÍmÖn©¥qÃÔ}.8úhRƒ6—· 7¬¥îѧq'× t¨-ì þ­h
+CNéèàWwçWlóì<çÙë|Ve3J gŸhɺÖÒõÚ{@ÞÈ6T !i¤;xÛËŽ-™Wš¶ßQ—ÍþÂaŸøœÎ?rôUN[RmE¬¼]´Z: ¾xõRÀ_"«UCT÷ÿ ržÛ¼;böHgWÎPç¡o¤ô]Óa¦u–ø°Ä>ÀDZ
+ŸÃ8CÆ{Ÿx$oÄA{}ƒƒP¡Àj†y±òy÷´Ý4«®…:Q0Ù/9®S¢ªÌkw[çíØ]¼ZÈ?Ê0—¦Ç -¹Å3V€Š²¨3* ý3”Š`ÃŽ÷°³‡`ÇkE}Ï.3t¿NEn‡ÚðYWT…‡KéÓ m×'¶ŽÏô€þ£ÂèX0$Ñ »8ɳK&·|OŸ?‹ùe”ÿ™;*ÐSýy%<—=-|¦ˆr,ËAr†ËŽêû€ƒâ³}qHóó7ó‘T!y!z¡#Æ ŒsLÊcÆaÆ(Û¤ šø”m’'¤¯‰´Ë“ó³ÃŒ¤ÚøÃæ¹µ¬ÆƒÉ‘O ¢0 b*Ò1œàõí<¤¸Ç\"³5l¹¾fNø¯4 ›êÐ)*-ȸ8~4”ºnÜwã¾ë}7pôRVàm˜š'B9LC;Jx6+¯šûåºkiüXm“æ9žzÊS*œû†ReÚ®6øi¿!;®w†›ïL TÁ‘Eüäb"ݳ™XôfÓvíjy×v®º<ŽS‹B×`~£»2ƒcðT5§ŒÛ'\þýépy6ã8m¶Ý¶·ë& Æ”¿ÀÒë¾­‰¿ÄdÅ40éÙv‰OÊ<´µ¤QÈþ šÊã
+R_ç=QÒùÑ‘¢†A!Iö“@ŠZý94óI2Yœ E‹äCl5 ±69Ä*¼BÝcâ= Ùn—· ’ †ÇGjñûVÛã#¬¬åx„åq‚µ¦Ÿ`a‡Ö£ Ö&'X~p‚UŠBð,àg½xAÈá VIüDÜõ¼‡V‚¡•"h%ÈZ r„VŠL6%hZ òZÂ<D[s¡ÓÐ’%|קT…‡u×ü ™u³·T,XÀ…XÖBEXüŸôªin‡¡EGé`¯ø!‘ê-mÒ¤3­ÛM“ét¶×Qu;µ•™Í¿ßÔ‡e&Ùöâ0À#ðdZ–!Te¢Ã—œ[Qõ{¤Æ¬ H‚:k€ª*;kN9ÁiZä”E\_' ß“?$'IÝ%DÃJyH*¤%I¯ìÑQÆc⢠põÊŒm©
+Z±CÈ@Ûc5¦móáÍKäqÙ
+ôJt]ˆèw‘Þf&m@M‰œÜe2?ž‰t—Í@„Ð/–7×IÃs%}Hv5Óö5¾ã§Éwük¨ƒ¡¯´¼í–UÎØäâ5]~–Ùôô ­’v“ÍP’Ò¿Ægþw‹½%ŽGój§Úô¼î¹;ÍQ–z.Q'}Z¶É2¹¦Ž¶ÄÕšŸäÅø>ìK½Å’;Ä2Ù¬V,Ú‚ê]ñªYßÐlÐÒ¶ÚO'‹L"ô\éB´ïþjÙÖÉýv³ª¯zãó¾~òí
+wOQØŠî9óÉ9ÅŸ.{Ülëø;€¢ñ
+G%8µ7=›ÄÍç]ð*eºlÓR á<å)Í™w¨ý†[àÀ#Dˆhà/cðÓRïC[à+
+;œ<,ŽŠ\µá½>7xã|ŽZœõ“£Â(¢“ã_§×vópŸ,–wõpšëi¸Â‹&éDé¬ì<C„-¨Ã„s4ÏÏ!:rÛš¸ùiËs^½^<”² ºü‡:+Oy(ÁXuw Š¨~ÖAŸËéad*ß?ì|¹¾©‡–Ô»ÿØ1¶ò¤cí¼÷¬ Bôlê:ŽOËý#Ùà˜úrø˜)Kä~¹ŽÏ”ζø„ÉÒ% | ¸¶(Ä:½æ_·^¯è·¦"Ö?JEÕ¿Gªy‰»ådºU]9ù¹¾[®Û†øÞjõŽmª6µ/S#¿®êÝŠ°ßÜ;ÛõˆNþBK—£Ç'^RgääxgfâÒ›mÓ6«åϦåŠÿ8qJ
+ueèÙ÷âÅW=§,ˆ­z¡dìÉxÉo;"–JÍãÊÊx‚1±Ò&*Ó‚™eTl˜KÇÄÁãˆx:*ÛÕ£i9
+s¡ÊQBmHåLqè&»å 1ð¾GbI¨JnŽÓ
+­Â>E’4¬6àìÔ€sð®â“rý|³g‡ÝÀÝJçÆ ŽƒB¡Ú¡±2S"¡¦|”¯'Ìñ0ÑJ0,"¡šé¯Mð¯[¯ˆµDòú‘¶C¡¶ ìŹèó‰r ҈؃4&õ ˆ¤Y
+¼‰þè²H¿fAN2N%ïÖ¢)þ¨W¤ÝŽHŸ'’'¿\‡ÇˆF1®01±K^Tê’Sòb2Ÿ¼¨Ø%/&öÉ‹‰Tn;ȯ(ÄÙ39=ÒÐ81U-0REðY£S)2 äÆájGѾX\Q>‰–}%FÌ¥V¾©pÏÞX\ìÝoêᢠ.àJh™›m=*dQc\S†pv}¼ÇHDì1“zŒDÄŒ‘ˆ,`$&ö‰ˆF"âaº_Ìmn§·ƒHQuåÛAd‹gÊ´‚jñØ#•^œckƒ×œò>dˆþìˆJªÈX».%dY¦;Ê TWJŽ:TÉ™M¾?ê“ŽS%Nˆ¦¾4sóDê Jq¥J’
+iÇÊma Å;ˆñGµ=p"Ê’°n;±–CMª˜*ÄEoo•¡×fÌET!ãbâÅ`Àr¨  *Œ*€ÃPëᵦ±æqpk5ô9à9¢}HÜ+{´«çhJ˜Š¤æpP›öØI®xþ¡•aÎÊ•kS±)^÷¶…4ÔªjNôC¸_‹>XY™ž-^'o>.Þ¾£¯§—çG¼ú¸H.Οߞœ'xç'_ž|¾H:Ú>r‡Ztõ”O¢*©Þú{\à-é-½J z4Üe¢bŠ„§8Ã觵¼¼Nž{éC²«™U­ñ]8M¾3¥z¤·˜´¼í–UÎØäâ5¹‘´›lV⹯³Ì¦§_†ò­›vq_ôÿí޵Ɋ¥tâ5TÜ]nÂÖY¶M·Ç_6lçïÄKøgÆ;ùŠ~Ñ 2•„ïÐðtåï´ØŒNDÙ‚ |¡
+—QXÎ 
+Xù T¸tU±ÙÖ+¾S{&}•
+9B¢Ro6ä[dÙÊt©¦¥(ñ h˜xM6̬ßp—
+endstream endobj 229 0 obj <</Contents 230 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R/T1_5 433 0 R/T3_0 438 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 230 0 obj <</Filter/FlateDecode/Length 5376>>stream
+H‰¤WoÛFý*û'y€XîrwIGu|hWV[’ÃA‘iG%§¢Ò&ß¾of—¿D­çPTf8œ™™·of^,DÊÿíÄW·©x¨Å ù¿TH±¸e’¦Fñ¥06±iš‰¼”I¦R+‰xñ‘5¤ÓH¡A¢•P&±Y)&…I
+™‰Åˆ¦‹ÛkV˜.Ä"+uãy/êªH¤2…q±«Äïb+^,ú§!ÛJ“íIãæ¯áIF•º3¾u~·pK¡-ý-ÅoîEËH'©xÅÒF*žÈ(¥÷’žLüßÅ¿éÀ¿àÈF©Ä푳“§¥ƒÈÚ§‹&>!ξéÛ—*)Ïf$Ë82G¥ú]Üó¥JœF·¾Êïs嬺R¶pÓ…”šDª³UFEîã°«qvçÑÍ •ÑkªŸ-ÅŸô·Š'*ÚÅ&ªéaý´ýšJ+“¼ƒa$賉ÈÚJ3: ³8:!ª‰ce€›ŠR1mT=VKzSWBÒ_Õ?t @Á²aòçaµéVáV5G¸¹ „Ïkñãëxb£)ð¿˜ÎIÑÅÀû¹œŒü;ˆD²L“ܶ.t–˜“
+¼¹fD§4ů>¼§QðéóN\§néíýÓnC¥^‹C¸ÅTæþ Ÿ«šÄ{W%rlxþHÉ}*&2‘CÄKxúy]£ ¹/(’‹Á¢Ãâ{‚¦§‚eèµ`î“2)±&yÌ
+à…u=îR-¹ýŹ^b»€ô
+)+î<­³4¢è)3A• y#Æ°–ö•…”IZvbŸæVÙÓ[H{T7ú°Tß[·´¡¤K­¥xgÔ`QÇÒNÕ3’liu”D“¿±nyµÖÀÌÁº€€³)‡p[`hDÿÿ’-»ÝuL²Î"yÔ”ÿ–—[ŒŒàºÛ»þN$‘AÝáÌJ4tFªé³Á6D Áª×Z—gw!}dË”nφ4ýòéq¹¥va©] Ö¼T ¼>'&§Ž `¤»Œ+ï`¡ ÷ð
+µadwb# &Š“ÊþÐé
+tÑ Í¸!qc: ö÷;X1n¡%a‘g®ÉsÛ«|_"QoÂêE4/Öôɨ]r$<ÚÒÏÍ¢‚¥f‰&E_èqMýzóy#¶Ÿ7ïÉMµO÷¼hl+žqyÎ"‡æXUôö‘ôjAï–|¢ú‰w¶·ÜóÁï¸-Óâ!ÙŸôUµ¯bL¢㋤×Þòv¦A¢šþÛòñs%Öµ
+3«(ëF:XRüFæEŠÕ†ßohê•tºGÿ4aåGšüÓ=‚Ó¹æ†àý`6î{1à&bƒSGÔ¥AóB•Ò¬ÌR‰½í-$ÃROŠ fž8Ó YP¬‰°msH색=NmcdÐVJÝD¶7ðvVÕõòáoò«ï·m$ÿ+z´°Nó[:
+lÓ`[ MÛ`‹»ÕV\l¹µEóßÉáH#Kã¸Ù}»—Ä6‡äpø‘üØ@#‚÷„ÛôA¾w%£þ0b
+ÌEYh•|@ä&ˆ! ÀÜ¡•"3J†#:—®;ô;bûøߧùàBW%6Æÿ6´ÌÛVH,P)y öÂS½ {ÁÏöø%œ)9 U­‡èJˆºRbFWBЕ3ºRRŽ*!èJˆ'Ð%zt©4ºœÁvÍ躛[Oû7ë/ŸûÇCösÜâ¯ûÃ1Uãh’³}›½ÇCZ
+ œ‚ž„M±W$3"`²mm„9—Ä\19HŒ³WaŽð…˜c?Ó˜s0‡tŸ%‡˜KˆæRbÆ\B0—3æRRŽ*!˜KˆÏ07M³lÁdÄjˆ’gó+žÍß2kðz5œ•½b. p=k4WœyX7ˆgÂr‹® BH·5Ç2\#àvÆž‡@ôBçÎ º‹tˆ]ÿ+RQ!ö<Wh¼1Ð3…¯I€’ÈN{R¤Ó=]Š—›7Ã?wØoëïíž.MGµ?Š§´óÇöTÃow ÇîÿR|ƒ#ÖЫžüEaw£h™¨
+ ’ˆ¼âÛ»×ý }D^‰*ÜËöïÛ‡Íúñ€Ü7‰þ&¤ M j=\5}V€`“Žèø6‡ÙYÐÁé¥ ?¾ÂÙBx~åäÁBkƒ0Š»Î"›Kçä¨}8 ؾª}p-¼°}°Ÿéö¡Ð—™Æƒî1- Í#!åÞ1- ­cZÊ#!äx¦¥¡oLK'F•ê+ĤGlEÙ‘îÕjV# ¶#¿@µã?¨ø3 Eó*‚¡÷ÌPC¤iDWi™Î:HÎ>ŽŠÏB‹
+)wGîm)í)q¯ÌO‚ÊëÛºmbéøVCBM;b¥'ÒÀà<ŒÅ綂¾Åãë-¢G ÆŠÐc­Ûu“A{ÁzlWý6
+;U ²DîR,pMH°”RGÊŒŸ”6ŠÁYãÿj¢=¥Ô§Ä½òÙ.Ð/È_,|â2a&J'ÄzôÍ:òZ0­JãHÀ®]åõñs¯¯%®<€·åsSàŸì·ýfm³J«•aŽ/s‰‹ÁÒ/ÜLÐ_Hʯ·ï?Þütÿ¿~¼ËæU)g7?üòþöþ6›—²ŠÀ®{°{ªhtš ˆª€7 ÷¾šÙ—¹›A7ÏêP¨™Í°
+Žxëñ¸Y·M‰÷2Â
+äºÝ¯;(«¯Â ?Ø 1È~FäkHôÁÙèj¾GYBÌ(KHÊRbFYB.ž”¥ÄŒ²„xŒ2i|Ûé4È ·õ{Í ŒŠ}{j¾Ï¥šïÞÀ÷ìC7c¢0\7p½ªhü¢`g{Í+™Û
+d|ñrt„fEðŠ0i#Lº€IÂ:Pm/€Rbf®%¿ï AÉ~R ,‡‡¡»mw(ÅÂG—rÀlB[8G7g1ô^w]†tBY*í·ƒ)»ˆOh+!c×V"#Š´¹ ÚãÇ/D.‹?~êua©Pý X…ˆf×]BÅe¬,§^JyBÜ+s͆1Y]Q‹ET‰1ÏùŸ
+endstream endobj 231 0 obj <</Contents 232 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 433 0 R/T1_5 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 232 0 obj <</Filter/FlateDecode/Length 4595>>stream
+H‰¬W[oÛ¸þ+|”¬ŠW‘ûP`Óil›¸§(Úƒ¯£¤Z4vj»»è¿ß™!)Ó–èxÓE[Ösý8üælÆjú[ß³ç75»ß°3þÿšq6»c®ªk-hcÚT¦®%k¯¤¨ ›=°‚•³?h÷;jØ¢º2Ò±‰Õ•å’ÍnY1Ý\ІéŒ}cÒ©
+”7¬(Ø.lÅ ã5(gë–}`Kv6K½AÝB¡îI4ó×¾‹^eðQÔÞÇOÞîìL”\š)ƒßŽý׿¨J^¨ªfŸ‹’›B”^Ôøžã“.ÿ7û:ü\ÖBTÆö.Ë£Þ¢£û ¤ÝÞ“¯_§ú¹¨Ü“‘͈!=b¨VŸËÄ–pàêm¹ç™òZM‰&
+p³ ©q§TYïªÜ ªœqWdy^Úâí[¬3„¯°€Æ±?ñ»ÅB®K]lð¡[-YÉeÙU±ü5»1­ûÚÎñí¦e¿Å®þÁOáý$ï¤EGñ©!?9àH5Ž¥ç³Ú&κªœØ‚Ó§¬œ8+Š÷“ë«Ù¾bïÞO¯?²ë)|ßÌ@̵‚£†ž r—)ÞD¸ð‰rFŸ(¬ho^øÍÏ@£,¾@º ÄDñP
+^´¢¦À—ó{·¬ßè7Û„ ‰b ’m) ö;ü4ÅRÔÛâÂ/´ç ¼æÅäõ¬œ­ Ôß¾£ •lÙb…*îJ^¤M¡x]ND1ßv+Ò‹kX·¤eðF¡˜+ïçþ¢d ›“£ø£]tÁ†,ì=y5A×¥÷ð§ÏÄ®òZÈ…ÙØ é
+Bá¶ÃšsˆìFV!`|]"V}1£fQq Íï5$ýu·n䶯›â—R^o“ÔV%Ý£F%P@+ñègÐn
+у€Pø)è…ÔŸ“Ÿ,‚ø³uÕfœ¬T͙шÑ'N#×Q=
+‹~6B¯åX„B»Jì" Æ{Z1‡ÖHסµëùò¾M-Zó/ÔÎk9™ä/§ÞNLá©Úíî 1d¤p§xÈ¡ü(¥-[6_Þ²Aǯ“Ž_Ûñ˜¤•¤˜
+oÑÐcC"1·!ì¡)˜_Cæ^wëvÆ1’%¨úT±7Wg˜² h’2©C´ŸAiSRDΣIOG>õ:“IÁ£pcH8ìp4žäë»)ƒ’ƒÖOúJ÷PÇQïÅ9ĵ^}dWó‡6 Ø£¢ Ïk½–Ã{cN7ÚnRÛ'Ç•±Fºa¾Å¡¬Ý´ËÅ^„Bà€ñ³z-Ç"šnœh.õd„¡˜Ck¤ëÐÚõ|yߦ­ùj絋Lr‡×n´ôf̧"kz˜)’W8‚Sg4i{Ð<-#‡^þ\üxU‡Ï—·» ÷•Ñå€LkT›p3¢6©ñ!³n±_Ýѧ^.¨ƒ•.í
+ÉñÒ*@äÂ(À­).“ÏŽx¢Á>Lf^íIßF—9èbè°„Nî¹HâqÁ<²HnÚ)Í
+°ä#ä+ÂÝ8„¥Ja H”À¦\s"ÐbΞ´h'4(ú1 eÄhiZN€–GÇ3â´œ8
+¶ò`‹äìîÌœ9sÙ4bËÌÄñ„mX¾ÀÈÕÍ ùVš›ˆIs£ÇGó,:IsØÐÜ#µ4÷‰ Í=bk¸Gliîš{Äsõ4¶c_Q¥Û`æÐ4FAE‘EÃ̃ýâöæw4~êiÅe–¿»ì¦Ñ;Ë.zVÙ¥Ÿ7òÑ@{&Iý)>zĆ©å£Oløè[Ã=bËGŸØðÑ#žS D·Xæyv|!ru7.†0üHÌ[\_ŠQå;=n¦q~~ù©Öå/Éß_þ’ì­t3ÈI7£ÇG·(9I7ØÐÍ#µtó‰ Ý<bk¸Gléæºyćå»ü¨ÍÝ–?YÊqùûÒ…ç[»} ã2h^¡ né÷†þîÃ8¸š¼L!ïáÞ¾æA væƒù¢iê%QO¾¥\ÒÚ÷•K8vV¹ŒÞz²¡8“¿ÑÉë,N^‡|bÍ_ŸÔð×+Öüõ‰á>±á¯W¬ùëÏ”Ë(±íÛ?¥Ê¼<˜R?·è×ßp×miÆäîM\&Rsÿ¼¸½¹ÇÔy&‰v8•ùô®õöê|è*§å»«³,Þz³:ÝVÝ™ž]5 Ò9Qœ¬Ïí´ÌŸÛ“:ØldËh«ÉŠ¹‰L‰INFçc¥6cæ¶J¢ÀH)UTmØj²inë1ÚÙÏ\æá¤S^çL̳é:·²Õxg2¡ÍäÙ3²a§Ir9§ùBñ˹9¥dG4N—ÉM"ÓãðøŠ,(ó2ÕàfgEå¨ÑÕ(CâUQš )%;]_¯6ê%\¬ÕöâR=6mƒÏÝP,ô•‚n 2áŽZJ”¥Ö‡g§/!*•ù8]#*HâÕª}µÁ£k‹räÐPóŠSÈ$’Áž~÷=,‚‡p‘áÒ›ê;ž»0 ”(ñ¸¤^$x;üߣªNµ´¯ïDÏ—›gzQâÏzI‚ßPB?¡¾üCïQ ®±å
+çˆ5ŽPÐô®*’ÎT´V·høXÈD_±y°sS hJç-GúA¹ÍF
+¶z¶Æp*æ/|Ië—âž^3cx½uži÷``Ç€-·?Á0>žý¼c?o–1ÃtÊǸÐN5Ý šŠwŽ}wî&Î]MÖ…ñwA>+´ÓMY߉5á„#ð‚É¥\Šk´5QWúSÿLoŠr«Á»v¦ÞbIOSÛ¾Z75Œ-Š¢\¢’­Š?ñ>ñ¢Mµ!Á°E v
+°“@Û‚CEÃ{»pqÂÐDTXµ6:”S ¼Èb­XQCGb)~Ù<°Ån³Å/.-~1à‹p—ܧ;œ
+ž)`ÕfC>±ÚoôªÄn¯jµ&¿WA­.„úv½s—X…X»FæsÔÉÆúè–2ËxœX™œa<Ð…$JsË^]9• d CÅj›úlZÞÝÕF¨^ûDÜ®‡\ht_1¥<3÷Êê¨ç˜Wjæi[ÇÌc
+¬(ˆ)ß´¢bÀ˜aÊC—b‚?ÙÈQ9¤®À‘û‚„a{hœ¿c?jÀã„¢}‚Œ?`Õ±…ePÙP±™bdû²)bMÍ`ƒ¨€Þ–Ò…ZÖŽ>Ðù ¼ÓŽ³‰”ãâið…H<4=[Í9§M„µTm¶o«+YôbÛ?+mýk˜dšm:Ƹ,©57 »VìâÍÌj4
+³7 EÄ>¦¢5û5¯êµ®$8°g»_«A“Ví<NbwÕ@ÊKð‡C˜“ eð+€GÐ¥®äñ2¥?¹õM›\¥2°ý0gxtßbøÑ{6§ª"¾ø¶!¡Â*Ýþ~ŽÚÁÚ¯!?ÄS/®š6Ô+ÝðÛ:ÿÆ|ó"Nt”º>ÙýDhθŠ;0‰êo zÇÇÖüuåˆÏÖÿËþoªnê±£ð×°Üy>6Xo¡ESßÁúpp]º¾QÔ“Ñ/ͦ†#QRkêõ_w8½rNã
+
+endstream endobj 233 0 obj <</Contents 234 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 423 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 234 0 obj <</Filter/FlateDecode/Length 3520>>stream
+H‰¤WkoÛÊý+û‘,"†ûä².‡àº¨ÇVz^…"SŽ
+[N$ùþ÷=3KrWÊ© 4ÅÙ=3³;3ï'¢ä«[ñö䪷kñv"ÿS
+)&sQei/¨…u…+K-ªZZ•NLîE&òÉy‡ ;Jì ÑL([8]‹‘·…—ZLnD6ž\ò†ñDüº6À+-F
+gŠÒ Y[¬ñ»XŠ÷“Ô‚V’ G¬˜?·- ˆ­‰ª &þÔN®„T¹T™ÆåÿžüŒø 3Œõ…û?­¨{+¤Ü³‚Ë=+jñO2@gE.3h×Y.]¦ò‘ÌJú.éͦ¦Y¥
+ç{ÛôQ»È¤íûâÝ;vd£öü¾Mñ¥*j÷œïº: ÈPTšë<Ñ¥jXcz]õËT”]UʧN¹ä:eUòYEÊƨªöî3ûxú$÷ÙÅÅÜ7Y®Ò߆.r•ÛlM/‹‡¥àëUa]).!æuwÍ”¾®!鯊÷ßÚ©’û•…Õ|?…D™ªfù=š‰ðK¢®P…ÌëLœ5ëõôo ôà «êlòD†}o+%e:Š‰‡‚äC©uáPèöz…Úág§ð,¯ BÃwÏÿ§·˜àÛSNšzE&(bxË÷LožÙ¢B–T2þÈÄ)N©ÌÆùN<.ùÈf?ò‘ÒÙ#ÁVÙVø"X~ƒ,“u¶Äª }\ðª9/àm¸•‰ þÖa üTÙ}X°ž2Äm|íP«ŒA–üûV¬[E¬¥
+mzPŒ"Ìâ°˜œ:²»³z@Ü= þÁn"ˆ«Ò°WNR9~Žž%áPG DºåÒQÑêèh[ Ô¹žrÛ3ƒ®8_Ôª·æ¥í€Qv,Ø®–FÓ¼RO@9ª™«_íO@9¦GWš¯ùuzÊ1= ž\ÿ^§'  ëisÉ™_Êö6´_˜í­ž½lwñÖº¤ ^Æ|·ù< îòy@ÜÙ5 îòy@¼39P®Ê˜«zï&@+8°\̓\Rõ·‹Õú’õæ°ÀáøWdñ{ŒÊîT îá&;F‘E¢vzg[;”ê¸þTÌ&|ÿü W‡³Lv|ù?L6Éiø(P1¼É®3|´-«e'ÍÎÄRQ×ZŒÀ-LTü *Îñÿ}n2Öíb½Á,”5«7ù6–ï±A•ŒÔ
+_Ð>%]*zér=o0‰–}ìï4Eˆ£±±¢Q0¥'ùCE#-|üÀ²ûïýZÞµAPòËñe”¨ñ½õœO°úT|~¤ ¼kEót#Îûc쯉j|%PQë¨}h pé© ´õð…M Õs¨ X[c>é*­n« ËC”·}`PÞÚ6(o;Á ü@+p1Üü`+°¶LXÛokO”õ˜‹æ”™cîšhÜp7ðè&þh7p]7¨ÂzYÛØ ì¯5ƒ>ttÌ”ÿëìt¹„DZRE»%gtë }x“@V²î£ûêq6££ÃÒzþx'>!ÜiófÆ=òž¢½IL$˪J*å0gdÏ]mIšS¹ad*CX³¡¼‚ Ô=¯}³Û±Ê½RĦÁ¬{6 ˆ"’ä_›zà?»yg­gJõ|ÞuÑ÷²¼ëôÌ;Pú‹k+û°NDÒrÅm]Jl%1ÙÜŠ¡\¥›Û|Ú qu›š8WÜÝeóÀîýƒƒËòÅ3ê'FJV²?Âm?$Ž›Û‚bB×Ø…I‘kXW8ê²³
+f¯„ÒïT¡²æà+l 2|eUN'\_‡ä*š®ÚB„‰¡PÌ ˆ÷ ()´™›fIŸ6‹ÍSdL¤O'úzî¤ZÞ9`¸qT
+“¨½
+®«¶°U_ÍeLUA,Öb (ê¨D¢¨°ÍsO ÒPW–¹­àáï2ûF“¼¥F,6ÜšÅfëë»O~g9ú9ªßðÂÿ ÚP÷¯wö Fê#JKId”¡Â'ó8¡c^Oìùª½®
+öÇ´AåöŠ·Œ
+l ‰¬˜Dº×ri¡/·Z.—·ÐsùuÄÛÛ¦Ëo]ÓE²wŠh|j¨gÒm5±ô¸ïVG•ï‰.R)*o*Eõ%µbh;²¹³y@ÜY=`Øþì êȇåþì`C‘×5]Ù÷P¼süç¡—z5÷i0îÌÒÞÕéà
+ äR¿îúè'ôº@›P§sÃàWqß/!?Eo%­'X9²´‘#s¬nÏW§ÿ_g² Š!3k¯s¢Ë6Ð&€kg +«¦ˇ íjÄWž'î~ÒÜRä*æo‡‹©$U¾ž$`´w<†{‘‘oI%Q7•D[ˆ'[×Ý9׊)mû5iº´Ñ6¸9Ši7è/q¨~wÆ¡ÍQÚ;u$O;”—æ鉸l‡«ö3yèì‰ãæmrœö²ÃlSWT¶Óz7J˜¤¡A´SÜ9¿Mó׃Ãiéû‘rÒ²F$C#f¢ˆ<ú+Ö7éeµÀƒ9ó-sé5/ÿáUÓÛ4DÿÊÝC"¯í|¢¨QˆªDA=¤=¸¶£ZDqeµð÷yï­½6%‚ƒãÍzwv>Þ̾)Ž˜åc\S(Ÿ~H‘{`ƒÚêeU;i­¦­
+5²çkTgì¹åKýdÝrâ©“~ˆdœëhhí£ö',hªÚšú¿U "Äá8GÛ
+endstream endobj 235 0 obj <</Contents 236 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 449 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 484 0 R/T1_3 467 0 R/T1_4 466 0 R/T1_5 433 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 236 0 obj <</Filter/FlateDecode/Length 4970>>stream
+H‰¬WmoÛHþ+óqœUÍ«¤/¤©‘Ëa›æ÷‡vq0l%ñ¢µS;»‹ý÷÷pF#,“6E
+¶oP{šß¹çÞ=·+z6YÍ;˜Æõ©%MçBÃÑ›xÛ|]nŸ6™Ð|uHFÖ7¨#›eÛt½£¾rXQ÷Ù<>¡÷õ("-E¬Å ’'äÈ»73Šè|¿yÚ¬–_6OHœDâ¢ö¡­‰»Ù÷·oà0u¥ò(¶—ôˉl9+c8¢#VüpØÜo›4 Sד¾ ’5º.å
+˜Q€^Y ÍTǺò„rw$Ô%d$U&—Õ3º®¹¶B)¨ :©(Ýüì¤è%‘T*5T>£w »¥ÄJÛ¼LkkQºîŸc
+†Ì>{ߵˆ9jZdÎDÓ%‡Œþãê-ûe‡V¢ø’OnúŸ˸²;Ë-ÊvÝp{·Û] ‘‰­³I¶dT.à!5}ZGDYy9nVã§t±dGtËæ
+¾ñ½%ÑâØ’»Ç2`³Báft^ŠÒõ`¯õ‰3–ͤ®%ŸüXkéÿØãL÷Ø-å
+¥ÿCV°‰ñ:—yI–Ë’þé
+€˜MC–¸$0
+$Iö7ˆ„ÅÀè¤þúƒ4
+µ­†¤Â(ÐÇgtÑÂT´a„ÕS‚¾4$Å%¡¤XICŸSb-5㔸=vB:æÁJu€f„'Táà„€• ·Þ¯>¡_}–_Ø9în·§N»ÞlI´|jèßÁíF@œ5‚¿÷_(ERåV†ÆU8CÑmF4¡ é·ñXÿºOq)
+] uÈç´2I«^¶ŽC¶Ê¥u³ •jºð˜Ê·X˜VV žX8ƒ´®†;H@Ê´²†é((Q˜!•o4­<!üq.n4¶Zy’‹‹Ž‹Ÿ¦âFPSŠ©¸9IÅÏ©¯TÔV¨¥Ôè(†h¹+ÝFs*]ÕQ¥,Üjû
+Hø?óÕ¶Û¸‘D…T)ì o‹l€ldçadâ F/‰¶È’£Ë$ùûœSÝdS){=‹Å¾Ø‹U]ÕuêT|Hˆ“ÙLÓ¸r~—ñÉE™W‰T 3i!kCÞŒ2ú‚vLj|ëDlaõœ*¸•ÇóIÇ1ª+£{¹¬‰œJ„ëŠSÝg™Æ°ëlNbdü°U½rz´b}Uüb_óãjN2¡Ž•ÔqÒ^ Žùô—Üûq]"¦æa·â›Ófñ^Y$­¶¦¥›žøq:m°“kŸ·9Nî Ûè¥ÖW~|íæ-ŠRn>áô{vó/£Óš’¨¤vŠ-µÉAô§ÁèÛ2 xÚ°j•M
+U´Øp‰ãï~¯¨—Ûæ9’¿5ô÷4\ÁýÖj$Oè\N!ª6›úY†_³k4¡gþÝÑIñh†ïl(«ß#…±jëö­Œã ^b°f¶¶M¾“p_ª½¯¥Õäm¡Îl»¹¼¿ýö8°ßž£»ÅSÕxð}È“YpáE:ˆëžK#IïÜv«ä1ZKý4çØ„uûB¨® ^žæl]Dùãž Ú¡Ú.ÏÔ™í^ò#tV®FXäd²æ3Þ×%óò4±Õ?íÃbûXuN4(PãFæ¬\‹Ì@„Ü¥èoúÅÜ…^¤/ƒ0•2Uñ_ÐÈ3kr…Tžâl#1¥jVM¦åøïc 6BA?È_÷¼]J‰“ÈBYZ0ôR¬ýUå|ô µ~m|Œ®ž[#ayˆVÒ˜KB¸~v¯1~w`œjÝqêU¹>sCô¯”¨ëÓZèö¢íœ M*¸ b°ˆkh{à&g4¸¹|’÷O‘RÒà’hÓ<NE}Ã!Å?=À ×üF¼¸*ô.bÅ+3/DïË:;œ¾"vsĘ˜“B6®mU>Wö^HwK8-Åø´éW—²m°£Kž™¶_¿ã Ë¾Ç>ͺZ±7£ÖØÝ΀/ؼ?ÿ9ÐD?é9pΔªøûÐvÍoľ××áºÜÀÝ#XÅaÆÑÍƧ+à<dÍ~—¢õ¬6Ò—Þ|„30~D¨[¼ªh=DßZ´þ áºÔŒÏ ¥íÕå˜Ø×券©Ë±¯Ë©÷zDê/¿3)·M™K’‡ŸJR¡äÁÝ÷7˜ QgË#ù¼žL5§àÝC„.gbLÎíëã‰üﺀëD
+ˉ)š-òßm‡±æ~¹t¹Æħòæ»Û;œøËdZBCëøö~¾“žzÏuñ–u6Æ2l¢Êm®ä–fk¤Áyü/NUõãúø ½nøóù¸æŽ˜5¶Ú.|ÿ•÷
+W© R3Ó¥ ¾¶Ë$G¸4{*}‚ÞŠJÐ *UiB+1 ×.*GÅ•cbÊ1±Cå˜Ôy=&@e&û¸”#°TØ^Ãòôý»‰q½@@xÄxet:
+³÷w@Á=ñp S?`âÿxéÔí,OÒæãy,
+oÉ6ŒöZ¦„éÓ¼¯›(®ÑsA˜¦ý½=WÉ<ÏqÛ͇]<ça–.%¥6k -¢ïxE_3¦/þ&ªþœh/ÁIуŒÍžó×ÙQn¨ë¼¸eâÅÝ?¯ c²[Ãþ–Ö=Øùó¼?ÛÜMbÊêNõMÕ™Ÿ˜5Ÿëå::zxD¦m~SA¦tˆ
+Îù^fû$Q¢Û¥™«!6>Y÷XEI3½)÷o
+endstream endobj 237 0 obj <</Contents 238 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 238 0 obj <</Filter/FlateDecode/Length 4105>>stream
+H‰´WÛnÛHý•~$ÄôäK€ÄQ<ZL­ì<L L;ZØRFò$ÈßÏ©¾”È–‹ Íb×¥ÏéªÃ×sÆÝ¿í={qyÃÙýŽ½˜‹ÿr&ØüŽÕçFºjfla9W¬¬E¡$·lþÈ2–ÏÿçV¿‚c™–LšÂªšM*STB±ù-˦ó›™[0³¿˜ªuçe…(ËeUˇs¶mØïlÍ^ÏûÙo©É÷$†ù¶Ÿ¢wr”Üçø‡;¿Aˆ\ÈÌ0mé·fÿöŠ\dºàìS– ›É|"2NÏÝ™ü?óQ¿!e#ea«6eu4[JtÝêƒì²IØïßôý YÔÏîˆ*G™‘@\Ê{±dlt«>/”÷rJñ~QàMWRYŸ‚²éP.(÷‰Ø¬.ó*»º"œQ¾&
+p‹Å”}^fv½ßä•}mèe?[#gÜ?æ2[ ï'ìûHÆ~ ÿÚùG€RÅ
+Dæ¶sÙ¸ìo˜éåæ–ý‰g6ûžK¾·ô—÷¯ó‰É˜sŽt¶e›åÂ¥[ ›ãªÜ‚• Ý‹çn¿ÃÂþlXSÜ·k~;©2ÑÖ(MରµÀo!´ñ•^N¯ó‰Í^Þc?mÖ1{Ã|b´Áðû‘ÒÑÙu_ÇŸèÖ¸× IûNš)À‚’«BâüYC¬|æø Ób¢§Ï;$áF·”žM_\ííæï/ìýâ±é·MQò¢KáÙ z îÇ%'ü nÆúMêBWmªÓæÉ0š÷5¨òŠºH³kÖ˽¥ÕýM>³Bïåh…UY¨.Ž,©ÞÓÀFs¾£]/Ö÷M/¢B«ôÏV潫LéŠÐŠqО§©×#Ñœ¯Ãhè$ýxsH¶ñT}ÂNŸJÞã€1Oîp~ÏU}iØb}Ë%„ðŽ«DM}‘Øo!qºî½m¨1ܹ«¿_/éÚ áöš€–¶è6÷ùA/UW©ä⼞Ä?²›æq±ÆˆBkZîØmã¦è’Ìê‹@OLU?Ƭœ¤Ñ#•U…sÑk(
+"%•ÅQ£OÑÖTe0J^”Ö[%‚Ê#æÒÒyJ™)Äôj-Ê"½Øg²î«¤IœzàÙÚQ[Ѿì.~ù0»˜¶Ÿ¦§<[>Ò,ýÆt!L«B.ÜÔ#•€a™°ršoÛŠ yØ›ðE)ëV{¾Ø¢¬!Û`·…ÑÊEòß, ¤Ã §‰BÐîXuø(y
+…â†I¡hœ%•¤½ñÏÛSÔ±$e,I˜#KæÀ’„5d°hé?˜ ádKj/˜á µ
+)Õo¸3•Ìø8¿~1ÕÂ{h/$¨f¹ ¿î6t…º¦Ÿ'’X+/fM¶NSª®Õ8‡T!JùCªð q‡ÂvžË¡hœC%†nÕA…G{J™‡æÈ¡„9p(a Y'¬Ãï1?·€±VæVå¨NYÙû{ùò×WRì];31X¸–}p!yEYE_oÂ}²\«ºÀé”êIp†ÊÎ…3‡Ór„H·„”9À™0G8æ
+yùò`Ž"ªŽ#*¢R (´]u¢¡¸s ÆÕ5{ú€¦ÌÑ„9"š0DÖuÂ:‚¨õ^óòÈùÔä¨ôê×w¹¤Ï\“Mr•ÍÞä“*‚«´C Y
+¢ö(J©êŠø.¨ª“P ‹b4Ž¢ª:µ7r.Sæ€bÂQL˜Š kÈ:aAÑ}¤Ц~µ0ʺ°=éHB©M€Ÿ¨ ?Á 9]‹xHËÂtªŽÐ”Æ£©dûR‡¦ª\ï<ÍPعh†@ãh"éòš)s@3aŽh&ÌÍ„5d°Ž¯á×f«¾=>ª¾t”_Jä×åtO~YqòËK/¢ÀˆüÂKh°cò '=%¾¸5?$¾°Qò4…-=—G!Ð8„EôtoO™æÈ£„9ð(a Y'¬çöv^µý?ôv¤IûCA碣ȇNwƒ”9 ˜0Gæ€b²NX÷Qt§o¥ÀC·§¾p(œB×VPuÊ«,xiO’ÒÎ Ô“’ÑŠÖÃÙb}ËÞ¾};Åñ
+=ï¢eˆìɯp­§nCø$œ$ê,6ßrɳæ¶@#‡7N NØÃs‰ÇTºÓ}’£Íì'iöÄI™qRfOœ”Õg²‰Ãë*ŒA[Ÿ¢Pi°Q¼ 2\/òI™ÍÜmQ&Pçã‘)­â?ÐqnæÓ|"e6g7þ7—Ùuçþ=Ý^ÒËìS†'<“Ž[Ÿr¼­hN C¢ÐN(y
+QâžI”hœ(¥*Œìò¨Qþì-,_KVtìh…+eû‹Ç‹a5¶µB7ó~äÈÀñÅJBgt‘k½Ø[ø9¾v¸ë¥vGÿÜ]3bì ‡@ µˆk=óqËŒ-,'ò[ 7AN±(§úgˆ§¬ £”ûàÅàÂÆUJ÷/EÆ^L}´¢ž;»"µƒ¹ùêövÛàÉ.ŸèlÇZ)“Å1Åá|6c·qñ¸Î?cöBŸ ·Ñ¡îU/Š²’ý󹑺'Þò=:ÈEiT<¿³)»mî¨Á¯0VÖ$h‚¤ ƒ<¬ý#*qâ轆lô½;¯ Di]s”!X)©¦vìýÎÖ:Þå&DT²|øMãbCtÃÒŽÀÙôÅen³ë¸|¼bï]3y•‹2{7ÙüFù€› vÌÇÇÒWåÞËA~ŸC(#:
+1ŽætŸ©[êñhÞ× ä«-}Æíšõ²éW(}ÛøÉ
+½—£b ¡Ä88Ï(ªD0çê0Øõb}ßô#â›zëOV潫LiúJíâ¨çvíqâCÉíŽp–Íݸûž£M|iœÀê Ü2‰ça´&#©!@%‘f pÝP˹s×­»®—tmòºFµrj"Ö iù<W=”{Ix7ƒ*ošÇÅú ­JeË{ƒF!D†4d¶]}yZmÖ}ò|™UÄšfÅsï%á¤Ñµ )&çð<ì{FiaUJJ7çЊôޜ㮽¹9çoÇçœÆ,&‰½Am%~<E]–x'jAE
+;Uô­è¼}kéÄGÊ ¥sdqÈ9eY§©¢€gMhí¶¢~à±»øåÃìbÚÎ0Óã`Ý:÷©¤ aªv†]17ywnôÆ){b-úƒÒRjçL’ÒŠ)ï“a¤{A:Ñu]ö„i MV]
+¯ÜJ¹‡šµŽÕQØ —õQk­¥Ü³Ôæ€ZÂQK˜#j‰ÄöQ6dVýC{µ4·má¿Â#y *€
+ïL-}‚Èc.µ6£Tò²O¥RÜ‹#ØòÒilEÄ.•i›Êˆ¸Me$° lçºXû};ÀÊ_0æv`±È(À¼t`±ËJDÚf%"n³ l °b°'MãK*8};¾Ê8¾~2ºDÉð"¹0f /ÜKy^„xÙÝ—™”
+-HÒ±—g¢KSèsR«¬kº®
+bÊ­Øj+C”½ÓvEQn¥Á¡Nð¼ÖÊ÷ò¼X^ìno^Ítx{m­Fî~JÜ)»J.ÆýÅ”tST¿¹¦ÑO%,$‘¯€/€0çíTÌàV“!¡Àu*c¯Š¾{SE-4˜nˆKûrX¼R}óåûÄs²Â;Zž ° ?Ëî?eRb¡!
+Çnu|xc¹bUvür‘|´vøÛBÿ™~4Ÿ³Ü`“8ív¤•iC/`ýÁÿéè]pÒ2MÖÉÓúpÜ>âgüw}H>,~“t’ã'²Hx•é7ï²\C‡$›ÄýÌÉàU&Ó¿é× o¦n£$Õ-{ùj„ÑgZý8Jt†ä2«Ò=¯„ÅŽ^ùÞfÛÈ’µÂ2Ò¥_Í&ᣰúÁ^]’¾WJî•y‰yT%9¦+{k·wðKÇ@ÃÛ ˜áÿlö÷—Lêt)DŒæI/Í\×òÛ*ÆѬ4+@SЄDmœ[V…Ïc5êál K@³-¬åâ·+Ä°ú·É ‡ñ{&ªôzn¬¢RÔyÚx4áÜÆ:ôÖÊ ˆ`m}N¤ ­p˜úܱ¥švƦÆ'¾=$^šÝCPo¨ú< µrò€5Pª¼Ÿ‚:ô¹¼ÖgljèlµÞýÓ„ ÌŸRýèɬ•S'+6ï§8ç¨í<–Ùi‡58Q²ýß²¢NŸÀl“t©ì;É[8Lž‰99†šme¬Bü#?üÜ=гÉLˆPUÌi0µç5Õÿ¨U›Ê^ÖÌè”wÍ—õ ç|xIÞ£—¢K ™¶OÇí~¯F õSÜ ÂˆgeMG-* j4ƒûB¢Vå`¼ƒ<Ö%ú›Ê9•«§N:ƒY„â²fÓ1ÑŸÚÄK@vcâ6îHhc
+-ìrACKã°ÖJíšÑœoÚeù3ÀÒŒw¢ ø8r üˆ>;®=;~·¼·œšÞ„GéçõÝý
+6–7x\aâ|L%6Nûž™•ˆ>°hi±» ZLíKª€‡$±ðwÑcˆBz†ˆ¯9ë:†ÈßZ†è®šÜˆyÝw㢘k”ì$û¤Ä¾Ã
+jkâ:¾u§­é#Ôv%ÓîĬÍ=­O¿eL;säó¢ÏÞéZTÜy .qVÀŠÜÚ”øûy³4%ÌDy³©Kyš-K
+endstream endobj 239 0 obj <</Contents 240 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 240 0 obj <</Filter/FlateDecode/Length 3412>>stream
+H‰¬WÛrÛ8ý<’[ƒAðq&ãry+“xlíNÕŽ·¶ ²µ+QŽ$'•¿ßî/àU‰œ¸B‘l¢ûô¿Î§¿Ã#{{}ÏÙ㑽‹ÿp&Ø|Íò„óTÒ9KMb8W,ËE¢$7l¾c‹çÿ¥¯à°EK&ÓĨœÍlšX¡Ø|Å¢«ùý -¸š³ÏLå:å™+–K›ÃåìàØŸ¬`¿ÎC4¨[jÔ=«Ì|mCô*KŒ’{Œy»ó{0 ¥LüÍÙ?ý‹$‘N8{ˆba"ÏDÄñ½À»4þ÷üïø€œJ™[CV“hh;€´ºƒ.š•ñúÓP¿I~6"*0”âú!lÉÐèÚV~™)¯¥kJ‰Ð)¨›Æ¥,ÿž,§M–³^–ÃBl’¬®cÝÞbžÁ} 49û‚¿yˆÓèˆ7›}Áb¡"ˆ®®ÒÏو黭[àÛ£ce˜ÁÓ$g O$8cRðéœ/‚|!WTϯ}1€¦öåæêíuœE‡ýË3û°Ø¹†Œ' „³z£õ¼c2baeHžX[›Ð€Ý~__¶KƒÔô|»ÅD¸£+–-·$XË_ã—W0é—剮-È,ÑgÝòÉkÛA-½øÝ-ŠGØR< cøãîxSî(iЃÊ4Ãù4 Û7DjJ dô-V6zvlQ¬@ïÚº™Ó" ›âÇ]õ
+¦\Õ)l"Mêt†ǹŠ4}C¤¦çê½Û-ŠÓ&:ZYãÚ€N5 SÃ@C©„T:Wî¸ÄBß<{Åû¯µr£ þ`+Zª!toÖ¡6œÄ©‚±wf­†q.K!´af¼TÂÌSf\ sL¦„¥,ˆµÔTï#âóˆ´ ´ìRˆV ­†µg …®ë2ý=–"º¿¡Àv« BË‘{ÔD¥´‘È D!‘™i„•)ئäùbnOZ[B”¶WÇm7qwB•›ƒP¢Ïf ¦ªïòÇxf¢wñ,æWñLêhÎîýï¾¼®UѼ½Æ/‘ÖÌĈ®^ú/º^Ñ_“4(èqp6‰Ð°÷þÆ¢‡H%‰}ˆ=}èÙ˜t$ÈDÆ&JÆ&xõ+phÆV›Ç n¶§#íÌœöt“¿a®À›å¯+·jЪ†#âó¿.(X‹4ÚCÞH™xƒÁBÑ,T³}E0þ‘õ—c,x6øÜAElM8·[w@®Ø(Õb0v0Àµ~û¦½@æ
+QÃ?}EÐi™gÏî@höË“ÃßÓ›f’4sÎs%[+š±O›#~ƒÁ$*Ãöë@Dʹ‰J£FØ^T`æû l(
+P˜êôÀJ_§mµ"¨…±‰^vŸ ˆ {f…*Ý’ìì¨.¶%9X
+iYJTTO‹-ûDŠÙú@íè SUrcA6t`)Gúrq8U¡ BÚ ¡==±Ó“kBAK:XÖTÎû7øäØí{¬8FšõüŸ÷â´Y¹‚nNßb)I§áº Ûaù†—‰žÈ¼5ˆÂ
+H ÷D%7©ñd Ϧ+ƒ•¡-(Ó!½ëÐ:àpžÖåÖPw ®g9©¢ûFWŠ4¸¢v€7qáöþ—w¬¦µ*àÆg¤Mv¦ÌS³Æ9T)´bœE0LÝÖÑLÜÅ’Gþ¶
+ÁÎ?à×n‘Ô}ðò(€‡3 §]|;“èÁ¹C¬¨À³iö
+Ñ}ŽÕÚgß^ÃDºû—ÜBKÎ`¤¨,úý*<Ì
+àðÆÖx¾ë0Ëû HKDëD+¥HLmFsl¥sZ=lŒTñžÇ·xütGàH.tPñôZ&„&É¡ÿÎ:(ìˆ1RÕ5v·(]hQ …G·WzæµLy¦´Ÿs•uÎß½+6,û&Iá@ɲ9µæ·XÙèÙ±E±bM*ÛFfU; ú”J<?*¦ò<8HÞ9ìÇ5]t-–Ô¡8}šÕŠ‡qͳï¨UŸÊ¯¦çå½Û-Šñéå‘ý掸7/qÃ>lžaŽañ¦2£Í«jÜùÎ¥¸Â+Ï.”5îA"ƒÉÙÛ'ÚBi@HavøùΔ”‰Äm"
+¢Ê üT» e¯ÜûUJað†R !v\ ŸX\b—¨Ç€•i ·PêØ+¶¶WÐ@DÎxe³`÷|Ï Ìt`c_©ˆêB¬Ê,k0Ê¿ø+úøn¥~E;ã¼.z•˜4­>¹¯…w7®"‰6bzë?Ç‚ÊBÈïê4eš ¤.“0KXâU0$Δ©HE—ßQa‡áu %¶dKê§i›¢U)[\‰ËÕ²m¹¬€‘Å•4pj¢9*-—6ÇŠZ\F&E*ûí3û!ñåDQ7DQT<1“Ó<Q) Ã|Ã-T£ØÝ
+A¶£³~e¥G¨??2qud¶â%»ÁCTžžûlß;Öû ‘PÝ/Ö¸î¿
+endstream endobj 241 0 obj <</Contents 242 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 242 0 obj <</Filter/FlateDecode/Length 1562>>stream
+H‰¤WmoÛF þ+üxâë½êåãšY†6Ëa¶ ƒjˉGJm¥AÿýHž¬“ßânmQ[ù<’~[‚â¿«{xsy«à~ oJý· å
+©”7| 
+i8?ØØó:ÑJ åŠþ‡CíÎÙÛå²^ÑRFî“lAº;ƒî%ÑÅØ­½aÛ9bßQèÖÔ]à)nÐÒ37®îÎBxÔ"2ЄZþÀžZtì28`Ô– °.9„sÜ'ÂÓ”˜ *“l†8Ïz&Fð‹{VŽ6¹y²¡Ák0ÍDO8ŸÆ<rò2éù¡o±átC☓| ´ŸÊ¡
+Á3 ;/Ão{¬ƒešÛÑ1t6†®$çj¸yÿ!1t%ÒbVcÛí¾rD§m3—
+Öv2­‡÷;aõ¢{¨WÀÔFµ°]a¨°f—\´”ZT‘¼²ÝÁËŸÃÑ5"V¦eßIöÈéI‹s[»!˜ˆÂõ†ÞX40­ÂU¢Rèm Ñ¡,A'l&vdDoBà‹¼·!ÚžöÁË°síI>½uÖýŽÃ|(½îdÿØD¼"‹‡Ø|f'‡%"Ž<çŒË ö82lÚ¦´øk—Ëñ8íæQm’gfãï³¥Žõ¸nZЫýWcÝ~àU·š~w òŒ¶°±zÈÇÕ‹l¬®­£„ïnGÕˆ£n?Ïíh;Ra†)úÄ3œ~l~îùÌ!ÌxI­›M
+¸È=
+êÕ
+;@ý…´é|GÌ–RüÓõ[DÎÄD7¬gìªíÚ)wí¥Œ3¯â¿
+endstream endobj 243 0 obj <</Contents 244 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 244 0 obj <</Filter/FlateDecode/Length 2968>>stream
+H‰¬WÛrÛ8ýÔ>l‘[CÜxy™ªÄ£I¼•q2¶²óomÑmsV&ŠN6¿Ý ’
+]øóþOù#UB<!¿¡…m,±hRx¤Ù:C_C™%+곩›26íÜGœŠA (§A÷ôœ
+nè³¥Ïz‹Ÿe˜ãŸ˜RâP‘)Φç\MF5 /Ëû¢îª«`{ðzfi¦s€£‰c?S‘o±Ö«‡0µºÓü€ÏºŸƒf(Dú
+à\ôBcèH* ¦2¿4á‘òo–<£öñˆ•P8¦|âÞj´´pjˆ/k(ÃAˆ‘V†HߧoÞ®G¦#m²,Të*â:ÃNÛA~NÃ$(å_C¥µ¡
+
+ëôm³ 9ŠÎD°žëCu›<¥å ÌŠsøh4Ûm¶„ä‹Qôæü{_´Å}¸J»Ê ëÙ® ÜDe³DõÎßW|v °/WÛ»ü²[<|³šâWm®vìÚڷڕ¨¸Æå®ê¨rNl5P4¤­PëÐ(€58Ïê¦cÅ•ìªÁrÇzÖÞÝÙ˜9Õ«ÑIP…¡9±‰Ÿ·Ãô0_>ܸqÃÉÑÔu¹E¿†l£¯ŒL­Èí;6ê·‰àžŽÙ7‡Î‰¼3þ†Jl^³‹‹S†¤Iû>í@w› 3 uì†ú¨÷oÀ:ìñWC¸Ûò–r‡Ö(e;‰¬áËZz¤þ¬é/Y)ÐDzØÒi½¡¾ÅŸ {GÒ×a±l¸ó=kïѵbôyæ ÏÆÖ‚ø´å1Ç×EÐÁ9Г'i6"™%³r
+ºÕ`£áÍfç'ˆ ǘÈ$ÊÁ0 çätñúÕs³Æ|Ml!ñ̘±w~;z›ñ½©>ŠË¹?É
+Ĉ·8—ª<±¢ùš³YpºTĘŠ’#†õ'2oßH¨+=”§æ
+.ôü,
+[>YðÅÙñœù fXrë%»
+În릥;+ê}Ô³«n0dWáü†—[’ÍG!k*(‡â¶„[îp¡´„çãºnÝ?†X^ï‰fN¯Z³€ ‹
+»š‘:Î'M3¥™¦—r0ÓbùCNà¬Ë!·
+¿ê[ö
+\‹$fÂ:²ãnTÁÐœ_Øïé_°ÓPA«äSW2à[A¶ÑÎo²o•9'iÆw Úñ èr\!3ÿ6†¥1ŒbcO¨È#óÎ1Žÿ²« @†}Å£^DÝ}Ž¸ ‚xPQŸo’ xëX—¦¥¤]m£&´Ÿ& lŸ»e‚w`‘a!Ôq£íÁn_D+j-¨AwGyP…ÏB[[È‚›ëE¤U^…É]¦p)ð¤Ç'.½êõðÄaò2óæôe*ÐÇ•Q›ªßŒ2]Uš†^[tpÚè¬W€
+endstream endobj 245 0 obj <</Contents 246 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 425 0 R/T1_5 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 246 0 obj <</Filter/FlateDecode/Length 5394>>stream
+H‰ÔWM“Û8ý+¬=IkDŠ¤¤c2Ó•é­$›éölÛ[[j›±•¸%G¶“Ê¿_
+ç¤LÇ‘À³ð4úþQ²þ(|vòGGÑ¿´GÁX
+Œe[ÖìmØÙù5\© Æ³|b¯C.é=| “|8&Û—“q"íÃV
+٦᩠‡›ý8©qv-©«W¡ÁûpÝ—Òµ)ˆ•N¢K&m’ÛÜNy4vé…HÎè¢>@¿cO!Û'´w±Ú8‰e|`Y‚,£ÙÃV<â2µ(+v,ì£tN 'ô1œ fcªqpö@Ûé±…ÇzÆ@ 缇R·˜ŠõLjsÇy^sBú!ó×\Œ ëhr[}ÁLÐÜ=”ÐrnÑrkÁŠz^yþŠQÍ9ì,¬ºý.Ç#®:”´xË>Ô š(û4¦wøPEn4§´¿ê
+ P¬„
+–~yÛ’q’q®£\x3ã(ö× ÇÜeÜc^èrý„7á:OQ¹u ¿4{¶ÁÓ] øƒ©*‹ó †¨¬vûGêY—f(„ôq_¿Á¦˜Ñ,¤C „ϨïõEäœBáZ ±SC/ªoÌ(v[¾g
+ig6fÃJ:Û–¬è¦v ÙE¥{ü =š~ŸmÝ(H¨JjõQ8
+äD|âý•
+ÔÊ‘oëæ ïÅH=tµ¾­½­™ih^{,™‚ú®°ZaæÁ^ÐÐ"™i&W4‚Ö Ë«Â|æ.;óB’Cikz”ÅØ¥çp<âiu1U[ü¯ƒ}a»ÂÁ°vÏeÁÖ’škV·a y»P™ùàþ\+Çô3Ñcîrí1?Wñj w¯^¤õtAµÞ÷>Ö6„óÞ©ÔQªÂ•Ô9ï‘èA?-)Y¦²­åCÙöߢ×Z½*¶2Ì6ŠÝ,@ÁÕgôÕ4_ð¶µÓóS'¢‡y”ÉàÃLq…ÙÅöï0Ùpºáy"ö R FúïX7EcG½}44}ð²&.=„a2ã`&¼jL'Ʊ<xÌ<ægóA ¿–ùp±ðÛî]ž,†¡>»mþ/°
+>¸ð¢è3·(úÌÏ-_•ÅÐjf(6æPS§å; Ò[±‰.¼ŽZÚj;F-°­7ª°AïÑÓKcE÷%:´ÐÃaáÞ¤²Œ´ƒ'¹ij«K|æ.¹ó8¹«N¬YÙæWmJç0nûÜÞ°»»_q¬$²™nDÅ™„¾©
+s7Ën_äÁߢ÷Ù}ìðO‰^ §¥8P¸µ[ÿ[zõϼ þ­‹(aû«!¨¦á´VÇ Nµöňö˜­6øz±å¨wèåÛ7!TÄý­3J‡vS;¡¯ù¨œ¶æ\´X{º/¾¸gǦîü¶½4æ¼qª4Uâe…J£8ó—œÇܱÂc^(¹t(¹ÜO ™E"vK®*.Ô$$·+§+e./Ôé×lQ¿ÚŽI7.Ú-*X;K7…;2K«w¡ÙÚæy9âÇñ@ϱÉ÷ÃR9Èz´ÕíòÇot‰UJd(·\q®_B”=”N‹(¡4 %E׈ò™;JxÌcJ,£/MßCÿµÛ6K}6?‘¹Fñ "t/Ro®­ÛséF·xo[Í4“Gzh¯N€v;ÓO4ñQU’ÁJZ²¦À8Ò?~¹îC ½Àcî€÷˜zÁpÜß b5¹MU§£Á® MO€ä%ü1 ÒÍi‡ý=
+̯Øq÷0r«ß« «i;ïÉ+kÒº†õxâÌ #Cq G­.ŽGüu(i5Œt2ž™Õt%ŽåÖÔ¢SÇÉä¦d˜UÂѸ•~½¾@†o­‚G®Ó
+.ç†zÝhëe–7¦¨J<zƒtç*À³ç‰–Nsïœ)çØ¥d*–56JûÈ
+°fßYÛÆ<WÜé5sçÚc^è§Ó‰2î§)ps ˆˆÿ°#4aÒrðÌì5ñÔÞ66ô‹]ªb˜)å¡x´×MŽÝ:”P¼±ù|)Û»&;7v¦žH
+¹î/4¨ãAK-ìMˆu³·Ý­´ íÑî4n^CjÅ,­UÅtËô%Þcîï1ÿô ë/9øû?dÎ$SϘd#ºuœ@1eº)†D€IVØ Ö0ËŒƒ•yf»H
+÷,TU¢hmc¿`OxÉýiXî­¢½-7=K–™MAŽ) ¡ÔE–8»ÒGÕ·ºu–<íâ̧OZ×ã+¾(êÖzÄd†_qý-³<}å¢N¬gä@’¶fÈ1®A0»d6Xñ˜Ï±"mW ?VÒ 'ÂV¤ÆJ~•»§¶£Òqµ‹vVMuì§?ƒ»ûn¬_·jóe;+ ²}ÝÖoV>+zmá9Ú‹hÓH‹7{BY¶)f õ‘b'ÂhÛÿüÐΊ2µ%MHin8AÉCé…S’Ø|pò˜ œ<fœ,õ¨ÇP5ƒÓö„†}§ªÑc /ijñeóˆ ù…
+û^ƒ¯YôÄÓ6P\ •];)²±?Mòo„Ì¿°3¨AfËæâ+µ|¢ÞGÚ –$6I4ú Û¸»4D‰²~¾žâ
+{‡Â
+Õœ{€oö*ôá<;¤!‡2žó]˜L$+în“pÞz
+–JüqíHÊ‹\CôÞ•×m„ÓÈÅø~œW/Ê)¢Ékþ.GäA »Zo¢ê±“­0‡ùû1ÃN.$89d£€¸v¬j’ópäm}¼‡ê¥€¹[+è’CEBº$epäÇÀ泓'
+endstream endobj 247 0 obj <</Contents 248 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 248 0 obj <</Filter/FlateDecode/Length 2971>>stream
+H‰´WmoÛFþ+‹~"˜ÝW¾
+ÙèY~”CÛu$ö¾—àI DHÃ5ø9&o-K4­·)”žQJÒì)%e”’2JI™¥¤Ì'(ål[8¥tv<r
+ÿÛn6m·Ýx7âu®o¶}¿ÞðUÛjÂ/DÉÏòK…¢»"~ù=¿¨3vyEÌòwx“t.É4)3 B [¨¦™VÍûl»Û˜oÖþg·\ÒóU'r1©oÈ •¸
+ ŠcÂoä‰8.DLÊ8YJÄØ9,w„/Ιoèœé–ÀÃŬFèJ°NA×A¼×>ð\Í5EÒì¡›2è¦Ìº)s€nÊü…g^á¬âSSZ«>;±†›
+¬jÀMþ$Ûšqþü#»Þ¡®ÐÂ;quß>p[ÜÄËŽ*”þbt3 _|›:žÿo§òhF>ö^ür¹¥ž1ö‹8¶Àû¡‘.ö<„+°µsÇ@‘gA½ƒÅÆaõi–¾‰éÕþÜ_Mò5ø“6ø“¸Øç  ÂþᥙãæoD—ß~éF|È2ÄSóý+ zG”ý°xbW…k¦¼’ýÄñ'„³ÆñÇ âÆ‘<±ü©¶ñaÒè‘ ê<”(®ÁÎÁ“°윶Ð9msÚ:
+*QLûÖÈ
+¤ÆtÄg?m[Ëá1¶,YúŽR›YîÔáдȧÄFiá$DG‰›.Ì'7<ŽÜÓãÐæ¨w…­y¥Œ\ÜBûIŒ…153læúª^´âOò³¦,ïyËí$·*Êeís«æ¾À-±jïÚDÿÑ·à{\Öº›É>,<Z;ò‰)´vÓC{ìÛ[Ê©ˆWq ŒX›ÂµµU¡ë¤ Mš=²Sæ
+¹#Ç’é?VP}®‚0çØùœcyÎQÇÀœc1çÌêÂÔ‘QŒg¹Ћ²
+2.õ”Z­•Eì®*šÙb_mÉÅ0×qµm¨TâêPŒ©ÕFëIh%õ<v¨ÕÔj2×ÓåéÙ¸<Ôrjù)s\*ÝúJ‡<*±Ž«šrteQÒ›ÊbñBJs*ÆÑÙñ™Úçç(Güd7C’÷HÅp6@éíz·iŇ=·ÍÝmœ#CMÆžÑúóh¼vm"ó¿SZ*²Ñ»zn{^±Ì¢xG{ºúöù~½[X-ìwÓ=<¦Q¿gO~mzO% zƒy¢æF[Ö@é¬ÒT¡ŸYr–³R
+4ØÌÔÚ„eFô§%¤}ai©­••¨›2 ̆ed ŠKXú¶ÔÖ‚ H3wRB]4--Œ4<SRó@% nhI%"‘› Yi kÒ™ás»°yƒèç†
+endstream endobj 249 0 obj <</Contents 250 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 250 0 obj <</Filter/FlateDecode/Length 4366>>stream
+H‰¼WmoÛÈþ+û‘ü fß¹ü ¹®ŠÚ—³Ôи(T™I]IJc;Wäßwf߸9’ã\A(zîìÎ<óúvøÿ÷ð‰½:[sö鑽ڈr&Øæ#ëÎôtÌØÆr®XÛ‰FInÙæ–U¬ÞüÇïa‡í˜4U[8Ó8¡ØæšUËÍzå7,7ì Sn@xëà Û¥k„e‚ƒpöг_Ùž½Ý”·AÙR£ìE:æ¿ã+‘ñŽ’‡;~çnÖpD-de˜¶øÛ±¿……¦•n8»ªja+Y/DÅq]à›©ÿ±ù3^ø¸²‘²±._Y½-^tl@¿ûàvÕ"$È7¥|!›î¤ET;s™9ˆë«º8KvpÏê^vTrx”²¥Rà7ƒJm÷–ÍÀr;a¹tÄduV»êý{äÔ×H íØoøÛ#‘µ©ñåænÏj¡*°®Nôsv °ÿîs¿ÅÕÇž ü•%ÿ‚›†?–7”±ð—>¥‹ðºxUÔD• u±p›¬Ëjùê¬n«‡»¯÷ìb{ÛîÐòFÈ|‡“W˜PœY±Ò5$oÜ ¦æ¨ô³sì^ÌD¹÷ÈDÿØïw#½$œ.ør½‚€£z9Þè|‚l}R­ÀÞø”ÂϹÜî?õÅYŠ·¥ ¿_ à˜:JéBÃ1›žbiˆ+9Íž(ïP1tFö!ªoµrÕ}϶ûk607>$ÈvSm”‹Ng$z|”ý
+"âÕ:z»úˆÿx
+Ž&àd`žqxŸY…h 4?ƒ; ½\t¹Cƒ{‹+°¸ö—hC´š„>¾;ôäè몮i¾_£W‹y¯†JÚJÒèl5§½š‚Ñè–ŒNÁÑ蜌NÀS£ ;8M;9w8z$›o¢“Ëjåëå_Þ¬`¾À¦ní‘…'âZÖ7ï¡-÷¬Ô %Údn˜à—æH[Í·°B‡##–¡àÈ'Fx†‘63BGÅCù%%‘
+ßÖŒøèJ>|@~»ç¹/™-ãàéjžƒ§5óTÒ¨Å<U¶3Cýž U©"á@Gª(x&cùN ®+T7m93WÎ6ÎÏz+ì·Ø`oLVîx¶’ãlÕv³Ç«KÚàNC¿AÆ £Á ,œ‚£Á 8œ€gbCæØ°d¶²ðârþúýƒCùêŠÅ›*Ög-Ad-°æ(kQaq*k¡Žr¦—h«`¼£C‚‘KÌPpd†€3<ÃŒÉÌL›Õ ÖóÑëHÍɼ5fD%übQèÍ!+j;rœ¬ô<C «¦²
+t ¢`dˆÀC"àÄO
+ƒ«çŠ&Èh|É]†Ê>ˆ*éPE±5—÷ì2"U-xÁÌ|fágnŒ¨‘~D¥²#3–˜¡àÈ 'fø`²È“=cXžy0c,ÿ/3†5§bÂÔ0ljM£© ,™š‚£© 8™š€_:cXkìጱ|ÁŒáž3cXÍ}–%Œ¦‘´S0À’Ñ)8€“Ñ xêß<w´bjóìä=/Û|¹¾€Ìón½Ðr ¶K´—ûÈù~W‡ûsMZÆÌVÒ®NÁhuKV§àhuNV'à™|Ÿ{%1핲§ƒ§O?0{™áÇÎ{<·¿]m¼ã¯7—«‹³ Ãß©Ë]B‡wÂ7Å¢º ;¯ªõêïK¸ƒ’WuÉ<ÏL‡&+ï9 &0$i5Æ0ÉÁãF´’0ÐJa‘V´Rp¤•‚gŠ…§u6„ŒCß8¨k¬@imük v‘û¡ß§làõéAϸöØ GÂhtKF§àhtNF'àq,y+W(ºl˜Ö•ƒXYÇç*¶N]locᾪü_ïêEþ©ái*áŸ#¶|ê“q˜»ßŸë…­~Bñ›%2WmØ:ü^âb¸Æ¾žá—C Š§ÎÇé|Œš¦i_¥hzzP5Öõ|&J)†À’ÃPptNCÀ3ãP.y3ÝvŽWÓ–mƪ˜…pL…\ ¦cøIÙø¨ãÉà?4”˜ÇèÆÃ6¡Ã–‚‘K,Ppd€ ü²‘Çh[öTãá#Ï=sÆÉñ—ê ÿtá¯ds„,†êgÃçë ªX2cˆ ñ
+gÃw> S4eôº">x`<AS.u(ô¸®¼)§`¤œÀå)'àD9O35ïçâHÛc€NÉ3龩ÏÐàŸãXºN)RÆLÍ1S·a}áÿÖ>
+ÿô‰š—îb¢_œ§L},OÌÓmÈÓ2æiø…lp‰ëáøz†Ó©šn©~ ]KÕX:]s M$®)½†À’×PpôN^CÀßÕTé]/»Êælª8þPF×ôã ‘IŒNaÑè$ŒNÁÑèüÒ¦J;…/vÚTm~Ϧʰ? ©Bµ=ÒUɦX^«ºÀ"é6-R’bBÀ¨4‡
+Ëɥˆ­CSš`c±ž»Ñ㨭¶Ã•ë3û°59$±[Á¨Ç‡ƒ¡û.ÏMîJm†‘EÈAc¥Ç×NîLlŸƒ‡ÍÑÙupöš,PÃû5¼¢…,&iml®Hõ/³é€tÛùýþ} 8X>Å̽à8]åà?[/WC2ÒEOd’‚*>èˆËñr˜Üø°ùwÝV7 <\Wàúl»;,F{X‚Jµ½Á·GìZ·>
+ðÏð¹ÿ¤€Uëß·O7°U´áx«>³s/ì_ø¸ùܳå|ûŠg‚ì{ÿõm-yÕgÙOAø5~Øû…›'_…¿Á{ã³DNª_ t'³‡†bÍ/Ø2§¨_Ù>ñÆ‹F>› lr˜£‚@
+щ½m;LLÀ¶(Öò ÅšÂb5&á΃ã tܦt»Ãz5¨°l»Ð+0ÍЯα<,W¾X±àcši›9š¹·« ºBìáÓÔ®7—«‹³«Êò«:6…N¹Rv\ÑÖ6LG‡<E
+M:ƒurÚ5%‰(b3­Ì0Tíÿñ^6½Û@þ+:JEŠ¤>Æ6( Ø‹ ÉžÚ‹íÈ©€ØneEþ}ߊõAem/z’­Ñ3ä ߇²ãMûèrÕÐeÌèry×ÐeÌ)µ~‡º’IoÔ¬å=B]\%ï«‹¹ìÓwpýÈô¥O-ˆbÉ4ˆ)‰õgª·A,§ƒîeõ Ë3 Àÿíy5[Íñö `Ÿù£|V«°u¸9Âù‚š¶|¦Àg9ø,À‡ûZ,SŒe¹Ïïמþ²à“OwÙ¿Õºú$]‡fh…ÕqCôõ|φœ¶U¹)ªöƒnê 
+"—™i¨ÅkÁóˆe>û³w9ÑM¨xõÎGîÍ™€ú„_½ÖañÒpPs:ŒŸ‚ȱòtÜÑ¥ÈcË’zvõõ¶´úꑸ;¦¸ ]ªŸACÕx,d(³ù™…^vÇjÏôJ ê=¾{Š«8œ5ô~‰û\BJ3*åÀ:TQÑ”iD›\ŸjBHºÙ¶yÖxg½ïÆÉ®›ã4Ù™I¯—ÄêìézP‡;\›×P×ã9¦?Ñ€çßToÏG0•Špm·ésŽ‹[´Š¶ núbyÅ ffêÞw\F:n²¼àh¸A–×\dGu ÀEÃ8
+Å¢ANÝ\®0A[£_KnR¬-Û‘›ªrN5]Q1k5°³ÜßQ›”`föÀljÏnl|eñÓïÊâíñ.ô·ü‡¿¼àgñN_~Ðyª}?öÆYW˜‘'Ḫš|éŪ 퉸—è·©¦ßé7ÓyiúUCú1QÓ¢_礂ÿ'ýŠ(·.Snú5‰ÞM¿Ý§é×LzýÚÓõèWón=ÅíôKŽý‰†ôÝ—`*‰‡v†ûéWÔMÞÙ®A¿BÓo·ð¾—~ÃœôÄdy7ýòpƒ,¯¦ß0¶£º~y
+"Ê`–âÖ
+”nðZû2Év(—¿ßÀúÆ]ñˆ™l[6}ÐWÛ5#ôûC#²ÿ 0
+endstream endobj 251 0 obj <</Contents 252 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 252 0 obj <</Filter/FlateDecode/Length 4182>>stream
+H‰¬—]oÛʆÿÊ^’EÄì7É›É9Fà">Hmµ½¨‹‚–i¶¶äHrüïûÎ.?–"WŠí ˆEi8;3;³;Ï|^2îþmïÙÇ/WœÝïØÇ¥ø7g‚-ïX™qn¤{¡dÆf–sÅòRdJrË–,aéò?NCx  ­˜4™U%[&+„bË[–œ-¯ÎÂÙ’}gªÔÏ XÑP—E&,‹³mÍþÁÖìó2ô†Ö–šÖ^tfþ»è—l}”ÜûøOowy©‰aÚÒgÉþîÈR‘茳ë$6‘éB$œ~ôdÒ-ÿBÿ.)3[ô.«£Þ’£ã tÚÞ%‹vCüú&\_Ȭ<¹#*Ÿ1df q}¶d oto«|›)¿Ê¡)•‡A¡n†òòG²l†,ç“,‡…8$Y}I‹äÛ7Ê3Â×”@[²ÿÑgM‰Ü¦&ÙÑC³Y³T¨»«»ôsv ±{ï¡®è×]Í}Ê0ÿp¾@z,Ï$Å"(¦S±ˆb²in
+ÀÂ…>€óõÝfûXí› y·fgõc*DR¯÷¿¤9ÐÉæù‰ ÍdHMŒ i3í2ddÆ‹ÎÚºz¬ÉN¿*Bò0<‹;ã’pËLÂûF ¨wõzU‡[*a •×5§vtjÎ-p`.aa¥y¦‡¸¤ûv*kfjÈ-shè²Zß×1%ôûâñ ‹GéÂÝ]žäûŽ“_n’¯eº6yILžjV­o£…çž–9-,ù¤ò¶8f:¹sýózEë´ «Q ‹ðú(OßNR QšI”~¹I”WõcµÞ7©ÐÉjÇnkwôWTªÍ“ÿy³u
+½çü:ýÀž§yRß2RÜ@l’?R™ãþ’Éö–dˆâ )\¸.œóŸèкeYk! …oîܵ‰(“¯tÂ/~˜͠ë®ò-²*ùë—O®b·åר²?s§…¤&B&¹ nÿ8ëv¾›uÇ1gÝÎè;X74wÀº*Œëí¬«¦qÍ°®«å-¬+¦%2f]U¸ ®ËÓ{Y×-7É×O`]•ãŽŸTÞ²./©WõQŠùT bâ„_f]ȸ—JP“ÚÀfP0¸I_—C¿À±j\ÔÁQ+¨f^_’n> Ž]²{^W‡¼ÎM¸³oàu·@<<4{¼kч­ž4à±vŠ3Íý¨2§“åõ¨˜`'"SÒÐsT\xŠˆ;§#â1¯ø
+Ü×þÍ«ååùo_Üûîä ýjA¯Éˆ_'JëÚd¶½û‘Ô_ Ý ZK:]¿cšínÿ‘:ðC}çðùqã¦
+<'즡¶»G+fTª{(ÐçM³l ˜p˜ÃrL.@¼{O³
+ñø¾¢¯Î×;w·Ü£ë¬»`MìQ¿¦˜Ì»æÞ-ÝÜ9÷pG
+Û§ûšGꚢÏ{MmkæÞqQïÈëSïôùå õ„9½Þu«/ì!,è Óä¤l3…—ñ ¢8ä
+
+ØØ&Á¹ìa™V i§5˜=ì2Âv¤zºA£ÖhÿûÖ‡Óê=’”«ÛïU½âBQP,8òRw_‚Á~Â"ò¤,Gôú-iÆ©,’鈑»,:ÙHBuõ ö=0:OTsc\xŽ#R†`2¥ðŠ9è>‹º´ŒýYÕ,s“û­-xg¡dŽ¿U¯¸E,ëv#,$3ƒ'’¬U–ÿK!ÆØÕJ”?°53å'3·i¦ã€€Z·¡ë™®Õ Â'û¿ã·tݧ*©é®å·löX-1f
+¿Úq%â­á½òXžBos¼ç æÒ—zzùÝŽj÷!³w¶DԘɘ~e‘L?œV\ ¦Q›¾kM£Âþ…1)MÁÅNx:+)Ýw±¤™Ù2†l.' 
+§Ôyд›CuµN-Š1ÝB§f›7ÖÉëRÒS˜Þ?¡x¬^ªdeЀ¨"CºIßßp€«é‚¦ÀÞѯKÍ.¤säüòþDæz¢Ï›öŸ*˜LK¢åýëá
+<ƒÄÚCÞ3Pô ]ù¾ÝâµJËÓ¬ÄÔíV‰yc•^1fyo•®·ÊeuØ´§Ëðö³ä—-Bµ~â×Ç6„kžåáW½ÿx9@üx¹j˱Ö+@—Æž°Õ붳־¦†õq3C½ÙlAš¹bÇÌî£#æKñÛõr[ì妙éÃÙÉ_ qGöœç´Æv\ØMA£·ø@̓N)<ˈ¬ý}±Â|l•ñÄ('€—«Ï‹/^³ÒÉÑŒ„ù˜ÇZ-‹‘ÖÉrñ×X'ʬÓuŠó‚SfÊu^®ôΫGªfØ3aUC×+ø›ªý‘þž©Ⱦ9QIåQGÛlU]ë)™ÇUGb9ºE¯Ù¬wP¡P±ÖûÚé\ZÑ–žšFœSêødRÇ»sÕ¼ÒFB‰‡¢~z¬[¿n’­Ï(ׂkÿÇTéä´ò8,`ßêVï'39Q®ÇÒH<d‰å˜·ËÎ<$–£®,–×!±ó¶bÙ™#b9êÍb¹[uD,Ç܇Ìÿ_,— h©<éð?
+endstream endobj 253 0 obj <</Contents 254 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 254 0 obj <</Filter/FlateDecode/Length 4209>>stream
+H‰¼—[o»€ÿ
+qžv‹jÃû’¯N ÇŽ‘ÚBÐ8(im«µdInÒß™ár/Ú¥ÔÈFÄâîìÜÈ!çãÙ”qú·¹gï.n8»ß²wSñOΛÞ1_pn$}à™±…å\±Ò‹BInÙtÅ2–OÿE"hpÐ@ÑœISXåÙę Ŧ –Oo.Iá|ÊþdÊ댗¼hP—®– ÆÙ¦b°5;›v£AÛR£íItó½b0YÇ(yˆñKð;½¹™aÚâ¯gŸÃ‹"™.8»Íra3™ODÆñ½À‘É¿Nÿ†ÿB6RÖ5!«ƒÑb ý $í½è²I=!Á¾éÚ²ðGgD•#ŽÌˆ#®oóŽ/é!Ýøò§¹
+Vö])×M
+ê¦qSrLðØ"‹v‘Õ`‘»uØ®±ºÈËìÓ'\fÈ^ãúYϺ‹'dYÈÎärWèã¡ø&!¡“ƒXþ“ •UX=›Üf[,ŸÖ ßÂ’jüÅšãì:7á»Çj†o·ø+Û¸ëd‰¡-À ï¹ÄˆÔ®.=…Dãv†ŒëDå‹|â2þZv}õ~r‰ãJ˜(t¤:¹›àˆ“ËïT"ƆԱZ7ÊÂct3…|Töû¬b¯Îò‰ÉØ <ma**üÃvAßÉìVí
+F<{£IƒËloN|*Ïù&t¾¼Cù2×Yµ`Ë5XaÁÛ Ì#-»…w%û¢àçk5ÐTÀŸÌ©BA!ÂY\~eplù…£),<ÙÂÔ…-\3×뻧Íj¶[>á"®ÙùcµÊ!‘j½{‡å¹ÈŸ^žÙ`u»{L{朎6n¡n£ËõlU¡³NžRò¹&Q V—¹îl23ÈñÓkv[­çUwsI˱$¢Ssln‡îÈÀž»Œu,˜ôN^°õŽo_a†ŽÈ̾£ëÙú¾ê8SBt«åçó å£4<Ù®“<ºH¦=Ëaï#sƒõ‚ "mößÜÈì¹b³õ"Y}Á°f¢ÊúˆïUÞ.ÝÑß0^Ïño…Û²­FÍ=¶õ˜åñ&#U›¥dÌ ²¼©V³õn™ Í·lQáÖßαT—ÏáõÓº×ȹéFõóË ¤—ú² œIÜ È J•þ€ù»=¡6wh+6RSaT梭…°SK¤ ÖmJ =1%Sà¯L«*è›ð&%ŽA'Ä#mL&Â6ñÖûÁB—6tVëáX×Xï¸K±g}`4Í
+k ¨Ê
+;Eƒ…²¸WJüÃÞß\ÀÃJeBe÷¯D¼¸?»]ªò!à›ò,3vyÎp¼Æ— Íg;b âˆ>¯9ñ}î€òlv‘O<b¢
+þŸáÎø+›‘—EEšM‘袋…ÀÑ3“
+ß@Rø£ ­fì‹À±üJî÷IÓxw·"M(!ØC¿”4 \jŒ<Hš‰,&*ʼnwH23Èñ
+/ Õ¢G™†žèðÊ${®ö(³Ä]Ûæt4¡Â,‰õóùýåq¸ì&¤¸ëz;3¹úÃÌèâÍ0³ŸÜbf¿ì~3c–o†™ý,OÄÌÓ—·ÁÌÄòÖ}YÐ 2NŠQ˜ẪÊZ ²-ÎYÝkøI1tô”¬nÙIqèÉ)qtJ<‚™¼Œ˜iÌ°œ#fÇ;w›º âÑÏB‘a7Ó*E›g—Ó¶ÀBÉøåÍôúòꂾ§YÍ‘;ÁÏ,‘ôysùóÛL–·9²gìÀT kÚ6‚êŒsp€&¡ÎØ’n9ãP¥)¨Ki×PÅcP—T P×Qƒº”v uQœ€º¤¶«1¥Î:u)õ1q
+êRhdŒÃ“nåBÍÊÈröËéð€è±œÏŽg³ù¿ŸîîXî̦ËUµ†ƒ:aäQü4*°=íðRõ)Qw`&Ôy5ßqKÀ n–:®’†Ô›pN— ƒÑÄË6
+$ÈjÞ±m5‚ì²æ‹-Û= Sh\&-a$èƒ0Âw/øéŠèÔ_@ºA‡3D>$.“‡;˜Oz"q°úÏô²„.…×=üpGƃïW@ `|š˜¼ÏCð[D[¸#&¼mQFF¾"ÙŽ}òÔ1º£á²¢Ä šª}>ÕN¥|+>ÕÎ"ÄýJ>Õpx{œOc¢¯æÓ~Ži>_Á§]Wc|Úæô
+>íçs€OOO¨áÓdB5ŸFoƧýäÞOûe÷s|³|3>így"Ÿž¾¼ Ÿ&–7 †öh9˜Q˜âÓÃÊ¥vh9°¡Ë.I1ÀIJVÓGRð"%ŽA'Ä}>¥uí:«$žjk
+Íã2c…ò¢&ŠGÞO|l¦"vS9H×ÇUÅ“üzyEvÎaûã錿×5|bˆ¾9ˆ‘ˆYu¡•Ø
+é÷ð²®…„6Šáû(vd¬£]—JJÛ‰®¶¦ÊfJ»&Ì(†´mOëBKi{XÛ6oðÝ‹<ÖaB{LœÌ$–I‡ƒCXnJ…w¥8Œ•ÒÑ&»X© 
+9’ãû› –YV5Ln–@Þ‹ìf÷?Ö˦·mÃEG{‘"%ê㘶º‡Í›ôÔîÁµÔ€c¶‹Eþý¾ïP”(Ktì8—DÖh†r>ž™~ïpé&,Ë–JŸ‚K €‰c.€èqÏð¯ÄhZMìãÂæ2ü[®Çä­|} býåéü”v°³$:5Öô6Ú“˜+¹ªÖÏ’É
+ÐÏdby³ ·làF€£êCsrD8«¢­>Þ[‚#¾=¹¼–‚ÌFj·pVK<±r´pT‘³u¹u.`»‘ÕÄÖÀÍà¹ôÕZ+§<ÔYJ£n @od5±u¼Ú1íéÅìjÇhä8fúÄ—˜YwsF
+î[7×Á"íEi3½N“âêºDô³§—fØìÅè' Æù{=úÑÜÀÛ‹Ñ/Îü]½ýÄ@øžq¯pU³ ÛK_˜ ÛÑ%;1ÒÛvô¸b–kù2Å6/òþ]žÿ×òÿV×Q÷ôÌõU«9¶ÓR»½I“u—5SåC6$ÖG ]HŒ@"PÅp˜Õ% vûˆûpiCH5õ]™a}o[`Âóå8ÅXb¿aÆ ê6*´]4¬ =j5½5“-e9ïñ0E–IË ”ºÐ„š7I€í¥¦ô ´Dm/Þ?|“,•ïÿ¹“ŽöD‹÷_<öT.'TšÑ ¾,…@3 /•Ãß›hSon[eÝ€€VZŽàé|ï}ýCÇU=V•:
+‰u¢­«ãâDeRVbÄŸCb·ï€¸ÏùqÛ¯‹!á'¶Yƒ‰Læn¸Á˜ü‰î¨Â ¶ ‰=ÛœðËŽõ²j˜"ɲÚ'}´7¥9íØåÖ]oîò’
+»ïVÍïõ½ìN휗eßʶÚÜDŽùM/½r”Ò¨4ræFj‰š¥o׬>‰9ó¼å³a8ãfãb$b­8Ç<æâš Ô=Õ&`º
+<Cn¤&%Êú\/ÑÐ¥Ô´ºhrºGæ6Ôº
+ƒn-Yê›4¹§¤çoªúë6IP‘†`=|—Žu3l;>ºÊÿ
+endstream endobj 255 0 obj <</Contents 256 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 450 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 256 0 obj <</Filter/FlateDecode/Length 4518>>stream
+H‰´WmoÛÈþ+û‘ü fß¹Š
+„×´h`—®– ÂÙ®c¿°ž],SkP¶Ô({1¨ù65Ñ‹ 6Jîmü§×»ü*J! ôſ ûÙ¨JQ芳_‹RØB– Qpü.ðÍ”ÿZþ þ;˜l¤¬¬MVOZ‹†NHÜGÖ‹/ߤò…¬š³Qõ Eæ„"®-]²kô¨«ùcª¼”cUªI‚º‰.ÕÍs²lb–ëY–ÓBŒIVïJW|üˆy÷5&Ð6ì7üÛa"w¥)öø²Ùö¬ª€èê!ýœ]™ÎÝu-~ÝwLà_óì”ÞNoDCyÕ8%Ø) ŽtÝ¡ô5.1¶©d¥Ê¤7»~sÁÊÆÉâý\Ø©DUj ‰0^“FcõÁÀ¬*”…ŸƒŠåm)Ñu¡‹(P'É1Æ’l‡{êPøѦ÷’M©!juq8a×j!È}U7Š`W—l"úRˆbo«ö€QÞƒ—¬ew$’‚Ùö£Í¶øuÍZÏÄ褥)¾•¸ AlÃ{zÁo×ö(îa»#)£>’¶õyGž{üMêñè\o"ˆº’à ´†ìY¨W«žq/„öU
+r6èÑà…{^žkó²f®~ÜQÖ»~5ñPZŽ±}¡‡^Ê“:•z(ëJŸõP˜Œ6’u¬íºí¿t‰F%`B¾Ø3/å)Ï”’U¢FÓS…~•\ú©F”ÇO”*[Â5QÅRÁUëàv®Ù¬-ò´-ºŒKªÓ.…vƒ‚Üp]ÜÐÓ¿÷+|vØãÕÔÂO¬àïù{)câffŒ7óöSwßö‡ öÍÕž­;+,á̓ÿ¼í'˜€»Ôªg%{:ÎH@>ÏЂ4ȇ¡Æ
+±Úf®áL  ®­§JˆVqŽ Ó5GS ¯Î³*
+øNx@.ØaKŒÝÑ¥ål!*¡áÃ[ˆÄŸh:µßûíqÓ E#4-<gý1D˯#Ü>@Ï´VyG¤2LV²ñ°Áí¡á¨>QÇžlk U*Š„»I¥fÉP©9Z¨Ô,ÙWjŽ*5G>Ê$¦¡‰IÌ
+±¶•ÄáÁÂ)ÒëkÀ`PŒWoËÊ 0ÀW
+“ßâÛa»+…M+Ä>¯B\<H¬}Ot\Ù|¾ì`:6ìFž¢
+홇tf¸‘ì"»±X› 7f;Çj}:#«LqòP n%-" ^À¯„ÛM„ϸ)©‰×â$„ϱŸ"GæPij¾h6ÖX_^¤ÝúÅÏÔ!åtÌ+k„¹cŠ˜·žLÚÓË×ÓPÇKDÆaq‡š¾nû/û¼}Äâ‚úMq·ÓÐ
+£ gp÷TñiK ÷W¦¬Ær¥‹³»¥žs/cæÓå÷‡»¶oxí6ÓÝQÃLµþŸ<oÞ§p™¬=US"^ÓIÉbQÉ3¼ÁæÚÓ5Ý• 9HÎPƒ»é
+ÓÌ w•S7Mjì†qG¹¹†vø&åE)\±Çï³ääv;&D‚¾5´D©¨oêâ{)µo¦÷÷¬ßVlKà‘º‹=óPpǶŽ<RúÐ.¶Wìçöî1 §=ý‘â?j–ÂS9 d­«Zf[g b½«Ië YÉpKMʲtˆ€çõá>A}ARÐkeZÍÇ+”ö¸©q ‘ˆ†[S7$‰Þ£(n’¡¡…Å@¶Üyxƒ3 NÓ€0HA“VŒU #Ïš¯!òblËÛRÊ¢C@êè‹1c Jëa•.18¬AO´µ)e]ÐÚQÛS6r¥cÛ5( :tÉ6P‡=º»Æ·4$]t{”‡o;¬ì–èø ®›ô¡+%(^¸â›/ñÿP¸ƒ+†Wƒ?†C;Èù°µ~\ƒfã5ß %€T$©SpiñzÑI<C:XYÄ«ÝŸÓ8×°8N3‚~n…JHèù
+v]¹ÐÅ =ý{¿ÂgW6éÕÔ€»­ý=/ý™´¨#\#ƒ1o?u÷mØ`+]íÙºÃ=g¿ÂÞ<øÏShe¸K­zV²'vxù<û‰«k “3ƒ‘âl
+ ýif#àK  †ñnAY2¬99ZØc²d¿¨äȃÑò|©•.¬YšÅIªiMÅ= LLä®T…ÎöóL‹k2ð¶coÖkÚba|Ѽ÷Vaçëç,´°²5“}V£&Øg5ôÑcP†>£™}6¦Ê!I±pHUŽŒ©ÊІTåÈ!Uòª yž*—5ùD®@¬uI® äJ¹zCx{¿¥;ºAŒÛ6ô«ˆ2¤’ ‰ggÈx)§3®Ê'2$AB‰)l¨`p3Í!n$»Èn¢$ܘß«õ Œ¬2mCú3ÜJZÄ뼘¬
+Cuä¸AÖèµ8Ý2ì§Èïkh!Óí5)M?#Ô
+]”Cê§_æ8æÎPåt±=æ^ò";¶0åPa$Âqçl‰¯Ždîˆ7­N˜ûNîñ̳[„dUµìã[™{M1ê=ž¹×>™Qµofî¸UÕQ<fî Ô©}v—~Ž¤£«•—Ÿ~Á·ª‘r$ȘbUJÚ´ixߧ̞$ÍHUÚìsNXgxûÁ]q)åáÜ—fBÜõ,qïfx{—?¹{Yw¥ ÀDf¦ÖCˆë4¼ø7ÿt!+e—Wß  ÜI_ðË™ïÜeÖD2ë„ŸêìGÅ4.Ìu®
+µ’I~È®ui¯¤³>HØš¢ÅÚ½c¢°Ó}ŸA‰7ƒT:t\ñ“«Bí~ N®°ñM0Oic€QÂ[É3˜›†ómt¦¼=éì½åH¼=SÞ᫮̘,{&¼g¬)Ê™äe¥…s‚hzJ¶Ñµöš©p3¦™ aVÔfO1;0¶IçG§QA“¶|º]ƒìÁºÝÌÒL^ŸOšej[ñ’°Ì
+,³ËŒ R“[ªÜ=n„ó:³¼xÆ þ·Z‚%f7’àBXœ¨·ãÝŠ„$4û¾8±,ÄäŸø„ ¯—¼ÅºÜ}q»}uF€_~šOd¥T£ 4]/ê–kÝÍOiÛìbq|à¿ìÇêæqõXdIVøèQ¾ºçã*;E /YÌrK®ÉR¡71€zCÁéƒÊçòŽ±3YC,=Øòé1´ª’yUætãwbu‘¤"©ÃöûÓŠ 8ñ5qºX?]V\îbï;ÄVÆ?nvÒ¿5ÿ>1¾0&¿Ÿìrè3þù&â€ÔÛå©\¢Ì®O€›ìÛe¶|'ËÝ0ÞZboƒU½E¾¿ëÃ롳,$.l(D¶_—vµº8‡Kû̪
+ꪄxKȉ`LH‘þe‡ŸÈùÁîzŠ™²y™2W•–c2;˜2ûœÖ±q´¡Ùëi »a¾¥§½8=ïi
+E‘ù5mÏ]@I j™”1¡¦9=›²y¥ÌDI³QÊì@”²Nôì^0ã]Ÿ›®oQþç8'9|"(#m[ }¾"Çø–ÉÏ9éΟÎÀ‘çƒÌ2å+!1séJ”i¾)\0o¥d4"zŸ©ôa8cöò•,í”téê\¨×Õ€ûúÑÏÖÔ"‘ +wTjו˫î’ï_>g׹᜿^=÷§¬¯bøðŽ}=q V5¼Ûù©–²@&Ì)³dÂì™°Žwh‹¶ÚtŠERQGé=(~Zo ¥¨ñ~f3
+ZC!úÊü™÷„It‰·âDê![ ÓiÞYI2X[3¦zavÍ;WUUD#*¨†)‡Á–ð홡àÊps§ 4á<cŒž~hTû“§«ÙSŽ
+Î.Ëmâ°(-ÂLfÏÿ
+endstream endobj 257 0 obj <</Contents 258 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 258 0 obj <</Filter/FlateDecode/Length 3135>>stream
+H‰¬WëoÛFÿWöã81ûâ>¾h!É¡õåbµ‡Cs8¨í¨°%GRZä¿¿™Y>–"W²ƒaŠäp^;¯ß¼^0Aû;öêí`wöj!ÿ+˜d‹[J!*EVÙÒ
+¡™ ²ÔJX¶x`œ‹?ˆCFHZ1U•V6óUé¥f‹5ãóÅÍ{b˜/ئƒ)A¸ó ÅH¦|)<“d³}ÍþŶìõ"5†D{wðꯡ}Q^c ¤sÑ(ý'¨5J•¶Ó*…x‚ZEjgÓzI 8Ñû¿aRRñŠ[HÍû5¾( ÉM)Ø'^HËU1“\àïªâ?‹¿·¦V(Ùw¶ê³f¢…Ãx÷éyÌ’£¨0F½|©Ê`/…vŠª EÂ|*]*€5¦Ó^¦*J9UeDê”MÃëB)/*RU^áFñMó¾¯~[xþá[Ü`¦ ¬ ìOü­1û¢â¼Ù춌«âW~Á>™¾»¯—øöP3‰¿ªc§J²_µÙ¯ÉL id\ ;é¾·µò‰­¡T¥.¤à/¬˜¯ø»ë×ìãõOìýºÞâëã¦üø‘¨XwŠeÇ£ ¶²ñh0†Fmá±Õ¸ø\(<ix/ÐDñœuçŠ"W IxÔ°îδbføº˜Y&Âõ¸9~›0/é
+ŠÊÓ•FT­0”¢ù¼˜)Îî
+Çï ÅwŬâ¿ãeI1¸‡«àß
+8Û¬ñ=(tx$øþfSĸjjÅÙÉ ìD³JxßúI Ê
+Bb!m…‘¹‚²j]À“9É@’‡g,m黨¾Ÿ¿z Vìw_Ùõò¡N;‡„°€ºÖ„‹$áMôF)'Š9KŠM:ÈýNyR/5e(JŒ¼ü€…Têíjà ’ðµÿ^£”s*íÊ^r¨ôi¡+CQ§òËí]*„tQßïI9ë˜7¥êCW œÅ—B×·I5VI'²”¡>$T—öü±†ÒY³Q“ikðŸ¼Ã
+ぬ5
+ö5v‰[ºÆûí
+¯5TmR“ÚBmªº§økG(ŠyyS?,·Ð. ¬Y÷H¦ž ‰aFŽ­ëÃ
+“óï¶Å°ÍÒâ“Oi3j¤¤Œëîj¿9nVËû FOñoiñÈcž—£C$à\zkQjçÜS ÉD¸¢˜‘s?ÒóÃas·­óɘ;¯Nä Z£óRI¬°(  ¼ÁÐDè®Üž•ˆX²ttg™…“iˆJ”ÎFª´ïsd¥,ÕDŽì,öóYk
+ç-î–Îiú¡§NX7­W°0æCî
+aж/n€uÏÚIʉ=I™O¸‡‚ Ü„_‡Þý\H)%eÌ0 Ñ桄Ψ(Áà•rÁóÒñ9À |ûúz…¼äÿi:Lâ|‚c>‰WPST)Á΄·ÍÒ ³tw®– ²TŠåÚ$Îp+å:šÁÊOY›ϱ¹êí‚ÓÕ©Ëmþg¸µ¡ï™Uês[fNª¬ÏMñä˜é}Ê<³±š ÷ÌMjêq~ gE‰K(µ”“$ŒO3ü‚‚®¦WMmÒܸ@¢è¾—¥d’ߘÊZ±£u¼âW×ìÍîa¹Ù²÷Ûõ¦ð|µâq·ï[³îjJVê²õR¯[VŸ ¥ áwû$
+4}‘
+ÙMOž”^vHø
+vÒkø ‹™åK¼n¶xkñgMo
+‰VÃÝ‘¾›4]¨V‘ v
+J{ƒ]mƒÏ·øý¾¨ÐõØšß íSœ­A¯ %ù’¶2°Òón“±ô…ƒIV9ù}qÅÎ\uvëQ#yð¾òR¿=ó÷óWo Ç÷»¯ìzùP÷k'4ãŠ
+°5ᢙfLRNÀ¢ kµÕu-ü%W•Éh#Y#7?ì!5êC½] <TÐbÜw{¥œóPÙåóöl0ÇÚ씶Ëí]j ®ü~ÇPˆ8ç˜Öz"GÅE±#©‘¦(g";Ù',Ô—öü±fËíšõœ’í§]ÑÚ5yÇçEDþ¿ñ=ÁËÛ2#]ᵦ¦×Õ¢‘ÇEë&t°Ké©;¸$ª‘1QÜÈÛ›úa‰ýúßêÀÖ5všÃ
+3wó_ï¶iöV°†Égy`G
+ Ó„Ñ]`3ž$æ U€­0±`š3§ùöoìÃM/Äè®Þñ¨¬7À™ÀÃí§¢¾1œrÐÃñÂÉ–«pÝ'\ŸÒNdTCÖmjôâUÙ)ª„[¥ Œr*Ã
+4|Ó’G
+8Q7¢^§~=ˆ‘˜SE§TKYêïñ'
+8ç6´°Î
+Úyw”·c=(EŒÂ´øV8(‹B9>ˆ“¶Ó¡ÓzóNøEÎúï?9‰ÏÏ>rê'ÝjÊ"è“ó1qåÖÍ3À3X×:óÿ
+‰I™•žÙëÌœ½ÎC-
+endstream endobj 259 0 obj <</Contents 260 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 484 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 260 0 obj <</Filter/FlateDecode/Length 4935>>stream
+H‰¤WioÉý+ýqfŽ§ï  i[E¢³¼AÀˆÃ@Ú$µ¶ÿ}ªª{.Î¥u ˆ×›®>Þ«WÕsQÒßn-^½¾+Åz/^Íå¿J!ÅüATEYZETº•¥¾’…V¥óÏ"ùü¿4BÆ%Œ@è^([8]‰Y°EZÌ—"»šß]Ó€«¹ø*te
+îÌb`¸
+…tB–\ìVâ7Q‹‹y5[Œ=k¦ù6\b ™Ö¨Ê¸ÆOqÞùL‘K•Ya¾Wâïñ‡"—™)Jñ{–K—©|&³—øÉæÿœÿü7X²Uªp¡]²>¹Z\èð
+‰Üå6Ûã‡Í¶¹Ôœ®iè/Å-ÀôÜãj¿îWBâ»êó=®,ìÅYØÒs[‘´Ú‰í„âáN¬¥ÝÉõÕ«×¹ÏvÛ§/âýâóª¿ ›‡éš%<»‚a1ÀÑœ™èñ%=_;ƒ¥‡—eåpŒRŽövƒ4¬ö«ú~°-%áéðl+8µ-¥*¯™ByœðEä '¢0ÇÝ.êõª?™­(¹~~?àä~Ȇ»)J4ÓçxêÒJÄN¨Q /dö#×!û²‹z):ÄØaÂ&ð0¶U §&ö2Îdô?×÷øºÊ«¬*…UýÓ4þ%[u£EÄ0£ Þ­>/êÃ&—&»ß³;£˜úDÌÁÆ–«ý=*}ó%ÞÖøÚÛ’‘®/x#_b%j4} 3ÚÒånsØÜ/7Èœæz©f,ßÏK38%Mãu!»)ÌKÊØ_1Ìhsç¹ Ù~¿Y×+^ˆÜyµ!tÎKõÈBÃßð%ÔT 6z­<ÆØqV†Nâä`µW%P•…w•®ÂϬ”C›æРÉíXÏb˜òŠ‡9'7;fàÄ’êß3%32%`ž*§§ iøz©õþ/rQåÆ/o±z‹ë劒Yf‡ä"3c€Íw­£ÈP„
+ÃcGJªõE
+©uœà4t¥½ ¶ŸZ£Àt jg&ŽïCËÑj /"  ¼o0p‡&10‰ˆÁqp7"bà#ß`äS¡§ƒ|JTb’ÏÙ”ptë9Øâ}ƒmh-à hè=ü_äPz‚Ê¥úPÙ@T®30"£¡¾#¯ZÜì¶èlw6Kº¥,'õ–¶©”œ+èºôM(˜ÕŠž¨QoªÒèdГj>ê xË ŽÞ”¬Ü\åHŒÜ88ÊE£Ü8åÆaIn,åÆÁIn<.S’¼òZ:9žwñNà‚‡M•:;»¹»D }ÀäÏá$,Õ£’ŠŒ‘¨„ÈØkLå>#sH º…‹ÆUpD[3öá†(NDqh"Š‰(kˆâàD7D1ðQ6e…wO|¨zD!Mw¯¦Ùõ¯cA9"»
+Sfß>hé”æ¿ÀûÕþ Û-1ÚkÛ÷€šœK¤AÂw°›¶ï±ZR‡3“æåhQ+>ÿ Ý[ƒ‹çQúM£)û0%ß4J¹7 5©Ç )ó¦Ñ&ñ¦ÑqÞ鮑•aœ ¯d ÒRA¸Î”Ï0!rJ
+…Iß 1j|_÷<øXhDõoiØn¿ ÔÄuD/b(!4ãXÒáLÜý&ìX¢_߈܂qg‹NcP3öøL2´:–`ÆrxDGÑЛQup±š@[(7XƒÀ¾ÚÆŽ`¨6 à„ÛÛ
+Ì¿ÇqpÔ‹FÁq0*ŽÃ’äX8jŽƒ“è8xÂíMçŽõF$TÒ7ª»›Ýæ(‹ú1Ù5ܧV›ïy¬½Ú´yHìÁ½FkÕ·E¸cjÛ´ÛÔŒ»HöLa¯—†ÁF|{)üG.]v•ëìTVÒ,Àk¶Y×Û¨±#Òñ
+R­#J¬ß Œêô0ˆ·…‰AJ8¾~?[©ËA¥îZ^2Z¬Ð²W¡;_6mÝý>| ÿçp jÎìyÓÕhÙ>K%ÚM—èØÂa‰6ƒ
+­|W¢µ©d†w®·QÞ¸.Îß‚…z°P¸ùºJÈ.Pš9‘]ÚwB„’g²‹SvqhÊ.¦ìb°&»88e7ÙÅÀÌíŠ)ßVUÉiSùþŠ^zÞFyƒÇ ¼ÿÈ•&G´U눮° –“Fê'ŒÔR Ãf4ΪþÒQ Û<E­òEyÂ88QË¡‰Z&j¬¡–ƒµ ÜPËÀ/òØxY``s-š²ÝÙ ¤,lh ÜH{lÃ. õÅ%|ØÖ›õÓýtq Ön[Ÿhæf1Z¿‹º®¶»x/h¼CYm0ã÷ûÔ!žºÏ`‹ßÓ[׈¹¢T´ `®ʼnޢ**T`ÐTª¥ ¨3 rÔYP†;¡·ÒÁðÝ'½qhÒ“Þ¬Ñ'½1p£7žèÎt<lø{«©ÑÎR.ÁMOØnGë¦æº´ŠŒnmäÒF§0
+ªFE5 ÅlL,ú-Ž$S™Âº.&A)¡
+_y^‹ü¦ñÐ^yÓ9¡kÚð¥W«æ‰&nû`Ó—f³]-j4·}¨1#t%rQª&¨°*׳'“™;;%òƒg¨Æª'©)€f™Ÿ·èš]³ž7>RÈ"¥xrJO!E:TÇ ¨ë±!¶g—ü-̇Šx™CEL€>˜¬Õ9ö˜ŽÙ£tŽÜÒ“<yFyG¶å >xµtp\¸Ê²ÀÌeò܈Ùz >³p54Dk4 ƒÀÛ6t{ø¿y^ÏéÃmcŒ:+(ý:+"§¬ìª]š¬4Ë ¬¼ižf\Qu2߉7°»9EêòÙ|îpžIW/?]³@*c§kj–Ê+äëÉ:¡.²`ãu|²*]âÁ¾(lc⢎ʔÌé9&†Ó©Á‰Ý¦#bëOé‡7j(pY­‹S™h––¢x‡©È±¥œTÔéü¯#,jóþ5¹˜Þv0•a¤²#on¿L¯?ðø.Ø9ÕŽi˜¦/r—ÜLÿ¾ºKê»Ñ݈"È/M©&JµÛ»;šù%p®VŒþ©p=€
+á•ñ-@‚Ï‹ãf C[{ÏÇÍÚ°oßÚ—ãfîïê5¸™÷á4*à@j…•µ°/ÔeNá‰UF;9>7H§Ö¶g(zÀŽ˜˜ Nãb˜/ã‹[xˆ‰Ý¾#â>qvGM~-‡íS!MN–8,5H€´ôñÓHÊä';ž¾GOÄ'¸¬@C…2…TƵ>Óø 5ÿÚÃwÞË
+J=îF )¤/ï.Ĉà›ÂK‡)[U]¨nZÕ^ðÞZj†š%âxG*H¿üq¶ÂWú÷ØÓ5 TFzYŠü4á—ùfA^cÑ<P*¡5YÖŒ$·¯Âè½ PÃØš)ñ•æH¤ŸäŸ‰¹+”šQàToI©j£Ö¿O©nçRª¯7@©NÍÛPjßÈã”z¦-¥F 4”êÔ¼ ¥ö”E(õ\Ã¥F ³”Úêy;J= Ò7§Ô,¥ï¯£Tgï›QjßÚWRê‹N;L©‘ƒ65—êN1,!}aŒRON©hw(ˆ´çó˜Ø–ë˜Øä˜ØÖܘØí;"îƒÔØ¥\“|Œ1ªKT&wkQä¦ïÙÍ€WUçt4 À'$duÅ5‚¿šã¨ýaÓÛ¹ý2½þ î’ênD$+Ëk‘ªˆ²V£c‹ –•ÅH+<Õ‚–F8+<Õb–F(+<ÕB–›d¬ðL‹X­­AŠxi(|=_aÏyqpÿþ`
+endstream endobj 261 0 obj <</Contents 262 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 262 0 obj <</Filter/FlateDecode/Length 3694>>stream
+H‰¬—mS9€ÿŠê>i¶Ö“Ñëh>BBÀW‹—ç¶êÂUÊàølÖ6›äß_wk4/öȆࢌÇÓR¿H-õÓÇc–Ñßòž½;½ÊØýŠ½‹/l|ÇŠ4ËŒ¤36µY¦X^ˆTÉ̲ñ#ã,ÿ—f?#ƒ(ºeÒ¤VlàLê„bã)ã'ã«!M8³¿˜*t
+ÊsV4L—.–‰ ”³eÉþdsv<n{ƒº¥F݃`æ[×E¯²òQfÞÇÏÞîø
+L$BrôÅï‚ýË¿HÁuš±kžËe2<Ã÷ŸLòŸñ?Ñá?Àe#ej]í²Úé-:Ú]@š½áT âõ›¶~!Ób¼Çé1”éë¤eKà®m?gÊkÙ4¥e;(È›&¤¼xÉ.›f—ó­]n'b³Éê4qüâ÷Â׸¶`ãw‰¹L _áÃl1g‰PVW‡íÏØ%ˆiÜC9Á·«’ ü–ÍþW~Jï§÷N¡£YZ8kÐOy¤ó‚¥çÆYãZÎ)/8~Øøy>/XR8ɇó»Åòq¯×É@£¯8‚|@ÛªY#QxÓðäW¨°Æú­¬í* ?ƒÝ1D¨øWX©Ù*±œÍæw‰Èøm-A¦ùc"Ÿ¬Ñ°ã¬|À5‘ð¶àþ _¯Ù-‰ÁÅ‚OføHÚè7*/Ùð"ÀüÉtº,QFò Žœ²O¼ð ~yËkFJ"¾ VïOJî³°%1¸\ ›rXj Ée ®øžÜ&¬nÞFj‘>\5aSWïÖðäÝi’óåâù‰&eûJ&KeíÁ^Èö–YR’mØå¬uˆ„ËÛ‘jðß½ì®ì±Fº¶¢¼ÀR®Êùm'@)ó4½1B¯eW„ÒÈÔÕf`¸Þ`µ•ÛÆPÕÖr^Næ÷eÛ ƒEwoŒ´ì
+L _4‚ «Þ¾­kî?¹]åD¨#YŠPþ#QŽ?•pܦlëöÊÚ·—ëI^Më—Áƒ –%Í;úïŸç·ø¿¬¯(:“:3©iRuY‘ª‰Öl9ãÕmE{U>NæëY×ÄíŠMKº³o1…gOþ5ÜíÒ‰¶W/ÚínÕ!ñ† W~¨=™¤/ýõwBCÒm±B¤Ú39Ó0¦Ê,Í­—ŠÜFEÄRÊò˜¸ÈÉrD¬ÀÓâàwDÜ-˜´Õy³ÕÅÖV[éoe[àú`姼¾`GXFh‡1ßVX&| •—ãnMaäy#°©,ük¿EPAq5«¯Cu~¬ƒŒpAv4‚Ïq¢ø?VìaACˆ~ŠÚwI%ê»°aÞíä¡‚UÞ&"‡»4Ó¸bÌÆÕj†òû9þ(§ìæ
+Y£½[A`;
+ÙJ~ÍåuBîø5ÑõšHï4ž‚V¶í_6K¨m
+Èj'?€Õiùô° ³A);2¤ ÇÜ?>N„ãf»€lÇ÷«UKuþøÐ5/×ßQ Rÿÿ@ßðô·jiO#¨m¡÷Š*HT@c‡7A=9œŽÈlh‚jh’íË>œœÈTçeK’Öìê`Åfƒ¸Ñçèd39»Èd7“…1ÝÙáTÆV¬GÜL®Î¬bíâÛßÐX çU·Ëïæé2d¶»›2+¨¦wš2Ç µ¶cïO~ûíËÇ£÷gì|q3{˜­PÙ¸z~zZÀ©èëËT‹ÝÔ®ÎÌV¹Vg&¡yÂÛ:Á—ãñÄÂu‡ù¾À§%u@Ð)lŒ4%Áœj_ùhjÔ2CgI†£©o£gè¿&^=Œœš7çí—xnMqÐmŸ©Å/`èö7<Y_QV¶Ô$à.›°3¨:#øãÁÐÖ3ŠiC¤‹%›WÍŸôžÒÒúUÌ«íÆ6÷…©î Ü!د/x~$ü…ÝzG^½÷Wg#¿ 9ˆ?Ñ*^¢«GEGÊ«;ÃÂUÿpÛIßèaSR¹ÕÚÔCv Æ88è/ï@ƒoí@Ûvû:Ð`ç0h7ÊÝè#¬;Ðh„¾ fÓvŒE:з:Ðh`UZÛ9\º™¥ï@v­Kòuhˆ÷`h7ÚŸì@_µÛýhd£=”›÷UØ®0Ö‘U¢½@L\MTì‘%&® $&~GÄÛh«<‹x/`TŽùWíô{¸øO (y€gðaçX„k*ÈZˆÛºöºp[qæF«À 뻸E…îp¥…âçTÔhUð“Ñ'*GçX¦N.ð5àxpò¡åCë
+F„kƒ0Å»'Ó˜†<­îKL\ÑITìñ#&®
+pýpmp- 䌞Q4ÅñpsóÛŽþ¦Ñt5ŠŠró\†½¸£½Fèÿ
+å4ã:œÞÌÀ,=
+îᳪZX¹ ºX˜•=$è*Çöå <x+è¶íön°sÐíF¹tßa ºÑ=è3‡ÝŽ±è¾5°
+{Õý(úªÝîGÑÈFW áŽß®j]a EwO†u(Z¼—Û.aDÄ"bâ
+"âÿ³^/½mA
+Çå`Ä>Øe¥êƒc«Rë‹Õ¦ª KiªüýÎÌ> 6ãÄ5‡$À°ï óm‚
+­¶%zÌ =Fÿ%evÂd8 f’æ!l=|9“¥(g2®4š,Å“qE£ÉR˜1[šL–¢ŒÉ¸ÂÁdyÌŒÉØ›_k2Ș,o2ö‹õ—I&•‡y’ÌÉœ0Äâ[%6ý3Þ÷‡·RÖ¢ÏPƒíÜõ?÷?ðjWZT0«\høxMNæ^áä 'kܪC°U „Ãóɾÿÿ3úŽ¯@p’×Ã;Qo
+žz®ð1êþ“šäÖ
+ª-<ÀÚŸŠ=]cF•+¤:°ÉZB£—¥ñÒÔÛ4È–¦þ»ø ¯µbY.¬¸#N.JG.¸ýJ·Å!6¡bco0™¿Ÿp6_é«®_¨µbGO“>xüŠ4ÝÅ
+endstream endobj 263 0 obj <</Contents 264 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R/T1_4 484 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 264 0 obj <</Filter/FlateDecode/Length 4828>>stream
+H‰¬WëoÓJÿWæãXÚ˜yÛó J]]ºlö®tA«ºÅ{[§7 ü÷{Ή'¡!R{ŽÏûõ›×s&èßú†½x{)Ø͆½˜Ëÿ&Ùüšù\«èϬËš^æZ ÇæwŒ³lþ_âC
+y&¹ÉûÄ3é¸Êf’ <—ød³Ïó¿£Áÿ“­R¹+;“õAkÑÐq
+¹Î,ßàC½jX&5‡èš˜~Á.€Lßݵ”ëÞz ,¿$²]ú=ÛƒÀ=ã«Z´©˜Ä¿jhô´EáD®ÀgÁc&H‹&Pôôž$ pàLgÀÙé Œßzõíž/Ò‚î΂£ìÕñ‹•œ JD–ÅÐI¦—¿6 ÆŠHÌžo0õÕ¦j–#·”*@Ûü
+ù¥¬ÊËN|nŽºr7ÖƒRöâw±hnª¡®´”Oq‡rGË0þ¢
+óûXšúNVûóZƉ¸SŒl ­(ùÏL—ü¾b‹æŠõ©+ ²Ë=w´t(dCøDe¯¡É ¿¦ßðÜ,ñ·Ê<ïtü%hsÛWäñÙxxdq{Ž^Vw‹f[gÒðå†]U8Ž6K,×ú>¯šÑþrhÕÃs¤s £Ç]! -ü‚z¥½C4LY3$kÄG˜ ìÕ•ÀU@TY”„d¥-ÕvŠì Òœ k°ô
+q¥±[ Ù‰‰þØd3ËÿÌf%§§þ|Ϥ ¯ìãìâ|žIÁÏB ö‹D Áf2—Þ`{4õU{
+WóÅÅÀRÓÀŒ$þ,$Ê:·ÌÈ ç
+伇:c ÍhÏOÏ?“‚C /¯ð˜“I§oz›öàH•^uæ¡ØOàíŸÍ
+¼gÿÆò<ÜÀª•Ò9Up({{º*ì+Ř©2 d@‹JÄlIäT ˆ âÐ3Ç:KpKP¤$5,àXƒ V$½fG:ànK4Å ä^vQ ‘=s,à3’{fií˜;Öw*bäž¹­~ïÞ¡[Xéˆ;$&}þº+Á°e€¹/ *ÀÛ‚’è¹åÊ2/Tì›[˜Ì§ó»ó×,ó¥â'‹ûŲÎJ¾Åæù
+k`&)”±G!iÔ¤Ó¦;WàC«oeoù×ÌñzÃjèMǯAÏ
+Ö@sü.Sz®¦£>dÕ-âF ”’‡'<Þ²e÷IXf‹Ÿ7™áívC5«éIWø=46_Žä¯‚] vŽ r FtšE{ ¦`¼@vÁÙ’âµý‰¦3êòklìí@v9»
+\w‹óqÀuß•½: ¢‡^£›Ï†^ÇÞ>½>(ÉÓè5‘ß°ü,@·¿ÉÆÄz=̬ ¬Ž":3B)r‹’ä
+ôSE.úªWŠöƒM¾Lcu˜É;[ Cöð>9 ¦#5¦Sܦ#-¦S¬-˜Žä˜Nr˜ŽÔ˜N10Ýùœ
+?ñ& pÊü~¼ú­„Ñ*žõ[Xbý:Žú£OEýC½S¨?êyÔ?öò0ꢇêOzPTó<¨¤,úŸêXDýIÇZÔßé9†ú)u= >
+¿a´S¤/¦t€>{7BÏ÷Nc„Sä6 rŒp‚#œ ;‡†¤ßA\£0.lt÷²Œ3òåËw0Ïá?Ý0/Ú—ß ˜‹nqNÆû&ŒòÂü}xÁ
+cÔ}”¡q™Š²Õ°{W¼š¢J¥è÷Ì1 nYøŽf±Ý¬1A V$½fG
+Út£¦8½_âÒÊ% üë fc1iȈڰ\!úâ ‘WkxÑü.Sšo²(è;
+"ÎíWd9›ÓñDz„gXŽ%¯–9û7^­Èñ?ÊÏ.ø2Ö˜`B«Žýgzïó#ôÿ ¯–ݶ­ ú+YI…ÅŠEQÙˆ xÓˆ»J€‚"¯¦´%”‘ü}眹J²Ò…(ò>çy振)ëÒ,„ôÊëGÑü‘òi­ù€}ŸçTž/Ö3ÓàiQ°Ÿä®–õáE–B}ùØðà G.«[]”r, UeÔ“ªC­9ÉX­Ý"^9†à”wÞH«®yøŽã—áîQÛŠßà1
+.¾S"!ïÏ(qNŒ¡âÿ‚@•!1Ü&;Ý÷ kr²BøÊoqºÔ”0'HWµ­œ °| ù´ºGÎ ÑY(ךËKÍ•úböáHcÀ–"T;_ÍlcäQX ¶G‰”æ°ûŽ+iŠ=Òcˆi£ºë¢˜5f‘ïã!Õ,•QÉ”×ãWñkO{¤1ˆsí
+m‚BL·L ÜzŽ¦Éq’( ƒ_DïÛËÓ ¶O0%Øá L$s¨ëSß[¬©­ÙÙo{dOo!â(þèÛzãìxÇÏy–NB>Ë‚XˆµprykC8B“Ä„,DÁ¬pvx… ˆÕ»`ºLZZ”& Ë°(‡îðÊrÊ»ši6W}sgªà6ŽE$]6—ÓšY²‰Ýe ÓõûÿŸh.eæ'F¤ýÛu©
+ÛÁð£­zïŸ<Uãr¥a(H­£`ò…‰’£¨x@©å5ûñJÿõ¿u;)¨®N¯P§±íÉUïkˆŧ²œã"r²väî‹
+lœbu®œ©`ö#Œ”€©©àÖï+]aì|×c§•Á‡<€O«ÔQkj çzòY(IËÜÅÍê<8ƒGl×8÷M’)VÒ²šNËW÷ÑaöD9Þq—ÚJkåHFk˜èô…î¿°’9£8,âž:LQzcàõÜ ÞŠàÔªD5©a„ÞzÙúšô½†Zs"j¾#Î,^•$]`<2¢fŠ|:Z³ ñëoÔ4]šh1!—vÖŒËË]¥g‡ÊÕ“&”Å°“
+çè{;xk—zÀØÆBá|3m8:-
+ÓËòÈ©Ï ŸaìJlr]»v¿ÎÕ.Ávgåuñ“4 ³‹XT‹XÃeŠ”¿P¡T[ö G r²À¹îÞ‡ þð™…”UÁŽª¸¤A…§A¥»Y/íT˜a¼Úäe$õ™î –bÑÓ”•o£åp´d
+²àëÀÅFðé•|ƒX8BÕú.tm|kÓ %]'M³#-ç]]g‡¤8ªKªK‰.A| ^(Ë
+5ZÜÒ[OR;ÂWÍ=¡²õx MeF6=bûŠ5±¾±ªtîš-Œ[¢aX«þªÛânC´ÅP¸8Þ¹½¼òü–ÛŠ.Ð÷Þl¸Ù!àu*}z|týT;rØ& ‰ù§_÷77[›ô '=œF¸G{/÷¼ Ÿòº¦ŒPü&‚Ovr["scшUÍšIÜš†8àĽ¼ÍÙ1UL´¢n.Ö±ÏóÕ
+pYÉÀ0—ôJ&Lz™*aKÊu>¥Rz5Û-V«O0óDS_í7ü©Š{O ÇH)r‹5ºùå0:Ó` }Ýô†ãeÃrb/œ(s»Ãë´¦¶Pà‹ózokÛ¾"ð°éNSÉåQ`„¥ë; S2CZL¶J5©÷Nq¢`P÷BGÌgõœ7V?ØÆ"yð Ê}ßú;VºŠ¤·1 ½ßHƃeµKX’
+endstream endobj 265 0 obj <</Contents 266 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 266 0 obj <</Filter/FlateDecode/Length 1079>>stream
+H‰œVÛnÜ6ý•y$ˆ&)Š’з AÐ>¥µÐ>ÄA¡Õr×*Ö«¤µá¿ïÌP·uÓ´( ˆä3sÎÜÖï+Ðü×áî㽆ã
+yiTjµ‡ê ÈêOÖ0QC£]5`3åÓ’"S…I¡ÚƒøPÝÿÄ
+*ø
+iéÏ ôâPÝÊx0Càw8Ãûj‹†l[G¶“ÙÍË-ÄhrÂhuÄø9ú­îÑ…4Vdà<­%üJᔆ!V&Fh’ÚeòKõ3þ!gÖ*_,Óï¢% ·dí7èD2$Ú϶öUå¿F$Í¿á(û†#íäÆ—-[|•ÿÏU´òÖ•s[RX7+¥¼ü/YÎÖ,çËò¶×$§e!>}¢<#}G ô%<Ó(‘½ÌÄ@›¶;ƒ4©Àèº9ý~Åk~w
+5I‡
+c€š¬GGú¶˜‘#mø” ‘Å|}ã¸3Å¢9!ݦfØ‘´ü]a°£© ÕÈWpÄW×™%ßðîL—# žæðœÆèñ߇ü†)G}麆Rÿ‚Ÿ9Ö?b¬–cè'M®:O¸¬`YM»ÉÚÈÙ"gSˆx»æÕ.Ŧ¹ØЇKSL¯¢.Ùoºd÷*-ö
+“Me¿g 0
+endstream endobj 267 0 obj <</Contents 268 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 268 0 obj <</Filter/FlateDecode/Length 1163>>stream
+H‰ÜWmOãFþ+óqÕ{ûæu|R?$GS H‰i?@Uåù‡ÚáN´êï̬ã˜&œª~êUïûÌ33ÏÌnŽ Ðü×ÜÁ›Ó¹†»Þæ Š[œ©<÷’ûÞ*=ÒÒ B–gP<€
+m¸I(ö¹JC§Ø½â/¨£ãiT'’ÎÛé©ÝI7hVxÝß(úu5$g«Fû¹§Éë Œí4åÿZ‹1Ý|º§†Ø8ÚÚ“åÊ|AÏ?#Ѐß×ÂÊLÌfD!›*Oœ 9|¢¶ÄŠF¦¢¥Nµ®A'Ч~Ë, —¸ÌûîËͶ%jí.îL»ƒ©£;pÓ ©-K Û¬ÑýÅ¿cÅLSV昔H-gÄä¾|(ëÍ¢y&`0kÖ¸¸”‰å
+{Oè§qy[a·®6-ÖºÉ@˜ÜS°[Ly„„M]Žž£Èâ0¨Ñžó’D/àˆ,ŽŸ£ÿFMdê…H=¶)Á
+çÑåcÌœ„+U$Ko»ó»ö¡2Iñ“ @w£ã½xf$b·–A ÿ±Ÿ‰gš†ö‰5xh-“ –
+lžx¦àY+nQd…á¨i†ÃƒmT£ø@_õ Ä W¿ŠpÄ»C+“ŽBû»óc™dâíž‘¤*wÆWèNËãqÙ.›ê‘…Þ®Ñ}-&À@碊άçÎ7Õæ‰tP 7p#(š&°°aª 0™*Ž Íä¼{M ½»—ôºú}Q`>u¢ü@T¹i«˜5,ì}ªûreðŠvH2¶&«è<Z9@„K‡ÜØ+v;z_‹'«Å¦eö¢gS±\–<j‰ËxM鉠¬ëÕíevëí²ÃÕ4]Óç1vñx#N¢™RZÑ´=—îÐ8Bc2•;ªºø0¸¦â‰!4d$Ê6,›ªQN’JNfdéø
+l(Ôb‰É^w˜ñŸý}Z$¢.cWÝ“…¹¶<0a/­Ç“÷ÓóiÁY<% çs`^ÅÉ‹3 vœ`²CóÒéÞ¾ý–âúœ}‘®=khžyxLi>!wžNχ^ìß+ÆÃÈ~Y¾WtðæÒŽÔö|±/êd:ÇE³@nâE&ØÈÀm›gâëcI¥¡•Xmoé@ƒD¡Tr‚Àzó±l€ûHí{:M›ÓûÿZ[ÏuïÖ!¦gœkèÑKtKÁEg.±Ú jhÌ£Læí^îÀIÓ]ZËÅ}µa×?ÃkàÞ¬“€Ï…Þ‹ôFY–TV”\wšòëÀzUn‰¼Ï\ן}‰‘¼8¾-°d¾£ØÇë‚2“#þ£{cdÇbCÛ1w‘CZ<ò+©%Gô¿ þ`
+endstream endobj 269 0 obj <</Contents 270 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 270 0 obj <</Filter/FlateDecode/Length 1096>>stream
+H‰¬VasÚFý+÷ñ.ƒ”»Óé¤ûcâºSS‹æCÒéP)°€tòïûv%ÀØ“i;™ ÓI÷ÞîÛ}+_Bó¿j.Þ_Ýk1߈÷…ùC #ŠìçqΉ(`íl¬sˆÔÇ> ™(ž„ªøÊ'Ls"ÖÚ$¢˜Š$m–‰( qâðòLÈAqÍ…x‰‹µÞšØ £ãÄ
+cóØxQ•â“XŠ‹â(
+e M][v-FxÌï=–ÚÝ”ÂÐÕêÞ„i* ½Ò$ .ÒM ŸÆ^Ÿó'ƒÌqÈÄ&K›´"ø¥¹Dâ'99¤Ÿ bäñ¤r¾À“›-ßU*Ê›Ï*²VîT"ùv³íáÅl0{/oÙj‹wÌ2º—#åe9W¹|€0©ÜðM*?>Ói¹f̤ƒiÍ3ýaLÞÿJ{åtÛûÁ
+UÁÿ g2§ ɉ½Öz63q†QHs$6„·±w4>λ’µ<±¦Í4¼ig¦kNNÛîÓæZD9*lÚ‚Ì(ø>”»‡hW7%§ñ¤àÒ?ËjóeOZ¬Çë S*+{¯kzÒ@û}ˆÚþB½2Æ¢ƒ3-]ŸwDµrIz|èÀEѽ쥂Bd080¸šÜåÀ@À\… ׫%åEKÚêñÉŽÙtÛ_Y’
+KM/ †X¬É{3úAeôÚÇÉâqW‘ÇJÚ hÿ†ŽæA±®–¬4µpÁÞªˆg²Äý†xøqãgFß‘xìœSŸ¸°×+;bë#sf²¨©G?BºBÕ¤–†Ÿ IÄNʲåõ^§ú¶­L‡‡­¿<®à$|’ú¸_qÄOʹ~,·åiÄõSl©äÜŠè#6,x„_“Àw;b©gúwehœ¦µ0™Üµ6«ÇëÖaÏ£“3c)"y‡Ê4%¸¦ܱÎõ¼û®¬î n3$JTvGÍÞ©¤¶á~ÁÉòüh§o#ÛGJà×›º'Ï*Ä-ÉM ^\Ž™„îûõtB²K$Kcr.·šülÓ}¶ç¼¹˜EÔTÝO\ç{”Pßùf,7%ÇÄúG€
+endstream endobj 271 0 obj <</Contents 272 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 272 0 obj <</Filter/FlateDecode/Length 1115>>stream
+H‰ÌVÛnã6ý•y*È Òò&JÜ¢¹¨©‹Øql¥E±[®­¸.;k9[,úó]¬ÄɶXôa@")òÌá93㜠øo»„7SË
+Þú7Š[\Ï✃(àØ™XeÊBâcŸ†Š{ ‹?ù„nNÄJi Ål›4…( ±u¸y"/¦>𬋕otì@«ØÐ&‹µ‡m ?ÃN‹'T˜q#© Š¿éÚCˆ6ÔüÞÕ1‹)bKmDÎÓ;ÀOõB,µ@ð^Hí…‘‘ŠÖ5ùkñ#‘½îè¦.ĉoøÚW¨Í—¹ññ$xÖ.j¤è¡'f®M>#B¿†pÚ0ʽ—‘œò±6M¤ðÅF7¹àÒƒ0”*Y{Ÿ4üîö’ï°2ã1ùk’Ø‘q>ÀGz—dàV&¢¢Áj³©­@M]k»‚ ~æ}wåŒV«4½ÍÞ÷†¦é9«c_3Då!)¨À'±? «…Œ<º‰
+–O(¦KéÅ
+G)Z±+·2JıŒ,ÅWaÁa ó—@ÎkZhñVxÕ vxµ«Á!EmÇÜóâè)æ£Se⼌däÄD:ÑãX17GÜt"ö Î7 >ëa¢¦k•Ì‘Ìv»ÙÖR+± óÙŸ4ÚÐ6þpŒÛzdÓ–¬/‘} 3Zá¹³]9,+¢_!ï’´Ì»ìÝ_ë2y
+™ dg2JÅôbXòé{i”ø¾ÑÅ­`ð?0ÕV´xÃO>KÑкã¾c.ëYVìÜ臯¦hmòÁÖ ö4PS]{• åTlÖ·´²"~Ë&Ž%i´˜­q^ÑFÞRnûjøN¾ÄtBÂÝmФÚ£Sô'ÅP^Ô3Væ‡w‹¬cÏuë»,ËúÆ‘] faî"@4cdkŒp \ÓÂcIO¤o¬øD—heåþSÖ¿8|‹„×i”vѾ§š¾‹¤ƒ8¡,S]Dg”rëj7[ïªoñ£:€ïû·ãM'x¡#NÀE©G_Çëy•vòEQw1Ú‹©}S ¡2J¬û[šÍæ%äw%uëõˆw̶Ü'>Iƒn[ûÄf^.ñ;OJ \½£â¬(øñ_>S¾ã÷5+þ/ɤ]—´ÙA6qÒ¦ýœE sø’|ÈIÍa>*xé„RýÞÇ&tþŠ2=?¿áO´)‡·o¿îq—q2Âß\½âµ¡-^ßk‘ß ÈÓõŠØn5#ëvõl½"%¶ÞjÆïe=™9t‰À1mëu×uÓ „}JWxÄ\™Ï©¡§¢º}”u§¹b(šíæm+ÊDÙ\B|ÂÕ¸f@=ûjtš5ýi¤–…Ú‡ø¢p&ÁË}. šu?Ùó„`.š[©ÛºZpÊ»<ÃP›EIqJ£â˜¶Qîó¯ë‹Û•¡Ÿç,Sâf4¸¾É2øÌ?
+endstream endobj 273 0 obj <</Contents 274 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 274 0 obj <</Filter/FlateDecode/Length 1150>>stream
+H‰ÔVßoÛF þWøTÜ•ªû¡“®À’ØI<4qËëŠ4 G1<¸Êf;Šbÿ{IÞYRâdÛ6±N'ùñ#ùIGdü·^À›ÓI‹ ¼©Ô/(¨îp¿L½·k«Ó¬Ì ä.u…/ ú dõ+ŸPñDšeÊ@5S¦º( É}j,ß‚V“Vð;›fœV©•¥FƒÒeª¬kø
+
+4å ï¨ åxè ÓñùË\:°aO v:ö€©Îçõ†ðlÐðŽ
+E›+©Å˜én;¿çÚ~ÆsõM£i1š®š¶¤rØéÁE߯F¸öä%¸!³˜03¡„6h$ÁDÿ·Q·óù“.DØ—äõ
+ñg8 Øo #XÚ¨
+·ÄrÍÛKs´C¾©Ùßl‚²>ƒ‡èíÁø?ü(—N¥ó–ТMåì∘`I¾$¦^ ‹oßþ_:ظgãQ+ð-NV;+Y+†F=#4ËÙŸ…×Õ²¡ˆ ôuNúà±FÌX[ñ½ËJ®£ŽHÀÉ/½+4éLçbÏÖ¯¹º=ñkß*øA³'"¤JQ¥8™Mø$(PªHv1æjüÐé¾>꘴+òmòXæÚÃ$s$Iã={Í’ßÃXî0†o› 1hÚP e©{ iwµRäð)V"P[ü&˜¶}=Å[^OpË}¸ý£[]¶mƒ¥iÚM틲õhÎwûß
+endstream endobj 275 0 obj <</Contents 276 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 451 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 276 0 obj <</Filter/FlateDecode/Length 1178>>stream
+H‰ìWmkÜFþ+ó©ìšHÙwi…ÄŽH]¿®%Ä¥gÅ\9ŸÝ{I&ÿ=3³’Îç³ÓúC&`­V»3Ï<ÏÌcg·ÅÿæçðôÕ@ÁùžÖúoê÷¸_æ1:Yĵ3¹*•òPÄê  ëø†noäJi õl™›¢€ÌÇÜ:<|¢ªû|¡ªá_°.W‚ѹ­rk@›2×æ ü 3Ø­7 ``Ž›ÑJ•P܆gè E´1á{—rÖŒ-µ\ g„?ÒF.µ@p*¤ÂÈL EûšV^þUÿN`{¸…‹¹-^{T‚y76¾îc`î²–ŠѽYG×&_!Cߟ†âti”;•[™œ
+¹6m¦ø݉8Œn{ÁÅ­4Ô*eWO@ÝÍ÷NØW²GG¤¯ñ¹#áB„ôlHÀ¹ôbA‹Éå ¤¶9uì
+Nð3Ÿ›6#Ú]4 éiÖº·0͆²È—·qo
+‚σºk.¸ÃwR}TT†S„¼Døû2sb&ƒ˜,'£å‘h|Í‚8ǽ7Íb1Â-'ÎxöìWTøÄñ0=ö*¸æïÀp)…‰”L#Íã#Ô;˜®æ—ãæl%#ò‘!3{HÚåYC|€tƈßveæÅ ‰ÁŽdVbgj%(¯%‚¢¥xSÔ¼õâ¼Å¥JùÊ E8¤ÐÕË!£SUþ ¦½’™wƒ@UtÄNÅõà(:üeÈ ŸOå|77¨Jí†TÆ®©ÏI”c<šN–,È'±Œx“î3Æ’0jJȹK‘yµUTi 1 Ä· •ÎµœàíýD‘ÅWÇbL¤¬“³®=j‰„œñÂk¨ KêÈ3žà¡‹a„kŠu?R¿…Ô߉Ô1PÞž ‡©Ùž_FzI+•+ÞiöxwBÄÓþ“è™í¬…ß—ða4]5mCÖw5=å½ô:M¤¥_OĤÎ#®Z&‡œ”œ! ³Ïagý„*šPZЄRì25⤴Ùð
+z%t*  L_@ÜV‚á%ûK
+endstream endobj 277 0 obj <</Contents 278 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 278 0 obj <</Filter/FlateDecode/Length 1025>>stream
+H‰ÄVÛnG ý>ÎÞÉ\wwôÁ²„ÔEâ:ÒºE‘…joñ¥+9E÷ßKröæÈr’¢HaÈ;Ë™9<$)M*Ðü׬àɳ…†ÕžTæW ª7h/UŒÞCqí­Ò¥vr•±€êÈêw¾aÚJkã :W*[…¨œÇà fÕâ˜/Ì*øœWÚCnò`´rŒ-•É¡©á'¸‚Iu
+3nF+]Bõç.=KgÑÅÄïUòY-[+øœž~L%@ðZH“ +3#4Ù ­‚ü¥úžÈ¾ìé>ª·|ݪDóan|=Äœs—µ©¡; «â#É@èýn§s£ýk¹ãÉë\ÛzŠÿÚØV Aï¸!©”]¶J²ìuC%=Oúñû‹;Öž{vzŠ¥Ýq½*ºÐ0ö‹«D
+endstream endobj 279 0 obj <</Contents 280 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 280 0 obj <</Filter/FlateDecode/Length 1061>>stream
+H‰ÌVmoÛF þ+üx@ê½é¤+°‰£¦.;«å A: £¦)Ò¤µC±ÿ>’§¿$nal@À:ñîȇùP9ª@ñßü^œLÜ,àE¥ÿT ¡zö" Á9H®IU¡,d>õyÈ¡údõ‘oèæFª”¶PÍÀ©ÉsH²Z‡‡¯A”ÕdÈÊ
+¾€u©ràNh•ZÚ©ö0¯áw¸‡£j
+:f¿ ­TÕ_Ûð !6D|—1f5AßR‘óô ð[4¤R Äï„Ô^™h¡È®i•É?ª7ö×nîBšù¯}*Á|_Ï‚gî’†Šï™é½k“†d ëçß6ŒrïäV$§|ªM)ìˆÝè¦2½†Z¥hóÉÃPÝ•æ»öDæâüœêk²ÔQá|€¯ô¬©€s™‰-nîAj+S×–]Á[ÜæswõY5hzš¾î LaFt9թέ8‘¿ÌÄI<*ðYê· Â\&ÍŠ»™äbvµ¼åÅý
+Së- GÃjÈÞc !Ipt‚ã@û ÎÊÉ„7O¢ŽZêõz‚1?\(AIvæ/ø“‹GܬKÞ^AZ440ÖÛaM¦ê´ô!P¦¯¤SîVæ©8žFØtpŒSë¬Åéé1ÀX=bõ¢¾‘á 8õ2±D‡õœÉ! ¿Ù¬þ¼¤Í$MÚ†²b«ya:b”¹hø·bÂIN^M¹ê§2¬ÃÌø丫®Åí¼Aø}6?²©žm2g3éúº²€)é1sx©#CÙ`bÊŽ[¾lº†Ûkž«œ1‰‘8K_‹¼!.à‘ŸéAž÷o‡Œ3lj׃Cò{ººq'JpêÄŠÑ·€2¥X”´ËYŒ]<=öI˜Ï{£;êí^{D—,µÝé6œp«0¹I#×uåFC¯ZËn/˜}¾Ñ†mMubaH¶ß"½P|׃Û-¸—z§e#†õ6CÓ.Áš®È*닼©ÓuêöÒi‡ê)‰ºç%ÚͽÒ{»¥i~XšjOUvÓVéýTi7U9EÞÊÍ&e¦<}ßwrc¸þÏÊÄÿ ÿ`
+endstream endobj 281 0 obj <</Contents 282 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 282 0 obj <</Filter/FlateDecode/Length 1058>>stream
+H‰ÔVÛnG ý>ÎØÍÜvvÇ€li¡¨ˆ/•V)‚¤(k+«¨/•œô!è¿—äÌju‰Ý´hÃZŠ3$ÉC®NPü·ZÀËÑTÁb /ý‹ ͯ¨¯òœƒ, ìL®*e¡ð¹/C Í-Íol¡“E®”¶Ð\ƒ­rS–!·/ÏAÔÍtÌu€u¹ràÎh•[ÚT¹ö°já'¸ƒÓf
+:f¿Iª‚æÏCx†îG"¾w1f3EßRQ€óô ð&*r©â€÷Bj/ŒÌ´P¤×$òçæûãnéB^ø„×>•`~›Ásí²TŠ-ï…é½k“‡gŠ®ŸC~º0ʽ—‘œò¹6)RøÏØN\(ÌA¢JÕåS†ÿ¡»[ä{'ìH–âò’úkŠÜQã|€Oôl©+Yˆ5 Ëû;Ú
+¬©ëÚ®`‚Ç|ï÷öŠ´ë4=Mß÷Óô0‰åÀ¢6 8*ž_ä~Ÿø‹Éžèáô`C†ifxPJ>"© Œ›˜ÓGL©–™C‚f%AL¤ñÛO—ëÇv¯ÎOQS‰B|)³À7ÑR;ñZj•Ä³ú¼aï‘£··lEª V Pª‡3RÔpt„:%Žá3p5úÔu®Klm‡Æçãf|BÕÆþ|„õÖ>`üé”GH‡naVÛŒÓZÈJ, È»‰¥[›˜¾‹ÙGDÜâ.ÅÅ€Š5œ¡fE¢’þbH-ú²•
+ _ÓÇ™ÌÊ(ñý†éþ„èUŠ,ÚM.èt­ÃŒ>&l+rttL¾às¬UW ]m¸V=Ë5û\ãIñ8Oû£t@¼"ØÐ,Gš 6‹ãÑÑÌ'š¹šÑÇÜ ¸Þô=ŒíŠŽ`ªÄvµº_ï0­ùòúê—,Š]¹¹<©Y·,-&Ä´˜l¼Ø-¦4“iÂãfÒ‡›)ì.&Û- Üþ\qÌC%Ô;\Á¶Ó?_aƘŽ1uJ,`bÒ Ì ?Iº'¾‘~+¶ÛÄ6;+ªÜ_Qê‰ezî`ˆ9…ȸN_‰â»áÞ¼îôâõz‘ÝÊFäV" 2sÈ­5•ð†fæÏ|$ÆGüþ0¿zl·ßû<ë_€fëý÷¯(vLûˆ;ó­86ÀLèhtÖ27n ÔLû«A]~˜Q¢(´r‡±›Åh^‰;»Jծ¨bÀ49èO=`4íVQ¾H»mB| þᲿ
+endstream endobj 283 0 obj <</Contents 284 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 284 0 obj <</Filter/FlateDecode/Length 1217>>stream
+H‰ÌVmoÛ6þ+÷‘ U|Åû8Jæ!µÓXÞ´Ã`$jæµÛi1 ûï»;J²Ç¶õÃÄ¢ÈãÝs÷<Gê´‚ŒÿÖ÷ðêb’Áý^Uê× Tp¾HC°’€c«Ó¬È ¸<Í}ðP}²úÈ;T³#Í2e ºS¤Ú{H\HEã;e5ò†²‚G06Í,äZ¥T– J©Êa]ÃÏ°„Ój
+:f¿ ²ª/‡ð4ÙG"¾w1f5AßRiáÀæô ðSœH¥ˆÞ ©r¡e¢DFóŠFNþRýH`ßvp½ ©Ë¼æT‚ù26ÞîBεKšRô¼;½ó®t¾R t}< ùiÃdö½<ˆd³<Uº‰þu v£-8s†¤R´ùøð Øí‰ï0Ò‹«+âW»Ôqy€Ïô¬‰ÀµtbCƒùj R5µ-í\ã2Û-êÍnjPôÔ;Þ˜zSëX,š3ÁQñ2È]š?Ã'þd±7rH°{³¦g¸Qx¥ñùªï0¥ír1}‰wô3#tÛ~â(ˆ‚w…à ÕD‰#'.ãȈ7å'´¨xšm)Åž$û¸“æƃòŒ§§×%¼~ý=üo¡Qæ̳®±°ÃÑ°¢cË1´¾ÑÖí0þ]Ó?›\”lÒbPˆFR#^Š‹ƒ‡»ÙVZ¤@!&ÏÏÇ'„Yoðm+“¢‡Ç©w;<4œ¢‹Á€j@o“sžÂ½—’bdã)…W‚ÌÆhÿ¦äW9"ëj†©àï#§ /GXá~nd!VKtÊCOèaTºÁè•ÝaœŽ&ÓL<w‘§ m›œO90±·‡Ò±áø m´é[RGd>%dõùl¾xÂd×õ3êtKÏtl$Òž-H|ˆçŠŠs‰øSžM9sš(4?>+·¦ÈÀü.‘HcÅ“ˆ·D1n²Ç‘ǃ¿ œ7q×C–ºÐJÄñàD&¹¸ì/ÜÐ HžH ¬y¹¦~Äa‡·ô³•}‘´½kßï?zíúN›¶ñ²Ðñôz¡O)>U`µü@ω¬{\¬˜Ä¢Ål‰ï^®×Ms$z#¸ºIÉ¢
+RSÆ'Tâ.6—ò9¼Ò'ƒÛ²—\WÝÌv¤ið _¿#'¼È½hÛ^dÄûY¾˜!U¸É’ Õ\ý'Rþf»Ó>cÊ_ ?ÆA ´á\š&ÇKò»'|…'UlOÛoÏ¿ClŽ æÍjY\¬›ó¨«hÑqÅ¡^~<ñã{}â{}âõ ãul±ÓQ:
+M µU„9o1¥™"Ýÿ£&Òm©Þº^¬ngÛ9—›¹âHŸ$BzXÔÝEvÐ+õŠþv½b\ǬzA—ÿák/ª^+ÒÝ-ßasz]2Ý|NcÊx¿‘Q¯¸xÝt7…ïz9¼¨¼ðü„ÖGNh»§¼¸­e—½XJßQá W&x¸À)éõëΆNwî™îÂNv¡§ºp\tóûåŠS_“YÍß0ÿXi*tJ3‡dÒi””9àÝ9hÄ[>ªÖÌÈï”ùþB÷eE«Ce{B$»¾ƒØ±Ó|R0E­ i±“"~Bþ%À
+endstream endobj 285 0 obj <</Contents 286 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 286 0 obj <</Filter/FlateDecode/Length 1243>>stream
+H‰ÌVmoÛ6þ+üH Ê7Qb}Hl/ËÐ$n,o(’apÅS‘Ú©¥dØŠþ÷Ýõ–:°¡Š Ö‰<Ÿ{îáQGSô·[³WÇ ÅÖ5{UèßÓ¬¸…ñ< Á9&ØÎ$*W–¥>ñYÈXñ‘q&Š´B·+¥´eÅ5³yb²ŒÉ4$Öó ã³bqB fûĬK”cÞèÄ1­k˜6y¢=Û•ìW¶aGÅ(˜âJ´TΊ?÷áôÁˆ6D|—qÏb±…6<eÎã3°_â@"4ìŠ í¹Rs…ã­TüVüŒ`ßöp3’Ô·xí PæóØhy<q'[*FÑS3D×& ÿB„~yŒÓm£Ü•ØÛÉ)ŸhÓîþ÷FF·ZHÝÞ6(•¼Ë' ß º#ñ]r{,2>Ÿc}Mš8,œìŸ%p'R^£Qm7LhËSו]± ˜&¿»r…£uÉ4>ÍP÷¦©;Cœ:Ñ™
+&ЗÚ
+¾Æ7¬kJn­"»ºº<ö~W=‚VMyZÖõ
+6´|ú@¹³ŸÎŽà8InŽU—"ðHU=š§³–'òÃÓòŽrAgZ…Cç44 J‚3öú5åúû<ʪ;6>„}v§Ã’x,kžœá8þ“ Û’Åý+Pî#P¹jÀÀ¼¡Ðø¿¢Ú¯±Òd@õ5Vé7Ú½Ž#ùyK>µ¾"ž:f,5×Ñ,ýJjaPZ -¼¬³j½ÙຕTçÿ.®ÝIñÙÙ´¿ìml‡±Y·¦65±°Z¿…N/5Ý
+î‚ý/‡K߉%±ùt ¼¦Vóiy[m* ¨†]GÔãöÛcßkºÖÛ½ûaHÇ›î¬ìkOBÙ Š(ñøsð}<†¢9ÿ¤hRö‰™¾ ¨¡IIb”1P{SÞâ;žì¶ølPhÄþ•C^[’olžR ¸,LJæe4_Ñ܃ùžéIj$ö>%å»”Œß“±”aSÒØ> tF‹º†¥ìx$sàßó¦Ü45ûÜöŽ¾¨¬ÛÈäUÍn ¡q7ø‰*Sø:…ø Z¾@¼ê<ªò†;zoqb‡Në]¾›êï*rØ´¡Ü(TÙÔÕ3;|€š‚½ÇŸê®œÆ4±Â+¾"ñl GZß!ã
+endstream endobj 287 0 obj <</Contents 288 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 288 0 obj <</Filter/FlateDecode/Length 991>>stream
+H‰ÔVÛnã6ý•y$‹Ë»ÄúØ®«b㤱¶}ð…+YY;••¶ùûÎP+±³(úÔ"€5’È3gÎŽrQ€ŒÕ=¼›-$Üïá]¡~‘  ¸Ãç™ÁZHÆV ™IÎ Ÿ†Š/À€¿ÅªÝ!¤TŠ[0™Ði
+‰ ÂX\¼6-yÜ0-àw0VH ^+aAIa4( å¡*á'ØÂEñ‚
+GÜ„"™Añç1=MkÑ„†ß²ÉY,›+ÍXO×
+6»-pe6ý¨¥*U"ëHzóU-þ™#bO²á…»)ÊÅû]dÚTú…ƒ°/ÎÄ&N¼^ž:ñÐù¸§ˆY‚Çà R˜L¿Íçyž¶,ç‰aWóœ…ÍëËx7X1æžAs_Íðþý7€|À¬D¼e‰ÉŠ³­è9>Z² žx6¥Ìòù`Ó‹õ^wÌC‹µdIÂ11œQææçì¿qi‹ cáûò­mFb#õ¾2§{»è£žP‰†A>…ÇUµúµEÏV£ît­ ~æÚ°G4r@g îhC…k‡]0,n]ý¹¬ Æ»õÓí¦Å—Hv’-‰? ù”ÿ´ñð¨tÆË/¯y’²+òÕ k¶à*m%Ië•P©w¯Û¸d0^‘{Ÿ¢{ú”t?Â( QdÚ¡sÔdW<qlSonW›:ÒxžlY9vO·8¢vì©ù›ÛýâAï¼j3ø†g¬Ƹ KÊØì‰ehôįeµÿLZmp0>ÒÛƒ·¬~Š“‡ªàe¶/à€þÝü‚@bÿa"ÅÛU½Ù5¤ñ'AäœÞÇ»;¼‹ï°`”Ùd¬YŽrmI5?(©ùrª×I 843h]nµŽºIöŒñ(¤a}ßC=ÐfwlkTyüÅ5«£ä ã-c">¢l0•u`ôÍ;2ÄÇi‚Ç+'¬ Á-æˆô {ÅÂ5êžÚ±->œÛjÌ`GÖ7Ú}ƒó7à<Æö ãz%» ÃÚç\+ZësCBº#$íÐGžÍ‘ˆBqP³I;_<ÍÅVrËÓ§`Me£Ÿë]õº
+endstream endobj 289 0 obj <</Contents 290 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 290 0 obj <</Filter/FlateDecode/Length 1100>>stream
+H‰¬U]sÛ6ü+x2€ H<Ú²ë¨ck\‹n’NG²h…­,:úhãß[ðS#;i;
+ööön¡óœ©ðÙ®Øû«™b«{ŸëßÓ,¤õ,òÞZ&==[©LÅ,q‘K}Êò'Æ™È'ts"RJÇ,`q™4e2ñQlió’ñË|6 .sö…Å6R–9£#Ë´ŠbôÉ"íض`¿° ;ϨpÀ•xRËÿ:¥g°ˆ±¯ù}¬cæ3ÂÚð„Y‡Ù³Ÿë…HhN<Ø'.´ãFHÍÖ5žñkþ#ÈþÔÑM­×ðß 
+š¯s Çï‚v²‘b€ž˜]›ÈC ‚~; pÚ0Ê~'‘¬r‘6M$ÿŸÝôBâN U²6ŸÔÿÕ4ßG_‰”ßÞ¢¾&‰,
+ç<ûsnEÂwx(« :椩mˮؽûÖÅ«»‚i̦¯{CÓ äHÀSS*™®i’|Iì‰&dTÌ%‘;aJ±2ŠeøJhÅK!S"–ñ=1ØÎ1–ô­6rL‹sÚvÀÛbDä4y t‚0¶‰SÇ–äI*óBÜ_J:4–ÏŸ…t|¾ÀX®Ë}€)‹ð’OöV %@€ù;
+endstream endobj 291 0 obj <</Contents 292 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 292 0 obj <</Filter/FlateDecode/Length 1109>>stream
+H‰œVioÛFý+ûq·0™½—ûQvTW…#«›HŠB‘…­"¥sAþ{ffy¹²Ü @î9ïÍ›ƒº,™¤ßaÞ\/$ÛÙ“Rý!™båX/ò­eY„±Õ¹,¤aÎç>ÄÀÊwŒ3QþI7Ts#—RV®˜)rË\Ì…ÃwŒËÅ„.ŒKö736—–y­rË”ÌfAå޲Ú½`;vYÞcvuD»%ütJOK ‡MLü^&ÌrÁ”JsǬÇwdâ÷ògäñKÏ$|%*à£Óç©ÓQQê*hÒ´Tž'¹P
+S•|¡€ *0ØÆ`1H~DâóÎñÑ,Õ]zÍ'”ñÏ©öFÀ²¤Syei3MX4´ûõ6B5È¢O#*(Al#–FW´‚7tlü[Ú£ÓÅävz1ì1`÷|ôœšÈ%I2›3êoYzÍoûCë[rÿ&EM7 gŒÓÅ°1vUx¦âcWñæ?*¾èô
+êp߀o Øôí€ÏÍjI¡ØV5蟧Õr“ú9u,^Ãë¦C+¾:B¨”Tà é¿
+Z=PÄ-n¸‹ëgk‚|' E¾Æ½õ{ÿwßlõubVê‡DÄbr‚ÛÝ?Ão
+endstream endobj 293 0 obj <</Contents 294 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 294 0 obj <</Filter/FlateDecode/Length 1166>>stream
+H‰¬VÛrÛ6ü<‘!
+d’}™õ$6&Âe±)5q-Ud(êÄðÓô2º‡ f1oi«Í–—îH‘[¥¹Â÷‡v<ù¤´–ƒýÁBÙ2Ý©ÊMTET­”
+ß+ˆ¨¹…~~béïaÇæ…æ°å©UXyä3ïIu4“ =ßtpÇÉŒ«ʬÿŸ!?ßT‚E(K4y¡á…–o£™ ë-¿þâ—íØ®ùDÉVL©ïQ€4‡&Ìe¸列øzFÿÞü#À
+endstream endobj 295 0 obj <</Contents 296 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 452 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 296 0 obj <</Filter/FlateDecode/Length 1113>>stream
+H‰ÔVÛrÛ6ý•}=C€
+q¤ò€"RNèH*‘м¢ž~.~ ²7;º™ñ±u ßô+T‰æin¼ÝzÇÚÉFŠt«÷èJÇþ/Ä@诇!œ6Lb>DH&q±ÒM$ÿ1ŒjjÁúN*•¼Í'óÿ‚»Å÷^¤Q&®¯É_mcCÆ9Ÿ©]›ÈŠŠ:Ëu ‘JjjZÛã2¿·ZÌh¶Z€¢Vï}ohê@“Ù©ŒˆªXe& <Q?›zäI:&àlì:Ta9dŽž;q!µ˜ô{Øfx‚(#Û"g* K<rèâ÷-€RB‘ԉؖ%Q÷b%‡8¡DÉ«÷kn6<õ1RFÌ"™‰zæËo1)¤öMHGDŸ¡8 ¡d¤ÑGu¸/WW<ñ†Rø.Ò¼r‰íÛõírµ¬iú%òbB-vžžÖ›ºGZ¤ç\›ž×±"éÄœ£È +"Ç#¡<µ2ïk^ØpÓöâž·ýÞãwbhµ3ç(Ÿ ½ÓH¦bŒ8 æá =¼Hb:Ñ V5³yéø³ÃNÝ16rFA[¶GhÄ6‰eŒmÛ6ØZ¼\-«ºÇ!÷^¤nçÅÞ}“ïìG ”¡ê‹%1~@þø»&Å7Ãù¢Ä¶æµÆ¬Ö=ÞÈGiìóÈN—YÆu:¢|(~x¼¥é5=¶˜Y‘c¤b±ZešŠò Kn+äÜÉvïTb;•w9:'Ì>²˜=ÍîÏc>¹è±5 J  ¿°Ã!}iÉ%æ 7'–|ÐãÙjÄY)”Çä–:¼ºÅцvéQÒÔ=Æåµ+ì„hÞß*ì)»…ÝãRÜ«.[ªüÊ’ƼPÎ)ª^þV’NtªxŽ¸¼p<%äyŽ
+Æy~Nw³ŸÔ[/ôø­Ÿ£ªS¥w½áöi¼cS)Þ¢ÂÇÓº¤fq˜Tøx—YøÙ€¹…%ß}íýÚ$þ†nèß—ƒâs¥é.Àû”FYÕ³²®¾9ïÞéÞïÐ¥¤ûÎ4<ÎþÍA9¸/ä ž uÎŒ«/MÛÔœíg.>Ló’êyDóàùxAƒÖnI綪yfC[`< ó|ÃWà”¦y<¡*(Ø‹“$Ió†ÛÿUõný„‹kS±y÷ˆ ¸†Ä5¸¶K>ž{]³fáž·t{Ò°Â_#5¼~ý- ü:ÐíqÃÇkJ¸<æ}îÂ_'ü©ò§
+endstream endobj 297 0 obj <</Contents 298 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 298 0 obj <</Filter/FlateDecode/Length 2325>>stream
+H‰ÔWko¹ý+üH.2³Cçµ@?8²6qa˪$lcd‹B•U¢qFÊî‰ÿ{ï¹ä<ôroŠÂ0¬áãòòÜ×!ùr""þ«–âÇWãH,·âljþg$´˜¼£ñ<,
+kEPPÛš0Ê£X$i˜fE&&„jòžWh¿"Œ"‹ÉLÄyh²LIÆ–„çBö'ã+^Пˆ"¶adEjth…ŽÂØmòP§¢Zˆ¿‹x9ÙƒBŠYo€V”‹ÉïÇð d 1.¾·nÏɘt+md"lŠo!~q¡Ò’pˆ_¥Ò©4*Ð2¸F+Qÿ˜ü`ÿÖÀÍl&©ÇŸ
+˜§±ñò¤HÙwwEG{bZíÚ„Å#Î Õç·žz›ÈþªŽv²Qjãw*ž¼«Ñ>Òèh¤J^Û“ß!ºä{+ãW*“Ã!âk’Ð"pi!~Ãw
+Ú†
+CÞWåN¥²œ•k¥syÕߪ“©N™ú;¬eM’|JâðõT!ËÒZb~ªb¹âÞ¢B@ÀÿòÏú¤…üòzðrDë$½„ðŠ6•Ø:U=÷‘6·ò««gÊR”dòáà‘rø1¢)¶EáQPî]Ân kû@ÙbC¿[RIáa
+ÆUS¼#!XXC;§ÝŽíí¦dLÁÍEÕâÒ.PDH(ÐBjPs
+b–¹B£??ýôñ…¦bŸ3®Äco|f:IƒÚºtÁ¡LYG"/á@?°šL@Ù¨œ›,Å ˆnv«CùŒ!—þ(Œ€+£7bñ g7{š\vFï:VfµïYÁb¶SlŠ!_ÕâäIò• 刭W~ @”h”¶èœ–‘²ä¸þ ×‡*ʨàŠ)gÓ†ÕLw%>Gì3fý¦~ÅW•uJÔQk·D±'B\]Š•b F2Ñ Á5ålº£Ì–žºÚ¼ã ÈVÝpCGŒõÝèço®©vs²®ÙƒÆ51~AåÄv&ïhŒN÷ì>ò~cTÞXEÇ
+
+<³4i
+œRÔF¬C#D©ö Rœ¤ E´Ž=4J³QFiÙ#­¹mL‚5ûcš¡`¡©œ¹XgbD ¬DæÐÈjÊʧ&Í;Æ0,fë¶8jFÍâØ1ƒ³¬a†o«—LÈí¤å`Ug`LÈ·ihmzºF²“5’¬‘¸[#¦S#Ù¹é@¬áu‹#dƒ©.øLi$gJ#;.tÏÙIãlÝ0æ·¸·‡S`½Þ«mxvÅ€k±ž›HÖføïYèØæxœ…z'!¶q7æ
+{_ònUåænð=zºîÍÜg-IS
+ljüñ»Úd +Mòë½E^Í=[÷­šV¤ £.ˆŠÐsܔ嵃§-xòzéam’"Àºh¢õÐÆŽÍq±þsÁ9Ó"¶ÁíahlJ’äÙ÷ð–öÄ(™Îim ›ge¥C›lüüJxÿvøÔ {ìÞ®W­ŸëhI`WV¤G^z.?¶“”œ±Ó꣋ÀŸÊúøß»üj/þ>E|n¬ÝÜqPïE­úÜ•ŸšOx•Fyó*µOy–æõ³´Ï7?¨³S†çé>C½íªd1n Ö¬‹æÑJ*º\¹Ö©g+½: ÐÃm7ÙÇ]i0¾ºø'¬Ö]Ϥg{¿^6%bq‹93(¼d[õ›rã³…CHh­¬S—ä~ÆC
+«*Êé|6ݲõ¸ápÌãï)sâ=Õ^fIËRD
+¿ƒâN§þ· ?
+zmûjéXƒSÏÍÞv¸î ßuñ,7Í63rÞÔÓˆºUÜ ?Æ)ÁúnÑÔêr#1Ë
+§Œ¤sǸ{ŽÍ9Ÿ¸6œ8ÈzŠÝ£cw°\?_z*Häk2ë¦ü×j½Úaâ³SXº.òþ¾¬vHñ¨S3`ÔìÄá•Õw…ƒÃ‹â¼:¾"<v6›<LèvDÇÅœl:qÈñÉsÍ[yk0òú†åjS
+2Åà©àî—7Ætkí)çY"þ#À
+endstream endobj 299 0 obj <</Contents 300 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 300 0 obj <</Filter/FlateDecode/Length 1474>>stream
+H‰ÌW[7þ+~´3Œ=cOŒÔ‡Ý0‚­VIH†¶ª* Ó´$i
+h»ÿ½ç;žÛ’!Ô´ÒÄ·süïܼ—¥Høo·žÎ±Ü‹G¥þ#Z”Ñú ö>ËDäiœ™8$©°.v¹ÏEù^H¡Êw,¡k‰8It*Ê…H±ÉsY§~#dQήX (Åß"Íâ$Îè8:‰S#´ÄÚ‰]%~kqYÞƒBŠYo„Q2åÇcxg 1õß«pg9#ÝJiEæðëÅ/a!VZñZ*í¤Q‘– Ö5FVý^þ °Ï[¸yæcëj¼é¨€y‹[¨¦¢§ÝšN»6±ÿ
+¤úü5ÐÓ\“d¯ÕÑMYâbmê›üw_Äjt N]ƒP4öäþðn/ø^Éô©ÊådÿgpœóâüVpàNY¹Ç`µY ¥SIœfÛ1¥m>wSͱº¯„Ưéü^Ã4f@ç˜ ®q6õ„<&ÂÙØAtv^ÞŠ+YùDEFŠÕå¹a^­–˜¿%Xb°ÁçÍvªTV7¤ÆÈÖÁ„?•ëÃêÀŸ±t­rEf{qµO[Ã)K—4u’‡Ã ˆôV_tË5#àÛÁ“…—¤²ø-œ+T”ÉÑŒ%Ç#1"ÞžCÎò7ç‘_¯ö-ÜÔØ
+!Âô›É®Qœ¢ÜºüãAêÅôK¤Lm ¨¥7À$[¤Æ'²ÆYã=";\p’ò°õ%ñQW2àƒ.(0õìè÷ ßõ駛£gXásÉ€†sŒ·¼ÉÃ>+°p`B>S& E¦ã<îA¯IÂUà ˆ]÷–_ö/gÖ5êíƒöAm Œ1-¢‚z”M‘æÔÑ^Õ~Éà¿´>y6ºÄ Cåä|;_À žÀB1¶;°lLé3®\PÕ¿%Â×$Õñý°C–6ÐœÏ
+U!•KXÁF\¹jö(…±´ 1Äy‚rw"mMÞ¦mll(>Aw…¤Gè…ô߇jåȈ Ânžp¦œáÒˆéPq3®g‡ù
+P1$w4xàËEë_ªpô~¦˜­+WÓ³å–Ý›ËöÑÔsñ<„åTîÁBN©‚+ã'øKñeŒy;½ãÎbEŽ'¡¬^¡‘GÔ2Iþ«•/`þþÊÇ}Ëd Ö‰oÂ1­Ð~–+FH¶c¶cj*fz¿É›À4ñÁ®p àØÏøØËAã9dÂöGÊÖ£)å̸ä^4ŽYââQ§iB‘F\²n™Ð~öm¶'^BßÒŽ§#0ÄEQsŠ»£O¨|Ý<ôÚ®>Ývõ½¶ÛtÛ\¾cóx¸àWg°1”cV,ìöü”ß Ãû¸lâî½f,žr:ÈÍM<
+’­2›Ë÷¨Çs¼”åúMóÜàÈÍdû8 (ŸGióöÉåC~NœMŽ°ïhúý7CŸ‹ÅãZˉÈLâ­w"ÃN›„,µAø4K¡j
+5?N"*qí+esŒj=fe×Ø?ñBy¿Í¿Rÿ 0
+endstream endobj 301 0 obj <</Contents 302 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 302 0 obj <</Filter/FlateDecode/Length 1872>>stream
+H‰ÌWmoãÆþ+‹~Ú=„<î’Ë—
+BÃKB y›úQMLàõ¥ œVõ­ 2Ê‹Lc‚˜pÐÛbrÆ6·xÝAº™òÒÏÆæú'Œ*š¶™(ã^9?sÛ¿æl¬dVx8º¸"ðƒÙ7dµ9ZƒÇ t¤Q¬Ç¹1˜œ.xçõ”øùð mENÖ(bðdçœx/ÆÓÑX±’ü457Ëõ„¼þhà%(>Ö
+ääîŒ# ºÃ"D?†˜î4.€4ƒŠ *F«CÌ_Ø+è,¾1ˆQÒ½2ÈÀ¾Å¤=e2F 2•ž©d´†£7´6kC×ê!ø@Ò‰Ø8 A(CÈÎÄ ³ðFFhKÔš8Ðó .Â5®‡"iÖ* Cn ¸:¹Úµƒ,ÈJH’£†è^>uÝ‘guÕ‘’÷Y~^ü9ƒ,NOÜE %Ç8«ã¾„¦iŒýW¯QK¦øy%G?¯ð²â¸®qû†gvØ¢æcÜ×|<•\—~ Ê ?9·½/çaÃ캢gמÎk.ðøn[jk¾ Ž´fíÂ=Ïóð†«?ß#_~ùW.÷ ¦û[hû[w}d¢}ÄCõ(×Bw^YŸ'Eˆšký°Û6Tä¶7Û5î–ɸ­…©õ½L÷œu²¨$Ou *P56Hs¬/©8×üVí”R\å—å¾z|=}57¸ÇbTqTˆ åJ Õ®[»¯n¶„¥ê>YÏôá‹£Òêp 8ÏàVÛËÛ‘1eàå á¼Ç;Oìé[”§ã[³ìûê:<¶O4Ë"¾!(ä#|·¼ð]Ê^ÛØ­Hk͉FÁ°ë§ïyŠ <™ôc¨ƒò*ë_ê€sò¸Ò“\_ÏJ¢ ÷zJ ip»ž3®›A ² ÚÛÿ¡ŠJ±ñ}:dO¥Ã Ô8ŽúTÒÁK:¤RedážçyxƒŸ>M°Îá¾WŸê»@»Íîò˜_wMY¡y8ºfò®¤ELÚ’g)g‘Íõ •‰8˲c˜=rƾË&†K -ž@J¡Œ–˜|/ýqÕêµ±#A%Í®RÜO
+endstream endobj 303 0 obj <</Contents 304 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 304 0 obj <</Filter/FlateDecode/Length 1128>>stream
+H‰ÌVmâ6þ+óÑ^s±ã8ñIý°ËFWªp¾œöª
+q,b»-Ð^+ÊïÌ8o,°•Ú~8!%öx^žyf<ᦄ˜›¼~;‰a±…×¥þ) åÊóÈ{kAy\[Åyœ@ê"—ù ÊO @–l¡+‹(Žuå ’<2Y*õQbQù#ˆ¢œôÙ (áWHl[pFGt%´É#í`3‡ïa7åtÌ~­âÊϧð éÇÄ|÷!f9AßR‘‚uôöð]DR Ä„ÔN©´ˆI®i•ÊËoì»nf}”º
+or*Á<ÍSï˜;UQÑñžšÖ»6‘ t}9 ù©ÃÄöƒ<‰dciSEòÿ:»ÑU/¸ä$ µJ^ç“ùÿ¡ºæ»É[™‰ÑˆêkÒÈRᜇßé=§nd*¶´X®W u"S[—=†1³ÞÓ|JÒí4½M[÷
+¦éÀ4„Sc*Þ˜H_šx„I4ÆàÒÈÅϯIEÜùäÁ˜@(+¼TX§[‡ @gåUu³ø:9V¯VŸéð^|=¸‘ʉ±tb¾@–˜F,¶»ù†E¼ÏvÅx¸£$XáÙȈ-T®)á‘TFc?zZyö:,ÑÆŠaÖwtTüD*‹Á¤?À›7_Á… ¢%ÊÎñù\HŸÎ:i6lÎtTâ–1ãLÍŒoˆQJ"F¸¢´ÂãêËxµ YwD€Rm©ó¦Ô¶›‘u¹àvÎ[®2Wu!sª¾çâ£$g#qÛ ùŒÃá_>—G4¾LbE_`ïy8
+?îèIñîÛ‚[}@Ý_p‹›­i"èÔ¶7èÊáMøe³Þ¡Õz¶~’:ýbKõÂà\™ S¿Gµ®ÄCÔw¨®hNõÐf½’Z :ŸÊD,y‡ˆ„êÉ=¾œ{Ì‘òCó1šÏ)­- ÁŽsNÄ&
+endstream endobj 305 0 obj <</Contents 306 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 306 0 obj <</Filter/FlateDecode/Length 1406>>stream
+H‰ÌVmoÛ6þ+‡}¢‚J)‘’
+ìCã­‡ÂIle/H‡ÁkU×Ej·–Ò­ÈüßwÏQ–ì¸)°—…‘<ïž{îxôiE±ü6 zülÓ¢¡Ç•þ-&MÕ–çQQ¤)…ÏSÅyœu‘ËŠŒª÷¤(¨ÞÉ ÝˆâX'T½¢$L–Qh‹(IYù5©²šå@YÑGJÒ(NÉ¥¤ã(1¤MiG›š~¢VPØ°Ø 1‹sªþ8†g ‹Iáñ]{ŸÕŒmÚ(K©ÃXÐ^Z1z©í” B­bÈ5f6øµú`/{¸YZDÖux“ æ—±Éq[8á.ì¨Ø³nÍ`]›¨ø
+lúa7°³s§/ƒ#Oiì"m:OÅ¿v$ftW .=rƒRÉwñdÅÿݽâ»Vɳ Sȯ±QŠÄ¹‚>a¬‘ÀM`UƒÉr½¢@'Š9MwiiÊÛ¢wSÏ!mjÒÍ÷¦`ÆZè
+\«ó óÆ
+!m®n›ZF6›Äº·.c>¬%]ù®\Òe%]ù.ÀX¬Öâ[÷Æ]œôj™äG:?ÐáýGP]QAõ6§bt†;/³ @Ê®‹q^ߣM{ƒ+Ϙ÷ˆäöÀægyf·¾q°Kÿ¡ÿ[€
+endstream endobj 307 0 obj <</Contents 308 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 308 0 obj <</Filter/FlateDecode/Length 1341>>stream
+H‰ÌVÛnÜ6ý•y$ƒH)‰’ôÁQ„t ÃÞxå¶S®£
+œÝdWm]¸þ÷Îêf¯E‚V$5—3g†£yQS$¿í%={µŠèrGÏjókD†êßù<‹"I((xØ0Ê£˜Rº¬È¨þ@Štý^4L¯F‘‰©¾ 8m–Qaœ°ð;RU½ZˆBUÓ'Š“0JÈY&d¢0¶dlGÛ†~¢5½¨ï@aÃb7À*Ê©þkž… ,Æ…Çwæ}Ö+¶­U)%Ï‚~ô¡6ŠqÐ[¥SVFE87X¥ú—ú€}=ÂÍ’"L]7~*`>ŒMÔÓ wAOÅÌzj'ëƆÅgÈ`Ó»ÁM”¼Õ{ž’È…ÆöžŠÿíH̘¾\ºç¥’ñdÅWÈî¬øÎTüJgj¹D~m&Hœ+èO<$p«SµÃ¢Ý¬I›X1§ÉöˆNøµÈ]5ç8Ý5dð´SÞ{˜v‚¥ÀiB“Yãa2}i\0LБKC·‡”nØ¿q…Zè Q/á´?hßéÀq-äê§U
+ 
+¸T‰¯Ÿ°):i$ƒ—-g§[_ÝÈÍöe)rK©åZT¾
+
+]s,ôx,ôÉ}ÜnºÍÅæ
+_ïEµÓÈD\ä¾ eÒZ$àksµàÆJÛ¬ùŽuç-2‹e³%Ù©Oß
+¥·,
+›qyÓ¹] O#d°‘7XÀÉáìø`Øâ@ü¼ã²¼À_§¥M©œtÉÔc¥ì=Ì]Ûce Y’À¼þ‰ GÐ\áƒ(«#X+«©9À½Ä„QÈ„Á¦Ï=,y6²Ç•2 ƒ¿¡·¾qCñŸyB’aÀ˦|øDŒ#ÜŽi„CRJïCØo¤J®}HÁ "#Ž‹âÞ-Ñg}œÞ„{7qïÀ½ë¹ÇM~˜z¯?@ìDñH=¡Š6JûIŽ¹ÿïÃhç‰ÏgĻLjï›%(}*X¿4èõ÷{l<šÿ+À
+endstream endobj 309 0 obj <</Contents 310 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 310 0 obj <</Filter/FlateDecode/Length 1522>>stream
+H‰ÌWmoÛ6þ+÷‘ &U¤HJ Э#´):'µ•mA: ž«y
+R»³Ý®E–ÿ¾»#õ’¦MסŠ
+©œÐ2Q"£uE3+­ŸØ=ÜÂøÔºˆ7ÿ T‚ùil|ÝzÇÜ%‘Š‘t«éJ§þ2PôçÕœNMf^Ê;šLæR¥£&ÿ¿±cÁ¹;j(TÊΞÂïBäOd!NOÉ¿Ú¦†ç<¼£±!n¥;š´›5H• äÔtnÏ`†Û|îªYÐê®E£üaê¦Ö$ÍæÁy8›ºð‰ö f:ä(æL}',Óñ2Ý‘é¸y!ΪZ× Ò•,E+¶8±—¹h¶ˆÚˆGdÒrÙ¼ÙWï÷Íšv[ÜÝð žNËĆC§2)1ÞTf$ø×(&çÙ„W¥Äs>Výö*¢g:?>™ÂááC¸ÆO¸‰†k;àºèÉq^\ñLŒ8"о’‰C%ª2bþädžMxz§2ɳJñ'Ùñ†çûÅžA½¥¯^é²  DÐ3V@H­àéäÑséÅhõœ•#®àk¶¬iUâ’e7Ë=QR›z0ß’ù9™OW‚É·ò¸L´ƒOÈ J¤hC„Û¨ 3
+endstream endobj 311 0 obj <</Contents 312 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 312 0 obj <</Filter/FlateDecode/Length 1149>>stream
+H‰ÌVmoÛ6þ+÷‘ "–¤(J,°‰#tǵ•½ #Ñ­³Ùîš!ËßÝQo‰ã,ݧ€HywÏ=÷bW ù·¾†7ïæ®7ð¦2¿i0PýŽòB…à$÷Î*]è2¯|r¨>
+DYÍǬPVð'¤NiÞåÀh•Z0¶PÆú†Ÿ`ÇÕ#(h˜í&´ÓT_váYºCÓñ]DŸÕmKcEÎÓàÇ(PÒÄ„4^X™¡Inh—É_«ìûnî‚Ê|ƒ7Ý•`>Õ³à™»¤¡b`=³½ucUx 4½ß ÙiÝh÷AîxrÚ+cOá;b3¦©Ÿï¸¡R)/…VÞíwc³>»éþìŠïB¤ïd.¦Sʯ͔£Äù
+gy»iR)t´R•i˜É aáñÇzAÒM †VÛCm€ØK@ öEhp`¶²4 ÊšŸ)¯Ÿv¥RŠ‰µ1¬œ`ch' â:«šFæp9òv÷…/Äy9ÃØêk¤{‰h±ÙÖkÝðk}¹-ïðpKñY±Ú øºÁˆ%ßOŽeâÅ¥f*“€Å↬œUxɉ³íùþ)—?Gy)+&óñÙÞ¾ýîQ˜¢]bí9Š8œ= ÐÙ òHˆ+˜‘FÜSÔð¶å$t”$‰Dhp@ÅÇÁ·±ôÄ8ÿ(î$éÉÚ€tþ("-༄“:‰ù^Rž9¯±ú„¦!¹ß>_Ï6IOXÚ]Ñ% jŒ€ï± Ö\§óòýy9AöŒ Â.á~@bÑÖl^töàõíoÞ^Þ~”¦ãrƒvA¦Ÿ0m¥É^ðxžP #ll7tCç ™Š%¿! ™[An ö†¸g¼¤1Cšà^Ó½%u&y"õz½>Hj1Ö{8ìqÛwx‚›@ã þJF"hÐ̓ôˆ¾À)‰ÝL÷iö=£ƒ„yA¯#œ ýÛv±$íUÅݠ⶷Ze9 güÔ¸àà­ÉÅ=4aÇIçSŸ.Ì(ºÁ…[Ä›3ô‚ç×ÀÍ1Çã ½ˆ³iMc™¤âlrtJ­s¸&% º¦´®þkF7#igT=)K“wdÏ–e7¯1’-çxcu½~Sltg\ÎwpÒŒ6Ïm_÷DdSCc2+Ë+nŒdtË+lÌAw[ÎyÒªj¯Ó柠YG3¾p­ŽöGGäàt þeàqMâš0Ý°Þ^ÒcË]fm¯å‰,Ø’J®Ño‘nYñŽ
+endstream endobj 313 0 obj <</Contents 314 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 314 0 obj <</Filter/FlateDecode/Length 1326>>stream
+H‰ÌWmOãFþ+óq±>ïÚ^ÛH|€åRq GLÛWU\:^šäZª”ÿÞyfí8¼õÃé>œÞñîìÌ3óÌŒa¿¢X~æ—ôn0‰érAï*û{L–ª?x¿ˆÊ2MÉ”,§.Š‹8¡ÌG>/sªnH‘®®å†mnDqlªÎ))"—çd²2JRV¾ Õ¯&C¹Ð¯èOJÒ(NÉ;¥dã(qd]YOóš~¡[Ú¯ž@aÃb×@Š ªþ~ ÏA“2à; >« ÛÖÖ©ŒRµ¤ŸÃF¤­bôYië•ÓƪûR¦«~Øk¸yZF™oð&o@Ì×±Éõ¬ô’;Ó¤bÃzæ:ëÖEåÿ$ƒM¿ívZ7qúY¿ð”Æ>²®ñT~³#1c›ZðÅ 7(•¢'/¿»Åwª’ÎÕÑøuY”‚8_Ò_Xk8×™Z@˜ÝÝ’¶‰âœ¦-í1ó±è}©§Ø]Ôd±ºŽ÷¦ë`:ÒÁIË’’Á!y1ù,òÏð©G)ö¦ wrÐôŒ4J!GRD\mqL'ýƒÚk¯êK]¨™6%‡©e=ï?ðÆR'‚Ù©[mRµàÈô~$;ûÚxµ‡8pÍè2°6®X%UãdÑ>ÔƉN¯á¼?š Ç#ÚÙÙ¥I„‰Ù2}e TQEëHÚ¤4g‹j«æ]pFRÒY9UÆh@[` <¶~Œ¥ËCê×anjLGi 2Ò0j@M½É€>€½DÝpåžiÃ8µ)ÔïÍî±I'²\à1E….ëWQ »ÞŸå7xÿÁÓú$–u$‰ï¦Aú²VzÜ îŠd3ælò㬞/®8Í3ªû“û‹é’…Z;E;,àw—Ûžp¯ÿñ¤?‚‘>­Ø
+¿»h•ø i0ÝŒá<ä¹{Ù¬ž·U6„åƒP+²1»Ž2½;Y¹Ð™ Kõ°vL{Å¢u|œ;Œ‚ÂÚ;ÀÅÁ|oö7¶?m8œc»¤k±/â9KiNçº[Iâ¤õQÑÍýèR.>
+!,ÂÚíO‡y܉ãk±-âyðUB‰;n}-ÆR¤6—/èó8ÐoÄÒ‚Éõ4רÀY’¯#
+®ŽÅ—Üi—½
+endstream endobj 315 0 obj <</Contents 316 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 453 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 316 0 obj <</Filter/FlateDecode/Length 1312>>stream
+H‰ÔVmO#7þ+óÑFìžíµw×'õ„ˆK•&\²´=qU•†í5è „+'ÊïÌxßB
+‹- ¨VåPü¹ É(„DZ_ab3Å´¶ô¾µåòÊ’×±{ÁTâɃˆÉ^°ê2œõ)Y=ÚH6¥ÖÃa"–F uø(¤Î„Q4§ü¥ø~\f=aª"ñ 6‚õ4w‹ˆv\Ïœiµkû¼GÕÏ›!=µe?ÊKV¥±6uœÿ±!V£«Œ¦~Ç ‘°Î¦Î|¬_Jg“Í—8Ô¡õ™HŽe&NNˆFÆÅVjƒ à µ¥Œ´XI'ÖÔY,¯€Sj®Xj¡`‚˼ïs9£Ùu šZÓ潂iZ˜†q2L`bør1â0*ä[œî íÉTL¥Ç?A#.¥¿•+—Š?d.2ק×ç³MÙ¿Ãñ¦¼Z#hì­QÞ¡#D}HäˉŒräV¡7¡…q­“¹ñû<ósX覃ñÞ¾ýî½äÈrIcv¼ .EXD=GX:â8æ3ʾ›@ÜSìx 4GÃf[jêùj뙈Œ°Gñ Ÿ½ÿFÓ†Á¦[ÞEQãÓm¥ñm„lN!
+¾%Š*IV yÌéÄD”˜[äšçÎÍ­ÄMåšrü¤énð;þ1Ý
+g㉲µ'&o\¡Ø9ŒÆ!Fê”:×ÄèsúÌddðHLÊÝRL×fñ´Ï‚ïñ›©þ¨×‡{f{'¾YÍð¬ \¯–,Ëùò³Ô¹ô)+ _8©%êÇ ×#ò¯‡øðdâÑ¢õætÁ£r23‚–Æ“$î+>0S KUQÕSï¡’~ØGiÕqÁ4a«Ëc—‚@¶PŒ\"ê"Rº”`ôp§s6Ԍŕȯ'„Pi*hHõ¤mf yî’ÓoÌ{`wvW‹íJ¶«†ð@¨]F¬ÇªuT ÕxtÀšöÿ½2¥tÑDo1­‰˜¿Šˆˆ+ëÞ°8EÕYS|1}ª½É8h“ÂÞ˜Òr¦Ï4Ôåu£¶6 ÛYfZîâ6
+'}@Ù8
+Éå‰Å9S/ê-¹Ez"hìzq·aQ-¢‰ð©J˜@H^moÂ
+ö‡»½Ò?ìLè\ÑtI.X?wçôÙð‘2¦•J9"Ž|Îkùè†ïoÀ)±Õ(' ÆôLøÔ“²©Œ’ж^c9vI¥rÆ1¸
+Ñ™xø`œƒ_¹tWg°Ž1ÊÿÕ͈k2¢Ÿ8Š¯JÍ„p€Ñ8 \ ¬ B³®ã~•%­³ß&1“ÇtiæTß"õ2o.•­ŠÐ–Ä{ÁâœC§øÌçÒÄ£ùìvÍ÷3åíÊ7b[mŽgŸšüsuê*š?@µ\­:‹p»äy9ßHZä­jÖuU…é
+«^ .¼"¶ ÑÅòP=®^™èOñõUÏLÃáå"੆%b¶Y®¸Æ|¥E,Âû!‡ÏÖÙPp‚B.³Mø_Wg›—‹6»§%¼Kée; Òb÷îÀä×7˜{ö1ì›Ç0ÒV>z ³È²S?ŠÍóob|ùÿ-À
+endstream endobj 317 0 obj <</Contents 318 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 318 0 obj <</Filter/FlateDecode/Length 1160>>stream
+H‰ÌVmoÛ6þ+÷‘
+JU¤(J ‰+t
+Û•½ #ÑŠ­íYFç!Èß=¤$ËN¼ Ã>Å_îž{î9*W%þoó‘^¿'ô±¡×•ú5!EÕo<_ÄÎCÒ±mtœIJ™mîrª¾ ¨úäO¨öDœ$*¥êŽÒ"ÖyN2sqjxó=‰²šý²¢ß)5qbÈjRIœjRºˆ•¥MM?Ò’®ª(ìØû•°’‚ª?žÃÓØ© ønCÌjξ#¥EFÆbtôC˜ˆ#%}‘²BGR‰ó
+VýR}°ï{¸¹qqf[¼é ¨€ù26<sÖs'[*Þ3½÷®tìþ† v}: ütaó!zÉ$6Vºäþs ïFµZÈ“ga •¢Ë'wÿCuâ»éÛ(³ꫳؠpÖÑWŒ5
+¸‰2ÑÀxX-)R©`NMWö„®yÙïû\/0ÛÔ¤0ê}Ý[˜z
+׫ç?K».ÉÓ ­7«-»YÝ­>Gª㲉J]!ˆfÝb¤2Á,¯K ñ& Së üàßê E9#{äÖænÝØ%l°a¤&$l9«”v~DèupÛ´SÏ[ð”åâéÕ>#÷}ï3B:厙ØÖK~6ˆïoIË®,çÃ2-ø:bÅb?²zá 㶯#¾ÖöoÛŇYoöxTßF
+xðÕcI'øÒ2°H«œy<n©6ÀFª›u
+endstream endobj 319 0 obj <</Contents 320 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 320 0 obj <</Filter/FlateDecode/Length 1271>>stream
+H‰ÌVmoÛ6þ+÷‘ &U¤HJ,°‰£t Û•mE: B¢*R;³.…—ÿ¾»£$;±tEDŠ/wÏóÜ‹|TB¿Å5¼z3Màz ¯JõG
+Ê?q=½7"s£ã$OR°.v™Ï üdùo¨öFœ$*…òÒ<ÖY‘õqjððˆ¢œžò…¢„¿ 5qbÀiPIœjP:•ƒE ¿Â ŽÊGPÐ0Ûh–äPþ½ OÓ²˜ú€ï"ø,§h[*-,G£‡_ÂB,•@ð^Hå„–‘ ­+šYù{ù3}ÛÃÍŒ­kñ¦_€J0÷cãëÖ;Ö.j¥Ø²nõƺұF 4ýe7d§s“˜÷rÇ“I\¬tëɳ#6£Ú\ÈÔŽJ•¼ã“ùïÝ­ä»é™‰É„â«ml(pÎÃ'k
+àBZ±¤I3ŸT©@MMöÎp›ÏÝÔ­.kP4êMÜ[˜zÓi–g> Dõlê%©˜€³±ÛERd=<^Æ
+Xoi™“……—åOB{!àv1_I'æ—ó©rqZ,eŽSO˜t›±àŒW·šÏ(ì´_ÉT4üV/@f`t¯”óbM4ÑÀÊ;¿½ªèxÇOºk8’Ý;º½¨ƒûÜh <ü°!¢ûЫ>ô@öñÑ Å=Þ_Õ3|.1ó°èyetÒZÊÇ(ǦiAˆËžKhÔ zûþmU52ò<%¢“x LÑ0Å$P áÁC‹ºµÌqé‘°‘9E¯óø
+U(w®jìÁH_¦óÕXöü^¶› ÿbÊ;¾vËê7<ŸU7ØQŸï—]ð¹m>ùÆìé›ÛM24Ð:Õ‡.ÝéOßÒJ‹ûUÐuFgH â„  w×ÿ<¡]ƒÍö7X|¦bHÛÅoaƒC2šrTÇ£†û=¿,;ÿ‘·?1/üþíÿW€
+endstream endobj 321 0 obj <</Contents 322 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 322 0 obj <</Filter/FlateDecode/Length 1257>>stream
+H‰ÔVmoÛ6þ+÷‘ *U¤(J ÐIj´ǵ7¤Ã%J梵[ËÝ:ùï»ç(É΋³µŸ6 )¾Ÿ{î¹£kÊä·º¦ç¯f]·ô¼6¿fd¨¾âù* Á9JM³*Ë©ð©/CIõR¤ëwrÂt'Ò,39Õ”W©-KJŠæŽ7_’Õ³±Õô‰r—fŽ¼5©#“¥¹%c«ÔxZ5ô#-è°¾… ‹Ý£¬¢úχð,öÀb"¾³xg=cÛÚXUóèý'Rmã ·J¯¬NŒÊ0o0*ô/õw
+˜c“ãEðÂ]ÒQ±e½°ëƦá 2Øôîk`§¿&soõƒ›\æSc»›Â7_$fL§…Ò>¸R©zø£´»ï±aÞrwx·Ôw¦òWºTÓ)l‹Ô!r>ÐèDp¥ Õb0_.H›\1©®{F§ÚÅ}ï›ó‡±¶&¤iùœû'Ž»µ»±ÃâFšmC˜ìæêβݲì#û£"l±ÊÈ©¿Ç†JI.AáŒãQ™G< g/ÛzÉ': ÜäŠ^ë¤P4‡LƒUt´ä>S i¯xËœG…ºþ¼Â™sxµžókÕ‚jî3µYYh«Ú+ZÅY:m0ÿI¬}Ö²»$®oûÉXë½Á¬xÛ»ºUö ÑÆ)ÚC(c³÷ßè:‡îø2x28bìàÉëÉ!89Ò^-Wšyš_ëJ1µì “˜«ó3g¥’åfuÊ{pê™ÓJ5íšöÁö>‡ëÍFo¾M`oD71¨ÉE§
+S¸j£
+Œ! B˜XWË5à\,ßkŽäxÔò-¼è%`qOßOû½šy¿çí D}¤;¤ "íY¬$ùjVD²ºVšî|P7LF<ws>x3 ¹lÀZY•‹¾rææu!ß²Õ¢T·Ï6Ø
+~eBõ -ŽÃëÑ6¼nܶŒk‡Œ8L¤AÂT'"p«°X9#ñÁç—¨Í×ú|ŽÓ2`w¥ÁO˜7Ès~6ÏÔ ÝlËD'NAWPÇ¿T‹EÔÐrI\C.#8ðt1…Í¢e7Û[ºEd™5îJæódmaûdrp £[„æv ÔxÒ!ïhåGŸÒ4Ýd€½“·qswÅuSOæGcÐ{ìwæ¯Çâëb`<ï)u…_†ª*{Ê©»÷
+üW¤Lfã“É}Ù~ %ÛÊ67[uVý¯öÿT$­MqÇ+e„†'Í"àòOˆ›˱`‘’ ¨èb÷ÔËW+E>þ— jEý{‡ùËa‹¬<Çÿ.ÿ`
+endstream endobj 323 0 obj <</Contents 324 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 324 0 obj <</Filter/FlateDecode/Length 1422>>stream
+H‰ÌWÛŽÛ6ý•y$ƒH)ŠäÁëé[Û±Õ6ARNÖv¤vj;½`±ÿÞ9CYÚ¬"(ú,LŽÈá\Î\Ƚh(“¿ÝŠ=›e´ÚÓ£Æüš‘¡fÉëU‚s”¦M³*Ë©ð©/CIÍo¤H7ïå„iO¤YfrjÞR^¥¶,))Bš;f¾&U7³K9P7ô;å.ÍykRG&KsKÆV©ñ´[ÐÏ´¡‹æ3SX°ÈM@e5žšgÁ‰yˆö½Š:›ËÖƪ‚œÇ觸j£Øz­´ñÊêĨ ëT¡i¾‡±Ï;sKÒ·öæ_0fž·MŽÁ vI Åé…í¥›†ƒEY äÕdîµ>Ñä2ŸÛj
+ÿY‘ˆ1m.”ù‰¤Juô§ ÿCtï$ß+•?Ó¥šL_[¤óþÀ¼@
+ÑJF¯È[ 3òEêO Mmœ¢‡ßÆDâj›±âNÂUΉó´­m8jÍÑecÀÔ<`—¾]èÄ«¡öj»Yj“©õJWªa<ŸX5ßð7Ã_*Ù^ì¦Ì ¼é[ÙŒ_ôøñšÕϬGWÓM\Ž¶±Ú"ê7… ~bn5êãn{€ o·´©Ôe½gÁ¼éMÑñçÉ‘Wó&ó{fOCØ mŒÂþ\çj-_‹ªv”á†'¦¢ry$g–k±,8 ç²¼_B@
+j(+Ü*%ÞÂYËæ‹Ž­ÍÐÅÇ#zÌZð{¢c‹”â/¿9ÚªuÕ¹$†î§èe´¾FM$ö%2¬莖ƒ8ÿ€ôAäVïÞ`k‹á“–ÏKJr«\⎑Wâ>ø÷lÖA(ä¼óéXÐKœ¯ÔŽÝY}­[mD›hZŒ}ÂdÝ«$‡ü.r¼FøÙÍoà°3xNf—˜±òýÒdˆ^úÞIÃYÀßïØ›7 d÷í @¤l°´ÔUÜ»b"ÜÚ„N
+_v®N$C¦ŒV=ã:©IN}ÄÐë¾}(ÿ˵´Îµù{ýÕ•!Etd;yÆõUóí?×Ëþì›-IúëÊwo‡w‰ŸH`ܧSÎn?Wc¹$†rm â¥jc{5(¿÷ q(ô¨ÇI¼Jj‰gdôYû€{k×ä£Uß8àç Çÿeÿ`
+endstream endobj 325 0 obj <</Contents 326 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 326 0 obj <</Filter/FlateDecode/Length 1213>>stream
+H‰ÔVÛnã6ý•y$ƒP+^D‰ö!q„­ŠÀNlõ†Ý¢5páµ·¶Ñ¦òïJ²\;Aô¡Eó>sæÌŠ5¤ü·~€wf)<là]­JACý3ÎIÎ
+Øw&I‹ÔB柇êÏ @Ö¿ð ÝžHÒT[¨ïÀ‰ÉsPYH¬ÃÍ÷ ÊzVñ²†_Áº$uàNè4±´¶‰ö°nà;XÂE½ ³]E½´€ú÷Cx†öE"¾Ñg=m¤6"ç© ðmœH¤ˆ> ©½0òÇúkBwÓã˱É|0;Ž1BwÉ‚R-•¶";âÌ…3û¯¸¡ã­¡Z¢Ö33Å$áªÑôËnÈNç&uŸä'—úD›ÖSx³#6£[¥åîÀ ±èâÉÿ ´?
+ûAæâúšÔc²Ä‘\|€ß¨m0ƒb-3±¡Î|µ‰EN]'ª¦¸ÌûÍ-ÍnÐÔDÖÂ4;˜­Š°gl„‰ôe6 L¢1Ÿ%þ
+ë“~‰áËzµ•^¬îV © Q•Yàað®»E©Á»U©(ô‘ bµ”Z Z¿•VÌyÔ¬AæFÀÒ¨}];Åý î" ˆÝy7äÃlGÃ4–ÂÄ.hho¡=·Ÿ¥
+âIØjò.Ð(Ðú¤ ¢+ñô¶Yâï†\¯bOy´à1¼k©
+T‚2‚ö“
+ŽœAH^Ðp„ŠÚ¶·s‚CÝfÝãÑE'í]gÞPÝß0i0¡OHÕ”¢[¬8çѶïÓmRæ!G,å;"¢>gåáĦåEäP£Ó &×5“XIeÅd|~%u*NwŒa¹uŒ1BÕBl‚7=$IÂ7=lb‰Gn)´@s4ì·¥®—þ@p$ÃË^⾓8ˆ?#é8梗¸Ç5…\QŒå¾_`vRqNZÁla(
+ÃŽ½é„"ÍÄ„Ô4šp \Ñr<MñϸVž˜HÜ[ØËýay‘¤c©r%ù’%3¿§¡F+nQ¿¨Æÿ¸eY¨n³¦rR™Ï£±B÷F÷ZœMùLÍQrwtNήÓ?DïËèwM+Mçħ¶ß晘ŒBǵ&aôâ‘ÐF”¨¤} Á»`ÑÒ”M͈Jî9oÑ>‹3çð. CËHÏ-mÙRz¸F‹?¨¸à™)=e¸/+’…õ5¸'Fã»ô¦þˆ±Œd£«¾]YcéiñeA%ÇbêënÉ7öVÜ‹²ÌH•–ˆ2¤J$_'d~‚æk6A½Q;sÅ›Êïã
+¹ãY5÷5¯2è›
+Ô›Ž“Ý=©eNèv?'ÿfð!ó{Ñ)ÕduŸd}˜d
+ «®¤lL)WülÐ
+endstream endobj 327 0 obj <</Contents 328 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 328 0 obj <</Filter/FlateDecode/Length 1272>>stream
+H‰ÌVYoÛFþ+ó¸k„ w¹×€l™pU8²b±i ¥([5T8”+)iUÿ½3³<äø@Pä!0L®vçø曃{RAÆ«[x}6Éàv ¯+õG
+ª?q¿HC0’€k£Ó¬Èr°.u>x¨>€
+ÄhAò„ù Äìý`üý¯ÍlAÚ5Ãg¬šSG=IPu–ZOdb3NÅ|R+/¶°-W«åJªL Éq- q##׳ ,DIûŸq±‘9S¥· Üb¡õŽ`ø6JиWô;Ú¾Ÿ“£WÐÌuG¨!”I3Áqãxn@š¦<7öbŠÔ72§ vQ€Îªƒf.qõꮬ˜<Ä¡@ñkr³À"À8ñI«e$€¨(×H.ü4:9–1/;ããÕ%Æ{W2­¼“qNB,9,'˜.8D»ô$‘œ-*d"FϨŒkÂ÷^w
+dœ¾ºô-Ò6ÎÍLï_‰z©„>ÑädYã­‡nxí6ʶrÕñ©…ŠrIwÑa_»Ý+<ËÅwë?¼7þ'À
+endstream endobj 329 0 obj <</Contents 330 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 330 0 obj <</Filter/FlateDecode/Length 1135>>stream
+H‰ÔVaoÛ6ý+÷‘
+BU¤DJ,°‰kt2;‰•nƒ; F¢)Zg±½nEàÿ¾{GIv'ò}Ø`@¢ŽÇã{wïH×”ÉoyM¯ÞN3º^Ñ«Úü”‘¡úg¶WiEA:ð¸°iVe99Ÿú2”T"EIýAV˜vEše&§ú’ò*µeIÚ…4/ØùŠÔ°žŽdÁ°¦;Ê‹4+È[“d²4·dl•Oˆ¾£× p`‰«1Ê*ª{ ÏÂóñÍâžõ”c'Æ*G…Ç;лhH£½W‰ñÊ&Ú¨ vƒ‘K~¬¿سnY„ÔùoþTÀÜM–»à%wºMÅNtg·ÑMÃ3ÉàÐOoƒ8Ý6Yñ>y´S‘ùÔØv§ðâ$ŒiµPúGÛ@*Uǧ ÿBuwÄ7SùÛ¤T§§¨¯uiÂù@ŸñnPÀeâÔ
+ƒ›Û%&WœÓ¢+{Fç<-~›9¬«† Þv[÷¦}PYΗËãBÞ2ò.õÙ¾¾f𲦕æ6âáÆšèÀ u®n>3“ùºù¶Y f§æ ̪k67: j¯!Û
+™¥¯Çljöêx9Œ5JK´óÄGßw2UË
+^gÕ6Ê”^¿þŠîy*g à*ù·@j¸F¡
+endstream endobj 331 0 obj <</Contents 332 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 332 0 obj <</Filter/FlateDecode/Length 1022>>stream
+H‰ÌVÛn7ý•y$,³ä’Üe€>ø²°U+ÙZ')’¢0œm  ±RÉikú÷Î ÷"kå´HóÐð2×3g(ÕògõžŸÎSx¿†çµþ- õïx^¨¬…$àÚ•iÎ+Ÿ‡êO @ÖØB·*Muõ d…2y‰ *³¨üDYÏ'lPÖðdV¥¼ÑÊ‚NUf@›Bi«^Á-ÕRAÇì7¡UZ@ý×8=C:ä1 1¿71f=GßRáÀz’^Æ%µÀ<à­Ú #-R:×´rò×úgJö¢O7·A9ßæ›=‘*¥¹?76wÁ3vI Å–wgïÚ¨ð0ÐõÓaÈO&µoå(’M½Ò¦¾9»Ñ-ò|†¨Rtõäá;tw‹|oDv*s1›QS–çüI²¡®¤kZ,–· u&SÛµ=…K¼f½Í5®Ð$ÍÐ÷6M3¤iL„AsYÀä¼¼S~'?±a²·tHpz°!'íÌ+]á*PÁõ–”$R[”Gü:ø10(L+Š)cÆ}AÆvÅö¥®’KéE…À×y&&21.¾ÈB4+<±â^Ô#-j
+¶ãóòo×q÷_âï
+/^üs™¢¤¸¸*«c¼.áaî<FÖΙ>2 >ôâójy‡S´¼Y~”º“rÎñÒk×ëtrÖéJ¼D}‡ê ap,ƒÀ¬%t-3±à]³
+ª±@Q [¦3i·#M«Ãs‰Øn!•ñ˜i|̓í¦”RYÍ™ã þ냨‹®Ú>ArKYe[õ»1É]Orì8œñ)ÙQŸ©'3&A~ð‚l§Ñù”f`ÊçT=épÀrγ8øWKYó
+endstream endobj 333 0 obj <</Contents 334 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 334 0 obj <</Filter/FlateDecode/Length 1124>>stream
+H‰ÌVßOãFþWæq°Ï»Þ]{Oê””¦ÒJ|íTU
+ï%$XOÒ‹§“Þ*_ÿåëóM1 °‡°ÛúïlòÍt6-}HùÅlN¾>†Ã‹~7’øÝöþê|Nïß­Ûóàp9*FExŠöŸ ²óél„²*î.8>ýp‰ì]D™¸Š
+ïŸs<£z3’?‚…ÙFL>‡ fúuÖ^,Á¤mWžöãA׺^×ä;ºëñÚ`µZ-¯NP`§sŒ‡f€0ª‡Èõ[.§‘ý– g:°fŽð¡|ÄÕíê»XÀÆÎ3fìÖÈ^c÷&ô® Î"oäã ~†Ýß·\ÆNà¿BX3Eã¾7Cy&Ç„ØÐ]¯ÈšË7¡–hŒãÛßõ¶·O³*´äÃãíVç…Zßœ3s<²¯z6s]ŒíkØ×°_ø/íWá;bÄG”%WH; Ïš÷¤@œZ4kÿ¼±WUwìÍRÿSäo
+endstream endobj 335 0 obj <</Contents 336 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 454 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 336 0 obj <</Filter/FlateDecode/Length 1164>>stream
+H‰¤VmoÛ6þ+üH¦Ê7Qb‡}È‹×zhÒ,Q·é0h6kxpìMVÖEÿû¤ÆqWlbQÇãÝsÏ=Gû´bŠþš%{öâF±åŽ=«ôoŠiV½{™…à“ÖÎdªT–å>óE(XuÇ8ÕtBw'2¥´eÕœÙ23EÁd2ëÀyÁø´º™ÑiÅþbÖeÊ1otæ˜V™5L›2Óž5‘ýÌ6ì´ú
+¦¸WªdÕûCx}0¢ ßmÊYÝ@l¡ Ï™óø ì§dȄ怃½åB{n„Ô\¡]ã*¿V? Ø{¸… Yî;¼öT„ù46:žOÜÉŽŠQôÜ ÑµÉÂÈ€ÐÇÓ`œ}åÞŠƒLNùL›.Søω(Œî´P„ƒ4(•²Ëâòì YTAYP>ùñÞŽ¥g_\]agÍAV­À}ŸV[‹œ•ïU¥Ýñ̳ث*ϜЖ{TI`ã:⺞ïp±ÚnZ¡‰ä‰:SìZäÉok´î"Óø4ƒÐ:€&”Ct¦aœô+·ðaßó@ì#rn9[- ‘æò¥ž_âÇ) —3!æ›6¢­2ð -[Øö JË;€ünKA2Ü Ãkò\%ófvw
+endstream endobj 337 0 obj <</Contents 338 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 338 0 obj <</Filter/FlateDecode/Length 1173>>stream
+H‰¬U]Oä6ý+~´«‰×v'FêÃ2D”ª;°Lh¥.U͘:d–‡Õþ÷Þc'3¡|<Tbì8¾÷œ{îG+¦Âßæš}8ž+výÈ>TúOÅ4«®è¼Þ[ËO{k¤*TÊ2']îsVÝ3ÎDõW°Ð½…TJ§¬Z°´&ÏY’y™Zº¼d¼¬æ'Á ¬Øß,µRY挖–i%Sô)¤vlÓ°ßØšVϨãà7ÁN¬zzIÏà<¦>òû1«9ùÚðŒY‡Õ³_ãšvÉ…v܈Ds…s]&þ¨~ÙÏ;º¹õ2s=ßô ª ù:·`žy´Kz)FÞ3³÷®ôïˆA®ß†ŸFÙKñÉ*'µé‘ü
+nt_ …zƒR)†xrÿ?dwT|_xz,r~v†üšLZ$ÎyökƒnDƱYµk&tÊIS;¤]±szîÝ55N¦±š}Þ{šæYfI¯,õÄ º)æ2éÔk}ƒ q…
+­ø]G _uÛ¥HòÀÈòëðp$z³ 1]t«gkv ~dó’vŽ¾(gÓ’}£‡Œ Á>@ÛÚE«’Ñ%í<'÷Ž¯DJìàÜñõ鞉ɂ«¼[uaÝ‹†ìÓÂE7…æåìâSy.’"šTByľÝ4«kÜÇ» ‹Æˆæ»Ž€o¾OF„£XŒµÔy+2®ïº±8°ÐY(~mfp 윗x>.Ïé¤Ʀg[)
+ú§àR<J~ŽÃONOÔ&tuB·öRÝFBÎÛžgRÊß ¬‰5Ñ¿û_Ä3$ÚÈ4ßÝwvÿ®/‚$”ðèݷ‚ÙÉpvõâVxÞ^Aë«Apª$à^ªû ; Â8™Å%)A=¨â¥L™+E¡’mø,€}`ùP<jŸŠÃÕšäYBÄÕúš¶'þ(ÔG¨›qÀŸN  RÀlw îÏŽ/ùüäwP@ý;-%ÏNHÚKvê}vc£ÄƒŽÓQ9¡ìc îEëMk蹉§¾Çº…uúShªSDy‚☖ø í•j#ÛÕFn÷ź©—+*ùvÖtO¼ ƒè–ÊÑx
+ŠM)µHùö‘äkÎñ p/v»¹…:è5BŒ£ˆÅ¾.XGµ»©×Ð >Ú N˜Èû¤˜€ZªéQ«°—6¡Çñ¹]|{°‡MÛí¢½b½¡¿ZXÀxÞœõwî;
+endstream endobj 339 0 obj <</Contents 340 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 340 0 obj <</Filter/FlateDecode/Length 1187>>stream
+H‰¬Vïo£FýWöãRŽÝeˆtÎwÖ]+5J®ýpWUŽCl*RÀIOUÿ÷ΛLꤿTEeÙ™yóæÍàe!bþk·âÕû«Xl;ñªP?ÅB‰â–ö³(Ï“D„9­ÅYl„u‘KóTwBŠ ø™-Ô`ű2¢Ø“E:MEhóÈ$tøFÈUqõ5¬
+ñ‹0I'Âi%BÅ‘ÑBé,RN´¥øAÔbY<BŽÙoˆUœ‰âñžÆx4¹Ç÷ÉÇ,®Èw ´´"q¸çâ{¿JñYÊI„JÆØWXÙàÇâ€ýn‚›&ydÝ€×¼
+ØVvXTM-e$qšŒeÅ%½æsûrÝ®
+w}¬û
+SÕ¼ÂL®ƒ0!„¡ÃŠÄw¨”á8Ù—¼ârG «ŽM±d«~ÃÇv º¥Ôƒ€ËØ´±Yå±…Ô´¤ƒw€PÕk¶ØW7A˜“+?Âߊv3~ô/J>UFöUOëD~Yð
+‘œ"añ(Š¯à
+ÁWíiéÃv¬u.·,1ª7Xb’Æ—3ºæõ×É”‚>UR©™p¯vò¹©n™0RGys’ƒrÈfŒÔ^.È_£? 䟑BËåSs@“ôcõ”SÔã ‘ÍfÝ?ƒ!žRš¥D![D,¹¶C?æ¾Ky[ƒ#_òŠ׃ÖlR³ úÎÊø€i@øg¢0£Ä]>“_E ´Å¬óÔÔyö™rûÎó XVÛ€ÕI—놻³†ÁªøÌ-w`; PÜséØ–L9ÏT^UC'¯ƒD^cQ.^œ
+?tØcر㠑ÔÔèf
+:ðG—0ÐÛŸàzçaXé'‹·EA¶»1¿ã ?o0h^š=ü8öß9O½ü©ð·þ eJß);Õém€®å¡#…—íºr‰û¦í‰.qFü¿¦ÏXüvuùpýùÕ;ñÛLŽfä2uú¨‡¾¾Ž’¤OÖ=®á+¿â¶Î J'»†;çÀ;ì”Ãw%“ŒJéì«ÚóíšýPV{†.Kÿ¶ë'íý›¶Nò3½°ò'Òÿam”?ƒceÖ(§#ÚË ´m‹ììõ|Ýðu/ÎÎ^k¢¹&vVžRSë¥Ïµ^OY·TZª; ÌîÝT¶a÷¼‡k€øu˜IàÙȶmÚ„ Æ_0
+endstream endobj 341 0 obj <</Contents 342 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 342 0 obj <</Filter/FlateDecode/Length 1081>>stream
+H‰¬VkoÛ6ý+üH‘*R%؇¥õ² MÑÅê¬Ŧ]~MV’Åþ{ï¹’lÅžìÀ&E^{xî¹t.K‘ð_=ϮƉ˜ïijRÿž-Ê­±÷ÖŠÈÓÜš8)’Td.v¹ÏE¹R¨ò#¿¡»7â$Ñ©('"-b“ç"Ê|œZ
+9*Ç×ü¨ˆÔƉÎèØ
+Ä©Ú±v¢â±—å*̸fI!ÊÇSz1@L}Ëï]›³¶ÒFfÂ:Œ^üÜ.ÄJKâ!ÞK¥4*Ò2ÁºÆ,S¿•?‚ìO{º¹õqæ:¾éª ù×ÜøõÌ;Ö.ꤠg怮MìÿF ‚>Ÿ8}šÄ¾W'™lâbmºLþ_'bÝy¡0'i`•¢?Oîÿ‡êÌ÷N¦W*—oÞ ¾&‹-
+ç¼xÀPÀZer‡Éb³J§’4µ}ÙqKÛ· VwAhŒæP÷Ž¦Ð4à©é(Þ¶4I¾,õD2&Âe±;a*ª»r²QVÖÕ¤‰”Ö`æägååZE©lªO¼êzSó¬UTÈ0i.3:Té Ó¦¨-©Ò/û,eÉ8 ŸKE–é™ oWÊÈO¼Ùç3r¡¢\ÎÛ0úÚ ¶†>I Sñ”÷¦Ø‹Ú0À-è3ã ¤å¯Î;¾yâÁ·ü<WÄ2ìo2s*#&¤XÓ#eÏ$éä儦:—+e¹ÅjÅ‘Íân(\gò‘Ù7Lï½Õa
+endstream endobj 343 0 obj <</Contents 344 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 344 0 obj <</Filter/FlateDecode/Length 1307>>stream
+H‰´WmoÛ6þ+÷‘*•¤(J ÐM¢eRǵ´† q©ÝIÚæ ÈßÝ‘–å8i²­C`‹ïxÏ=w÷ÈÙ¯Añ_s ¯¦
+®[x]ë_h¨¯ðy™zo-$×Ö¤ªTä.u…/ þdý{èè‘*¥3¨/ +SSä>Í,_‚¨ê鈪~‡Ì¦Ê‚3:µ UšЦLµƒf?Áöë-(x0Ÿ›ÐJ•Pÿµ Ï ˜ù€ïcˆYOñl©ÈÁ:ºzø1<H¥ˆ΄ÔN™h¡è¹¦U.©¿'°ï{¸…õiî"Þì ¨óqlìž{ÇÜ%‘ŠÁé¹Ùœ®Mê¿@ýt:gFÙ3¹É*—j#ùˆÑ±Êl' µJ¹Î§ð_¡ºƒæû(²#YˆÉ„êkòÔRᜇ?é:£62--æËH äԮˮà·ÙîfvNOÛhºšMÝ#L3 #ïqR£Nä/Ï<â$¸<u;Pd)–21b!µ]Œ¬Ä*Ü&¶†ÊÄãT%¥+ÅZÑç4ôÈ)úÖy!öGd[ÃT:Qã#-NñøÑøû˜ž>P²Õ™0X{¬¾&Ê)¶&£Npœ±Cãæ P5,YÕßôF&¹˜wó‹ó›yÇánç縰âaaJŽrsÈu&Ь…=¶ÚC–ßÀ´Â'ÞÿP*¸c·ˆ&ƹ
+W¸ÙªöáÅzû[™é5ƒU*‰È"køKÒ4eU[£ª‡ .îÃ=£ÛÞl }[Ògÿ‘ô ‰19å£Ûc>§íB©ööH£"âOܛʠ;N|@óõSMG§)“ñIj/BèÕ˜q0ÍWdO·MÿňxE°ð€«ð 'ߺ®,•?2X!fXa«!Ùâ.JlMfæv7ä:¯ˆD7$Ñ`›$TlWk³ÇŒ^1¼y¾®ûP€c‚‰&Ôøøz‡aÌé=º=Š“fÙQÕ.èßò†^—ÕÆkØf~®,†ã7ö­Ä7ÑçÙɲ#ª¦Y6˜’éS‚:æúÐj8øEßÊ~'¥/ ¾ëß_mî‚ÛBü,ʼnsÿ_Ɖ¦QoÉVZÑ=*| &Gz:‚ìERÀX{%èÉdAèY7}ãÛ‡/` ÿTbµèÅ1ÓÿŸ\ð ï­º`ÓÂwã}¬¶o©¡&Ì%ù„ÕéIͧ6ˆƒ Ç´]ý6X*ÆÓ(­@Rt÷4Ÿ¬/Ómã¿ 0
+endstream endobj 345 0 obj <</Contents 346 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 346 0 obj <</Filter/FlateDecode/Length 1112>>stream
+H‰œUÛnã6ý•y$‘V¼ˆ”ìÃ&\‰íµmѤ(œ¬šºð%µ½m‚ ÿ¾3CYRÖqA,’š9<<s8:© á¿õ¼L¸ÛÀûJý™€‚ê/\Ïâ<·¢ÇVÇI–H]ì|î¡Z€
+3nD£$ƒêÿ}zšbÑäßUسš ¶TZ¤`=sø%,ÄR ä×B*'´Œ”Hh]Ñ(•T?ÙO-]oó8u _s€*Ñ|§§¹cí¢FŠzª;t¥ãü 1úð6„³Û&±×ro'›¸Xéf§ü‡7bÕx!³{ÛU²ö<:vöð>ÚwåM—·ç¾+aÒ‹ñ˜
+¬ÓØRå\ÿѳ–‘k™Š f«%HeŠj÷«ª|Î ™'nê7L¨[šê0KFT;šh°Ëz^O‰×¦EOÝÑh6Ñ}û4;>–'59âS™piìö„8]Ë(³íìv:ŸmѼJ<žÍ¦8°âNFN,¥+l¤†ªäèÀLãľޖ„Ql
+ „g¦Ä1ú…þ?HMk6'%%U|l˜H•5ãK.‡l_þNæ*p¦ýµÄû¦ôî¨/È·lU(²UZu‡·IO\‚HæâtzO"R%Å ×8Ô74ci¥qZÃÏÅ¥Œ<•,0Æbž´ûÔÓÝ´º›ït¿j€þðâ.¢âßNï§7óú¨ƒÐy á[¥ÛÔ%²F§¡Ë0=·,×Eº ó=¸ïðŽ­@¡àµëËÙE=#QŸô%¡6}.ÂÒöU¹/jöðÍ"Ó›šxC—àïa‚®ØNƒú_1tÃê¬ôõŸˆ MfìNg›ãú|_ÿµ­‰ È sª‰ÀšE<âAæIÿ"Ùl'ŸÏ:a–TºÕ2Zг&Ë/¤6Œ)êõéüÐ%Tv'´Ê^zP’/XµIñés1äêâ…+¸?˜¾NÉÎeÞ¤ûBÝ“ÖçX„‹áì ë%ýnùrhñ2C‘B»zÖ†q«zÃ\sr•áè±ÏáÃQ%µU=Ï%7^Œ÷X(¥Rß@¬ÛPRx†o¼§ì¥Ik^ɦ'µ*íè5½kFòIº ¶¸R/7Ø¡èÝj‰šÛ.a¼^QÄ
+)áïœÒèfr~–4i³¹móÒi¸Ø»)…O1|Ƴz^¢AÙ0!é[ಠÄgŒ‡gC-GÃDâ¼×[:£õÍÓ8?—ß
+endstream endobj 347 0 obj <</Contents 348 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 348 0 obj <</Filter/FlateDecode/Length 1091>>stream
+H‰¬UÛnã6ý•y$‹HKR¤.ö!ÕM±u²±¶-š…á¸Y^+µÝ6@,)koP‹ 9ž™3ŸVdäo}OoFC÷zSÙß Yª~g{…÷<÷.6¹I(¤qšUŸH‘®þ¶=cªf”ä±Ë2ŠB'žïH•ÕäB”ýI‰§ÔÙØ“5qâȺ<¶)­çô­è´zA…7ÂÌäTý³OÏÁˆIÑð»iî¬&Œ­­S|ŠoA?6†X[Å<èVi›*§#« ì³ ­¾Ù÷ÝÌqH[¾É¨‚æanr<©ä.jS1@®G·..^ICùàì®1þVïÝäM[×ÞTüï‹ƶµ‡½kP*ù.ž¬ø
+êŠïF%#©«+èëBì!\ZÐßøÎ!àZµÁdQ¯HÛDqNýNvC×¼-~ËùÖÍœ,¾®×½¥é^(Ëù
+IÁ¼7CiˆSsè]p,6»°¬Ëš°"~G,Í9p¦Q#mƒºÐÖrE¸D•Ú9µÕ6kŒ¥PÓ¶Pô<ÇNuäÕ‰v>!ç0¹Þ%*Ïšu¢Þiç[øŸe[PjÒÝtÙÁÓ1Œ2¼EÞèI[ÏA!/¢•CT–õ,<‚ª¾áã8Þ…mœkRÕî=7°‰ëÎ- ½èI댬€ëB<¤…|lÞ,»õÀ~¬½ü3UE—8]ñŽã·ONJ³¸ÞŽGüÚa¿ø9(yåt¡nõ­nì¨7Zùbµ¤{õú(œD!Adƒ RÎe$ªZ£Î™[pÔ'í¬š.tT¨•ÎÁÉÉä’.fÓm½¦ãã·TŽ?Èñ@º¼>…%<§'ÄîÃ@g[I2:4ÛHy0?Èà¨Iµ5ºÃKÃNâÔöx`E¨†»ZòÊ`ÁVÈåÈá2@SI›>¿7*Š€qZ=‚w½c:ô+·Ê9sŽ2Û— ’ÊIÈñxRT¼ióÉUÂYiæ×:m$iÊ5ÂÙ¿U‰CàÌ€[:ŒnGì[ 7NëèeX¦£ìzÊ£y³÷La µ¦àñ
+ö){nyÒœTbö‡ŽòøÊiNÊFJеT¥Ø®–“ýžIÓåv±ý‹ë9“îÔÉJçH×b„Ìg’™Œ¯ã­¿hÚ…ã¦É.·2ÿï0GòpÒ÷ËökWi ~tÜ`US¨<yÜâ§f…P±W¯8g¯u´«uõ ͸^î¼F£_ð¢C¥ÅtƦÁîSv_Èj¾æ¶ñÔêdZŒ@ÌØéL๮Øöt
+°£rQnžé™.¯tó|¬º¸Ÿ€³€‰é«üjìwbnîÿ
+0
+endstream endobj 349 0 obj <</Contents 350 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 350 0 obj <</Filter/FlateDecode/Length 1211>>stream
+H‰´VÛnÛFý•yÜ-ÌÍ^È%i ¾ŽŠDvl¦ j… ±¶
+UL%ºMaøß;3»"%+òC€Â÷ÂÙÙ33g}Zƒæ¿Õ=¼¹¸Ñp¿†7µùMƒúwÜ/TY¦)$%ÎS«t¡d^ù¼Ì¡þÈú>aâ ¥µqPOÁÊæ9$Y©\ŠÆ3U}3âU K•NÁ[£R0Z9 …U¾€U?ÃNë$è×zò›ÐÖÿìóá‘GW|·áÎúŒ•ÆŠ ROc ?ùký#!ùØcÉ5E“f*}Œ+z0ÆÃ.ó Äà„’Và&Ü ira5홑}QZªÌGDî
+Âf~'dŸJfbÞSv«¸ój`ü×®Y®±±ÖÔ7$
+ ¿xÞàWöV<ÁÓ¦ÿéÖ¨Òõ©[™÷ärÒ5 µ Q ÖÏð’‰à‹YÊßåUÍf#r|9>aI9:ÜÖIDË9û¾æ¶›hñ²Gá—R·#²Þ ’é^­áÝxGçÊ^çJÔ¹„Ä͈5Í‚Ü¡ØŸYùÂ늒²¥v’ó÷¿)^:(ž¯¾¢KdDeE5¢9ÐÚ²¯#…Ù]ãx,Sþ±ä]£“HûÂâ·){b|ÿÄÐþ芵ÂU*±ÉäŒqïDÒCO}Øß.c’‹w”õ³[Iê#7=ûM8W1ãöÁ«ø2™Î;j¼¥ÅP¨A\hU’…œõ ¿ÌJ¸µFiâ\½‚ýeë —Ç>"‚4 Šc‘œL§ õ÷ÐeÚYC`£ÞGòEï|'{a,¿¡ÞÓEK_ªf[ËôŸ
+endstream endobj 351 0 obj <</Contents 352 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 352 0 obj <</Filter/FlateDecode/Length 1123>>stream
+H‰¬VÛnÛFý•y\"Ã½Ë Ð‡Øl®¤ØtR )
+×’¶ŠäJJÃÈ¿wÎ,)ÉVlF!€{áìÌ™3g‡:¨)—ßòš^åt½¢—µþ='MõïWYÎQxîL–W¹¥¢ÌJ<ÕŸIQRÿ)'t{"Ësm©¾$[eÆ{J‹YÇÆRýúl ú5ýMÖe¹£ÒèÌ‘Î3kH›*Ó%-§ôžætP߃ŽÅoŠY^Qýuž <Úñ}ˆ1ë3öh£
+r%Æ@ïâF–hÅ8è£Jt©L’j•c_cV$¿Õ?ìÛ \ïBV”-^ûTÀü169^„R¸K[*v¼fë]›,<A»~< ütar÷1Ù‹äò2Ó¦žHÜèV •ß ©T]>>üÕÝße¯ÆcÔ×™CáÊ@ÿ`œ¢€Ë¤P+LšÅœms꺲çtʯÅn6½ÀîjJ£ÙÖ½…i¶0 ÀÔœ‰/#Jf¯°Q‚ÅœÊ"+÷€Ò§ÛÄXõDzIJ5AÈIq䣣”ïû|ûÅÍtžh6KŒŠ–B‘邇3õ ØfYÆÉå¦Ø±4&-©ïríD˜XÆUË4›q ó°qx<<HRÏò¬Ô!š1Þ\Í°$©~Þã¹n®°ÓL—èÕ«Ÿˆ'HCéÔYÿíyxØgEÜSwc¬shÓñ¶ØRખƒ 8á
+ÿ2l&˜#¦ç˜kögÔ-%Ç$YŒù©o {<”j'°v]`·Oýåt6ã<¥NôaUëʪ[lQbªÀŸ2DL¿[² ¹-\ÓO¹n
+ô¨oëé|Å2]Á!´Zäb ÏÌ­Q‹õâ
+^Ìú߸lÍÏ«©YHvs©–WÛÕú¢aÆeÊåÙàˆg € W–ʘ
+:ç„.KQW#¿³ê:FðP<4iÏõÑâÏ]/*+ÿƒ^ôÔ\\.§  §Ð :^Û
+"ÞøÎÆW)Ú÷àMOÓNïqÝÄ{½ß|¾ÌÅþ/y2rÜgþp|ezçç¼Y±_‘U
+^¸J¬“ã.…øÀ™‰œn€â·ð"¶ÍEtÊÍÅ°Ÿsœn£ÍÛ(qÙűêô™!zrâÉïÖó.qÔRf+oŸ¼ÄÐîðþU“vƒöÅ8åƒÖÄá–7â‡Ë"e<PµF¡·ß.þcð¯
+endstream endobj 353 0 obj <</Contents 354 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 354 0 obj <</Filter/FlateDecode/Length 1235>>stream
+H‰´VmoÛ6þ+÷‘"U¤(R Ðg42ǵ †,‘] ‰ÔÉÎÖ"èßÝQ²Çé†`Cñíx÷Üs/ôI ÿµkxõv™Àz¯
+õk
+Šîç±÷Æ@äqntœäI
+™­óŠ; ‹ßù†ênÄI¢R(®!ÍcíD™SƒÂ7 ¦ÅrƦü©‰V«Ø€JâTƒÒy¬,´%ü5œ  bÖÑ,É¡øë)<M2¤1õße°Y,Q·TZd`,~ ±TqÀ{!•ZFJ$´¯h–É_Šïì»\g|œÙoú T‚y_ϼeŠ‘öLÚ•ŽýWÈ@ÕÏ›!=½™Ä¼—O,™ÄÆJw–ü‹ ±ÕåBž?1C©’÷þ8ÿDw”|—"}+X,(¾:‹ Îzø“Æ’ØÊLlhR55H•
+äÔôaOàY¢ÝM ŠF=Ľƒ©Ì€.# *V.U'ò—¥q Ø,¶O Â‡ù‰Œ<݉™Œ2q##'Êz‹öµ¨Âð‘À®yDr“òö–÷nÊ(õ¶â£U%_jI}UÞˆÓÁäD¦¢ zn÷!Ðw[­h§*ùþ‘Œ *!82ºóØz<Ž°`v}‹ Žc®iÔ:¤
+Ê߀øh–;1åY,Ní:ÙË
+MË–êû°7ŽS“„W„¯öi:ÚêGðɺ> ù¹éô~inœ/
+˜Ñ¥óù›3Òpô|!rU½¤
+Åð,ãFuˆ nÊõd˜¡9LÊ©š>+„ZqI¯ï[bèjKÙ„¥ZÏh¹jº4Dî¤â.ŽEЈ®ÅvzÎ'SxàD¼ÌTï¥Ë†Fõ±mðMÃW P å -A:ü"í
+ Õ`Ê"k¹'‰™Æšµ¼Ý°5íÏp?ÈsÍ*ªYƒxSq@xA/ÂAys$Uÿ>0…º‡íÌÐÐá{
+UŠjq@rAiÅ¡JøCÇ8Òÿk¼K~#•ïe.BîGÍc趮:ð }Ü\SûÒvÔG_gL+*w¡k‡³Q«K÷[þòú[€
+endstream endobj 355 0 obj <</Contents 356 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 455 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 356 0 obj <</Filter/FlateDecode/Length 1405>>stream
+H‰ÔWaoÛ6ý+üH•JR%Ø'2®ãÚʶ"ÃV\ ŽÝÙNš¡ËïÝ‘’å¤ `0Déx÷øîÝsT2I›{s:‘l±eoJõ»dŠ•—ð>3†EžŽe.–ÚØf.cåãL”ÐvÄRª„•3–ä±Î2¥.N Ï/ÊIŸ6%û“%&–†Y­bԌ͔ÎceÙ¦b¿°;* €còá“ÌYùå!<6è1qß…YNÀ·Pš§ÌX¼;ö³ ÅûÈ…²\‹Hq‰ï>¥â·ò'û¾…›§6àMŠ0¿¶§ÎwQ ¢ã=Õ{ïJÇî 2ÀõãaÐOFšâA$#m¬tˆä^ˆÜ¨ …Ü=ƒRÉ›ódîÈnG|<90¿: &Î:vƒ÷
+¸)ßâC½^1¡œš&í’á3Ù-«)¾ÝVLá]ïó`ê=L­§ŠU&SèK0‘FÉlÛHÙlr %yÿ*¨mS¸FŽ±Ãû±°|" ?%ËÃ]Æ™ÖîlTÂÝð¾ˆ`1ì Ðò5#ð„4 H­si ¢8A@ŸD·@шRaÜ è
+ %Ã'ðñ™WïUÿåi
+endstream endobj 357 0 obj <</Contents 358 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 358 0 obj <</Filter/FlateDecode/Length 1322>>stream
+H‰¬VmoÛ6þ+÷‘&•¤¨؇$5R™ãÆÚÒa0l%u‘X™¬n-‚ü÷Ý)YŽí
+4”·¸_ÄÎY ‘õ5±*Tig¹Ë¡|
+YN´-ÄEÕG0+'ÎmÎÕ¨ EÅÄapsÐó%±TË(‹yKEó $b,##|z˜„ÉB9ˆB„EÕ("ÎFTç/mµÞ [D› DªÀ”"7 nëɤ¾}AÖñ4~od†úAóLÐ#'ß?µó•Œ/«="™âi
+#¼¤¯šóîÝó Ì][|Œ¬¸å3´jxKª"¦|’Œz<âw<ãÔ+J:HÂU;²èõíXßQÀ<äÔ«3ŽãA¦ÆO ´(¿ñÌsž'!=ú§í1"d«9[xÑul ˜ðy±Þ'¾K•Ï<°°ñôêBœRQ¹Ì|ŠW×XÖ+Ô®gƒV缃,‰Ëhô›ßK“öœœü
+>A0Gd4š:võ#%†)BîVœ%Ï¡3‡ýè±õý(€q·Á^íÃAÓ w²ÁFÌ…cëDÛ¾†Ã5¦²,yF¶«–ÆàWn„îÎ QFÌFï¦\31â­D<±j|^Ü@iÞ ñ"é#ÁÇ ñuÆe°`cá’+âh15õ*É/¿FTdTÓ-iÔb c\Pé;ò6tyÀßê…~G¾èæ¤Ov9Tm{ç˜á“ÓSèþØˋǼ¼xÒÝ‹';zñ<Áî]ÂZß-Í‘‰D(G”¶‡ö­·‹ëˆwô6äAÕi×óšì«Îg†»û·_°ëÆ?^äbJV¯ŽÉC׉C·
+endstream endobj 359 0 obj <</Contents 360 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 360 0 obj <</Filter/FlateDecode/Length 1118>>stream
+H‰¬VaoÛ6ý+÷‘"VG‘” ’VH5,ŽkPg‚X)<tvgm‡ ÿ}w¤$ËQRtÃ`Ø")òî½w¤ÏjHÃg÷^/RøЫO¡¾£ñByo $žÚF«´H3°N¹ÜçPÿ dýGXÝ
+•¦˜A} Y¡tžCb½Ê M^(ëE”5ü™Q©§QÀTeP
+ìø6pV@¡À!n­´€úËžæ91óß2æ¬[¢Œã§‡_‒(\ ‰Nh™ Hy¹eåoõ öÝ
+6öZ6 ïPå= Ì 3z‘†ö{÷äßp…ÄÞ<ç2ó9ÛG[eØÎÃg~6ì´¢åÆz»‰™ ’™ÞU)\Iç}lnx´m
+ØÈĈ;îo¹ÇÇ'pùš¨éu&J&›°à½ÛW4!„žÓZTï%¢(©‰JiJ`íµ$ûQT¬;Š„´þaDÃ4´IÂU£é‡3ƒ‘ΉBwa–¢º(iAn
+
+endstream endobj 361 0 obj <</Contents 362 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 362 0 obj <</Filter/FlateDecode/Length 943>>stream
+H‰´UmoÛF þ+üȦë½é¤ Љ«eî<'µÌ†`q3iÒÙYסèÉ“-9N³aØÈ:‘wäó<$/'-ù[_óәë <kíO,´¯É^ë”B€"Ñ:8mjã¡Œ:V©‚ö ¨öW9a»Úë¡ý|­]UAQ&ím¾lÚÙX4-ü>h :«X£½ëjm#¬—ðÜÂI»…KÜ‚W¦†öCxŽ÷pDŸ2¾yÎÙÎ(¶²K‘ß ¾Í­,X ²*,¶[^•êÇö%ƒ}µƒ[…¤ËØáõŸ€Ê0Ç&ÇËE»¢“b½t}tëtzB
+ýé4g›Æ„…:ÈLÔÖu™Ò¿N$al× É¤áV©·|ªôTwÐ|sô§ªÂós®¯+uàÂÅïø½ä®U‰^¬înAY¤iØ–ÝÀ¹eßÍò’­›%X~»¾îL7€é§%*)d˜$_éÁd ÄRǤ
+êp:ŸMáèè¹°ƒ=¹‡2 ¡¿Ogë°Îb„ZÔØí¶ïô@3âí;q+³ÔÞWÖßÖH~ž+Â{6"}ZÁNÕžÛüqAæñô”n¶à¦hè+pŽ…Z¨Žçƒ©Û!T*Œÿ/@+9![žF{”¡‡ù;GXÿRðyŽ½âfºfã-ÿ\ª"á ÁãG|b¾fZr¦•v™NŠÉ7î·UÇ€÷ÜŠ{D9UC÷ê›fÊ)F* ¡-= ±Ó<ÿ¾QÎãå{Iw÷šsE›ŽÁ~~z–ÊË[êwö…*"k^Qž¢˜áïŸz(à#9Ü´±ê†wŽE ø²Ÿ‹,ûÎçð+¦;ð»þÉ“35ÇÉñTYQ žCºåÈ‹Ô7•”ÂsßdÛŒ´Î¦ r²V8=]ˆY>HeËSmqŽˆŠ?ÿ
+<϶W™ò`<'rߌåâ
+endstream endobj 363 0 obj <</Contents 364 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 364 0 obj <</Filter/FlateDecode/Length 1161>>stream
+H‰´VmoGþ+óq·òmöõîÖR>ØøêP9à˜K[Õ©*lcBeƒ
+¸ueå¿wfvîS©j…Ø[öeæ™ç™™ã¸ÍŸåÞœŽ4LWð¦5¿h0ÐÞâz­bôŠˆso•®µƒPª²Š´÷ @¶¿ò “o(­ƒö\­lUA¢r߀hÚQŸ/4-üÎ+í¡´Fy0Z9 ÆÖÊ”°œÀ0‡ãv
+f»Ít í/áY:C]Lø.“Ïv„¶¥±"€/éáû´ ¤ˆ> iJaea„¦uC³ n¿#°¶p+U(3^÷
+T‚ù÷Øøzˆ%sWd*:ÖƒÝY7Vů¦_wCv6n´ÿ$_xòºTÆfOñ_;b3&çBt/ÜPªÔ›xªø¨ÛI¾KáNe%ÎÏI_”'áÊ¿ÓsB.e+šÌsÆ äÔod×pÛ|în2¦ÕÕ =íN÷ Ó&˜F™Ê–‰$-¸ˆàˆ< ePå |
+iŒ€÷ù|r„‡Úor¥±åÖ„ñy÷R¼_/=ÅÃ×b²OùÙŸßRH‹%#¹—Ö‰±tb=ÃØ™Å!ÎéûV"Ö‘,Eƒô|øØ È^OxU‹] š‚¹°[ÿ9ÔëÉÝ]_^ÜÈ¢$r­˜¯gkÜ3âOZé4…ˆpéØ‚Özҋͽ“ƒ£D59zîfÖ]Câ=®'ó
+¼Jæ+1ŠsYÔ(?º_¬×$ýâ®y”µÀÃ8®0ÈúÆš§Ÿ=L£Ý¯õx&‹ÈÓÉ š2Š§Ž„†u!" á²V¹`H¨øY‰Š”ˆIˆ˜u0IG:XÔÁ ä7ˆ9+£X÷>Cá ~dQEŠ 9¬ž·¼Ý§Ø‡ƒ£3º˜ICªÊÈ9QdT”\¾NÐ2wJ©Åv/ɾ¤,£µýœ{V›Ý”«¿–rn“rv“rí5Œä‘Ž¯q•ciVȼ³GYA+Áxv¾†˜¼-ߦYWP¬³¢ù1-7ƒY`—Ö˜p]mN«ÌGʬäh_'Eo =é°³MˆT{%ÝIô€pÃ.Ñáðð-ôÞ ûo¯éB4Û3{@‚(H/¨s 6æNR—‘6¸È;爿¯n/Pá£8qãQwªmŠü6TET\ä±Üz4ûië™îüLû¸ë}ÕK®¨i8'¼‹åA °»<ÜÓâ–ó!®Ð—{]Ðr ÔïNêX€øgÀhë¾$¼(C «.àK”IþÇÎÌÌEf=v¯ì¦þŸÓ¦JŠøR &³)ÅðùŠ#¡áas.uûe§ÏÒlÛkÏf«u©:·ld”t£†›{CÿzÐÄ©HIøõû´¨Éš’…£Kñž£H- n€ûÔ
+endstream endobj 365 0 obj <</Contents 366 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 366 0 obj <</Filter/FlateDecode/Length 1297>>stream
+H‰¬VïoÛ6ýWî#9T¬HI” šT[=vk?ÐfÒFi<$2»[Š ÿûî%Ånœb] ÃEòîß=µßP*¿›÷ôô§yJïWô´±¦d©9çñÊ„ç”îçΤUšQá/CIÍ)ÒÍ_ba{ “¦6£æe•qeIIL–óâ3Ru3ŸˆAÝÐ5e¹IsòΚœlj2GÖUÆzºié7êh¿Ù‚ÂŽÅo‚^ZQóÏCxkà1 ß›³™³om*(÷xú5mã ¥­WN'V¥·èúæg€}5Â-ó`
+ßãÍ
+˜»±‰y¼p—ôTlx/ܽwëLøìúñ0ð3„Ióý Ržzc])üï@âÆöZùƒ0J5ì§ ß!»â{£²Ÿt©ŽŽ_W˜‰óþƳEot¡Vè,–i›)æ4ÒžÒ1O˺Ëö£«–,žî>ï=L·•Yæ«Èão)ùÂøt×¹ˆ›±b„ fq[ Ÿ#NÍ ÞÀ´]¼×‰WoÑ.Ñ|Оq'…š 9ÃPÛ­kÆiÕG¼’Nª*ÅÃZÔÞÞ3:x9“å5ÝñpΓ؂
+¶±93@$Îè€W áª!œDÊÔÇÍ(¼ëƒø÷Ac$KXà\Ìl?÷)NÄ1¤+¯/5®Ï†œ¦ngN/tPo—¸½™tçšq/ð½
+ɨAöœâÊÏDpxÆQaÎVL]ÅÌY!Î
+ee6™M°›k';ñÌV²0háÌ`?FÄt¥mâruÛ-GçX»?#à 0³ýKàW|,¸àr/¶Ì< á•:ˆD |ùþ"ñÅX+m5tØ,ccÏÈ??¢3qˇ6ðaÉÔµLµ8Ë+¹>Ä
+˜Ë³›…Jíñ;þϘRšs§æDY†(ˈ%õö£2S(3Á…É:Ñ“Hs'DDíe%ú-{(42r¥E-Û\>r¨G5§ökNõ±F½³Àä>a•røõd_ä”Ò Í3^»u¾ïzIE±‹b¹Q/:–ÓšK•›¢ÎJ5žçgÂ\‹a©¼e¬¼¥úȵ“ËËK̈վ8H¤î‡ÿè´s]uéF]u~ÀyrQ'šÕÈÐíºíV|÷®âµe³‚­À§–ëå;Éæe}‹Äµ· NNNJ‹Ôø¶>]
+endstream endobj 367 0 obj <</Contents 368 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 368 0 obj <</Filter/FlateDecode/Length 981>>stream
+H‰¬UÛnG ý>ÎÞÉÜwÆ€"G1T4Ž-mZ VQ±¸ˆ¥T2zAÑÉÙ]­ºvбš+ÉCžÃñ¤ÍÛðül¡áÞ7æW š[ÜO*gï¡Ê8÷V餄¨bkhîA€l~c ÓZ(­ƒæ=¸¤l]C²r/߀˜6‹LøœWÚC´Fy0Z9 Æ&e"lWð3¬aÒ@AÇì·¢™NÐü9†géyt¹à»*1›ú–ÆŠ
+; ݾD¼\‹ÉìõùôâFVN¬Ö2‹\Ñ΃¬’ø7
+ÿ0½{ñYKAŒ25vgWøÔ{—†òÌI·?8’”uï'„ÖO¬ÍÞÏö½¢³R!,CBÝül : ³ïSJõ¥x¥€ù˜6m|¢”ÅA9ì‹7Û1ÔÒ™—²Êƒ¤¢?8÷b>`î@Va¯ªÔ§_TÄÿì%u)1Äz ©È_/u7PSîÕ”ÇjÂU*jrÿSMuÐ¥‘ši|f‚¸ÛçˆÑå4€šø;Á—Ñ%1•ËÅ[’ÎϹ«&f]‹wäÅo”¢ÜKÅ5=iô5ýl6·m|ŽÌ-ü½½’êÇ,+rwÿÅ®×¹k%ëöôwΤ¼±ŸS¼£GáãïŠÛåiCgÖÛiÜKE.$ãh{ fxVÑochShÇùáµ ŽµH|¶ –þË2FÙ|ÄŠÝ°ˆp¶½^;,ϧ͖vªî‰°‚ni½ánu§hnl>µ‹ÿ0> 0
+endstream endobj 369 0 obj <</Contents 370 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 370 0 obj <</Filter/FlateDecode/Length 1136>>stream
+H‰œUïoâFýWæãnûö·½‘ò!!VJu%9ðµU“ªBÄQqÐ×KuÊÿÞ™ñœ"µBxíõì›·oÞŽ/jPü[?À»«‰‚‡ ¼«õï
+4ÔŸp¾Ìct²ˆ÷ÎäªT|ÈC ¨?ƒ
+,¥Ö”,Š¯äêl+ƒXO—YŠ?WkzÊH¢áò +bÒ¹€× ' ÆAÓ
+Âé­òD»è˜8W®èXÆز̰S t—Df¶D
+ºã2À
+˜_¢˜„шÑ-R½…²´H'-ÄžhHD ¢YGôæãV$Âã¶Yn°|™‘Úz%àFf% ÑWÛÕŒJ¶ZT˜ƒñºA]æ-#z$ºû§mǯc Y*¾óÄAã™ðTHl·¢YÃ7üòœD¾@ R¼O"áuƒ&Ú· ïë3뙺˜x;¬6ðO8aI¿2– #®ojŽC¬¸3j¯ˆxø”#©,±JUÄÆç9÷m‘Q<ñÔÎu»íw›,ö~ /“!Æ2+vÛ+ŽìÎÛÝ÷¼õÑÅËc4GÞÔtÌ®Û^èžã9IB3â—ö}5š ¯GpʹO¥g¨ý =ØÔî…©ê¡’£ŽŠbtç=åwî“ÑÎÉSƒÖrÁàôô ÝÇU Ý:ÍMÚgr ›~tu'&Ã_“‹¸>>á5ÛÙÿÉ}©Ê«òÕR%z˜H{\f•~ÆoR}øXˆd•f¾õÎá¶gNö…Æ–àuI 4ZŽÁÞ·h½·¡'Tô46ûT$ß;Òësä3èÈ2Ÿ1ÑáÄ6rBçùxYžÿZßžj{mmÜЊƒýÑß šî!ù¿@û£ÇѲë)]çø_-³†M1ì ½mت¸£ ,:Öóÿ ;"T£?V´IÏn1¢ºìÌÌ\×¢‹Âî…J-7â‰CW5ÄdM'é¡]Îxø'›Ñ›)]Üß=!_ú9:}4Š»"Ö¿Cm¡1™ŽØ¿é~[/Ô÷•âô€±J'òyƒ7;;»C;ï~!í¹ís_o+ü\tMºò¿
+endstream endobj 371 0 obj <</Contents 372 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 372 0 obj <</Filter/FlateDecode/Length 1129>>stream
+H‰¬VkoÛFü+ûq¯0™{“4à~®ŠÄqL¶l…+†‹Tv)¡ùïݹ#%ËJœ¢( ‘ÇãíîìÌÜÑGéô×ßÒ«ÓVÓí’^uægM†º2_—Mã=Œ½-u­…Xƪ©¨û˜T÷kŠ0CD©µqÔ½'W—¶ª¨Mé¼,¾!žtí4L:úœ/µ§hMéÉèÒY2¶.M¤~N?Ò‚Žº-(’8å-0Ò5uî³XƒŒ®Éø®rÍ®•ÜÊXä#î ý'JeXpÐŒ•‰lUaXcÞ`ÔOÝw
+MLÜO²»ÉnlÙ¼@†¤þräËh?S;•¼Ž¥±C¥æ?JiÌà…¦Ú)«Ôc?Uó?¨ûÄ|WìNUÅççÐ׆ÒC¸ØиÏ!`¯/1¸»_2Ž…S?Ê®éB^§uçט]ÎÉàn7º0m†iJSÙ˜éÒ‚kÈÓCwðIvËôISiÙ,È;Ø£Ý$©N†=„¾ƒM¯Ä>‚îÉq¡>Sž 40=QEÍ´¯"ãw œ„Sóô¬“Z†'ÒÙéA°4ëRZõCì‚XÁ¸m ¹Ð…O ¦ÚE:ZUħ![«­ÁˆÑ!«†Æ|ήZó!Jç$€J´¿ r˜ØðÛcéȽìÔa®ÍÏòfª
+Ëg§3n§—ÊhéNžglцf¹Ê£Divzú,Ã.,³k‚ÛâB\t¦lÂárÍs
+r•dÃu/É0`bÀ…øLrö²*5ÅÞ·‡^É87RiíýŸ2ÿ;Nwas@¹-Æ-¿iå(Ë|‚‘7 fQ…F¶©O¿µ‹ˆc ½_ ñ“¤n>, 7áK>P©Ä%NäÉbcã;Õp¥
+ÇÿÊP.nZð»jæª=*^/$ñRê?Ü÷+AŸ``.í†{ê¶[¼ÁM"'=¦ÓhC²ƒT±6»Z­$¸—šbØ¥„§¢“Z×p*ÿWó>K¾¹éçXºç9!;Ÿ~_Éae;÷ÛáòÛ{uýýÉžw~-4­zðz±|€)ïqI3«Ãå2=½¿»^ÝÉÈ4”<Ãεåü 8þöm2û1Ž¼«k͹èÓÏʺÜ-¾5¯psü€­å_I©E(cB×ÀG8‹¢«*y<›hüòœ"ܤ
+endstream endobj 373 0 obj <</Contents 374 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 374 0 obj <</Filter/FlateDecode/Length 1252>>stream
+H‰¬Vmoã6 þ+ü( µN’-Ù*púbtº$׸Ûaí0d{èÐ&7'Ý:úßGR~iÚ&†!€-ËùðáC:Çhþ5_àÃÙL×5|¨Ìo T·¸_¨² ’€ëÌ*]èœW>9T @Vð ÓžPZ›ªH eóTš¡ñDYÍF| ¬àOH3¥3ðÖ¨ ŒV©…Ì+ç¡©ágXÂqµ…ýZC~i¥qõ÷[tV#:r˜†G¬f`löÓØç*ø6raÔžÀiAÎÍï‰L]Œ|%¦#M*ü„Ñq¡¤®…4¹°šöŒLŒpò×ê‡mpyˆŠ.ÝŒÙx w˜q¼I=wvðn,Ñ°3wt½; ùéÂèìZ¾‰”i¯Œm#…ÿˆÝ˜¶¦¡x†YtùäA™}Åìk©‹Ýµ|¡ñ+‘žÉ\L§$$ëT&>À_t¯©€tbM‹»Õ¸¬6Z)i„† |Ív÷õœv×5ºÛ¡î-LûBì9á4˜J&ÒçÒ€0‰F Þ)¯_wãó÷;ð­ƒ<O°{qëó»2‘F‹’@=mêåc^z§LeR`Z‰«Íê†RZÝ—O²hŒ×µô˜+žö‚Ožái3¿“IàeÝpŠ ÇõÍË€ ¦‘‘†èþªfξ¿®šÍˆV·„qÕ#M•kx†gÜ°7É‹Œny“iÅv#>Kc2Òa@u°Ä0|ã·¤àlRJ Ô±]õˆç¸×=iŸ W_^
+žEÖödÒ'ñ=¡c”È1QD,#ïV 6ä\ Ñ“èwrBk>Ãy ü Êñl4Ã!‘(Sñ9}•:Ë)ô$o“ׯD³“‰Ôý”mQa‰
+CTL.ˆsÒý·µøGZƒÁ´3±X45™ W3¤âðð#(Óè f46ãú9‘óñÙµ˜~!¯åµ0
+óÓî
+Y ® ýíŠo [>H4˜“í†mïâË%`ÜU3¬S.>Qv—ø*ü<¦ç^·Ø}]¹\ßý>¼.õ/JaJ§ Rè[
+‘ilal€Ñô—Ä écˆ´oL<"ͧ¨O–â JÌe¾á ’ïãºý½nX… m¸†V\ž¾>ÙŠGÈOÝ€tÚïíÝ~ZG é 3œd‘¦Ôá„@2iFámMeÈE\sA^L7CS°É†¯7‰÷­+'âh$=ŠåI{§mšp˜­ë&j¶Çil§¨ŒqZ­PÎݤãAÇ yÝ'XHraÞâ#Chxï?ßTÙ2é‹Öý2™¥AåÞuJ–à2²ÁøœbþXlaW«c——·¼;Á¶Ì;KĊݳ#±ô)*^ Ï]d×}·õ¶5þõ _é ÷ÙþÛ° ~ŒC¸íÄc®é}êYÉt(®.&ô>"âåÉ„“„=},†Þžq$>ÁÏý<xÕíïg¿w6ïý:…þë”nä4Nݯõ„¿HeÓ¬åøòÇò‚0E»òAâýÅHrÈܼ3’–Ô¯Ä9òï©å±v´µ¨š:´¹Z-$ˆöÏ¿
+endstream endobj 375 0 obj <</Contents 376 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 456 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 376 0 obj <</Filter/FlateDecode/Length 1216>>stream
+H‰¬VkOëFý+óq·Â¾»ëõÚ{¥~€Ä¢©h’KL[ªŠ\ä*$mZ*Äï̬_!p+U{gÏœyœ³ÿlïáÃùBÁý>”úÊ_ñ{{o-Dmkb•«R»ÌgP>€
+~€5œ•T˜q#²Tå_Çô ùbâ¿ë³\ ¶ÔF¤`==|>ÄR ä7Bj'ŒŒ´Pô]“•ÊŸËo‰ì§Žnf}œº†oòU¢ù67¾žzǵ‹šR ÐSÓ£kû/¡ßC8meoäQ$«\¬MÉÿç@ £›Yðþ( JÞæ“ùÿ¡»ƒá»ɹÌÄ|Ný5il©qÎßô¬¨[™Šõf R'kjÛ¶+¸Äcö[U·ôuW¦§éûÞÐ4&³³9Õ±Î2xbýÒÄ#Oª£—Æîˆ*<ÔÄÄ#j4Xߟà‹BQ<®i°o°#öqŒR‹ã˜ÕCŽÆ„¦ Oùˆ—îÀ::Ào×"Š(™+ù6Bs$z˜”a¨æYƒu-®Æså8žZ ¶6Û=¿L¤ŸedEµ…¿†ÙH:Qb2‰(¨Á„‰)Ø—è0¡”§ç7b1ùIj\o„¹‘8™Z Ù©>kªóxÀU·T)÷ƒÒ å"Bf#ìçíï2Âߟéw½ª÷J‰ºÚ1ÝEñ ß±&Å”Ÿ£žûâ×6¶+Ü.—ÕSÀ®¹PzÛËDlo÷TÙGª•…·R„9’[Õk™‹»z|7ÛmnÅ)M#bw¾¯´è=2Õð->¬‘G"2Oˆäf{B3räéÕºM2¤¹ÜÝË(C0'–TÁŒ+˜µ4âo’O’
+endstream endobj 377 0 obj <</Contents 378 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 378 0 obj <</Filter/FlateDecode/Length 881>>stream
+H‰¬TÛn7ý•y$‘á}—ò[‹DE%9Ö:-…« ×q-¥nôß33Ü›í¸E‚À€wDÏœ9gÈà ÿݼ‡§/6Þïàik5`¡ý ×ks 2ÆÁiS1éTå
+Ú?@€lç¶;¡±Úwàkíª
+TÌÚL>Ñ´›hZø|Ð&@rV°F{ÖÕÚ&¸ÙÂOp‡í*̸Š"SC{ûž£Bô¹ð{Sj¶Ä–Ö‰!Ñ7Ãë² ¥ÈÞ
+i“pRYahÝRå/íDöÕ@·
+YÇÔñõP%š_æÆÇcN¬ê¤˜ G7¢[§óˆÐ—!œ¾Œ oåƒJÁx=ŠßV…0b'´°Æ<(BƒR÷Eªü¼ŒÞá_ÈJ“».ê@¶¥ ÑwKöÝÈ(v\|¸i½@ECoºÜæ¼Ëí­î¶`éëF×;šn¤é\Ñ#ë}Frä‘uºÇOüË£Þ ƒÂ»ƒvÌ»Ã×$ñVÝBû{:m‘Q'2‰çDf…?8ŸÛËËÅœ)™Eó7ö¾_4;xÉk«C©º#ÇReÎá€ÖtM0kNÿQª‡‚ŸË~³Ú,Ö+88xŸ€E`c¸c‹æåÐÑ µúè%éöJÛ˜_9nÛà²0ù2þ(N¨'ê|I.c‹\);ÊÕ(Y‹…TAœ“
+endstream endobj 379 0 obj <</Contents 380 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 380 0 obj <</Filter/FlateDecode/Length 990>>stream
+H‰ÌVmoÛ6þ+÷‘ &–ïôCÒ¨‡Íkm¥Ý’ E;…×EÁboY1ì¿ïî(Yv”t@?†Iút|î¹çŽ”Ðü¹ÿ/Nç>®áEc>h0ÐÜ ½R)yEµ·JWÚAˆ*–©„æÈæ7ÞaºJkã ¹W)[–P„¤œG爺™OxCÝÀà¼Ò¢5ʃÑÊY0¶R&ÂýÞC ÇÍfÜ‚Vº‚æaLÏ’!º”ù]ä˜Í±¥±"€4'x— J<àRH…•…šì†VAþÚ|Odßné–>©;¾îªDóin¼=¤ÈÚ;èÁèƪô1úù0„Ó‡ÑþRŽ"yíÔ6Pøº(„:¡…Ñf„¥êƒø¨Ê/¤c«¡¸ñùâîôÞ…p§²oÞPymPžêüEóRVÜË ÖTÈÕ] Ò8’ú¾êfÒg¿ßÇu¶˜›ïûÒá¶ÿ“ˆ™[û<sFt=õåñY/ÁÐl¾Ýk¥¤Rp ñ¨#4Ä ¢~ê òé3¼‡Ø˜Ì¦Às‹’ž`س™,JqDLdáÄB40¢Ý¬pÒbÃãgö™D¶­7pxøæõÛ³ AL_Õtb`.]F:GïÞ¨ U)NŠu1¾ç乶¦T©*)»’º•¦W üw{'‹Jðp#‹È„NÅTD¸"ÂŽoVË5ö6ºå~z gŒ³»+îoÂ玳t˜¥G݈e§3R+:nh‹eC™³°ÚzrmXÑ#º9&ØQ‹e+Aì(V›Ï´„C\Ó÷%ÊÒê &Ó†5­¥§õLâ’î¡Q/$C .`FÆØaÈ ½ªºø3Œ7EĆsœPƒsùŽIŠ l`ž’+;LO±ts~xNñ©’Î^Jb¡G,rKùŠz*Óá*Ûó©ü¸ó(z‹QøDE¶^<äŸT±„—¡³)9!5k¸Üº[—}±z^\S_Ñ°Yݱ¹ÅqA:c¥¡¦ê3Gý‘Œl›qÖG9[N¸oþ!°.K¤ùEcð]D«NXø“NMû©¥‰ÂZñ@Ë¿¿#¬ÀÙ ùmÙ”RCéì^IÿÍȶWa:-×{r_ˆ¢ €ïöÆ08ÆÁÏ‹÷ƒOã\2ÆÏÆŽõ—}doí:ßé†ì¨#øاG¬D==y"Uºð\¾ðò  “/¸àr#¼”þ5( ß΂ŽÊØÇ/ü«¡žzxuw{Ëw~pFœ,oVíJVÔ.->]ç Æ×,‡zt×[*ë‘Ñ“—mܶ|Ú6JH¬<|ôo™ÿ
+endstream endobj 381 0 obj <</Contents 382 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 382 0 obj <</Filter/FlateDecode/Length 1128>>stream
+H‰ÜVKoã6þ+s$HˇH‰rØÄ®ëõ¦‰Ú6Eá:JªÂ+o-%Ýv±ÿ½3CÉ–ë$‡¢‡ 0Ì!‡äÌ7Oê¼Å¿í=¼™]+¸oáM©V ¡¼C~‘†eœg&U…²à|êóCùÈò7¾¡û©RÚB¹[¤&Ï!q!µ¾1-¯ç|aZÂï`³TeàN3Ð*µ´)Ría[ÁÐÀyy
+endstream endobj 383 0 obj <</Contents 384 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 384 0 obj <</Filter/FlateDecode/Length 1057>>stream
+H‰ÌVÛnÛFý•yÜ5DfïäÈC-±®Äqc¶}ˆŠ‚•iA.©('-‚ü{gvySm¹EûRÒŽ–»gÎœ¹Ð—%ˆðwXÁ‹«[«^”òÊ{ÜÏSïÄ£mT*r¡ÁºÔe>ƒr xù!ÜíT©¡\‚ÎS•eXŸjƒ‡ï€åí<\(Jø ´I…§dj@ŠT+ð6•5ü;¸,O˜ ®ò„›)ðóczJ =BÔ>ò{}–· —ŠY0ŽV?Æ”KføÏåkâô}Ï*“.µ®¥¥õæð¬w‘S*`Á¸tLñD2A<$Yö "ƈœáAÎø¥ë­_–´ÒЭÐ¥Jý3ê#ôy7„Ó¹fÁy2B§½#û&mˤМPaæ“Ì?[LzÈ[~>o£RÏôÏØÍ U“²©¡´9Ÿh­)}nYCÆz¿.5CEMWdÞáãpnSW´ÛÔ iUCÖ[šj¤‡‹zøÔ[í‘åH€³©û ?–$¡·BLÖ†khåmU&ؼˆ5Ã8$!ð[1˜îy¢ Ûn㺃O2Vñ$gGžØhA‰%ûƒÈ~Ä»!Ü<„jp
+/ïÃ3}zFQ­?UÇzNV‘ðœk†L”³!¸éwoÃÞ´€/xKK9('q€äº‡† 60õ ÃÔ£ Üã̯Ë`ØëW¨ t\0‘Rni8Ë‘ÕaYð ?ñª³ÞëÐ'°âžm¸aû_« BŠL÷>ß^¾.¦è©l]ÍgÅ5uUd2§Yó- FK©ó¥ÔIÍ|ªÆ½¡JZ±ŸR?ê0l¤ä?ì—5Q¸#(ÌCM÷wT_.φúBfôyÅ{õäX=Ò-§l+5èÙ‚?©ü8Š"93&w¤.9vâžR8ÇÊ ¥f”ÖÿŒœoÉm¹Ò¬úÈõÐ{ú¡ŒbÁŸ.åy‰e_ÊêѸŽ“#–ô
+ß@ô‰ï›õ®ýù†Ô®C7MÖîTˆÉxsÒÏõ³Ϥ
+endstream endobj 385 0 obj <</Contents 386 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 386 0 obj <</Filter/FlateDecode/Length 1010>>stream
+H‰ÔVÛrãDý•~œI!íÜ¥YŠ‡Mœ ¦*b E[ ¢y±•¥€âß9=’o‰³K¥"Íôôåôéž–+RéoyOoÎ&ŠîWô¦Ò?)ÒTÝA^æ1:GYÄÚ™\•Ê’y(bAÕ# ’Õ¯ÉB¹RÚR5#[æ¦((ó1·Ês§Õdœ N+ú¬Ë•£`tîH«ÜÒ¦Ìu eM?PKÇÕ8N~3^©’ªß_Â3¬ÃmìñÝô1« |Km„'øéû^K-€ƒn…ÔA™i¡X®yååÕ7 öÛ ÜÂÅ܇¯}*Ã<Œ-™ûwÙ@ÅŽwo¶ÞµÉã'È€ë×ðŸuånå‹HNÙ|Èÿ»(ìÃD ­Ü‹ Ü(å:HÿƒÚî´Þ°g²WW\]ãsÇe ‘>ò»æò-¥+^4‹–¤¶ŒºuÑ]ã8é=ÔS–®jÒü6Ûª0ͦ
+ŒSçÞ:ßÃÔHÕ"³L§œîçXq ò £ “E»ê¦-–â–·ZŒê»¦mX¨x­(aàØv¯§RĘGo#ˆáþÀVå¥:t-o0É«Øg¸Ä
+ú‹Àž/úú[]¬Y²ñY5oDÓ=ɬ@Á
+Ññ(Î<¦0\XR3çMÝvÍ4š[“ö‚–¬tÏ…õ¨àŸÓTC(´ƒ+·ãªîVÍR—½³ŸùÑ<Ô£ÞG:€k›:Ä ‘ ÍöºØs
+endstream endobj 387 0 obj <</Contents 388 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 388 0 obj <</Filter/FlateDecode/Length 1415>>stream
+H‰ÔW]oÛ6ý+|$ H)’ ô¡I4C뵎²=´ÃàÆŠë!±3tí¿ß=—’LÇöZ °!ˆDñãòðžsï¥ÏjQðßj&ž^\b¶Okýk!´¨o©¿ÊC°VdÚÖäEU”ÂùÜÂ@Ô÷B
+UÿÆ+t»"/
+]ŠúF”Un‘¹—–&O…ÖW—¼`X‹ßEióÂ
+otn….òÒmª\{±jÄÏb!Îê=(d˜ífh•¨ÿ8„g0Ëñ½{ÖWd[i#°ï ~Š¹Ò’pˆRi/Ê´,ЯÑrê—ú€}×ÃØ;ßâ-O@ÌãØx¹ ž}—µ®H¬;³³®MþÂdúô6°ÓmSØê`'[”y¿‘û{»À†k-uá6Pªn“Aø¸M¤÷^–j ß¾»Æå´ù >ãÝ€¾•rrÆ|¹J—’<j;Ò 1¦ažw×Lлn„ÆÛìXoašLØ€YF˜!® l»Ü Í2¥ )†wØOË{e´ŒÍ…
+r3YQÛʯèoUVôÌÈåM3ÝÒ84tOálLŒÄ0†Œ"“¾_’¦20v¤eŸê\È-4¯~BPæSÞ7{s#<ΨÃÈ1ðTr6‡ÇJ¹Q™DÝí[ùJ
+!x®
+6zS=ŠÏˆÞ³HZàP‡–Ÿ'›æ ‚<LJ9áŒ0S‘’Š2U8%hÐHz”dØ|¢h{L8@í[6
+ãdz€ÞýåqŸÃ Wo"°{E‚ùÈšäMùŸ ùt^?ôš
+9†à¨J.§M‡‚–ãÿ9qÙvNú=$×¥cŸºU1A˜J$·sRÞrq‹¯ùŒì0NøFËÉßkkVmJÞG颱­j—4l.éùÿ¹ê%¬ ÌÝ¡4®ã9®'Ÿ Ør¼[¶¡¤bɇ¾¸¬=póy™¹†C+SÈD¹»ò†“L‘d¶ªílØÜpÏ­ÖªJËŸî vGRÄÓ×$·Ædc‰¿|ÇT‚ñw|léRÛo°’ù^’Ú&Ô­Ó\¥qoº Å®Fãº@ ž
+â;"(¨ì 1^Nä Ð@¡ÓÊ¢{&­Mp8‡R~Aj_¨¶ðãêE_ ø1çôC9e1¹5ñj5ûô±_³U|+ º´f¯d¥çôÃeïJÇÂ1]󅑯t(Œ£a…Ô˸¹ †£`+¾cðÕ€·ä‚k¾‘r^Æ/Û
+ÜÞ¾XÑ PêÙiïP•Q=ΆU"®Ð3;8ŒŽV]åŽc>j€µg†rñ C—±j¬±~ˆì OÍ´‡CÖ{í•fG8ý‚úS€
+endstream endobj 389 0 obj <</Contents 390 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 390 0 obj <</Filter/FlateDecode/Length 1241>>stream
+H‰ÌWÛn7ý>’vÃ;—ü`[‚«"5\{Û>$E¡J²»­-µ’Ò&ß™á^$­Öi · ‹\^fΞLÒßúž½º¼•ì~Ã^•ê'É+ï`¼Èc´–eúV粆9Ÿû+g¢ü•v¨zG.¥2¬œ1Sä:–¹˜ ‹çŒËÛ m—ìfl.-óZå–)™Í”.råÙzÁ~`Kv^îAÃd7Þ,XùWžÆ5hÑÄ„ïmòYÞ‚m¡4wÌzl#û> äBqÀÁÞq¡<×"S\â¸Âž?–_#Øo[¸ÁÆÜù¯€Š0c£í.zâ.«©Ø±îtg]é<>A˜vƒv7Ò¾=OVš¼uäžçm¸šh®¤ï9A¡“_àlw¤÷–›Køõ5ž®v¹Åcó‘ý‰ío-ß`§Z-™P†£¶9tÉn`šÖ=,¦8ºY0…­îN½†©;˜N#N¡›`Æ<:&ž–dÞ徇ôíN…á–B)¾ZÝ!œ 8Wü=Ž¬9CýÍçëÅFÿZä&
+-!Ë20ÀØ䪤=càr|#"Ì(å#-<ýŸ‚zÈ ]F±Ô‚$¸$1èbT§.Æä)&ìE\Sž
+¾JÆ·ÉUý4CWíÓCš›¤ ã$áM=8Â%ªS<m¨›Sld3§àDEª)¦NÛ ;Ws‘p ^ X3Ç«m5›B–?T[
+å㨚Þãº%”‹v6ci®šm0I±¶Ë{`¦’UÚ¶¥_ˆZ¦ç‡ NEf =šà^ŸÖ=Ý)Õµ•Çw!@Îϱ†eXP¾º:§v2_,·0ƒ³€ÔóLÄ"ö‰]¯W¸p°
+žÐÎ3“WÉ@¶¤?Ul. ¤-й?ÿYÉQê ¬ËЖuÓ¯<íÝy&ð5Úñ{(ï݈[ºö¦Ûj•nÎæšÒº÷›´"p¦Wñ‡îÍø9צ¥Z¸S¶}Ð{·Ö—ª<v/¦¿ã(€ÕügìUð2P-èš‚ð0Ÿ­+úºAä‘[„Je&ušKŸª B¶€!¿ôt4
+endstream endobj 391 0 obj <</Contents 392 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 392 0 obj <</Filter/FlateDecode/Length 1579>>stream
+H‰¬WÛnÛ8ý>’ H)^ÄyhR·õ" ²‰ºûÐ.Ž­$Þu¬Ô±Ûæïwf(É’| ì†EŠ×3g†g¨Óœ%ô[ܱWï¯v÷Ä^åòŸ„I–ßB{{¯5‹<ÔµŠ“,I™±±uÞ±üq&òi†¬fÄI"S–YšÅÊ9§Oä×Cš0ÈÙW–ê8ÑÌ*k&“8ULª,––-
+ö›³Ó¼¦u#¬%Ë¿oÂS8WL}À÷9ì™_ÃÚB*n˜¶Xzöghˆ…䀃}áBZ®D$y‚íkFüÿŽ`ÿhà:ícc+¼é¨s;6šn¼%ŠÖêF­W—*ö{È€¥woƒëÔÛ$ú‹ØØI'iÜldŽÛ×0Ñ\&nc ”¬ÞÄù_àÛVè}æé{áøå%zW™X£Û¬gß°,Ð} aøV¦åœ ™r`T×NOØtÓ¸Y1ÂÖ§‚I,ÕÚëLµ†iˆ ¦8`úØ›ÔLôV¬‰íÒ©°|‚[EãÃÅ)•Ch‘|.ౄÅ‚ª…Hù²ß‹ïe0
+ègáÒhž– g :¡¼\”8¢ ix9ƒêpP-,ù[`DZÏ_C3þO`ÛªI:Ü’ ®±Ù›#P®·dšAÓš¦È´3áy1ƒæYôwežÈÐ: ü(/'î˜øq¹Y#7¹âÃ5lCÿX§† ä mT[#ìü· O ŠÕ´ö²\ W«¡4¿ÁE š‰Lë>µŒM®ßOn…²Mê5Ç7´;Û„.¾à°w'-èõtQŽ&ãÑ {'™á]ð‡ò«’¿¦A.wð{&¢à;þ^hþ‘p·ù}ºG.pÊ#6à@ä”LÂÊê‰ +ÍöðÜÛC¸W²Ë½ñµÖµ,p|B«]!™@³ã§°­æçØý´„óæ‹nLtèuk|n;>Gÿ6>JI-|MlØÖÁÓY}òz¢r†þ)ç¤Ó;4u8o„71Öí äÃÈL»d¦²ëͦJL0^5jh€!°@¯#ý•ô¶Õ˜‰(ÇÃJ¶1+"GÈË%"ÛfW’Z®ñ¾>©aX¸EiÚmº#h?A¬>NH\Q‹©m 
+Ë• ¼žS0L›í
+€#ÄAÙƒô3zZñ{|Ü”+,-·«nÔz·´G«ë«m2£UXõ~¬š—W¼Pÿ•pQ'Ä
+4.Ï‘Åi¨Wo‹lš ÁµÅݘõÎÛËŠ†¤P , r¡dá€;ÊÒ#ôôŒ’2ÄøüŽfä07ó+ý€6ÔXsòKÑB—¦ÿE2×K1ý˜ß'#pÀ 1I7°m*ÆÏFyšôR`åÎm¹_¬áuîÀtHY“¢¹Bï·Ø:¥œ€
+g7µzøN
+¬‘7)0m%º«êšZg[Ù{BŽÀó b«ùU.¸ Q
+/tØ{[R± ¦ŒŒ‚_NËêÖî&•›Ð¡48Óó0x‰×ªP‡K
+Þ8{ˆyÐqúÎáË1L„™ ‹ôÑØM–µœš0i ‘C•1ÝŠ±62,?Ÿ¡.¼mQ ÛÎQYZÙÖ#«àÈÖ_bmeað½³)á?•…t?¿o‹úíéeeþiIø(øŽÑ@ïŸ(K´¡©}‚+ŒGµô”sD¡Mÿ uFLë&0ÈÙÿ
+endstream endobj 393 0 obj <</Contents 394 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 394 0 obj <</Filter/FlateDecode/Length 1121>>stream
+H‰ÔVßoÛF þWøx@ªî§túÔ^æas³D]’að%ÕH™¬´è†ýïãw’;v‚aØC‡ >Šw$?’ßQ:*)‹Ý ½:>ËèfI¯JõKFŠÊkÖiÖRX¶:ÍŠÌó©ÏCNå ’åoÑBi–)Cå%™"ÕyN‰ ©±|øŠÄ´<›EƒiI¿“±ifÉk•ZRYj4)]¤ÊSWÑjè¨Ü‚ÂŽ£ßRVPùyžÆx4aÀw>Ä,ÏØ·TZ8²k ŸE*•`t!¤òBËD‰ zÉÉŸËï
+z
+ÿ$nvpÑÂEψg’ Ò­cLeb#€ø´Nìõ›U>8­9úÒxë8ò`œKqè¡šÎ'ëie;šÙ¡
+.N)TA1y s5Q‘ŬpyêíÓ®ò\Ksî½m›~Q7UÇ­clÎ(1©®ë¦æ;nù·áœ–ÌM>­ïÐHåEšû}³v+9;)Œ‰Ÿ‹„‰À•?
+endstream endobj 395 0 obj <</Contents 396 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 458 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 396 0 obj <</Filter/FlateDecode/Length 993>>stream
+H‰ÜVÛnÛFý•y*f /³wrSôÁ–Ô„Ac+“>8E!(r B¶ZQuôç;³¼ˆ–ì(ú‚ÈÑìÎeÏ™™Õy*}¶áÙ‹™‚5<«ô¯
+4T7¤/²Iv&S…²àCò˜Cu ¢ú-YèÖ"SJ[¨`‹Ìä9H3ëhóÀI5+“Á¤‚?ÀºL9Fg´Ê¬mŠLØ.ág¸ƒóêA*ä8ù•,©ª¿ŽÓ3¼‡=ÚØäwÝĬfä[hƒ\àw„w")xB4BjT¬×,yñKõŠ“}Ó§›»˜ùÐækŸH•Ó|<·dîcHØÉŠwoöÞµÉâÀ ×O‡a?]åÞ‹£HNÙ¬äÿ]öá[ Q«x„ ¥è‚äñ?àvPz×h_ˆ§Sf×øÌ1m!Â=¿—LßVx¬YXmî@h‹„¨ëHWpEËißz9gm½Ío³g½MÓ ð 1‹ÞFJŽ9R|òC)S­³U0ÉŠ¤ØœMR+‘§1BJ¡ ‡n'ßÆ m1SÖÕIÛÈzR]cùz*dŽ—Ââ•(°"H ΄αñHÕ 7éÜ™ÖÙ5Âh+dÀÕnµ˜¯W;2´øù”^)[ÛYrt–² ‚%Q]‹€Ë;Š¼XžÌLoæö˜»¢}`¿º'ÓùnYNˆ…åxàÄûÖIÈõq0Ýnv{³àѱY“˜|X,©¾:7éô®?Cˆû3ÜÎùôŸ(í9—ˆ+!Þ“Z¸[òjÉê '[Ÿ2ʧªwj†N)9Ÿ+ùå&7lºKÏEz®'Ÿv„Iõ*)™(¦­bÁú£ö+JVOê=˜:vM ÷DþxEÞ._ÃË‹ótê3Æoʇ–#Æ–”o‰!þ6¿˜ê1!<ßñ¶9×›ÃÏÂ(üá£zðø=/ð°ðÑ›ƒÔ6h;täCÀ½î—\U’ …Ñzžð¬k/“tCêUêÂ;êÉ W Nn盆‹Ô2!u)“œ´Üº´`šÖPòÒ„õ×R}„ƒ&Ñoû/”•ì/´îpuõ’ õ‚穅εiªcÙ¼®.y‘K;bG—‰¡Ÿ¸µ$xÉ`Oø× ž?ÿ!õŒÒòïŸÍàïƒAÚ‹Àÿ ºfþNðÔqø! !¾%-BÃ9 †äfÇSεiÄiŽopLû•a3g‰ª·å›·“á
+endstream endobj 397 0 obj <</Contents 398 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 398 0 obj <</Filter/FlateDecode/Length 968>>stream
+H‰äVÛnÛFý•y
+v “Ù;¹ú`ËD¢Â‹¹!)CQ*ÕZÊ¥úï™åͲâ
+¼§†špQL­K+.©"#*zJ!ô½‚ž§r¯Ó²¦Z|¢§Åh±ÍÇÂ2m‘!º!é%ºÂªª9"¯f21 æ’…õ˜s)ñ—´ÜÊ@Eƒ4-p%ÙèQŽN=·®$r; ¤ÍžsÑ #˜N±‡–e¹‡#"?ý;ú9–¡\w‹BDÌ%I¹®"z©+‰4‘aa²¾ÆÖáµÜÂÙ’­÷è^qãTÍFf¥hÛ´ÃÏ,)b l³—Ä•¬²²YCõu·lèy+h#¥Ç ™üútŒ©üùyÙSàžÒÒ7™­AjOf§t xÎ`{#r“A³ñ¢f‚.&dsóÏi¿z™üÍ€Ù|z1ƒG~ E:'ßÉ|ßÚ«Ô_ÂþªÀF³Éá`¢x4¡‡›Nt3óFlv›MïÍzZ!š‘g@×>Šg³éÓgÕñxªõCíV®Í'kKÔçíc\¨ºbŠq|MCˈ¯;šÍ–kC©6„øxO‚Æu•¹«4n N×MžF¢È—mcFïÞ3ŒÂxøqÿ§ÏwÉ÷è$•[þ&´*G zņ˜Ü4o¶üÛ¢ýÁð
+endstream endobj 399 0 obj <</Contents 400 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 400 0 obj <</Filter/FlateDecode/Length 943>>stream
+H‰ÜVmkGþ+ó©Ìïeßï6в,•`\ëpœ„s *ªÒJŠK ùïÙݓΑœBi ÃÍhowæ™yžÙóY *ý­ßã'3ï7ð¨ÕohhßÑzSÅèÈH¾3•j”ªPÇÚßA´¿¥ºœ¨”ÒÚ[°Meꤕu´ù-à¤MÓI ‚u•rŒ®hUYÚ4•°îà9¬à¬½…§¸’=Õ@û×!<Ã{8¢ßMÎÙÎ(¶Ð=¸À6Âu^¨„F¯Pè€FHŠ×5{^¼na°¿îàÖ.V>¼ö¨ ó8¶tÜÇz'K+ѽÙGצŠ_i…~8 ÇéÓ(÷JdrÊV»Dþ¿eá¾4µÖIX(MŸ¤Žÿ·éÝ }"j¼¼dv¯Ó"ܱ혾µð¸agñaB[¤ŽºžtWô:í[vs^Ýt Ùš=ë¦À4ŒSS)Ñe˜±ŠÞF‚Él)¾
+HáRȯîdFY'cv)·¥ª­G€Ÿ„Vø‡×ÝFB¦q%"Þ’e”šv2.aL&%å—4•Dô9àç4[I}íIMÞòvò"¡w7(¥ÐᄠΓïÃì«taW%—#e*(I„[*⛥/IÈ@€0^Ωc78ï’÷Ž–©ß«ÅvñAÈI’Rò›ô{ÍÇ™(ZLþân¾í`Ê.QER:
+-àšÄ@Áx¤éž¾ÿæßëû¾ë.%i¾áKן
+ñ‚g©Ó#î`D™ÍÕ45ýZH£q$,¶ä¹$}ƒ2¿Ì?f<!ð˜ŸéñsÖü8}–¶Œf)fÞù‰™24Žµ¹§9(ºsˆu2ß’ñÔsºhæ2õ@lk˜n2M¿õŽMƒs6·y±Ë¿¦yç„ I¦QýâyÞršßedY­åʨmÂó4Û<îIkÛÅí|¹Ø&\§…µ ÕäõiêÉ AØehê/5É©®9àœE¾¤£5~ìØ?M¤ n×GQæ@²„7òõäúëi%¼íJylÒÑÍ;x{ôÆbM}Þ‰®û1á™.ÍyÎx§”ÔBƒòf//²;b¡¾€O_áý>D¸r‘!f¨¨bÏÕž¬ýÍã«t ´©{Éž‰âæÕ—\<u/¯gøH _P×2@NB³XäÊêkriõ^Ì¥²ë\wQï’Ohü˜%Í"öq@ùá×lHù7ûh $ð~¬Ž}迉
+endstream endobj 401 0 obj <</Contents 402 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 402 0 obj <</Filter/FlateDecode/Length 1368>>stream
+H‰ÜWÛnÛFý•}2v “áÞH®
+0ò°ìR\©$—ËÅ£Ò¥\Ü.îH\Œª•2ÕœeÏòˆû”P©Òók"Y‰ܰ­¤êÃÆ1'Å!¬ÅÃÇWXy+»H¼îQèc¹BŠrÊÒ^r–FUÜ9탔[9é^Šõ·'¯®XŠ²ìå5‰^*'kʼæÕi³sÎB£jL¤Ç-¥Äó zé<áíKFõ^'Ÿè‘¥ñÿ$å‹nDŽùE ÄtH»—ÕÛï«‹S2UQ›Âƈ^Zù#2…­,MÉ–—t&WôA¾Äb¥ÄGÒÐ9r¸7êF‰Ë7J;ìÑT¢eÏ ý5œ‰”äüú>¿>æ×È7Ûœ«ÉJlOUBdWÀzݦ)ç÷ÐÀ|žtY²òé‰]ßÆ|Èã{ç{ìm}["ûü7þ=À¯ÈÏ]Sû™d$wñ€Ã“(G/fÊPé­Y$R¶Â'xuMÇ.)¦–,–]"¬s–[ràï{¶ä`K›؈°Å<Ð3Kãÿ%¶Ù²…SäÊ?ÌF1f¾m+¦âAçˆM,'í:.nQx¼º£­*•XÊjIî9ŸÝMñ–+S%¥|…W V%VDõëKäÜ#×Zž^r=œS¡B¢×9Ç¢ZAÛ˜LÌ£º ²Á.òêžjã‰t|üRŒQulãâ´b¸¢eŠ=õ2ïs]ôÙð¨
+endstream endobj 403 0 obj <</Contents 404 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 404 0 obj <</Filter/FlateDecode/Length 1427>>stream
+H‰ÔWÛn7ý>dÝ,/{ P ¶ª¤. ˱¶iQ»(y¨P¤t¥$.ÿ{ç ¹Yr€ä)…i4$‡Ã3géÓJ$ü×¼Ï^Mñn#žUú¯DhQ½%—¥s"*Év&NŠÄŠ4‹³¼ÌEõ^H¡ª¿y…+â$ÑVTsa‹Ø么Ò2¶Ž&ß
+9®¦g¼`\‰„uqâDftì„Nbk„6E¬3ÑÔâ7±§Õ^*˜ãF°’BTŸÓ3˜ƒˆ¶ôù]û=«)ÅVÚÈT¸ ߥxã±Ò’ò7RéLi™À¯a¥êÏê$ûºK7weœf!_ûHªHóxn¼<-3Æ.
+P ¢§¦®M\~
+ýø6ˆÓn“¸u°“KlÜm”~Û.ˆ‘ ¥Öö`¥›¤p|-\C¦†Ïtœ›ö ¹‹µyü¦ì¹“;R·Ôy¥ryy ò˜4v`EVŠOø®ÁŽF¥rc±^ ¥­¤‚¹–S‰¸RÎÏ[Ö3x7µÐø6=©Bšf
+9&NÃqFƒVþ­áZ’kM.'?+“˺9]T:‘+|ܪˆÒÙñáѱu£Ä䥊rÚçà¤[M­›h#R
+"ßOÈ ÉyÙ¬·*“ë¹Ò´ÿ’̳q„œFª”kÚ@KŒÏ”• þU7„)µÛ7tž) ž%Ï»TMnfòþî'eQ= ê„3Ã~²Ê0v-#ÚßIñYø'ßÇ×
+çZšuMl\W›Ad¾Æw-ëk*“~C˜/”Ûz×½7øí»Äõ]²ûùâôA©‚)UŸ&²u……šYqå`¼«Ïw*ÓÇ$qê,¼·”ëyýø )M9y1=CÌÉ…x.Æw(;Æ×赚Ö[ðGSf$ ¦ÎxÊ{¥KyϦxþüGð.J‡-zÁËH2 ,¸ýJuÓqL’`x÷„(J—«BL 홯!cƒ£&³ÀmHîAÓÞu y>[4/7EWãVë
+FaþØÒ}ÀÆ<Ô2£>Ò8K¹z¹¨—·êdRäÅ6˜HõïáÞ‡º`)Öø¹×|½†ô"b³ƒæÛ?E.·üÙ!—Ë£ùHDHNâ*qJ@¡"\§l]M<µ&`Ëh³Ï1Üs®%½MBŠšïcò–§ÄÊÀHZˤD“äT¶Tr^9ÿœÒ¥Âˆ• •lf<“ˆ’07;j9 #‚ˆÝ13i[òD{ªr.C¦.n…ÊsCDðáõ&Šxº²@&ÞºR
+endstream endobj 405 0 obj <</Contents 406 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 90/Type/Page>> endobj 406 0 obj <</Filter/FlateDecode/Length 923>>stream
+H‰¬VïoÛF ýWø©à Õõ~Jº
+žÅI ß × •Ñ"[ÞýK•%â˜y\=¨›m;«2e ¾V9~¾Û6«;:n7°ûîâœx–ø-!e’'Ñ%ϸɂRl—RS°R™ëå}5‡3˜U÷4õ\yl·RÞlš[B=œ½ª‹±gÄ”xtÅó
+Þ¿å¬#Òj[°z&âžÖñíª]ßñÌu·ëGŸÎ½ßK‹§ó·kôÐã{Z  ©Ç;æÇÒÄ0q!o'f¥©W#¶Â“”4ÈVÑ'ƒ/aÞËŸ“Ö;~ä]ÞKFwâ°z¡ìvXþ†U$@¯%qb:“HEÛEW¤“–-3()µTT’$ï*ö_Ëé3Ö„ál1Ø´»ÎiÎoÙ|Áh”Cv…–eOË°TÏGÞt;xØWž\'¸&;"®¶«ëf½Úʺý*• ³©L<‘©èÆ_ ]͸x!^HO—³-A²äu5×bÜ3|@“ê)dðA¦ä„ûÚs«ÞQÊkø…ôèVѶì9Ú ‡W$ÍŠÄËqOßÞ”õ|ä¬=8{\H.ÓšôüBq+0d¯ø¯îºë™´Å§^4kVt œÃ¿ŸmÇFï¤òmØaadæÉ6;7¹œûîvòÙô®¦á¨ºx3üÔø*À
+endstream endobj 407 0 obj <</Contents 408 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 408 0 obj <</Filter/FlateDecode/Length 3896>>stream
+H‰¬Wks·ý+ø¸ÛñnX
+ÄB³´‡Ãò¦U‹ýr{¸Î‹&k÷ê2/bö™ô·Gn-?)áƒô뙞4é ùÔ½óIM÷ˆ'艿xu–.{šk›]äEÈÔ!÷Ù-Ô·OÐ@§î¸Óª#7[rj²§—¯J­ä%”ñÂ&¯³•ËÕo¼ºVç[|W»õ†ßüA³xr‡U×
+z¾D¨M<\æ6{ù7‚E®«ÄÒùë¼ÉÞæ=iÞê@lCµ)‘·àb­~^î7ËíQ-íJÄìì³k"ƒ.øÌGÇå'2”®Š>Å­ý‰³UªÐ¥vX?ƒ¶`ä}^À‹VøÈ5ÂdågK*ðd0Z¥Cú“z¹Îÿ¦ n&º
+ ¡`M‡F®èŸGð€ÈÍ>ãÆ–‡Üâù§¼¡Ã.fç({^cÞ¤å&û&ðò“Åœ¹´“"ß B˜FŸâz“-Ø&¥z£l´„Á¸ß…•º{¤£¢’z?pÍ;{Á.w¶o´L6…½ ©ÍŸ§ái%«ŒF~á#³»AF—ÁÕÑCî¡36¡Cs˜ZóÝX,ÆR·„ßÔ?®ÞõÏëç¸ã|£àRêWüý ¤Ÿõ1¨­Z‹—@î¡4pàGô¤^!ÇwÞ©[u ÆNW²Q}F믘gO ï­Cƒ€¼÷)³Â%•ý*÷ÝBašLzRõ¬]ÑÙ î±6F¶~HåÖÖRŠ{•»Š÷•ó®óƒÊqÕ™/tn-G’QçNs„øé<'¤u,hÝÓyç1Ûðh: >ÍF6辦¦˜
+<cØ=½H†º”˜izÖ(C°0ñ_ßIŽÝæ60Á 46RQv[Ù_rK”“Œâ„¶oObj¥ñ¢9bÎãç¹) Ú¨
+Ë-½A×iü(Þ ¤ì†YÄŠÁš=åw:(r\^þ1s!T* OÀó§ÌåbÙ Äãd®d¼d ^º24Í(:²›ô‚­‘0{4÷ø
+RF{Á_m‚“=
+ëÏlŠlæ*%Ÿ"Í<HÉÔ·l_ áÓ³SzQn¤—Rx{$È# GÚð$8áê/%T³‹Žå§ Ü€Ó)¥Õ¡2$À35BLX«†·pÝfV¦¾Ÿã%8¤UzF{€zîïuÑ ò¶¿1ƒl˜nöLܪ³{jÇìCÛú˜ÚÉ¥DcP1õ\爯”ÁJ¸¸f•T@géOÀ½ÉŠ
+þ|¯.rNR> R–sÔ¹ì o—mY\,›­zñê ­Q~ÉxÎbã4xÒ˜fœäLšäà;è«F\ —iðå Õ¦ùlÍ8àÕٻܘl)ã&1¶æèöS+l×j¿䙃ÞÕª[ò{áÙp%Uù‰Ò8¨ˆ½¬•Œ‡ëÙ–}"=Ýq7›Fí(ƒ£ †âh4rÕ3½êHpM$ä)Í™y{ÁDFdâ‡ibäˆØ²i¹€ 5¡]yß÷<‘³åûÝþ(øo¦‘SŽZÌVû'j#²Î¦Ê“$ÖÙ¹&ñÿ1åsR;*üïm0Á-ö7B[w¹ ¦^áQש+á™nB¹1|uòâËu‡¿¥úçñ¶· gÚqÿ=ŽYo{d1aã³Ï.yb¡I[Gð™8_¨¶#R›ŽÓ’ûÇàF:­¼9Š¤Â%­ƒai’Z¸;þÇxµì6ŽÁ_áQZ$†õ²åÌ)‡`‘ËbÉÑF’aËå þûíª¦(Úy`6(²I6Ù]ÅjËEöóÁœ¶çÐ%N¤¢µzÒ]ùân®@bƒÒt*TÏs]˜ZÚw‰ªm%Ï;–­iôŠF³03d0zBD|Ãv®E©ã\Hæc†µ™0–Hi
+Âa£
+TED!µR)]­ C×Z[ëâ{qçe°‡Ó®„º3‰çoxwaù:Z|Ä8_’-Ëè ò5'žKxqûXyò Wß=¢ÂbÐHårS‡ÉA`ËÅ)ç—™¹`
+ó6QRûž ýx|~|süùÒ§÷þò
+WÜ‹&¹HÛ[:ñÂGàkƦ×h‚íqè«f‚–éIz„ǘùQDÿ,^HÝÎ>Ü<ä)Å{üx>ͳ®g™vîf—ÆzM%ó€Ë0À›h€é®3±$ui1ŽAe-Léê
+öš£7e_¥°?«ZʪÓÉx`–$ c9õfþüIŸ*‹•Nywœ—EݙĸÓSOnŽoì}áCÄ.{`<åzaÚ¨Ùo¤øE0Hžâš_œ£½g+¶:é2»¦pû¨jí©*ÿ™ª’R¨ªœhB¨*#U=¾žÆÁVãLU›? ªûyï¥Ôv+JÑ™Ë|½Ñ½Ñž÷.¤¸IýæïæÐ òx–ß(Ù?dÀ$ËB$1MèÊñ$䑪W¹Wu&@€âë}b<™ß(Û©¸¼â*ÒÞ¼cvgXU‚fp²"ÅØN¥»èuúó/v7\plG½ï2z@#àŸÒ*%Yär"áqJ +Yˆ‹Ò9G6Ž%¤ÏOJ3ƒ´ ÂÀ z!Þ'ÝYÙYÚ(wÍ×åHò¯³ŽFtø™ßuCnû¾6[çd÷ì¦rtª›:áZ[oã_ß³‰Û<8sêðë³O'€ëc˜!†Âya¦4´Ü+õ »’h „ö~ZºÃ)º59ÆcÕ‹­DØ/|Þe
+%¡uZÐŽËí¨ ÓÈ1cÏÄÀÇ蘆S@œZà¯^;ºüÂcžåè~^P{üµ'¾ÔJ
+—i’!‰oùªÛîìžþTn:(øǵóH{
+6Ax&Ïî‘­‰ =ø=s£¤:Ï£m|g¬7Ñ5R6•ÑµÒɯ´MᲦH
+IÄÒ×Æç5`9ïÖéJÆžXÐ¥*h¬£‹{åoòÅIÑI1ÈáÈÐ0¾,ü(Î,9sW ±¼Úƒ]*c~‰^;:±Š~ªÀ Q0>—m*{rÖ^¨fÅý¤t¥RXmMëÉ®ð`r%è<¤V;'ì>iyP¥¹ªkk4—QO/æ
+endstream endobj 409 0 obj <</Contents 410 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 410 0 obj <</Filter/FlateDecode/Length 4399>>stream
+H‰œW]“ÛÆü+û¤DX|GOöEå\\ŠÅJ¬” $pwP(ò²õï3ݳ»
+'#B˜Va¶UY)Ld®N“ºÒÊÊ©ÒÄÄ›ÂfQÎq™cÜF§x“G³„d?ŒŸå÷ ¨Ìí[¾?Mòdîeu“<ü*ÿ?ânØáçlºýþ4õ#Ìa³™OfŽ7Mô
+.®5áõ’pyåÏ+|'‘”çnVXôP?0% ¼·Ö#ù»Á<v ´œ¬œ%eZù<Oó*Ÿjö~* MIT †a¡õý[œ•ß‘[w?L@ÿ[lkr‘ÅËùt
+¡Ì%E6:~Qcaù„Û7Vžëü¢Nû=£1M±ì ™;F¼©Õ
+¾f%¤Q8Â*ðPz×üFH`U’M(Éìz*Ë'©l]…<Ïä“­CÏj¯4ztú¸
+]xo,‹²VÖ0|3Á§´Ö\þU~=jµÂøá¨ùâ@Û樋¥œåÁÕE.=^+é›^&$3ÁÕp¸Ë3+ „Q`Ž,d=XRo¾ÎS]<£
+½¥‰¯Þÿüq–hÓçlJiÿÀžÜ³rÖ[ú‚­¯ìºVÁžLzÇl*w;'M=Ï]\ZÞìDÚíö‡N™DºSEOšäIáÉH~AÍç ´¸<liîÅéî‚Ê4d˜ƒ»Ã\¨Žƒ}·¸ÖKçXxùŠB¾<«
+s†9&:» šÄøc7Í#h@œ±•‹b›ù€q7®!Ö5Áe<‘ñeHž‰„ŒŠiF Ã7¨ÄŒ*1³I^ÕÞ¯{³"öfM쥦ž%eFWc¥²/«(×J¡·M^&VB¾Žü~º¼%J¯JøJ©‡‘Y¹ÉKø‡#‘7V?ã|ÁÆC'`ê>~à;ÇÌEÂYâ’†¶…›¢"öŠF§¨#@™]aÆF"+¹þŠ©’À€úŸõ:ÄE­÷¿”Û›‰¸ ³ÅžÛ "‘{‹,âi [œ°æ” ÷ßQßp¿úwLŒFµ——:õ~ï¯]êê@f2¯uŠ¿nG
+=ƒÜÑ`š6¡H"¨À%eö‚ aöЋ凘W½_„Þ/—VúÝ–ŸÜóP3AC0llæ~X:I[ØÌÝ¿]¿é¾~dÑñÒéê&$FÁ¤BÑä‡~x–›ÑQõÊÅš² MéÉÓòÌgJnàPñwºó·™V9š9Ò•6ÖÓ»e;i‰.жâFN‘i0>@”—ø3I®OþJ€Pí« -×»0­½dÚÏî‚óXÓ—…›¹Â½Y‡[W“²ÕS€Ü—Ky¡Ô/šÇI€õ Ÿÿ­êUŸüù™ÆNšÂòž•%…ÌìÕpc~rÃõ#:WP”gSä2XÞÄëRÍ‹E}–aÚo9wóºztth%˜Izóãif;ƒ07ŽõSâ=tUlõËž2vz(Þ±@¿ÂnsÅ¡ƒ¼Ü^›gX÷˜'óÿr^u½mAð¯ðÑ*lÆü%¦Oi ¢ZÛˆ…¶
+š¢c²(lÚüûîÌî}ÈV£¶¨ÓqïnogvFnq§ê\Hå ¨ANyž²#V†Îëó+D“6 Vßëƒ1F(ô
+Ê™¨aglý*Ÿ-c™5°yŽ¬<GÚõG"øuZþž¤©ü5Eº[PÒ“c=%< LªÍðÒGr›r/¹Ï+Ã<yp„e¶ræÁ¹!?AÁ¬¿”,is… ý ÜC –Çç÷öâ2w=ÕgÝÇÏŠ•D…$š;ÓS~JÉÖz$î
+RHŽ*jŒÝ ©0‚fK ~-“ùyôéÓf¢=§´3ósz+ƒ®ª â©„í¬Ó~´a´g{м¾*,7ºU¥~ì(¬« §qý„団þß~6©fáÝŒy“ñ/¾°çÎ4f[x1ìT€Ì`¬€o”
+&%dg=ƒ'V%š–#ݶ{^z€×Ç
+󟜉+¸½[‘|zMmÇY½ÌÏ®8³Òàa¢u*öayØGTIìyuZW²#l~Y]¦eévñ£€9âºý•}Èà¹õ
+YÝ¥ WÈ9Ϩ [q:Šjï9ðˆ;ˆ x‰á€èúab¢ Á¼–p0G»J‹wÙe\§!ÇHF}Ü¡ë´*0e NææÞ’‘xº‹¸£”yYŸ6HfÊÌÞT¹öøØK2än÷½Òfˆé°[æooýd(N©Þß÷zlº„%<¯h(5²ˆ/¡p3°H“_š#‚)&¶µZ'ÿ
+0
+endstream endobj 411 0 obj <</Contents 412 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R/T1_4 423 0 R/T1_5 425 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 412 0 obj <</Filter/FlateDecode/Length 3975>>stream
+H‰ìWMÛFý+œÈED³»ù9·#³À^[Xœ  )J£‰,jIŽ½óï·^U³IÉ{²ŸÃ#²ÙÕUェúi£bþ×íÕ‹_ÞÆjß«ý{¬´ÚìTÅqjxB©Ò,Êâت¼Ô‘5q¦6U ÂÍ=¯Ð²"¦øT+“F™-ÕªH£B[µÙª`½y{Ë ÖõeË$¢Íó‚NIh¹)")ÓæªkÔ;uR?mæÖ`o“`ïÕxÌçKeKg£‰ÅÆ÷rîæ-j¤*Éð[ªË@ê ‰bõkê,0áJ1Æ5žÒð·Í?`ð¿ÈäÔ˜(+¼Éö«ÖÂÐKòê+ë‚•sˆìŸÎ÷×&*¿é›/”.'¿†³³LGzæþôÿ8Hö¸>Hë|~'‚ÍtJ^>'Èéäü‹ Ïq8ÅØþÁë×3Ý>Aü²R}Âoƒ8vaôx8´'js“1ú±zCŸyÞ±©0Ú7Jã×Láwvšk;ÙÌDÌ,³439oifèÖ£¥·»PǪNa¨Ûõ‹ÛµÚÓc®LÐ>ÐÓYú0#j­È
+þÏä±s¸Jq^4=™–ôC¯êãxßâá0h@ç<Rq,ád÷— »Üá¹Y^*Øyèè‰ñ ªZ&w2ó„¿{Ì“ [ÙüÎ_E7Ñ%n0ÒS |O'ÂÆ]?;OŒÞ!ˆ´M·À‘=ߺ©ørMPãN„ƒÃt.¯‡©=à+÷üÀÛ=†ºœîŒM<púâ—ÉýÖN„cÿ¯œÙc`{õ¡§EC˜]UªÇiÀÇ 0^ñqÿeÌ4]Gqnëú¯–ª-?7jh ®K÷"dõ|\^N{^>â k†–—ž#±<´3™å;°»5 y’—ÌA~žHQ–Œ$„ÿK ¶,Lðª0ß~$
+Ü5§-ð¹†Ò_úöáÌ‹¼ç çº(Ö9;ŽT…4KËùÆž‘î%Åüp\GOHTÑ|é×Ѩ­é\z{À aÁ‚—øÀà Ïô^˜©Qœ{™¯©Q–QnF[6LÌ+ˆ
+ŽÏõçn›¥`/qmÈ÷ÚïÚÒ![ˆiJA®.ƒ7&ZmŽç*1QN›Ì9IîHv°
+<âÒEð :8¦ñ=M»á×éÒéÌZØ8ù%‰Èï›æ¾!ÂßÒkòÛÍ"ú¤0µœˆ%älc3±uEH*ëóß“Ší”4%‰e)³Ñ És!é!˜““ËiÏŠ*¤ÿ\\±^—ã=±_ö#Ù`4çÆ$øƒõºá
+´IƒÑtÒ¹ljŒ·œ”ðñ‡%Ë‘Eê1±|V)˜Ì§ù°¬ÇÜ™i£¬ÌG‹~4CÇÖü~ÇhÏóÙ¬2ðxtÔ/à µm¹6P'[Btž’^Á¦¾°’5’T EEÒ?cA×øÃìÂèÿšámÀñß°F`Eu<Òš{L„Ü.“2ë)§1¨u²Ó9æÜqÀ¥Ñ´œ…N{§cͳæTvËå É W\¼PÈ5δSôÅÄH[HŠ%näÆ3 FÝîÃ)V‹¿Š-`š¶ê ,«;ɼô®ÞR¦j¤¶ºa©ü‹šßš6½êE'rR(¡ÀûÉ|Îe3š ”]}õJ(d¨˜Û=ŽA\ˆµJ#ùùFZG6M=·ÙdõÝÌÜ^ä”EyUÌÊísŒæ¬(Ý%¤óãùÎtåÜžÈ@ÓÏÅ æß9ÛÙÏ݉í¼ÍLrðÆØ´ëÓzà|¤»ä|ÌóÓˆ&cJÇ…åd’¿¢–¢Ÿúƃ BàLQœw©²¨†Ë=ÀwÞœw“¥
+õO£|5åÑuË'oºÒDŒ#á5™ccÎl„-ªÎU;‘ºýÕoטÐÅfYŠ‰\%û.*g׆Žï`ÔÖì›ññ´Wÿä®Ñ’\•ü¿Ú?aÞ•(”Tó¹ya„ᵉâ(¿‡eÁI¢ÌÌ”‹›1N>þt!’ÏKid¹S; Ïr•ÔédE8aÏá»äÄt¢ˆa…zÐéä¨þã·¦ª£{Áà£ú9Lù­"ñ‚çSû%[­™#
+ñ°p~@j"ʺæÄÎVeS| ·Š4zÓ³JI½±_¢ó(K@èd½Ž# D”‰“¬Ó9³ž'e°yÏD(ÌÚÑ,DßW{Œ4œßoqÝ)”$æiÆæàÑdKBr1ônR—Y,|V±a¥…¯®N§vPÛ¦F#kŸ‚³`æ%ÖgòFAMÄŒ*\x‰ŸÐ_ðBÿÒec_h˜L¸™S23å-ÄbíU=gmt%}i€¬&óNô}Ë ¥W¥<Š2,­©¨†ç>0}¥´ÃP­®šÑ\“aC.ʶÒѸºÂð1ƒËAyðµD–Dij.ÚP¦´ªÎ¤ÔçŽ+¾º’Ž/ãl¦²ŠŽ¥JmuQªÙEÌKê½–Jó%z5£WFð¸2$rDì^µ†ïHÑ2
+ÏÒ/ 
+üœ²nî+\€Á!öHàü¨†®©†~`&Ø혮a€ ®`§;–ƒzÚQç¦Mg;Õ"¼$ºÓ2×Mð~;©>³:•&F
+E€·Ú»?IS1·xU­ÚËØKJú*vk)d²(‹ïZLÊAÿË
+Œí=`4i:F/GQý¼èK…üÀoyñ¦7Ûb·uáÌ? Ö™ð WçþyÑã9®ÒûµÜIƒT—^™+žå4@)4ôe ©¦*vÎÎŽåVHJŠ$è†HzUbí©Öµ'´nÒ=Õmm§ÛN©-ÚVžb2æ$¹#‘áà‰˜¾\|~
+tê HZdÃ4„ma½‰%ݘY´2ÊÆĨw‰!ØVJ,„¿‚Ã}=.ï°è¿Ø‰uS©(ÜVòÿ¸äQÍ>¯S+F¹óCÆÙ91c£¤QÄÐ8ûœE“©Ïr«6ËýaÕÔ…­ÝŸT¦„[/Óˆ‰
+²ô/6j¢7¶*L5ï†7…çã{[rLXZtפ’ÃáÀ‘ܳ#Ø‘]÷Ã…¦ÐÊÕ¦]Áä­­cµ¼‚õÐ7b©¡‰t„
+ 07x¥ ¦öð´„Žÿ¼?B­l7+ì=•gËå)qf
+endstream endobj 413 0 obj <</Contents 414 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 425 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 414 0 obj <</Filter/FlateDecode/Length 5373>>stream
+H‰ìWMÛÈý+ ŸÈňf7¿÷¸È`19›XHvÈG£µ-ÍJ;ûï·Þ«f³õ1#¯sÈ%0¬!›ÝõÕUïUý479ÿí×æõÏos³>˜×sûïÜX3¿7]–ç•ã†ÎTuVçyašÎf…Ëk3ÿl“Îå «'r9OK㪬.:3k«¬µ…™¯Lr;{Ç·só›)º2áM+ZJ9îÚÌÖÆæ"Üì{óO³5?Íck Û•=Õ|=6QEz]®6¾S½ó·¢"µ.©LYãogþ¡ Yj“2ËÍû$µuâÒ™Mr¬[<Ué¿æ…Á“+粺 &/Z CÈÓ'Ö%3•_Åò­Ëº«)š Šª Šòò}ér]žÙ(üÕw(R§Š¬mcŸ$m‚–R {I^¬…"<ÙîìŠã, ‹Ÿùì"½6wYä^QdÕõX†ä’Èœj¦ÀSÕï’*+S[$ug¾ào¤Ù§urÀÃf·5X•›ä.¤ZnþžVºïS¿Àê¡7Ý”kÞ6‡¥ÃR´j\W‹K4y"SÛ¬s£ywëtÖ$Û~Åï»[³àÂʼáÚΪdsßßñnÞöÛU¿ëÊäG¬cŠ(PÞ–¶Ô+²Y鬙¹,/j”ú»dfîîQD&mË"YÈŸÂ&ŸS‡¹äpHÛD ±y²N姟´”‘ËšP ¾u!{³…¥›aCW}]_´ÓNpÁ-¤0‚³0ûݲOÅ×U:+’§´KàºØ³9¤Œ}¿ì7_dF¯Ìr·•ç!-“Å&µ ÞÂÃZþ›Ý¶7»½¡£;ˆDÌ{Èz-§$úëQÅÊ©E^Æf!jðµH>R)DËtÏ×Ô‰ß"h€Ò(|u8øZVS"%‹<kòà÷Ýz›Z ûª­èÌ Y•Ì H=J±„˜YÑeµÄÌf¶jT˜O£Íýïæ-žz˜ËY…×ý¥»Q(çÕT.…ÔÙÑÄWb›MÌW\ üÜ,é­øÝñ½×«Áë^‚èä0N¸ŽÝª7«„¾N ßaÈ W(vÉ£Þ̓2ܾ1C$ù©‰‹OŸ -À–íNnÚ ˜Ò¤çƒÙÝ#Écë§W¡¬[–õLã‡Õ+úYªf‰¨Ê‚+%e$:ü¶gªôøö
+ÃKM@Ë—¤éà¢7OØ*
+¿7°y¨Q€?³exÒ ÕPá’O\~â2DSÆŠÔ ë^oq¥D¶Æ­/¸§7ú’~ÃIÚèíúŒ2hEƒ–þ ÆÍhÐhÎ$úÀý”„]‡~J’‰mRW,AÔª’Å¿¡ì\d7±4 KŽªl~"lU
+ XìQÌ+|¸ØåäÍ•Y#^=0ð8ÎT{€ é õb’óm­NDÄÖ
+ŽA6+ª!¯‚Ù1}³äû^A>jbÛ±Ýlc6jB*ôufíqþ=ÍnÚiÎÞx" oéÞ©×5»­6»£Š}÷QßÔ #ÕGûŽ,ô8™ÙózmOêgɼ&TnÃmD}(}Ö’Ü+åþ¤ô®a¼3ðX>íX>äy&­³‡IÎVó¥bMZ8T2îìý¾Õt¹!{rf“ìéB‚>㻋|N”’ýQd£fÒ^o&ƒQy0ÊÚl¨UG˜à9’VŠû\H% 44¢%Q°ayFxža´Ÿ–ÇÀ/=å†lG’Ûáå×Ó³Y+Ï”jDÑ$è¼¹ÈqO’jo÷¾I+G?:¯ì8¯¼ÄyhPÜ ¿™³`ùMç’¼ÔÈ(º7S4ã!1¤vÛœŸ½6¹Õx
+}g|(~x_à¦Ëª¦œøµé›]mÈ{ÃÕ[&ãbü¦-ön!?†K.ÃíÌ
+­P#ñ,:ÿõ¬Ë:™¸²¦uB5Õqg:!õ~œ¥È¥@Y¥Qb®r#öyz¼ŽÕÖ#õ¬$CN@)
+\€tYÓ$Ï–í•-a4AÂ3’HâX9œtp—Øeª§ÓLžiÜb˜&ûð †{Ðó©ÊŒ\‘ÖÀ3¯ŸË½›Ò α
+cÄÁG½¨ pHÀl»â‡
+IÔL„ÔD„4á]ð®"¹ÌÙzL#¢P÷ÜØ×MÁxqŽ%ž£¹4Ïß<Ó=ç™·:¦’­ç 7€¡Æ¯Gš£Îô‚ôûY¼ž¶¤ ¢˜ ž¿¦­ÿßòÿ¯[~Æ.„î¤×?BÉKÃA—ÕoÊ3öígPœg®w О·÷yí+Í–ì<ëd0û{ií ´Q-øhRm¢M•Ài›2+Ú¬vÝ(‡f
+!Ú²ÿ™ªuÄ[4kqõþÁ~µ,7n$Á_ẢŒ1ñögtÐÁŽõDø°'„(z9$íÕßoeV¿
+,úžSà©hnhÌŽ;Sø;ƵãÇäÜÿNlÏ
+Il$#}™ç̉êÛäqY˜ÊZü«û¥k‡hŽæõ2Hw¢ŠBÔb]zž;ÉÁôÐs$·›¥]ƒj]ׂ {B¤bc
+)…›/Ø?ðôõ5K¼’Ç[üDÿäaÿüýˆ«òïyÛOÙ~ôYÔ»u"}2u†âƒ:¦ëEžpÚEÌ÷{ú$›Ú\ ã¬½—^»ÝÑ‚·}מ5êû/jgṈ7ö’áÛ¹“ß$ŽTˆ’Dzfî2ðt|>õKjò…:YQÙ‡îkw ˆÉ4;|^Åyåå'Yº’k×6‡ýðp?ÉâTPjFÞ7»ã \8JÚËœ²I
+W©¬–,®Ö^Ø1\¸_ÑþÒ_~߇ÛÐtµ>BC;q*Vi§²XHXŸ–À^a·ˆùй^£p7ó;¹1³uœ£­<½‚CîšV5OßOý@ÿø„3b*~u™¿iðoüS4¨yÐùðF¬:´ˆyì{ØÉÃ%‰à†Ä"+Œ”‘’W "&g•–>Ê\"Ýú¡`r¶žZú“œ
+¸Ñ©+µúš*C
+T“^P_'œMŸóàÎ@}×îŸí©B/`çF¶2Ý“¶­? †êÄgáŒ¢í©½áèÃ+lA3r
+ÍAêã¿°[DÀÀL ‡Åbô¥cŠÎå½Ùù7|X¹îxת Ë ‹#ËÔ•gJ™š\s4ÒOºbMnÄø BF&l@Þ59ñT)#eq"Ê.d¤3óãI² ýqÞCdBà|"Vñq™˜w#Ÿu
+¦R'5Q×_)½/RúŽïz&îr†'Ú­Þéê¯Ý”/YÏ#R×v¹4
+A}utQoB và ú+í&5s\/Ab°Lf¢šÎd1ÉF¦®éªÆãre–mª³òÌñØãô{f.5M©(§¦e€k§x@¢¾ÞA#—"3ÅLÔ6ds;Ì4¼za[dj:u€ó<,X õdzÓy\˜‰ãúDEÀ&.ó* ÌÊЌՋ²Œ‚ÀÒÏ•ØÊù§`@÷Ž¬Á«Èµì ’uÅI<+Sµ{Eĸèm7t=çv_tBº¿¹xrõàšÿf!¶BYô+Ï*LEV5}gfß gJ?wAÃnˆ˜[¦qÜkÛ“Ù=Ú“¶c>Û²îd^É–üzÇXØ$¦àîÚÖRØÊpžÀÊ{ÌÞÐêžÃD7ŒR”8¦vrí²óY™‡Ý(UùF?—Ë¥>ì¬4l(]t ¥*ƒ¨!ù%¿ë`wJ’ìžÂkù
+·Õ 7á·€ nðô›‹Åoc[2™¥)åÍ__Ýh3Ê]3Êfä ©Ìv£Í=½ˆ¬
+’×ÅYëÛ€{9êb^ß¿(ùÿt3çk²Ål‡ø,=zrOj„!÷ëC”À ©gcR×(JòVR˜ç«`"oEÔ¿C‡6v-Æð© 4’°ÿ¶”ˆæ¥àï‘ŽÏÕð£ÓR›Ñ{b]•¼)ø8Ú™¯$¿©®\ïa™$ŽK‰µYÝÅë¬Ü©6ϵ#ʒƈñ¦þvµ©â´Î¦Šë1Œ%Ó„Sg{…ŸŸðûg˜†œqÛdÕt3s¸yéx¤ˆ‹4·çÓó+ØQ)³ÓñÂÛ‡”RÏ®|\iœ™ã d@5Yò¯á‰í er>pL˜â4K77R
+ØŽÈ
+ˆFwÁ¥Žó$½.“֜ƥè“H×y}];#‚‘H⺫7Ú´AÕ¨W#[¾_·¦Lá ¤ö:¦Ÿväl®t3àåáN'À•èš)Ðn%BÚMÞ¬„WD¥¦ˆY…€/Ä {k€xÐ8Äroëö/¦Ú<0ò“H5£_¢ÿ 0
+endstream endobj 415 0 obj <</Contents 416 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 459 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 425 0 R/T1_3 466 0 R/T1_4 423 0 R/T1_5 467 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 416 0 obj <</Filter/FlateDecode/Length 5056>>stream
+H‰ìW]oÛFý+ƒ<‘…EsføÙǦFá}²Ð>¤‹#QŽ[r):…ÿýÞsïÌp$1¶¶ tQ±(jæÎý<çÌK•ó¿áN]ÿô!Wwu½ÔÿΕVËj³</ /hUYeUž[U·:³&¯ÔòA%*]~áZvä´?­”)³Ê¶jÑ”Y£­Z®Ur³üpËn–êweÛ"#ãuC§´Ý4™®”Îɸzõ«Ú©–±7°m
+Ø^øcþ8vQL:M.>~”s—èˆT›¤TE…ÏVý"/²T'E–«ß’TW‰I:Éñ^ã©Lÿµüþ'¹\“UMpÙ¾è-=N ï>ñ.Y¸„ˆý2¶¯MÖ¾š[ÏTΔ¿¥ÑY¦Í3¥¿ü‰Óƒ´n㘨m¦Sêö’"—S‘ë³"Ç}8ÕØþ”6Éû÷(3E_ ~U«¾â³G‡´LxØîw*Õ6¡ä¾ú¹ú™~æu÷}‡·‡^i|š©üÎO#~Šw-åä4âg[••ø‰ÒW+µÆ»z{—.êd·Ç_ÊÁíêøÅZ½ãwcº(“íŸñ]}èwë~ ïŠä{¼U윱QÒŒ÷Er¦³Âhµ0Yn+LßÇd¡ÒESX˜Öy¢:*Àªß~M[Š\'kú•~HdLSº*þßñ·;·n:¼ˆ2¡ùp>7ÏLcñŒ3·;D°·∯º%[sØ
+Ùº:VRKÔ‘ŽêÂY”à=>©Ÿžà·eT$›pÞq†
+O½+²Z
+ÏgÁýé,¡CÓf–4sÌçòŠ!ÇÉ+|9–XC´öT^—È«£ßðüªX\áåÄ„%'«õf¶7ò€6–!W#m&ųJ
+ít
+N [fu{,é.Âf­Y0ASD}y` A .6–qQ& 6‘0³!•k§¬) ø¦ðØ»Ün¿_¡øVs{ó= yu‰'ÚÀ­¬Ú¿ÈMä¤5.º‰œët ¶cÎãÆûÔ¬N·—ètªˆH8~+õF{ªÒ[Qé‘òZ7YYˆn“¬ÁòòËÉLH©™$r.kPñäCÄ3³LÆ^[IkS•§L g™€Eø+4Ðþ÷,Ð ÓàFDÀáz4Á½ãq‹iÀi<wÂ
+ÃÃÏHh*Œ§ÀµC›Ö¡MÍúÇ¡MÃ4´ ª slâÐ/<6¡ˆs‹K©LîÂG퉣;V–t—–ú˜Ž¤å$ÙWès^ajA•I4NØROCÐ oËï 0_G9ôDà@÷ ŒÁõsø b¾ ‘¨™#ìHÈ8 ùxÍáq¤¤çö4€“ïqö‰H¼Þà/a]\LÏ6aÆåJ‘óv†•IlÎOngòäUÔ°†’Ÿû/ýjTóó®„Æ8üªói^H‚4Œ…ó§Z3ž©š ^ ÁsKã[¸LªwB¯ÆÝ¥ÖkÆž³;![-Ã@6" ^‰µ
+Ž&¸Ï@Ó¨›ûþ¡ßêô…íMV6áîò6…¸,ßbÏÑ ðeè…·•:2¬­—h·"kò‰ib1ö‰.¯îÑÝOô´† £¾ç×Ê FóÜœôüÂÖ™¥Ãb°~K%C‚\ˆ¬…iâžUÍ|$g½Ýfº:
+eƒævE°© …p{síºÿŒ³INù‘þO‰²¤YhGê¥ÆM¾{o†j\½e^§¼ó·I@’v’ˆ”O“rÊÏjËûü‰ak’¡·îÚ4{ã ã-Ù­þÃ|µì6nÁ_ìI
+,B|ŠÌ-Ø8€ È}áR´¬@–Šrvÿ>]Õó¢^s°Er^Ý=ÝÕU"Í|M<Üß‘NóbvÛ˜"“Ò˜,iR¿ÇW,¤\™–æB“Ý»„ó ñ9—¯ù×n®Û©*ÍB^^5ž2ÞsËE„XXjÒü)DH*F¢‚Ÿþ s4Ôøg­| °ynAbž1æÂ]›2Š•#kýºÚ|ÄÍIl*Û.Ú€ïgø§5ûð[ú¶“i¬’U•ðLßÌñY¶!˜#h–3 wEP—RcèÖ~ŒO:[} ÚÓ4Á-cP_TQãŠ<‚‹À°£úªú8ªûú-ÂFÚéÐ~ù:¹˜û@wS¥»©‡XVÆIèc^Ðç"‘ZAæ.õÙ”¢Pau.'­2äì‹œ!y•'•¶‚¦¨¸?ŠFDûĹx8œ^≽(©)vXó/‡ƒ”ÕaX[‘0صÛŽÏf„ 8˜—vÿŸÔt¿ÎÇ­Ñ¥û…ºèºÓ0°oulìβ~ ÎØ÷‡Óq§û‚þ{Ör~iE¸´R/­©ÊŠ¡ÁcˆÌr™K™^¥i'd.ƒf*/¸œo€%¼æ«^‹ÍÕαm¤N¸Vgì9QíO f&
+M2Á–:ǃ&©ÝL S"ÆW¥ˆƒ¶£®×ð˜OV‚’mbö‡lÕÛ`5ûÆ-Ë­É—vÖXz`>.=kþ]bÛŠÆd‹“ÍÖxZôàÒlg^ñ>èÅ÷øÞõ”°ßGÁL¬ÁžÈ!€šÒÅit<i¶GÝ/ü:JxkÑ<ζIŸhÞÙáÛ Ü~Ç %Ñ\c½)ããüÎ
+QµÉ^BÈ+Ī lñ6¬3ÄI L>° 4 ðð^†(?åo=úB+uùfëÓ´]'yøßx0ž­õ
+ô–À>æZÆÌëBrU~ò4*%öàIùÂb¸mÆR§¡ŠB‰$q(ÛF}Ý|¨™
+âÕ~©pÒ!xº†ïIZDÓXuÖ‘C¦´,*¼ùK˜yÑ
+³?ÚîÆ—NŸÁœ{^Ïpr×èXÊGµ²kzœw_`åÌñØRðløö8g"Ǩ
+üK+ ´ìÏYGÞ
+Æ×Kž£;˜öpô•_üÎò™£+ólÐ'W–&«Ô3Þ“ ;B§ÃFZr¼"¦8Fv’e6홬>¿ ½÷Q=9Ä>O°ÄPë™®å%^¤VºòÌ8Ó RC]sV`u} ˜i­¿ T<ÖaÂ:$¸ ¾Z£j æžÃ‚Ì‚Ê Úª,xKÎ8z•d…×q˜Š9šÍ6ÜÕ5ùÂ~%Bl÷S1õ‰Vo»mo ´–KÊÙâÖýØGžh?㦭@ŠFv©£(¾57-RÉ!“GÒ¢•(Ë!¦õ™'áK
+Ÿ…u+αç[Oª
+}ήÄï"Ïÿô꜄Þ`Wù„]eœ¤œÖ%ž@ŒæÙSƒ@]=çÉlçóði»¿­)… ÀíÎV<1½¦5Š½ì`›ø@‹"æ—ÎÖçW³ðèu…^%²O”Bù¸E­¸ ÔSuèõU¼ó¼PJûš"¬òZ9EŒËÝÕ_&M™¹9#R„? ¹à¥fôlX”Y ˆ!G 2ËóWèj!„Aö‘ÞT–¼™¦ùeKRsã`'JöàD€ô& : UqÐQq¯zfÛ•æ5Ę´¿<è= L}í³ëm×Z"{ü,ÙótÍ8ê¶P~õAæv;ëÔ¤¸wÿ…e?æÔ“.ûˆ
+endstream endobj 417 0 obj <</Contents 418 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 460 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 466 0 R/T1_3 467 0 R/T1_4 425 0 R/T1_5 423 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 418 0 obj <</Filter/FlateDecode/Length 3669>>stream
+H‰ÄWQsÛ¸þ+x+Ù‰‚)òúv‰çÆ»™´Ñô.MÂ2[EôQtrþ÷Ýo
+oöh{.šb~ËÿgŽNï~§ç;ªóv™g.Ð¥?¹¾‰+PmkùïoA(<P Õ€§)°~£Mw³zy¯udCûçÃKvÄ¿n°XΘ°ƒg·<H.Á½ º£š{
+ÞýØC6Ú&´vŠuò€ß¤;šŸ3'Üs³ôd"Û“ÙÁOÕŒö»9ŒÆ)ye47P:1$î
+Óò*“KŸöpÿ³Ä™zÛïÙ6U ­ûÉž˜ZŠU/
+°¾$ÀÆ¥
+ôæ§Ø_tMÏs?t+ó×8MRÈÈ1ês(O ¥‘åAË:|Ée@ ••§‚l‚wì8.¬Ü(²ž1=ª÷}³?Ì4}{ºÒöÌþu¢ç*Š©
+¦þöñìþô
+©yÖ/·•«Ð=ô¬Íìð„ºÝÅk“I•„ûíož¿¦u—0ó>ÆWèXGKúçΪ\’£øê;´g4 5[¼—hnʈJ xÝlR‡¤H‰ê¤ ú KÝXsv›R<‚åÜl7p—¨jn’m¶]áöÕŇƓ<þ ô-˜Çw‚0,ü vרMŒ/f¼’‰­Q_HuéÄ,Œ‘;¡È-¡zöeØž‚“bØqlØ3m‰[ƒ.þÇ[Cö­¡ 2¿ïÖ`^º5<mÀ_º)4¨*C÷äÊ_>M:7&-p˜ãpñbA5çbËUT;—Pã"¸ ²çÆs¡œ¡éÌòp7H«ú®(!«%$’õ?X½QÆVTõ¹–É_ˆžH±
+̶¼ ¯T¸ø=*L2bªúÿ£ÂE °Wêï|Yá½7F—ä«lþÄ”š,+þV¨2rFFžl‹À ×äÁ‹šý-½+S‡ƒ½‹9“•4ÓÓ¡Ÿ”ÎÝÃ/‘×ëí³z}Ö \o˧r- =‹è|­„fã¡åKaÇ@öw“µ^W³¯„Xºø•P¹žû’
+”‚^<ieÊêˆý
+†f÷IKKk.óÒ+Ï Ú× %'Äw¸Q3è|
+hXËúÁÄ…œ¡`²œô®èo˜Ð|¶”Š²ñð®e”«žÑZF=®zFú”¾qzÆ<®ëOþîNZFŒQ2!ÒHqô ñ/‚¯“v Ul
+'µnbµTE4gÜZ¦f 6o”àÅÈ{ÈÑ· !_Éã´”0µ ¿é_WwqCøïcñ×aå¥} ͦÚz‰¯y45@ù @ÈÑo)û­]±¨ UGs¾Îàôhç
+endstream endobj 419 0 obj <</Contents 420 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 460 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 420 0 obj <</Filter/FlateDecode/Length 10753>>stream
+H‰¬—o“Ó8Æ¿Šªîý"^Ëÿ}ï` €«[ŽcÂÞ‹åê*;ñÌ°ÉÌÀî·¿n©[–Úq6.¦’àGî~Ü’~j?_«Ôü;Ü©Ÿ^]§êî¨~Zëÿ¥J«õ­j“4-33 Ue•Tiš«ºÕIž¥•ZQ‘Š×¿›;´½#…;PºQY™Ty«VM™4:Wë­Š^®¯ß˜^®ÕW•·EÁë²p{Ö$ºR:…àêЩÿ¨z¾öÝ`ì¬ÀØ+Nó}hц$Yj=þjó®¯!E¬³¨TE…ß­úÅ^HbIª>F±®¢,^é(Åë•ñ×ÿ@ÃÿËe–%Uã,ç“nÑè°€æî‘»hE±ñK?¾Î’ödEò:¨ $J‹±—+kÓD{å/ÿB"cœHgÚ&X6}–º3Ée?Éõ“ì¯Ã~ŽóWq½{‡Ó O_àüU­ú†ßÎã!.£#þø´ß©XçàÒŽÂÙOÕ{͸Ïݯ;¥ñ;맟|fÖ§q—¡OS›mê&I58CŸºéæp½`£Ïv;HTE¨g°â>ín!kíñª¾l?}ë>ÆWœ¶,±^uY'u¦UÑI£tRX¼Û%Ý:Oõ”']'YÞ®î7hiwש×øãÓñÑúÓI“¦mŸ€Œ*E+ìº ·C _Ê|wUÖK•wý++y+¢Â-.Å~=ôLê>.rótø`XÓ¢6ñ'ÄÄå’CàÊ{²õ5”·^ù»¸nØ5È`ôœü©˜ÙÄeŽ”·šfÏ%,f>°œÐÄ'ü›ŸÐ¬šb<ù u
+ëÀÍuÑ`ª~ºu
+3Óôr‘ÔÃÕà @»f­œµàW[‡|ÛÈò¢XÁW/âUíáwݘ½˜ø‹Eãæm¬¥ 8QÌ„çre¸óýj–°ûz] ‹ét³»4±3ËiÏí°iŒ:Þ]ÑÕ{oÍiØ€ù’«Üœ(T]'eÕ—"µê
+Uêhx7¬T?À”ªHªÙ JK-û6qǾßwßübµ9Xù¬Yš(– 8Q¬¶ñ–Mž¸¨ûjÀ9Š ©×aº‹Aµ¼è¸2ÍÚËHåRômÃþ°C¯Ÿ~û=†­ØÝ<ÂÁüÓU\Ã… ú%^ÑG×wþNÍÀS±àú3ñ~Xó}IË4O¼’عõ+SÇ`#kë§/¨7€ÎÁr6ø¦–Ÿ;¶ý¶û>è3u²äù`âM”ÊE+[l¡pE£•9͇­˜¯°‰²ÆWs³â¦îåZ§Cb¶-ÎŒ ê¢ñŽ®±XW|p‡Ô¶Æö\PK8zjYµO#E6ÿúþ
+º¾¬ ÷W,ù‡Àxúüö°Žk šªïå‹ŒgÑ™¢Óž2K§=Ë£Ó~Ò›9ä3Üóõkôþö§+Pš¼p]jo’NQ²!œ¢¬ŽNQÁd´çNF¿l?+Î(V$+Á|òL{±g/é,púè,˜œÂ‚ß>Úf÷ƒÉ|†sùðpØë¶jóhº0µÆà•W«÷fÄ[X›ÝV=àQð_T67pÃÓnÛÔéæî7øS/—EûvØŽÛèÇuBçg Îòâq£õ„¡IðSû‰OпZºå°fBdl½'³/,û‘Ø'¨Ä¾°ÊìTbŸyľ{£0ûXš±uEÖÁSf³.—XG™$Ö±¼ ë<_=ëÚ4+&XG6Ö±:uÞ–‰çÊ©Eêqnz$Ϥ^Ã}¾) }¼r$ô9ýôÕü.
+…˜Dß`n ض[õ/hxh]¬ Bv¾ê¡×¶Ûáÿ>áˆ[s哼ÒÑÁÐÎ^ÝÛ ¯ß>+ùüPÏàÀômb†iL"²^`!ËK³pPËB-²°V" Éb˜…a‘X(ˆÄBA%†Uf¡  …È#V¶_±¥KXXy½»ÌBÊ$±åYXùo†= S8<D’ …¬.ÈB¿xæWb!çXHòÅ ï'
+B\}g2ùá²¼4U9ÅÁœ¦"Éb˜ƒa‘8(ˆÄAA%†Uæ  …È#–…é„™ƒ:ë9ÈRå]?—ƒe0>ÉAÊÄädÌA–‰ƒ'¼Ìâ çkvOH6˜ƒÎ¥å «ÄÁY&OpÐ/”³9ȹ‰ƒÎY=0Î<s.{ú~Dòªar6æ Ó‰ƒ³
+Õ¸~0›æà`^?<l7Ä+õØ7uÐÓźŠžã¤+xÝíî
+v
+‘8-DD’Åt¸=‘a‘)ˆ„HA%D†UF¤ "…È#DwÊ*ŒH–.AdQáÚ=…HÊ$!’åéùšÝ*’ ‘¬.ˆH¿xPÎFD$çIòňôýˆˆäU#!Òéç rv«8˜×
+­³0úXº})ÌÀéÞ“2IècyAôy¾f£lècuAôùÅô"ú8·€>’/FŸïGD¯ }N?}¹C_=¾Á¼~xØn¼öèÇ­ßU¬kÛñ½òÚÀm·ëÛ9ûëOõÏîîÞþ¾@cŒ8~.q,/¸ÁŸBœÄU"âÈbqa‘'ˆ„8A%Ä…UFœ â„ÈCÄ•-r#ˆ8']€¸²…hN!Ž3 ˆsòrˆó}ùˆK›LDÛ#ΩË!nP<@\%!Îå#ŽåK7ð#!έq½~â*BœžÜpV¯Lã¶9¼Ýö¤»1 ÚàýÔögØ¢ˆgzý_qŸ›W\ÇÀÑmÂX7"ü܇áçä…á7,Æ)øál¥üØb~‚há'‰~’já'¨?Iµð“"à×°ÓÂðcéø5ø”'áG™$ø±¼ ü<_sû;¶!ÀÕáç–f#Âs ð#y&üÒ )G@ß”@^9
+]!.²¼4:ÁEäF¸HÃ\ ‹ÄEA$.
+*q1¬2•¸(Dq±†QE˜‹,]ÂÅÿÓ^GMnY€ÿ
+ð0@€àÑö¦Ö®Úx]qRû,˜‰kmiy\ñ¿ßÛÝ÷ n¥@yˆ¢á úÒÝ|¾˜»l&]Ô‘˜‹ˆWtÑ«kvS¨e‘®è¢?yâbG]ÄØÄE7…~=%3»†™8æ·˜X&v×M Öõ{³UÂþ‘•ir´jµ³m£êgExûÞõ€Cÿô9ëÒ“çi?Ø3†þ/=Ž_·IÄC¼¶xÁýO‰×š%¢âi‰qñâ¡ŠGB¤*^<…x$UñÈ•/Äkä¬6.¢%â5yz·âéHL<Ä+ŠçÕ5[<-ƒˆ‡tEñüÉËó2§âal"žÆ‹Åóë)˜xØ5L¼1Ÿ'ž§ÎÌ“™²Âôƒ×Ä ÖõõNÔzÈŠMúßì®Lò×£y}L¾}6/®_]Ã'‡Óë%Çñ«$uú6+Šô½ùx´¹ùÍ“ü÷9Û‹2À7{ØŒ÷í³¹Ê!++Î!æ€pˆxmƒÉ™âPø(JÊ¡–ç0*‡$TIªÆSpHRå\ù‚úºïÊ8‡ˆ–pXË
+Th
+u$P7ÖªÔ!Vê&j™ÕzuMaWð¦PË
+߬"'šBòò¼ÜR1¶2xÞcAá`ðƵ<3,&c» b408æÊଉšÍ`°®oìmòKÖ¦/Ú®ìù88“Þpíà»ÃS/ß®
+˜–,*`$TÀHª€ÅS
+Ø-
+†"v CqÌoéê6cW·½nb°®ï¬J×Ç ‚ÕËÀkÒÓUÀq¾ÑŠ~öGÇÁžâŽ¸æú{“=%?›Íó[VÖé²»M.7ir>!y{4ÿ3î–iŸ¼0íá×çÓ’²¾·—­u”QÌañÚŒ“:ÁhÕ £ eTKŒ3•Q*£$UFã)%©2J®|ÁèVÎjâŒ"ZÂèÖ<º“ŒêHŒQÄ+2êÕ5›Q-ƒ0ŠtEFýÉ“ecF5^̨_e»†1:æ·0Ú)£…”q•Ñ`]ßþø4ØqoûÂÓ5„šéOöë)“žðdO|:ìl#i?ì‘ÃS²ðõ÷¬hRëf²;ìmÿ(ý“=á¤`ïFk·éñ`»W#fƒÀˆxmƒiš‚±•âr
+£–‡1*Œ$TIª0ÆSÀHR…‘\ùƦ¾¯ò8Œˆ–ÀØlEgÀiŒ:ƒñŠ0zu0J1eùÇ0jF¤+ÂèOž=›Áˆ± ŒÏ„15êèÅpÄÎa8Žù 8Ö›lj3XÛ_2wgâÑ09 ½ûëέ g1£Ä£ÍÝo¬„uúÊl—Yͽà ï¯í]pçλ‚z·•â*ê–÷.ªw$TïHªÞÅSxGRõŽ\ù»ZΪâÞ!Zâ]½5›pÊ;‰y‡xEZBïJî–A¼Cº¢wþäÉÙ%õcï4^ÜúõDŠqÖa×0ëÆü–F°Rëò®½n]°®¶cû3+ÚÔuf½ônÖªæã׬Lß´m(þÚ1ï·ýÎèàÈë“. â6Ü ñÚ°·9[cŠ£°i‰qØâ¡ÂFB…¤
+[<l$UØÈ•/`«ä¬6¢%°U[Ñu6‰Á†xEؼºfæeØ®›?yrvMaÃØ6Ãæ×Cßp±klcþ·À¬ë;+ÖAß;û—‡ñÕ³‘WÏäøh\³Ê½<?‡o>sVˆ76ügVl\W÷Õô{½|–eú©Î
+—7®å™K¿Úb×€KŒ.Ç\¹œ3Qu1¾óÖ×¹ ÖõwÛJ{÷d_kOêænÔL^uík.Œt/·ÿ~îÝÑôo|ì™{&μÞ|ÿbŽ~ÉÚôDÙý*{¸U°‡XÙ›¿e&Ø &Á±WRöìSEÙÓópË+{ñPÙ#¡²GRe/ž‚=’*{äÊ앵ícì!ZžQµ`/òÜ:öt$ÆâÙóêòÙëòŽ³§eö®Èž?yöÙgìalžƋÙóë¡]"v coÌo`OvŽLÔ¸°×Ü Ö¾ëî÷‰kë>¢\Sg!;<©b»}×µØÉ×:ý¾³ª½ôîÏ}r§:ŸÍ‰À³;¹|¸]"âµå ¦ÁÉ·¡òIqoø´ÄxÃU>ª|$Uùâ)ä#©ÊG®|!_QÛ67&¢%òÉÓV—X|ó“ýÇ'/Šˆ/A”!ˆøÛëz%¦w}ž•=˜°‡t{ܺ‰Z:ŒF Óx1tÅ8è°Itc~ tµöwy×]w.Ø^o†~ç½™ÊûçÑ5rÉ÷~8áX‘ßÛƒ–
+j LAÄ·(ï²FÃ2³»6ý`>î²BvPÞ”W:B­†Ðˆtùõ^Ы2¥<bD£Ƌy¼^‹Ó[‰é8æ·èX:¶×u Öôÿ´×AoÛHà¿B`/äÁY’)é˜xwÆÞ¬=Àf.ŠEÛÉ bù÷[Ý]¯Õ­é'R+î!
+ÅG²KÍæçâõWƒØº·–=˜ÔæÏÀp„ç6;ì|î²×€H'¤êz×¹®ï¶f·»b·ÏþÌ»/Ú<«+‡å²¬²ë»¿É,ÿ,(š˜‚&â©ÑŒ&kMA¦,)šZcÍt¨h’PÑ$©¢™N&IMråÍÙªygî!ÐÄa‚¦Ú`ÿ™ÍâleÑ'*õžgmÄH°Ñ×êlô±Ú8P‹›:acX×ùÝ'³&®*‰ë–¢ˆ2€¢¯Ò¢èSEqT‘iÀAc4yeÙ¬~låñ°Æ¢ÂÁã@ii¯adT1Ò¯‰ÕÈC®FŽš¬±d|o¯w}ß9¾{Ù¦ ¨´ºÙ­#) ¯»¯òÞZ{õÑîúGQµ´Eô¿Nµ;<µV;«vãÊiíâŸ=¨œf.›Ö5&µ#¡ÓŽ…N;–:íHªÚ±ÔiÇ®|¤ÝRŽš§µCt‰vK¹í v:Óñ„ÚuEÚÍ*®–A´C:¡váä™ö”j‡±‰vÔŽCÖ“(ÆI‡Uäóù9Ò-U:¹C§¥‹îë{s[7lc¶þ*/'¶ñûV\ÕÒÆÕ\»>÷¹~
+vâN>Ýw½¾¼ìz(jÇéMØ™Ã@¬@ssûÁ®0ý?»ùwQÉ‹‘=ak/ysk
+¹kW'šG-ƒp‡tBîÂÉ“uÜPî06áN㋹ ëIüérÜaÕ0î|þiãûÚ¹Þж|oÒ1J¯–íŒ_=ÛÚó¡˜i³õ‘ÒàýçµëfvôöT=lc¶_M凮²W$"ûõÕõ½9ù×ìf½ÝìÞºž*‰™!J"žZÉhÊTÉŠ*¹0§Q%µÆ´’éP•$¡*IRU2BI’ª’äÊGJ6rT›VÑ%J6r –ƒJêHLIÄ*Ô)).URË J"PÉpòDÉUc%5¾XÉ°ª$V SÒçç(Ù¨’åjuZÉè¾^ïú¾Ã›®oëvÛl÷h^|ï:'\×w[Odãpd’¡z"â©%‹~Ö dòä×%•LkLK–U2ªd$UÉÒ)$#©JF®|$Ù¼•ÙLK†èÉæò;êAÉt$&â % êÝïiD2¤JNžH¶¤’al"™ÆKÖC%êa’ù|œd–¯æ4_ÑÍ”þm™ß›Û¢ÎÝ3oŸvïZe\[5‡—Ù›ICfümýùÕ¾è®ûlm7¾ÈïÓÖtUÞÙS¾ ÷¿‘x‡xœwÈE?~9A¡žSä´°4réP‘#¡"GRE.9’*räÊGÈÍä¨y9D— 73¿c9‰!‡xB䂺F#§eäNˆ\8y‚ÜŠ"‡± r_Œ\XOâ^:ä°jr>?£]k*ÿR;à]|_»·/æE¶ÃÚüG!ÙõózûÔ¹·VŠj$H!žº)‹Šôj.^-©WZcÚ«t¨^‘P½"©z•NáIÕ+rå#¯êÖ¶¢ðªª^!jƒýçzU/ÍÆW:¼Â`ð
+±z5PË(¯‚ºF{¥eÀ+_¥ó
+©z5ªÈ¯ÂÉ+ËEbúÔ+Œ­^ùÊQáðêÌ{yð*¬gƼªW ^ù\½5Q3ÿz¹8íUt_±}×ÖõUÙ¡ûzÑÞÌ´ZúÞ¹Êݾuô"j™Ø¹c2׋™Íç.{éwoö ó6Š×VsŽþhÿ{ퟯ܅wÛ­}{õm!Fy³X鮟2®!tß;íoÿ•­íæ¦ïܯpŸöš{*/f[åÅdC^Ä*ïøE; otå5ïf5•Wk,ã§NåM‡*/ U^’ª¼éò’Tå%W>’·jmœ’Ñ%òVæ+ä]0yu$&/â å ê:È[WÕ센Z‘é„ò†“W–Ëv*/Æ&òj<RÞ2Y”ç7,Šé‹•Ãôõù9ú.|·XÖ7º·×»¾·ÐÖydê>)ÕQù4‚ÍóÐSsDÝ™0ð×9¨ÖŸËvæB}¶±§õöŠ¹ñÛcǵr|8ŒrÌdÅLYO-k4Å*kMe­›wsÞÓjéž6ª¬$TYIª²¦SÈJR••\ùHÖ²µ|JVD—ÈZ. e w ÊÕßí-(åjõË!«ƒ2dŸƒìò4²A‰ùÕ_­PVu`Â*Òq¬rKjQH1Tã‹[Øb¢X$ QŸŸƒhã[ØÕiD£åuÝwqGê»Ñ·®ßc_ez+Ùi ÐÍìóo-]¤‘´É·ö´HXkˆœPçF’Ç_OàC<5|Ñ´TÚLRøªFÖ…OkL×>*|$UøÒ)à#©ÂG®ÃW/2G€OþRÈb…|õªµMö%òÕ+#ØPO‰*wAê*™°© ‹›Ê–6•(Óé–iùC•v•ÑôIW9gúÒ,†aiNCÔv©†QAÑÐ/*§aPrèWÖ96ï)OsßÚöwk:¹ïv³7›»Íëƒû*¨-’¶[4ÍÝ̶znë»Íßì§;ágQçÙçÎ}ùaÎéºmvsûÁB¸ÏÖÛMvw{½ÏÜIëÌ4®8öê×BTý]¶[ת>Ú#µ3½»½—Nô½üû¤Íìñ²ÄlúéÖÙijþ?z˜ÈåÊ<Å:‘{LW›?m×_ÍÿöËöé”ý¾8k°¿ÆáO±oú örZÓ2ìQs©¹´Nö,uÜÓÔyOc>‹U|;òéÅÌ2ªúÐìb¹òµÃˈ’/sê_:›%#_GB‡ëÿ>©øˆUüQKz@ü ®Pü…\›Š¯e ßõU:ð‘*øãŸ;~8yÒø•|Œ­Ýˆ
+‡÷¥•É¢<úaQÌ|¬tÀHùü¤ì;‹Û\œ¦*º¹ïͽÝl²oÅUmÚÖe¾÷ìBÀÊì·õ«¶ºVeÙlò7Ûk·wß]ç¬"´_^í—çÌûúò²ë¿'
+üHªø‘+á×ÈQ¦ñCt ~}føéH ?ÄâÔã·âøi?¤âNžà7£øal‚ŸÆ#ñãî…õÔ >¬ŸÏÇÁgæ©™§æé ]t3o y?•^®Ìu›g·fûqg>{óñÍu}E=Ï¿±»í¿à°ìCQµ¹|俵|]›E5ËìÕ÷fÓ~PöðS {ˆÏf‹ÍÄ x­ˆ7§âiyiñÒ¡ŠGB¤*^:…x$UñÈ•Ä›ËQó´xˆ.Ï`Ñ¢Ý[1ñt$&â Å ê:ˆ7+kŸŠ§eñN(^8y"^KÅÃØD<//¬‡Š‡UÃÄóù­^[¡Õ«šÓ­^t_¯w¦Aàf¶Í³ß2ßm÷Ù£ýÚ›~mgÐúf‚ìý½íånßÙ´²šÝuoö¬î… ¿ˆÀ†xê~.ú©ª[MukD·%ÕMkLë–U7ªn$UÝÒ)t#©êF®|¤Ûla»XèVÕݵÁþsu3×-uÓ‘ ƒnˆU·ZFéÔë6ãºiÐÍWétCªº*r@·pòD·D;¬ºalÕÍW¶ˆ
+‡ngÞ˃na=Ó «ºa4èæsÕmÌD-ý‹ì|àE6º¯ŸŠj‘ÿ^\Íæù}öÅʵ-®äÁ¿¹ý@­B}jʃUˆÕªñ·yÀª¨ðA«æ­Üij•ÖXÆëT­J‡j Õ*’ªUéV‘T­"W>²Jž¼ù<m¢K¬ªÍuuy·‰¿ÞÎ*‰Y…xB«‚º«ª• G­Ò2ˆUH'´*œ¼R¦ŠZ…±‰U_lUXíÄ°j˜U>?ê濬×QOÛ0ð¯í)‘Š“4MÚ4$4Ml{F]) µ¨ÐM|ûÝÙwŽÝùR5°’_ç·‹REå RÝÖ+ÕÉØFŒÞ)·wû•ûHrÍ©'˶÷Apù‰7Àõõíçb‘_ðçË/ƒ 0M~}ûÍÙrs—ý¼±§é1~Mµ/¯ÔÒUU¾ýe¯ÿTtn"7ç[Q»“^èÏ*ßóUŸŸ·;—Úî°¤ÆÊݱ¦E›¿@Qu¨O-j´¾F,…¢Ö-UE•ÓÝ_:QA(¢‚TDM§**HETpåQé1ãž7%ªF§ˆjx1UÔ‰*3!Q5žPÔ ®^Ô¦ìø‰*e
+endstream endobj 421 0 obj <</Contents 422 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 460 0 R/Resources<</ExtGState<</GS0 477 0 R>>/Font<</T1_0 468 0 R/T1_1 470 0 R/T1_2 467 0 R/T1_3 425 0 R/T1_4 466 0 R>>/ProcSet[/PDF/Text]>>/Rotate 0/Type/Page>> endobj 422 0 obj <</Filter/FlateDecode/Length 855>>stream
+H‰œ–Ms7†ÿJ¥Ã
+µ>ZÒ1T(NN<E@¥ŒYˆSØ&kÊÿ>ÝÒŒgf½Z åÚñ¼jõÛZÚy>€­»Oðìå©…O7ðlÀ¿- ¡k£«
+D2d­‡TÐxg †KP ‡k¶Ë"ƒ‹†|MŽ&£‡á¨Ãéï5àÅ
+endstream endobj 423 0 obj <</BaseFont/Times-Italic/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 424 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444]>> endobj 424 0 obj <</Ascent 699/CapHeight 653/Descent -205/Flags 98/FontBBox[-169 -217 1010 883]/FontName/Times-Italic/ItalicAngle -15.5/StemH 76/StemV 76/Type/FontDescriptor/XHeight 441>> endobj 425 0 obj <</BaseFont/Times-Bold/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 426 0 R/LastChar 121/Subtype/Type1/Type/Font/Widths[250 333 555 500 500 1000 833 278 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500]>> endobj 426 0 obj <</Ascent 699/CapHeight 676/Descent -205/Flags 262178/FontBBox[-168 -218 1000 935]/FontName/Times-Bold/ItalicAngle 0/StemH 139/StemV 139/Type/FontDescriptor/XHeight 461>> endobj 427 0 obj <</CharProcs 431 0 R/Encoding 430 0 R/FirstChar 0/FontBBox[0 0 1 1]/FontMatrix[0.01087 0 0 -0.01087 0 0]/LastChar 0/Name/T9/Resources 429 0 R/Subtype/Type3/ToUnicode 428 0 R/Type/Font/Widths[21]>> endobj 428 0 obj <</Filter/FlateDecode/Length 211>>stream
+hÞTP»nÃ0 ÜõtìN /éâ!ÔIvE¢1%Ðòà¿ä:):ð
+0
+endstream endobj 429 0 obj <</ProcSet[/PDF/ImageB]>> endobj 430 0 obj <</Differences[0/g3]/Type/Encoding>> endobj 431 0 obj <</g3 432 0 R>> endobj 432 0 obj <</Filter/FlateDecode/Length 66>>stream
+hÞ22T0
+endstream endobj 433 0 obj <</BaseFont/AKGHIP+Symbol/Encoding 437 0 R/FirstChar 2/FontDescriptor 435 0 R/LastChar 128/Subtype/Type1/ToUnicode 434 0 R/Type/Font/Widths[987 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 460]>> endobj 434 0 obj <</Filter/FlateDecode/Length 246>>stream
+hÞTP=oÄ Ýù¯ê
+endstream endobj 435 0 obj <</Ascent 0/CapHeight 0/CharSet(/space/bullet/arrowright/lessequal/less)/Descent 0/Flags 4/FontBBox[-180 -293 1090 1010]/FontFile3 436 0 R/FontName/AKGHIP+Symbol/ItalicAngle 0/StemH 92/StemV 85/Type/FontDescriptor>> endobj 436 0 obj <</Filter/FlateDecode/Length 376/Subtype/Type1C>>stream
+hÞbd`ab`ddäsôv÷ð ЮÌMÊω¨ÿeü!ÎòCŽGì·Çï¿®ýjc•e`Xþ…÷{0ÿ÷8ï©‚ó~H 1°02r‰ä—椧–&æ$å—e¦g”8çT‚
+Éš
+†–¦: ÒLZ‚HK0i®à˜’Ÿ”ª\Y\’š[¬à™—œ_T_”X’š¢§à˜“£
+endstream endobj 437 0 obj <</Differences[2/arrowright/lessequal 32/space 60/less 128/bullet]/Type/Encoding>> endobj 438 0 obj <</CharProcs 441 0 R/Encoding 440 0 R/FirstChar 0/FontBBox[6 -60 74 0]/FontMatrix[0.01205 0 0 -0.01205 0 0]/LastChar 0/Name/T10/Resources 439 0 R/Subtype/Type3/Type/Font/Widths[81]>> endobj 439 0 obj <</ProcSet[/PDF/ImageB]>> endobj 440 0 obj <</Differences[0/barb2right]/Type/Encoding>> endobj 441 0 obj <</barb2right 442 0 R>> endobj 442 0 obj <</Filter/FlateDecode/Length 168>>stream
+hÞ²0T0P0SÐ53P072S ¹
+¹Ì,€,° NÎåròäÒW0³àÒ÷P03àÒw
+pV0äÒ÷ôU()*MåòtáúÿÿÿæÿðÊøÁ
+endstream endobj 443 0 obj <</Nums[0 444 0 R]>> endobj 444 0 obj <</S/D>> endobj 445 0 obj <</Count 123/Kids[446 0 R 457 0 R]/Type/Pages>> endobj 446 0 obj <</Count 100/Kids[447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R]/Parent 445 0 R/Type/Pages>> endobj 447 0 obj <</Count 10/Kids[465 0 R 1 0 R 6 0 R 11 0 R 66 0 R 129 0 R 189 0 R 191 0 R 193 0 R 195 0 R]/Parent 446 0 R/Type/Pages>> endobj 448 0 obj <</Count 10/Kids[197 0 R 199 0 R 201 0 R 203 0 R 205 0 R 207 0 R 209 0 R 211 0 R 213 0 R 215 0 R]/Parent 446 0 R/Type/Pages>> endobj 449 0 obj <</Count 10/Kids[217 0 R 219 0 R 221 0 R 223 0 R 225 0 R 227 0 R 229 0 R 231 0 R 233 0 R 235 0 R]/Parent 446 0 R/Type/Pages>> endobj 450 0 obj <</Count 10/Kids[237 0 R 239 0 R 241 0 R 243 0 R 245 0 R 247 0 R 249 0 R 251 0 R 253 0 R 255 0 R]/Parent 446 0 R/Type/Pages>> endobj 451 0 obj <</Count 10/Kids[257 0 R 259 0 R 261 0 R 263 0 R 265 0 R 267 0 R 269 0 R 271 0 R 273 0 R 275 0 R]/Parent 446 0 R/Type/Pages>> endobj 452 0 obj <</Count 10/Kids[277 0 R 279 0 R 281 0 R 283 0 R 285 0 R 287 0 R 289 0 R 291 0 R 293 0 R 295 0 R]/Parent 446 0 R/Type/Pages>> endobj 453 0 obj <</Count 10/Kids[297 0 R 299 0 R 301 0 R 303 0 R 305 0 R 307 0 R 309 0 R 311 0 R 313 0 R 315 0 R]/Parent 446 0 R/Type/Pages>> endobj 454 0 obj <</Count 10/Kids[317 0 R 319 0 R 321 0 R 323 0 R 325 0 R 327 0 R 329 0 R 331 0 R 333 0 R 335 0 R]/Parent 446 0 R/Type/Pages>> endobj 455 0 obj <</Count 10/Kids[337 0 R 339 0 R 341 0 R 343 0 R 345 0 R 347 0 R 349 0 R 351 0 R 353 0 R 355 0 R]/Parent 446 0 R/Type/Pages>> endobj 456 0 obj <</Count 10/Kids[357 0 R 359 0 R 361 0 R 363 0 R 365 0 R 367 0 R 369 0 R 371 0 R 373 0 R 375 0 R]/Parent 446 0 R/Type/Pages>> endobj 457 0 obj <</Count 23/Kids[458 0 R 459 0 R 460 0 R]/Parent 445 0 R/Type/Pages>> endobj 458 0 obj <</Count 10/Kids[377 0 R 379 0 R 381 0 R 383 0 R 385 0 R 387 0 R 389 0 R 391 0 R 393 0 R 395 0 R]/Parent 457 0 R/Type/Pages>> endobj 459 0 obj <</Count 10/Kids[397 0 R 399 0 R 401 0 R 403 0 R 405 0 R 407 0 R 409 0 R 411 0 R 413 0 R 415 0 R]/Parent 457 0 R/Type/Pages>> endobj 460 0 obj <</Count 3/Kids[417 0 R 419 0 R 421 0 R]/Parent 457 0 R/Type/Pages>> endobj 461 0 obj <</Length 4035/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TS 125 469 - V12.4.0 - Universal Mobile Telecommunications System (UMTS); UTRAN Iuh interface Home Node B (HNB) Application Part (HNBAP) signalling (3GPP TS 25.469 version 12.4.0 Release 12)</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>TSGR</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ <dc:description>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TS 125 469 - V12.4.0</rdf:li>
+ </rdf:Alt>
+ </dc:description>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/">
+ <xmp:CreateDate>2015-04-08T13:55:50+02:00</xmp:CreateDate>
+ <xmp:CreatorTool>ETSI Secretariat</xmp:CreatorTool>
+ <xmp:ModifyDate>2015-04-08T15:30:08+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2015-04-08T15:30:08+02:00</xmp:MetadataDate>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Acrobat Distiller 10.0.0 (Windows)</pdf:Producer>
+ <pdf:Keywords>UMTS</pdf:Keywords>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
+ <xmpMM:DocumentID>uuid:1d0fe7b5-1b46-4918-b621-7991de48cf55</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:27e97f9b-0ded-4517-8c64-45ea987aa207</xmpMM:InstanceID>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 462 0 obj <</Author(TSGR)/CreationDate(D:20150408135550+02'00')/Creator(ETSI Secretariat)/Keywords(UMTS)/ModDate(D:20150408153008+02'00')/Producer(Acrobat Distiller 10.0.0 \(Windows\))/Subject(TS 125 469 - V12.4.0)/Title(TS 125 469 - V12.4.0 - Universal Mobile Telecommunications System \(UMTS\); UTRAN Iuh interface Home Node B \(HNB\) Application Part \(HNBAP\) signalling \(3GPP TS 25.469 version 12.4.0 Release 12\))>> endobj xref
+0 463
+0000000000 65535 f
+0000172973 00000 n
+0000173231 00000 n
+0000173365 00000 n
+0000173508 00000 n
+0000173662 00000 n
+0000177123 00000 n
+0000177408 00000 n
+0000177540 00000 n
+0000177677 00000 n
+0000177846 00000 n
+0000181064 00000 n
+0000181690 00000 n
+0000181807 00000 n
+0000181924 00000 n
+0000182041 00000 n
+0000182160 00000 n
+0000182279 00000 n
+0000182398 00000 n
+0000182517 00000 n
+0000182634 00000 n
+0000182751 00000 n
+0000182870 00000 n
+0000182987 00000 n
+0000183104 00000 n
+0000183221 00000 n
+0000183340 00000 n
+0000183459 00000 n
+0000183578 00000 n
+0000183697 00000 n
+0000183814 00000 n
+0000183931 00000 n
+0000184048 00000 n
+0000184165 00000 n
+0000184282 00000 n
+0000184399 00000 n
+0000184516 00000 n
+0000184633 00000 n
+0000184750 00000 n
+0000184867 00000 n
+0000184984 00000 n
+0000185101 00000 n
+0000185218 00000 n
+0000185335 00000 n
+0000185452 00000 n
+0000185569 00000 n
+0000185686 00000 n
+0000185803 00000 n
+0000185920 00000 n
+0000186037 00000 n
+0000186154 00000 n
+0000186271 00000 n
+0000186388 00000 n
+0000186505 00000 n
+0000186622 00000 n
+0000186739 00000 n
+0000186856 00000 n
+0000186973 00000 n
+0000187090 00000 n
+0000187207 00000 n
+0000187324 00000 n
+0000187441 00000 n
+0000187557 00000 n
+0000187672 00000 n
+0000187787 00000 n
+0000187902 00000 n
+0000190814 00000 n
+0000191512 00000 n
+0000191629 00000 n
+0000191746 00000 n
+0000191863 00000 n
+0000191980 00000 n
+0000192097 00000 n
+0000192214 00000 n
+0000192331 00000 n
+0000192448 00000 n
+0000192565 00000 n
+0000192682 00000 n
+0000192801 00000 n
+0000192918 00000 n
+0000193035 00000 n
+0000193152 00000 n
+0000193269 00000 n
+0000193386 00000 n
+0000193503 00000 n
+0000193620 00000 n
+0000193737 00000 n
+0000193854 00000 n
+0000193971 00000 n
+0000194088 00000 n
+0000194205 00000 n
+0000194322 00000 n
+0000194439 00000 n
+0000194556 00000 n
+0000194673 00000 n
+0000194790 00000 n
+0000194907 00000 n
+0000195024 00000 n
+0000195141 00000 n
+0000195258 00000 n
+0000195375 00000 n
+0000195493 00000 n
+0000195611 00000 n
+0000195729 00000 n
+0000195847 00000 n
+0000195965 00000 n
+0000196083 00000 n
+0000196201 00000 n
+0000196319 00000 n
+0000196437 00000 n
+0000196555 00000 n
+0000196673 00000 n
+0000196791 00000 n
+0000196909 00000 n
+0000197027 00000 n
+0000197145 00000 n
+0000197263 00000 n
+0000197381 00000 n
+0000197499 00000 n
+0000197617 00000 n
+0000197735 00000 n
+0000197853 00000 n
+0000197971 00000 n
+0000198089 00000 n
+0000198207 00000 n
+0000198325 00000 n
+0000198442 00000 n
+0000198558 00000 n
+0000198674 00000 n
+0000202105 00000 n
+0000202826 00000 n
+0000202944 00000 n
+0000203062 00000 n
+0000203180 00000 n
+0000203298 00000 n
+0000203416 00000 n
+0000203534 00000 n
+0000203652 00000 n
+0000203770 00000 n
+0000203888 00000 n
+0000204006 00000 n
+0000204124 00000 n
+0000204242 00000 n
+0000204360 00000 n
+0000204478 00000 n
+0000204596 00000 n
+0000204714 00000 n
+0000204832 00000 n
+0000204950 00000 n
+0000205068 00000 n
+0000205186 00000 n
+0000205304 00000 n
+0000205422 00000 n
+0000205540 00000 n
+0000205658 00000 n
+0000205776 00000 n
+0000205894 00000 n
+0000206012 00000 n
+0000206130 00000 n
+0000206248 00000 n
+0000206366 00000 n
+0000206484 00000 n
+0000206602 00000 n
+0000206720 00000 n
+0000206838 00000 n
+0000206956 00000 n
+0000207074 00000 n
+0000207192 00000 n
+0000207310 00000 n
+0000207428 00000 n
+0000207546 00000 n
+0000207664 00000 n
+0000207784 00000 n
+0000207902 00000 n
+0000208020 00000 n
+0000208138 00000 n
+0000208256 00000 n
+0000208374 00000 n
+0000208492 00000 n
+0000208610 00000 n
+0000208728 00000 n
+0000208846 00000 n
+0000208964 00000 n
+0000209082 00000 n
+0000209200 00000 n
+0000209318 00000 n
+0000209436 00000 n
+0000209556 00000 n
+0000209674 00000 n
+0000213694 00000 n
+0000213930 00000 n
+0000215594 00000 n
+0000215856 00000 n
+0000218997 00000 n
+0000219246 00000 n
+0000222699 00000 n
+0000222948 00000 n
+0000226987 00000 n
+0000227223 00000 n
+0000230858 00000 n
+0000231107 00000 n
+0000234840 00000 n
+0000235102 00000 n
+0000238286 00000 n
+0000238548 00000 n
+0000241062 00000 n
+0000241324 00000 n
+0000244880 00000 n
+0000245129 00000 n
+0000247551 00000 n
+0000247800 00000 n
+0000250107 00000 n
+0000250343 00000 n
+0000252064 00000 n
+0000252300 00000 n
+0000255088 00000 n
+0000255337 00000 n
+0000258978 00000 n
+0000259214 00000 n
+0000262097 00000 n
+0000262359 00000 n
+0000266178 00000 n
+0000266440 00000 n
+0000272270 00000 n
+0000272532 00000 n
+0000278875 00000 n
+0000279137 00000 n
+0000285016 00000 n
+0000285265 00000 n
+0000290007 00000 n
+0000290282 00000 n
+0000295730 00000 n
+0000295992 00000 n
+0000300659 00000 n
+0000300908 00000 n
+0000304500 00000 n
+0000304762 00000 n
+0000309804 00000 n
+0000310066 00000 n
+0000314243 00000 n
+0000314479 00000 n
+0000317963 00000 n
+0000318212 00000 n
+0000319846 00000 n
+0000320095 00000 n
+0000323135 00000 n
+0000323397 00000 n
+0000328863 00000 n
+0000329112 00000 n
+0000332155 00000 n
+0000332404 00000 n
+0000336842 00000 n
+0000337091 00000 n
+0000341345 00000 n
+0000341594 00000 n
+0000345875 00000 n
+0000346137 00000 n
+0000350727 00000 n
+0000350989 00000 n
+0000354196 00000 n
+0000354445 00000 n
+0000359452 00000 n
+0000359688 00000 n
+0000363454 00000 n
+0000363703 00000 n
+0000368603 00000 n
+0000368826 00000 n
+0000369977 00000 n
+0000370214 00000 n
+0000371449 00000 n
+0000371673 00000 n
+0000372841 00000 n
+0000373065 00000 n
+0000374252 00000 n
+0000374476 00000 n
+0000375698 00000 n
+0000375922 00000 n
+0000377172 00000 n
+0000377396 00000 n
+0000378493 00000 n
+0000378717 00000 n
+0000379850 00000 n
+0000380074 00000 n
+0000381204 00000 n
+0000381428 00000 n
+0000382717 00000 n
+0000382954 00000 n
+0000384269 00000 n
+0000384493 00000 n
+0000385555 00000 n
+0000385779 00000 n
+0000386951 00000 n
+0000387175 00000 n
+0000388356 00000 n
+0000388580 00000 n
+0000389818 00000 n
+0000390042 00000 n
+0000391227 00000 n
+0000391451 00000 n
+0000393848 00000 n
+0000394072 00000 n
+0000395618 00000 n
+0000395855 00000 n
+0000397799 00000 n
+0000398023 00000 n
+0000399223 00000 n
+0000399460 00000 n
+0000400938 00000 n
+0000401162 00000 n
+0000402575 00000 n
+0000402799 00000 n
+0000404393 00000 n
+0000404617 00000 n
+0000405838 00000 n
+0000406062 00000 n
+0000407460 00000 n
+0000407684 00000 n
+0000409068 00000 n
+0000409292 00000 n
+0000410524 00000 n
+0000410748 00000 n
+0000412091 00000 n
+0000412315 00000 n
+0000413644 00000 n
+0000413868 00000 n
+0000415362 00000 n
+0000415586 00000 n
+0000416871 00000 n
+0000417095 00000 n
+0000418439 00000 n
+0000418663 00000 n
+0000419870 00000 n
+0000420094 00000 n
+0000421188 00000 n
+0000421425 00000 n
+0000422621 00000 n
+0000422845 00000 n
+0000424081 00000 n
+0000424305 00000 n
+0000425550 00000 n
+0000425774 00000 n
+0000427033 00000 n
+0000427257 00000 n
+0000428410 00000 n
+0000428634 00000 n
+0000430013 00000 n
+0000430237 00000 n
+0000431421 00000 n
+0000431645 00000 n
+0000432808 00000 n
+0000433032 00000 n
+0000434315 00000 n
+0000434539 00000 n
+0000435734 00000 n
+0000435958 00000 n
+0000437265 00000 n
+0000437489 00000 n
+0000438966 00000 n
+0000439190 00000 n
+0000440584 00000 n
+0000440808 00000 n
+0000441998 00000 n
+0000442222 00000 n
+0000443236 00000 n
+0000443460 00000 n
+0000444693 00000 n
+0000444917 00000 n
+0000446286 00000 n
+0000446510 00000 n
+0000447562 00000 n
+0000447786 00000 n
+0000448994 00000 n
+0000449218 00000 n
+0000450419 00000 n
+0000450643 00000 n
+0000451967 00000 n
+0000452191 00000 n
+0000453479 00000 n
+0000453703 00000 n
+0000454655 00000 n
+0000454892 00000 n
+0000455953 00000 n
+0000456177 00000 n
+0000457377 00000 n
+0000457601 00000 n
+0000458730 00000 n
+0000458967 00000 n
+0000460049 00000 n
+0000460273 00000 n
+0000461760 00000 n
+0000461984 00000 n
+0000463297 00000 n
+0000463521 00000 n
+0000465172 00000 n
+0000465409 00000 n
+0000466602 00000 n
+0000466826 00000 n
+0000467890 00000 n
+0000468114 00000 n
+0000469153 00000 n
+0000469377 00000 n
+0000470391 00000 n
+0000470615 00000 n
+0000472055 00000 n
+0000472279 00000 n
+0000473778 00000 n
+0000474002 00000 n
+0000474996 00000 n
+0000475232 00000 n
+0000479200 00000 n
+0000479436 00000 n
+0000483907 00000 n
+0000484169 00000 n
+0000488216 00000 n
+0000488478 00000 n
+0000493923 00000 n
+0000494185 00000 n
+0000499313 00000 n
+0000499575 00000 n
+0000503316 00000 n
+0000503552 00000 n
+0000514378 00000 n
+0000514627 00000 n
+0000515553 00000 n
+0000516063 00000 n
+0000516251 00000 n
+0000516761 00000 n
+0000516949 00000 n
+0000517163 00000 n
+0000517445 00000 n
+0000517488 00000 n
+0000517542 00000 n
+0000517575 00000 n
+0000517711 00000 n
+0000518379 00000 n
+0000518696 00000 n
+0000518929 00000 n
+0000519391 00000 n
+0000519491 00000 n
+0000519691 00000 n
+0000519734 00000 n
+0000519796 00000 n
+0000519837 00000 n
+0000520076 00000 n
+0000520114 00000 n
+0000520140 00000 n
+0000520205 00000 n
+0000520349 00000 n
+0000520486 00000 n
+0000520629 00000 n
+0000520772 00000 n
+0000520915 00000 n
+0000521058 00000 n
+0000521201 00000 n
+0000521344 00000 n
+0000521487 00000 n
+0000521630 00000 n
+0000521773 00000 n
+0000521860 00000 n
+0000522003 00000 n
+0000522146 00000 n
+0000522232 00000 n
+0000526346 00000 n
+trailer
+<</Size 463/ID[<57B8B8004FFACAAB73A102D1DC714356><C54F4B9CDEE0C44EB3E46CA07ADAB118>]>>
+startxref
+116
+%%EOF
diff --git a/specs/files/ts_132571v120000p.pdf b/specs/files/ts_132571v120000p.pdf
new file mode 100644
index 0000000..ee3f20f
--- /dev/null
+++ b/specs/files/ts_132571v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_132572v120000p.pdf b/specs/files/ts_132572v120000p.pdf
new file mode 100644
index 0000000..f2cf482
--- /dev/null
+++ b/specs/files/ts_132572v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_132581v120000p.pdf b/specs/files/ts_132581v120000p.pdf
new file mode 100644
index 0000000..2f4ed68
--- /dev/null
+++ b/specs/files/ts_132581v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_132583v120000p.pdf b/specs/files/ts_132583v120000p.pdf
new file mode 100644
index 0000000..f2871b1
--- /dev/null
+++ b/specs/files/ts_132583v120000p.pdf
Binary files differ
diff --git a/specs/files/ts_132584v120000p.pdf b/specs/files/ts_132584v120000p.pdf
new file mode 100644
index 0000000..fdf87e8
--- /dev/null
+++ b/specs/files/ts_132584v120000p.pdf
Binary files differ
diff --git a/specs/iuh-notes.txt b/specs/iuh-notes.txt
new file mode 100644
index 0000000..75fb322
--- /dev/null
+++ b/specs/iuh-notes.txt
@@ -0,0 +1,81 @@
+= Specs =
+
+* TS 25.467: Home Node B Stage 2 (high level overview)
+** Figure 7.2.1 shows the protocol stack
+* TS 25.468: RUA (RANAP User Adaption), ASN.1 "SCCP Like" layer
+* TS 25.469: HNBAP signalling
+* TS 25.444: Iuh data transport (UDP/RTP/GTP use)
+* TS 25.413: RANAP
+
+
+= Protocols =
+
+h2. RANAP
+
+ASN1, BASIC-PER aligned
+
+h3. Classes of Elementary Procedures
+
+* Class 1: EPs with response (success and/or failure)
+* Class 2: EPs without response
+* Class 3: EPs with possibility of multiple responses
+
+h3. Functions
+
+* Paging
+* Common ID management
+* Transport of NAS information
+* Security Mode Control
+* Radio Access Bearer (RAB) Management
+* Iu release
+* Relocating Serving RNC (SRNC)
+* Overload management
+* Reset
+* Location reporting
+* Data volume reporting
+
+h3. Procedures
+
+* Paging
+* Initial UE Message
+* Common ID (tie IMSI of UE to RRC connection)
+* Direct Transfer (like LAPDm)
+* Security Mode Control
+* RAB Assignment (CN->RAN)
+* Iu Release (CN->RAN, clear a connection to a UE)
+* Iu Release Request (RAN->CN, request release)
+*
+
+
+
+== HNBAP ==
+
+ASN1, BASIC-PER aligned
+
+* HNB registration
+** HNB REGISTER REQ/ACC/REK
+** HNB DE-REGISTER
+* UE registration
+** UE REG/ACC/REJ
+** UE DE-REGISTER
+* RNSAP relocation
+** TNL UPD REQ/RESP/REJ
+** HNB CFG XFER REQ/RESP
+* error handling
+** ERROR IND
+
+
+
+* SABP
+* PCAP
+
+= SCTP adaption layers
+
+== RUA ==
+
+ASN1, BASIC-PER aligned
+
+* one association for each UE
+* CONNECT / TRANSFER / DISCONNECT / CONNECTIONLESS TRANSFER / ERROR
+
+== PUA ==
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..55bca01
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,10 @@
+hnbap_decoder.c
+hnbap_encoder.c
+
+rua_decoder.c
+rua_encoder.c
+
+ranap_decoder.c
+ranap_encoder.c
+
+hnbgw
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..d815394
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,94 @@
+SUBDIRS = hnbap rua ranap tests
+
+# Build {hnbap,rua,ranap}_{encoder,decoder}.c using asn1tostruct
+ASN1_ROOT = $(top_srcdir)/asn1
+ASN1TOSTRUCT = $(ASN1_ROOT)/utils/asn1tostruct.py
+BUILT_SOURCES = hnbap_decoder.c hnbap_encoder.c rua_decoder.c rua_encoder.c \
+ gen_hnbap.stamp gen_rua.stamp gen_ranap.stamp
+
+gen_hnbap.stamp: $(ASN1_ROOT)/hnbap/HNBAP-PDU-Contents.asn $(ASN1TOSTRUCT)
+ $(ASN1TOSTRUCT) -f $<
+# We also need to replace the include in the newly generated .c files:
+ sed -i 's,^#include "hnbap_ies_defs.h",#include <osmocom/hnbap/hnbap_ies_defs.h>,' hnbap_encoder.c hnbap_decoder.c
+ sed -i 's,^#include "hnbap_common.h",#include <osmocom/hnbap/hnbap_common.h>,' hnbap_encoder.c hnbap_decoder.c hnbap_ies_defs.h
+ mv hnbap_ies_defs.h $(top_builddir)/include/osmocom/hnbap/
+# this is ugly ^. hnbap_ies_defs.h is generated from asn1tostruct.py here, but
+# it should live in include/osmocom/hnbap/.
+ touch $(top_builddir)/src/$@
+
+hnbap_decoder.c hnbap_encoder.c: gen_hnbap.stamp
+
+gen_rua.stamp: $(ASN1_ROOT)/rua/RUA-PDU-Contents.asn $(ASN1TOSTRUCT)
+ $(ASN1TOSTRUCT) -p RUA_ -f $<
+# We also need to replace the include in the newly generated .c files:
+ sed -i 's,^#include "rua_ies_defs.h",#include <osmocom/rua/rua_ies_defs.h>,' rua_encoder.c rua_decoder.c
+ sed -i 's,^#include "rua_common.h",#include <osmocom/rua/rua_common.h>,' rua_encoder.c rua_decoder.c rua_ies_defs.h
+ mv rua_ies_defs.h $(top_builddir)/include/osmocom/rua/
+# this is ugly ^. rua_ies_defs.h is generated from asn1tostruct.py here, but
+# it should live in include/osmocom/rua/.
+ touch $(top_builddir)/src/$@
+
+rua_decoder.c rua_encoder.c: gen_rua.stamp
+
+gen_ranap.stamp: $(ASN1_ROOT)/ranap/RANAP-PDU-Contents.asn $(ASN1TOSTRUCT)
+ $(ASN1TOSTRUCT) -p RANAP_ -f $<
+# We also need to replace the include in the newly generated .c files:
+ sed -i 's,^#include "ranap_ies_defs.h",#include <osmocom/ranap/ranap_ies_defs.h>,' ranap_encoder.c ranap_decoder.c
+ sed -i 's,^#include "ranap_common.h",#include <osmocom/ranap/ranap_common.h>,' ranap_encoder.c ranap_decoder.c ranap_ies_defs.h
+ mv ranap_ies_defs.h $(top_builddir)/include/osmocom/ranap/
+# this is ugly ^. ranap_ies_defs.h is generated from asn1tostruct.py here, but
+# it should live in include/osmocom/ranap/.
+ touch $(top_builddir)/src/$@
+
+ranap_decoder.c ranap_encoder.c: gen_ranap.stamp
+
+AM_CFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include \
+ $(OSMOCORE_CFLAGS) $(OSMOVTY_CFLAGS) $(OSMOGSM_CFLAGS) \
+ $(OSMONETIF_CFLAGS) $(ASN1C_CFLAGS) $(OSMOSIGTRAN_CFLAGS)
+COMMON_LDADD = -lsctp
+
+# build the shared RANAP library
+#
+RANAP_LIBVERSION=1:0:0
+lib_LTLIBRARIES = libosmo-ranap.la
+libosmo_ranap_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(RANAP_LIBVERSION)
+libosmo_ranap_la_LIBADD = $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(OSMOSIGTRAN_LIBS) \
+ $(ASN1C_LIBS) $(COMMON_LDADD) ranap/libosmo-asn1-ranap.la
+libosmo_ranap_la_SOURCES = ranap_common.c ranap_encoder.c ranap_decoder.c ranap_msg_factory.c iu_helpers.c \
+ ranap_common_cn.c iu_client.c iu_client_vty.c
+
+# build the actual HomeNodeB gateway
+#
+bin_PROGRAMS = osmo-hnbgw
+
+osmo_hnbgw_SOURCES = hnbap_encoder.c hnbap_decoder.c hnbap_common.c \
+ rua_encoder.c rua_decoder.c rua_common.c \
+ rua_msg_factory.c \
+ hnbgw.c hnbgw_hnbap.c hnbgw_rua.c hnbgw_ranap.c \
+ hnbgw_vty.c \
+ context_map.c hnbgw_cn.c
+
+osmo_hnbgw_LDADD = $(OSMOCORE_LIBS) $(OSMOVTY_LIBS) $(OSMOGSM_LIBS) \
+ $(ASN1C_LIBS) $(OSMOSIGTRAN_LIBS) $(COMMON_LDADD) \
+ $(OSMONETIF_LIBS) \
+ hnbap/libosmo-asn1-hnbap.a rua/libosmo-asn1-rua.a \
+ libosmo-ranap.la
+
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+ $(MAKE) -C hnbap regen
+ $(MAKE) -C ranap regen
+ $(MAKE) -C rua regen
+
+DISTCLEANFILES = \
+ hnbap_decoder.c \
+ hnbap_encoder.c \
+ rua_decoder.c \
+ rua_encoder.c \
+ ranap_decoder.c \
+ ranap_encoder.c \
+ gen_hnbap.stamp \
+ gen_rua.stamp \
+ gen_ranap.stamp
diff --git a/src/context_map.c b/src/context_map.c
new file mode 100644
index 0000000..0960cb9
--- /dev/null
+++ b/src/context_map.c
@@ -0,0 +1,172 @@
+/* Mapper between RUA ContextID (24 bit, per HNB) and the SUA/SCCP
+ * Connection ID (32bit, per signalling link) */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/* an expired mapping is destroyed after 1..2 * EXPIRY_TIMER_SECS */
+#define EXPIRY_TIMER_SECS 23
+
+#include <osmocom/core/timer.h>
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/context_map.h>
+
+/* is a given SCCP USER SAP Connection ID in use for a given CN link? */
+static int cn_id_in_use(struct hnbgw_cnlink *cn, uint32_t id)
+{
+ struct hnbgw_context_map *map;
+
+ llist_for_each_entry(map, &cn->map_list, cn_list) {
+ if (map->scu_conn_id == id)
+ return 1;
+ }
+ return 0;
+}
+
+/* try to allocate a new SCCP User SAP Connection ID */
+static int alloc_cn_conn_id(struct hnbgw_cnlink *cn, uint32_t *id_out)
+{
+ uint32_t i;
+ uint32_t id;
+
+ for (i = 0; i < 0xffffffff; i++) {
+ id = cn->next_conn_id++;
+ if (!cn_id_in_use(cn, id)) {
+ *id_out = id;
+ return 1;
+ }
+ }
+ return -1;
+}
+
+/* Map from a HNB + ContextID to the SCCP-side Connection ID */
+struct hnbgw_context_map *
+context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id,
+ bool is_ps,
+ struct hnbgw_cnlink *cn_if_new)
+{
+ struct hnbgw_context_map *map;
+ uint32_t new_scu_conn_id;
+
+ llist_for_each_entry(map, &hnb->map_list, hnb_list) {
+ if (map->state != MAP_S_ACTIVE)
+ continue;
+ if (map->cn_link != cn_if_new) {
+ continue;
+ }
+ if (map->rua_ctx_id == rua_ctx_id
+ && map->is_ps == is_ps) {
+ return map;
+ }
+ }
+
+ if (alloc_cn_conn_id(cn_if_new, &new_scu_conn_id) < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Unable to allocate CN connection ID\n");
+ return NULL;
+ }
+
+ LOGP(DMAIN, LOGL_INFO, "Creating new Mapping RUA CTX %p/%u <-> SCU Conn ID %p/%u\n",
+ hnb, rua_ctx_id, cn_if_new, new_scu_conn_id);
+
+ /* alloate a new map entry */
+ map = talloc_zero(hnb, struct hnbgw_context_map);
+ map->state = MAP_S_NULL;
+ map->cn_link = cn_if_new;
+ map->hnb_ctx = hnb;
+ map->rua_ctx_id = rua_ctx_id;
+ map->is_ps = is_ps;
+ map->scu_conn_id = new_scu_conn_id;
+
+ /* put it into both lists */
+ llist_add_tail(&map->hnb_list, &hnb->map_list);
+ llist_add_tail(&map->cn_list, &cn_if_new->map_list);
+ map->state = MAP_S_ACTIVE;
+
+ return map;
+}
+
+/* Map from a CN + Connection ID to HNB + Context ID */
+struct hnbgw_context_map *
+context_map_by_cn(struct hnbgw_cnlink *cn, uint32_t scu_conn_id)
+{
+ struct hnbgw_context_map *map;
+
+ llist_for_each_entry(map, &cn->map_list, cn_list) {
+ if (map->state != MAP_S_ACTIVE)
+ continue;
+ if (map->scu_conn_id == scu_conn_id) {
+ return map;
+ }
+ }
+ /* we don't allocate new mappings in the CN->HNB
+ * direction, as the RUA=SCCP=SUA connections are always
+ * established from HNB towards CN. */
+ LOGP(DMAIN, LOGL_NOTICE, "Unable to resolve map for CN "
+ "connection ID %p/%u\n", cn, scu_conn_id);
+ return NULL;
+}
+
+void context_map_deactivate(struct hnbgw_context_map *map)
+{
+ /* set the state to reserved. We still show up in the list and
+ * avoid re-allocation of the context-id until we are cleaned up
+ * by the context_map garbage collector timer */
+
+ if (map->state != MAP_S_RESERVED2)
+ map->state = MAP_S_RESERVED1;
+}
+
+static struct osmo_timer_list context_map_tmr;
+
+static void context_map_tmr_cb(void *data)
+{
+ struct hnb_gw *gw = data;
+ struct hnbgw_cnlink *cn = gw->sccp.cnlink;
+ struct hnbgw_context_map *map;
+
+ DEBUGP(DMAIN, "Running context mapper garbage collection\n");
+ llist_for_each_entry(map, &cn->map_list, cn_list) {
+ switch (map->state) {
+ case MAP_S_RESERVED1:
+ /* first time we see this reserved
+ * entry: mark it for stage 2 */
+ map->state = MAP_S_RESERVED2;
+ break;
+ case MAP_S_RESERVED2:
+ /* first time we see this reserved
+ * entry: remove it */
+ map->state = MAP_S_NULL;
+ llist_del(&map->cn_list);
+ llist_del(&map->hnb_list);
+ talloc_free(map);
+ break;
+ default:
+ break;
+ }
+ }
+ /* re-schedule this timer */
+ osmo_timer_schedule(&context_map_tmr, EXPIRY_TIMER_SECS, 0);
+}
+
+int context_map_init(struct hnb_gw *gw)
+{
+ context_map_tmr.cb = context_map_tmr_cb;
+ context_map_tmr.data = gw;
+ osmo_timer_schedule(&context_map_tmr, EXPIRY_TIMER_SECS, 0);
+}
diff --git a/src/hnbap/.gitignore b/src/hnbap/.gitignore
new file mode 100644
index 0000000..3698ce1
--- /dev/null
+++ b/src/hnbap/.gitignore
@@ -0,0 +1,60 @@
+ANY.c
+ANY.h
+BIT_STRING.c
+BIT_STRING.h
+INTEGER.c
+INTEGER.h
+Makefile.am.sample
+NativeEnumerated.c
+NativeEnumerated.h
+NativeInteger.c
+NativeInteger.h
+OBJECT_IDENTIFIER.c
+OBJECT_IDENTIFIER.h
+OCTET_STRING.c
+OCTET_STRING.h
+asn_SEQUENCE_OF.c
+asn_SEQUENCE_OF.h
+asn_SET_OF.c
+asn_SET_OF.h
+asn_application.h
+asn_codecs.h
+asn_codecs_prim.c
+asn_codecs_prim.h
+asn_internal.h
+asn_system.h
+ber_decoder.c
+ber_decoder.h
+ber_tlv_length.c
+ber_tlv_length.h
+ber_tlv_tag.c
+ber_tlv_tag.h
+constr_CHOICE.c
+constr_CHOICE.h
+constr_SEQUENCE.c
+constr_SEQUENCE.h
+constr_SEQUENCE_OF.c
+constr_SEQUENCE_OF.h
+constr_SET_OF.c
+constr_SET_OF.h
+constr_TYPE.c
+constr_TYPE.h
+constraints.c
+constraints.h
+converter-sample.c
+der_encoder.c
+der_encoder.h
+per_decoder.c
+per_decoder.h
+per_encoder.c
+per_encoder.h
+per_opentype.c
+per_opentype.h
+per_support.c
+per_support.h
+xer_decoder.c
+xer_decoder.h
+xer_encoder.c
+xer_encoder.h
+xer_support.c
+xer_support.h
diff --git a/src/hnbap/Access-stratum-release-indicator.c b/src/hnbap/Access-stratum-release-indicator.c
new file mode 100644
index 0000000..cf16e39
--- /dev/null
+++ b/src/hnbap/Access-stratum-release-indicator.c
@@ -0,0 +1,176 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Access-stratum-release-indicator.h>
+
+int
+Access_stratum_release_indicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Access_stratum_release_indicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+Access_stratum_release_indicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Access_stratum_release_indicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Access_stratum_release_indicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Access_stratum_release_indicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Access_stratum_release_indicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Access_stratum_release_indicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Access_stratum_release_indicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Access_stratum_release_indicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Access_stratum_release_indicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Access_stratum_release_indicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Access_stratum_release_indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Access_stratum_release_indicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Access_stratum_release_indicator_value2enum_1[] = {
+ { 0, 3, "r99" },
+ { 1, 5, "rel-4" },
+ { 2, 5, "rel-5" },
+ { 3, 5, "rel-6" },
+ { 4, 5, "rel-7" },
+ { 5, 16, "rel-8-and-beyond" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_Access_stratum_release_indicator_enum2value_1[] = {
+ 0, /* r99(0) */
+ 1, /* rel-4(1) */
+ 2, /* rel-5(2) */
+ 3, /* rel-6(3) */
+ 4, /* rel-7(4) */
+ 5 /* rel-8-and-beyond(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_Access_stratum_release_indicator_specs_1 = {
+ asn_MAP_Access_stratum_release_indicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_Access_stratum_release_indicator_enum2value_1, /* N => "tag"; sorted by N */
+ 6, /* Number of elements in the maps */
+ 7, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_Access_stratum_release_indicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Access_stratum_release_indicator = {
+ "Access-stratum-release-indicator",
+ "Access-stratum-release-indicator",
+ Access_stratum_release_indicator_free,
+ Access_stratum_release_indicator_print,
+ Access_stratum_release_indicator_constraint,
+ Access_stratum_release_indicator_decode_ber,
+ Access_stratum_release_indicator_encode_der,
+ Access_stratum_release_indicator_decode_xer,
+ Access_stratum_release_indicator_encode_xer,
+ Access_stratum_release_indicator_decode_uper,
+ Access_stratum_release_indicator_encode_uper,
+ Access_stratum_release_indicator_decode_aper,
+ Access_stratum_release_indicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Access_stratum_release_indicator_tags_1,
+ sizeof(asn_DEF_Access_stratum_release_indicator_tags_1)
+ /sizeof(asn_DEF_Access_stratum_release_indicator_tags_1[0]), /* 1 */
+ asn_DEF_Access_stratum_release_indicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_Access_stratum_release_indicator_tags_1)
+ /sizeof(asn_DEF_Access_stratum_release_indicator_tags_1[0]), /* 1 */
+ &asn_PER_type_Access_stratum_release_indicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_Access_stratum_release_indicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/AccessResult.c b/src/hnbap/AccessResult.c
new file mode 100644
index 0000000..705f6b2
--- /dev/null
+++ b/src/hnbap/AccessResult.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/AccessResult.h>
+
+int
+AccessResult_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+AccessResult_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+AccessResult_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+AccessResult_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+AccessResult_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+AccessResult_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+AccessResult_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+AccessResult_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+AccessResult_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+AccessResult_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+AccessResult_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+AccessResult_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ AccessResult_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_AccessResult_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_AccessResult_value2enum_1[] = {
+ { 0, 7, "allowed" },
+ { 1, 10, "notAllowed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_AccessResult_enum2value_1[] = {
+ 0, /* allowed(0) */
+ 1 /* notAllowed(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_AccessResult_specs_1 = {
+ asn_MAP_AccessResult_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_AccessResult_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_AccessResult_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AccessResult = {
+ "AccessResult",
+ "AccessResult",
+ AccessResult_free,
+ AccessResult_print,
+ AccessResult_constraint,
+ AccessResult_decode_ber,
+ AccessResult_encode_der,
+ AccessResult_decode_xer,
+ AccessResult_encode_xer,
+ AccessResult_decode_uper,
+ AccessResult_encode_uper,
+ AccessResult_decode_aper,
+ AccessResult_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_AccessResult_tags_1,
+ sizeof(asn_DEF_AccessResult_tags_1)
+ /sizeof(asn_DEF_AccessResult_tags_1[0]), /* 1 */
+ asn_DEF_AccessResult_tags_1, /* Same as above */
+ sizeof(asn_DEF_AccessResult_tags_1)
+ /sizeof(asn_DEF_AccessResult_tags_1[0]), /* 1 */
+ &asn_PER_type_AccessResult_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_AccessResult_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/AdditionalNeighbourInfoList.c b/src/hnbap/AdditionalNeighbourInfoList.c
new file mode 100644
index 0000000..7049be2
--- /dev/null
+++ b/src/hnbap/AdditionalNeighbourInfoList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/AdditionalNeighbourInfoList.h>
+
+static asn_per_constraints_t asn_PER_type_AdditionalNeighbourInfoList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_AdditionalNeighbourInfoList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_HNBConfigInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_AdditionalNeighbourInfoList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_AdditionalNeighbourInfoList_specs_1 = {
+ sizeof(struct AdditionalNeighbourInfoList),
+ offsetof(struct AdditionalNeighbourInfoList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_AdditionalNeighbourInfoList = {
+ "AdditionalNeighbourInfoList",
+ "AdditionalNeighbourInfoList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_AdditionalNeighbourInfoList_tags_1,
+ sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1)
+ /sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1[0]), /* 1 */
+ asn_DEF_AdditionalNeighbourInfoList_tags_1, /* Same as above */
+ sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1)
+ /sizeof(asn_DEF_AdditionalNeighbourInfoList_tags_1[0]), /* 1 */
+ &asn_PER_type_AdditionalNeighbourInfoList_constr_1,
+ asn_MBR_AdditionalNeighbourInfoList_1,
+ 1, /* Single element */
+ &asn_SPC_AdditionalNeighbourInfoList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/AltitudeAndDirection.c b/src/hnbap/AltitudeAndDirection.c
new file mode 100644
index 0000000..afc4f6e
--- /dev/null
+++ b/src/hnbap/AltitudeAndDirection.c
@@ -0,0 +1,261 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/AltitudeAndDirection.h>
+
+static int
+directionOfAltitude_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+directionOfAltitude_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+directionOfAltitude_2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+directionOfAltitude_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static int
+memb_altitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 32767l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_directionOfAltitude_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_altitude_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 15, 15, 0l, 32767l } /* (0..32767) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_directionOfAltitude_value2enum_2[] = {
+ { 0, 6, "height" },
+ { 1, 5, "depth" }
+};
+static const unsigned int asn_MAP_directionOfAltitude_enum2value_2[] = {
+ 1, /* depth(1) */
+ 0 /* height(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_directionOfAltitude_specs_2 = {
+ asn_MAP_directionOfAltitude_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_directionOfAltitude_enum2value_2, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_directionOfAltitude_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2 = {
+ "directionOfAltitude",
+ "directionOfAltitude",
+ directionOfAltitude_2_free,
+ directionOfAltitude_2_print,
+ directionOfAltitude_2_constraint,
+ directionOfAltitude_2_decode_ber,
+ directionOfAltitude_2_encode_der,
+ directionOfAltitude_2_decode_xer,
+ directionOfAltitude_2_encode_xer,
+ directionOfAltitude_2_decode_uper,
+ directionOfAltitude_2_encode_uper,
+ directionOfAltitude_2_decode_aper,
+ directionOfAltitude_2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_directionOfAltitude_tags_2,
+ sizeof(asn_DEF_directionOfAltitude_tags_2)
+ /sizeof(asn_DEF_directionOfAltitude_tags_2[0]) - 1, /* 1 */
+ asn_DEF_directionOfAltitude_tags_2, /* Same as above */
+ sizeof(asn_DEF_directionOfAltitude_tags_2)
+ /sizeof(asn_DEF_directionOfAltitude_tags_2[0]), /* 2 */
+ &asn_PER_type_directionOfAltitude_constr_2,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_directionOfAltitude_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_AltitudeAndDirection_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct AltitudeAndDirection, directionOfAltitude),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_directionOfAltitude_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "directionOfAltitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct AltitudeAndDirection, altitude),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_altitude_constraint_1,
+ &asn_PER_memb_altitude_constr_5,
+ 0,
+ "altitude"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_AltitudeAndDirection_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_AltitudeAndDirection_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* directionOfAltitude */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altitude */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_AltitudeAndDirection_specs_1 = {
+ sizeof(struct AltitudeAndDirection),
+ offsetof(struct AltitudeAndDirection, _asn_ctx),
+ asn_MAP_AltitudeAndDirection_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_AltitudeAndDirection = {
+ "AltitudeAndDirection",
+ "AltitudeAndDirection",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_AltitudeAndDirection_tags_1,
+ sizeof(asn_DEF_AltitudeAndDirection_tags_1)
+ /sizeof(asn_DEF_AltitudeAndDirection_tags_1[0]), /* 1 */
+ asn_DEF_AltitudeAndDirection_tags_1, /* Same as above */
+ sizeof(asn_DEF_AltitudeAndDirection_tags_1)
+ /sizeof(asn_DEF_AltitudeAndDirection_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_AltitudeAndDirection_1,
+ 2, /* Elements count */
+ &asn_SPC_AltitudeAndDirection_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/BackoffTimer.c b/src/hnbap/BackoffTimer.c
new file mode 100644
index 0000000..81f0b56
--- /dev/null
+++ b/src/hnbap/BackoffTimer.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/BackoffTimer.h>
+
+int
+BackoffTimer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 3600l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+BackoffTimer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+BackoffTimer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+BackoffTimer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+BackoffTimer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+BackoffTimer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+BackoffTimer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+BackoffTimer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+BackoffTimer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+BackoffTimer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+BackoffTimer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+BackoffTimer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ BackoffTimer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_BackoffTimer_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0l, 3600l } /* (0..3600) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_BackoffTimer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BackoffTimer = {
+ "BackoffTimer",
+ "BackoffTimer",
+ BackoffTimer_free,
+ BackoffTimer_print,
+ BackoffTimer_constraint,
+ BackoffTimer_decode_ber,
+ BackoffTimer_encode_der,
+ BackoffTimer_decode_xer,
+ BackoffTimer_encode_xer,
+ BackoffTimer_decode_uper,
+ BackoffTimer_encode_uper,
+ BackoffTimer_decode_aper,
+ BackoffTimer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_BackoffTimer_tags_1,
+ sizeof(asn_DEF_BackoffTimer_tags_1)
+ /sizeof(asn_DEF_BackoffTimer_tags_1[0]), /* 1 */
+ asn_DEF_BackoffTimer_tags_1, /* Same as above */
+ sizeof(asn_DEF_BackoffTimer_tags_1)
+ /sizeof(asn_DEF_BackoffTimer_tags_1[0]), /* 1 */
+ &asn_PER_type_BackoffTimer_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/BindingID.c b/src/hnbap/BindingID.c
new file mode 100644
index 0000000..b806fdf
--- /dev/null
+++ b/src/hnbap/BindingID.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/BindingID.h>
+
+int
+BindingID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+BindingID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+BindingID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+BindingID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+BindingID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+BindingID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+BindingID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+BindingID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+BindingID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+BindingID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+BindingID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+BindingID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ BindingID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_BindingID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 1l, 4l } /* (SIZE(1..4,...)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_BindingID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BindingID = {
+ "BindingID",
+ "BindingID",
+ BindingID_free,
+ BindingID_print,
+ BindingID_constraint,
+ BindingID_decode_ber,
+ BindingID_encode_der,
+ BindingID_decode_xer,
+ BindingID_encode_xer,
+ BindingID_decode_uper,
+ BindingID_encode_uper,
+ BindingID_decode_aper,
+ BindingID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_BindingID_tags_1,
+ sizeof(asn_DEF_BindingID_tags_1)
+ /sizeof(asn_DEF_BindingID_tags_1[0]), /* 1 */
+ asn_DEF_BindingID_tags_1, /* Same as above */
+ sizeof(asn_DEF_BindingID_tags_1)
+ /sizeof(asn_DEF_BindingID_tags_1[0]), /* 1 */
+ &asn_PER_type_BindingID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/CELL-FACHMobilitySupport.c b/src/hnbap/CELL-FACHMobilitySupport.c
new file mode 100644
index 0000000..0ef8524
--- /dev/null
+++ b/src/hnbap/CELL-FACHMobilitySupport.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CELL-FACHMobilitySupport.h>
+
+int
+CELL_FACHMobilitySupport_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CELL_FACHMobilitySupport_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CELL_FACHMobilitySupport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CELL_FACHMobilitySupport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CELL_FACHMobilitySupport_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CELL_FACHMobilitySupport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CELL_FACHMobilitySupport_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CELL_FACHMobilitySupport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CELL_FACHMobilitySupport_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CELL_FACHMobilitySupport_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CELL_FACHMobilitySupport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CELL_FACHMobilitySupport_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CELL_FACHMobilitySupport_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CELL_FACHMobilitySupport_value2enum_1[] = {
+ { 0, 9, "supported" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CELL_FACHMobilitySupport_enum2value_1[] = {
+ 0 /* supported(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CELL_FACHMobilitySupport_specs_1 = {
+ asn_MAP_CELL_FACHMobilitySupport_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CELL_FACHMobilitySupport_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CELL_FACHMobilitySupport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CELL_FACHMobilitySupport = {
+ "CELL-FACHMobilitySupport",
+ "CELL-FACHMobilitySupport",
+ CELL_FACHMobilitySupport_free,
+ CELL_FACHMobilitySupport_print,
+ CELL_FACHMobilitySupport_constraint,
+ CELL_FACHMobilitySupport_decode_ber,
+ CELL_FACHMobilitySupport_encode_der,
+ CELL_FACHMobilitySupport_decode_xer,
+ CELL_FACHMobilitySupport_encode_xer,
+ CELL_FACHMobilitySupport_decode_uper,
+ CELL_FACHMobilitySupport_encode_uper,
+ CELL_FACHMobilitySupport_decode_aper,
+ CELL_FACHMobilitySupport_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CELL_FACHMobilitySupport_tags_1,
+ sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1)
+ /sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1[0]), /* 1 */
+ asn_DEF_CELL_FACHMobilitySupport_tags_1, /* Same as above */
+ sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1)
+ /sizeof(asn_DEF_CELL_FACHMobilitySupport_tags_1[0]), /* 1 */
+ &asn_PER_type_CELL_FACHMobilitySupport_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CELL_FACHMobilitySupport_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CGI.c b/src/hnbap/CGI.c
new file mode 100644
index 0000000..e4b5683
--- /dev/null
+++ b/src/hnbap/CGI.c
@@ -0,0 +1,94 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CGI.h>
+
+static asn_TYPE_member_t asn_MBR_CGI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CGI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct CGI, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct CGI, cI),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cI"
+ },
+ { ATF_POINTER, 1, offsetof(struct CGI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_CGI_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_CGI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CGI_specs_1 = {
+ sizeof(struct CGI),
+ offsetof(struct CGI, _asn_ctx),
+ asn_MAP_CGI_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_CGI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_CGI = {
+ "CGI",
+ "CGI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CGI_tags_1,
+ sizeof(asn_DEF_CGI_tags_1)
+ /sizeof(asn_DEF_CGI_tags_1[0]), /* 1 */
+ asn_DEF_CGI_tags_1, /* Same as above */
+ sizeof(asn_DEF_CGI_tags_1)
+ /sizeof(asn_DEF_CGI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_CGI_1,
+ 4, /* Elements count */
+ &asn_SPC_CGI_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CI.c b/src/hnbap/CI.c
new file mode 100644
index 0000000..efe1b91
--- /dev/null
+++ b/src/hnbap/CI.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CI.h>
+
+int
+CI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+CI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CI = {
+ "CI",
+ "CI",
+ CI_free,
+ CI_print,
+ CI_constraint,
+ CI_decode_ber,
+ CI_encode_der,
+ CI_decode_xer,
+ CI_encode_xer,
+ CI_decode_uper,
+ CI_encode_uper,
+ CI_decode_aper,
+ CI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CI_tags_1,
+ sizeof(asn_DEF_CI_tags_1)
+ /sizeof(asn_DEF_CI_tags_1[0]), /* 1 */
+ asn_DEF_CI_tags_1, /* Same as above */
+ sizeof(asn_DEF_CI_tags_1)
+ /sizeof(asn_DEF_CI_tags_1[0]), /* 1 */
+ &asn_PER_type_CI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/CN-DomainIndicator.c b/src/hnbap/CN-DomainIndicator.c
new file mode 100644
index 0000000..aad8d8f
--- /dev/null
+++ b/src/hnbap/CN-DomainIndicator.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CN-DomainIndicator.h>
+
+int
+CN_DomainIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CN_DomainIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CN_DomainIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CN_DomainIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CN_DomainIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CN_DomainIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CN_DomainIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CN_DomainIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CN_DomainIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CN_DomainIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CN_DomainIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CN_DomainIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CN_DomainIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CN_DomainIndicator_value2enum_1[] = {
+ { 0, 9, "cs-domain" },
+ { 1, 9, "ps-domain" }
+};
+static const unsigned int asn_MAP_CN_DomainIndicator_enum2value_1[] = {
+ 0, /* cs-domain(0) */
+ 1 /* ps-domain(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CN_DomainIndicator_specs_1 = {
+ asn_MAP_CN_DomainIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CN_DomainIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CN_DomainIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CN_DomainIndicator = {
+ "CN-DomainIndicator",
+ "CN-DomainIndicator",
+ CN_DomainIndicator_free,
+ CN_DomainIndicator_print,
+ CN_DomainIndicator_constraint,
+ CN_DomainIndicator_decode_ber,
+ CN_DomainIndicator_encode_der,
+ CN_DomainIndicator_decode_xer,
+ CN_DomainIndicator_encode_xer,
+ CN_DomainIndicator_decode_uper,
+ CN_DomainIndicator_encode_uper,
+ CN_DomainIndicator_decode_aper,
+ CN_DomainIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CN_DomainIndicator_tags_1,
+ sizeof(asn_DEF_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_CN_DomainIndicator_tags_1[0]), /* 1 */
+ asn_DEF_CN_DomainIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_CN_DomainIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_CN_DomainIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CN_DomainIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CSG-Capability.c b/src/hnbap/CSG-Capability.c
new file mode 100644
index 0000000..b451923
--- /dev/null
+++ b/src/hnbap/CSG-Capability.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CSG-Capability.h>
+
+int
+CSG_Capability_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CSG_Capability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CSG_Capability_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CSG_Capability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_Capability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CSG_Capability_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_Capability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CSG_Capability_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_Capability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CSG_Capability_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CSG_Capability_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CSG_Capability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSG_Capability_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CSG_Capability_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CSG_Capability_value2enum_1[] = {
+ { 0, 11, "csg-capable" },
+ { 1, 15, "not-csg-capable" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CSG_Capability_enum2value_1[] = {
+ 0, /* csg-capable(0) */
+ 1 /* not-csg-capable(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CSG_Capability_specs_1 = {
+ asn_MAP_CSG_Capability_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CSG_Capability_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CSG_Capability_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSG_Capability = {
+ "CSG-Capability",
+ "CSG-Capability",
+ CSG_Capability_free,
+ CSG_Capability_print,
+ CSG_Capability_constraint,
+ CSG_Capability_decode_ber,
+ CSG_Capability_encode_der,
+ CSG_Capability_decode_xer,
+ CSG_Capability_encode_xer,
+ CSG_Capability_decode_uper,
+ CSG_Capability_encode_uper,
+ CSG_Capability_decode_aper,
+ CSG_Capability_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CSG_Capability_tags_1,
+ sizeof(asn_DEF_CSG_Capability_tags_1)
+ /sizeof(asn_DEF_CSG_Capability_tags_1[0]), /* 1 */
+ asn_DEF_CSG_Capability_tags_1, /* Same as above */
+ sizeof(asn_DEF_CSG_Capability_tags_1)
+ /sizeof(asn_DEF_CSG_Capability_tags_1[0]), /* 1 */
+ &asn_PER_type_CSG_Capability_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CSG_Capability_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CSG-ID.c b/src/hnbap/CSG-ID.c
new file mode 100644
index 0000000..2be0029
--- /dev/null
+++ b/src/hnbap/CSG-ID.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CSG-ID.h>
+
+int
+CSG_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 27l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CSG_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+CSG_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CSG_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CSG_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CSG_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CSG_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CSG_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CSG_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CSG_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSG_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CSG_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 27l, 27l } /* (SIZE(27..27)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CSG_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSG_ID = {
+ "CSG-ID",
+ "CSG-ID",
+ CSG_ID_free,
+ CSG_ID_print,
+ CSG_ID_constraint,
+ CSG_ID_decode_ber,
+ CSG_ID_encode_der,
+ CSG_ID_decode_xer,
+ CSG_ID_encode_xer,
+ CSG_ID_decode_uper,
+ CSG_ID_encode_uper,
+ CSG_ID_decode_aper,
+ CSG_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CSG_ID_tags_1,
+ sizeof(asn_DEF_CSG_ID_tags_1)
+ /sizeof(asn_DEF_CSG_ID_tags_1[0]), /* 1 */
+ asn_DEF_CSG_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_CSG_ID_tags_1)
+ /sizeof(asn_DEF_CSG_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_CSG_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/CSGMembershipStatus.c b/src/hnbap/CSGMembershipStatus.c
new file mode 100644
index 0000000..9c672e4
--- /dev/null
+++ b/src/hnbap/CSGMembershipStatus.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CSGMembershipStatus.h>
+
+int
+CSGMembershipStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CSGMembershipStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CSGMembershipStatus_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CSGMembershipStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CSGMembershipStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CSGMembershipStatus_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CSGMembershipStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CSGMembershipStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CSGMembershipStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CSGMembershipStatus_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CSGMembershipStatus_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CSGMembershipStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CSGMembershipStatus_value2enum_1[] = {
+ { 0, 6, "member" },
+ { 1, 10, "non-member" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CSGMembershipStatus_enum2value_1[] = {
+ 0, /* member(0) */
+ 1 /* non-member(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1 = {
+ asn_MAP_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CSGMembershipStatus_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CSGMembershipStatus_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus = {
+ "CSGMembershipStatus",
+ "CSGMembershipStatus",
+ CSGMembershipStatus_free,
+ CSGMembershipStatus_print,
+ CSGMembershipStatus_constraint,
+ CSGMembershipStatus_decode_ber,
+ CSGMembershipStatus_encode_der,
+ CSGMembershipStatus_decode_xer,
+ CSGMembershipStatus_encode_xer,
+ CSGMembershipStatus_decode_uper,
+ CSGMembershipStatus_encode_uper,
+ CSGMembershipStatus_decode_aper,
+ CSGMembershipStatus_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CSGMembershipStatus_tags_1,
+ sizeof(asn_DEF_CSGMembershipStatus_tags_1)
+ /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */
+ asn_DEF_CSGMembershipStatus_tags_1, /* Same as above */
+ sizeof(asn_DEF_CSGMembershipStatus_tags_1)
+ /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */
+ &asn_PER_type_CSGMembershipStatus_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CSGMembershipStatus_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CSGMembershipUpdate.c b/src/hnbap/CSGMembershipUpdate.c
new file mode 100644
index 0000000..d33562a
--- /dev/null
+++ b/src/hnbap/CSGMembershipUpdate.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CSGMembershipUpdate.h>
+
+static int
+memb_csgMembershipUpdate_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_csgMembershipUpdate_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_csgMembershipUpdate_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_csgMembershipUpdate_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_csgMembershipUpdate_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csgMembershipUpdate_ies_specs_2 = {
+ sizeof(struct csgMembershipUpdate_ies),
+ offsetof(struct csgMembershipUpdate_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csgMembershipUpdate_ies_2 = {
+ "csgMembershipUpdate-ies",
+ "csgMembershipUpdate-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_csgMembershipUpdate_ies_tags_2,
+ sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2)
+ /sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_csgMembershipUpdate_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2)
+ /sizeof(asn_DEF_csgMembershipUpdate_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_csgMembershipUpdate_ies_constr_2,
+ asn_MBR_csgMembershipUpdate_ies_2,
+ 1, /* Single element */
+ &asn_SPC_csgMembershipUpdate_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_CSGMembershipUpdate_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CSGMembershipUpdate, csgMembershipUpdate_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_csgMembershipUpdate_ies_2,
+ memb_csgMembershipUpdate_ies_constraint_1,
+ &asn_PER_memb_csgMembershipUpdate_ies_constr_2,
+ 0,
+ "csgMembershipUpdate-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CSGMembershipUpdate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSGMembershipUpdate_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* csgMembershipUpdate-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CSGMembershipUpdate_specs_1 = {
+ sizeof(struct CSGMembershipUpdate),
+ offsetof(struct CSGMembershipUpdate, _asn_ctx),
+ asn_MAP_CSGMembershipUpdate_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_CSGMembershipUpdate = {
+ "CSGMembershipUpdate",
+ "CSGMembershipUpdate",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CSGMembershipUpdate_tags_1,
+ sizeof(asn_DEF_CSGMembershipUpdate_tags_1)
+ /sizeof(asn_DEF_CSGMembershipUpdate_tags_1[0]), /* 1 */
+ asn_DEF_CSGMembershipUpdate_tags_1, /* Same as above */
+ sizeof(asn_DEF_CSGMembershipUpdate_tags_1)
+ /sizeof(asn_DEF_CSGMembershipUpdate_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_CSGMembershipUpdate_1,
+ 1, /* Elements count */
+ &asn_SPC_CSGMembershipUpdate_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Cause.c b/src/hnbap/Cause.c
new file mode 100644
index 0000000..229ef51
--- /dev/null
+++ b/src/hnbap/Cause.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Cause.h>
+
+static asn_per_constraints_t asn_PER_type_Cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Cause_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.radioNetwork),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CauseRadioNetwork,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "radioNetwork"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CauseTransport,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transport"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CauseProtocol,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "protocol"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CauseMisc,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "misc"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */
+};
+static asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = {
+ sizeof(struct Cause),
+ offsetof(struct Cause, _asn_ctx),
+ offsetof(struct Cause, present),
+ sizeof(((struct Cause *)0)->present),
+ asn_MAP_Cause_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_Cause = {
+ "Cause",
+ "Cause",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_Cause_constr_1,
+ asn_MBR_Cause_1,
+ 4, /* Elements count */
+ &asn_SPC_Cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CauseMisc.c b/src/hnbap/CauseMisc.c
new file mode 100644
index 0000000..3ab86d8
--- /dev/null
+++ b/src/hnbap/CauseMisc.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CauseMisc.h>
+
+int
+CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CauseMisc_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CauseMisc_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CauseMisc_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CauseMisc_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = {
+ { 0, 19, "processing-overload" },
+ { 1, 16, "hardware-failure" },
+ { 2, 20, "o-and-m-intervention" },
+ { 3, 11, "unspecified" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = {
+ 1, /* hardware-failure(1) */
+ 2, /* o-and-m-intervention(2) */
+ 0, /* processing-overload(0) */
+ 3 /* unspecified(3) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = {
+ asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CauseMisc = {
+ "CauseMisc",
+ "CauseMisc",
+ CauseMisc_free,
+ CauseMisc_print,
+ CauseMisc_constraint,
+ CauseMisc_decode_ber,
+ CauseMisc_encode_der,
+ CauseMisc_decode_xer,
+ CauseMisc_encode_xer,
+ CauseMisc_decode_uper,
+ CauseMisc_encode_uper,
+ CauseMisc_decode_aper,
+ CauseMisc_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CauseMisc_tags_1,
+ sizeof(asn_DEF_CauseMisc_tags_1)
+ /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */
+ asn_DEF_CauseMisc_tags_1, /* Same as above */
+ sizeof(asn_DEF_CauseMisc_tags_1)
+ /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */
+ &asn_PER_type_CauseMisc_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CauseMisc_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CauseProtocol.c b/src/hnbap/CauseProtocol.c
new file mode 100644
index 0000000..0529318
--- /dev/null
+++ b/src/hnbap/CauseProtocol.c
@@ -0,0 +1,178 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CauseProtocol.h>
+
+int
+CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CauseProtocol_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CauseProtocol_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 6l } /* (0..6,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = {
+ { 0, 21, "transfer-syntax-error" },
+ { 1, 28, "abstract-syntax-error-reject" },
+ { 2, 39, "abstract-syntax-error-ignore-and-notify" },
+ { 3, 42, "message-not-compatible-with-receiver-state" },
+ { 4, 14, "semantic-error" },
+ { 5, 11, "unspecified" },
+ { 6, 49, "abstract-syntax-error-falsely-constructed-message" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = {
+ 6, /* abstract-syntax-error-falsely-constructed-message(6) */
+ 2, /* abstract-syntax-error-ignore-and-notify(2) */
+ 1, /* abstract-syntax-error-reject(1) */
+ 3, /* message-not-compatible-with-receiver-state(3) */
+ 4, /* semantic-error(4) */
+ 0, /* transfer-syntax-error(0) */
+ 5 /* unspecified(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = {
+ asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */
+ 7, /* Number of elements in the maps */
+ 8, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CauseProtocol = {
+ "CauseProtocol",
+ "CauseProtocol",
+ CauseProtocol_free,
+ CauseProtocol_print,
+ CauseProtocol_constraint,
+ CauseProtocol_decode_ber,
+ CauseProtocol_encode_der,
+ CauseProtocol_decode_xer,
+ CauseProtocol_encode_xer,
+ CauseProtocol_decode_uper,
+ CauseProtocol_encode_uper,
+ CauseProtocol_decode_aper,
+ CauseProtocol_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CauseProtocol_tags_1,
+ sizeof(asn_DEF_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */
+ asn_DEF_CauseProtocol_tags_1, /* Same as above */
+ sizeof(asn_DEF_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */
+ &asn_PER_type_CauseProtocol_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CauseProtocol_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CauseRadioNetwork.c b/src/hnbap/CauseRadioNetwork.c
new file mode 100644
index 0000000..c7c1fd3
--- /dev/null
+++ b/src/hnbap/CauseRadioNetwork.c
@@ -0,0 +1,196 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CauseRadioNetwork.h>
+
+int
+CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CauseRadioNetwork_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 13l } /* (0..13,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CauseRadioNetwork_value2enum_1[] = {
+ { 0, 8, "overload" },
+ { 1, 21, "unauthorised-Location" },
+ { 2, 16, "unauthorised-HNB" },
+ { 3, 22, "hNB-parameter-mismatch" },
+ { 4, 19, "invalid-UE-identity" },
+ { 5, 26, "uE-not-allowed-on-this-HNB" },
+ { 6, 15, "uE-unauthorised" },
+ { 7, 23, "connection-with-UE-lost" },
+ { 8, 14, "ue-RRC-release" },
+ { 9, 18, "hNB-not-registered" },
+ { 10, 11, "unspecified" },
+ { 11, 6, "normal" },
+ { 12, 12, "uE-relocated" },
+ { 13, 28, "ue-registered-in-another-HNB" },
+ { 14, 34, "no-neighbour-information-available" },
+ { 15, 45, "iurh-connection-to-that-neighbour-not-Allowed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CauseRadioNetwork_enum2value_1[] = {
+ 7, /* connection-with-UE-lost(7) */
+ 9, /* hNB-not-registered(9) */
+ 3, /* hNB-parameter-mismatch(3) */
+ 4, /* invalid-UE-identity(4) */
+ 15, /* iurh-connection-to-that-neighbour-not-Allowed(15) */
+ 14, /* no-neighbour-information-available(14) */
+ 11, /* normal(11) */
+ 0, /* overload(0) */
+ 5, /* uE-not-allowed-on-this-HNB(5) */
+ 12, /* uE-relocated(12) */
+ 6, /* uE-unauthorised(6) */
+ 8, /* ue-RRC-release(8) */
+ 13, /* ue-registered-in-another-HNB(13) */
+ 2, /* unauthorised-HNB(2) */
+ 1, /* unauthorised-Location(1) */
+ 10 /* unspecified(10) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1 = {
+ asn_MAP_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */
+ 16, /* Number of elements in the maps */
+ 15, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CauseRadioNetwork_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork = {
+ "CauseRadioNetwork",
+ "CauseRadioNetwork",
+ CauseRadioNetwork_free,
+ CauseRadioNetwork_print,
+ CauseRadioNetwork_constraint,
+ CauseRadioNetwork_decode_ber,
+ CauseRadioNetwork_encode_der,
+ CauseRadioNetwork_decode_xer,
+ CauseRadioNetwork_encode_xer,
+ CauseRadioNetwork_decode_uper,
+ CauseRadioNetwork_encode_uper,
+ CauseRadioNetwork_decode_aper,
+ CauseRadioNetwork_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CauseRadioNetwork_tags_1,
+ sizeof(asn_DEF_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */
+ asn_DEF_CauseRadioNetwork_tags_1, /* Same as above */
+ sizeof(asn_DEF_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */
+ &asn_PER_type_CauseRadioNetwork_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CauseRadioNetwork_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CauseTransport.c b/src/hnbap/CauseTransport.c
new file mode 100644
index 0000000..5af93bd
--- /dev/null
+++ b/src/hnbap/CauseTransport.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CauseTransport.h>
+
+int
+CauseTransport_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CauseTransport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+CauseTransport_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CauseTransport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseTransport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CauseTransport_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseTransport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CauseTransport_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CauseTransport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CauseTransport_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CauseTransport_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CauseTransport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = {
+ { 0, 30, "transport-resource-unavailable" },
+ { 1, 11, "unspecified" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = {
+ 0, /* transport-resource-unavailable(0) */
+ 1 /* unspecified(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = {
+ asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CauseTransport = {
+ "CauseTransport",
+ "CauseTransport",
+ CauseTransport_free,
+ CauseTransport_print,
+ CauseTransport_constraint,
+ CauseTransport_decode_ber,
+ CauseTransport_encode_der,
+ CauseTransport_decode_xer,
+ CauseTransport_encode_xer,
+ CauseTransport_decode_uper,
+ CauseTransport_encode_uper,
+ CauseTransport_decode_aper,
+ CauseTransport_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CauseTransport_tags_1,
+ sizeof(asn_DEF_CauseTransport_tags_1)
+ /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */
+ asn_DEF_CauseTransport_tags_1, /* Same as above */
+ sizeof(asn_DEF_CauseTransport_tags_1)
+ /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */
+ &asn_PER_type_CauseTransport_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_CauseTransport_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CellIdentity.c b/src/hnbap/CellIdentity.c
new file mode 100644
index 0000000..e03dabf
--- /dev/null
+++ b/src/hnbap/CellIdentity.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CellIdentity.h>
+
+int
+CellIdentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 28l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+CellIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+CellIdentity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+CellIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+CellIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+CellIdentity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+CellIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+CellIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+CellIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+CellIdentity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+CellIdentity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+CellIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ CellIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_CellIdentity_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 28l, 28l } /* (SIZE(28..28)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CellIdentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CellIdentity = {
+ "CellIdentity",
+ "CellIdentity",
+ CellIdentity_free,
+ CellIdentity_print,
+ CellIdentity_constraint,
+ CellIdentity_decode_ber,
+ CellIdentity_encode_der,
+ CellIdentity_decode_xer,
+ CellIdentity_encode_xer,
+ CellIdentity_decode_uper,
+ CellIdentity_encode_uper,
+ CellIdentity_decode_aper,
+ CellIdentity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CellIdentity_tags_1,
+ sizeof(asn_DEF_CellIdentity_tags_1)
+ /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
+ asn_DEF_CellIdentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_CellIdentity_tags_1)
+ /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
+ &asn_PER_type_CellIdentity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/ConfigurationInformation.c b/src/hnbap/ConfigurationInformation.c
new file mode 100644
index 0000000..b9b7be3
--- /dev/null
+++ b/src/hnbap/ConfigurationInformation.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/ConfigurationInformation.h>
+
+static asn_per_constraints_t asn_PER_type_ConfigurationInformation_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ConfigurationInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct ConfigurationInformation, choice.provided),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNBConfigurationInformationProvided,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "provided"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct ConfigurationInformation, choice.missing),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNBConfigurationInformationMissing,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "missing"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigurationInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* provided */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* missing */
+};
+static asn_CHOICE_specifics_t asn_SPC_ConfigurationInformation_specs_1 = {
+ sizeof(struct ConfigurationInformation),
+ offsetof(struct ConfigurationInformation, _asn_ctx),
+ offsetof(struct ConfigurationInformation, present),
+ sizeof(((struct ConfigurationInformation *)0)->present),
+ asn_MAP_ConfigurationInformation_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigurationInformation = {
+ "ConfigurationInformation",
+ "ConfigurationInformation",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_ConfigurationInformation_constr_1,
+ asn_MBR_ConfigurationInformation_1,
+ 2, /* Elements count */
+ &asn_SPC_ConfigurationInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Context-ID.c b/src/hnbap/Context-ID.c
new file mode 100644
index 0000000..9204c4c
--- /dev/null
+++ b/src/hnbap/Context-ID.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Context-ID.h>
+
+int
+Context_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 24l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Context_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+Context_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Context_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Context_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Context_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Context_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Context_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Context_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Context_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Context_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Context_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Context_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 24l, 24l } /* (SIZE(24..24)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Context_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Context_ID = {
+ "Context-ID",
+ "Context-ID",
+ Context_ID_free,
+ Context_ID_print,
+ Context_ID_constraint,
+ Context_ID_decode_ber,
+ Context_ID_encode_der,
+ Context_ID_decode_xer,
+ Context_ID_encode_xer,
+ Context_ID_decode_uper,
+ Context_ID_encode_uper,
+ Context_ID_decode_aper,
+ Context_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Context_ID_tags_1,
+ sizeof(asn_DEF_Context_ID_tags_1)
+ /sizeof(asn_DEF_Context_ID_tags_1[0]), /* 1 */
+ asn_DEF_Context_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_Context_ID_tags_1)
+ /sizeof(asn_DEF_Context_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_Context_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/Criticality.c b/src/hnbap/Criticality.c
new file mode 100644
index 0000000..5aacb69
--- /dev/null
+++ b/src/hnbap/Criticality.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Criticality.h>
+
+int
+Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+Criticality_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Criticality_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Criticality_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Criticality_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Criticality_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = {
+ { 0, 6, "reject" },
+ { 1, 6, "ignore" },
+ { 2, 6, "notify" }
+};
+static const unsigned int asn_MAP_Criticality_enum2value_1[] = {
+ 1, /* ignore(1) */
+ 2, /* notify(2) */
+ 0 /* reject(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = {
+ asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Criticality = {
+ "Criticality",
+ "Criticality",
+ Criticality_free,
+ Criticality_print,
+ Criticality_constraint,
+ Criticality_decode_ber,
+ Criticality_encode_der,
+ Criticality_decode_xer,
+ Criticality_encode_xer,
+ Criticality_decode_uper,
+ Criticality_encode_uper,
+ Criticality_decode_aper,
+ Criticality_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Criticality_tags_1,
+ sizeof(asn_DEF_Criticality_tags_1)
+ /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */
+ asn_DEF_Criticality_tags_1, /* Same as above */
+ sizeof(asn_DEF_Criticality_tags_1)
+ /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */
+ &asn_PER_type_Criticality_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_Criticality_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CriticalityDiagnostics-IE-List.c b/src/hnbap/CriticalityDiagnostics-IE-List.c
new file mode 100644
index 0000000..b3f48e8
--- /dev/null
+++ b/src/hnbap/CriticalityDiagnostics-IE-List.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CriticalityDiagnostics-IE-List.h>
+
+static asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Member, iECriticality),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iECriticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Member, iE_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Member, typeOfError),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TypeOfError,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "typeOfError"
+ },
+ { ATF_POINTER, 1, offsetof(struct Member, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_Member_oms_2[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = {
+ sizeof(struct Member),
+ offsetof(struct Member, _asn_ctx),
+ asn_MAP_Member_tag2el_2,
+ 4, /* Count of tags in the map */
+ asn_MAP_Member_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Member_tags_2,
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ asn_DEF_Member_tags_2, /* Same as above */
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_Member_2,
+ 4, /* Elements count */
+ &asn_SPC_Member_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_Member_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = {
+ sizeof(struct CriticalityDiagnostics_IE_List),
+ offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = {
+ "CriticalityDiagnostics-IE-List",
+ "CriticalityDiagnostics-IE-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CriticalityDiagnostics_IE_List_tags_1,
+ sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1,
+ asn_MBR_CriticalityDiagnostics_IE_List_1,
+ 1, /* Single element */
+ &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/CriticalityDiagnostics.c b/src/hnbap/CriticalityDiagnostics.c
new file mode 100644
index 0000000..289ae3c
--- /dev/null
+++ b/src/hnbap/CriticalityDiagnostics.c
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/CriticalityDiagnostics.h>
+
+static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = {
+ { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TriggeringMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "triggeringMessage"
+ },
+ { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCriticality"
+ },
+ { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CriticalityDiagnostics_IE_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iEsCriticalityDiagnostics"
+ },
+ { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = {
+ sizeof(struct CriticalityDiagnostics),
+ offsetof(struct CriticalityDiagnostics, _asn_ctx),
+ asn_MAP_CriticalityDiagnostics_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = {
+ "CriticalityDiagnostics",
+ "CriticalityDiagnostics",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_CriticalityDiagnostics_tags_1,
+ sizeof(asn_DEF_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */
+ sizeof(asn_DEF_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_CriticalityDiagnostics_1,
+ 5, /* Elements count */
+ &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/ESN.c b/src/hnbap/ESN.c
new file mode 100644
index 0000000..1f04d0c
--- /dev/null
+++ b/src/hnbap/ESN.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/ESN.h>
+
+int
+ESN_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+ESN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+ESN_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+ESN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+ESN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+ESN_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+ESN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+ESN_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+ESN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+ESN_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+ESN_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+ESN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ESN_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_ESN_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ESN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ESN = {
+ "ESN",
+ "ESN",
+ ESN_free,
+ ESN_print,
+ ESN_constraint,
+ ESN_decode_ber,
+ ESN_encode_der,
+ ESN_decode_xer,
+ ESN_encode_xer,
+ ESN_decode_uper,
+ ESN_encode_uper,
+ ESN_decode_aper,
+ ESN_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ESN_tags_1,
+ sizeof(asn_DEF_ESN_tags_1)
+ /sizeof(asn_DEF_ESN_tags_1[0]), /* 1 */
+ asn_DEF_ESN_tags_1, /* Same as above */
+ sizeof(asn_DEF_ESN_tags_1)
+ /sizeof(asn_DEF_ESN_tags_1[0]), /* 1 */
+ &asn_PER_type_ESN_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/ErrorIndication.c b/src/hnbap/ErrorIndication.c
new file mode 100644
index 0000000..9765617
--- /dev/null
+++ b/src/hnbap/ErrorIndication.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/ErrorIndication.h>
+
+static int
+memb_errorIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_errorIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_errorIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_errorIndication_ies_specs_2 = {
+ sizeof(struct errorIndication_ies),
+ offsetof(struct errorIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_errorIndication_ies_2 = {
+ "errorIndication-ies",
+ "errorIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_errorIndication_ies_tags_2,
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_errorIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_errorIndication_ies_constr_2,
+ asn_MBR_errorIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_errorIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, errorIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_errorIndication_ies_2,
+ memb_errorIndication_ies_constraint_1,
+ &asn_PER_memb_errorIndication_ies_constr_2,
+ 0,
+ "errorIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* errorIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = {
+ sizeof(struct ErrorIndication),
+ offsetof(struct ErrorIndication, _asn_ctx),
+ asn_MAP_ErrorIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ErrorIndication = {
+ "ErrorIndication",
+ "ErrorIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ErrorIndication_tags_1,
+ sizeof(asn_DEF_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */
+ asn_DEF_ErrorIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_ErrorIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_ErrorIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/GTP-TEI.c b/src/hnbap/GTP-TEI.c
new file mode 100644
index 0000000..e8cea0c
--- /dev/null
+++ b/src/hnbap/GTP-TEI.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/GTP-TEI.h>
+
+int
+GTP_TEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+GTP_TEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+GTP_TEI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+GTP_TEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+GTP_TEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+GTP_TEI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+GTP_TEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+GTP_TEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+GTP_TEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+GTP_TEI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+GTP_TEI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+GTP_TEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_GTP_TEI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GTP_TEI = {
+ "GTP-TEI",
+ "GTP-TEI",
+ GTP_TEI_free,
+ GTP_TEI_print,
+ GTP_TEI_constraint,
+ GTP_TEI_decode_ber,
+ GTP_TEI_encode_der,
+ GTP_TEI_decode_xer,
+ GTP_TEI_encode_xer,
+ GTP_TEI_decode_uper,
+ GTP_TEI_encode_uper,
+ GTP_TEI_decode_aper,
+ GTP_TEI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_GTP_TEI_tags_1,
+ sizeof(asn_DEF_GTP_TEI_tags_1)
+ /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */
+ asn_DEF_GTP_TEI_tags_1, /* Same as above */
+ sizeof(asn_DEF_GTP_TEI_tags_1)
+ /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */
+ &asn_PER_type_GTP_TEI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/GeographicalCoordinates.c b/src/hnbap/GeographicalCoordinates.c
new file mode 100644
index 0000000..329b709
--- /dev/null
+++ b/src/hnbap/GeographicalCoordinates.c
@@ -0,0 +1,313 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/GeographicalCoordinates.h>
+
+static int
+latitudeSign_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+latitudeSign_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+latitudeSign_2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+latitudeSign_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static int
+memb_latitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 8388607l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_longitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= -8388608ull && value <= 8388607l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_latitudeSign_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_latitude_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 23, -1, 0l, 8388607l } /* (0..8388607) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_longitude_constr_6 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 24, -1, -8388608ull, 8388607l } /* (-8388608..8388607) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_latitudeSign_value2enum_2[] = {
+ { 0, 5, "north" },
+ { 1, 5, "south" }
+};
+static const unsigned int asn_MAP_latitudeSign_enum2value_2[] = {
+ 0, /* north(0) */
+ 1 /* south(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_latitudeSign_specs_2 = {
+ asn_MAP_latitudeSign_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_latitudeSign_enum2value_2, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_latitudeSign_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_latitudeSign_2 = {
+ "latitudeSign",
+ "latitudeSign",
+ latitudeSign_2_free,
+ latitudeSign_2_print,
+ latitudeSign_2_constraint,
+ latitudeSign_2_decode_ber,
+ latitudeSign_2_encode_der,
+ latitudeSign_2_decode_xer,
+ latitudeSign_2_encode_xer,
+ latitudeSign_2_decode_uper,
+ latitudeSign_2_encode_uper,
+ latitudeSign_2_decode_aper,
+ latitudeSign_2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_latitudeSign_tags_2,
+ sizeof(asn_DEF_latitudeSign_tags_2)
+ /sizeof(asn_DEF_latitudeSign_tags_2[0]) - 1, /* 1 */
+ asn_DEF_latitudeSign_tags_2, /* Same as above */
+ sizeof(asn_DEF_latitudeSign_tags_2)
+ /sizeof(asn_DEF_latitudeSign_tags_2[0]), /* 2 */
+ &asn_PER_type_latitudeSign_constr_2,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_latitudeSign_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_GeographicalCoordinates_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, latitudeSign),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_latitudeSign_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "latitudeSign"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, latitude),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_latitude_constraint_1,
+ &asn_PER_memb_latitude_constr_5,
+ 0,
+ "latitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GeographicalCoordinates, longitude),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_longitude_constraint_1,
+ &asn_PER_memb_longitude_constr_6,
+ 0,
+ "longitude"
+ },
+ { ATF_POINTER, 1, offsetof(struct GeographicalCoordinates, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_GeographicalCoordinates_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_GeographicalCoordinates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GeographicalCoordinates_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitudeSign */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* latitude */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* longitude */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_GeographicalCoordinates_specs_1 = {
+ sizeof(struct GeographicalCoordinates),
+ offsetof(struct GeographicalCoordinates, _asn_ctx),
+ asn_MAP_GeographicalCoordinates_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_GeographicalCoordinates_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_GeographicalCoordinates = {
+ "GeographicalCoordinates",
+ "GeographicalCoordinates",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_GeographicalCoordinates_tags_1,
+ sizeof(asn_DEF_GeographicalCoordinates_tags_1)
+ /sizeof(asn_DEF_GeographicalCoordinates_tags_1[0]), /* 1 */
+ asn_DEF_GeographicalCoordinates_tags_1, /* Same as above */
+ sizeof(asn_DEF_GeographicalCoordinates_tags_1)
+ /sizeof(asn_DEF_GeographicalCoordinates_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_GeographicalCoordinates_1,
+ 4, /* Elements count */
+ &asn_SPC_GeographicalCoordinates_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/GeographicalLocation.c b/src/hnbap/GeographicalLocation.c
new file mode 100644
index 0000000..a151db9
--- /dev/null
+++ b/src/hnbap/GeographicalLocation.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/GeographicalLocation.h>
+
+static asn_TYPE_member_t asn_MBR_GeographicalLocation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GeographicalLocation, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GeographicalLocation, altitudeAndDirection),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_AltitudeAndDirection,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altitudeAndDirection"
+ },
+ { ATF_POINTER, 1, offsetof(struct GeographicalLocation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_GeographicalLocation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_GeographicalLocation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GeographicalLocation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altitudeAndDirection */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_GeographicalLocation_specs_1 = {
+ sizeof(struct GeographicalLocation),
+ offsetof(struct GeographicalLocation, _asn_ctx),
+ asn_MAP_GeographicalLocation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_GeographicalLocation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_GeographicalLocation = {
+ "GeographicalLocation",
+ "GeographicalLocation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_GeographicalLocation_tags_1,
+ sizeof(asn_DEF_GeographicalLocation_tags_1)
+ /sizeof(asn_DEF_GeographicalLocation_tags_1[0]), /* 1 */
+ asn_DEF_GeographicalLocation_tags_1, /* Same as above */
+ sizeof(asn_DEF_GeographicalLocation_tags_1)
+ /sizeof(asn_DEF_GeographicalLocation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_GeographicalLocation_1,
+ 3, /* Elements count */
+ &asn_SPC_GeographicalLocation_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-Cell-Access-Mode.c b/src/hnbap/HNB-Cell-Access-Mode.c
new file mode 100644
index 0000000..ae2371b
--- /dev/null
+++ b/src/hnbap/HNB-Cell-Access-Mode.c
@@ -0,0 +1,170 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-Cell-Access-Mode.h>
+
+int
+HNB_Cell_Access_Mode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+HNB_Cell_Access_Mode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+HNB_Cell_Access_Mode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Cell_Access_Mode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+HNB_Cell_Access_Mode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Cell_Access_Mode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+HNB_Cell_Access_Mode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Cell_Access_Mode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+HNB_Cell_Access_Mode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+HNB_Cell_Access_Mode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+HNB_Cell_Access_Mode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNB_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_HNB_Cell_Access_Mode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_HNB_Cell_Access_Mode_value2enum_1[] = {
+ { 0, 6, "closed" },
+ { 1, 6, "hybrid" },
+ { 2, 4, "open" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_HNB_Cell_Access_Mode_enum2value_1[] = {
+ 0, /* closed(0) */
+ 1, /* hybrid(1) */
+ 2 /* open(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_HNB_Cell_Access_Mode_specs_1 = {
+ asn_MAP_HNB_Cell_Access_Mode_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_HNB_Cell_Access_Mode_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_HNB_Cell_Access_Mode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Access_Mode = {
+ "HNB-Cell-Access-Mode",
+ "HNB-Cell-Access-Mode",
+ HNB_Cell_Access_Mode_free,
+ HNB_Cell_Access_Mode_print,
+ HNB_Cell_Access_Mode_constraint,
+ HNB_Cell_Access_Mode_decode_ber,
+ HNB_Cell_Access_Mode_encode_der,
+ HNB_Cell_Access_Mode_decode_xer,
+ HNB_Cell_Access_Mode_encode_xer,
+ HNB_Cell_Access_Mode_decode_uper,
+ HNB_Cell_Access_Mode_encode_uper,
+ HNB_Cell_Access_Mode_decode_aper,
+ HNB_Cell_Access_Mode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNB_Cell_Access_Mode_tags_1,
+ sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1)
+ /sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1[0]), /* 1 */
+ asn_DEF_HNB_Cell_Access_Mode_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1)
+ /sizeof(asn_DEF_HNB_Cell_Access_Mode_tags_1[0]), /* 1 */
+ &asn_PER_type_HNB_Cell_Access_Mode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_HNB_Cell_Access_Mode_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-Cell-Identifier.c b/src/hnbap/HNB-Cell-Identifier.c
new file mode 100644
index 0000000..20a4e5e
--- /dev/null
+++ b/src/hnbap/HNB-Cell-Identifier.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-Cell-Identifier.h>
+
+static asn_TYPE_member_t asn_MBR_HNB_Cell_Identifier_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_Cell_Identifier, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_Cell_Identifier, cellIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CellIdentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellIdentity"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNB_Cell_Identifier, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNB_Cell_Identifier_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_HNB_Cell_Identifier_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNB_Cell_Identifier_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNB_Cell_Identifier_specs_1 = {
+ sizeof(struct HNB_Cell_Identifier),
+ offsetof(struct HNB_Cell_Identifier, _asn_ctx),
+ asn_MAP_HNB_Cell_Identifier_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_HNB_Cell_Identifier_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_Cell_Identifier = {
+ "HNB-Cell-Identifier",
+ "HNB-Cell-Identifier",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNB_Cell_Identifier_tags_1,
+ sizeof(asn_DEF_HNB_Cell_Identifier_tags_1)
+ /sizeof(asn_DEF_HNB_Cell_Identifier_tags_1[0]), /* 1 */
+ asn_DEF_HNB_Cell_Identifier_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNB_Cell_Identifier_tags_1)
+ /sizeof(asn_DEF_HNB_Cell_Identifier_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNB_Cell_Identifier_1,
+ 3, /* Elements count */
+ &asn_SPC_HNB_Cell_Identifier_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-GWResponse.c b/src/hnbap/HNB-GWResponse.c
new file mode 100644
index 0000000..add7821
--- /dev/null
+++ b/src/hnbap/HNB-GWResponse.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-GWResponse.h>
+
+static asn_per_constraints_t asn_PER_type_HNB_GWResponse_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_HNB_GWResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.hNB),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNBConfigInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hNB"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.macroRNC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "macroRNC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_GWResponse, choice.unknownU_RNTIIndication),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UnknownU_RNTIIndication,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "unknownU-RNTIIndication"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNB_GWResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* macroRNC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unknownU-RNTIIndication */
+};
+static asn_CHOICE_specifics_t asn_SPC_HNB_GWResponse_specs_1 = {
+ sizeof(struct HNB_GWResponse),
+ offsetof(struct HNB_GWResponse, _asn_ctx),
+ offsetof(struct HNB_GWResponse, present),
+ sizeof(((struct HNB_GWResponse *)0)->present),
+ asn_MAP_HNB_GWResponse_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_GWResponse = {
+ "HNB-GWResponse",
+ "HNB-GWResponse",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_HNB_GWResponse_constr_1,
+ asn_MBR_HNB_GWResponse_1,
+ 3, /* Elements count */
+ &asn_SPC_HNB_GWResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-Identity-Info.c b/src/hnbap/HNB-Identity-Info.c
new file mode 100644
index 0000000..51e9f0f
--- /dev/null
+++ b/src/hnbap/HNB-Identity-Info.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-Identity-Info.h>
+
+int
+HNB_Identity_Info_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+HNB_Identity_Info_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+HNB_Identity_Info_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+HNB_Identity_Info_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Identity_Info_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+HNB_Identity_Info_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Identity_Info_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+HNB_Identity_Info_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+HNB_Identity_Info_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+HNB_Identity_Info_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+HNB_Identity_Info_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+HNB_Identity_Info_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNB_Identity_Info_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_HNB_Identity_Info_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 255l } /* (SIZE(1..255)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_HNB_Identity_Info_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_Identity_Info = {
+ "HNB-Identity-Info",
+ "HNB-Identity-Info",
+ HNB_Identity_Info_free,
+ HNB_Identity_Info_print,
+ HNB_Identity_Info_constraint,
+ HNB_Identity_Info_decode_ber,
+ HNB_Identity_Info_encode_der,
+ HNB_Identity_Info_decode_xer,
+ HNB_Identity_Info_encode_xer,
+ HNB_Identity_Info_decode_uper,
+ HNB_Identity_Info_encode_uper,
+ HNB_Identity_Info_decode_aper,
+ HNB_Identity_Info_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNB_Identity_Info_tags_1,
+ sizeof(asn_DEF_HNB_Identity_Info_tags_1)
+ /sizeof(asn_DEF_HNB_Identity_Info_tags_1[0]), /* 1 */
+ asn_DEF_HNB_Identity_Info_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNB_Identity_Info_tags_1)
+ /sizeof(asn_DEF_HNB_Identity_Info_tags_1[0]), /* 1 */
+ &asn_PER_type_HNB_Identity_Info_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/HNB-Identity.c b/src/hnbap/HNB-Identity.c
new file mode 100644
index 0000000..a442f1a
--- /dev/null
+++ b/src/hnbap/HNB-Identity.c
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-Identity.h>
+
+static asn_TYPE_member_t asn_MBR_HNB_Identity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_Identity, hNB_Identity_Info),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNB_Identity_Info,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hNB-Identity-Info"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNB_Identity, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNB_Identity_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_HNB_Identity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNB_Identity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB-Identity-Info */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNB_Identity_specs_1 = {
+ sizeof(struct HNB_Identity),
+ offsetof(struct HNB_Identity, _asn_ctx),
+ asn_MAP_HNB_Identity_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_HNB_Identity_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_Identity = {
+ "HNB-Identity",
+ "HNB-Identity",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNB_Identity_tags_1,
+ sizeof(asn_DEF_HNB_Identity_tags_1)
+ /sizeof(asn_DEF_HNB_Identity_tags_1[0]), /* 1 */
+ asn_DEF_HNB_Identity_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNB_Identity_tags_1)
+ /sizeof(asn_DEF_HNB_Identity_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNB_Identity_1,
+ 2, /* Elements count */
+ &asn_SPC_HNB_Identity_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-Location-Information.c b/src/hnbap/HNB-Location-Information.c
new file mode 100644
index 0000000..eba9787
--- /dev/null
+++ b/src/hnbap/HNB-Location-Information.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-Location-Information.h>
+
+static asn_TYPE_member_t asn_MBR_HNB_Location_Information_1[] = {
+ { ATF_POINTER, 3, offsetof(struct HNB_Location_Information, macroCoverageInfo),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_MacroCoverageInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "macroCoverageInfo"
+ },
+ { ATF_POINTER, 2, offsetof(struct HNB_Location_Information, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GeographicalLocation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNB_Location_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNB_Location_Information_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_HNB_Location_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNB_Location_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroCoverageInfo */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNB_Location_Information_specs_1 = {
+ sizeof(struct HNB_Location_Information),
+ offsetof(struct HNB_Location_Information, _asn_ctx),
+ asn_MAP_HNB_Location_Information_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_HNB_Location_Information_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_Location_Information = {
+ "HNB-Location-Information",
+ "HNB-Location-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNB_Location_Information_tags_1,
+ sizeof(asn_DEF_HNB_Location_Information_tags_1)
+ /sizeof(asn_DEF_HNB_Location_Information_tags_1[0]), /* 1 */
+ asn_DEF_HNB_Location_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNB_Location_Information_tags_1)
+ /sizeof(asn_DEF_HNB_Location_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNB_Location_Information_1,
+ 3, /* Elements count */
+ &asn_SPC_HNB_Location_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNB-RNL-Identity.c b/src/hnbap/HNB-RNL-Identity.c
new file mode 100644
index 0000000..3a51832
--- /dev/null
+++ b/src/hnbap/HNB-RNL-Identity.c
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNB-RNL-Identity.h>
+
+static asn_per_constraints_t asn_PER_type_HNB_RNL_Identity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_HNB_RNL_Identity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNB_RNL_Identity, choice.hNB_Identity_as_Cell_Identifier),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNB_Cell_Identifier,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hNB-Identity-as-Cell-Identifier"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNB_RNL_Identity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hNB-Identity-as-Cell-Identifier */
+};
+static asn_CHOICE_specifics_t asn_SPC_HNB_RNL_Identity_specs_1 = {
+ sizeof(struct HNB_RNL_Identity),
+ offsetof(struct HNB_RNL_Identity, _asn_ctx),
+ offsetof(struct HNB_RNL_Identity, present),
+ sizeof(((struct HNB_RNL_Identity *)0)->present),
+ asn_MAP_HNB_RNL_Identity_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_HNB_RNL_Identity = {
+ "HNB-RNL-Identity",
+ "HNB-RNL-Identity",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_HNB_RNL_Identity_constr_1,
+ asn_MBR_HNB_RNL_Identity_1,
+ 1, /* Elements count */
+ &asn_SPC_HNB_RNL_Identity_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBAP-PDU.c b/src/hnbap/HNBAP-PDU.c
new file mode 100644
index 0000000..998a1d2
--- /dev/null
+++ b/src/hnbap/HNBAP-PDU.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBAP-PDU.h>
+
+static asn_per_constraints_t asn_PER_type_HNBAP_PDU_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_HNBAP_PDU_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.initiatingMessage),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_InitiatingMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "initiatingMessage"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.successfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_SuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "successfulOutcome"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNBAP_PDU, choice.unsuccessfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UnsuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "unsuccessfulOutcome"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBAP_PDU_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */
+};
+static asn_CHOICE_specifics_t asn_SPC_HNBAP_PDU_specs_1 = {
+ sizeof(struct HNBAP_PDU),
+ offsetof(struct HNBAP_PDU, _asn_ctx),
+ offsetof(struct HNBAP_PDU, present),
+ sizeof(((struct HNBAP_PDU *)0)->present),
+ asn_MAP_HNBAP_PDU_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBAP_PDU = {
+ "HNBAP-PDU",
+ "HNBAP-PDU",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_HNBAP_PDU_constr_1,
+ asn_MBR_HNBAP_PDU_1,
+ 3, /* Elements count */
+ &asn_SPC_HNBAP_PDU_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBCapacity.c b/src/hnbap/HNBCapacity.c
new file mode 100644
index 0000000..0d58c65
--- /dev/null
+++ b/src/hnbap/HNBCapacity.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBCapacity.h>
+
+int
+HNBCapacity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 1000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+HNBCapacity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+HNBCapacity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+HNBCapacity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+HNBCapacity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+HNBCapacity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+HNBCapacity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+HNBCapacity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+HNBCapacity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+HNBCapacity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+HNBCapacity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+HNBCapacity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ HNBCapacity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_HNBCapacity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 10, 10, 0l, 1000l } /* (0..1000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_HNBCapacity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_HNBCapacity = {
+ "HNBCapacity",
+ "HNBCapacity",
+ HNBCapacity_free,
+ HNBCapacity_print,
+ HNBCapacity_constraint,
+ HNBCapacity_decode_ber,
+ HNBCapacity_encode_der,
+ HNBCapacity_decode_xer,
+ HNBCapacity_encode_xer,
+ HNBCapacity_decode_uper,
+ HNBCapacity_encode_uper,
+ HNBCapacity_decode_aper,
+ HNBCapacity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBCapacity_tags_1,
+ sizeof(asn_DEF_HNBCapacity_tags_1)
+ /sizeof(asn_DEF_HNBCapacity_tags_1[0]), /* 1 */
+ asn_DEF_HNBCapacity_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBCapacity_tags_1)
+ /sizeof(asn_DEF_HNBCapacity_tags_1[0]), /* 1 */
+ &asn_PER_type_HNBCapacity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/HNBConfigInfo.c b/src/hnbap/HNBConfigInfo.c
new file mode 100644
index 0000000..06c7798
--- /dev/null
+++ b/src/hnbap/HNBConfigInfo.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBConfigInfo.h>
+
+static asn_TYPE_member_t asn_MBR_HNBConfigInfo_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigInfo, hnb_RNL_Identity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_HNB_RNL_Identity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hnb-RNL-Identity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigInfo, configurationInformation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ConfigurationInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "configurationInformation"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNBConfigInfo, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNBConfigInfo_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_HNBConfigInfo_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBConfigInfo_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hnb-RNL-Identity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* configurationInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigInfo_specs_1 = {
+ sizeof(struct HNBConfigInfo),
+ offsetof(struct HNBConfigInfo, _asn_ctx),
+ asn_MAP_HNBConfigInfo_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_HNBConfigInfo_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBConfigInfo = {
+ "HNBConfigInfo",
+ "HNBConfigInfo",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBConfigInfo_tags_1,
+ sizeof(asn_DEF_HNBConfigInfo_tags_1)
+ /sizeof(asn_DEF_HNBConfigInfo_tags_1[0]), /* 1 */
+ asn_DEF_HNBConfigInfo_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBConfigInfo_tags_1)
+ /sizeof(asn_DEF_HNBConfigInfo_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBConfigInfo_1,
+ 3, /* Elements count */
+ &asn_SPC_HNBConfigInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBConfigTransferRequest.c b/src/hnbap/HNBConfigTransferRequest.c
new file mode 100644
index 0000000..db119a2
--- /dev/null
+++ b/src/hnbap/HNBConfigTransferRequest.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBConfigTransferRequest.h>
+
+static int
+memb_hnbConfigTransferRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbConfigTransferRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbConfigTransferRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbConfigTransferRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbConfigTransferRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbConfigTransferRequest_ies_specs_2 = {
+ sizeof(struct hnbConfigTransferRequest_ies),
+ offsetof(struct hnbConfigTransferRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbConfigTransferRequest_ies_2 = {
+ "hnbConfigTransferRequest-ies",
+ "hnbConfigTransferRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbConfigTransferRequest_ies_tags_2,
+ sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2)
+ /sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbConfigTransferRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2)
+ /sizeof(asn_DEF_hnbConfigTransferRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbConfigTransferRequest_ies_constr_2,
+ asn_MBR_hnbConfigTransferRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbConfigTransferRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBConfigTransferRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigTransferRequest, hnbConfigTransferRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbConfigTransferRequest_ies_2,
+ memb_hnbConfigTransferRequest_ies_constraint_1,
+ &asn_PER_memb_hnbConfigTransferRequest_ies_constr_2,
+ 0,
+ "hnbConfigTransferRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBConfigTransferRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBConfigTransferRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbConfigTransferRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigTransferRequest_specs_1 = {
+ sizeof(struct HNBConfigTransferRequest),
+ offsetof(struct HNBConfigTransferRequest, _asn_ctx),
+ asn_MAP_HNBConfigTransferRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferRequest = {
+ "HNBConfigTransferRequest",
+ "HNBConfigTransferRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBConfigTransferRequest_tags_1,
+ sizeof(asn_DEF_HNBConfigTransferRequest_tags_1)
+ /sizeof(asn_DEF_HNBConfigTransferRequest_tags_1[0]), /* 1 */
+ asn_DEF_HNBConfigTransferRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBConfigTransferRequest_tags_1)
+ /sizeof(asn_DEF_HNBConfigTransferRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBConfigTransferRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBConfigTransferRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBConfigTransferResponse.c b/src/hnbap/HNBConfigTransferResponse.c
new file mode 100644
index 0000000..116758d
--- /dev/null
+++ b/src/hnbap/HNBConfigTransferResponse.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBConfigTransferResponse.h>
+
+static int
+memb_hnbConfigTransferResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbConfigTransferResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbConfigTransferResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbConfigTransferResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbConfigTransferResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbConfigTransferResponse_ies_specs_2 = {
+ sizeof(struct hnbConfigTransferResponse_ies),
+ offsetof(struct hnbConfigTransferResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbConfigTransferResponse_ies_2 = {
+ "hnbConfigTransferResponse-ies",
+ "hnbConfigTransferResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbConfigTransferResponse_ies_tags_2,
+ sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2)
+ /sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbConfigTransferResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2)
+ /sizeof(asn_DEF_hnbConfigTransferResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbConfigTransferResponse_ies_constr_2,
+ asn_MBR_hnbConfigTransferResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbConfigTransferResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBConfigTransferResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigTransferResponse, hnbConfigTransferResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbConfigTransferResponse_ies_2,
+ memb_hnbConfigTransferResponse_ies_constraint_1,
+ &asn_PER_memb_hnbConfigTransferResponse_ies_constr_2,
+ 0,
+ "hnbConfigTransferResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBConfigTransferResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBConfigTransferResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbConfigTransferResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigTransferResponse_specs_1 = {
+ sizeof(struct HNBConfigTransferResponse),
+ offsetof(struct HNBConfigTransferResponse, _asn_ctx),
+ asn_MAP_HNBConfigTransferResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBConfigTransferResponse = {
+ "HNBConfigTransferResponse",
+ "HNBConfigTransferResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBConfigTransferResponse_tags_1,
+ sizeof(asn_DEF_HNBConfigTransferResponse_tags_1)
+ /sizeof(asn_DEF_HNBConfigTransferResponse_tags_1[0]), /* 1 */
+ asn_DEF_HNBConfigTransferResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBConfigTransferResponse_tags_1)
+ /sizeof(asn_DEF_HNBConfigTransferResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBConfigTransferResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBConfigTransferResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBConfigurationInformationMissing.c b/src/hnbap/HNBConfigurationInformationMissing.c
new file mode 100644
index 0000000..0b41f92
--- /dev/null
+++ b/src/hnbap/HNBConfigurationInformationMissing.c
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBConfigurationInformationMissing.h>
+
+static asn_TYPE_member_t asn_MBR_HNBConfigurationInformationMissing_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationMissing, cause),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationMissing, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNBConfigurationInformationMissing_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_HNBConfigurationInformationMissing_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBConfigurationInformationMissing_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigurationInformationMissing_specs_1 = {
+ sizeof(struct HNBConfigurationInformationMissing),
+ offsetof(struct HNBConfigurationInformationMissing, _asn_ctx),
+ asn_MAP_HNBConfigurationInformationMissing_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_HNBConfigurationInformationMissing_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationMissing = {
+ "HNBConfigurationInformationMissing",
+ "HNBConfigurationInformationMissing",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBConfigurationInformationMissing_tags_1,
+ sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1)
+ /sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1[0]), /* 1 */
+ asn_DEF_HNBConfigurationInformationMissing_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1)
+ /sizeof(asn_DEF_HNBConfigurationInformationMissing_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBConfigurationInformationMissing_1,
+ 2, /* Elements count */
+ &asn_SPC_HNBConfigurationInformationMissing_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBConfigurationInformationProvided.c b/src/hnbap/HNBConfigurationInformationProvided.c
new file mode 100644
index 0000000..4957fba
--- /dev/null
+++ b/src/hnbap/HNBConfigurationInformationProvided.c
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBConfigurationInformationProvided.h>
+
+static asn_TYPE_member_t asn_MBR_HNBConfigurationInformationProvided_1[] = {
+ { ATF_POINTER, 2, offsetof(struct HNBConfigurationInformationProvided, psc),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PSC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "psc"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationProvided, cSG_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CSG_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cSG-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationProvided, hNB_Cell_Access_Mode),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_HNB_Cell_Access_Mode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hNB-Cell-Access-Mode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct HNBConfigurationInformationProvided, iurh_Signalling_TNL_AddressList),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Iurh_Signalling_TNL_AddressList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iurh-Signalling-TNL-AddressList"
+ },
+ { ATF_POINTER, 1, offsetof(struct HNBConfigurationInformationProvided, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_HNBConfigurationInformationProvided_oms_1[] = { 0, 1, 4 };
+static const ber_tlv_tag_t asn_DEF_HNBConfigurationInformationProvided_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBConfigurationInformationProvided_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* psc */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSG-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hNB-Cell-Access-Mode */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iurh-Signalling-TNL-AddressList */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBConfigurationInformationProvided_specs_1 = {
+ sizeof(struct HNBConfigurationInformationProvided),
+ offsetof(struct HNBConfigurationInformationProvided, _asn_ctx),
+ asn_MAP_HNBConfigurationInformationProvided_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_HNBConfigurationInformationProvided_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBConfigurationInformationProvided = {
+ "HNBConfigurationInformationProvided",
+ "HNBConfigurationInformationProvided",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBConfigurationInformationProvided_tags_1,
+ sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1)
+ /sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1[0]), /* 1 */
+ asn_DEF_HNBConfigurationInformationProvided_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1)
+ /sizeof(asn_DEF_HNBConfigurationInformationProvided_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBConfigurationInformationProvided_1,
+ 5, /* Elements count */
+ &asn_SPC_HNBConfigurationInformationProvided_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBDe-Register.c b/src/hnbap/HNBDe-Register.c
new file mode 100644
index 0000000..f31e842
--- /dev/null
+++ b/src/hnbap/HNBDe-Register.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBDe-Register.h>
+
+static int
+memb_hnbDe_Register_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbDe_Register_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbDe_Register_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbDe_Register_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbDe_Register_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbDe_Register_ies_specs_2 = {
+ sizeof(struct hnbDe_Register_ies),
+ offsetof(struct hnbDe_Register_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbDe_Register_ies_2 = {
+ "hnbDe-Register-ies",
+ "hnbDe-Register-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbDe_Register_ies_tags_2,
+ sizeof(asn_DEF_hnbDe_Register_ies_tags_2)
+ /sizeof(asn_DEF_hnbDe_Register_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbDe_Register_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbDe_Register_ies_tags_2)
+ /sizeof(asn_DEF_hnbDe_Register_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbDe_Register_ies_constr_2,
+ asn_MBR_hnbDe_Register_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbDe_Register_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBDe_Register_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBDe_Register, hnbDe_Register_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbDe_Register_ies_2,
+ memb_hnbDe_Register_ies_constraint_1,
+ &asn_PER_memb_hnbDe_Register_ies_constr_2,
+ 0,
+ "hnbDe-Register-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBDe_Register_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBDe_Register_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbDe-Register-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBDe_Register_specs_1 = {
+ sizeof(struct HNBDe_Register),
+ offsetof(struct HNBDe_Register, _asn_ctx),
+ asn_MAP_HNBDe_Register_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBDe_Register = {
+ "HNBDe-Register",
+ "HNBDe-Register",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBDe_Register_tags_1,
+ sizeof(asn_DEF_HNBDe_Register_tags_1)
+ /sizeof(asn_DEF_HNBDe_Register_tags_1[0]), /* 1 */
+ asn_DEF_HNBDe_Register_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBDe_Register_tags_1)
+ /sizeof(asn_DEF_HNBDe_Register_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBDe_Register_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBDe_Register_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBRegisterAccept.c b/src/hnbap/HNBRegisterAccept.c
new file mode 100644
index 0000000..37f2332
--- /dev/null
+++ b/src/hnbap/HNBRegisterAccept.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBRegisterAccept.h>
+
+static int
+memb_hnbRegisterAccept_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbRegisterAccept_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbRegisterAccept_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbRegisterAccept_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbRegisterAccept_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbRegisterAccept_ies_specs_2 = {
+ sizeof(struct hnbRegisterAccept_ies),
+ offsetof(struct hnbRegisterAccept_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbRegisterAccept_ies_2 = {
+ "hnbRegisterAccept-ies",
+ "hnbRegisterAccept-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbRegisterAccept_ies_tags_2,
+ sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbRegisterAccept_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterAccept_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbRegisterAccept_ies_constr_2,
+ asn_MBR_hnbRegisterAccept_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbRegisterAccept_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBRegisterAccept_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterAccept, hnbRegisterAccept_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbRegisterAccept_ies_2,
+ memb_hnbRegisterAccept_ies_constraint_1,
+ &asn_PER_memb_hnbRegisterAccept_ies_constr_2,
+ 0,
+ "hnbRegisterAccept-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBRegisterAccept_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterAccept_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterAccept-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterAccept_specs_1 = {
+ sizeof(struct HNBRegisterAccept),
+ offsetof(struct HNBRegisterAccept, _asn_ctx),
+ asn_MAP_HNBRegisterAccept_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBRegisterAccept = {
+ "HNBRegisterAccept",
+ "HNBRegisterAccept",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBRegisterAccept_tags_1,
+ sizeof(asn_DEF_HNBRegisterAccept_tags_1)
+ /sizeof(asn_DEF_HNBRegisterAccept_tags_1[0]), /* 1 */
+ asn_DEF_HNBRegisterAccept_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBRegisterAccept_tags_1)
+ /sizeof(asn_DEF_HNBRegisterAccept_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBRegisterAccept_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBRegisterAccept_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBRegisterReject.c b/src/hnbap/HNBRegisterReject.c
new file mode 100644
index 0000000..077db72
--- /dev/null
+++ b/src/hnbap/HNBRegisterReject.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBRegisterReject.h>
+
+static int
+memb_hnbRegisterReject_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbRegisterReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbRegisterReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbRegisterReject_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbRegisterReject_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbRegisterReject_ies_specs_2 = {
+ sizeof(struct hnbRegisterReject_ies),
+ offsetof(struct hnbRegisterReject_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbRegisterReject_ies_2 = {
+ "hnbRegisterReject-ies",
+ "hnbRegisterReject-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbRegisterReject_ies_tags_2,
+ sizeof(asn_DEF_hnbRegisterReject_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterReject_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbRegisterReject_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbRegisterReject_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterReject_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbRegisterReject_ies_constr_2,
+ asn_MBR_hnbRegisterReject_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbRegisterReject_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBRegisterReject_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterReject, hnbRegisterReject_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbRegisterReject_ies_2,
+ memb_hnbRegisterReject_ies_constraint_1,
+ &asn_PER_memb_hnbRegisterReject_ies_constr_2,
+ 0,
+ "hnbRegisterReject-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBRegisterReject_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterReject_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterReject-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterReject_specs_1 = {
+ sizeof(struct HNBRegisterReject),
+ offsetof(struct HNBRegisterReject, _asn_ctx),
+ asn_MAP_HNBRegisterReject_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBRegisterReject = {
+ "HNBRegisterReject",
+ "HNBRegisterReject",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBRegisterReject_tags_1,
+ sizeof(asn_DEF_HNBRegisterReject_tags_1)
+ /sizeof(asn_DEF_HNBRegisterReject_tags_1[0]), /* 1 */
+ asn_DEF_HNBRegisterReject_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBRegisterReject_tags_1)
+ /sizeof(asn_DEF_HNBRegisterReject_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBRegisterReject_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBRegisterReject_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/HNBRegisterRequest.c b/src/hnbap/HNBRegisterRequest.c
new file mode 100644
index 0000000..9b58f9c
--- /dev/null
+++ b/src/hnbap/HNBRegisterRequest.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/HNBRegisterRequest.h>
+
+static int
+memb_hnbRegisterRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_hnbRegisterRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_hnbRegisterRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_hnbRegisterRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_hnbRegisterRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_hnbRegisterRequest_ies_specs_2 = {
+ sizeof(struct hnbRegisterRequest_ies),
+ offsetof(struct hnbRegisterRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hnbRegisterRequest_ies_2 = {
+ "hnbRegisterRequest-ies",
+ "hnbRegisterRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_hnbRegisterRequest_ies_tags_2,
+ sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_hnbRegisterRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2)
+ /sizeof(asn_DEF_hnbRegisterRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_hnbRegisterRequest_ies_constr_2,
+ asn_MBR_hnbRegisterRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_hnbRegisterRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HNBRegisterRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct HNBRegisterRequest, hnbRegisterRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_hnbRegisterRequest_ies_2,
+ memb_hnbRegisterRequest_ies_constraint_1,
+ &asn_PER_memb_hnbRegisterRequest_ies_constr_2,
+ 0,
+ "hnbRegisterRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_HNBRegisterRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HNBRegisterRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* hnbRegisterRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HNBRegisterRequest_specs_1 = {
+ sizeof(struct HNBRegisterRequest),
+ offsetof(struct HNBRegisterRequest, _asn_ctx),
+ asn_MAP_HNBRegisterRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_HNBRegisterRequest = {
+ "HNBRegisterRequest",
+ "HNBRegisterRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_HNBRegisterRequest_tags_1,
+ sizeof(asn_DEF_HNBRegisterRequest_tags_1)
+ /sizeof(asn_DEF_HNBRegisterRequest_tags_1[0]), /* 1 */
+ asn_DEF_HNBRegisterRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_HNBRegisterRequest_tags_1)
+ /sizeof(asn_DEF_HNBRegisterRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_HNBRegisterRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_HNBRegisterRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/IE-Extensions.c b/src/hnbap/IE-Extensions.c
new file mode 100644
index 0000000..67db752
--- /dev/null
+++ b/src/hnbap/IE-Extensions.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IE-Extensions.h>
+
+static asn_per_constraints_t asn_PER_type_IE_Extensions_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_IE_Extensions_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_IE_Extensions_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_IE_Extensions_specs_1 = {
+ sizeof(struct IE_Extensions),
+ offsetof(struct IE_Extensions, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_IE_Extensions = {
+ "IE-Extensions",
+ "IE-Extensions",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IE_Extensions_tags_1,
+ sizeof(asn_DEF_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_IE_Extensions_tags_1[0]), /* 1 */
+ asn_DEF_IE_Extensions_tags_1, /* Same as above */
+ sizeof(asn_DEF_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_IE_Extensions_tags_1[0]), /* 1 */
+ &asn_PER_type_IE_Extensions_constr_1,
+ asn_MBR_IE_Extensions_1,
+ 1, /* Single element */
+ &asn_SPC_IE_Extensions_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/IE.c b/src/hnbap/IE.c
new file mode 100644
index 0000000..5e6763a
--- /dev/null
+++ b/src/hnbap/IE.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IE.h>
+
+static asn_TYPE_member_t asn_MBR_IE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct IE, id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct IE, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct IE, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_IE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_IE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_IE_specs_1 = {
+ sizeof(struct IE),
+ offsetof(struct IE, _asn_ctx),
+ asn_MAP_IE_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_IE = {
+ "IE",
+ "IE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IE_tags_1,
+ sizeof(asn_DEF_IE_tags_1)
+ /sizeof(asn_DEF_IE_tags_1[0]), /* 1 */
+ asn_DEF_IE_tags_1, /* Same as above */
+ sizeof(asn_DEF_IE_tags_1)
+ /sizeof(asn_DEF_IE_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_IE_1,
+ 3, /* Elements count */
+ &asn_SPC_IE_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/IMEI.c b/src/hnbap/IMEI.c
new file mode 100644
index 0000000..a920c59
--- /dev/null
+++ b/src/hnbap/IMEI.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IMEI.h>
+
+int
+IMEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 60l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+IMEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+IMEI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+IMEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+IMEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+IMEI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+IMEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+IMEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+IMEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+IMEI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+IMEI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+IMEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_IMEI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 60l, 60l } /* (SIZE(60..60)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_IMEI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IMEI = {
+ "IMEI",
+ "IMEI",
+ IMEI_free,
+ IMEI_print,
+ IMEI_constraint,
+ IMEI_decode_ber,
+ IMEI_encode_der,
+ IMEI_decode_xer,
+ IMEI_encode_xer,
+ IMEI_decode_uper,
+ IMEI_encode_uper,
+ IMEI_decode_aper,
+ IMEI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IMEI_tags_1,
+ sizeof(asn_DEF_IMEI_tags_1)
+ /sizeof(asn_DEF_IMEI_tags_1[0]), /* 1 */
+ asn_DEF_IMEI_tags_1, /* Same as above */
+ sizeof(asn_DEF_IMEI_tags_1)
+ /sizeof(asn_DEF_IMEI_tags_1[0]), /* 1 */
+ &asn_PER_type_IMEI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/IMSI.c b/src/hnbap/IMSI.c
new file mode 100644
index 0000000..9b5f2da
--- /dev/null
+++ b/src/hnbap/IMSI.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IMSI.h>
+
+int
+IMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 3l && size <= 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+IMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+IMSI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+IMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+IMSI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+IMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+IMSI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+IMSI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+IMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_IMSI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 3l, 8l } /* (SIZE(3..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_IMSI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IMSI = {
+ "IMSI",
+ "IMSI",
+ IMSI_free,
+ IMSI_print,
+ IMSI_constraint,
+ IMSI_decode_ber,
+ IMSI_encode_der,
+ IMSI_decode_xer,
+ IMSI_encode_xer,
+ IMSI_decode_uper,
+ IMSI_encode_uper,
+ IMSI_decode_aper,
+ IMSI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IMSI_tags_1,
+ sizeof(asn_DEF_IMSI_tags_1)
+ /sizeof(asn_DEF_IMSI_tags_1[0]), /* 1 */
+ asn_DEF_IMSI_tags_1, /* Same as above */
+ sizeof(asn_DEF_IMSI_tags_1)
+ /sizeof(asn_DEF_IMSI_tags_1[0]), /* 1 */
+ &asn_PER_type_IMSI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/IMSIDS41.c b/src/hnbap/IMSIDS41.c
new file mode 100644
index 0000000..b2ebdbd
--- /dev/null
+++ b/src/hnbap/IMSIDS41.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IMSIDS41.h>
+
+int
+IMSIDS41_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 5l && size <= 7l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+IMSIDS41_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+IMSIDS41_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+IMSIDS41_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSIDS41_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+IMSIDS41_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSIDS41_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+IMSIDS41_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+IMSIDS41_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+IMSIDS41_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+IMSIDS41_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+IMSIDS41_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ IMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_IMSIDS41_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 2, 2, 5l, 7l } /* (SIZE(5..7)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_IMSIDS41_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IMSIDS41 = {
+ "IMSIDS41",
+ "IMSIDS41",
+ IMSIDS41_free,
+ IMSIDS41_print,
+ IMSIDS41_constraint,
+ IMSIDS41_decode_ber,
+ IMSIDS41_encode_der,
+ IMSIDS41_decode_xer,
+ IMSIDS41_encode_xer,
+ IMSIDS41_decode_uper,
+ IMSIDS41_encode_uper,
+ IMSIDS41_decode_aper,
+ IMSIDS41_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IMSIDS41_tags_1,
+ sizeof(asn_DEF_IMSIDS41_tags_1)
+ /sizeof(asn_DEF_IMSIDS41_tags_1[0]), /* 1 */
+ asn_DEF_IMSIDS41_tags_1, /* Same as above */
+ sizeof(asn_DEF_IMSIDS41_tags_1)
+ /sizeof(asn_DEF_IMSIDS41_tags_1[0]), /* 1 */
+ &asn_PER_type_IMSIDS41_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/IMSIESN.c b/src/hnbap/IMSIESN.c
new file mode 100644
index 0000000..31425ea
--- /dev/null
+++ b/src/hnbap/IMSIESN.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IMSIESN.h>
+
+static asn_TYPE_member_t asn_MBR_IMSIESN_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct IMSIESN, iMSIDS41),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IMSIDS41,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSIDS41"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct IMSIESN, eSN),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ESN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "eSN"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_IMSIESN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_IMSIESN_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMSIDS41 */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eSN */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_IMSIESN_specs_1 = {
+ sizeof(struct IMSIESN),
+ offsetof(struct IMSIESN, _asn_ctx),
+ asn_MAP_IMSIESN_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_IMSIESN = {
+ "IMSIESN",
+ "IMSIESN",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IMSIESN_tags_1,
+ sizeof(asn_DEF_IMSIESN_tags_1)
+ /sizeof(asn_DEF_IMSIESN_tags_1[0]), /* 1 */
+ asn_DEF_IMSIESN_tags_1, /* Same as above */
+ sizeof(asn_DEF_IMSIESN_tags_1)
+ /sizeof(asn_DEF_IMSIESN_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_IMSIESN_1,
+ 2, /* Elements count */
+ &asn_SPC_IMSIESN_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/IP-Address.c b/src/hnbap/IP-Address.c
new file mode 100644
index 0000000..ee977b4
--- /dev/null
+++ b/src/hnbap/IP-Address.c
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/IP-Address.h>
+
+static asn_per_constraints_t asn_PER_type_ipaddress_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ipaddress_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct ipaddress, choice.ipv4info),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Ipv4Address,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ipv4info"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct ipaddress, choice.ipv6info),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Ipv6Address,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ipv6info"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ipaddress_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipv4info */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipv6info */
+};
+static asn_CHOICE_specifics_t asn_SPC_ipaddress_specs_2 = {
+ sizeof(struct ipaddress),
+ offsetof(struct ipaddress, _asn_ctx),
+ offsetof(struct ipaddress, present),
+ sizeof(((struct ipaddress *)0)->present),
+ asn_MAP_ipaddress_tag2el_2,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ipaddress_2 = {
+ "ipaddress",
+ "ipaddress",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_ipaddress_constr_2,
+ asn_MBR_ipaddress_2,
+ 2, /* Elements count */
+ &asn_SPC_ipaddress_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_IP_Address_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct IP_Address, ipaddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ipaddress_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ipaddress"
+ },
+ { ATF_POINTER, 1, offsetof(struct IP_Address, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_IP_Address_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_IP_Address_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_IP_Address_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipaddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_IP_Address_specs_1 = {
+ sizeof(struct IP_Address),
+ offsetof(struct IP_Address, _asn_ctx),
+ asn_MAP_IP_Address_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_IP_Address_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_IP_Address = {
+ "IP-Address",
+ "IP-Address",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_IP_Address_tags_1,
+ sizeof(asn_DEF_IP_Address_tags_1)
+ /sizeof(asn_DEF_IP_Address_tags_1[0]), /* 1 */
+ asn_DEF_IP_Address_tags_1, /* Same as above */
+ sizeof(asn_DEF_IP_Address_tags_1)
+ /sizeof(asn_DEF_IP_Address_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_IP_Address_1,
+ 2, /* Elements count */
+ &asn_SPC_IP_Address_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/InitiatingMessage.c b/src/hnbap/InitiatingMessage.c
new file mode 100644
index 0000000..c165290
--- /dev/null
+++ b/src/hnbap/InitiatingMessage.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/InitiatingMessage.h>
+
+static asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = {
+ sizeof(struct InitiatingMessage),
+ offsetof(struct InitiatingMessage, _asn_ctx),
+ asn_MAP_InitiatingMessage_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = {
+ "InitiatingMessage",
+ "InitiatingMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_InitiatingMessage_tags_1,
+ sizeof(asn_DEF_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */
+ asn_DEF_InitiatingMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_InitiatingMessage_1,
+ 3, /* Elements count */
+ &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Ipv4Address.c b/src/hnbap/Ipv4Address.c
new file mode 100644
index 0000000..b56a5a5
--- /dev/null
+++ b/src/hnbap/Ipv4Address.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Ipv4Address.h>
+
+int
+Ipv4Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Ipv4Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+Ipv4Address_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Ipv4Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv4Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Ipv4Address_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv4Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Ipv4Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv4Address_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Ipv4Address_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Ipv4Address_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Ipv4Address_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Ipv4Address_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Ipv4Address_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Ipv4Address_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Ipv4Address = {
+ "Ipv4Address",
+ "Ipv4Address",
+ Ipv4Address_free,
+ Ipv4Address_print,
+ Ipv4Address_constraint,
+ Ipv4Address_decode_ber,
+ Ipv4Address_encode_der,
+ Ipv4Address_decode_xer,
+ Ipv4Address_encode_xer,
+ Ipv4Address_decode_uper,
+ Ipv4Address_encode_uper,
+ Ipv4Address_decode_aper,
+ Ipv4Address_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Ipv4Address_tags_1,
+ sizeof(asn_DEF_Ipv4Address_tags_1)
+ /sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */
+ asn_DEF_Ipv4Address_tags_1, /* Same as above */
+ sizeof(asn_DEF_Ipv4Address_tags_1)
+ /sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */
+ &asn_PER_type_Ipv4Address_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/Ipv6Address.c b/src/hnbap/Ipv6Address.c
new file mode 100644
index 0000000..5be471f
--- /dev/null
+++ b/src/hnbap/Ipv6Address.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Ipv6Address.h>
+
+int
+Ipv6Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 16l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Ipv6Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+Ipv6Address_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Ipv6Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv6Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Ipv6Address_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv6Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Ipv6Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Ipv6Address_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Ipv6Address_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Ipv6Address_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Ipv6Address_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Ipv6Address_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Ipv6Address_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 16l, 16l } /* (SIZE(16..16)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Ipv6Address_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Ipv6Address = {
+ "Ipv6Address",
+ "Ipv6Address",
+ Ipv6Address_free,
+ Ipv6Address_print,
+ Ipv6Address_constraint,
+ Ipv6Address_decode_ber,
+ Ipv6Address_encode_der,
+ Ipv6Address_decode_xer,
+ Ipv6Address_encode_xer,
+ Ipv6Address_decode_uper,
+ Ipv6Address_encode_uper,
+ Ipv6Address_decode_aper,
+ Ipv6Address_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Ipv6Address_tags_1,
+ sizeof(asn_DEF_Ipv6Address_tags_1)
+ /sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */
+ asn_DEF_Ipv6Address_tags_1, /* Same as above */
+ sizeof(asn_DEF_Ipv6Address_tags_1)
+ /sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */
+ &asn_PER_type_Ipv6Address_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/Iurh-Signalling-TNL-AddressList.c b/src/hnbap/Iurh-Signalling-TNL-AddressList.c
new file mode 100644
index 0000000..f418eb1
--- /dev/null
+++ b/src/hnbap/Iurh-Signalling-TNL-AddressList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Iurh-Signalling-TNL-AddressList.h>
+
+static asn_per_constraints_t asn_PER_type_Iurh_Signalling_TNL_AddressList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 2, 2, 1l, 3l } /* (SIZE(1..3)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Iurh_Signalling_TNL_AddressList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IP_Address,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_Iurh_Signalling_TNL_AddressList_specs_1 = {
+ sizeof(struct Iurh_Signalling_TNL_AddressList),
+ offsetof(struct Iurh_Signalling_TNL_AddressList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_Iurh_Signalling_TNL_AddressList = {
+ "Iurh-Signalling-TNL-AddressList",
+ "Iurh-Signalling-TNL-AddressList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1,
+ sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1)
+ /sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[0]), /* 1 */
+ asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1, /* Same as above */
+ sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1)
+ /sizeof(asn_DEF_Iurh_Signalling_TNL_AddressList_tags_1[0]), /* 1 */
+ &asn_PER_type_Iurh_Signalling_TNL_AddressList_constr_1,
+ asn_MBR_Iurh_Signalling_TNL_AddressList_1,
+ 1, /* Single element */
+ &asn_SPC_Iurh_Signalling_TNL_AddressList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/LAC.c b/src/hnbap/LAC.c
new file mode 100644
index 0000000..a46147f
--- /dev/null
+++ b/src/hnbap/LAC.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/LAC.h>
+
+int
+LAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+LAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+LAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+LAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+LAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+LAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+LAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+LAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+LAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+LAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+LAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+LAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ LAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_LAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_LAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_LAC = {
+ "LAC",
+ "LAC",
+ LAC_free,
+ LAC_print,
+ LAC_constraint,
+ LAC_decode_ber,
+ LAC_encode_der,
+ LAC_decode_xer,
+ LAC_encode_xer,
+ LAC_decode_uper,
+ LAC_encode_uper,
+ LAC_decode_aper,
+ LAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_LAC_tags_1,
+ sizeof(asn_DEF_LAC_tags_1)
+ /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */
+ asn_DEF_LAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_LAC_tags_1)
+ /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */
+ &asn_PER_type_LAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/LAI.c b/src/hnbap/LAI.c
new file mode 100644
index 0000000..1bb23c1
--- /dev/null
+++ b/src/hnbap/LAI.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/LAI.h>
+
+static asn_TYPE_member_t asn_MBR_LAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct LAI, pLMNID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct LAI, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_LAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lAC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_LAI_specs_1 = {
+ sizeof(struct LAI),
+ offsetof(struct LAI, _asn_ctx),
+ asn_MAP_LAI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_LAI = {
+ "LAI",
+ "LAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_LAI_tags_1,
+ sizeof(asn_DEF_LAI_tags_1)
+ /sizeof(asn_DEF_LAI_tags_1[0]), /* 1 */
+ asn_DEF_LAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_LAI_tags_1)
+ /sizeof(asn_DEF_LAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_LAI_1,
+ 2, /* Elements count */
+ &asn_SPC_LAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/MacroCellID.c b/src/hnbap/MacroCellID.c
new file mode 100644
index 0000000..215a54e
--- /dev/null
+++ b/src/hnbap/MacroCellID.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/MacroCellID.h>
+
+static asn_per_constraints_t asn_PER_type_MacroCellID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MacroCellID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MacroCellID, choice.uTRANCellID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UTRANCellID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uTRANCellID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MacroCellID, choice.gERANCellID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gERANCellID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MacroCellID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uTRANCellID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gERANCellID */
+};
+static asn_CHOICE_specifics_t asn_SPC_MacroCellID_specs_1 = {
+ sizeof(struct MacroCellID),
+ offsetof(struct MacroCellID, _asn_ctx),
+ offsetof(struct MacroCellID, present),
+ sizeof(((struct MacroCellID *)0)->present),
+ asn_MAP_MacroCellID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MacroCellID = {
+ "MacroCellID",
+ "MacroCellID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_MacroCellID_constr_1,
+ asn_MBR_MacroCellID_1,
+ 2, /* Elements count */
+ &asn_SPC_MacroCellID_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/MacroCoverageInformation.c b/src/hnbap/MacroCoverageInformation.c
new file mode 100644
index 0000000..a60f41c
--- /dev/null
+++ b/src/hnbap/MacroCoverageInformation.c
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/MacroCoverageInformation.h>
+
+static asn_TYPE_member_t asn_MBR_MacroCoverageInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MacroCoverageInformation, cellIdentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_MacroCellID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellIdentity"
+ },
+ { ATF_POINTER, 1, offsetof(struct MacroCoverageInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MacroCoverageInformation_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MacroCoverageInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MacroCoverageInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MacroCoverageInformation_specs_1 = {
+ sizeof(struct MacroCoverageInformation),
+ offsetof(struct MacroCoverageInformation, _asn_ctx),
+ asn_MAP_MacroCoverageInformation_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_MacroCoverageInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_MacroCoverageInformation = {
+ "MacroCoverageInformation",
+ "MacroCoverageInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MacroCoverageInformation_tags_1,
+ sizeof(asn_DEF_MacroCoverageInformation_tags_1)
+ /sizeof(asn_DEF_MacroCoverageInformation_tags_1[0]), /* 1 */
+ asn_DEF_MacroCoverageInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_MacroCoverageInformation_tags_1)
+ /sizeof(asn_DEF_MacroCoverageInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MacroCoverageInformation_1,
+ 2, /* Elements count */
+ &asn_SPC_MacroCoverageInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Makefile.am b/src/hnbap/Makefile.am
new file mode 100644
index 0000000..8a2c56a
--- /dev/null
+++ b/src/hnbap/Makefile.am
@@ -0,0 +1,250 @@
+ASN_MODULE_SOURCES= \
+ Criticality.c \
+ Presence.c \
+ PrivateIE-ID.c \
+ ProcedureCode.c \
+ ProtocolIE-ID.c \
+ TriggeringMessage.c \
+ IE-Extensions.c \
+ Access-stratum-release-indicator.c \
+ AccessResult.c \
+ AltitudeAndDirection.c \
+ BackoffTimer.c \
+ BindingID.c \
+ Cause.c \
+ CauseRadioNetwork.c \
+ CauseTransport.c \
+ CauseProtocol.c \
+ CauseMisc.c \
+ CellIdentity.c \
+ CELL-FACHMobilitySupport.c \
+ Context-ID.c \
+ CriticalityDiagnostics.c \
+ CriticalityDiagnostics-IE-List.c \
+ CSG-ID.c \
+ CSG-Capability.c \
+ CSGMembershipStatus.c \
+ CGI.c \
+ CI.c \
+ CN-DomainIndicator.c \
+ ESN.c \
+ GeographicalLocation.c \
+ GeographicalCoordinates.c \
+ GTP-TEI.c \
+ HNBCapacity.c \
+ HNB-Cell-Access-Mode.c \
+ HNB-Cell-Identifier.c \
+ HNB-GWResponse.c \
+ HNB-RNL-Identity.c \
+ HNBConfigInfo.c \
+ ConfigurationInformation.c \
+ HNBConfigurationInformationProvided.c \
+ HNBConfigurationInformationMissing.c \
+ HNB-Location-Information.c \
+ HNB-Identity.c \
+ HNB-Identity-Info.c \
+ IMEI.c \
+ IMSI.c \
+ IMSIDS41.c \
+ IMSIESN.c \
+ IP-Address.c \
+ Ipv4Address.c \
+ Ipv6Address.c \
+ Iurh-Signalling-TNL-AddressList.c \
+ LAC.c \
+ LAI.c \
+ MacroCoverageInformation.c \
+ MacroCellID.c \
+ MuxPortNumber.c \
+ NeighbourCellIdentityList.c \
+ NeighbourIdentity.c \
+ NeighbourInfoList.c \
+ AdditionalNeighbourInfoList.c \
+ NeighbourInfoRequestList.c \
+ NeighbourInfoRequestItem.c \
+ PLMNidentity.c \
+ PSC.c \
+ PTMSI.c \
+ PTMSIRAI.c \
+ RAB-ID.c \
+ RABList.c \
+ RABListItem.c \
+ RAC.c \
+ RAI.c \
+ Registration-Cause.c \
+ RNC-ID.c \
+ SAC.c \
+ S-RNTIPrefix.c \
+ TMSILAI.c \
+ TMSIDS41.c \
+ TransportInfo.c \
+ TransportLayerAddress.c \
+ Tunnel-Information.c \
+ TypeOfError.c \
+ UDP-Port-Number.c \
+ UE-Capabilities.c \
+ UTRANCellID.c \
+ UE-Identity.c \
+ Update-cause.c \
+ URAIdentityList.c \
+ URAIdentity.c \
+ U-RNTI.c \
+ UnknownU-RNTIIndication.c \
+ HNBAP-PDU.c \
+ InitiatingMessage.c \
+ SuccessfulOutcome.c \
+ UnsuccessfulOutcome.c \
+ HNBRegisterRequest.c \
+ HNBRegisterAccept.c \
+ HNBRegisterReject.c \
+ UERegisterRequest.c \
+ UERegisterAccept.c \
+ UERegisterReject.c \
+ UEDe-Register.c \
+ HNBDe-Register.c \
+ ErrorIndication.c \
+ CSGMembershipUpdate.c \
+ TNLUpdateRequest.c \
+ TNLUpdateResponse.c \
+ TNLUpdateFailure.c \
+ HNBConfigTransferRequest.c \
+ HNBConfigTransferResponse.c \
+ RelocationComplete.c \
+ U-RNTIQueryRequest.c \
+ U-RNTIQueryResponse.c \
+ PrivateMessage.c \
+ IE.c
+
+ASN_MODULE_INC= \
+ Criticality.h \
+ Presence.h \
+ PrivateIE-ID.h \
+ ProcedureCode.h \
+ ProtocolIE-ID.h \
+ TriggeringMessage.h \
+ IE-Extensions.h \
+ Access-stratum-release-indicator.h \
+ AccessResult.h \
+ AltitudeAndDirection.h \
+ BackoffTimer.h \
+ BindingID.h \
+ Cause.h \
+ CauseRadioNetwork.h \
+ CauseTransport.h \
+ CauseProtocol.h \
+ CauseMisc.h \
+ CellIdentity.h \
+ CELL-FACHMobilitySupport.h \
+ Context-ID.h \
+ CriticalityDiagnostics.h \
+ CriticalityDiagnostics-IE-List.h \
+ CSG-ID.h \
+ CSG-Capability.h \
+ CSGMembershipStatus.h \
+ CGI.h \
+ CI.h \
+ CN-DomainIndicator.h \
+ ESN.h \
+ GeographicalLocation.h \
+ GeographicalCoordinates.h \
+ GTP-TEI.h \
+ HNBCapacity.h \
+ HNB-Cell-Access-Mode.h \
+ HNB-Cell-Identifier.h \
+ HNB-GWResponse.h \
+ HNB-RNL-Identity.h \
+ HNBConfigInfo.h \
+ ConfigurationInformation.h \
+ HNBConfigurationInformationProvided.h \
+ HNBConfigurationInformationMissing.h \
+ HNB-Location-Information.h \
+ HNB-Identity.h \
+ HNB-Identity-Info.h \
+ IMEI.h \
+ IMSI.h \
+ IMSIDS41.h \
+ IMSIESN.h \
+ IP-Address.h \
+ Ipv4Address.h \
+ Ipv6Address.h \
+ Iurh-Signalling-TNL-AddressList.h \
+ LAC.h \
+ LAI.h \
+ MacroCoverageInformation.h \
+ MacroCellID.h \
+ MuxPortNumber.h \
+ NeighbourCellIdentityList.h \
+ NeighbourIdentity.h \
+ NeighbourInfoList.h \
+ AdditionalNeighbourInfoList.h \
+ NeighbourInfoRequestList.h \
+ NeighbourInfoRequestItem.h \
+ PLMNidentity.h \
+ PSC.h \
+ PTMSI.h \
+ PTMSIRAI.h \
+ RAB-ID.h \
+ RABList.h \
+ RABListItem.h \
+ RAC.h \
+ RAI.h \
+ Registration-Cause.h \
+ RNC-ID.h \
+ SAC.h \
+ S-RNTIPrefix.h \
+ TMSILAI.h \
+ TMSIDS41.h \
+ TransportInfo.h \
+ TransportLayerAddress.h \
+ Tunnel-Information.h \
+ TypeOfError.h \
+ UDP-Port-Number.h \
+ UE-Capabilities.h \
+ UTRANCellID.h \
+ UE-Identity.h \
+ Update-cause.h \
+ URAIdentityList.h \
+ URAIdentity.h \
+ U-RNTI.h \
+ UnknownU-RNTIIndication.h \
+ HNBAP-PDU.h \
+ InitiatingMessage.h \
+ SuccessfulOutcome.h \
+ UnsuccessfulOutcome.h \
+ HNBRegisterRequest.h \
+ HNBRegisterAccept.h \
+ HNBRegisterReject.h \
+ UERegisterRequest.h \
+ UERegisterAccept.h \
+ UERegisterReject.h \
+ UEDe-Register.h \
+ HNBDe-Register.h \
+ ErrorIndication.h \
+ CSGMembershipUpdate.h \
+ TNLUpdateRequest.h \
+ TNLUpdateResponse.h \
+ TNLUpdateFailure.h \
+ HNBConfigTransferRequest.h \
+ HNBConfigTransferResponse.h \
+ RelocationComplete.h \
+ U-RNTIQueryRequest.h \
+ U-RNTIQueryResponse.h \
+ PrivateMessage.h \
+ IE.h
+
+AM_CFLAGS = -I$(top_srcdir)/include $(ASN1C_CFLAGS) $(OSMOCORE_CFLAGS)
+
+HNBAP_ASN1 = $(top_srcdir)/asn1/hnbap
+
+noinst_LIBRARIES=libosmo-asn1-hnbap.a
+libosmo_asn1_hnbap_a_SOURCES=$(ASN_MODULE_SOURCES)
+libosmo_asn1_hnbap_a_LIBADD=$(ASN1C_LDADD)
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+ asn1c -gen-PER -fnative-types $(HNBAP_ASN1)/HNBAP-CommonDataTypes.asn $(HNBAP_ASN1)/HNBAP-Constants.asn $(HNBAP_ASN1)/HNBAP-IEs.asn $(HNBAP_ASN1)/HNBAP-PDU.asn
+# remove the local copy of the runtime code
+ -rm ANY.* BOOLEAN.* INTEGER.* NativeEnumerated.* NativeInteger.* OBJECT_IDENTIFIER.* asn_* OCTET_STRING.* converter-sample.c per_* xer_* constr* der_* ber_* BIT_STRING.*
+# change include style to `#include <dir/foo.h>'
+ $(top_srcdir)/move-asn1-header-files.sh osmocom/hnbap $(ASN_MODULE_INC)
diff --git a/src/hnbap/MuxPortNumber.c b/src/hnbap/MuxPortNumber.c
new file mode 100644
index 0000000..32e88f8
--- /dev/null
+++ b/src/hnbap/MuxPortNumber.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/MuxPortNumber.h>
+
+int
+MuxPortNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1024l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+MuxPortNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+MuxPortNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+MuxPortNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+MuxPortNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+MuxPortNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+MuxPortNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+MuxPortNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+MuxPortNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+MuxPortNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+MuxPortNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+MuxPortNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ MuxPortNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_MuxPortNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 1024l, 65535l } /* (1024..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MuxPortNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MuxPortNumber = {
+ "MuxPortNumber",
+ "MuxPortNumber",
+ MuxPortNumber_free,
+ MuxPortNumber_print,
+ MuxPortNumber_constraint,
+ MuxPortNumber_decode_ber,
+ MuxPortNumber_encode_der,
+ MuxPortNumber_decode_xer,
+ MuxPortNumber_encode_xer,
+ MuxPortNumber_decode_uper,
+ MuxPortNumber_encode_uper,
+ MuxPortNumber_decode_aper,
+ MuxPortNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MuxPortNumber_tags_1,
+ sizeof(asn_DEF_MuxPortNumber_tags_1)
+ /sizeof(asn_DEF_MuxPortNumber_tags_1[0]), /* 1 */
+ asn_DEF_MuxPortNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_MuxPortNumber_tags_1)
+ /sizeof(asn_DEF_MuxPortNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_MuxPortNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/NeighbourCellIdentityList.c b/src/hnbap/NeighbourCellIdentityList.c
new file mode 100644
index 0000000..147780a
--- /dev/null
+++ b/src/hnbap/NeighbourCellIdentityList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/NeighbourCellIdentityList.h>
+
+static asn_per_constraints_t asn_PER_type_NeighbourCellIdentityList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 0l, 128l } /* (SIZE(0..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_NeighbourCellIdentityList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_NeighbourIdentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_NeighbourCellIdentityList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_NeighbourCellIdentityList_specs_1 = {
+ sizeof(struct NeighbourCellIdentityList),
+ offsetof(struct NeighbourCellIdentityList, _asn_ctx),
+ 2, /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighbourCellIdentityList = {
+ "NeighbourCellIdentityList",
+ "NeighbourCellIdentityList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_NeighbourCellIdentityList_tags_1,
+ sizeof(asn_DEF_NeighbourCellIdentityList_tags_1)
+ /sizeof(asn_DEF_NeighbourCellIdentityList_tags_1[0]), /* 1 */
+ asn_DEF_NeighbourCellIdentityList_tags_1, /* Same as above */
+ sizeof(asn_DEF_NeighbourCellIdentityList_tags_1)
+ /sizeof(asn_DEF_NeighbourCellIdentityList_tags_1[0]), /* 1 */
+ &asn_PER_type_NeighbourCellIdentityList_constr_1,
+ asn_MBR_NeighbourCellIdentityList_1,
+ 1, /* Single element */
+ &asn_SPC_NeighbourCellIdentityList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/NeighbourIdentity.c b/src/hnbap/NeighbourIdentity.c
new file mode 100644
index 0000000..0b23df9
--- /dev/null
+++ b/src/hnbap/NeighbourIdentity.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/NeighbourIdentity.h>
+
+static asn_per_constraints_t asn_PER_type_NeighbourIdentity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_NeighbourIdentity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct NeighbourIdentity, choice.hNB_RNL_Identity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_HNB_RNL_Identity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hNB-RNL-Identity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct NeighbourIdentity, choice.cell_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CellIdentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cell-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighbourIdentity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hNB-RNL-Identity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cell-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_NeighbourIdentity_specs_1 = {
+ sizeof(struct NeighbourIdentity),
+ offsetof(struct NeighbourIdentity, _asn_ctx),
+ offsetof(struct NeighbourIdentity, present),
+ sizeof(((struct NeighbourIdentity *)0)->present),
+ asn_MAP_NeighbourIdentity_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighbourIdentity = {
+ "NeighbourIdentity",
+ "NeighbourIdentity",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_NeighbourIdentity_constr_1,
+ asn_MBR_NeighbourIdentity_1,
+ 2, /* Elements count */
+ &asn_SPC_NeighbourIdentity_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/NeighbourInfoList.c b/src/hnbap/NeighbourInfoList.c
new file mode 100644
index 0000000..457a208
--- /dev/null
+++ b/src/hnbap/NeighbourInfoList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/NeighbourInfoList.h>
+
+static asn_per_constraints_t asn_PER_type_NeighbourInfoList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_NeighbourInfoList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_HNBConfigInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_NeighbourInfoList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_NeighbourInfoList_specs_1 = {
+ sizeof(struct NeighbourInfoList),
+ offsetof(struct NeighbourInfoList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighbourInfoList = {
+ "NeighbourInfoList",
+ "NeighbourInfoList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_NeighbourInfoList_tags_1,
+ sizeof(asn_DEF_NeighbourInfoList_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoList_tags_1[0]), /* 1 */
+ asn_DEF_NeighbourInfoList_tags_1, /* Same as above */
+ sizeof(asn_DEF_NeighbourInfoList_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoList_tags_1[0]), /* 1 */
+ &asn_PER_type_NeighbourInfoList_constr_1,
+ asn_MBR_NeighbourInfoList_1,
+ 1, /* Single element */
+ &asn_SPC_NeighbourInfoList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/NeighbourInfoRequestItem.c b/src/hnbap/NeighbourInfoRequestItem.c
new file mode 100644
index 0000000..0db194c
--- /dev/null
+++ b/src/hnbap/NeighbourInfoRequestItem.c
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/NeighbourInfoRequestItem.h>
+
+static asn_TYPE_member_t asn_MBR_NeighbourInfoRequestItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct NeighbourInfoRequestItem, hnb_RNL_Identity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_HNB_RNL_Identity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "hnb-RNL-Identity"
+ },
+ { ATF_POINTER, 1, offsetof(struct NeighbourInfoRequestItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_NeighbourInfoRequestItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_NeighbourInfoRequestItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighbourInfoRequestItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* hnb-RNL-Identity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_NeighbourInfoRequestItem_specs_1 = {
+ sizeof(struct NeighbourInfoRequestItem),
+ offsetof(struct NeighbourInfoRequestItem, _asn_ctx),
+ asn_MAP_NeighbourInfoRequestItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_NeighbourInfoRequestItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestItem = {
+ "NeighbourInfoRequestItem",
+ "NeighbourInfoRequestItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_NeighbourInfoRequestItem_tags_1,
+ sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1[0]), /* 1 */
+ asn_DEF_NeighbourInfoRequestItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoRequestItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_NeighbourInfoRequestItem_1,
+ 2, /* Elements count */
+ &asn_SPC_NeighbourInfoRequestItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/NeighbourInfoRequestList.c b/src/hnbap/NeighbourInfoRequestList.c
new file mode 100644
index 0000000..20c786e
--- /dev/null
+++ b/src/hnbap/NeighbourInfoRequestList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/NeighbourInfoRequestList.h>
+
+static asn_per_constraints_t asn_PER_type_NeighbourInfoRequestList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_NeighbourInfoRequestList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_NeighbourInfoRequestItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_NeighbourInfoRequestList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_NeighbourInfoRequestList_specs_1 = {
+ sizeof(struct NeighbourInfoRequestList),
+ offsetof(struct NeighbourInfoRequestList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighbourInfoRequestList = {
+ "NeighbourInfoRequestList",
+ "NeighbourInfoRequestList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_NeighbourInfoRequestList_tags_1,
+ sizeof(asn_DEF_NeighbourInfoRequestList_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoRequestList_tags_1[0]), /* 1 */
+ asn_DEF_NeighbourInfoRequestList_tags_1, /* Same as above */
+ sizeof(asn_DEF_NeighbourInfoRequestList_tags_1)
+ /sizeof(asn_DEF_NeighbourInfoRequestList_tags_1[0]), /* 1 */
+ &asn_PER_type_NeighbourInfoRequestList_constr_1,
+ asn_MBR_NeighbourInfoRequestList_1,
+ 1, /* Single element */
+ &asn_SPC_NeighbourInfoRequestList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/PLMNidentity.c b/src/hnbap/PLMNidentity.c
new file mode 100644
index 0000000..8356b6c
--- /dev/null
+++ b/src/hnbap/PLMNidentity.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PLMNidentity.h>
+
+int
+PLMNidentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+PLMNidentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+PLMNidentity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+PLMNidentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+PLMNidentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+PLMNidentity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+PLMNidentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+PLMNidentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+PLMNidentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+PLMNidentity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+PLMNidentity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+PLMNidentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_PLMNidentity_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (SIZE(3..3)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PLMNidentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PLMNidentity = {
+ "PLMNidentity",
+ "PLMNidentity",
+ PLMNidentity_free,
+ PLMNidentity_print,
+ PLMNidentity_constraint,
+ PLMNidentity_decode_ber,
+ PLMNidentity_encode_der,
+ PLMNidentity_decode_xer,
+ PLMNidentity_encode_xer,
+ PLMNidentity_decode_uper,
+ PLMNidentity_encode_uper,
+ PLMNidentity_decode_aper,
+ PLMNidentity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_PLMNidentity_tags_1,
+ sizeof(asn_DEF_PLMNidentity_tags_1)
+ /sizeof(asn_DEF_PLMNidentity_tags_1[0]), /* 1 */
+ asn_DEF_PLMNidentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_PLMNidentity_tags_1)
+ /sizeof(asn_DEF_PLMNidentity_tags_1[0]), /* 1 */
+ &asn_PER_type_PLMNidentity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/PSC.c b/src/hnbap/PSC.c
new file mode 100644
index 0000000..378f09f
--- /dev/null
+++ b/src/hnbap/PSC.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PSC.h>
+
+int
+PSC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 9l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+PSC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+PSC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+PSC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+PSC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+PSC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+PSC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+PSC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+PSC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+PSC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+PSC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+PSC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PSC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_PSC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 9l, 9l } /* (SIZE(9..9)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PSC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PSC = {
+ "PSC",
+ "PSC",
+ PSC_free,
+ PSC_print,
+ PSC_constraint,
+ PSC_decode_ber,
+ PSC_encode_der,
+ PSC_decode_xer,
+ PSC_encode_xer,
+ PSC_decode_uper,
+ PSC_encode_uper,
+ PSC_decode_aper,
+ PSC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_PSC_tags_1,
+ sizeof(asn_DEF_PSC_tags_1)
+ /sizeof(asn_DEF_PSC_tags_1[0]), /* 1 */
+ asn_DEF_PSC_tags_1, /* Same as above */
+ sizeof(asn_DEF_PSC_tags_1)
+ /sizeof(asn_DEF_PSC_tags_1[0]), /* 1 */
+ &asn_PER_type_PSC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/PTMSI.c b/src/hnbap/PTMSI.c
new file mode 100644
index 0000000..3b37f57
--- /dev/null
+++ b/src/hnbap/PTMSI.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PTMSI.h>
+
+int
+PTMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+PTMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+PTMSI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+PTMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+PTMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+PTMSI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+PTMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+PTMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+PTMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+PTMSI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+PTMSI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+PTMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ PTMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_PTMSI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PTMSI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PTMSI = {
+ "PTMSI",
+ "PTMSI",
+ PTMSI_free,
+ PTMSI_print,
+ PTMSI_constraint,
+ PTMSI_decode_ber,
+ PTMSI_encode_der,
+ PTMSI_decode_xer,
+ PTMSI_encode_xer,
+ PTMSI_decode_uper,
+ PTMSI_encode_uper,
+ PTMSI_decode_aper,
+ PTMSI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_PTMSI_tags_1,
+ sizeof(asn_DEF_PTMSI_tags_1)
+ /sizeof(asn_DEF_PTMSI_tags_1[0]), /* 1 */
+ asn_DEF_PTMSI_tags_1, /* Same as above */
+ sizeof(asn_DEF_PTMSI_tags_1)
+ /sizeof(asn_DEF_PTMSI_tags_1[0]), /* 1 */
+ &asn_PER_type_PTMSI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/PTMSIRAI.c b/src/hnbap/PTMSIRAI.c
new file mode 100644
index 0000000..d592ee1
--- /dev/null
+++ b/src/hnbap/PTMSIRAI.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PTMSIRAI.h>
+
+static asn_TYPE_member_t asn_MBR_PTMSIRAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct PTMSIRAI, pTMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PTMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pTMSI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct PTMSIRAI, rAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAI"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_PTMSIRAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PTMSIRAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pTMSI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rAI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_PTMSIRAI_specs_1 = {
+ sizeof(struct PTMSIRAI),
+ offsetof(struct PTMSIRAI, _asn_ctx),
+ asn_MAP_PTMSIRAI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_PTMSIRAI = {
+ "PTMSIRAI",
+ "PTMSIRAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_PTMSIRAI_tags_1,
+ sizeof(asn_DEF_PTMSIRAI_tags_1)
+ /sizeof(asn_DEF_PTMSIRAI_tags_1[0]), /* 1 */
+ asn_DEF_PTMSIRAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_PTMSIRAI_tags_1)
+ /sizeof(asn_DEF_PTMSIRAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_PTMSIRAI_1,
+ 2, /* Elements count */
+ &asn_SPC_PTMSIRAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Presence.c b/src/hnbap/Presence.c
new file mode 100644
index 0000000..f27cca7
--- /dev/null
+++ b/src/hnbap/Presence.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Presence.h>
+
+int
+Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+Presence_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Presence_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Presence_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Presence_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Presence_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = {
+ { 0, 8, "optional" },
+ { 1, 11, "conditional" },
+ { 2, 9, "mandatory" }
+};
+static const unsigned int asn_MAP_Presence_enum2value_1[] = {
+ 1, /* conditional(1) */
+ 2, /* mandatory(2) */
+ 0 /* optional(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = {
+ asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Presence = {
+ "Presence",
+ "Presence",
+ Presence_free,
+ Presence_print,
+ Presence_constraint,
+ Presence_decode_ber,
+ Presence_encode_der,
+ Presence_decode_xer,
+ Presence_encode_xer,
+ Presence_decode_uper,
+ Presence_encode_uper,
+ Presence_decode_aper,
+ Presence_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Presence_tags_1,
+ sizeof(asn_DEF_Presence_tags_1)
+ /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */
+ asn_DEF_Presence_tags_1, /* Same as above */
+ sizeof(asn_DEF_Presence_tags_1)
+ /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */
+ &asn_PER_type_Presence_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_Presence_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/PrivateIE-ID.c b/src/hnbap/PrivateIE-ID.c
new file mode 100644
index 0000000..183852e
--- /dev/null
+++ b/src/hnbap/PrivateIE-ID.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PrivateIE-ID.h>
+
+static int
+memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.local),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_local_constraint_1,
+ &asn_PER_memb_local_constr_2,
+ 0,
+ "local"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.global),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OBJECT_IDENTIFIER,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "global"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PrivateIE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */
+};
+static asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1 = {
+ sizeof(struct PrivateIE_ID),
+ offsetof(struct PrivateIE_ID, _asn_ctx),
+ offsetof(struct PrivateIE_ID, present),
+ sizeof(((struct PrivateIE_ID *)0)->present),
+ asn_MAP_PrivateIE_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID = {
+ "PrivateIE-ID",
+ "PrivateIE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_PrivateIE_ID_constr_1,
+ asn_MBR_PrivateIE_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_PrivateIE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/PrivateMessage.c b/src/hnbap/PrivateMessage.c
new file mode 100644
index 0000000..52eb933
--- /dev/null
+++ b/src/hnbap/PrivateMessage.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/PrivateMessage.h>
+
+static int
+memb_privateMessage_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_privateMessage_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_privateMessage_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_privateMessage_ies_specs_2 = {
+ sizeof(struct privateMessage_ies),
+ offsetof(struct privateMessage_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_privateMessage_ies_2 = {
+ "privateMessage-ies",
+ "privateMessage-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_privateMessage_ies_tags_2,
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_privateMessage_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_privateMessage_ies_constr_2,
+ asn_MBR_privateMessage_ies_2,
+ 1, /* Single element */
+ &asn_SPC_privateMessage_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_PrivateMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage, privateMessage_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_privateMessage_ies_2,
+ memb_privateMessage_ies_constraint_1,
+ &asn_PER_memb_privateMessage_ies_constr_2,
+ 0,
+ "privateMessage-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_PrivateMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateMessage-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_specs_1 = {
+ sizeof(struct PrivateMessage),
+ offsetof(struct PrivateMessage, _asn_ctx),
+ asn_MAP_PrivateMessage_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_PrivateMessage = {
+ "PrivateMessage",
+ "PrivateMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_PrivateMessage_tags_1,
+ sizeof(asn_DEF_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */
+ asn_DEF_PrivateMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_PrivateMessage_1,
+ 1, /* Elements count */
+ &asn_SPC_PrivateMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/ProcedureCode.c b/src/hnbap/ProcedureCode.c
new file mode 100644
index 0000000..2f95db7
--- /dev/null
+++ b/src/hnbap/ProcedureCode.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/ProcedureCode.h>
+
+int
+ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+ProcedureCode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+ProcedureCode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ProcedureCode = {
+ "ProcedureCode",
+ "ProcedureCode",
+ ProcedureCode_free,
+ ProcedureCode_print,
+ ProcedureCode_constraint,
+ ProcedureCode_decode_ber,
+ ProcedureCode_encode_der,
+ ProcedureCode_decode_xer,
+ ProcedureCode_encode_xer,
+ ProcedureCode_decode_uper,
+ ProcedureCode_encode_uper,
+ ProcedureCode_decode_aper,
+ ProcedureCode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ProcedureCode_tags_1,
+ sizeof(asn_DEF_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */
+ asn_DEF_ProcedureCode_tags_1, /* Same as above */
+ sizeof(asn_DEF_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */
+ &asn_PER_type_ProcedureCode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/ProtocolIE-ID.c b/src/hnbap/ProtocolIE-ID.c
new file mode 100644
index 0000000..c0a3681
--- /dev/null
+++ b/src/hnbap/ProtocolIE-ID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/ProtocolIE-ID.h>
+
+int
+ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+ProtocolIE_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = {
+ "ProtocolIE-ID",
+ "ProtocolIE-ID",
+ ProtocolIE_ID_free,
+ ProtocolIE_ID_print,
+ ProtocolIE_ID_constraint,
+ ProtocolIE_ID_decode_ber,
+ ProtocolIE_ID_encode_der,
+ ProtocolIE_ID_decode_xer,
+ ProtocolIE_ID_encode_xer,
+ ProtocolIE_ID_decode_uper,
+ ProtocolIE_ID_encode_uper,
+ ProtocolIE_ID_decode_aper,
+ ProtocolIE_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ProtocolIE_ID_tags_1,
+ sizeof(asn_DEF_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */
+ asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_ProtocolIE_ID_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/RAB-ID.c b/src/hnbap/RAB-ID.c
new file mode 100644
index 0000000..47d8905
--- /dev/null
+++ b/src/hnbap/RAB-ID.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RAB-ID.h>
+
+int
+RAB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RAB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RAB_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RAB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RAB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RAB_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RAB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RAB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RAB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RAB_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RAB_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RAB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RAB_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RAB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RAB_ID = {
+ "RAB-ID",
+ "RAB-ID",
+ RAB_ID_free,
+ RAB_ID_print,
+ RAB_ID_constraint,
+ RAB_ID_decode_ber,
+ RAB_ID_encode_der,
+ RAB_ID_decode_xer,
+ RAB_ID_encode_xer,
+ RAB_ID_decode_uper,
+ RAB_ID_encode_uper,
+ RAB_ID_decode_aper,
+ RAB_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RAB_ID_tags_1,
+ sizeof(asn_DEF_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RAB_ID_tags_1[0]), /* 1 */
+ asn_DEF_RAB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RAB_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RAB_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/RABList.c b/src/hnbap/RABList.c
new file mode 100644
index 0000000..393dcfb
--- /dev/null
+++ b/src/hnbap/RABList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RABList.h>
+
+static asn_per_constraints_t asn_PER_type_RABList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RABList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_RABListItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RABList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RABList_specs_1 = {
+ sizeof(struct RABList),
+ offsetof(struct RABList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RABList = {
+ "RABList",
+ "RABList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RABList_tags_1,
+ sizeof(asn_DEF_RABList_tags_1)
+ /sizeof(asn_DEF_RABList_tags_1[0]), /* 1 */
+ asn_DEF_RABList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RABList_tags_1)
+ /sizeof(asn_DEF_RABList_tags_1[0]), /* 1 */
+ &asn_PER_type_RABList_constr_1,
+ asn_MBR_RABList_1,
+ 1, /* Single element */
+ &asn_SPC_RABList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/RABListItem.c b/src/hnbap/RABListItem.c
new file mode 100644
index 0000000..b4e3da7
--- /dev/null
+++ b/src/hnbap/RABListItem.c
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RABListItem.h>
+
+static asn_TYPE_member_t asn_MBR_RABListItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RABListItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RABListItem, old_transport_Info),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TransportInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "old-transport-Info"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RABListItem, new_transport_Info),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TransportInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "new-transport-Info"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RABListItem, cn_domain_indicator),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cn-domain-indicator"
+ },
+ { ATF_POINTER, 1, offsetof(struct RABListItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RABListItem_oms_1[] = { 4 };
+static const ber_tlv_tag_t asn_DEF_RABListItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RABListItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* old-transport-Info */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* new-transport-Info */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cn-domain-indicator */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RABListItem_specs_1 = {
+ sizeof(struct RABListItem),
+ offsetof(struct RABListItem, _asn_ctx),
+ asn_MAP_RABListItem_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RABListItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RABListItem = {
+ "RABListItem",
+ "RABListItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RABListItem_tags_1,
+ sizeof(asn_DEF_RABListItem_tags_1)
+ /sizeof(asn_DEF_RABListItem_tags_1[0]), /* 1 */
+ asn_DEF_RABListItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RABListItem_tags_1)
+ /sizeof(asn_DEF_RABListItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RABListItem_1,
+ 5, /* Elements count */
+ &asn_SPC_RABListItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/RAC.c b/src/hnbap/RAC.c
new file mode 100644
index 0000000..04f0601
--- /dev/null
+++ b/src/hnbap/RAC.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RAC.h>
+
+int
+RAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RAC = {
+ "RAC",
+ "RAC",
+ RAC_free,
+ RAC_print,
+ RAC_constraint,
+ RAC_decode_ber,
+ RAC_encode_der,
+ RAC_decode_xer,
+ RAC_encode_xer,
+ RAC_decode_uper,
+ RAC_encode_uper,
+ RAC_decode_aper,
+ RAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RAC_tags_1,
+ sizeof(asn_DEF_RAC_tags_1)
+ /sizeof(asn_DEF_RAC_tags_1[0]), /* 1 */
+ asn_DEF_RAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RAC_tags_1)
+ /sizeof(asn_DEF_RAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/RAI.c b/src/hnbap/RAI.c
new file mode 100644
index 0000000..3591129
--- /dev/null
+++ b/src/hnbap/RAI.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RAI.h>
+
+static asn_TYPE_member_t asn_MBR_RAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RAI, lAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RAI, rAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAC"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rAC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RAI_specs_1 = {
+ sizeof(struct RAI),
+ offsetof(struct RAI, _asn_ctx),
+ asn_MAP_RAI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RAI = {
+ "RAI",
+ "RAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RAI_tags_1,
+ sizeof(asn_DEF_RAI_tags_1)
+ /sizeof(asn_DEF_RAI_tags_1[0]), /* 1 */
+ asn_DEF_RAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RAI_tags_1)
+ /sizeof(asn_DEF_RAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RAI_1,
+ 2, /* Elements count */
+ &asn_SPC_RAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/RNC-ID.c b/src/hnbap/RNC-ID.c
new file mode 100644
index 0000000..782a7e4
--- /dev/null
+++ b/src/hnbap/RNC-ID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RNC-ID.h>
+
+int
+RNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RNC_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RNC_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RNC_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RNC_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RNC_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RNC_ID = {
+ "RNC-ID",
+ "RNC-ID",
+ RNC_ID_free,
+ RNC_ID_print,
+ RNC_ID_constraint,
+ RNC_ID_decode_ber,
+ RNC_ID_encode_der,
+ RNC_ID_decode_xer,
+ RNC_ID_encode_xer,
+ RNC_ID_decode_uper,
+ RNC_ID_encode_uper,
+ RNC_ID_decode_aper,
+ RNC_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RNC_ID_tags_1,
+ sizeof(asn_DEF_RNC_ID_tags_1)
+ /sizeof(asn_DEF_RNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RNC_ID_tags_1)
+ /sizeof(asn_DEF_RNC_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RNC_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/Registration-Cause.c b/src/hnbap/Registration-Cause.c
new file mode 100644
index 0000000..6b05441
--- /dev/null
+++ b/src/hnbap/Registration-Cause.c
@@ -0,0 +1,170 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Registration-Cause.h>
+
+int
+Registration_Cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Registration_Cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+Registration_Cause_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Registration_Cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Registration_Cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Registration_Cause_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Registration_Cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Registration_Cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Registration_Cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Registration_Cause_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Registration_Cause_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Registration_Cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Registration_Cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Registration_Cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Registration_Cause_value2enum_1[] = {
+ { 0, 14, "emergency-call" },
+ { 1, 6, "normal" },
+ { 2, 13, "ue-relocation" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_Registration_Cause_enum2value_1[] = {
+ 0, /* emergency-call(0) */
+ 1, /* normal(1) */
+ 2 /* ue-relocation(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_Registration_Cause_specs_1 = {
+ asn_MAP_Registration_Cause_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_Registration_Cause_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_Registration_Cause_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Registration_Cause = {
+ "Registration-Cause",
+ "Registration-Cause",
+ Registration_Cause_free,
+ Registration_Cause_print,
+ Registration_Cause_constraint,
+ Registration_Cause_decode_ber,
+ Registration_Cause_encode_der,
+ Registration_Cause_decode_xer,
+ Registration_Cause_encode_xer,
+ Registration_Cause_decode_uper,
+ Registration_Cause_encode_uper,
+ Registration_Cause_decode_aper,
+ Registration_Cause_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Registration_Cause_tags_1,
+ sizeof(asn_DEF_Registration_Cause_tags_1)
+ /sizeof(asn_DEF_Registration_Cause_tags_1[0]), /* 1 */
+ asn_DEF_Registration_Cause_tags_1, /* Same as above */
+ sizeof(asn_DEF_Registration_Cause_tags_1)
+ /sizeof(asn_DEF_Registration_Cause_tags_1[0]), /* 1 */
+ &asn_PER_type_Registration_Cause_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_Registration_Cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/RelocationComplete.c b/src/hnbap/RelocationComplete.c
new file mode 100644
index 0000000..5438cd0
--- /dev/null
+++ b/src/hnbap/RelocationComplete.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/RelocationComplete.h>
+
+static int
+memb_relocationComplete_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationComplete_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationComplete_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationComplete_ies_specs_2 = {
+ sizeof(struct relocationComplete_ies),
+ offsetof(struct relocationComplete_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationComplete_ies_2 = {
+ "relocationComplete-ies",
+ "relocationComplete-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationComplete_ies_tags_2,
+ sizeof(asn_DEF_relocationComplete_ies_tags_2)
+ /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationComplete_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationComplete_ies_tags_2)
+ /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationComplete_ies_constr_2,
+ asn_MBR_relocationComplete_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationComplete_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RelocationComplete_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RelocationComplete, relocationComplete_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationComplete_ies_2,
+ memb_relocationComplete_ies_constraint_1,
+ &asn_PER_memb_relocationComplete_ies_constr_2,
+ 0,
+ "relocationComplete-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RelocationComplete_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RelocationComplete_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationComplete-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RelocationComplete_specs_1 = {
+ sizeof(struct RelocationComplete),
+ offsetof(struct RelocationComplete, _asn_ctx),
+ asn_MAP_RelocationComplete_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RelocationComplete = {
+ "RelocationComplete",
+ "RelocationComplete",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RelocationComplete_tags_1,
+ sizeof(asn_DEF_RelocationComplete_tags_1)
+ /sizeof(asn_DEF_RelocationComplete_tags_1[0]), /* 1 */
+ asn_DEF_RelocationComplete_tags_1, /* Same as above */
+ sizeof(asn_DEF_RelocationComplete_tags_1)
+ /sizeof(asn_DEF_RelocationComplete_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RelocationComplete_1,
+ 1, /* Elements count */
+ &asn_SPC_RelocationComplete_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/S-RNTIPrefix.c b/src/hnbap/S-RNTIPrefix.c
new file mode 100644
index 0000000..1601eb4
--- /dev/null
+++ b/src/hnbap/S-RNTIPrefix.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/S-RNTIPrefix.h>
+
+int
+S_RNTIPrefix_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size >= 1l && size <= 16l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+S_RNTIPrefix_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+S_RNTIPrefix_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+S_RNTIPrefix_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+S_RNTIPrefix_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+S_RNTIPrefix_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+S_RNTIPrefix_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+S_RNTIPrefix_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+S_RNTIPrefix_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+S_RNTIPrefix_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+S_RNTIPrefix_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+S_RNTIPrefix_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ S_RNTIPrefix_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_S_RNTIPrefix_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1l, 16l } /* (SIZE(1..16,...)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_S_RNTIPrefix_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_S_RNTIPrefix = {
+ "S-RNTIPrefix",
+ "S-RNTIPrefix",
+ S_RNTIPrefix_free,
+ S_RNTIPrefix_print,
+ S_RNTIPrefix_constraint,
+ S_RNTIPrefix_decode_ber,
+ S_RNTIPrefix_encode_der,
+ S_RNTIPrefix_decode_xer,
+ S_RNTIPrefix_encode_xer,
+ S_RNTIPrefix_decode_uper,
+ S_RNTIPrefix_encode_uper,
+ S_RNTIPrefix_decode_aper,
+ S_RNTIPrefix_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_S_RNTIPrefix_tags_1,
+ sizeof(asn_DEF_S_RNTIPrefix_tags_1)
+ /sizeof(asn_DEF_S_RNTIPrefix_tags_1[0]), /* 1 */
+ asn_DEF_S_RNTIPrefix_tags_1, /* Same as above */
+ sizeof(asn_DEF_S_RNTIPrefix_tags_1)
+ /sizeof(asn_DEF_S_RNTIPrefix_tags_1[0]), /* 1 */
+ &asn_PER_type_S_RNTIPrefix_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/SAC.c b/src/hnbap/SAC.c
new file mode 100644
index 0000000..f52edb9
--- /dev/null
+++ b/src/hnbap/SAC.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/SAC.h>
+
+int
+SAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+SAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+SAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+SAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+SAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+SAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+SAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+SAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+SAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+SAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+SAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+SAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ SAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_SAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SAC = {
+ "SAC",
+ "SAC",
+ SAC_free,
+ SAC_print,
+ SAC_constraint,
+ SAC_decode_ber,
+ SAC_encode_der,
+ SAC_decode_xer,
+ SAC_encode_xer,
+ SAC_decode_uper,
+ SAC_encode_uper,
+ SAC_decode_aper,
+ SAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_SAC_tags_1,
+ sizeof(asn_DEF_SAC_tags_1)
+ /sizeof(asn_DEF_SAC_tags_1[0]), /* 1 */
+ asn_DEF_SAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_SAC_tags_1)
+ /sizeof(asn_DEF_SAC_tags_1[0]), /* 1 */
+ &asn_PER_type_SAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/SuccessfulOutcome.c b/src/hnbap/SuccessfulOutcome.c
new file mode 100644
index 0000000..910f5a9
--- /dev/null
+++ b/src/hnbap/SuccessfulOutcome.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/SuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = {
+ sizeof(struct SuccessfulOutcome),
+ offsetof(struct SuccessfulOutcome, _asn_ctx),
+ asn_MAP_SuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = {
+ "SuccessfulOutcome",
+ "SuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_SuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_SuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TMSIDS41.c b/src/hnbap/TMSIDS41.c
new file mode 100644
index 0000000..3e3c4b3
--- /dev/null
+++ b/src/hnbap/TMSIDS41.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TMSIDS41.h>
+
+int
+TMSIDS41_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 2l && size <= 17l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+TMSIDS41_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+TMSIDS41_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+TMSIDS41_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+TMSIDS41_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+TMSIDS41_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+TMSIDS41_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+TMSIDS41_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+TMSIDS41_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+TMSIDS41_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+TMSIDS41_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+TMSIDS41_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TMSIDS41_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_TMSIDS41_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 2l, 17l } /* (SIZE(2..17)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TMSIDS41_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TMSIDS41 = {
+ "TMSIDS41",
+ "TMSIDS41",
+ TMSIDS41_free,
+ TMSIDS41_print,
+ TMSIDS41_constraint,
+ TMSIDS41_decode_ber,
+ TMSIDS41_encode_der,
+ TMSIDS41_decode_xer,
+ TMSIDS41_encode_xer,
+ TMSIDS41_decode_uper,
+ TMSIDS41_encode_uper,
+ TMSIDS41_decode_aper,
+ TMSIDS41_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TMSIDS41_tags_1,
+ sizeof(asn_DEF_TMSIDS41_tags_1)
+ /sizeof(asn_DEF_TMSIDS41_tags_1[0]), /* 1 */
+ asn_DEF_TMSIDS41_tags_1, /* Same as above */
+ sizeof(asn_DEF_TMSIDS41_tags_1)
+ /sizeof(asn_DEF_TMSIDS41_tags_1[0]), /* 1 */
+ &asn_PER_type_TMSIDS41_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/TMSILAI.c b/src/hnbap/TMSILAI.c
new file mode 100644
index 0000000..83bbe0f
--- /dev/null
+++ b/src/hnbap/TMSILAI.c
@@ -0,0 +1,108 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TMSILAI.h>
+
+static int
+memb_tMSI_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_tMSI_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_TMSILAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TMSILAI, tMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_tMSI_constraint_1,
+ &asn_PER_memb_tMSI_constr_2,
+ 0,
+ "tMSI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TMSILAI, lAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_TMSILAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TMSILAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMSI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lAI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_TMSILAI_specs_1 = {
+ sizeof(struct TMSILAI),
+ offsetof(struct TMSILAI, _asn_ctx),
+ asn_MAP_TMSILAI_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_TMSILAI = {
+ "TMSILAI",
+ "TMSILAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TMSILAI_tags_1,
+ sizeof(asn_DEF_TMSILAI_tags_1)
+ /sizeof(asn_DEF_TMSILAI_tags_1[0]), /* 1 */
+ asn_DEF_TMSILAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_TMSILAI_tags_1)
+ /sizeof(asn_DEF_TMSILAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_TMSILAI_1,
+ 2, /* Elements count */
+ &asn_SPC_TMSILAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TNLUpdateFailure.c b/src/hnbap/TNLUpdateFailure.c
new file mode 100644
index 0000000..182de3d
--- /dev/null
+++ b/src/hnbap/TNLUpdateFailure.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TNLUpdateFailure.h>
+
+static int
+memb_tnlUpdateFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_tnlUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_tnlUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_tnlUpdateFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_tnlUpdateFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tnlUpdateFailure_ies_specs_2 = {
+ sizeof(struct tnlUpdateFailure_ies),
+ offsetof(struct tnlUpdateFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tnlUpdateFailure_ies_2 = {
+ "tnlUpdateFailure-ies",
+ "tnlUpdateFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_tnlUpdateFailure_ies_tags_2,
+ sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_tnlUpdateFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_tnlUpdateFailure_ies_constr_2,
+ asn_MBR_tnlUpdateFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_tnlUpdateFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_TNLUpdateFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateFailure, tnlUpdateFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_tnlUpdateFailure_ies_2,
+ memb_tnlUpdateFailure_ies_constraint_1,
+ &asn_PER_memb_tnlUpdateFailure_ies_constr_2,
+ 0,
+ "tnlUpdateFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_TNLUpdateFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateFailure_specs_1 = {
+ sizeof(struct TNLUpdateFailure),
+ offsetof(struct TNLUpdateFailure, _asn_ctx),
+ asn_MAP_TNLUpdateFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_TNLUpdateFailure = {
+ "TNLUpdateFailure",
+ "TNLUpdateFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TNLUpdateFailure_tags_1,
+ sizeof(asn_DEF_TNLUpdateFailure_tags_1)
+ /sizeof(asn_DEF_TNLUpdateFailure_tags_1[0]), /* 1 */
+ asn_DEF_TNLUpdateFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_TNLUpdateFailure_tags_1)
+ /sizeof(asn_DEF_TNLUpdateFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_TNLUpdateFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_TNLUpdateFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TNLUpdateRequest.c b/src/hnbap/TNLUpdateRequest.c
new file mode 100644
index 0000000..b5583a6
--- /dev/null
+++ b/src/hnbap/TNLUpdateRequest.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TNLUpdateRequest.h>
+
+static int
+memb_tnlUpdateRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_tnlUpdateRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_tnlUpdateRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_tnlUpdateRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_tnlUpdateRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tnlUpdateRequest_ies_specs_2 = {
+ sizeof(struct tnlUpdateRequest_ies),
+ offsetof(struct tnlUpdateRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tnlUpdateRequest_ies_2 = {
+ "tnlUpdateRequest-ies",
+ "tnlUpdateRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_tnlUpdateRequest_ies_tags_2,
+ sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_tnlUpdateRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_tnlUpdateRequest_ies_constr_2,
+ asn_MBR_tnlUpdateRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_tnlUpdateRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_TNLUpdateRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateRequest, tnlUpdateRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_tnlUpdateRequest_ies_2,
+ memb_tnlUpdateRequest_ies_constraint_1,
+ &asn_PER_memb_tnlUpdateRequest_ies_constr_2,
+ 0,
+ "tnlUpdateRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_TNLUpdateRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateRequest_specs_1 = {
+ sizeof(struct TNLUpdateRequest),
+ offsetof(struct TNLUpdateRequest, _asn_ctx),
+ asn_MAP_TNLUpdateRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_TNLUpdateRequest = {
+ "TNLUpdateRequest",
+ "TNLUpdateRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TNLUpdateRequest_tags_1,
+ sizeof(asn_DEF_TNLUpdateRequest_tags_1)
+ /sizeof(asn_DEF_TNLUpdateRequest_tags_1[0]), /* 1 */
+ asn_DEF_TNLUpdateRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_TNLUpdateRequest_tags_1)
+ /sizeof(asn_DEF_TNLUpdateRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_TNLUpdateRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_TNLUpdateRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TNLUpdateResponse.c b/src/hnbap/TNLUpdateResponse.c
new file mode 100644
index 0000000..ade010b
--- /dev/null
+++ b/src/hnbap/TNLUpdateResponse.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TNLUpdateResponse.h>
+
+static int
+memb_tnlUpdateResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_tnlUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_tnlUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_tnlUpdateResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_tnlUpdateResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tnlUpdateResponse_ies_specs_2 = {
+ sizeof(struct tnlUpdateResponse_ies),
+ offsetof(struct tnlUpdateResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tnlUpdateResponse_ies_2 = {
+ "tnlUpdateResponse-ies",
+ "tnlUpdateResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_tnlUpdateResponse_ies_tags_2,
+ sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_tnlUpdateResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2)
+ /sizeof(asn_DEF_tnlUpdateResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_tnlUpdateResponse_ies_constr_2,
+ asn_MBR_tnlUpdateResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_tnlUpdateResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_TNLUpdateResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TNLUpdateResponse, tnlUpdateResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_tnlUpdateResponse_ies_2,
+ memb_tnlUpdateResponse_ies_constraint_1,
+ &asn_PER_memb_tnlUpdateResponse_ies_constr_2,
+ 0,
+ "tnlUpdateResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_TNLUpdateResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TNLUpdateResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tnlUpdateResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_TNLUpdateResponse_specs_1 = {
+ sizeof(struct TNLUpdateResponse),
+ offsetof(struct TNLUpdateResponse, _asn_ctx),
+ asn_MAP_TNLUpdateResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_TNLUpdateResponse = {
+ "TNLUpdateResponse",
+ "TNLUpdateResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TNLUpdateResponse_tags_1,
+ sizeof(asn_DEF_TNLUpdateResponse_tags_1)
+ /sizeof(asn_DEF_TNLUpdateResponse_tags_1[0]), /* 1 */
+ asn_DEF_TNLUpdateResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_TNLUpdateResponse_tags_1)
+ /sizeof(asn_DEF_TNLUpdateResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_TNLUpdateResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_TNLUpdateResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TransportInfo.c b/src/hnbap/TransportInfo.c
new file mode 100644
index 0000000..ee6ed1c
--- /dev/null
+++ b/src/hnbap/TransportInfo.c
@@ -0,0 +1,149 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TransportInfo.h>
+
+static asn_per_constraints_t asn_PER_type_transportAssociation_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_transportAssociation_3[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct transportAssociation, choice.gtp_TEI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GTP_TEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gtp-TEI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct transportAssociation, choice.bindingID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BindingID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "bindingID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_transportAssociation_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gtp-TEI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bindingID */
+};
+static asn_CHOICE_specifics_t asn_SPC_transportAssociation_specs_3 = {
+ sizeof(struct transportAssociation),
+ offsetof(struct transportAssociation, _asn_ctx),
+ offsetof(struct transportAssociation, present),
+ sizeof(((struct transportAssociation *)0)->present),
+ asn_MAP_transportAssociation_tag2el_3,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transportAssociation_3 = {
+ "transportAssociation",
+ "transportAssociation",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_transportAssociation_constr_3,
+ asn_MBR_transportAssociation_3,
+ 2, /* Elements count */
+ &asn_SPC_transportAssociation_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_TransportInfo_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct TransportInfo, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct TransportInfo, transportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_transportAssociation_3,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct TransportInfo, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_TransportInfo_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_TransportInfo_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TransportInfo_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_TransportInfo_specs_1 = {
+ sizeof(struct TransportInfo),
+ offsetof(struct TransportInfo, _asn_ctx),
+ asn_MAP_TransportInfo_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_TransportInfo_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_TransportInfo = {
+ "TransportInfo",
+ "TransportInfo",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TransportInfo_tags_1,
+ sizeof(asn_DEF_TransportInfo_tags_1)
+ /sizeof(asn_DEF_TransportInfo_tags_1[0]), /* 1 */
+ asn_DEF_TransportInfo_tags_1, /* Same as above */
+ sizeof(asn_DEF_TransportInfo_tags_1)
+ /sizeof(asn_DEF_TransportInfo_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_TransportInfo_1,
+ 3, /* Elements count */
+ &asn_SPC_TransportInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TransportLayerAddress.c b/src/hnbap/TransportLayerAddress.c
new file mode 100644
index 0000000..49de644
--- /dev/null
+++ b/src/hnbap/TransportLayerAddress.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TransportLayerAddress.h>
+
+int
+TransportLayerAddress_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size >= 1l && size <= 160l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+TransportLayerAddress_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+TransportLayerAddress_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+TransportLayerAddress_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+TransportLayerAddress_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+TransportLayerAddress_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+TransportLayerAddress_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+TransportLayerAddress_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+TransportLayerAddress_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+TransportLayerAddress_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+TransportLayerAddress_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+TransportLayerAddress_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 160l } /* (SIZE(1..160,...)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TransportLayerAddress_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress = {
+ "TransportLayerAddress",
+ "TransportLayerAddress",
+ TransportLayerAddress_free,
+ TransportLayerAddress_print,
+ TransportLayerAddress_constraint,
+ TransportLayerAddress_decode_ber,
+ TransportLayerAddress_encode_der,
+ TransportLayerAddress_decode_xer,
+ TransportLayerAddress_encode_xer,
+ TransportLayerAddress_decode_uper,
+ TransportLayerAddress_encode_uper,
+ TransportLayerAddress_decode_aper,
+ TransportLayerAddress_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TransportLayerAddress_tags_1,
+ sizeof(asn_DEF_TransportLayerAddress_tags_1)
+ /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */
+ asn_DEF_TransportLayerAddress_tags_1, /* Same as above */
+ sizeof(asn_DEF_TransportLayerAddress_tags_1)
+ /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */
+ &asn_PER_type_TransportLayerAddress_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/TriggeringMessage.c b/src/hnbap/TriggeringMessage.c
new file mode 100644
index 0000000..c50a487
--- /dev/null
+++ b/src/hnbap/TriggeringMessage.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-CommonDataTypes"
+ * found in "../../asn1/hnbap/HNBAP-CommonDataTypes.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TriggeringMessage.h>
+
+int
+TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+TriggeringMessage_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = {
+ { 0, 18, "initiating-message" },
+ { 1, 18, "successful-outcome" },
+ { 2, 20, "unsuccessful-outcome" }
+};
+static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = {
+ 0, /* initiating-message(0) */
+ 1, /* successful-outcome(1) */
+ 2 /* unsuccessful-outcome(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = {
+ asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = {
+ "TriggeringMessage",
+ "TriggeringMessage",
+ TriggeringMessage_free,
+ TriggeringMessage_print,
+ TriggeringMessage_constraint,
+ TriggeringMessage_decode_ber,
+ TriggeringMessage_encode_der,
+ TriggeringMessage_decode_xer,
+ TriggeringMessage_encode_xer,
+ TriggeringMessage_decode_uper,
+ TriggeringMessage_encode_uper,
+ TriggeringMessage_decode_aper,
+ TriggeringMessage_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TriggeringMessage_tags_1,
+ sizeof(asn_DEF_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */
+ asn_DEF_TriggeringMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */
+ &asn_PER_type_TriggeringMessage_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Tunnel-Information.c b/src/hnbap/Tunnel-Information.c
new file mode 100644
index 0000000..4c52952
--- /dev/null
+++ b/src/hnbap/Tunnel-Information.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Tunnel-Information.h>
+
+static asn_TYPE_member_t asn_MBR_Tunnel_Information_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information, iP_Address),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IP_Address,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iP-Address"
+ },
+ { ATF_POINTER, 2, offsetof(struct Tunnel_Information, uDP_Port_Number),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UDP_Port_Number,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uDP-Port-Number"
+ },
+ { ATF_POINTER, 1, offsetof(struct Tunnel_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_Tunnel_Information_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_Tunnel_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Tunnel_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iP-Address */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_specs_1 = {
+ sizeof(struct Tunnel_Information),
+ offsetof(struct Tunnel_Information, _asn_ctx),
+ asn_MAP_Tunnel_Information_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_Tunnel_Information_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_Tunnel_Information = {
+ "Tunnel-Information",
+ "Tunnel-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Tunnel_Information_tags_1,
+ sizeof(asn_DEF_Tunnel_Information_tags_1)
+ /sizeof(asn_DEF_Tunnel_Information_tags_1[0]), /* 1 */
+ asn_DEF_Tunnel_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_Tunnel_Information_tags_1)
+ /sizeof(asn_DEF_Tunnel_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_Tunnel_Information_1,
+ 3, /* Elements count */
+ &asn_SPC_Tunnel_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/TypeOfError.c b/src/hnbap/TypeOfError.c
new file mode 100644
index 0000000..8c234f3
--- /dev/null
+++ b/src/hnbap/TypeOfError.c
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/TypeOfError.h>
+
+int
+TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+TypeOfError_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+TypeOfError_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+TypeOfError_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+TypeOfError_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = {
+ { 0, 14, "not-understood" },
+ { 1, 7, "missing" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = {
+ 1, /* missing(1) */
+ 0 /* not-understood(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = {
+ asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TypeOfError = {
+ "TypeOfError",
+ "TypeOfError",
+ TypeOfError_free,
+ TypeOfError_print,
+ TypeOfError_constraint,
+ TypeOfError_decode_ber,
+ TypeOfError_encode_der,
+ TypeOfError_decode_xer,
+ TypeOfError_encode_xer,
+ TypeOfError_decode_uper,
+ TypeOfError_encode_uper,
+ TypeOfError_decode_aper,
+ TypeOfError_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_TypeOfError_tags_1,
+ sizeof(asn_DEF_TypeOfError_tags_1)
+ /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */
+ asn_DEF_TypeOfError_tags_1, /* Same as above */
+ sizeof(asn_DEF_TypeOfError_tags_1)
+ /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */
+ &asn_PER_type_TypeOfError_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_TypeOfError_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/U-RNTI.c b/src/hnbap/U-RNTI.c
new file mode 100644
index 0000000..708bd87
--- /dev/null
+++ b/src/hnbap/U-RNTI.c
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/U-RNTI.h>
+
+int
+U_RNTI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+U_RNTI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+U_RNTI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+U_RNTI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+U_RNTI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+U_RNTI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+U_RNTI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+U_RNTI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+U_RNTI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+U_RNTI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+U_RNTI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+U_RNTI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ U_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_U_RNTI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 32l, 32l } /* (SIZE(32..32)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_U_RNTI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_U_RNTI = {
+ "U-RNTI",
+ "U-RNTI",
+ U_RNTI_free,
+ U_RNTI_print,
+ U_RNTI_constraint,
+ U_RNTI_decode_ber,
+ U_RNTI_encode_der,
+ U_RNTI_decode_xer,
+ U_RNTI_encode_xer,
+ U_RNTI_decode_uper,
+ U_RNTI_encode_uper,
+ U_RNTI_decode_aper,
+ U_RNTI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_U_RNTI_tags_1,
+ sizeof(asn_DEF_U_RNTI_tags_1)
+ /sizeof(asn_DEF_U_RNTI_tags_1[0]), /* 1 */
+ asn_DEF_U_RNTI_tags_1, /* Same as above */
+ sizeof(asn_DEF_U_RNTI_tags_1)
+ /sizeof(asn_DEF_U_RNTI_tags_1[0]), /* 1 */
+ &asn_PER_type_U_RNTI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/U-RNTIQueryRequest.c b/src/hnbap/U-RNTIQueryRequest.c
new file mode 100644
index 0000000..f103d24
--- /dev/null
+++ b/src/hnbap/U-RNTIQueryRequest.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/U-RNTIQueryRequest.h>
+
+static int
+memb_u_RNTIQueryRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_u_RNTIQueryRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_u_RNTIQueryRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_u_RNTIQueryRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_u_RNTIQueryRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_u_RNTIQueryRequest_ies_specs_2 = {
+ sizeof(struct u_RNTIQueryRequest_ies),
+ offsetof(struct u_RNTIQueryRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_u_RNTIQueryRequest_ies_2 = {
+ "u-RNTIQueryRequest-ies",
+ "u-RNTIQueryRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_u_RNTIQueryRequest_ies_tags_2,
+ sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2)
+ /sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_u_RNTIQueryRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2)
+ /sizeof(asn_DEF_u_RNTIQueryRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_u_RNTIQueryRequest_ies_constr_2,
+ asn_MBR_u_RNTIQueryRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_u_RNTIQueryRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_U_RNTIQueryRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct U_RNTIQueryRequest, u_RNTIQueryRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_u_RNTIQueryRequest_ies_2,
+ memb_u_RNTIQueryRequest_ies_constraint_1,
+ &asn_PER_memb_u_RNTIQueryRequest_ies_constr_2,
+ 0,
+ "u-RNTIQueryRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_U_RNTIQueryRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_U_RNTIQueryRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* u-RNTIQueryRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_U_RNTIQueryRequest_specs_1 = {
+ sizeof(struct U_RNTIQueryRequest),
+ offsetof(struct U_RNTIQueryRequest, _asn_ctx),
+ asn_MAP_U_RNTIQueryRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryRequest = {
+ "U-RNTIQueryRequest",
+ "U-RNTIQueryRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_U_RNTIQueryRequest_tags_1,
+ sizeof(asn_DEF_U_RNTIQueryRequest_tags_1)
+ /sizeof(asn_DEF_U_RNTIQueryRequest_tags_1[0]), /* 1 */
+ asn_DEF_U_RNTIQueryRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_U_RNTIQueryRequest_tags_1)
+ /sizeof(asn_DEF_U_RNTIQueryRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_U_RNTIQueryRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_U_RNTIQueryRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/U-RNTIQueryResponse.c b/src/hnbap/U-RNTIQueryResponse.c
new file mode 100644
index 0000000..121551d
--- /dev/null
+++ b/src/hnbap/U-RNTIQueryResponse.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/U-RNTIQueryResponse.h>
+
+static int
+memb_u_RNTIQueryResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_u_RNTIQueryResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_u_RNTIQueryResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_u_RNTIQueryResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_u_RNTIQueryResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_u_RNTIQueryResponse_ies_specs_2 = {
+ sizeof(struct u_RNTIQueryResponse_ies),
+ offsetof(struct u_RNTIQueryResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_u_RNTIQueryResponse_ies_2 = {
+ "u-RNTIQueryResponse-ies",
+ "u-RNTIQueryResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_u_RNTIQueryResponse_ies_tags_2,
+ sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2)
+ /sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_u_RNTIQueryResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2)
+ /sizeof(asn_DEF_u_RNTIQueryResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_u_RNTIQueryResponse_ies_constr_2,
+ asn_MBR_u_RNTIQueryResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_u_RNTIQueryResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_U_RNTIQueryResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct U_RNTIQueryResponse, u_RNTIQueryResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_u_RNTIQueryResponse_ies_2,
+ memb_u_RNTIQueryResponse_ies_constraint_1,
+ &asn_PER_memb_u_RNTIQueryResponse_ies_constr_2,
+ 0,
+ "u-RNTIQueryResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_U_RNTIQueryResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_U_RNTIQueryResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* u-RNTIQueryResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_U_RNTIQueryResponse_specs_1 = {
+ sizeof(struct U_RNTIQueryResponse),
+ offsetof(struct U_RNTIQueryResponse, _asn_ctx),
+ asn_MAP_U_RNTIQueryResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_U_RNTIQueryResponse = {
+ "U-RNTIQueryResponse",
+ "U-RNTIQueryResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_U_RNTIQueryResponse_tags_1,
+ sizeof(asn_DEF_U_RNTIQueryResponse_tags_1)
+ /sizeof(asn_DEF_U_RNTIQueryResponse_tags_1[0]), /* 1 */
+ asn_DEF_U_RNTIQueryResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_U_RNTIQueryResponse_tags_1)
+ /sizeof(asn_DEF_U_RNTIQueryResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_U_RNTIQueryResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_U_RNTIQueryResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UDP-Port-Number.c b/src/hnbap/UDP-Port-Number.c
new file mode 100644
index 0000000..45a75bf
--- /dev/null
+++ b/src/hnbap/UDP-Port-Number.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UDP-Port-Number.h>
+
+int
+UDP_Port_Number_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+UDP_Port_Number_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+UDP_Port_Number_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+UDP_Port_Number_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+UDP_Port_Number_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+UDP_Port_Number_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+UDP_Port_Number_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+UDP_Port_Number_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+UDP_Port_Number_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+UDP_Port_Number_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+UDP_Port_Number_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+UDP_Port_Number_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ UDP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_UDP_Port_Number_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_UDP_Port_Number_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UDP_Port_Number = {
+ "UDP-Port-Number",
+ "UDP-Port-Number",
+ UDP_Port_Number_free,
+ UDP_Port_Number_print,
+ UDP_Port_Number_constraint,
+ UDP_Port_Number_decode_ber,
+ UDP_Port_Number_encode_der,
+ UDP_Port_Number_decode_xer,
+ UDP_Port_Number_encode_xer,
+ UDP_Port_Number_decode_uper,
+ UDP_Port_Number_encode_uper,
+ UDP_Port_Number_decode_aper,
+ UDP_Port_Number_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UDP_Port_Number_tags_1,
+ sizeof(asn_DEF_UDP_Port_Number_tags_1)
+ /sizeof(asn_DEF_UDP_Port_Number_tags_1[0]), /* 1 */
+ asn_DEF_UDP_Port_Number_tags_1, /* Same as above */
+ sizeof(asn_DEF_UDP_Port_Number_tags_1)
+ /sizeof(asn_DEF_UDP_Port_Number_tags_1[0]), /* 1 */
+ &asn_PER_type_UDP_Port_Number_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/UE-Capabilities.c b/src/hnbap/UE-Capabilities.c
new file mode 100644
index 0000000..041e99d
--- /dev/null
+++ b/src/hnbap/UE-Capabilities.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UE-Capabilities.h>
+
+static asn_TYPE_member_t asn_MBR_UE_Capabilities_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Capabilities, access_stratum_release_indicator),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Access_stratum_release_indicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "access-stratum-release-indicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Capabilities, csg_capability),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CSG_Capability,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "csg-capability"
+ },
+ { ATF_POINTER, 1, offsetof(struct UE_Capabilities, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_UE_Capabilities_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_UE_Capabilities_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_Capabilities_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* access-stratum-release-indicator */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csg-capability */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UE_Capabilities_specs_1 = {
+ sizeof(struct UE_Capabilities),
+ offsetof(struct UE_Capabilities, _asn_ctx),
+ asn_MAP_UE_Capabilities_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_UE_Capabilities_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_Capabilities = {
+ "UE-Capabilities",
+ "UE-Capabilities",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UE_Capabilities_tags_1,
+ sizeof(asn_DEF_UE_Capabilities_tags_1)
+ /sizeof(asn_DEF_UE_Capabilities_tags_1[0]), /* 1 */
+ asn_DEF_UE_Capabilities_tags_1, /* Same as above */
+ sizeof(asn_DEF_UE_Capabilities_tags_1)
+ /sizeof(asn_DEF_UE_Capabilities_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UE_Capabilities_1,
+ 3, /* Elements count */
+ &asn_SPC_UE_Capabilities_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UE-Identity.c b/src/hnbap/UE-Identity.c
new file mode 100644
index 0000000..604aba9
--- /dev/null
+++ b/src/hnbap/UE-Identity.c
@@ -0,0 +1,133 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UE-Identity.h>
+
+static asn_per_constraints_t asn_PER_type_UE_Identity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_UE_Identity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.tMSILAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TMSILAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMSILAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.pTMSIRAI),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PTMSIRAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pTMSIRAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMEI),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IMEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.eSN),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ESN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "eSN"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSIDS41),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IMSIDS41,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSIDS41"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.iMSIESN),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IMSIESN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSIESN"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UE_Identity, choice.tMSIDS41),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_TMSIDS41,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMSIDS41"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_Identity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMSI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tMSILAI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pTMSIRAI */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iMEI */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* eSN */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* iMSIDS41 */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* iMSIESN */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* tMSIDS41 */
+};
+static asn_CHOICE_specifics_t asn_SPC_UE_Identity_specs_1 = {
+ sizeof(struct UE_Identity),
+ offsetof(struct UE_Identity, _asn_ctx),
+ offsetof(struct UE_Identity, present),
+ sizeof(((struct UE_Identity *)0)->present),
+ asn_MAP_UE_Identity_tag2el_1,
+ 8, /* Count of tags in the map */
+ 0,
+ 8 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_Identity = {
+ "UE-Identity",
+ "UE-Identity",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_UE_Identity_constr_1,
+ asn_MBR_UE_Identity_1,
+ 8, /* Elements count */
+ &asn_SPC_UE_Identity_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UEDe-Register.c b/src/hnbap/UEDe-Register.c
new file mode 100644
index 0000000..3b06b8c
--- /dev/null
+++ b/src/hnbap/UEDe-Register.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UEDe-Register.h>
+
+static int
+memb_ueDe_Register_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueDe_Register_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueDe_Register_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueDe_Register_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueDe_Register_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueDe_Register_ies_specs_2 = {
+ sizeof(struct ueDe_Register_ies),
+ offsetof(struct ueDe_Register_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueDe_Register_ies_2 = {
+ "ueDe-Register-ies",
+ "ueDe-Register-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueDe_Register_ies_tags_2,
+ sizeof(asn_DEF_ueDe_Register_ies_tags_2)
+ /sizeof(asn_DEF_ueDe_Register_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueDe_Register_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueDe_Register_ies_tags_2)
+ /sizeof(asn_DEF_ueDe_Register_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueDe_Register_ies_constr_2,
+ asn_MBR_ueDe_Register_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueDe_Register_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UEDe_Register_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UEDe_Register, ueDe_Register_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueDe_Register_ies_2,
+ memb_ueDe_Register_ies_constraint_1,
+ &asn_PER_memb_ueDe_Register_ies_constr_2,
+ 0,
+ "ueDe-Register-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UEDe_Register_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEDe_Register_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueDe-Register-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UEDe_Register_specs_1 = {
+ sizeof(struct UEDe_Register),
+ offsetof(struct UEDe_Register, _asn_ctx),
+ asn_MAP_UEDe_Register_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UEDe_Register = {
+ "UEDe-Register",
+ "UEDe-Register",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UEDe_Register_tags_1,
+ sizeof(asn_DEF_UEDe_Register_tags_1)
+ /sizeof(asn_DEF_UEDe_Register_tags_1[0]), /* 1 */
+ asn_DEF_UEDe_Register_tags_1, /* Same as above */
+ sizeof(asn_DEF_UEDe_Register_tags_1)
+ /sizeof(asn_DEF_UEDe_Register_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UEDe_Register_1,
+ 1, /* Elements count */
+ &asn_SPC_UEDe_Register_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UERegisterAccept.c b/src/hnbap/UERegisterAccept.c
new file mode 100644
index 0000000..1da47fe
--- /dev/null
+++ b/src/hnbap/UERegisterAccept.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UERegisterAccept.h>
+
+static int
+memb_ueRegisterAccept_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueRegisterAccept_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueRegisterAccept_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueRegisterAccept_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueRegisterAccept_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueRegisterAccept_ies_specs_2 = {
+ sizeof(struct ueRegisterAccept_ies),
+ offsetof(struct ueRegisterAccept_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueRegisterAccept_ies_2 = {
+ "ueRegisterAccept-ies",
+ "ueRegisterAccept-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueRegisterAccept_ies_tags_2,
+ sizeof(asn_DEF_ueRegisterAccept_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterAccept_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueRegisterAccept_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueRegisterAccept_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterAccept_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueRegisterAccept_ies_constr_2,
+ asn_MBR_ueRegisterAccept_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueRegisterAccept_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UERegisterAccept_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UERegisterAccept, ueRegisterAccept_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueRegisterAccept_ies_2,
+ memb_ueRegisterAccept_ies_constraint_1,
+ &asn_PER_memb_ueRegisterAccept_ies_constr_2,
+ 0,
+ "ueRegisterAccept-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UERegisterAccept_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERegisterAccept_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterAccept-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UERegisterAccept_specs_1 = {
+ sizeof(struct UERegisterAccept),
+ offsetof(struct UERegisterAccept, _asn_ctx),
+ asn_MAP_UERegisterAccept_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UERegisterAccept = {
+ "UERegisterAccept",
+ "UERegisterAccept",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UERegisterAccept_tags_1,
+ sizeof(asn_DEF_UERegisterAccept_tags_1)
+ /sizeof(asn_DEF_UERegisterAccept_tags_1[0]), /* 1 */
+ asn_DEF_UERegisterAccept_tags_1, /* Same as above */
+ sizeof(asn_DEF_UERegisterAccept_tags_1)
+ /sizeof(asn_DEF_UERegisterAccept_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UERegisterAccept_1,
+ 1, /* Elements count */
+ &asn_SPC_UERegisterAccept_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UERegisterReject.c b/src/hnbap/UERegisterReject.c
new file mode 100644
index 0000000..01b35d9
--- /dev/null
+++ b/src/hnbap/UERegisterReject.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UERegisterReject.h>
+
+static int
+memb_ueRegisterReject_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueRegisterReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueRegisterReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueRegisterReject_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueRegisterReject_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueRegisterReject_ies_specs_2 = {
+ sizeof(struct ueRegisterReject_ies),
+ offsetof(struct ueRegisterReject_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueRegisterReject_ies_2 = {
+ "ueRegisterReject-ies",
+ "ueRegisterReject-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueRegisterReject_ies_tags_2,
+ sizeof(asn_DEF_ueRegisterReject_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterReject_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueRegisterReject_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueRegisterReject_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterReject_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueRegisterReject_ies_constr_2,
+ asn_MBR_ueRegisterReject_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueRegisterReject_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UERegisterReject_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UERegisterReject, ueRegisterReject_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueRegisterReject_ies_2,
+ memb_ueRegisterReject_ies_constraint_1,
+ &asn_PER_memb_ueRegisterReject_ies_constr_2,
+ 0,
+ "ueRegisterReject-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UERegisterReject_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERegisterReject_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterReject-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UERegisterReject_specs_1 = {
+ sizeof(struct UERegisterReject),
+ offsetof(struct UERegisterReject, _asn_ctx),
+ asn_MAP_UERegisterReject_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UERegisterReject = {
+ "UERegisterReject",
+ "UERegisterReject",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UERegisterReject_tags_1,
+ sizeof(asn_DEF_UERegisterReject_tags_1)
+ /sizeof(asn_DEF_UERegisterReject_tags_1[0]), /* 1 */
+ asn_DEF_UERegisterReject_tags_1, /* Same as above */
+ sizeof(asn_DEF_UERegisterReject_tags_1)
+ /sizeof(asn_DEF_UERegisterReject_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UERegisterReject_1,
+ 1, /* Elements count */
+ &asn_SPC_UERegisterReject_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UERegisterRequest.c b/src/hnbap/UERegisterRequest.c
new file mode 100644
index 0000000..a076152
--- /dev/null
+++ b/src/hnbap/UERegisterRequest.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UERegisterRequest.h>
+
+static int
+memb_ueRegisterRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueRegisterRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueRegisterRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueRegisterRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueRegisterRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueRegisterRequest_ies_specs_2 = {
+ sizeof(struct ueRegisterRequest_ies),
+ offsetof(struct ueRegisterRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueRegisterRequest_ies_2 = {
+ "ueRegisterRequest-ies",
+ "ueRegisterRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueRegisterRequest_ies_tags_2,
+ sizeof(asn_DEF_ueRegisterRequest_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueRegisterRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueRegisterRequest_ies_tags_2)
+ /sizeof(asn_DEF_ueRegisterRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueRegisterRequest_ies_constr_2,
+ asn_MBR_ueRegisterRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueRegisterRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UERegisterRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UERegisterRequest, ueRegisterRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueRegisterRequest_ies_2,
+ memb_ueRegisterRequest_ies_constraint_1,
+ &asn_PER_memb_ueRegisterRequest_ies_constr_2,
+ 0,
+ "ueRegisterRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UERegisterRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERegisterRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRegisterRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UERegisterRequest_specs_1 = {
+ sizeof(struct UERegisterRequest),
+ offsetof(struct UERegisterRequest, _asn_ctx),
+ asn_MAP_UERegisterRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UERegisterRequest = {
+ "UERegisterRequest",
+ "UERegisterRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UERegisterRequest_tags_1,
+ sizeof(asn_DEF_UERegisterRequest_tags_1)
+ /sizeof(asn_DEF_UERegisterRequest_tags_1[0]), /* 1 */
+ asn_DEF_UERegisterRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_UERegisterRequest_tags_1)
+ /sizeof(asn_DEF_UERegisterRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UERegisterRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_UERegisterRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/URAIdentity.c b/src/hnbap/URAIdentity.c
new file mode 100644
index 0000000..dd20ed6
--- /dev/null
+++ b/src/hnbap/URAIdentity.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/URAIdentity.h>
+
+int
+URAIdentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+URAIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+URAIdentity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+URAIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+URAIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+URAIdentity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+URAIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+URAIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+URAIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+URAIdentity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+URAIdentity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+URAIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ URAIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_URAIdentity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_URAIdentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_URAIdentity = {
+ "URAIdentity",
+ "URAIdentity",
+ URAIdentity_free,
+ URAIdentity_print,
+ URAIdentity_constraint,
+ URAIdentity_decode_ber,
+ URAIdentity_encode_der,
+ URAIdentity_decode_xer,
+ URAIdentity_encode_xer,
+ URAIdentity_decode_uper,
+ URAIdentity_encode_uper,
+ URAIdentity_decode_aper,
+ URAIdentity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_URAIdentity_tags_1,
+ sizeof(asn_DEF_URAIdentity_tags_1)
+ /sizeof(asn_DEF_URAIdentity_tags_1[0]), /* 1 */
+ asn_DEF_URAIdentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_URAIdentity_tags_1)
+ /sizeof(asn_DEF_URAIdentity_tags_1[0]), /* 1 */
+ &asn_PER_type_URAIdentity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/hnbap/URAIdentityList.c b/src/hnbap/URAIdentityList.c
new file mode 100644
index 0000000..0872cec
--- /dev/null
+++ b/src/hnbap/URAIdentityList.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/URAIdentityList.h>
+
+static asn_per_constraints_t asn_PER_type_URAIdentityList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 0l, 8l } /* (SIZE(0..8)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_URAIdentityList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+ 0,
+ &asn_DEF_URAIdentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_URAIdentityList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_URAIdentityList_specs_1 = {
+ sizeof(struct URAIdentityList),
+ offsetof(struct URAIdentityList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_URAIdentityList = {
+ "URAIdentityList",
+ "URAIdentityList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_URAIdentityList_tags_1,
+ sizeof(asn_DEF_URAIdentityList_tags_1)
+ /sizeof(asn_DEF_URAIdentityList_tags_1[0]), /* 1 */
+ asn_DEF_URAIdentityList_tags_1, /* Same as above */
+ sizeof(asn_DEF_URAIdentityList_tags_1)
+ /sizeof(asn_DEF_URAIdentityList_tags_1[0]), /* 1 */
+ &asn_PER_type_URAIdentityList_constr_1,
+ asn_MBR_URAIdentityList_1,
+ 1, /* Single element */
+ &asn_SPC_URAIdentityList_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UTRANCellID.c b/src/hnbap/UTRANCellID.c
new file mode 100644
index 0000000..c6b964c
--- /dev/null
+++ b/src/hnbap/UTRANCellID.c
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UTRANCellID.h>
+
+static asn_TYPE_member_t asn_MBR_UTRANCellID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, rAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UTRANCellID, uTRANcellID),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CellIdentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uTRANcellID"
+ },
+ { ATF_POINTER, 1, offsetof(struct UTRANCellID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_UTRANCellID_oms_1[] = { 4 };
+static const ber_tlv_tag_t asn_DEF_UTRANCellID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UTRANCellID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uTRANcellID */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UTRANCellID_specs_1 = {
+ sizeof(struct UTRANCellID),
+ offsetof(struct UTRANCellID, _asn_ctx),
+ asn_MAP_UTRANCellID_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_UTRANCellID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UTRANCellID = {
+ "UTRANCellID",
+ "UTRANCellID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UTRANCellID_tags_1,
+ sizeof(asn_DEF_UTRANCellID_tags_1)
+ /sizeof(asn_DEF_UTRANCellID_tags_1[0]), /* 1 */
+ asn_DEF_UTRANCellID_tags_1, /* Same as above */
+ sizeof(asn_DEF_UTRANCellID_tags_1)
+ /sizeof(asn_DEF_UTRANCellID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UTRANCellID_1,
+ 5, /* Elements count */
+ &asn_SPC_UTRANCellID_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UnknownU-RNTIIndication.c b/src/hnbap/UnknownU-RNTIIndication.c
new file mode 100644
index 0000000..c5d3613
--- /dev/null
+++ b/src/hnbap/UnknownU-RNTIIndication.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UnknownU-RNTIIndication.h>
+
+int
+UnknownU_RNTIIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+UnknownU_RNTIIndication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+UnknownU_RNTIIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+UnknownU_RNTIIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+UnknownU_RNTIIndication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+UnknownU_RNTIIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+UnknownU_RNTIIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+UnknownU_RNTIIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+UnknownU_RNTIIndication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+UnknownU_RNTIIndication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+UnknownU_RNTIIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ UnknownU_RNTIIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_UnknownU_RNTIIndication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_UnknownU_RNTIIndication_value2enum_1[] = {
+ { 0, 7, "unknown" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_UnknownU_RNTIIndication_enum2value_1[] = {
+ 0 /* unknown(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_UnknownU_RNTIIndication_specs_1 = {
+ asn_MAP_UnknownU_RNTIIndication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_UnknownU_RNTIIndication_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_UnknownU_RNTIIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UnknownU_RNTIIndication = {
+ "UnknownU-RNTIIndication",
+ "UnknownU-RNTIIndication",
+ UnknownU_RNTIIndication_free,
+ UnknownU_RNTIIndication_print,
+ UnknownU_RNTIIndication_constraint,
+ UnknownU_RNTIIndication_decode_ber,
+ UnknownU_RNTIIndication_encode_der,
+ UnknownU_RNTIIndication_decode_xer,
+ UnknownU_RNTIIndication_encode_xer,
+ UnknownU_RNTIIndication_decode_uper,
+ UnknownU_RNTIIndication_encode_uper,
+ UnknownU_RNTIIndication_decode_aper,
+ UnknownU_RNTIIndication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UnknownU_RNTIIndication_tags_1,
+ sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1)
+ /sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1[0]), /* 1 */
+ asn_DEF_UnknownU_RNTIIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1)
+ /sizeof(asn_DEF_UnknownU_RNTIIndication_tags_1[0]), /* 1 */
+ &asn_PER_type_UnknownU_RNTIIndication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_UnknownU_RNTIIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/UnsuccessfulOutcome.c b/src/hnbap/UnsuccessfulOutcome.c
new file mode 100644
index 0000000..4ea7963
--- /dev/null
+++ b/src/hnbap/UnsuccessfulOutcome.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-PDU"
+ * found in "../../asn1/hnbap/HNBAP-PDU.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/UnsuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = {
+ sizeof(struct UnsuccessfulOutcome),
+ offsetof(struct UnsuccessfulOutcome, _asn_ctx),
+ asn_MAP_UnsuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = {
+ "UnsuccessfulOutcome",
+ "UnsuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_UnsuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_UnsuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap/Update-cause.c b/src/hnbap/Update-cause.c
new file mode 100644
index 0000000..f49eae7
--- /dev/null
+++ b/src/hnbap/Update-cause.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "HNBAP-IEs"
+ * found in "../../asn1/hnbap/HNBAP-IEs.asn"
+ * `asn1c -gen-PER`
+ */
+
+#include <osmocom/hnbap/Update-cause.h>
+
+int
+Update_cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+Update_cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+Update_cause_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+Update_cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+Update_cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+Update_cause_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+Update_cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+Update_cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+Update_cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+Update_cause_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+Update_cause_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+Update_cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ Update_cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_Update_cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Update_cause_value2enum_1[] = {
+ { 0, 22, "relocation-preparation" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_Update_cause_enum2value_1[] = {
+ 0 /* relocation-preparation(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_Update_cause_specs_1 = {
+ asn_MAP_Update_cause_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_Update_cause_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_Update_cause_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Update_cause = {
+ "Update-cause",
+ "Update-cause",
+ Update_cause_free,
+ Update_cause_print,
+ Update_cause_constraint,
+ Update_cause_decode_ber,
+ Update_cause_encode_der,
+ Update_cause_decode_xer,
+ Update_cause_encode_xer,
+ Update_cause_decode_uper,
+ Update_cause_encode_uper,
+ Update_cause_decode_aper,
+ Update_cause_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Update_cause_tags_1,
+ sizeof(asn_DEF_Update_cause_tags_1)
+ /sizeof(asn_DEF_Update_cause_tags_1[0]), /* 1 */
+ asn_DEF_Update_cause_tags_1, /* Same as above */
+ sizeof(asn_DEF_Update_cause_tags_1)
+ /sizeof(asn_DEF_Update_cause_tags_1[0]), /* 1 */
+ &asn_PER_type_Update_cause_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_Update_cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/hnbap_common.c b/src/hnbap_common.c
new file mode 100644
index 0000000..f8cfb13
--- /dev/null
+++ b/src/hnbap_common.c
@@ -0,0 +1,249 @@
+/* HNBAP common code */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+#include <stdint.h>
+
+#include <osmocom/core/msgb.h>
+
+#include <osmocom/hnbap/HNBAP-PDU.h>
+#include <osmocom/hnbap/hnbap_common.h>
+#include <osmocom/iuh/hnbgw.h>
+
+static const struct value_string hnbap_cause_radio_vals[] = {
+ { CauseRadioNetwork_overload, "overload" },
+ { CauseRadioNetwork_unauthorised_Location, "unauthorized location" },
+ { CauseRadioNetwork_unauthorised_HNB, "unauthorized HNB" },
+ { CauseRadioNetwork_hNB_parameter_mismatch, "HNB parameter mismatch" },
+ { CauseRadioNetwork_invalid_UE_identity, "invalid UE identity" },
+ { CauseRadioNetwork_uE_not_allowed_on_this_HNB,
+ "UE not allowed on this HNB" },
+ { CauseRadioNetwork_uE_unauthorised, "unauthorised UE" },
+ { CauseRadioNetwork_connection_with_UE_lost, "connection with UE lost" },
+ { CauseRadioNetwork_ue_RRC_release, "UE RRC release" },
+ { CauseRadioNetwork_hNB_not_registered, "HNB not registered" },
+ { CauseRadioNetwork_unspecified, "unspecified" },
+ { CauseRadioNetwork_normal, "normal" },
+ { CauseRadioNetwork_uE_relocated, "UE relocated" },
+ { CauseRadioNetwork_ue_registered_in_another_HNB,
+ "UE registered in another HNB" },
+ { 0, NULL }
+};
+
+static const struct value_string hnbap_cause_transp_vals[] = {
+ { CauseTransport_transport_resource_unavailable,
+ "transport resource unavailable" },
+ { CauseTransport_unspecified, "unspecified" },
+ { 0, NULL }
+};
+
+static const struct value_string hnbap_cause_prot_vals[] = {
+ { CauseProtocol_transfer_syntax_error, "syntax error" },
+ { CauseProtocol_abstract_syntax_error_reject,
+ "abstract syntax error; reject" },
+ { CauseProtocol_abstract_syntax_error_ignore_and_notify,
+ "abstract syntax error; ignore and notify" },
+ { CauseProtocol_message_not_compatible_with_receiver_state,
+ "message not compatible with receiver state" },
+ { CauseProtocol_semantic_error, "semantic error" },
+ { CauseProtocol_unspecified, "unspecified" },
+ { CauseProtocol_abstract_syntax_error_falsely_constructed_message,
+ "falsely constructed message" },
+ { 0, NULL }
+};
+
+static const struct value_string hnbap_cause_misc_vals[] = {
+ { CauseMisc_processing_overload, "processing overload" },
+ { CauseMisc_hardware_failure, "hardware failure" },
+ { CauseMisc_o_and_m_intervention, "OAM intervention" },
+ { CauseMisc_unspecified, "unspecified" },
+ { 0, NULL }
+};
+
+char *hnbap_cause_str(Cause_t *cause)
+{
+ static char buf[32];
+
+ switch (cause->present) {
+ case Cause_PR_radioNetwork:
+ snprintf(buf, sizeof(buf), "radio(%s)",
+ get_value_string(hnbap_cause_radio_vals,
+ cause->choice.radioNetwork));
+ break;
+ case Cause_PR_transport:
+ snprintf(buf, sizeof(buf), "transport(%s)",
+ get_value_string(hnbap_cause_transp_vals,
+ cause->choice.transport));
+ break;
+ case Cause_PR_protocol:
+ snprintf(buf, sizeof(buf), "protocol(%s)",
+ get_value_string(hnbap_cause_prot_vals,
+ cause->choice.protocol));
+ break;
+ case Cause_PR_misc:
+ snprintf(buf, sizeof(buf), "misc(%s)",
+ get_value_string(hnbap_cause_misc_vals,
+ cause->choice.misc));
+ break;
+ }
+ return buf;
+}
+
+
+int asn_debug = 0;
+int asn1_xer_print = 0;
+
+static struct msgb *hnbap_msgb_alloc(void)
+{
+ return msgb_alloc(1024, "HNBAP Tx");
+}
+
+static struct msgb *_hnbap_gen_msg(HNBAP_PDU_t *pdu)
+{
+ struct msgb *msg = hnbap_msgb_alloc();
+ asn_enc_rval_t rval;
+
+ if (!msg)
+ return NULL;
+
+ rval = aper_encode_to_buffer(&asn_DEF_HNBAP_PDU, pdu,
+ msg->data, msgb_tailroom(msg));
+ if (rval.encoded < 0) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error encoding type: %s\n",
+ rval.failed_type->name);
+
+ }
+
+ msgb_put(msg, rval.encoded/8);
+
+ return msg;
+}
+
+struct msgb *hnbap_generate_initiating_message(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td, void *sptr)
+{
+ struct msgb *msg;
+ HNBAP_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(HNBAP_PDU_t));
+
+ pdu.present = HNBAP_PDU_PR_initiatingMessage;
+ pdu.choice.initiatingMessage.procedureCode = procedureCode;
+ pdu.choice.initiatingMessage.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _hnbap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_PDU, &pdu);
+
+ return msg;
+}
+
+struct msgb *hnbap_generate_successful_outcome(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ struct msgb *msg;
+ HNBAP_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(HNBAP_PDU_t));
+
+ pdu.present = HNBAP_PDU_PR_successfulOutcome;
+ pdu.choice.successfulOutcome.procedureCode = procedureCode;
+ pdu.choice.successfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _hnbap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_PDU, &pdu);
+
+ return msg;
+}
+
+struct msgb *hnbap_generate_unsuccessful_outcome(
+ e_ProcedureCode procedureCode,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ struct msgb *msg;
+ HNBAP_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(HNBAP_PDU_t));
+
+ pdu.present = HNBAP_PDU_PR_unsuccessfulOutcome;
+ pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
+ pdu.choice.unsuccessfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _hnbap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_PDU, &pdu);
+
+ return msg;
+}
+
+IE_t *hnbap_new_ie(ProtocolIE_ID_t id,
+ Criticality_t criticality,
+ asn_TYPE_descriptor_t * type, void *sptr)
+{
+
+ IE_t *buff;
+ int rc;
+
+ if ((buff = CALLOC(1, sizeof(IE_t))) == NULL) {
+ // Possible error on malloc
+ return NULL;
+ }
+
+ buff->id = id;
+ buff->criticality = criticality;
+
+ rc = ANY_fromType_aper(&buff->value, type, sptr);
+ if (rc < 0) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ if (asn1_xer_print)
+ if (xer_fprint(stdout, &asn_DEF_IE, buff) < 0) {
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ return buff;
+}
diff --git a/src/hnbgw.c b/src/hnbgw.c
new file mode 100644
index 0000000..c9fdd53
--- /dev/null
+++ b/src/hnbgw.c
@@ -0,0 +1,541 @@
+/* main application for hnb-gw part of osmo-iuh */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdbool.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/sctp.h>
+#include <arpa/inet.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/select.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/socket.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/write_queue.h>
+
+#include <osmocom/vty/telnet_interface.h>
+#include <osmocom/vty/logging.h>
+
+#include <osmocom/netif/stream.h>
+
+#include <osmocom/sigtran/protocol/m3ua.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/hnbgw_hnbap.h>
+#include <osmocom/iuh/hnbgw_rua.h>
+#include <osmocom/iuh/hnbgw_cn.h>
+#include <osmocom/iuh/context_map.h>
+
+static const char * const osmo_hnbgw_copyright =
+ "OsmoHNBGW - Osmocom Home Node B Gateway implementation\r\n"
+ "Copyright (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>\r\n"
+ "Contributions by Daniel Willmann, Harald Welte, Neels Hofmeyr\r\n"
+ "License AGPLv3+: GNU AGPL version 3 or later <http://gnu.org/licenses/agpl-3.0.html>\r\n"
+ "This is free software: you are free to change and redistribute it.\r\n"
+ "There is NO WARRANTY, to the extent permitted by law.\r\n";
+
+static void *tall_hnb_ctx;
+void *talloc_asn1_ctx;
+
+static struct hnb_gw *g_hnb_gw;
+
+static int listen_fd_cb(struct osmo_fd *fd, unsigned int what);
+
+static struct hnb_gw *hnb_gw_create(void *ctx)
+{
+ struct hnb_gw *gw = talloc_zero(ctx, struct hnb_gw);
+
+ /* strdup so we can easily talloc_free in the VTY code */
+ gw->config.iuh_local_ip = talloc_strdup(gw, HNBGW_LOCAL_IP_DEFAULT);
+ gw->config.iuh_local_port = IUH_DEFAULT_SCTP_PORT;
+
+ gw->next_ue_ctx_id = 23;
+ INIT_LLIST_HEAD(&gw->hnb_list);
+ INIT_LLIST_HEAD(&gw->ue_list);
+
+ context_map_init(gw);
+
+ return gw;
+}
+
+struct ue_context *ue_context_by_id(struct hnb_gw *gw, uint32_t id)
+{
+ struct ue_context *ue;
+
+ llist_for_each_entry(ue, &gw->ue_list, list) {
+ if (ue->context_id == id)
+ return ue;
+ }
+ return NULL;
+
+}
+
+struct ue_context *ue_context_by_imsi(struct hnb_gw *gw, const char *imsi)
+{
+ struct ue_context *ue;
+
+ llist_for_each_entry(ue, &gw->ue_list, list) {
+ if (!strcmp(ue->imsi, imsi))
+ return ue;
+ }
+ return NULL;
+}
+
+struct ue_context *ue_context_by_tmsi(struct hnb_gw *gw, uint32_t tmsi)
+{
+ struct ue_context *ue;
+
+ llist_for_each_entry(ue, &gw->ue_list, list) {
+ if (ue->tmsi == tmsi)
+ return ue;
+ }
+ return NULL;
+}
+
+void ue_context_free_by_hnb(struct hnb_gw *gw, const struct hnb_context *hnb)
+{
+ struct ue_context *ue, *tmp;
+
+ llist_for_each_entry_safe(ue, tmp, &gw->ue_list, list) {
+ if (ue->hnb == hnb)
+ ue_context_free(ue);
+ }
+}
+
+static uint32_t get_next_ue_ctx_id(struct hnb_gw *gw)
+{
+ uint32_t id;
+
+ do {
+ id = gw->next_ue_ctx_id++;
+ } while (ue_context_by_id(gw, id));
+
+ return id;
+}
+
+struct ue_context *ue_context_alloc(struct hnb_context *hnb, const char *imsi,
+ uint32_t tmsi)
+{
+ struct ue_context *ue;
+
+ ue = talloc_zero(tall_hnb_ctx, struct ue_context);
+ if (!ue)
+ return NULL;
+
+ ue->hnb = hnb;
+ if (imsi) {
+ strncpy(ue->imsi, imsi, sizeof(ue->imsi));
+ ue->imsi[sizeof(ue->imsi)-1] = '\0';
+ } else
+ ue->imsi[0] = '\0';
+ ue->tmsi = tmsi;
+ ue->context_id = get_next_ue_ctx_id(hnb->gw);
+ llist_add_tail(&ue->list, &hnb->gw->ue_list);
+
+ LOGP(DHNBAP, LOGL_INFO, "created UE context: id 0x%x, imsi %s, tmsi 0x%x\n",
+ ue->context_id, imsi? imsi : "-", tmsi);
+
+ return ue;
+}
+
+void ue_context_free(struct ue_context *ue)
+{
+ llist_del(&ue->list);
+ talloc_free(ue);
+}
+static int hnb_close_cb(struct osmo_stream_srv *conn)
+{
+}
+
+static int hnb_read_cb(struct osmo_stream_srv *conn)
+{
+ struct hnb_context *hnb = osmo_stream_srv_get_data(conn);
+ struct msgb *msg = msgb_alloc(IUH_MSGB_SIZE, "Iuh rx");
+ int flags = 0;
+ int rc;
+
+ if (!msg)
+ return -ENOMEM;
+
+ /* we store a reference to the HomeNodeB in the msg->dest for the
+ * benefit of varoius downstream processing functions */
+ msg->dst = hnb;
+
+ rc = osmo_stream_srv_recv(conn, msg);
+ if (rc == -EAGAIN) {
+ /* Notification received */
+ msgb_free(msg);
+ return 0;
+ } else if (rc < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Error during sctp_recvmsg()\n");
+ /* FIXME: clean up after disappeared HNB */
+ hnb_context_release(hnb);
+ goto out;
+ } else if (rc == 0) {
+ hnb_context_release(hnb);
+ rc = -1;
+
+ goto out;
+ } else {
+ msgb_put(msg, rc);
+ }
+
+ switch (msgb_sctp_ppid(msg)) {
+ case IUH_PPI_HNBAP:
+ hnb->hnbap_stream = msgb_sctp_stream(msg);
+ rc = hnbgw_hnbap_rx(hnb, msg);
+ break;
+ case IUH_PPI_RUA:
+ hnb->rua_stream = msgb_sctp_stream(msg);
+ rc = hnbgw_rua_rx(hnb, msg);
+ break;
+ case IUH_PPI_SABP:
+ case IUH_PPI_RNA:
+ case IUH_PPI_PUA:
+ LOGP(DMAIN, LOGL_ERROR, "Unimplemented SCTP PPID=%u received\n",
+ msgb_sctp_ppid(msg));
+ rc = 0;
+ break;
+ default:
+ LOGP(DMAIN, LOGL_ERROR, "Unknown SCTP PPID=%u received\n",
+ msgb_sctp_ppid(msg));
+ rc = 0;
+ break;
+ }
+
+out:
+ msgb_free(msg);
+ return rc;
+}
+
+static int hnb_write_cb(struct osmo_fd *fd, struct msgb *msg)
+{
+ struct hnb_context *ctx = fd->data;
+ struct sctp_sndrcvinfo sinfo = {
+ .sinfo_ppid = htonl(msgb_sctp_ppid(msg)),
+ .sinfo_stream = ctx->hnbap_stream,
+ };
+ int rc;
+
+ rc = sctp_send(fd->fd, msgb_data(msg), msgb_length(msg),
+ &sinfo, 0);
+ /* we don't need to msgb_free(), write_queue does this for us */
+ return rc;
+}
+
+struct hnb_context *hnb_context_alloc(struct hnb_gw *gw, struct osmo_stream_srv_link *link, int new_fd)
+{
+ struct hnb_context *ctx;
+
+ ctx = talloc_zero(tall_hnb_ctx, struct hnb_context);
+ if (!ctx)
+ return NULL;
+ INIT_LLIST_HEAD(&ctx->map_list);
+
+ ctx->gw = gw;
+ ctx->conn = osmo_stream_srv_create(tall_hnb_ctx, link, new_fd, hnb_read_cb, hnb_close_cb, ctx);
+ if (!ctx->conn) {
+ LOGP(DMAIN, LOGL_INFO, "error while creating connection\n");
+ talloc_free(ctx);
+ return NULL;
+ }
+
+ llist_add_tail(&ctx->list, &gw->hnb_list);
+ return ctx;
+}
+
+void hnb_context_release(struct hnb_context *ctx)
+{
+ struct hnbgw_context_map *map, *map2;
+
+ /* remove from the list of HNB contexts */
+ llist_del(&ctx->list);
+
+ /* deactivate all context maps */
+ llist_for_each_entry_safe(map, map2, &ctx->map_list, hnb_list) {
+ /* remove it from list, as HNB context will soon be
+ * gone. Let's hope the second osmo_llist_del in the
+ * map garbage collector works fine? */
+ llist_del(&map->hnb_list);
+ llist_del(&map->cn_list);
+ context_map_deactivate(map);
+ }
+ ue_context_free_by_hnb(ctx->gw, ctx);
+ osmo_stream_srv_destroy(ctx->conn);
+
+ talloc_free(ctx);
+}
+
+/*! call-back when the listen FD has something to read */
+static int accept_cb(struct osmo_stream_srv_link *srv, int fd)
+{
+ struct hnb_gw *gw = osmo_stream_srv_link_get_data(srv);
+ struct hnb_context *ctx;
+
+ ctx = hnb_context_alloc(gw, srv, fd);
+ if (!ctx)
+ return -ENOMEM;
+
+ return 0;
+}
+
+static const struct log_info_cat log_cat[] = {
+ [DMAIN] = {
+ .name = "DMAIN", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "Main program",
+ },
+ [DHNBAP] = {
+ .name = "DHNBAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "Home Node B Application Part",
+ },
+ [DRUA] = {
+ .name = "DRUA", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "RANAP User Adaptation",
+ },
+ [DRANAP] = {
+ .name = "DRANAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "RAN Application Part",
+ },
+};
+
+static const struct log_info hnbgw_log_info = {
+ .cat = log_cat,
+ .num_cat = ARRAY_SIZE(log_cat),
+};
+
+static struct vty_app_info vty_info = {
+ .name = "OsmoHNBGW",
+ .version = "0",
+ .go_parent_cb = hnbgw_vty_go_parent,
+};
+
+static struct {
+ int daemonize;
+ const char *config_file;
+ bool log_disable_color;
+ bool log_enable_timestamp;
+ int log_level;
+ const char *log_category_mask;
+} hnbgw_cmdline_config = {
+ 0,
+ "osmo-hnbgw.cfg",
+ true,
+ false,
+ 0,
+ NULL,
+};
+
+static void print_usage()
+{
+ printf("Usage: osmo-hnbgw\n");
+}
+
+static void print_help()
+{
+ printf(" -h --help This text.\n");
+ printf(" -d option --debug=DHNBAP:DRUA:DRANAP:DMAIN Enable debugging.\n");
+ printf(" -D --daemonize Fork the process into a background daemon.\n");
+ printf(" -c --config-file filename The config file to use.\n");
+ printf(" -s --disable-color\n");
+ printf(" -T --timestamp Prefix every log line with a timestamp.\n");
+ printf(" -V --version Print the version of OsmoHNBGW.\n");
+ printf(" -e --log-level number Set a global loglevel.\n");
+}
+
+static void handle_options(int argc, char **argv)
+{
+ while (1) {
+ int option_index = 0, c;
+ static struct option long_options[] = {
+ {"help", 0, 0, 'h'},
+ {"debug", 1, 0, 'd'},
+ {"daemonize", 0, 0, 'D'},
+ {"config-file", 1, 0, 'c'},
+ {"disable-color", 0, 0, 's'},
+ {"timestamp", 0, 0, 'T'},
+ {"version", 0, 0, 'V' },
+ {"log-level", 1, 0, 'e'},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long(argc, argv, "hd:Dc:sTVe:",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'h':
+ print_usage();
+ print_help();
+ exit(0);
+ case 's':
+ hnbgw_cmdline_config.log_disable_color = true;
+ break;
+ case 'd':
+ hnbgw_cmdline_config.log_category_mask = optarg;
+ break;
+ case 'D':
+ hnbgw_cmdline_config.daemonize = 1;
+ break;
+ case 'c':
+ hnbgw_cmdline_config.config_file = optarg;
+ break;
+ case 'T':
+ hnbgw_cmdline_config.log_enable_timestamp = true;
+ break;
+ case 'e':
+ hnbgw_cmdline_config.log_level = atoi(optarg);
+ break;
+ case 'V':
+ print_version(1);
+ exit(0);
+ break;
+ default:
+ /* catch unknown options *as well as* missing arguments. */
+ fprintf(stderr, "Error in command line options. Exiting.\n");
+ exit(-1);
+ break;
+ }
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ struct osmo_sccp_user *sccp_user;
+ struct osmo_sccp_link *sua_link;
+ struct osmo_stream_srv_link *srv;
+ int rc;
+
+ tall_hnb_ctx = talloc_named_const(NULL, 0, "hnb_context");
+ talloc_asn1_ctx = talloc_named_const(NULL, 0, "asn1_context");
+ msgb_talloc_ctx_init(tall_hnb_ctx, 0);
+
+ g_hnb_gw = hnb_gw_create(tall_hnb_ctx);
+ g_hnb_gw->config.rnc_id = 23;
+
+ rc = osmo_init_logging(&hnbgw_log_info);
+ if (rc < 0)
+ exit(1);
+
+ osmo_ss7_init();
+
+ vty_info.copyright = osmo_hnbgw_copyright;
+ vty_init(&vty_info);
+
+ osmo_ss7_vty_init_asp(tall_hnb_ctx);
+ hnbgw_vty_init(g_hnb_gw, tall_hnb_ctx);
+ logging_vty_add_cmds(&hnbgw_log_info);
+
+ /* Handle options after vty_init(), for --version */
+ handle_options(argc, argv);
+
+ rc = vty_read_config_file(hnbgw_cmdline_config.config_file, NULL);
+ if (rc < 0) {
+ LOGP(DMAIN, LOGL_FATAL, "Failed to parse the config file: '%s'\n",
+ hnbgw_cmdline_config.config_file);
+ return 1;
+ }
+
+ /*
+ * cmdline options take precedence over config file, but if no options
+ * were passed we must not override the config file.
+ */
+ if (hnbgw_cmdline_config.log_disable_color)
+ log_set_use_color(osmo_stderr_target, 0);
+ if (hnbgw_cmdline_config.log_category_mask)
+ log_parse_category_mask(osmo_stderr_target,
+ hnbgw_cmdline_config.log_category_mask);
+ if (hnbgw_cmdline_config.log_enable_timestamp)
+ log_set_print_timestamp(osmo_stderr_target, 1);
+ if (hnbgw_cmdline_config.log_level)
+ log_set_log_level(osmo_stderr_target,
+ hnbgw_cmdline_config.log_level);
+
+ rc = telnet_init_dynif(NULL, g_hnb_gw, vty_get_bind_addr(), 2323);
+ if (rc < 0) {
+ perror("Error binding VTY port");
+ exit(1);
+ }
+
+ ranap_set_log_area(DRANAP);
+
+ rc = hnbgw_cnlink_init(g_hnb_gw,
+ "127.0.0.1", M3UA_PORT, "127.0.0.5" /* FIXME: configurable */);
+ if (rc < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Failed to initialize SCCP link to CN\n");
+ exit(1);
+ }
+
+ OSMO_ASSERT(g_hnb_gw->config.iuh_local_ip);
+ LOGP(DMAIN, LOGL_NOTICE, "Listening for Iuh at %s %d\n",
+ g_hnb_gw->config.iuh_local_ip,
+ g_hnb_gw->config.iuh_local_port);
+ srv = osmo_stream_srv_link_create(tall_hnb_ctx);
+ if (!srv) {
+ perror("cannot create server");
+ exit(1);
+ }
+ osmo_stream_srv_link_set_data(srv, g_hnb_gw);
+ osmo_stream_srv_link_set_proto(srv, IPPROTO_SCTP);
+ osmo_stream_srv_link_set_addr(srv, g_hnb_gw->config.iuh_local_ip);
+ osmo_stream_srv_link_set_port(srv, g_hnb_gw->config.iuh_local_port);
+ osmo_stream_srv_link_set_accept_cb(srv, accept_cb);
+
+ if (osmo_stream_srv_link_open(srv) < 0) {
+ perror("Cannot open server");
+ exit(1);
+ }
+ g_hnb_gw->iuh = srv;
+
+ if (hnbgw_cmdline_config.daemonize) {
+ rc = osmo_daemonize();
+ if (rc < 0) {
+ perror("Error during daemonize");
+ exit(1);
+ }
+ }
+
+ while (1) {
+ rc = osmo_select_main(0);
+ if (rc < 0)
+ exit(3);
+ }
+
+ /* not reached */
+ exit(0);
+}
diff --git a/src/hnbgw_cn.c b/src/hnbgw_cn.c
new file mode 100644
index 0000000..3b828b4
--- /dev/null
+++ b/src/hnbgw_cn.c
@@ -0,0 +1,509 @@
+/* IuCS/IuPS Core Network interface of HNB-GW */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <arpa/inet.h>
+
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/core/timer.h>
+
+#include <osmocom/sigtran/protocol/m3ua.h>
+#include <osmocom/sigtran/sccp_sap.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/hnbgw_rua.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+#include <osmocom/iuh/context_map.h>
+
+/***********************************************************************
+ * Outbound RANAP RESET to CN
+ ***********************************************************************/
+
+int hnbgw_cnlink_change_state(struct hnbgw_cnlink *cnlink, enum hnbgw_cnlink_state state);
+
+static int transmit_rst(struct hnb_gw *gw, RANAP_CN_DomainIndicator_t domain,
+ struct osmo_sccp_addr *remote_addr)
+{
+ struct msgb *msg;
+ struct msgb *msgprim;
+ RANAP_Cause_t cause = {
+ .present = RANAP_Cause_PR_transmissionNetwork,
+ .choice. transmissionNetwork = RANAP_CauseTransmissionNetwork_signalling_transport_resource_failure,
+ };
+
+ msg = ranap_new_msg_reset(domain, &cause);
+
+ return osmo_sccp_tx_unitdata_msg(gw->sccp.cnlink->sccp_user,
+ &gw->sccp.local_addr,
+ remote_addr,
+ msg);
+}
+
+/* Timer callback once T_RafC expires */
+static void cnlink_trafc_cb(void *data)
+{
+ struct hnb_gw *gw = data;
+
+ transmit_rst(gw, RANAP_CN_DomainIndicator_cs_domain, &gw->sccp.iucs_remote_addr);
+ transmit_rst(gw, RANAP_CN_DomainIndicator_ps_domain, &gw->sccp.iups_remote_addr);
+ hnbgw_cnlink_change_state(gw->sccp.cnlink, CNLINK_S_EST_RST_TX_WAIT_ACK);
+ /* The spec states that we should abandon after a configurable
+ * number of times. We decide to simply continue trying */
+}
+
+/* change the state of a CN Link */
+int hnbgw_cnlink_change_state(struct hnbgw_cnlink *cnlink, enum hnbgw_cnlink_state state)
+{
+ switch (state) {
+ case CNLINK_S_NULL:
+ case CNLINK_S_EST_PEND:
+ break;
+ case CNLINK_S_EST_CONF:
+ cnlink_trafc_cb(cnlink->gw);
+ break;
+ case CNLINK_S_EST_RST_TX_WAIT_ACK:
+ osmo_timer_schedule(&cnlink->T_RafC, 5, 0);
+ break;
+ case CNLINK_S_EST_ACTIVE:
+ osmo_timer_del(&cnlink->T_RafC);
+ break;
+ }
+}
+
+/***********************************************************************
+ * Incoming primitives from SCCP User SAP
+ ***********************************************************************/
+
+static int cn_ranap_rx_reset_cmd(struct hnbgw_cnlink *cnlink,
+ RANAP_InitiatingMessage_t *imsg)
+{
+ RANAP_ResetIEs_t ies;
+ int rc;
+
+ rc = ranap_decode_reseties(&ies, &imsg->value);
+ /* FIXME: reset resources and return reset ack */
+
+ ranap_free_reseties(&ies);
+ return rc;
+}
+
+static int cn_ranap_rx_reset_ack(struct hnbgw_cnlink *cnlink,
+ RANAP_SuccessfulOutcome_t *omsg)
+{
+ RANAP_ResetAcknowledgeIEs_t ies;
+ int rc;
+
+ rc = ranap_decode_resetacknowledgeies(&ies, &omsg->value);
+
+ hnbgw_cnlink_change_state(cnlink, CNLINK_S_EST_ACTIVE);
+
+ ranap_free_resetacknowledgeies(&ies);
+ return rc;
+}
+
+static int cn_ranap_rx_paging_cmd(struct hnbgw_cnlink *cnlink,
+ RANAP_InitiatingMessage_t *imsg,
+ const uint8_t *data, unsigned int len)
+{
+ struct hnb_gw *gw = cnlink->gw;
+ struct hnb_context *hnb;
+ RANAP_PagingIEs_t ies;
+ int rc = 0;
+
+ rc = ranap_decode_pagingies(&ies, &imsg->value);
+
+ /* FIXME: determine which HNBs to send this Paging command,
+ * rather than broadcasting to all HNBs */
+ llist_for_each_entry(hnb, &gw->hnb_list, list) {
+ rc = rua_tx_udt(hnb, data, len);
+ }
+
+ ranap_free_pagingies(&ies);
+ return 0;
+}
+
+static int cn_ranap_rx_initiating_msg(struct hnbgw_cnlink *cnlink,
+ RANAP_InitiatingMessage_t *imsg,
+ const uint8_t *data, unsigned int len)
+{
+ int rc;
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ return cn_ranap_rx_reset_cmd(cnlink, imsg);
+ case RANAP_ProcedureCode_id_Paging:
+ return cn_ranap_rx_paging_cmd(cnlink, imsg, data, len);
+ case RANAP_ProcedureCode_id_OverloadControl: /* Overload ind */
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication: /* Error ind */
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* request */
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "Procedure %u from CN, ignoring\n", imsg->procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %u from CN, ignoring\n", imsg->procedureCode);
+ break;
+ }
+ return 0;
+}
+
+static int cn_ranap_rx_successful_msg(struct hnbgw_cnlink *cnlink,
+ RANAP_SuccessfulOutcome_t *omsg)
+{
+ int rc;
+
+ switch (omsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset: /* Reset acknowledge */
+ return cn_ranap_rx_reset_ack(cnlink, omsg);
+ case RANAP_ProcedureCode_id_ResetResource: /* response */
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "Procedure %u from CN, ignoring\n", omsg->procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %u from CN, ignoring\n", omsg->procedureCode);
+ break;
+ }
+ return 0;
+}
+
+
+static int _cn_ranap_rx(struct hnbgw_cnlink *cnlink, RANAP_RANAP_PDU_t *pdu,
+ const uint8_t *data, unsigned int len)
+{
+ int rc;
+
+ switch (pdu->present) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ rc = cn_ranap_rx_initiating_msg(cnlink, &pdu->choice.initiatingMessage,
+ data, len);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ rc = cn_ranap_rx_successful_msg(cnlink, &pdu->choice.successfulOutcome);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "unsuccessful outcome procedure %u from CN, ignoring\n",
+ pdu->choice.unsuccessfulOutcome.procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "presence %u from CN, ignoring\n", pdu->present);
+ break;
+ }
+}
+
+static int handle_cn_ranap(struct hnbgw_cnlink *cnlink, const uint8_t *data,
+ unsigned int len)
+{
+ RANAP_RANAP_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL,&asn_DEF_RANAP_RANAP_PDU, (void **) &pdu,
+ data, len, 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
+ return -1;
+ }
+
+ rc = _cn_ranap_rx(cnlink, pdu, data, len);
+
+ return rc;
+}
+
+static bool pc_and_ssn_match(const struct osmo_sccp_addr *a, const struct osmo_sccp_addr *b)
+{
+ return (a == b)
+ || ((a->pc == b->pc)
+ && (a->ssn == b->ssn));
+}
+
+static int classify_cn_remote_addr(const struct hnb_gw *gw,
+ const struct osmo_sccp_addr *cn_remote_addr,
+ bool *is_ps)
+{
+ if (pc_and_ssn_match(cn_remote_addr, &gw->sccp.iucs_remote_addr)) {
+ if (is_ps)
+ *is_ps = false;
+ return 0;
+ }
+ if (pc_and_ssn_match(cn_remote_addr, &gw->sccp.iups_remote_addr)) {
+ if (is_ps)
+ *is_ps = true;
+ return 0;
+ }
+ LOGP(DMAIN, LOGL_ERROR, "Unexpected remote address, matches neither CS nor PS address: %s\n",
+ osmo_sccp_addr_dump(cn_remote_addr));
+ return -1;
+}
+
+static int handle_cn_unitdata(struct hnbgw_cnlink *cnlink,
+ const struct osmo_scu_unitdata_param *param,
+ struct osmo_prim_hdr *oph)
+{
+ if (param->called_addr.ssn != OSMO_SCCP_SSN_RANAP) {
+ LOGP(DMAIN, LOGL_NOTICE, "N-UNITDATA.ind for unknown SSN %u\n",
+ param->called_addr.ssn);
+ return -1;
+ }
+
+ if (classify_cn_remote_addr(cnlink->gw, &param->calling_addr, NULL) < 0)
+ return -1;
+
+ return handle_cn_ranap(cnlink, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+}
+
+static int handle_cn_conn_conf(struct hnbgw_cnlink *cnlink,
+ const struct osmo_scu_connect_param *param,
+ struct osmo_prim_hdr *oph)
+{
+ /* we don't actually need to do anything, as RUA towards the HNB
+ * doesn't seem to know any confirmations to its CONNECT
+ * operation */
+
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_conn_conf() conn_id=%d\n",
+ param->conn_id);
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_conn_conf() called_addr=%s\n",
+ inet_ntoa(param->called_addr.ip.v4));
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_conn_conf() calling_addr=%s\n",
+ inet_ntoa(param->calling_addr.ip.v4));
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_conn_conf() responding_addr=%s\n",
+ inet_ntoa(param->responding_addr.ip.v4));
+
+ return 0;
+}
+
+static int handle_cn_data_ind(struct hnbgw_cnlink *cnlink,
+ const struct osmo_scu_data_param *param,
+ struct osmo_prim_hdr *oph)
+{
+ struct hnbgw_context_map *map;
+
+ /* connection-oriented data is always passed transparently
+ * towards the specific HNB, via a RUA connection identified by
+ * conn_id */
+
+ map = context_map_by_cn(cnlink, param->conn_id);
+ if (!map) {
+ /* FIXME: Return an error / released primitive */
+ return 0;
+ }
+
+ return rua_tx_dt(map->hnb_ctx, map->is_ps, map->rua_ctx_id,
+ msgb_l2(oph->msg), msgb_l2len(oph->msg));
+}
+
+static int handle_cn_disc_ind(struct hnbgw_cnlink *cnlink,
+ const struct osmo_scu_disconn_param *param,
+ struct osmo_prim_hdr *oph)
+{
+ struct hnbgw_context_map *map;
+
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_disc_ind() conn_id=%d originator=%d\n",
+ param->conn_id, param->originator);
+ LOGP(DMAIN, LOGL_DEBUG, "handle_cn_disc_ind() responding_addr=%s\n",
+ inet_ntoa(param->responding_addr.ip.v4));
+
+ RUA_Cause_t rua_cause = {
+ .present = RUA_Cause_PR_NOTHING,
+ /* FIXME: Convert incoming SCCP cause to RUA cause */
+ };
+
+ /* we need to notify the HNB associated with this connection via
+ * a RUA DISCONNECT */
+
+ map = context_map_by_cn(cnlink, param->conn_id);
+ if (!map) {
+ /* FIXME: Return an error / released primitive */
+ return 0;
+ }
+
+ return rua_tx_disc(map->hnb_ctx, map->is_ps, map->rua_ctx_id,
+ &rua_cause, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+}
+
+/* Entry point for primitives coming up from SCCP User SAP */
+static int sccp_sap_up(struct osmo_prim_hdr *oph, void *ctx)
+{
+ struct osmo_sccp_user *scu = ctx;
+ struct hnbgw_cnlink *cnlink;
+ struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
+ int rc;
+
+ LOGP(DMAIN, LOGL_DEBUG, "sccp_sap_up(%s)\n", osmo_scu_prim_name(oph));
+
+ if (!scu) {
+ LOGP(DMAIN, LOGL_ERROR,
+ "sccp_sap_up(): NULL osmo_sccp_user, cannot send prim (sap %u prim %u op %d)\n",
+ oph->sap, oph->primitive, oph->operation);
+ return -1;
+ }
+
+ cnlink = osmo_sccp_user_get_priv(scu);
+ if (!cnlink) {
+ LOGP(DMAIN, LOGL_ERROR,
+ "sccp_sap_up(): NULL hnbgw_cnlink, cannot send prim (sap %u prim %u op %d)\n",
+ oph->sap, oph->primitive, oph->operation);
+ return -1;
+ }
+
+ switch (OSMO_PRIM_HDR(oph)) {
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
+ rc = handle_cn_unitdata(cnlink, &prim->u.unitdata, oph);
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM):
+ rc = handle_cn_conn_conf(cnlink, &prim->u.connect, oph);
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
+ rc = handle_cn_data_ind(cnlink, &prim->u.data, oph);
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_INDICATION):
+ rc = handle_cn_disc_ind(cnlink, &prim->u.disconnect, oph);
+ break;
+ defualt:
+ LOGP(DMAIN, LOGL_ERROR,
+ "Received unknown prim %u from SCCP USER SAP\n",
+ OSMO_PRIM_HDR(oph));
+ break;
+ }
+
+ msgb_free(oph->msg);
+
+ return 0;
+}
+
+static bool addr_has_pc_and_ssn(const struct osmo_sccp_addr *addr)
+{
+ if (!(addr->presence & OSMO_SCCP_ADDR_T_SSN))
+ return false;
+ if (!(addr->presence & OSMO_SCCP_ADDR_T_PC))
+ return false;
+ return true;
+}
+
+static int resolve_addr_name(struct osmo_sccp_addr *dest, struct osmo_ss7_instance **ss7,
+ const char *addr_name, const char *label)
+{
+ struct osmo_ss7_instance *ss7_tmp;
+
+ if (!addr_name) {
+ LOGP(DMAIN, LOGL_ERROR, "Missing config: %s remote-addr\n", label);
+ return -1;
+ }
+
+ ss7_tmp = osmo_sccp_addr_by_name(dest, addr_name);
+ if (!ss7_tmp) {
+ LOGP(DMAIN, LOGL_ERROR, "%s remote addr: no such SCCP address book entry: '%s'\n",
+ label, addr_name);
+ return -1;
+ }
+
+ if (*ss7 && (*ss7 != ss7_tmp)) {
+ LOGP(DMAIN, LOGL_ERROR, "IuCS and IuPS cannot be served from separate CS7 instances,"
+ " cs7 instance %d != %d\n", (*ss7)->cfg.id, ss7_tmp->cfg.id);
+ return -1;
+ }
+
+ *ss7 = ss7_tmp;
+
+ osmo_sccp_addr_set_ssn(dest, OSMO_SCCP_SSN_RANAP);
+
+ if (!addr_has_pc_and_ssn(dest)) {
+ LOGP(DMAIN, LOGL_ERROR, "Invalid/incomplete %s remote-addr: %s\n",
+ label, osmo_sccp_addr_name(*ss7, dest));
+ return -1;
+ }
+
+ LOGP(DRANAP, LOGL_NOTICE, "Remote %s SCCP addr: %s\n",
+ label, osmo_sccp_addr_name(*ss7, dest));
+ return 0;
+}
+
+int hnbgw_cnlink_init(struct hnb_gw *gw, const char *stp_host, uint16_t stp_port, const char *local_ip)
+{
+ struct hnbgw_cnlink *cnlink;
+ struct osmo_ss7_instance *ss7;
+ uint32_t local_pc;
+ int rc;
+
+ OSMO_ASSERT(!gw->sccp.client);
+ OSMO_ASSERT(!gw->sccp.cnlink);
+
+ ss7 = NULL;
+ if (resolve_addr_name(&gw->sccp.iucs_remote_addr, &ss7,
+ gw->config.iucs_remote_addr_name, "IuCS"))
+ return -1;
+ if (resolve_addr_name(&gw->sccp.iups_remote_addr, &ss7,
+ gw->config.iups_remote_addr_name, "IuPS"))
+ return -1;
+
+ if (!osmo_ss7_pc_is_valid(ss7->cfg.primary_pc)) {
+ LOGP(DMAIN, LOGL_ERROR, "IuCS/IuPS uplink cannot be setup: CS7 instance %d has no point-code set\n",
+ ss7->cfg.id);
+ return -1;
+ }
+ local_pc = ss7->cfg.primary_pc;
+
+ osmo_sccp_make_addr_pc_ssn(&gw->sccp.local_addr, local_pc, OSMO_SCCP_SSN_RANAP);
+
+ LOGP(DRANAP, LOGL_NOTICE, "M3UA uplink to STP: %s %u\n", stp_host, stp_port);
+ LOGP(DRANAP, LOGL_NOTICE, "Local SCCP addr: %s\n", osmo_sccp_addr_name(ss7, &gw->sccp.local_addr));
+
+ gw->sccp.client = osmo_sccp_simple_client_on_ss7_id(gw, ss7->cfg.id, "OsmoHNBGW",
+ local_pc, OSMO_SS7_ASP_PROT_M3UA,
+ 0, local_ip, stp_port, stp_host);
+ if (!gw->sccp.client) {
+ LOGP(DMAIN, LOGL_ERROR, "Failed to init SCCP Client\n");
+ return -1;
+ }
+
+ cnlink = talloc_zero(gw, struct hnbgw_cnlink);
+ cnlink->gw = gw;
+ INIT_LLIST_HEAD(&cnlink->map_list);
+ cnlink->T_RafC.cb = cnlink_trafc_cb;
+ cnlink->T_RafC.data = gw;
+ cnlink->next_conn_id = 1000;
+
+ cnlink->sccp_user = osmo_sccp_user_bind_pc(gw->sccp.client, "OsmoHNBGW", sccp_sap_up,
+ OSMO_SCCP_SSN_RANAP, gw->sccp.local_addr.pc);
+ if (!cnlink->sccp_user) {
+ LOGP(DMAIN, LOGL_ERROR, "Failed to init SCCP User\n");
+ return -1;
+ }
+
+ /* In sccp_sap_up() we expect the cnlink in the user's priv. */
+ osmo_sccp_user_set_priv(cnlink->sccp_user, cnlink);
+
+ gw->sccp.cnlink = cnlink;
+
+ return 0;
+}
diff --git a/src/hnbgw_hnbap.c b/src/hnbgw_hnbap.c
new file mode 100644
index 0000000..0473482
--- /dev/null
+++ b/src/hnbgw_hnbap.c
@@ -0,0 +1,585 @@
+/* hnb-gw specific code for HNBAP */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/gsm48.h>
+#include <osmocom/netif/stream.h>
+
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+
+#include "asn1helpers.h"
+#include <osmocom/hnbap/hnbap_common.h>
+#include <osmocom/ranap/iu_helpers.h>
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/hnbap/hnbap_ies_defs.h>
+
+#define IU_MSG_NUM_IES 32
+#define IU_MSG_NUM_EXT_IES 32
+
+static int hnbgw_hnbap_tx(struct hnb_context *ctx, struct msgb *msg)
+{
+ if (!msg)
+ return -EINVAL;
+
+ msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;
+ osmo_stream_srv_send(ctx->conn, msg);
+
+ return 0;
+}
+
+static int hnbgw_tx_hnb_register_acc(struct hnb_context *ctx)
+{
+ HNBRegisterAccept_t accept_out;
+ struct msgb *msg;
+ int rc;
+
+ /* Single required response IE: RNC-ID */
+ HNBRegisterAcceptIEs_t accept = {
+ .rnc_id = ctx->gw->config.rnc_id
+ };
+
+ /* encode the Information Elements */
+ memset(&accept_out, 0, sizeof(accept_out));
+ rc = hnbap_encode_hnbregisteraccepties(&accept_out, &accept);
+ if (rc < 0) {
+ return rc;
+ }
+
+ /* generate a successfull outcome PDU */
+ msg = hnbap_generate_successful_outcome(ProcedureCode_id_HNBRegister,
+ Criticality_reject,
+ &asn_DEF_HNBRegisterAccept,
+ &accept_out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBRegisterAccept, &accept_out);
+
+ return hnbgw_hnbap_tx(ctx, msg);
+}
+
+
+static int hnbgw_tx_ue_register_acc(struct ue_context *ue)
+{
+ UERegisterAccept_t accept_out;
+ UERegisterAcceptIEs_t accept;
+ struct msgb *msg;
+ uint8_t encoded_imsi[10];
+ uint32_t ctx_id;
+ size_t encoded_imsi_len;
+ int rc;
+
+ encoded_imsi_len = ranap_imsi_encode(encoded_imsi,
+ sizeof(encoded_imsi), ue->imsi);
+
+ memset(&accept, 0, sizeof(accept));
+ accept.uE_Identity.present = UE_Identity_PR_iMSI;
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.iMSI,
+ (const char *)encoded_imsi, encoded_imsi_len);
+ asn1_u24_to_bitstring(&accept.context_ID, &ctx_id, ue->context_id);
+
+ memset(&accept_out, 0, sizeof(accept_out));
+ rc = hnbap_encode_ueregisteraccepties(&accept_out, &accept);
+ if (rc < 0) {
+ return rc;
+ }
+
+ msg = hnbap_generate_successful_outcome(ProcedureCode_id_UERegister,
+ Criticality_reject,
+ &asn_DEF_UERegisterAccept,
+ &accept_out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING, &accept.uE_Identity.choice.iMSI);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_UERegisterAccept, &accept_out);
+
+ return hnbgw_hnbap_tx(ue->hnb, msg);
+}
+
+static int hnbgw_tx_ue_register_rej_tmsi(struct hnb_context *hnb, UE_Identity_t *ue_id)
+{
+ UERegisterReject_t reject_out;
+ UERegisterRejectIEs_t reject;
+ struct msgb *msg;
+ int rc;
+
+ memset(&reject, 0, sizeof(reject));
+ reject.uE_Identity.present = ue_id->present;
+
+ /* Copy the identity over to the reject message */
+ switch (ue_id->present) {
+ case UE_Identity_PR_tMSILAI:
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id tMSI %d %s\n",
+ ue_id->choice.tMSILAI.tMSI.size,
+ osmo_hexdump(ue_id->choice.tMSILAI.tMSI.buf,
+ ue_id->choice.tMSILAI.tMSI.size));
+
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id pLMNID %d %s\n",
+ ue_id->choice.tMSILAI.lAI.pLMNID.size,
+ osmo_hexdump(ue_id->choice.tMSILAI.lAI.pLMNID.buf,
+ ue_id->choice.tMSILAI.lAI.pLMNID.size));
+
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id lAC %d %s\n",
+ ue_id->choice.tMSILAI.lAI.lAC.size,
+ osmo_hexdump(ue_id->choice.tMSILAI.lAI.lAC.buf,
+ ue_id->choice.tMSILAI.lAI.lAC.size));
+
+ BIT_STRING_fromBuf(&reject.uE_Identity.choice.tMSILAI.tMSI,
+ ue_id->choice.tMSILAI.tMSI.buf,
+ ue_id->choice.tMSILAI.tMSI.size * 8
+ - ue_id->choice.tMSILAI.tMSI.bits_unused);
+ OCTET_STRING_fromBuf(&reject.uE_Identity.choice.tMSILAI.lAI.pLMNID,
+ ue_id->choice.tMSILAI.lAI.pLMNID.buf,
+ ue_id->choice.tMSILAI.lAI.pLMNID.size);
+ OCTET_STRING_fromBuf(&reject.uE_Identity.choice.tMSILAI.lAI.lAC,
+ ue_id->choice.tMSILAI.lAI.lAC.buf,
+ ue_id->choice.tMSILAI.lAI.lAC.size);
+ break;
+
+ case UE_Identity_PR_pTMSIRAI:
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id pTMSI %d %s\n",
+ ue_id->choice.pTMSIRAI.pTMSI.size,
+ osmo_hexdump(ue_id->choice.pTMSIRAI.pTMSI.buf,
+ ue_id->choice.pTMSIRAI.pTMSI.size));
+
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id pLMNID %d %s\n",
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.size,
+ osmo_hexdump(ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.size));
+
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id lAC %d %s\n",
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.size,
+ osmo_hexdump(ue_id->choice.pTMSIRAI.rAI.lAI.lAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.size));
+
+ LOGP(DHNBAP, LOGL_DEBUG, "REJ UE_Id rAC %d %s\n",
+ ue_id->choice.pTMSIRAI.rAI.rAC.size,
+ osmo_hexdump(ue_id->choice.pTMSIRAI.rAI.rAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.rAC.size));
+
+ BIT_STRING_fromBuf(&reject.uE_Identity.choice.pTMSIRAI.pTMSI,
+ ue_id->choice.pTMSIRAI.pTMSI.buf,
+ ue_id->choice.pTMSIRAI.pTMSI.size * 8
+ - ue_id->choice.pTMSIRAI.pTMSI.bits_unused);
+ OCTET_STRING_fromBuf(&reject.uE_Identity.choice.pTMSIRAI.rAI.lAI.pLMNID,
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.size);
+ OCTET_STRING_fromBuf(&reject.uE_Identity.choice.pTMSIRAI.rAI.lAI.lAC,
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.size);
+ OCTET_STRING_fromBuf(&reject.uE_Identity.choice.pTMSIRAI.rAI.rAC,
+ ue_id->choice.pTMSIRAI.rAI.rAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.rAC.size);
+ break;
+
+ default:
+ LOGP(DHNBAP, LOGL_ERROR, "Cannot compose UE Register Reject:"
+ " unsupported UE ID (present=%d)\n", ue_id->present);
+ return -1;
+ }
+
+ LOGP(DHNBAP, LOGL_ERROR, "Rejecting UE Register Request:"
+ " TMSI identity registration is switched off\n");
+
+ reject.cause.present = Cause_PR_radioNetwork;
+ reject.cause.choice.radioNetwork = CauseRadioNetwork_invalid_UE_identity;
+
+ memset(&reject_out, 0, sizeof(reject_out));
+ rc = hnbap_encode_ueregisterrejecties(&reject_out, &reject);
+ if (rc < 0)
+ return rc;
+
+ msg = hnbap_generate_unsuccessful_outcome(ProcedureCode_id_UERegister,
+ Criticality_reject,
+ &asn_DEF_UERegisterReject,
+ &reject_out);
+
+ /* Free copied identity IEs */
+ switch (ue_id->present) {
+ case UE_Identity_PR_tMSILAI:
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_BIT_STRING,
+ &reject.uE_Identity.choice.tMSILAI.tMSI);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &reject.uE_Identity.choice.tMSILAI.lAI.pLMNID);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &reject.uE_Identity.choice.tMSILAI.lAI.lAC);
+ break;
+
+ case UE_Identity_PR_pTMSIRAI:
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_BIT_STRING,
+ &reject.uE_Identity.choice.pTMSIRAI.pTMSI);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &reject.uE_Identity.choice.pTMSIRAI.rAI.lAI.pLMNID);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &reject.uE_Identity.choice.pTMSIRAI.rAI.lAI.lAC);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &reject.uE_Identity.choice.pTMSIRAI.rAI.rAC);
+ break;
+
+ default:
+ /* should never happen after above switch() */
+ break;
+ }
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_UERegisterReject, &reject_out);
+
+ return hnbgw_hnbap_tx(hnb, msg);
+}
+
+static int hnbgw_tx_ue_register_acc_tmsi(struct hnb_context *hnb, UE_Identity_t *ue_id)
+{
+ UERegisterAccept_t accept_out;
+ UERegisterAcceptIEs_t accept;
+ struct msgb *msg;
+ uint32_t ctx_id;
+ uint32_t tmsi = 0;
+ struct ue_context *ue;
+ int rc;
+
+ memset(&accept, 0, sizeof(accept));
+ accept.uE_Identity.present = ue_id->present;
+
+ switch (ue_id->present) {
+ case UE_Identity_PR_tMSILAI:
+ BIT_STRING_fromBuf(&accept.uE_Identity.choice.tMSILAI.tMSI,
+ ue_id->choice.tMSILAI.tMSI.buf,
+ ue_id->choice.tMSILAI.tMSI.size * 8
+ - ue_id->choice.tMSILAI.tMSI.bits_unused);
+ tmsi = *(uint32_t*)accept.uE_Identity.choice.tMSILAI.tMSI.buf;
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.tMSILAI.lAI.pLMNID,
+ ue_id->choice.tMSILAI.lAI.pLMNID.buf,
+ ue_id->choice.tMSILAI.lAI.pLMNID.size);
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.tMSILAI.lAI.lAC,
+ ue_id->choice.tMSILAI.lAI.lAC.buf,
+ ue_id->choice.tMSILAI.lAI.lAC.size);
+ break;
+
+ case UE_Identity_PR_pTMSIRAI:
+ BIT_STRING_fromBuf(&accept.uE_Identity.choice.pTMSIRAI.pTMSI,
+ ue_id->choice.pTMSIRAI.pTMSI.buf,
+ ue_id->choice.pTMSIRAI.pTMSI.size * 8
+ - ue_id->choice.pTMSIRAI.pTMSI.bits_unused);
+ tmsi = *(uint32_t*)accept.uE_Identity.choice.pTMSIRAI.pTMSI.buf;
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.pTMSIRAI.rAI.lAI.pLMNID,
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.pLMNID.size);
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.pTMSIRAI.rAI.lAI.lAC,
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.lAI.lAC.size);
+ OCTET_STRING_fromBuf(&accept.uE_Identity.choice.pTMSIRAI.rAI.rAC,
+ ue_id->choice.pTMSIRAI.rAI.rAC.buf,
+ ue_id->choice.pTMSIRAI.rAI.rAC.size);
+ break;
+
+ default:
+ LOGP(DHNBAP, LOGL_ERROR, "Unsupportedccept UE ID (present=%d)\n",
+ ue_id->present);
+ return -1;
+ }
+
+ tmsi = ntohl(tmsi);
+ LOGP(DHNBAP, LOGL_DEBUG, "HNBAP register with TMSI %x\n",
+ tmsi);
+
+ ue = ue_context_by_tmsi(hnb->gw, tmsi);
+ if (!ue)
+ ue = ue_context_alloc(hnb, NULL, tmsi);
+
+ asn1_u24_to_bitstring(&accept.context_ID, &ctx_id, ue->context_id);
+
+ memset(&accept_out, 0, sizeof(accept_out));
+ rc = hnbap_encode_ueregisteraccepties(&accept_out, &accept);
+ if (rc < 0)
+ return rc;
+
+ msg = hnbap_generate_successful_outcome(ProcedureCode_id_UERegister,
+ Criticality_reject,
+ &asn_DEF_UERegisterAccept,
+ &accept_out);
+
+ switch (ue_id->present) {
+ case UE_Identity_PR_tMSILAI:
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_BIT_STRING,
+ &accept.uE_Identity.choice.tMSILAI.tMSI);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &accept.uE_Identity.choice.tMSILAI.lAI.pLMNID);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &accept.uE_Identity.choice.tMSILAI.lAI.lAC);
+ break;
+
+ case UE_Identity_PR_pTMSIRAI:
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_BIT_STRING,
+ &accept.uE_Identity.choice.pTMSIRAI.pTMSI);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &accept.uE_Identity.choice.pTMSIRAI.rAI.lAI.pLMNID);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &accept.uE_Identity.choice.pTMSIRAI.rAI.lAI.lAC);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OCTET_STRING,
+ &accept.uE_Identity.choice.pTMSIRAI.rAI.rAC);
+ break;
+
+ default:
+ /* should never happen after above switch() */
+ break;
+ }
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_UERegisterAccept, &accept_out);
+
+ return hnbgw_hnbap_tx(hnb, msg);
+}
+
+static int hnbgw_rx_hnb_deregister(struct hnb_context *ctx, ANY_t *in)
+{
+ HNBDe_RegisterIEs_t ies;
+ int rc;
+
+ rc = hnbap_decode_hnbde_registeries(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ DEBUGP(DHNBAP, "HNB-DE-REGISTER cause=%ld\n",
+ ies.cause);
+
+ hnbap_free_hnbde_registeries(&ies);
+ hnb_context_release(ctx);
+
+ return 0;
+}
+
+static int hnbgw_rx_hnb_register_req(struct hnb_context *ctx, ANY_t *in)
+{
+ HNBRegisterRequestIEs_t ies;
+ int rc;
+
+ rc = hnbap_decode_hnbregisterrequesties(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ /* copy all identity parameters from the message to ctx */
+ asn1_strncpy(ctx->identity_info, &ies.hnB_Identity.hNB_Identity_Info,
+ sizeof(ctx->identity_info));
+ ctx->id.lac = asn1str_to_u16(&ies.lac);
+ ctx->id.sac = asn1str_to_u16(&ies.sac);
+ ctx->id.rac = asn1str_to_u8(&ies.rac);
+ ctx->id.cid = asn1bitstr_to_u28(&ies.cellIdentity);
+ //ctx->id.mcc FIXME
+ //ctx->id.mnc FIXME
+
+ DEBUGP(DHNBAP, "HNB-REGISTER-REQ from %s\n", ctx->identity_info);
+
+ /* Send HNBRegisterAccept */
+ rc = hnbgw_tx_hnb_register_acc(ctx);
+ hnbap_free_hnbregisterrequesties(&ies);
+ return rc;
+}
+
+static int hnbgw_rx_ue_register_req(struct hnb_context *ctx, ANY_t *in)
+{
+ UERegisterRequestIEs_t ies;
+ struct ue_context *ue;
+ char imsi[16];
+ int rc;
+
+ rc = hnbap_decode_ueregisterrequesties(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ switch (ies.uE_Identity.present) {
+ case UE_Identity_PR_iMSI:
+ ranap_bcd_decode(imsi, sizeof(imsi), ies.uE_Identity.choice.iMSI.buf,
+ ies.uE_Identity.choice.iMSI.size);
+ break;
+ case UE_Identity_PR_iMSIDS41:
+ ranap_bcd_decode(imsi, sizeof(imsi), ies.uE_Identity.choice.iMSIDS41.buf,
+ ies.uE_Identity.choice.iMSIDS41.size);
+ break;
+ case UE_Identity_PR_iMSIESN:
+ ranap_bcd_decode(imsi, sizeof(imsi), ies.uE_Identity.choice.iMSIESN.iMSIDS41.buf,
+ ies.uE_Identity.choice.iMSIESN.iMSIDS41.size);
+ break;
+ case UE_Identity_PR_tMSILAI:
+ case UE_Identity_PR_pTMSIRAI:
+ if (ctx->gw->config.hnbap_allow_tmsi)
+ rc = hnbgw_tx_ue_register_acc_tmsi(ctx, &ies.uE_Identity);
+ else
+ rc = hnbgw_tx_ue_register_rej_tmsi(ctx, &ies.uE_Identity);
+ /* all has been handled by TMSI, skip the IMSI code below */
+ hnbap_free_ueregisterrequesties(&ies);
+ return rc;
+ default:
+ LOGP(DHNBAP, LOGL_NOTICE,
+ "UE-REGISTER-REQ with unsupported UE Id type %d\n",
+ ies.uE_Identity.present);
+ hnbap_free_ueregisterrequesties(&ies);
+ return rc;
+ }
+
+ DEBUGP(DHNBAP, "UE-REGISTER-REQ ID_type=%d imsi=%s cause=%ld\n",
+ ies.uE_Identity.present, imsi, ies.registration_Cause);
+
+ ue = ue_context_by_imsi(ctx->gw, imsi);
+ if (!ue)
+ ue = ue_context_alloc(ctx, imsi, 0);
+
+ hnbap_free_ueregisterrequesties(&ies);
+ /* Send UERegisterAccept */
+ return hnbgw_tx_ue_register_acc(ue);
+}
+
+static int hnbgw_rx_ue_deregister(struct hnb_context *ctx, ANY_t *in)
+{
+ UEDe_RegisterIEs_t ies;
+ struct ue_context *ue;
+ int rc;
+ uint32_t ctxid;
+
+ rc = hnbap_decode_uede_registeries(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ ctxid = asn1bitstr_to_u24(&ies.context_ID);
+
+ DEBUGP(DHNBAP, "UE-DE-REGISTER context=%ld cause=%s\n",
+ ctxid, hnbap_cause_str(&ies.cause));
+
+ ue = ue_context_by_id(ctx->gw, ctxid);
+ if (ue)
+ ue_context_free(ue);
+
+ hnbap_free_uede_registeries(&ies);
+ return 0;
+}
+
+static int hnbgw_rx_err_ind(struct hnb_context *hnb, ANY_t *in)
+{
+ ErrorIndicationIEs_t ies;
+ int rc;
+
+ rc = hnbap_decode_errorindicationies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ LOGP(DHNBAP, LOGL_NOTICE, "HNBAP ERROR.ind, cause: %s\n",
+ hnbap_cause_str(&ies.cause));
+
+ hnbap_free_errorindicationies(&ies);
+ return 0;
+}
+
+static int hnbgw_rx_initiating_msg(struct hnb_context *hnb, InitiatingMessage_t *imsg)
+{
+ int rc;
+
+ switch (imsg->procedureCode) {
+ case ProcedureCode_id_HNBRegister: /* 8.2 */
+ rc = hnbgw_rx_hnb_register_req(hnb, &imsg->value);
+ break;
+ case ProcedureCode_id_HNBDe_Register: /* 8.3 */
+ rc = hnbgw_rx_hnb_deregister(hnb, &imsg->value);
+ break;
+ case ProcedureCode_id_UERegister: /* 8.4 */
+ rc = hnbgw_rx_ue_register_req(hnb, &imsg->value);
+ break;
+ case ProcedureCode_id_UEDe_Register: /* 8.5 */
+ rc = hnbgw_rx_ue_deregister(hnb, &imsg->value);
+ break;
+ case ProcedureCode_id_ErrorIndication: /* 8.6 */
+ rc = hnbgw_rx_err_ind(hnb, &imsg->value);
+ break;
+ case ProcedureCode_id_TNLUpdate: /* 8.9 */
+ case ProcedureCode_id_HNBConfigTransfer: /* 8.10 */
+ case ProcedureCode_id_RelocationComplete: /* 8.11 */
+ case ProcedureCode_id_U_RNTIQuery: /* 8.12 */
+ case ProcedureCode_id_privateMessage:
+ LOGP(DHNBAP, LOGL_NOTICE, "Unimplemented HNBAP Procedure %ld\n",
+ imsg->procedureCode);
+ break;
+ default:
+ LOGP(DHNBAP, LOGL_NOTICE, "Unknown HNBAP Procedure %ld\n",
+ imsg->procedureCode);
+ break;
+ }
+}
+
+static int hnbgw_rx_successful_outcome_msg(struct hnb_context *hnb, SuccessfulOutcome_t *msg)
+{
+
+}
+
+static int hnbgw_rx_unsuccessful_outcome_msg(struct hnb_context *hnb, UnsuccessfulOutcome_t *msg)
+{
+
+}
+
+
+static int _hnbgw_hnbap_rx(struct hnb_context *hnb, HNBAP_PDU_t *pdu)
+{
+ int rc = 0;
+
+ /* it's a bit odd that we can't dispatch on procedure code, but
+ * that's not possible */
+ switch (pdu->present) {
+ case HNBAP_PDU_PR_initiatingMessage:
+ rc = hnbgw_rx_initiating_msg(hnb, &pdu->choice.initiatingMessage);
+ break;
+ case HNBAP_PDU_PR_successfulOutcome:
+ rc = hnbgw_rx_successful_outcome_msg(hnb, &pdu->choice.successfulOutcome);
+ break;
+ case HNBAP_PDU_PR_unsuccessfulOutcome:
+ rc = hnbgw_rx_unsuccessful_outcome_msg(hnb, &pdu->choice.unsuccessfulOutcome);
+ break;
+ default:
+ LOGP(DHNBAP, LOGL_NOTICE, "Unknown HNBAP Presence %u\n",
+ pdu->present);
+ rc = -1;
+ }
+
+ return rc;
+}
+
+int hnbgw_hnbap_rx(struct hnb_context *hnb, struct msgb *msg)
+{
+ HNBAP_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ /* decode and handle to _hnbgw_hnbap_rx() */
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL, &asn_DEF_HNBAP_PDU, (void **) &pdu,
+ msg->data, msgb_length(msg), 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DHNBAP, LOGL_ERROR, "Error in ASN.1 decode\n");
+ return -1;
+ }
+
+ rc = _hnbgw_hnbap_rx(hnb, pdu);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_HNBAP_PDU, pdu);
+
+ return rc;
+}
+
+
+int hnbgw_hnbap_init(void)
+{
+
+}
diff --git a/src/hnbgw_ranap.c b/src/hnbgw_ranap.c
new file mode 100644
index 0000000..7fd6d0a
--- /dev/null
+++ b/src/hnbgw_ranap.c
@@ -0,0 +1,232 @@
+/* hnb-gw specific code for RANAP */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/utils.h>
+
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+
+#include "asn1helpers.h"
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/hnbgw_rua.h>
+#include <osmocom/ranap/ranap_common.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+
+static int ranap_tx_reset_ack(struct hnb_context *hnb,
+ RANAP_CN_DomainIndicator_t domain)
+{
+ struct msgb *msg;
+ int rc;
+
+ msg = ranap_new_msg_reset_ack(domain, NULL);
+ if (!msg)
+ return -1;
+
+ rc = rua_tx_udt(hnb, msg->data, msgb_length(msg));
+
+ msgb_free(msg);
+
+ return rc;
+}
+
+static int ranap_rx_init_reset(struct hnb_context *hnb, ANY_t *in)
+{
+ RANAP_ResetIEs_t ies;
+ int rc, is_ps = 0;
+
+ rc = ranap_decode_reseties(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ if (ies.cN_DomainIndicator == RANAP_CN_DomainIndicator_ps_domain)
+ is_ps=1;
+
+ LOGP(DRANAP, LOGL_INFO, "Rx RESET.req(%s,%s)\n", is_ps ? "ps" : "cs",
+ ranap_cause_str(&ies.cause));
+
+ /* FIXME: Actually we have to wait for some guard time? */
+ /* FIXME: Reset all resources related to this HNB/RNC */
+ ranap_tx_reset_ack(hnb, ies.cN_DomainIndicator);
+
+ return 0;
+}
+
+static int ranap_rx_error_ind(struct hnb_context *hnb, ANY_t *in)
+{
+ RANAP_ErrorIndicationIEs_t ies;
+ int rc, is_ps = 0;
+
+ rc = ranap_decode_errorindicationies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ if (ies.presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT) {
+ LOGP(DRANAP, LOGL_ERROR, "Rx ERROR.ind(%s)\n",
+ ranap_cause_str(&ies.cause));
+ } else
+ LOGP(DRANAP, LOGL_ERROR, "Rx ERROR.ind\n");
+
+ return 0;
+}
+
+static int ranap_rx_dt(struct hnb_context *hnb, ANY_t *in)
+{
+ RANAP_DirectTransferIEs_t ies;
+ int sapi = 0;
+ int rc;
+
+ rc = ranap_decode_directtransferies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ if (ies.presenceMask & DIRECTTRANSFERIES_RANAP_SAPI_PRESENT)
+ sapi = ies.sapi;
+
+ if (ies.presenceMask & DIRECTTRANSFERIES_RANAP_LAI_PRESENT) {
+ /* FIXME: Update LAI associated with UE */
+ }
+
+ if (ies.presenceMask & DIRECTTRANSFERIES_RANAP_RAC_PRESENT) {
+ /* FIXME: Update RAC associated with UE */
+ }
+
+ DEBUGP(DRANAP, "DirectTransfer: %s\n",
+ osmo_hexdump(ies.nas_pdu.buf, ies.nas_pdu.size));
+ /* FIXME: hand NAS PDU into MSC */
+}
+
+static int ranap_rx_initiating_msg(struct hnb_context *hnb, RANAP_InitiatingMessage_t *imsg)
+{
+ int rc;
+
+ /* according tot the spec, we can primarily receive Overload,
+ * Reset, Reset ACK, Error Indication, reset Resource, Reset
+ * Resurce Acknowledge as connecitonless RANAP. There are some
+ * more messages regarding Information Transfer, Direct
+ * Information Transfer and Uplink Information Trnansfer that we
+ * can ignore. In either case, it is RANAP that we need to
+ * decode... */
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ /* Reset request */
+ rc = ranap_rx_init_reset(hnb, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_OverloadControl: /* Overload ind */
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication: /* Error ind */
+ rc = ranap_rx_error_ind(hnb, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* request */
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "Procedure %u from HNB, ignoring\n", imsg->procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %u from HNB, ignoring\n", imsg->procedureCode);
+ break;
+ }
+}
+
+static int ranap_rx_successful_msg(struct hnb_context *hnb, RANAP_SuccessfulOutcome_t *imsg)
+{
+ int rc;
+
+ /* according tot the spec, we can primarily receive Overload,
+ * Reset, Reset ACK, Error Indication, reset Resource, Reset
+ * Resurce Acknowledge as connecitonless RANAP. There are some
+ * more messages regarding Information Transfer, Direct
+ * Information Transfer and Uplink Information Trnansfer that we
+ * can ignore. In either case, it is RANAP that we need to
+ * decode... */
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset: /* Reset acknowledge */
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* response */
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "Procedure %u from HNB, ignoring\n", imsg->procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %u from HNB, ignoring\n", imsg->procedureCode);
+ break;
+ }
+}
+
+
+
+static int _hnbgw_ranap_rx(struct hnb_context *hnb, RANAP_RANAP_PDU_t *pdu)
+{
+ int rc;
+
+ switch (pdu->present) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ rc = ranap_rx_initiating_msg(hnb, &pdu->choice.initiatingMessage);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ rc = ranap_rx_successful_msg(hnb, &pdu->choice.successfulOutcome);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "unsuccessful outcome procedure %u from HNB, ignoring\n",
+ pdu->choice.unsuccessfulOutcome.procedureCode);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "presence %u from HNB, ignoring\n", pdu->present);
+ break;
+ }
+}
+
+
+int hnbgw_ranap_rx(struct msgb *msg, uint8_t *data, size_t len)
+{
+ RANAP_RANAP_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL,&asn_DEF_RANAP_RANAP_PDU, (void **) &pdu,
+ data, len, 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
+ return -1;
+ }
+
+ rc = _hnbgw_ranap_rx(msg->dst, pdu);
+
+ return rc;
+}
+
+int hnbgw_ranap_init(void)
+{
+
+}
diff --git a/src/hnbgw_rua.c b/src/hnbgw_rua.c
new file mode 100644
index 0000000..95979f5
--- /dev/null
+++ b/src/hnbgw_rua.c
@@ -0,0 +1,558 @@
+/* hnb-gw specific code for RUA (Ranap User Adaption) */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/netif/stream.h>
+
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+
+#include "asn1helpers.h"
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/hnbgw_ranap.h>
+#include <osmocom/rua/rua_common.h>
+#include <osmocom/rua/rua_ies_defs.h>
+#include <osmocom/iuh/context_map.h>
+#include <osmocom/hnbap/CN-DomainIndicator.h>
+
+static const char *cn_domain_indicator_to_str(CN_DomainIndicator_t cN_DomainIndicator)
+{
+ switch (cN_DomainIndicator) {
+ case RUA_CN_DomainIndicator_cs_domain:
+ return "IuCS";
+ case RUA_CN_DomainIndicator_ps_domain:
+ return "IuPS";
+ default:
+ return "(unknown-domain)";
+ }
+}
+
+static int hnbgw_rua_tx(struct hnb_context *ctx, struct msgb *msg)
+{
+ if (!msg)
+ return -EINVAL;
+
+ msgb_sctp_ppid(msg) = IUH_PPI_RUA;
+ osmo_stream_srv_send(ctx->conn, msg);
+
+ return 0;
+}
+
+int rua_tx_udt(struct hnb_context *hnb, const uint8_t *data, unsigned int len)
+{
+ RUA_ConnectionlessTransfer_t out;
+ RUA_ConnectionlessTransferIEs_t ies;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ ies.ranaP_Message.buf = (uint8_t *) data;
+ ies.ranaP_Message.size = len;
+
+ /* FIXME: msgb_free(msg)? ownership not yet clear */
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_connectionlesstransferies(&out, &ies);
+ if (rc < 0)
+ return rc;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_ConnectionlessTransfer,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_ConnectionlessTransfer,
+ &out);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_ConnectionlessTransfer, &out);
+
+ DEBUGP(DRUA, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
+
+ return hnbgw_rua_tx(hnb, msg);
+}
+
+int rua_tx_dt(struct hnb_context *hnb, int is_ps, uint32_t context_id,
+ const uint8_t *data, unsigned int len)
+{
+ RUA_DirectTransfer_t out;
+ RUA_DirectTransferIEs_t ies;
+ uint32_t ctxidbuf;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
+ asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
+ ies.ranaP_Message.buf = (uint8_t *) data;
+ ies.ranaP_Message.size = len;
+
+ /* FIXME: msgb_free(msg)? ownership not yet clear */
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_directtransferies(&out, &ies);
+ if (rc < 0)
+ return rc;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_DirectTransfer,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_DirectTransfer,
+ &out);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_DirectTransfer, &out);
+
+ DEBUGP(DRUA, "transmitting RUA (cn=%s) payload of %u bytes\n",
+ is_ps ? "ps" : "cs", msgb_length(msg));
+
+ return hnbgw_rua_tx(hnb, msg);
+}
+
+int rua_tx_disc(struct hnb_context *hnb, int is_ps, uint32_t context_id,
+ const RUA_Cause_t *cause, const uint8_t *data, unsigned int len)
+{
+ RUA_Disconnect_t out;
+ RUA_DisconnectIEs_t ies;
+ struct msgb *msg;
+ uint32_t ctxidbuf;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
+ asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
+ memcpy(&ies.cause, cause, sizeof(ies.cause));
+ if (data && len) {
+ ies.presenceMask |= DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT;
+ ies.ranaP_Message.buf = (uint8_t *) data;
+ ies.ranaP_Message.size = len;
+ }
+
+ /* FIXME: msgb_free(msg)? ownership not yet clear */
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_disconnecties(&out, &ies);
+ if (rc < 0)
+ return rc;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_Disconnect,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_Disconnect,
+ &out);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Disconnect, &out);
+
+ DEBUGP(DRUA, "transmitting RUA (cn=%s) payload of %u bytes\n",
+ is_ps ? "ps" : "cs", msgb_length(msg));
+
+
+ return hnbgw_rua_tx(hnb, msg);
+}
+
+
+
+/* forward a RUA message to the SCCP User API to SCCP */
+static int rua_to_scu(struct hnb_context *hnb,
+ CN_DomainIndicator_t cN_DomainIndicator,
+ enum osmo_scu_prim_type type,
+ uint32_t context_id, uint32_t cause,
+ const uint8_t *data, unsigned int len)
+{
+ struct msgb *msg;
+ struct osmo_scu_prim *prim;
+ struct hnbgw_context_map *map;
+ struct hnbgw_cnlink *cn = hnb->gw->sccp.cnlink;
+ struct osmo_sccp_addr *remote_addr;
+ bool is_ps;
+ int rc;
+
+ switch (cN_DomainIndicator) {
+ case RUA_CN_DomainIndicator_cs_domain:
+ remote_addr = &hnb->gw->sccp.iucs_remote_addr;
+ is_ps = false;
+ break;
+ case RUA_CN_DomainIndicator_ps_domain:
+ remote_addr = &hnb->gw->sccp.iups_remote_addr;
+ is_ps = true;
+ break;
+ default:
+ LOGP(DRUA, LOGL_ERROR, "Unsupported Domain %u\n",
+ cN_DomainIndicator);
+ return -1;
+ }
+
+ if (!cn) {
+ DEBUGP(DRUA, "CN=NULL, discarding message\n");
+ return 0;
+ }
+
+ msg = msgb_alloc(1500, "rua_to_sccp");
+
+ prim = (struct osmo_scu_prim *) msgb_put(msg, sizeof(*prim));
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER, type, PRIM_OP_REQUEST, msg);
+
+ map = context_map_alloc_by_hnb(hnb, context_id, is_ps, cn);
+ OSMO_ASSERT(map);
+
+ DEBUGP(DRUA, "rua_to_scu() %s to %s, rua_ctx_id %u scu_conn_id %u\n",
+ cn_domain_indicator_to_str(cN_DomainIndicator),
+ osmo_sccp_addr_dump(remote_addr),
+ map->rua_ctx_id, map->scu_conn_id);
+
+ /* add primitive header */
+ switch (type) {
+ case OSMO_SCU_PRIM_N_CONNECT:
+ prim->u.connect.called_addr = *remote_addr;
+ prim->u.connect.calling_addr = cn->gw->sccp.local_addr;
+ prim->u.connect.sccp_class = 2;
+ prim->u.connect.conn_id = map->scu_conn_id;
+ /* Two separate logs because of osmo_sccp_addr_dump(). */
+ DEBUGP(DRUA, "RUA to SCCP N_CONNECT: called_addr:%s\n",
+ osmo_sccp_addr_dump(&prim->u.connect.called_addr));
+ DEBUGP(DRUA, "RUA to SCCP N_CONNECT: calling_addr:%s\n",
+ osmo_sccp_addr_dump(&prim->u.connect.calling_addr));
+ break;
+ case OSMO_SCU_PRIM_N_DATA:
+ prim->u.data.conn_id = map->scu_conn_id;
+ break;
+ case OSMO_SCU_PRIM_N_DISCONNECT:
+ prim->u.disconnect.conn_id = map->scu_conn_id;
+ prim->u.disconnect.cause = cause;
+ break;
+ case OSMO_SCU_PRIM_N_UNITDATA:
+ prim->u.unitdata.called_addr = *remote_addr;
+ prim->u.unitdata.calling_addr = cn->gw->sccp.local_addr;
+ /* Two separate logs because of osmo_sccp_addr_dump(). */
+ DEBUGP(DRUA, "RUA to SCCP N_UNITDATA: called_addr:%s\n",
+ osmo_sccp_addr_dump(&prim->u.unitdata.called_addr));
+ DEBUGP(DRUA, "RUA to SCCP N_UNITDATA: calling_addr:%s\n",
+ osmo_sccp_addr_dump(&prim->u.unitdata.calling_addr));
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ /* add optional data section, if needed */
+ if (data && len) {
+ msg->l2h = msgb_put(msg, len);
+ memcpy(msg->l2h, data, len);
+ }
+
+ rc = osmo_sccp_user_sap_down(cn->sccp_user, &prim->oph);
+
+ return rc;
+}
+
+static uint32_t rua_to_scu_cause(RUA_Cause_t *in)
+{
+ /* FIXME: Implement this! */
+#if 0
+ switch (in->present) {
+ case RUA_Cause_PR_NOTHING:
+ break;
+ case RUA_Cause_PR_radioNetwork:
+ switch (in->choice.radioNetwork) {
+ case RUA_CauseRadioNetwork_normal:
+ case RUA_CauseRadioNetwork_connect_failed:
+ case RUA_CauseRadioNetwork_network_release:
+ case RUA_CauseRadioNetwork_unspecified:
+ }
+ break;
+ case RUA_Cause_PR_transport:
+ switch (in->choice.transport) {
+ case RUA_CauseTransport_transport_resource_unavailable:
+ break;
+ case RUA_CauseTransport_unspecified:
+ break;
+ }
+ break;
+ case RUA_Cause_PR_protocol:
+ switch (in->choice.protocol) {
+ case RUA_CauseProtocol_transfer_syntax_error:
+ break;
+ case RUA_CauseProtocol_abstract_syntax_error_reject:
+ break;
+ case RUA_CauseProtocol_abstract_syntax_error_ignore_and_notify:
+ break;
+ case RUA_CauseProtocol_message_not_compatible_with_receiver_state:
+ break;
+ case RUA_CauseProtocol_semantic_error:
+ break;
+ case RUA_CauseProtocol_unspecified:
+ break;
+ case RUA_CauseProtocol_abstract_syntax_error_falsely_constructed_message:
+ break;
+ }
+ break;
+ case RUA_Cause_PR_misc:
+ switch (in->choice.misc) {
+ case RUA_CauseMisc_processing_overload:
+ break;
+ case RUA_CauseMisc_hardware_failure:
+ break;
+ case RUA_CauseMisc_o_and_m_intervention:
+ break;
+ case RUA_CauseMisc_unspecified:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+#else
+ return 0;
+#endif
+
+}
+
+static int rua_rx_init_connect(struct msgb *msg, ANY_t *in)
+{
+ RUA_ConnectIEs_t ies;
+ struct hnb_context *hnb = msg->dst;
+ uint32_t context_id;
+ int rc;
+
+ rc = rua_decode_connecties(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ context_id = asn1bitstr_to_u24(&ies.context_ID);
+
+ DEBUGP(DRUA, "RUA %s Connect.req(ctx=0x%x, %s)\n",
+ cn_domain_indicator_to_str(ies.cN_DomainIndicator),
+ context_id,
+ ies.establishment_Cause == RUA_Establishment_Cause_emergency_call
+ ? "emergency" : "normal");
+
+ rc = rua_to_scu(hnb, ies.cN_DomainIndicator, OSMO_SCU_PRIM_N_CONNECT,
+ context_id, 0, ies.ranaP_Message.buf,
+ ies.ranaP_Message.size);
+ /* FIXME: what to do with the asn1c-allocated memory */
+ rua_free_connecties(&ies);
+
+ return rc;
+}
+
+static int rua_rx_init_disconnect(struct msgb *msg, ANY_t *in)
+{
+ RUA_DisconnectIEs_t ies;
+ struct hnb_context *hnb = msg->dst;
+ uint32_t context_id;
+ uint32_t scu_cause;
+ uint8_t *ranap_data = NULL;
+ unsigned int ranap_len = 0;
+ int rc;
+
+ rc = rua_decode_disconnecties(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ context_id = asn1bitstr_to_u24(&ies.context_ID);
+ scu_cause = rua_to_scu_cause(&ies.cause);
+
+ DEBUGP(DRUA, "RUA Disconnect.req(ctx=0x%x,cause=%s)\n", context_id,
+ rua_cause_str(&ies.cause));
+
+ if (ies.presenceMask & DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT) {
+ ranap_data = ies.ranaP_Message.buf;
+ ranap_len = ies.ranaP_Message.size;
+ }
+
+ rc = rua_to_scu(hnb, ies.cN_DomainIndicator,
+ OSMO_SCU_PRIM_N_DISCONNECT,
+ context_id, scu_cause, ranap_data, ranap_len);
+
+ /* FIXME: what to do with the asn1c-allocated memory */
+ rua_free_disconnecties(&ies);
+
+ return rc;
+}
+
+static int rua_rx_init_dt(struct msgb *msg, ANY_t *in)
+{
+ RUA_DirectTransferIEs_t ies;
+ struct hnb_context *hnb = msg->dst;
+ uint32_t context_id;
+ int rc;
+
+ rc = rua_decode_directtransferies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ context_id = asn1bitstr_to_u24(&ies.context_ID);
+
+ DEBUGP(DRUA, "RUA Data.req(ctx=0x%x)\n", context_id);
+
+ rc = rua_to_scu(hnb,
+ ies.cN_DomainIndicator,
+ OSMO_SCU_PRIM_N_DATA,
+ context_id, 0, ies.ranaP_Message.buf,
+ ies.ranaP_Message.size);
+
+ /* FIXME: what to do with the asn1c-allocated memory */
+ rua_free_directtransferies(&ies);
+
+ return rc;
+}
+
+static int rua_rx_init_udt(struct msgb *msg, ANY_t *in)
+{
+ RUA_ConnectionlessTransferIEs_t ies;
+ RUA_CN_DomainIndicator_t domain;
+ int rc;
+
+ rc = rua_decode_connectionlesstransferies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ DEBUGP(DRUA, "RUA UData.req()\n");
+
+ /* according tot the spec, we can primarily receive Overload,
+ * Reset, Reset ACK, Error Indication, reset Resource, Reset
+ * Resurce Acknowledge as connecitonless RANAP. There are some
+ * more messages regarding Information Transfer, Direct
+ * Information Transfer and Uplink Information Trnansfer that we
+ * can ignore. In either case, it is RANAP that we need to
+ * decode... */
+ rc = hnbgw_ranap_rx(msg, ies.ranaP_Message.buf, ies.ranaP_Message.size);
+ rua_free_connectionlesstransferies(&ies);
+
+ return rc;
+}
+
+
+static int rua_rx_init_err_ind(struct msgb *msg, ANY_t *in)
+{
+ RUA_ErrorIndicationIEs_t ies;
+ int rc;
+
+ rc = rua_decode_errorindicationies(&ies, in);
+ if (rc < 0)
+ return rc;
+
+ LOGP(DRUA, LOGL_ERROR, "RUA UData.ErrorInd(%s)\n",
+ rua_cause_str(&ies.cause));
+
+ rua_free_errorindicationies(&ies);
+ return rc;
+}
+
+static int rua_rx_initiating_msg(struct msgb *msg, RUA_InitiatingMessage_t *imsg)
+{
+ int rc;
+
+ switch (imsg->procedureCode) {
+ case RUA_ProcedureCode_id_Connect:
+ rc = rua_rx_init_connect(msg, &imsg->value);
+ break;
+ case RUA_ProcedureCode_id_DirectTransfer:
+ rc = rua_rx_init_dt(msg, &imsg->value);
+ break;
+ case RUA_ProcedureCode_id_Disconnect:
+ rc = rua_rx_init_disconnect(msg, &imsg->value);
+ break;
+ case RUA_ProcedureCode_id_ConnectionlessTransfer:
+ rc = rua_rx_init_udt(msg, &imsg->value);
+ break;
+ case RUA_ProcedureCode_id_ErrorIndication:
+ rc = rua_rx_init_err_ind(msg, &imsg->value);
+ break;
+ case RUA_ProcedureCode_id_privateMessage:
+ LOGP(DRUA, LOGL_NOTICE,
+ "Unhandled: RUA Initiating Msg: Private Msg\n");
+ rc = 0;
+ break;
+ default:
+ LOGP(DRUA, LOGL_NOTICE, "Unknown RUA Procedure %u\n",
+ imsg->procedureCode);
+ rc = -1;
+ }
+
+ return rc;
+}
+
+static int rua_rx_successful_outcome_msg(struct msgb *msg, RUA_SuccessfulOutcome_t *in)
+{
+ /* FIXME */
+ LOGP(DRUA, LOGL_NOTICE, "Unexpected RUA Sucessful Outcome\n");
+ return -1;
+}
+
+static int rua_rx_unsuccessful_outcome_msg(struct msgb *msg, RUA_UnsuccessfulOutcome_t *in)
+{
+ /* FIXME */
+ LOGP(DRUA, LOGL_NOTICE, "Unexpected RUA Unsucessful Outcome\n");
+ return -1;
+}
+
+
+static int _hnbgw_rua_rx(struct msgb *msg, RUA_RUA_PDU_t *pdu)
+{
+ int rc;
+
+ /* it's a bit odd that we can't dispatch on procedure code, but
+ * that's not possible */
+ switch (pdu->present) {
+ case RUA_RUA_PDU_PR_initiatingMessage:
+ rc = rua_rx_initiating_msg(msg, &pdu->choice.initiatingMessage);
+ break;
+ case RUA_RUA_PDU_PR_successfulOutcome:
+ rc = rua_rx_successful_outcome_msg(msg, &pdu->choice.successfulOutcome);
+ break;
+ case RUA_RUA_PDU_PR_unsuccessfulOutcome:
+ rc = rua_rx_unsuccessful_outcome_msg(msg, &pdu->choice.unsuccessfulOutcome);
+ break;
+ default:
+ LOGP(DRUA, LOGL_NOTICE, "Unknown RUA presence %u\n", pdu->present);
+ rc = -1;
+ }
+
+ return rc;
+}
+
+int hnbgw_rua_rx(struct hnb_context *hnb, struct msgb *msg)
+{
+ RUA_RUA_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ /* decode and handle to _hnbgw_hnbap_rx() */
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL, &asn_DEF_RUA_RUA_PDU, (void **) &pdu,
+ msg->data, msgb_length(msg), 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DRUA, LOGL_ERROR, "Error in ASN.1 decode\n");
+ return -1;
+ }
+
+ rc = _hnbgw_rua_rx(msg, pdu);
+
+ return rc;
+}
+
+
+int hnbgw_rua_init(void)
+{
+ return 0;
+}
diff --git a/src/hnbgw_vty.c b/src/hnbgw_vty.c
new file mode 100644
index 0000000..ddea578
--- /dev/null
+++ b/src/hnbgw_vty.c
@@ -0,0 +1,296 @@
+/* HNB-GW interface to quagga VTY */
+
+/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <osmocom/vty/command.h>
+
+#include <osmocom/iuh/vty.h>
+
+#include <osmocom/iuh/hnbgw.h>
+#include <osmocom/iuh/context_map.h>
+#include <osmocom/sigtran/protocol/sua.h>
+
+static void *tall_hnb_ctx = NULL;
+static struct hnb_gw *g_hnb_gw = NULL;
+
+static struct cmd_node hnbgw_node = {
+ HNBGW_NODE,
+ "%s(config-hnbgw)# ",
+ 1,
+};
+
+DEFUN(cfg_hnbgw, cfg_hnbgw_cmd,
+ "hnbgw", "Configure HNBGW options")
+{
+ vty->node = HNBGW_NODE;
+ return CMD_SUCCESS;
+}
+
+static struct cmd_node iuh_node = {
+ IUH_NODE,
+ "%s(config-hnbgw-iuh)# ",
+ 1,
+};
+
+DEFUN(cfg_hnbgw_iuh, cfg_hnbgw_iuh_cmd,
+ "iuh", "Configure Iuh options")
+{
+ vty->node = IUH_NODE;
+ return CMD_SUCCESS;
+}
+
+static struct cmd_node iucs_node = {
+ IUCS_NODE,
+ "%s(config-hnbgw-iucs)# ",
+ 1,
+};
+
+DEFUN(cfg_hnbgw_iucs, cfg_hnbgw_iucs_cmd,
+ "iucs", "Configure IuCS options")
+{
+ vty->node = IUCS_NODE;
+ return CMD_SUCCESS;
+}
+
+static struct cmd_node iups_node = {
+ IUPS_NODE,
+ "%s(config-hnbgw-iups)# ",
+ 1,
+};
+
+DEFUN(cfg_hnbgw_iups, cfg_hnbgw_iups_cmd,
+ "iups", "Configure IuPS options")
+{
+ vty->node = IUPS_NODE;
+ return CMD_SUCCESS;
+}
+
+int hnbgw_vty_go_parent(struct vty *vty)
+{
+ switch (vty->node) {
+ case IUH_NODE:
+ case IUCS_NODE:
+ case IUPS_NODE:
+ vty->node = HNBGW_NODE;
+ vty->index = NULL;
+ break;
+ case HNBGW_NODE:
+ vty->node = CONFIG_NODE;
+ vty->index = NULL;
+ break;
+ case CONFIG_NODE:
+ vty->node = ENABLE_NODE;
+ vty->index = NULL;
+ break;
+ default:
+ osmo_ss7_vty_go_parent(vty);
+ break;
+ }
+
+ return vty->node;
+}
+
+static void vty_dump_hnb_info(struct vty *vty, struct hnb_context *hnb)
+{
+ struct hnbgw_context_map *map;
+
+ vty_out(vty, "HNB \"%s\" MCC %u MNC %u LAC %u RAC %u SAC %u CID %u%s", hnb->identity_info,
+ hnb->id.mcc, hnb->id.mnc, hnb->id.lac, hnb->id.rac, hnb->id.sac, hnb->id.cid,
+ VTY_NEWLINE);
+ vty_out(vty, " HNBAP ID %u RUA ID %u%s", hnb->hnbap_stream, hnb->rua_stream, VTY_NEWLINE);
+
+ llist_for_each_entry(map, &hnb->map_list, hnb_list) {
+ vty_out(vty, " Map %u->%u (RUA->SUA) cnlink=%p state=%u%s", map->rua_ctx_id, map->scu_conn_id,
+ map->cn_link, map->state, VTY_NEWLINE);
+
+ }
+}
+
+static void vty_dump_ue_info(struct vty *vty, struct ue_context *ue)
+{
+ vty_out(vty, "UE IMSI \"%s\" context ID %u%s", ue->imsi, ue->context_id, VTY_NEWLINE);
+}
+
+DEFUN(show_hnb, show_hnb_cmd, "show hnb all", SHOW_STR "Display information about a HNB")
+{
+ struct hnb_context *hnb;
+
+ llist_for_each_entry(hnb, &g_hnb_gw->hnb_list, list) {
+ vty_dump_hnb_info(vty, hnb);
+ }
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(show_ue, show_ue_cmd, "show ue all", SHOW_STR "Display information about a UE")
+{
+ struct ue_context *ue;
+
+ llist_for_each_entry(ue, &g_hnb_gw->ue_list, list) {
+ vty_dump_ue_info(vty, ue);
+ }
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(show_talloc, show_talloc_cmd, "show talloc", SHOW_STR "Display talloc info")
+{
+ talloc_report_full(tall_hnb_ctx, stderr);
+ talloc_report_full(talloc_asn1_ctx, stderr);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_hnbgw_iuh_local_ip, cfg_hnbgw_iuh_local_ip_cmd, "local-ip A.B.C.D",
+ "Accept Iuh connections on local interface\n"
+ "Local interface IP address (default: " HNBGW_LOCAL_IP_DEFAULT ")")
+{
+ talloc_free((void*)g_hnb_gw->config.iuh_local_ip);
+ g_hnb_gw->config.iuh_local_ip = talloc_strdup(tall_hnb_ctx, argv[0]);
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_hnbgw_iuh_local_port, cfg_hnbgw_iuh_local_port_cmd, "local-port <1-65535>",
+ "Accept Iuh connections on local port\n"
+ "Local interface port (default: 29169)")
+{
+ g_hnb_gw->config.iuh_local_port = atoi(argv[0]);
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_hnbgw_iuh_hnbap_allow_tmsi, cfg_hnbgw_iuh_hnbap_allow_tmsi_cmd,
+ "hnbap-allow-tmsi (0|1)",
+ "Allow HNBAP UE Register messages with TMSI or PTMSI identity\n"
+ "Only accept IMSI identity, reject TMSI or PTMSI\n"
+ "Accept IMSI, TMSI or PTMSI as UE identity\n")
+{
+ g_hnb_gw->config.hnbap_allow_tmsi = (*argv[0] == '1');
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_hnbgw_iucs_remote_addr,
+ cfg_hnbgw_iucs_remote_addr_cmd,
+ "remote-addr NAME",
+ "SCCP address to send IuCS to (MSC)\n"
+ "SCCP address book entry name (see 'cs7-instance')\n")
+{
+ g_hnb_gw->config.iucs_remote_addr_name = talloc_strdup(g_hnb_gw, argv[0]);
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_hnbgw_iups_remote_addr,
+ cfg_hnbgw_iups_remote_addr_cmd,
+ "remote-addr NAME",
+ "SCCP address to send IuPS to (SGSN)\n"
+ "SCCP address book entry name (see 'cs7-instance')\n")
+{
+ g_hnb_gw->config.iups_remote_addr_name = talloc_strdup(g_hnb_gw, argv[0]);
+ return CMD_SUCCESS;
+}
+
+static int config_write_hnbgw(struct vty *vty)
+{
+ vty_out(vty, "hnbgw%s", VTY_NEWLINE);
+ return CMD_SUCCESS;
+}
+
+static int config_write_hnbgw_iuh(struct vty *vty)
+{
+ const char *addr;
+ uint16_t port;
+
+ vty_out(vty, " iuh%s", VTY_NEWLINE);
+
+ addr = g_hnb_gw->config.iuh_local_ip;
+ if (addr && (strcmp(addr, HNBGW_LOCAL_IP_DEFAULT) != 0))
+ vty_out(vty, " local-ip %s%s", addr, VTY_NEWLINE);
+
+ port = g_hnb_gw->config.iuh_local_port;
+ if (port && port != IUH_DEFAULT_SCTP_PORT)
+ vty_out(vty, " local-port %u%s", port, VTY_NEWLINE);
+
+ if (g_hnb_gw->config.hnbap_allow_tmsi)
+ vty_out(vty, " hnbap-allow-tmsi 1%s", VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+static int config_write_hnbgw_iucs(struct vty *vty)
+{
+ const char *addr;
+ uint16_t port;
+
+ if (!g_hnb_gw->config.iucs_remote_addr_name)
+ return CMD_SUCCESS;
+
+ vty_out(vty, " iucs%s", VTY_NEWLINE);
+ vty_out(vty, " remote-addr %s%s", g_hnb_gw->config.iucs_remote_addr_name,
+ VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+static int config_write_hnbgw_iups(struct vty *vty)
+{
+ const char *addr;
+ uint16_t port;
+
+ if (!g_hnb_gw->config.iups_remote_addr_name)
+ return CMD_SUCCESS;
+
+ vty_out(vty, " iups%s", VTY_NEWLINE);
+ vty_out(vty, " remote-addr %s%s", g_hnb_gw->config.iups_remote_addr_name,
+ VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+void hnbgw_vty_init(struct hnb_gw *gw, void *tall_ctx)
+{
+ g_hnb_gw = gw;
+ tall_hnb_ctx = tall_ctx;
+
+ install_element(CONFIG_NODE, &cfg_hnbgw_cmd);
+ install_node(&hnbgw_node, config_write_hnbgw);
+ vty_install_default(HNBGW_NODE);
+
+ install_element(HNBGW_NODE, &cfg_hnbgw_iuh_cmd);
+ install_node(&iuh_node, config_write_hnbgw_iuh);
+ vty_install_default(IUH_NODE);
+
+ install_element(IUH_NODE, &cfg_hnbgw_iuh_local_ip_cmd);
+ install_element(IUH_NODE, &cfg_hnbgw_iuh_local_port_cmd);
+ install_element(IUH_NODE, &cfg_hnbgw_iuh_hnbap_allow_tmsi_cmd);
+
+ install_element(HNBGW_NODE, &cfg_hnbgw_iucs_cmd);
+ install_node(&iucs_node, config_write_hnbgw_iucs);
+ vty_install_default(IUCS_NODE);
+
+ install_element(IUCS_NODE, &cfg_hnbgw_iucs_remote_addr_cmd);
+
+ install_element(HNBGW_NODE, &cfg_hnbgw_iups_cmd);
+ install_node(&iups_node, config_write_hnbgw_iups);
+ vty_install_default(IUPS_NODE);
+
+ install_element(IUPS_NODE, &cfg_hnbgw_iups_remote_addr_cmd);
+
+ install_element_ve(&show_hnb_cmd);
+ install_element_ve(&show_ue_cmd);
+ install_element_ve(&show_talloc_cmd);
+}
diff --git a/src/iu_client.c b/src/iu_client.c
new file mode 100644
index 0000000..17d955d
--- /dev/null
+++ b/src/iu_client.c
@@ -0,0 +1,778 @@
+/* Common parts of IuCS and IuPS interfaces implementation */
+
+/* (C) 2016-2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdint.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <osmocom/ranap/iu_client.h>
+
+#include <osmocom/core/logging.h>
+#include <osmocom/crypt/auth.h>
+#include <osmocom/gprs/gprs_msgb.h>
+#include <osmocom/sigtran/sccp_sap.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+
+/* Parsed global RNC id. See also struct RANAP_GlobalRNC_ID, and note that the
+ * PLMN identity is a BCD representation of the MCC and MNC.
+ * See iu_grnc_id_parse(). */
+struct iu_grnc_id {
+ uint16_t mcc;
+ uint16_t mnc;
+ uint16_t rnc_id;
+};
+
+/* A remote RNC (Radio Network Controller, like BSC but for UMTS) that has
+ * called us and is currently reachable at the given osmo_sccp_addr. So, when we
+ * know a LAC for a subscriber, we can page it at the RNC matching that LAC or
+ * RAC. An HNB-GW typically presents itself as if it were a single RNC, even
+ * though it may have several RNCs in hNodeBs connected to it. Those will then
+ * share the same RNC id, which they actually receive and adopt from the HNB-GW
+ * in the HNBAP HNB REGISTER ACCEPT message. */
+struct ranap_iu_rnc {
+ struct llist_head entry;
+
+ uint16_t rnc_id;
+ uint16_t lac; /* Location Area Code (used for CS and PS) */
+ uint8_t rac; /* Routing Area Code (used for PS only) */
+ struct osmo_sccp_addr sccp_addr;
+};
+
+void *talloc_iu_ctx;
+void *talloc_asn1_ctx;
+
+/* Implement the extern asn_debug from libasn1c to indicate whether to print
+ * asn.1 debug messages (see libasn1c). */
+int asn_debug = 0;
+
+/* Implement the extern asn1_xer_print to indicate whether the ASN.1 binary
+ * code decoded and encoded during Iu communication should be logged to stderr
+ * (see asn.1 generated code in osmo-iuh). */
+int asn1_xer_print = 0;
+
+ranap_iu_recv_cb_t global_iu_recv_cb = NULL;
+ranap_iu_event_cb_t global_iu_event_cb = NULL;
+int iu_log_subsystem = 0;
+
+#define LOGPIU(level, fmt, args...) \
+ LOGP(iu_log_subsystem, level, fmt, ## args)
+
+static LLIST_HEAD(ue_conn_ctx_list);
+static LLIST_HEAD(rnc_list);
+
+static struct osmo_sccp_instance *g_sccp;
+static struct osmo_sccp_user *g_scu;
+static struct osmo_sccp_addr g_local_sccp_addr;
+
+const struct value_string ranap_iu_event_type_names[] = {
+ OSMO_VALUE_STRING(RANAP_IU_EVENT_RAB_ASSIGN),
+ OSMO_VALUE_STRING(RANAP_IU_EVENT_SECURITY_MODE_COMPLETE),
+ OSMO_VALUE_STRING(RANAP_IU_EVENT_IU_RELEASE),
+ OSMO_VALUE_STRING(RANAP_IU_EVENT_LINK_INVALIDATED),
+ { 0, NULL }
+};
+
+static struct ranap_ue_conn_ctx *ue_conn_ctx_alloc(struct ranap_iu_rnc *rnc, uint32_t conn_id)
+{
+ struct ranap_ue_conn_ctx *ctx = talloc_zero(talloc_iu_ctx, struct ranap_ue_conn_ctx);
+
+ ctx->rnc = rnc;
+ ctx->conn_id = conn_id;
+ llist_add(&ctx->list, &ue_conn_ctx_list);
+
+ return ctx;
+}
+
+static struct ranap_ue_conn_ctx *ue_conn_ctx_find(uint32_t conn_id)
+{
+ struct ranap_ue_conn_ctx *ctx;
+
+ llist_for_each_entry(ctx, &ue_conn_ctx_list, list) {
+ if (ctx->conn_id == conn_id)
+ return ctx;
+ }
+ return NULL;
+}
+
+static struct ranap_iu_rnc *iu_rnc_alloc(uint16_t rnc_id, uint16_t lac, uint8_t rac,
+ struct osmo_sccp_addr *addr)
+{
+ struct ranap_iu_rnc *rnc = talloc_zero(talloc_iu_ctx, struct ranap_iu_rnc);
+
+ rnc->rnc_id = rnc_id;
+ rnc->lac = lac;
+ rnc->rac = rac;
+ rnc->sccp_addr = *addr;
+ llist_add(&rnc->entry, &rnc_list);
+
+ LOGPIU(LOGL_NOTICE, "New RNC %d (LAC=%d RAC=%d)\n",
+ rnc->rnc_id, rnc->lac, rnc->rac);
+
+ return rnc;
+}
+
+static struct ranap_iu_rnc *iu_rnc_register(uint16_t rnc_id, uint16_t lac,
+ uint8_t rac, struct osmo_sccp_addr *addr)
+{
+ struct ranap_iu_rnc *rnc;
+ llist_for_each_entry(rnc, &rnc_list, entry) {
+ if (rnc->rnc_id != rnc_id)
+ continue;
+
+ /* We have this RNC Id registered already. Make sure that the
+ * details match. */
+
+ /* TODO should a mismatch be an error? */
+ if (rnc->lac != lac || rnc->rac != rac)
+ LOGPIU(LOGL_NOTICE, "RNC %d changes its details:"
+ " LAC=%d RAC=%d --> LAC=%d RAC=%d\n",
+ rnc->rnc_id, rnc->lac, rnc->rac,
+ lac, rac);
+ rnc->lac = lac;
+ rnc->rac = rac;
+
+ if (addr && memcmp(&rnc->sccp_addr, addr, sizeof(*addr)))
+ LOGPIU(LOGL_NOTICE, "RNC %d on New SCCP Addr %s"
+ " (LAC=%d RAC=%d)\n",
+ rnc->rnc_id, osmo_sccp_addr_dump(addr), rnc->lac, rnc->rac);
+ rnc->sccp_addr = *addr;
+ return rnc;
+ }
+
+ /* Not found, make a new one. */
+ return iu_rnc_alloc(rnc_id, lac, rac, addr);
+}
+
+/***********************************************************************
+ * RANAP handling
+ ***********************************************************************/
+
+int ranap_iu_rab_act(struct ranap_ue_conn_ctx *ue_ctx, struct msgb *msg)
+{
+ struct osmo_scu_prim *prim;
+
+ /* wrap RANAP message in SCCP N-DATA.req */
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = ue_ctx->conn_id;
+ osmo_prim_init(&prim->oph,
+ SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST,
+ msg);
+ return osmo_sccp_user_sap_down(g_scu, &prim->oph);
+}
+
+int ranap_iu_rab_deact(struct ranap_ue_conn_ctx *ue_ctx, uint8_t rab_id)
+{
+ /* FIXME */
+ return -1;
+}
+
+int ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
+ int send_ck, int new_key)
+{
+ struct osmo_scu_prim *prim;
+ struct msgb *msg;
+
+ /* create RANAP message */
+ msg = ranap_new_msg_sec_mod_cmd(vec->ik, send_ck? vec->ck : NULL,
+ new_key ? RANAP_KeyStatus_new : RANAP_KeyStatus_old);
+ msg->l2h = msg->data;
+ /* wrap RANAP message in SCCP N-DATA.req */
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = uectx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+ osmo_sccp_user_sap_down(g_scu, &prim->oph);
+
+ return 0;
+}
+
+int ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *uectx, const char *imsi)
+{
+ struct msgb *msg;
+ struct osmo_scu_prim *prim;
+
+ LOGPIU(LOGL_INFO, "Transmitting RANAP CommonID (SCCP conn_id %u)\n",
+ uectx->conn_id);
+
+ msg = ranap_new_msg_common_id(imsi);
+ msg->l2h = msg->data;
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = uectx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+ osmo_sccp_user_sap_down(g_scu, &prim->oph);
+ return 0;
+}
+
+static int iu_grnc_id_parse(struct iu_grnc_id *dst, struct RANAP_GlobalRNC_ID *src)
+{
+ /* The size is coming from arbitrary sender, check it gracefully */
+ if (src->pLMNidentity.size != 3) {
+ LOGPIU(LOGL_ERROR, "Invalid PLMN Identity size:"
+ " should be 3, is %d\n", src->pLMNidentity.size);
+ return -1;
+ }
+ gsm48_mcc_mnc_from_bcd(&src->pLMNidentity.buf[0],
+ &dst->mcc, &dst->mnc);
+ dst->rnc_id = (uint16_t)src->rNC_ID;
+ return 0;
+}
+
+#if 0
+ -- not used at present --
+static int iu_grnc_id_compose(struct iu_grnc_id *src, struct RANAP_GlobalRNC_ID *dst)
+{
+ /* The caller must ensure proper size */
+ OSMO_ASSERT(dst->pLMNidentity.size == 3);
+ gsm48_mcc_mnc_to_bcd(&dst->pLMNidentity.buf[0],
+ src->mcc, src->mnc);
+ dst->rNC_ID = src->rnc_id;
+ return 0;
+}
+#endif
+
+struct new_ue_conn_ctx {
+ struct osmo_sccp_addr sccp_addr;
+ uint32_t conn_id;
+};
+
+static int ranap_handle_co_initial_ue(void *ctx, RANAP_InitialUE_MessageIEs_t *ies)
+{
+ struct new_ue_conn_ctx *new_ctx = ctx;
+ struct gprs_ra_id ra_id;
+ struct iu_grnc_id grnc_id;
+ uint16_t sai;
+ struct ranap_ue_conn_ctx *ue;
+ struct msgb *msg = msgb_alloc(256, "RANAP->NAS");
+ struct ranap_iu_rnc *rnc;
+
+ if (ranap_parse_lai(&ra_id, &ies->lai) != 0) {
+ LOGPIU(LOGL_ERROR, "Failed to parse RANAP LAI IE\n");
+ return -1;
+ }
+
+ if (ies->presenceMask & INITIALUE_MESSAGEIES_RANAP_RAC_PRESENT) {
+ ra_id.rac = asn1str_to_u8(&ies->rac);
+ }
+
+ if (iu_grnc_id_parse(&grnc_id, &ies->globalRNC_ID) != 0) {
+ LOGPIU(LOGL_ERROR,
+ "Failed to parse RANAP Global-RNC-ID IE\n");
+ return -1;
+ }
+
+ sai = asn1str_to_u16(&ies->sai.sAC);
+ msgb_gmmh(msg) = msgb_put(msg, ies->nas_pdu.size);
+ memcpy(msgb_gmmh(msg), ies->nas_pdu.buf, ies->nas_pdu.size);
+
+ /* Make sure we know the RNC Id and LAC+RAC coming in on this connection. */
+ rnc = iu_rnc_register(grnc_id.rnc_id, ra_id.lac, ra_id.rac, &new_ctx->sccp_addr);
+
+ ue = ue_conn_ctx_alloc(rnc, new_ctx->conn_id);
+ OSMO_ASSERT(ue);
+ ue->ra_id = ra_id;
+
+ /* Feed into the MM layer */
+ msg->dst = ue;
+ global_iu_recv_cb(msg, &ra_id, &sai);
+
+ msgb_free(msg);
+
+ return 0;
+}
+
+static int ranap_handle_co_dt(void *ctx, RANAP_DirectTransferIEs_t *ies)
+{
+ struct gprs_ra_id _ra_id, *ra_id = NULL;
+ uint16_t _sai, *sai = NULL;
+ struct msgb *msg = msgb_alloc(256, "RANAP->NAS");
+
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_LAI_PRESENT) {
+ if (ranap_parse_lai(&_ra_id, &ies->lai) != 0) {
+ LOGPIU(LOGL_ERROR, "Failed to parse RANAP LAI IE\n");
+ return -1;
+ }
+ ra_id = &_ra_id;
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_RAC_PRESENT) {
+ _ra_id.rac = asn1str_to_u8(&ies->rac);
+ }
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_SAI_PRESENT) {
+ _sai = asn1str_to_u16(&ies->sai.sAC);
+ sai = &_sai;
+ }
+ }
+
+ msgb_gmmh(msg) = msgb_put(msg, ies->nas_pdu.size);
+ memcpy(msgb_gmmh(msg), ies->nas_pdu.buf, ies->nas_pdu.size);
+
+ /* Feed into the MM/CC/SMS-CP layer */
+ msg->dst = ctx;
+ global_iu_recv_cb(msg, ra_id, sai);
+
+ msgb_free(msg);
+
+ return 0;
+}
+
+static int ranap_handle_co_err_ind(void *ctx, RANAP_ErrorIndicationIEs_t *ies)
+{
+ if (ies->presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT)
+ LOGPIU(LOGL_ERROR, "Rx Error Indication (%s)\n",
+ ranap_cause_str(&ies->cause));
+ else
+ LOGPIU(LOGL_ERROR, "Rx Error Indication\n");
+
+ return 0;
+}
+
+int ranap_iu_tx(struct msgb *msg_nas, uint8_t sapi)
+{
+ struct ranap_ue_conn_ctx *uectx = msg_nas->dst;
+ struct msgb *msg;
+ struct osmo_scu_prim *prim;
+
+ LOGPIU(LOGL_INFO, "Transmitting L3 Message as RANAP DT (SCCP conn_id %u)\n",
+ uectx->conn_id);
+
+ msg = ranap_new_msg_dt(sapi, msg_nas->data, msgb_length(msg_nas));
+ msgb_free(msg_nas);
+ msg->l2h = msg->data;
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = uectx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+ osmo_sccp_user_sap_down(g_scu, &prim->oph);
+ return 0;
+}
+
+/* Send Iu Release for the given UE connection.
+ * If cause is NULL, the standard "No remaining RAB" cause is sent, otherwise
+ * the provided cause. */
+int ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
+{
+ struct msgb *msg;
+ struct osmo_scu_prim *prim;
+ static const struct RANAP_Cause default_cause = {
+ .present = RANAP_Cause_PR_radioNetwork,
+ .choice.radioNetwork = RANAP_CauseRadioNetwork_no_remaining_rab,
+ };
+
+ if (!cause)
+ cause = &default_cause;
+
+ msg = ranap_new_msg_iu_rel_cmd(cause);
+ msg->l2h = msg->data;
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = ctx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+ return osmo_sccp_user_sap_down(g_scu, &prim->oph);
+}
+
+static int ranap_handle_co_iu_rel_req(struct ranap_ue_conn_ctx *ctx, RANAP_Iu_ReleaseRequestIEs_t *ies)
+{
+ LOGPIU(LOGL_INFO, "Received Iu Release Request, Sending Release Command\n");
+ ranap_iu_tx_release(ctx, &ies->cause);
+ return 0;
+}
+
+static int ranap_handle_co_rab_ass_resp(struct ranap_ue_conn_ctx *ctx, RANAP_RAB_AssignmentResponseIEs_t *ies)
+{
+ int rc = -1;
+
+ LOGPIU(LOGL_INFO,
+ "Rx RAB Assignment Response for UE conn_id %u\n", ctx->conn_id);
+ if (ies->presenceMask & RAB_ASSIGNMENTRESPONSEIES_RANAP_RAB_SETUPORMODIFIEDLIST_PRESENT) {
+ /* TODO: Iterate over list of SetupOrModifiedList IEs and handle each one */
+ RANAP_IE_t *ranap_ie = ies->raB_SetupOrModifiedList.raB_SetupOrModifiedList_ies.list.array[0];
+ RANAP_RAB_SetupOrModifiedItemIEs_t setup_ies;
+
+ rc = ranap_decode_rab_setupormodifieditemies_fromlist(&setup_ies, &ranap_ie->value);
+ if (rc) {
+ LOGPIU(LOGL_ERROR, "Error in ranap_decode_rab_setupormodifieditemies()\n");
+ return rc;
+ }
+
+ rc = global_iu_event_cb(ctx, RANAP_IU_EVENT_RAB_ASSIGN, &setup_ies);
+
+ ranap_free_rab_setupormodifieditemies(&setup_ies);
+ }
+ /* FIXME: handle RAB Ass failure? */
+
+ return rc;
+}
+
+static void cn_ranap_handle_co_initial(void *ctx, ranap_message *message)
+{
+ int rc;
+
+ LOGPIU(LOGL_NOTICE, "handle_co_initial(dir=%u, proc=%u)\n", message->direction, message->procedureCode);
+
+ if (message->direction != RANAP_RANAP_PDU_PR_initiatingMessage
+ || message->procedureCode != RANAP_ProcedureCode_id_InitialUE_Message) {
+ LOGPIU(LOGL_ERROR, "Expected direction 'InitiatingMessage',"
+ " procedureCode 'InitialUE_Message', instead got %u and %u\n",
+ message->direction, message->procedureCode);
+ rc = -1;
+ }
+ else
+ rc = ranap_handle_co_initial_ue(ctx, &message->msg.initialUE_MessageIEs);
+
+ if (rc) {
+ LOGPIU(LOGL_ERROR, "Error in %s (%d)\n", __func__, rc);
+ /* TODO handling of the error? */
+ }
+}
+
+/* Entry point for connection-oriented RANAP message */
+static void cn_ranap_handle_co(void *ctx, ranap_message *message)
+{
+ int rc;
+
+ LOGPIU(LOGL_NOTICE, "handle_co(dir=%u, proc=%u)\n", message->direction, message->procedureCode);
+
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_InitialUE_Message:
+ LOGPIU(LOGL_ERROR, "Got InitialUE_Message but this is not a new conn\n");
+ rc = -1;
+ break;
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ rc = ranap_handle_co_dt(ctx, &message->msg.directTransferIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ rc = ranap_handle_co_err_ind(ctx, &message->msg.errorIndicationIEs);
+ break;
+ case RANAP_ProcedureCode_id_Iu_ReleaseRequest:
+ /* Iu Release Request */
+ rc = ranap_handle_co_iu_rel_req(ctx, &message->msg.iu_ReleaseRequestIEs);
+ break;
+ default:
+ LOGPIU(LOGL_ERROR, "Received Initiating Message: unknown Procedure Code %d\n",
+ message->procedureCode);
+ rc = -1;
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* Security Mode Complete */
+ rc = global_iu_event_cb(ctx, RANAP_IU_EVENT_SECURITY_MODE_COMPLETE, NULL);
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* Iu Release Complete */
+ rc = global_iu_event_cb(ctx, RANAP_IU_EVENT_IU_RELEASE, NULL);
+ if (rc) {
+ LOGPIU(LOGL_ERROR, "Iu Release event: Iu Event callback returned %d\n",
+ rc);
+ }
+ break;
+ default:
+ LOGPIU(LOGL_ERROR, "Received Successful Outcome: unknown Procedure Code %d\n",
+ message->procedureCode);
+ rc = -1;
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_outcome:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB Assignment Response */
+ rc = ranap_handle_co_rab_ass_resp(ctx, &message->msg.raB_AssignmentResponseIEs);
+ break;
+ default:
+ LOGPIU(LOGL_ERROR, "Received Outcome: unknown Procedure Code %d\n",
+ message->procedureCode);
+ rc = -1;
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ default:
+ LOGPIU(LOGL_ERROR, "Received Unsuccessful Outcome: Procedure Code %d\n",
+ message->procedureCode);
+ rc = -1;
+ break;
+ }
+
+ if (rc) {
+ LOGPIU(LOGL_ERROR, "Error in %s (%d)\n", __func__, rc);
+ /* TODO handling of the error? */
+ }
+}
+
+static int ranap_handle_cl_reset_req(void *ctx, RANAP_ResetIEs_t *ies)
+{
+ /* FIXME: send reset response */
+ return -1;
+}
+
+static int ranap_handle_cl_err_ind(void *ctx, RANAP_ErrorIndicationIEs_t *ies)
+{
+ if (ies->presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT)
+ LOGPIU(LOGL_ERROR, "Rx Error Indication (%s)\n",
+ ranap_cause_str(&ies->cause));
+ else
+ LOGPIU(LOGL_ERROR, "Rx Error Indication\n");
+
+ return 0;
+}
+
+/* Entry point for connection-less RANAP message */
+static void cn_ranap_handle_cl(void *ctx, ranap_message *message)
+{
+ int rc;
+
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ /* received reset.req, send reset.resp */
+ rc = ranap_handle_cl_reset_req(ctx, &message->msg.resetIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ rc = ranap_handle_cl_err_ind(ctx, &message->msg.errorIndicationIEs);
+ break;
+ default:
+ rc = -1;
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ case RANAP_RANAP_PDU_PR_outcome:
+ default:
+ rc = -1;
+ break;
+ }
+
+ if (rc) {
+ LOGPIU(LOGL_ERROR, "Error in %s (%d)\n", __func__, rc);
+ /* TODO handling of the error? */
+ }
+}
+
+/***********************************************************************
+ * Paging
+ ***********************************************************************/
+
+/* Send a paging command down a given SCCP User. tmsi and paging_cause are
+ * optional and may be passed NULL and 0, respectively, to disable their use.
+ * See enum RANAP_PagingCause.
+ *
+ * If TMSI is given, the IMSI is not sent over the air interface. Nevertheless,
+ * the IMSI is still required for resolution in the HNB-GW and/or(?) RNC. */
+static int iu_tx_paging_cmd(struct osmo_sccp_addr *called_addr,
+ const char *imsi, const uint32_t *tmsi,
+ bool is_ps, uint32_t paging_cause)
+{
+ struct msgb *msg;
+ msg = ranap_new_msg_paging_cmd(imsi, tmsi, is_ps? 1 : 0, paging_cause);
+ msg->l2h = msg->data;
+ osmo_sccp_tx_unitdata_msg(g_scu, &g_local_sccp_addr, called_addr, msg);
+ return 0;
+}
+
+static int iu_page(const char *imsi, const uint32_t *tmsi_or_ptimsi,
+ uint16_t lac, uint8_t rac, bool is_ps)
+{
+ struct ranap_iu_rnc *rnc;
+ int pagings_sent = 0;
+
+ if (tmsi_or_ptimsi) {
+ LOGPIU(LOGL_DEBUG, "%s: Looking for RNCs to page for IMSI %s"
+ " (paging will use %s %x)\n",
+ is_ps? "IuPS" : "IuCS",
+ imsi,
+ is_ps? "PTMSI" : "TMSI",
+ *tmsi_or_ptimsi);
+ } else {
+ LOGPIU(LOGL_DEBUG, "%s: Looking for RNCs to page for IMSI %s"
+ " (paging will use IMSI)\n",
+ is_ps? "IuPS" : "IuCS",
+ imsi
+ );
+ }
+
+ llist_for_each_entry(rnc, &rnc_list, entry) {
+ if (rnc->lac != lac)
+ continue;
+ if (is_ps && rnc->rac != rac)
+ continue;
+
+ /* Found a match! */
+ if (iu_tx_paging_cmd(&rnc->sccp_addr, imsi, tmsi_or_ptimsi, is_ps, 0)
+ == 0) {
+ LOGPIU(LOGL_DEBUG,
+ "%s: Paged for IMSI %s on RNC %d, on SCCP addr %s\n",
+ is_ps? "IuPS" : "IuCS",
+ imsi, rnc->rnc_id, osmo_sccp_addr_dump(&rnc->sccp_addr));
+ pagings_sent ++;
+ }
+ }
+
+ /* Some logging... */
+ if (pagings_sent > 0) {
+ LOGPIU(LOGL_DEBUG,
+ "%s: %d RNCs were paged for IMSI %s.\n",
+ is_ps? "IuPS" : "IuCS",
+ pagings_sent, imsi);
+ }
+ else {
+ if (is_ps) {
+ LOGPIU(LOGL_ERROR, "IuPS: Found no RNC to page for"
+ " LAC %d RAC %d (would have paged IMSI %s)\n",
+ lac, rac, imsi);
+ }
+ else {
+ LOGPIU(LOGL_ERROR, "IuCS: Found no RNC to page for"
+ " LAC %d (would have paged IMSI %s)\n",
+ lac, imsi);
+ }
+ }
+
+ return pagings_sent;
+}
+
+int ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac)
+{
+ return iu_page(imsi, tmsi, lac, 0, false);
+}
+
+int ranap_iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac)
+{
+ return iu_page(imsi, ptmsi, lac, rac, true);
+}
+
+
+/***********************************************************************
+ *
+ ***********************************************************************/
+
+int tx_unitdata(struct osmo_sccp_user *scu);
+int tx_conn_req(struct osmo_sccp_user *scu, uint32_t conn_id);
+
+struct osmo_prim_hdr *make_conn_req(uint32_t conn_id);
+struct osmo_prim_hdr *make_dt1_req(uint32_t conn_id, const uint8_t *data, unsigned int len);
+
+static struct osmo_prim_hdr *make_conn_resp(struct osmo_scu_connect_param *param)
+{
+ struct msgb *msg = msgb_alloc(1024, "conn_resp");
+ struct osmo_scu_prim *prim;
+
+ prim = (struct osmo_scu_prim *) msgb_put(msg, sizeof(*prim));
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_CONNECT,
+ PRIM_OP_RESPONSE, msg);
+ memcpy(&prim->u.connect, param, sizeof(prim->u.connect));
+ return &prim->oph;
+}
+
+static int sccp_sap_up(struct osmo_prim_hdr *oph, void *_scu)
+{
+ struct osmo_sccp_user *scu = _scu;
+ struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
+ struct osmo_prim_hdr *resp = NULL;
+ int rc;
+ struct ranap_ue_conn_ctx *ue;
+ struct new_ue_conn_ctx new_ctx = {};
+
+ LOGPIU(LOGL_DEBUG, "sccp_sap_up(%s)\n", osmo_scu_prim_name(oph));
+
+ switch (OSMO_PRIM_HDR(oph)) {
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM):
+ /* confirmation of outbound connection */
+ rc = -1;
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_INDICATION):
+ /* indication of new inbound connection request*/
+ LOGPIU(LOGL_DEBUG, "N-CONNECT.ind(X->%u)\n", prim->u.connect.conn_id);
+ if (/* prim->u.connect.called_addr.ssn != OSMO_SCCP_SSN_RANAP || */
+ !msgb_l2(oph->msg) || msgb_l2len(oph->msg) == 0) {
+ LOGPIU(LOGL_NOTICE,
+ "Received invalid N-CONNECT.ind\n");
+ return 0;
+ }
+ new_ctx.sccp_addr = prim->u.connect.calling_addr;
+ new_ctx.conn_id = prim->u.connect.conn_id;
+ /* first ensure the local SCCP socket is ACTIVE */
+ resp = make_conn_resp(&prim->u.connect);
+ osmo_sccp_user_sap_down(scu, resp);
+ /* then handle the RANAP payload */
+ rc = ranap_cn_rx_co(cn_ranap_handle_co_initial, &new_ctx, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_INDICATION):
+ /* indication of disconnect */
+ LOGPIU(LOGL_DEBUG, "N-DISCONNECT.ind(%u)\n",
+ prim->u.disconnect.conn_id);
+ ue = ue_conn_ctx_find(prim->u.disconnect.conn_id);
+ rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
+ /* connection-oriented data received */
+ LOGPIU(LOGL_DEBUG, "N-DATA.ind(%u, %s)\n", prim->u.data.conn_id,
+ osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
+ /* resolve UE context */
+ ue = ue_conn_ctx_find(prim->u.data.conn_id);
+ rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
+ /* connection-less data received */
+ LOGPIU(LOGL_DEBUG, "N-UNITDATA.ind(%s)\n",
+ osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
+ rc = ranap_cn_rx_cl(cn_ranap_handle_cl, scu, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ default:
+ rc = -1;
+ break;
+ }
+
+ msgb_free(oph->msg);
+ return rc;
+}
+
+int ranap_iu_init(void *ctx, int log_subsystem, const char *sccp_user_name, struct osmo_sccp_instance *sccp,
+ ranap_iu_recv_cb_t iu_recv_cb, ranap_iu_event_cb_t iu_event_cb)
+{
+ iu_log_subsystem = log_subsystem;
+ talloc_iu_ctx = talloc_named_const(ctx, 1, "iu");
+ talloc_asn1_ctx = talloc_named_const(talloc_iu_ctx, 1, "asn1");
+
+ global_iu_recv_cb = iu_recv_cb;
+ global_iu_event_cb = iu_event_cb;
+ g_sccp = sccp;
+ osmo_sccp_local_addr_by_instance(&g_local_sccp_addr, sccp, OSMO_SCCP_SSN_RANAP);
+ g_scu = osmo_sccp_user_bind(g_sccp, sccp_user_name, sccp_sap_up, OSMO_SCCP_SSN_RANAP);
+
+ return 0;
+}
+
diff --git a/src/iu_client_vty.c b/src/iu_client_vty.c
new file mode 100644
index 0000000..a99facd
--- /dev/null
+++ b/src/iu_client_vty.c
@@ -0,0 +1,121 @@
+/* OpenBSC Iu related interface to quagga VTY */
+/* (C) 2016 by sysmocom s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <osmocom/core/logging.h>
+#include <osmocom/vty/command.h>
+#include <osmocom/vty/logging.h>
+#include <osmocom/sigtran/osmo_ss7.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include <osmocom/ranap/iu_client.h>
+
+static enum ranap_nsap_addr_enc *g_rab_assign_addr_enc = NULL;
+
+DEFUN(cfg_iu_asn1_debug,
+ cfg_iu_asn1_debug_cmd,
+ "asn1 debug (1|0)",
+ "ASN.1 settings\n"
+ "Enable ASN.1 debug messages\n"
+ "Log ASN.1 debug messages to stderr\n"
+ "Do not log ASN.1 debug messages to stderr\n")
+{
+ asn_debug = atoi(argv[0]);
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_iu_asn1_xer_print,
+ cfg_iu_asn1_xer_print_cmd,
+ "asn1 xer-print (1|0)",
+ "ASN.1 settings\n"
+ "Log human readable representations of all ASN.1 messages to stderr\n"
+ "Log XML representation of all ASN.1 messages to stderr\n"
+ "Do not log decoded ASN.1 messages to stderr\n")
+{
+ asn1_xer_print = atoi(argv[0]);
+ return CMD_SUCCESS;
+}
+
+#define IU_STR "Iu interface protocol options\n"
+DEFUN(cfg_iu_rab_assign_addr_enc, cfg_iu_rab_assign_addr_enc_cmd,
+ "iu rab-assign-addr-enc (x213|v4raw)",
+ IU_STR
+ "Choose RAB Assignment's Transport Layer Address encoding\n"
+ "ITU-T X.213 compliant address encoding (default)\n"
+ "32bit length raw IPv4 address (for ip.access nano3G)\n")
+{
+ if (!g_rab_assign_addr_enc) {
+ vty_out(vty, "%%RAB Assignment Transport Layer Address"
+ " encoding not available%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ if (strcmp(argv[0], "v4raw") == 0)
+ *g_rab_assign_addr_enc = RANAP_NSAP_ADDR_ENC_V4RAW;
+ else
+ *g_rab_assign_addr_enc = RANAP_NSAP_ADDR_ENC_X213;
+ return CMD_SUCCESS;
+}
+
+int ranap_iu_vty_config_write(struct vty *vty, const char *indent)
+{
+ if (!g_rab_assign_addr_enc) {
+ vty_out(vty, "%%RAB Assignment Transport Layer Address"
+ " encoding not available%s", VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ switch (*g_rab_assign_addr_enc) {
+ case RANAP_NSAP_ADDR_ENC_V4RAW:
+ vty_out(vty, "%siu rab-assign-addr-enc v4raw%s", indent,
+ VTY_NEWLINE);
+ break;
+ case RANAP_NSAP_ADDR_ENC_X213:
+ /* default value, no need to write anything */
+ break;
+ default:
+ LOGP(0, LOGL_ERROR, "Invalid value for"
+ " iu.rab_assign_addr_enc: %d\n",
+ *g_rab_assign_addr_enc);
+ return CMD_WARNING;
+ }
+
+ if (asn_debug)
+ vty_out(vty, "%sasn1 debug 1%s", indent, VTY_NEWLINE);
+
+ if (asn1_xer_print)
+ vty_out(vty, "%sasn1 xer-print 1%s", indent, VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+void ranap_iu_vty_init(int iu_parent_node, enum ranap_nsap_addr_enc *rab_assign_addr_enc)
+{
+ g_rab_assign_addr_enc = rab_assign_addr_enc;
+
+ install_element(iu_parent_node, &cfg_iu_rab_assign_addr_enc_cmd);
+
+ /* Technically, these are global ASN.1 settings and not necessarily limited to the Iu interface.
+ * Practically, only Iu users will use ASN.1 in Osmocom programs -- at least so far. So it is
+ * easiest to have these commands under 'iu'. */
+ install_element(iu_parent_node, &cfg_iu_asn1_debug_cmd);
+ install_element(iu_parent_node, &cfg_iu_asn1_xer_print_cmd);
+}
diff --git a/src/iu_helpers.c b/src/iu_helpers.c
new file mode 100644
index 0000000..2f44e93
--- /dev/null
+++ b/src/iu_helpers.c
@@ -0,0 +1,72 @@
+/* Iu interface specific helper functions */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdint.h>
+#include <string.h>
+
+#include <osmocom/core/utils.h>
+
+/* decode a BCD-string as used inside ASN.1 encoded Iu interface protocols */
+int ranap_bcd_decode(char *out, size_t out_len, const uint8_t *in, size_t in_len)
+{
+ const uint8_t *ch;
+ char *outch = out;
+
+ for (ch = in; ch < in + in_len; ch++) {
+ char c = osmo_bcd2char(*ch & 0xF);
+ *outch++ = c;
+ if (outch + 1 >= out + out_len)
+ break;
+ c = osmo_bcd2char(*ch >> 4);
+ /* skip padding nibble at end */
+ if (c == 'F')
+ break;
+ *outch++ = c;
+ }
+ *outch++ = '\0';
+ return outch - out;
+}
+
+/* decode an IMSI as used inside ASN.1 encoded Iu interface protocols */
+int ranap_imsi_encode(uint8_t *out, size_t out_len, const char *in)
+{
+ unsigned int len = strlen(in);
+ unsigned int octlen;
+ uint8_t odd = (len & 0x01) == 1;
+ unsigned int off = 0;
+ unsigned int i;
+
+ octlen = len/2;
+ if (odd)
+ octlen++;
+
+ for (i = 0; i < octlen; i++) {
+ uint8_t lower, upper;
+
+ lower = osmo_char2bcd(in[off++]) & 0x0f;
+ if (odd && off == len)
+ upper = 0x0f;
+ else
+ upper = osmo_char2bcd(in[off++]) & 0x0f;
+
+ out[i] = (upper << 4) | lower;
+ }
+ return i;
+}
diff --git a/src/ranap/Makefile.am b/src/ranap/Makefile.am
new file mode 100644
index 0000000..0fb3cdf
--- /dev/null
+++ b/src/ranap/Makefile.am
@@ -0,0 +1,1191 @@
+ASN_MODULE_SRC= \
+ RANAP_Criticality.c \
+ RANAP_Presence.c \
+ RANAP_PrivateIE-ID.c \
+ RANAP_ProcedureCode.c \
+ RANAP_ProtocolExtensionID.c \
+ RANAP_ProtocolIE-ID.c \
+ RANAP_TriggeringMessage.c \
+ RANAP_IE-Extensions.c \
+ RANAP_AccuracyFulfilmentIndicator.c \
+ RANAP_AllocationOrRetentionPriority.c \
+ RANAP_Alt-RAB-Parameters.c \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.c \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.c \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.c \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrates.c \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.c \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.c \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.c \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.c \
+ RANAP_Alt-RAB-Parameter-MaxBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-MaxBitrateType.c \
+ RANAP_Alt-RAB-Parameter-MaxBitrates.c \
+ RANAP_Alt-RAB-Parameter-MaxBitrateList.c \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.c \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.c \
+ RANAP_AlternativeRABConfigurationRequest.c \
+ RANAP_APN.c \
+ RANAP_AreaIdentity.c \
+ RANAP_Ass-RAB-Parameters.c \
+ RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.c \
+ RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.c \
+ RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.c \
+ RANAP_Ass-RAB-Parameter-MaxBitrateList.c \
+ RANAP_AuthorisedPLMNs.c \
+ RANAP_AuthorisedSNAs.c \
+ RANAP_BindingID.c \
+ RANAP_BroadcastAssistanceDataDecipheringKeys.c \
+ RANAP_Cause.c \
+ RANAP_CauseMisc.c \
+ RANAP_CauseNAS.c \
+ RANAP_CauseProtocol.c \
+ RANAP_CauseRadioNetwork.c \
+ RANAP_CauseRadioNetworkExtension.c \
+ RANAP_CauseNon-Standard.c \
+ RANAP_CauseTransmissionNetwork.c \
+ RANAP_Cell-Access-Mode.c \
+ RANAP_CellBased.c \
+ RANAP_CellIdList.c \
+ RANAP_Cell-Id.c \
+ RANAP_Cell-Capacity-Class-Value.c \
+ RANAP_CellLoadInformation.c \
+ RANAP_CellLoadInformationGroup.c \
+ RANAP_CellType.c \
+ RANAP_ClientType.c \
+ RANAP_CriticalityDiagnostics.c \
+ RANAP_CriticalityDiagnostics-IE-List.c \
+ RANAP_MessageStructure.c \
+ RANAP_CGI.c \
+ RANAP_ChosenEncryptionAlgorithm.c \
+ RANAP_ChosenIntegrityProtectionAlgorithm.c \
+ RANAP_CI.c \
+ RANAP_ClassmarkInformation2.c \
+ RANAP_ClassmarkInformation3.c \
+ RANAP_CN-DomainIndicator.c \
+ RANAP_CN-ID.c \
+ RANAP_Correlation-ID.c \
+ RANAP_CSFB-Information.c \
+ RANAP_CSG-Id.c \
+ RANAP_CSG-Id-List.c \
+ RANAP_CSG-Membership-Status.c \
+ RANAP_DataPDUType.c \
+ RANAP_DataVolumeReference.c \
+ RANAP_DataVolumeReportingIndication.c \
+ RANAP_DCH-ID.c \
+ RANAP_DeliveryOfErroneousSDU.c \
+ RANAP_DeliveryOrder.c \
+ RANAP_DeltaRAListofIdleModeUEs.c \
+ RANAP_NewRAListofIdleModeUEs.c \
+ RANAP_RAListwithNoIdleModeUEsAnyMore.c \
+ RANAP_ForwardingIndication.c \
+ RANAP_DL-GTP-PDU-SequenceNumber.c \
+ RANAP_DL-N-PDU-SequenceNumber.c \
+ RANAP_D-RNTI.c \
+ RANAP_DRX-CycleLengthCoefficient.c \
+ RANAP_DSCH-ID.c \
+ RANAP_EARFCN-Extended.c \
+ RANAP_E-DCH-MAC-d-Flow-ID.c \
+ RANAP_ENB-ID.c \
+ RANAP_EncryptionAlgorithm.c \
+ RANAP_EncryptionInformation.c \
+ RANAP_EncryptionKey.c \
+ RANAP_End-Of-CSFB.c \
+ RANAP_EquipmentsToBeTraced.c \
+ RANAP_E-UTRAN-Service-Handover.c \
+ RANAP_Event.c \
+ RANAP_Event1F-Parameters.c \
+ RANAP_Event1I-Parameters.c \
+ RANAP_ExtendedGuaranteedBitrate.c \
+ RANAP_ExtendedMaxBitrate.c \
+ RANAP_ExtendedRNC-ID.c \
+ RANAP_FrameSequenceNumber.c \
+ RANAP_FrequenceLayerConvergenceFlag.c \
+ RANAP_GANSS-PositioningDataSet.c \
+ RANAP_GANSS-PositioningMethodAndUsage.c \
+ RANAP_GeographicalArea.c \
+ RANAP_GeographicalCoordinates.c \
+ RANAP_GA-AltitudeAndDirection.c \
+ RANAP_GA-EllipsoidArc.c \
+ RANAP_GA-Point.c \
+ RANAP_GA-PointWithAltitude.c \
+ RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.c \
+ RANAP_GA-PointWithUnCertainty.c \
+ RANAP_GA-PointWithUnCertaintyEllipse.c \
+ RANAP_GA-Polygon.c \
+ RANAP_GA-UncertaintyEllipse.c \
+ RANAP_GERAN-BSC-Container.c \
+ RANAP_GERAN-Cell-ID.c \
+ RANAP_GERAN-Classmark.c \
+ RANAP_GlobalCN-ID.c \
+ RANAP_GlobalRNC-ID.c \
+ RANAP_GTP-TEI.c \
+ RANAP_GuaranteedBitrate.c \
+ RANAP_HigherBitratesThan16MbpsFlag.c \
+ RANAP_HS-DSCH-MAC-d-Flow-ID.c \
+ RANAP_IMEI.c \
+ RANAP_IMEIGroup.c \
+ RANAP_IMEIList.c \
+ RANAP_IMEISV.c \
+ RANAP_IMEISVGroup.c \
+ RANAP_IMEISVList.c \
+ RANAP_ImmediateMDT.c \
+ RANAP_IMSI.c \
+ RANAP_IncludeVelocity.c \
+ RANAP_InformationExchangeID.c \
+ RANAP_InformationExchangeType.c \
+ RANAP_InformationRequested.c \
+ RANAP_InformationRequestType.c \
+ RANAP_InformationTransferID.c \
+ RANAP_InformationTransferType.c \
+ RANAP_IntegrityProtectionAlgorithm.c \
+ RANAP_IntegrityProtectionInformation.c \
+ RANAP_IntegrityProtectionKey.c \
+ RANAP_InterSystemInformationTransferType.c \
+ RANAP_InterSystemInformation-TransparentContainer.c \
+ RANAP_IPMulticastAddress.c \
+ RANAP_IuSignallingConnectionIdentifier.c \
+ RANAP_IuTransportAssociation.c \
+ RANAP_KeyStatus.c \
+ RANAP_LA-LIST.c \
+ RANAP_LAC.c \
+ RANAP_LAI.c \
+ RANAP_LastKnownServiceArea.c \
+ RANAP_LastVisitedUTRANCell-Item.c \
+ RANAP_LHN-ID.c \
+ RANAP_Links-to-log.c \
+ RANAP_ListOF-SNAs.c \
+ RANAP_ListOfInterfacesToTrace.c \
+ RANAP_InterfacesToTraceItem.c \
+ RANAP_LoadValue.c \
+ RANAP_LocationRelatedDataRequestType.c \
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.c \
+ RANAP_LocationReportingTransferInformation.c \
+ RANAP_ReportChangeOfSAI.c \
+ RANAP_PeriodicReportingIndicator.c \
+ RANAP_DirectReportingIndicator.c \
+ RANAP_L3-Information.c \
+ RANAP_M1Report.c \
+ RANAP_M2Report.c \
+ RANAP_M4Report.c \
+ RANAP_M4-Collection-Parameters.c \
+ RANAP_M4-Period.c \
+ RANAP_M4-Threshold.c \
+ RANAP_M5Report.c \
+ RANAP_M5-Period.c \
+ RANAP_M6Report.c \
+ RANAP_M6-Period.c \
+ RANAP_M7Report.c \
+ RANAP_M7-Period.c \
+ RANAP_Management-Based-MDT-Allowed.c \
+ RANAP_MaxBitrate.c \
+ RANAP_MaxSDU-Size.c \
+ RANAP_MBMS-PTP-RAB-ID.c \
+ RANAP_MBMSBearerServiceType.c \
+ RANAP_MBMSCNDe-Registration.c \
+ RANAP_MBMSCountingInformation.c \
+ RANAP_MBMSHCIndicator.c \
+ RANAP_MBMSIPMulticastAddressandAPNRequest.c \
+ RANAP_MBMSLinkingInformation.c \
+ RANAP_MBMSRegistrationRequestType.c \
+ RANAP_MBMSServiceArea.c \
+ RANAP_MBMSSessionDuration.c \
+ RANAP_MBMSSessionIdentity.c \
+ RANAP_MBMSSessionRepetitionNumber.c \
+ RANAP_MDT-Activation.c \
+ RANAP_MDTAreaScope.c \
+ RANAP_MDT-Configuration.c \
+ RANAP_MDTMode.c \
+ RANAP_MDT-PLMN-List.c \
+ RANAP_MDT-Report-Parameters.c \
+ RANAP_MeasurementQuantity.c \
+ RANAP_MeasurementsToActivate.c \
+ RANAP_MSISDN.c \
+ RANAP_NAS-PDU.c \
+ RANAP_NAS-SequenceNumber.c \
+ RANAP_NAS-SynchronisationIndicator.c \
+ RANAP_NewBSS-To-OldBSS-Information.c \
+ RANAP_NonSearchingIndication.c \
+ RANAP_NRTLoadInformationValue.c \
+ RANAP_NumberOfIuInstances.c \
+ RANAP_NumberOfSteps.c \
+ RANAP_Offload-RAB-Parameters.c \
+ RANAP_Offload-RAB-Parameters-APN.c \
+ RANAP_Offload-RAB-Parameters-ChargingCharacteristics.c \
+ RANAP_OldBSS-ToNewBSS-Information.c \
+ RANAP_OMC-ID.c \
+ RANAP_Out-Of-UTRAN.c \
+ RANAP_PagingAreaID.c \
+ RANAP_PagingCause.c \
+ RANAP_PDP-TypeInformation.c \
+ RANAP_PDP-Type.c \
+ RANAP_PDP-TypeInformation-extension.c \
+ RANAP_PDP-Type-extension.c \
+ RANAP_PDUType14FrameSequenceNumber.c \
+ RANAP_PeriodicLocationInfo.c \
+ RANAP_PermanentNAS-UE-ID.c \
+ RANAP_PermittedEncryptionAlgorithms.c \
+ RANAP_PermittedIntegrityProtectionAlgorithms.c \
+ RANAP_LABased.c \
+ RANAP_LAI-List.c \
+ RANAP_LoggedMDT.c \
+ RANAP_LoggingInterval.c \
+ RANAP_LoggingDuration.c \
+ RANAP_PLMNidentity.c \
+ RANAP_PLMNs-in-shared-network.c \
+ RANAP_Port-Number.c \
+ RANAP_PositioningDataDiscriminator.c \
+ RANAP_PositioningDataSet.c \
+ RANAP_PositioningMethodAndUsage.c \
+ RANAP_PositioningPriority.c \
+ RANAP_PositionData.c \
+ RANAP_PositionDataSpecificToGERANIuMode.c \
+ RANAP_Pre-emptionCapability.c \
+ RANAP_Pre-emptionVulnerability.c \
+ RANAP_PriorityLevel.c \
+ RANAP_Priority-Class-Indicator.c \
+ RANAP_ProvidedData.c \
+ RANAP_P-TMSI.c \
+ RANAP_QueuingAllowed.c \
+ RANAP_RAB-AsymmetryIndicator.c \
+ RANAP_RABased.c \
+ RANAP_RAI-List.c \
+ RANAP_RABDataVolumeReport.c \
+ RANAP_RAB-ID.c \
+ RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.c \
+ RANAP_RAB-Parameter-ExtendedMaxBitrateList.c \
+ RANAP_RAB-Parameter-GuaranteedBitrateList.c \
+ RANAP_RAB-Parameter-MaxBitrateList.c \
+ RANAP_RAB-Parameters.c \
+ RANAP_RABParametersList.c \
+ RANAP_RAB-SubflowCombinationBitRate.c \
+ RANAP_RAB-TrCH-Mapping.c \
+ RANAP_RAB-TrCH-MappingItem.c \
+ RANAP_RAC.c \
+ RANAP_RAI.c \
+ RANAP_RAListofIdleModeUEs.c \
+ RANAP_NotEmptyRAListofIdleModeUEs.c \
+ RANAP_RAofIdleModeUEs.c \
+ RANAP_LAListofIdleModeUEs.c \
+ RANAP_RAT-Type.c \
+ RANAP_RateControlAllowed.c \
+ RANAP_RedirectAttemptFlag.c \
+ RANAP_RedirectionCompleted.c \
+ RANAP_RejectCauseValue.c \
+ RANAP_RelocationRequirement.c \
+ RANAP_RelocationType.c \
+ RANAP_RepetitionNumber0.c \
+ RANAP_RepetitionNumber1.c \
+ RANAP_ReportArea.c \
+ RANAP_ReportInterval.c \
+ RANAP_ReportAmount.c \
+ RANAP_RequestedGPSAssistanceData.c \
+ RANAP_RequestedGANSSAssistanceData.c \
+ RANAP_RequestedLocationRelatedDataType.c \
+ RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.c \
+ RANAP_MBMSIPMulticastAddressandAPNlist.c \
+ RANAP_RequestedMulticastServiceList.c \
+ RANAP_Requested-RAB-Parameter-Values.c \
+ RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.c \
+ RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.c \
+ RANAP_Requested-RAB-Parameter-MaxBitrateList.c \
+ RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.c \
+ RANAP_RequestType.c \
+ RANAP_ResidualBitErrorRatio.c \
+ RANAP_ResponseTime.c \
+ RANAP_RIMInformation.c \
+ RANAP_RIM-Transfer.c \
+ RANAP_RIMRoutingAddress.c \
+ RANAP_RNC-ID.c \
+ RANAP_RNCTraceInformation.c \
+ RANAP_RNSAPRelocationParameters.c \
+ RANAP_RRC-Container.c \
+ RANAP_RTLoadValue.c \
+ RANAP_RSRVCC-HO-Indication.c \
+ RANAP_RSRVCC-Information.c \
+ RANAP_RSRVCC-Operation-Possible.c \
+ RANAP_SAC.c \
+ RANAP_SAI.c \
+ RANAP_SAPI.c \
+ RANAP_SessionUpdateID.c \
+ RANAP_Shared-Network-Information.c \
+ RANAP_Session-Re-establishment-Indicator.c \
+ RANAP_SignallingIndication.c \
+ RANAP_SDU-ErrorRatio.c \
+ RANAP_SDU-FormatInformationParameters.c \
+ RANAP_SDU-FormatInformationParameterItem.c \
+ RANAP_SDU-Parameters.c \
+ RANAP_SDU-ParameterItem.c \
+ RANAP_SNA-Access-Information.c \
+ RANAP_SNAC.c \
+ RANAP_Service-Handover.c \
+ RANAP_Source-ToTarget-TransparentContainer.c \
+ RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.c \
+ RANAP_SourceCellID.c \
+ RANAP_SourceBSS-ToTargetBSS-TransparentContainer.c \
+ RANAP_SourceID.c \
+ RANAP_SourceRNC-ID.c \
+ RANAP_SourceRNC-ToTargetRNC-TransparentContainer.c \
+ RANAP_IRAT-Measurement-Configuration.c \
+ RANAP_IRATmeasurementParameters.c \
+ RANAP_RSRQ-Type.c \
+ RANAP_RSRQ-Extension.c \
+ RANAP_EUTRANFrequencies.c \
+ RANAP_MeasBand.c \
+ RANAP_SubscriberProfileIDforRFP.c \
+ RANAP_SourceStatisticsDescriptor.c \
+ RANAP_SupportedRAB-ParameterBitrateList.c \
+ RANAP_SupportedBitrate.c \
+ RANAP_SourceUTRANCellID.c \
+ RANAP_SRB-ID.c \
+ RANAP_SRB-TrCH-Mapping.c \
+ RANAP_SRB-TrCH-MappingItem.c \
+ RANAP_SRVCC-HO-Indication.c \
+ RANAP_SRVCC-Information.c \
+ RANAP_SRVCC-Operation-Possible.c \
+ RANAP_SubflowSDU-Size.c \
+ RANAP_TAC.c \
+ RANAP_TAI.c \
+ RANAP_Target-ToSource-TransparentContainer.c \
+ RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.c \
+ RANAP_TargetBSS-ToSourceBSS-TransparentContainer.c \
+ RANAP_TargetCellId.c \
+ RANAP_TargetID.c \
+ RANAP_TargetENB-ID.c \
+ RANAP_TargetRNC-ID.c \
+ RANAP_TargetRNC-ToSourceRNC-TransparentContainer.c \
+ RANAP_TBCD-STRING.c \
+ RANAP_TemporaryUE-ID.c \
+ RANAP_Time-UE-StayedInCell.c \
+ RANAP_Time-UE-StayedInCell-EnhancedGranularity.c \
+ RANAP_TimeToMBMSDataTransfer.c \
+ RANAP_TimingDifferenceULDL.c \
+ RANAP_TMGI.c \
+ RANAP_TMSI.c \
+ RANAP_TraceDepth.c \
+ RANAP_TraceInformation.c \
+ RANAP_TracePropagationParameters.c \
+ RANAP_TraceRecordingSessionInformation.c \
+ RANAP_TraceRecordingSessionReference.c \
+ RANAP_TraceReference.c \
+ RANAP_TraceType.c \
+ RANAP_TrafficClass.c \
+ RANAP_TrafficHandlingPriority.c \
+ RANAP_TransferDelay.c \
+ RANAP_UnsuccessfullyTransmittedDataVolume.c \
+ RANAP_TransportLayerAddress.c \
+ RANAP_TrCH-ID.c \
+ RANAP_TrCH-ID-List.c \
+ RANAP_TriggerID.c \
+ RANAP_TunnelInformation.c \
+ RANAP_TypeOfError.c \
+ RANAP_UE-AggregateMaximumBitRate.c \
+ RANAP_UE-AggregateMaximumBitRateDownlink.c \
+ RANAP_UE-AggregateMaximumBitRateUplink.c \
+ RANAP_UE-History-Information.c \
+ RANAP_UE-ID.c \
+ RANAP_UESBI-Iu.c \
+ RANAP_UESBI-IuA.c \
+ RANAP_UESBI-IuB.c \
+ RANAP_UL-GTP-PDU-SequenceNumber.c \
+ RANAP_UL-N-PDU-SequenceNumber.c \
+ RANAP_UPInformation.c \
+ RANAP_UPInitialisationFrame.c \
+ RANAP_UP-ModeVersions.c \
+ RANAP_USCH-ID.c \
+ RANAP_UserPlaneMode.c \
+ RANAP_UTRAN-CellID.c \
+ RANAP_VelocityEstimate.c \
+ RANAP_HorizontalVelocity.c \
+ RANAP_HorizontalWithVerticalVelocity.c \
+ RANAP_HorizontalVelocityWithUncertainty.c \
+ RANAP_HorizontalWithVerticalVelocityAndUncertainty.c \
+ RANAP_HorizontalSpeedAndBearing.c \
+ RANAP_VerticalVelocity.c \
+ RANAP_VerticalSpeedDirection.c \
+ RANAP_VerticalAccuracyCode.c \
+ RANAP_VoiceSupportMatchIndicator.c \
+ RANAP_RANAP-PDU.c \
+ RANAP_InitiatingMessage.c \
+ RANAP_SuccessfulOutcome.c \
+ RANAP_UnsuccessfulOutcome.c \
+ RANAP_Outcome.c \
+ RANAP_Iu-ReleaseCommand.c \
+ RANAP_Iu-ReleaseComplete.c \
+ RANAP_RelocationRequired.c \
+ RANAP_RelocationCommand.c \
+ RANAP_RelocationPreparationFailure.c \
+ RANAP_RelocationRequest.c \
+ RANAP_RelocationRequestAcknowledge.c \
+ RANAP_RelocationFailure.c \
+ RANAP_RelocationCancel.c \
+ RANAP_RelocationCancelAcknowledge.c \
+ RANAP_SRNS-ContextRequest.c \
+ RANAP_RAB-DataForwardingList-SRNS-CtxReq.c \
+ RANAP_DataVolumeReportRequest.c \
+ RANAP_SRNS-ContextResponse.c \
+ RANAP_SecurityModeCommand.c \
+ RANAP_SecurityModeComplete.c \
+ RANAP_SecurityModeReject.c \
+ RANAP_DataVolumeReport.c \
+ RANAP_Reset.c \
+ RANAP_ResetAcknowledge.c \
+ RANAP_RAB-ReleaseRequest.c \
+ RANAP_RedirectionIndication.c \
+ RANAP_RAB-ReleaseList.c \
+ RANAP_Iu-ReleaseRequest.c \
+ RANAP_RelocationDetect.c \
+ RANAP_RelocationComplete.c \
+ RANAP_Paging.c \
+ RANAP_CommonID.c \
+ RANAP_CN-InvokeTrace.c \
+ RANAP_CN-DeactivateTrace.c \
+ RANAP_LocationReportingControl.c \
+ RANAP_LocationReport.c \
+ RANAP_InitialUE-Message.c \
+ RANAP_DirectTransfer.c \
+ RANAP_Overload.c \
+ RANAP_ErrorIndication.c \
+ RANAP_SRNS-DataForwardCommand.c \
+ RANAP_ForwardSRNS-Context.c \
+ RANAP_RAB-AssignmentRequest.c \
+ RANAP_RAB-SetupOrModifyList.c \
+ RANAP_RAB-AssignmentResponse.c \
+ RANAP_PrivateMessage.c \
+ RANAP_ResetResource.c \
+ RANAP_ResetResourceAcknowledge.c \
+ RANAP_RANAP-RelocationInformation.c \
+ RANAP_RAB-ModifyRequest.c \
+ RANAP_LocationRelatedDataRequest.c \
+ RANAP_LocationRelatedDataResponse.c \
+ RANAP_LocationRelatedDataFailure.c \
+ RANAP_InformationTransferIndication.c \
+ RANAP_InformationTransferConfirmation.c \
+ RANAP_InformationTransferFailure.c \
+ RANAP_UESpecificInformationIndication.c \
+ RANAP_DirectInformationTransfer.c \
+ RANAP_UplinkInformationExchangeRequest.c \
+ RANAP_UplinkInformationExchangeResponse.c \
+ RANAP_UplinkInformationExchangeFailure.c \
+ RANAP_MBMSSessionStart.c \
+ RANAP_MBMSSessionStartResponse.c \
+ RANAP_MBMSSessionStartFailure.c \
+ RANAP_MBMSSessionUpdate.c \
+ RANAP_MBMSSessionUpdateResponse.c \
+ RANAP_MBMSSessionUpdateFailure.c \
+ RANAP_MBMSSessionStop.c \
+ RANAP_MBMSSessionStopResponse.c \
+ RANAP_MBMSUELinkingRequest.c \
+ RANAP_MBMSUELinkingResponse.c \
+ RANAP_MBMSRegistrationRequest.c \
+ RANAP_MBMSRegistrationResponse.c \
+ RANAP_MBMSRegistrationFailure.c \
+ RANAP_MBMSCNDe-RegistrationRequest.c \
+ RANAP_MBMSCNDe-RegistrationResponse.c \
+ RANAP_MBMSRABEstablishmentIndication.c \
+ RANAP_MBMSRABReleaseRequest.c \
+ RANAP_MBMSRABRelease.c \
+ RANAP_MBMSRABReleaseFailure.c \
+ RANAP_EnhancedRelocationCompleteRequest.c \
+ RANAP_EnhancedRelocationCompleteResponse.c \
+ RANAP_EnhancedRelocationCompleteFailure.c \
+ RANAP_EnhancedRelocationCompleteConfirm.c \
+ RANAP_RANAP-EnhancedRelocationInformationRequest.c \
+ RANAP_RANAP-EnhancedRelocationInformationResponse.c \
+ RANAP_SRVCC-CSKeysRequest.c \
+ RANAP_SRVCC-CSKeysResponse.c \
+ RANAP_UeRadioCapabilityMatchRequest.c \
+ RANAP_UeRadioCapabilityMatchResponse.c \
+ RANAP_ProtocolExtensionContainer.c \
+ RANAP_ProtocolExtensionField.c \
+ RANAP_IE.c \
+ RANAP_ProtocolIE-Container.c \
+ RANAP_ProtocolIE-FieldPair.c \
+ RANAP_ProtocolIE-ContainerPair.c \
+ RANAP_RAB-IE-ContainerList.c \
+ RANAP_RAB-IE-ContainerPairList.c \
+ RANAP_ProtocolError-IE-ContainerList.c \
+ RANAP_IuSigConId-IE-ContainerList.c \
+ RANAP_DirectTransfer-IE-ContainerList.c \
+ RANAP_DataVolumeReportList.c \
+ RANAP_RAB-ReleasedList-IuRelComp.c \
+ RANAP_RAB-RelocationReleaseList.c \
+ RANAP_RAB-DataForwardingList.c \
+ RANAP_RAB-SetupList-RelocReq.c \
+ RANAP_RAB-SetupList-RelocReqAck.c \
+ RANAP_RAB-FailedList.c \
+ RANAP_RAB-ContextList.c \
+ RANAP_RABs-ContextFailedtoTransferList.c \
+ RANAP_RAB-DataVolumeReportRequestList.c \
+ RANAP_RAB-DataVolumeReportRequestItem.c \
+ RANAP_RABs-failed-to-reportList.c \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteReq.c \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteRes.c \
+ RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.c \
+ RANAP_RAB-SetupOrModifiedList.c \
+ RANAP_RAB-ReleasedList.c \
+ RANAP_RAB-QueuedList.c \
+ RANAP_RAB-ContextList-RANAP-RelocInf.c \
+ RANAP_RAB-SetupList-EnhRelocInfoReq.c \
+ RANAP_RAB-SetupList-EnhRelocInfoRes.c \
+ RANAP_RAB-FailedList-EnhRelocInfoRes.c \
+ RANAP_RAB-ModifyList.c \
+ RANAP_RAB-DataVolumeReportList.c \
+ RANAP_RAB-DataVolumeReportItem.c \
+ RANAP_RAB-ReleasedItem-IuRelComp.c \
+ RANAP_RAB-RelocationReleaseItem.c \
+ RANAP_RAB-DataForwardingItem.c \
+ RANAP_RAB-DataForwardingItem-SRNS-CtxReq.c \
+ RANAP_RAB-SetupItem-RelocReq.c \
+ RANAP_UserPlaneInformation.c \
+ RANAP_CNMBMSLinkingInformation.c \
+ RANAP_JoinedMBMSBearerService-IEs.c \
+ RANAP_RAB-SetupItem-RelocReqAck.c \
+ RANAP_RAB-FailedItem.c \
+ RANAP_RAB-ContextItem.c \
+ RANAP_RABs-ContextFailedtoTransferItem.c \
+ RANAP_RABs-failed-to-reportItem.c \
+ RANAP_ResetResourceList.c \
+ RANAP_ResetResourceItem.c \
+ RANAP_ResetResourceAckList.c \
+ RANAP_ResetResourceAckItem.c \
+ RANAP_RAB-ReleaseItem.c \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.c \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.c \
+ RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.c \
+ RANAP_RAB-SetupOrModifyItemFirst.c \
+ RANAP_TransportLayerInformation.c \
+ RANAP_RAB-SetupOrModifyItemSecond.c \
+ RANAP_RAB-SetupOrModifiedItem.c \
+ RANAP_RAB-ReleasedItem.c \
+ RANAP_DataVolumeList.c \
+ RANAP_RAB-QueuedItem.c \
+ RANAP_RAB-ReleaseFailedList.c \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.c \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.c \
+ RANAP_DirectTransferInformationItem-RANAP-RelocInf.c \
+ RANAP_RAB-ContextItem-RANAP-RelocInf.c \
+ RANAP_RAB-SetupItem-EnhRelocInfoReq.c \
+ RANAP_TNLInformationEnhRelInfoReq.c \
+ RANAP_RAB-SetupItem-EnhRelocInfoRes.c \
+ RANAP_RAB-FailedItem-EnhRelocInfoRes.c \
+ RANAP_TNLInformationEnhRelInfoRes.c \
+ RANAP_RAB-ModifyItem.c \
+ RANAP_MBMSSynchronisationInformation.c \
+ RANAP_LeftMBMSBearerService-IEs.c \
+ RANAP_UnsuccessfulLinking-IEs.c
+
+ASN_MODULE_INC= \
+ RANAP_Criticality.h \
+ RANAP_Presence.h \
+ RANAP_PrivateIE-ID.h \
+ RANAP_ProcedureCode.h \
+ RANAP_ProtocolExtensionID.h \
+ RANAP_ProtocolIE-ID.h \
+ RANAP_TriggeringMessage.h \
+ RANAP_IE-Extensions.h \
+ RANAP_AccuracyFulfilmentIndicator.h \
+ RANAP_AllocationOrRetentionPriority.h \
+ RANAP_Alt-RAB-Parameters.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h \
+ RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateType.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrates.h \
+ RANAP_Alt-RAB-Parameter-MaxBitrateList.h \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h \
+ RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h \
+ RANAP_AlternativeRABConfigurationRequest.h \
+ RANAP_APN.h \
+ RANAP_AreaIdentity.h \
+ RANAP_Ass-RAB-Parameters.h \
+ RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_Ass-RAB-Parameter-MaxBitrateList.h \
+ RANAP_AuthorisedPLMNs.h \
+ RANAP_AuthorisedSNAs.h \
+ RANAP_BindingID.h \
+ RANAP_BroadcastAssistanceDataDecipheringKeys.h \
+ RANAP_Cause.h \
+ RANAP_CauseMisc.h \
+ RANAP_CauseNAS.h \
+ RANAP_CauseProtocol.h \
+ RANAP_CauseRadioNetwork.h \
+ RANAP_CauseRadioNetworkExtension.h \
+ RANAP_CauseNon-Standard.h \
+ RANAP_CauseTransmissionNetwork.h \
+ RANAP_Cell-Access-Mode.h \
+ RANAP_CellBased.h \
+ RANAP_CellIdList.h \
+ RANAP_Cell-Id.h \
+ RANAP_Cell-Capacity-Class-Value.h \
+ RANAP_CellLoadInformation.h \
+ RANAP_CellLoadInformationGroup.h \
+ RANAP_CellType.h \
+ RANAP_ClientType.h \
+ RANAP_CriticalityDiagnostics.h \
+ RANAP_CriticalityDiagnostics-IE-List.h \
+ RANAP_MessageStructure.h \
+ RANAP_CGI.h \
+ RANAP_ChosenEncryptionAlgorithm.h \
+ RANAP_ChosenIntegrityProtectionAlgorithm.h \
+ RANAP_CI.h \
+ RANAP_ClassmarkInformation2.h \
+ RANAP_ClassmarkInformation3.h \
+ RANAP_CN-DomainIndicator.h \
+ RANAP_CN-ID.h \
+ RANAP_Correlation-ID.h \
+ RANAP_CSFB-Information.h \
+ RANAP_CSG-Id.h \
+ RANAP_CSG-Id-List.h \
+ RANAP_CSG-Membership-Status.h \
+ RANAP_DataPDUType.h \
+ RANAP_DataVolumeReference.h \
+ RANAP_DataVolumeReportingIndication.h \
+ RANAP_DCH-ID.h \
+ RANAP_DeliveryOfErroneousSDU.h \
+ RANAP_DeliveryOrder.h \
+ RANAP_DeltaRAListofIdleModeUEs.h \
+ RANAP_NewRAListofIdleModeUEs.h \
+ RANAP_RAListwithNoIdleModeUEsAnyMore.h \
+ RANAP_ForwardingIndication.h \
+ RANAP_DL-GTP-PDU-SequenceNumber.h \
+ RANAP_DL-N-PDU-SequenceNumber.h \
+ RANAP_D-RNTI.h \
+ RANAP_DRX-CycleLengthCoefficient.h \
+ RANAP_DSCH-ID.h \
+ RANAP_EARFCN-Extended.h \
+ RANAP_E-DCH-MAC-d-Flow-ID.h \
+ RANAP_ENB-ID.h \
+ RANAP_EncryptionAlgorithm.h \
+ RANAP_EncryptionInformation.h \
+ RANAP_EncryptionKey.h \
+ RANAP_End-Of-CSFB.h \
+ RANAP_EquipmentsToBeTraced.h \
+ RANAP_E-UTRAN-Service-Handover.h \
+ RANAP_Event.h \
+ RANAP_Event1F-Parameters.h \
+ RANAP_Event1I-Parameters.h \
+ RANAP_ExtendedGuaranteedBitrate.h \
+ RANAP_ExtendedMaxBitrate.h \
+ RANAP_ExtendedRNC-ID.h \
+ RANAP_FrameSequenceNumber.h \
+ RANAP_FrequenceLayerConvergenceFlag.h \
+ RANAP_GANSS-PositioningDataSet.h \
+ RANAP_GANSS-PositioningMethodAndUsage.h \
+ RANAP_GeographicalArea.h \
+ RANAP_GeographicalCoordinates.h \
+ RANAP_GA-AltitudeAndDirection.h \
+ RANAP_GA-EllipsoidArc.h \
+ RANAP_GA-Point.h \
+ RANAP_GA-PointWithAltitude.h \
+ RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h \
+ RANAP_GA-PointWithUnCertainty.h \
+ RANAP_GA-PointWithUnCertaintyEllipse.h \
+ RANAP_GA-Polygon.h \
+ RANAP_GA-UncertaintyEllipse.h \
+ RANAP_GERAN-BSC-Container.h \
+ RANAP_GERAN-Cell-ID.h \
+ RANAP_GERAN-Classmark.h \
+ RANAP_GlobalCN-ID.h \
+ RANAP_GlobalRNC-ID.h \
+ RANAP_GTP-TEI.h \
+ RANAP_GuaranteedBitrate.h \
+ RANAP_HigherBitratesThan16MbpsFlag.h \
+ RANAP_HS-DSCH-MAC-d-Flow-ID.h \
+ RANAP_IMEI.h \
+ RANAP_IMEIGroup.h \
+ RANAP_IMEIList.h \
+ RANAP_IMEISV.h \
+ RANAP_IMEISVGroup.h \
+ RANAP_IMEISVList.h \
+ RANAP_ImmediateMDT.h \
+ RANAP_IMSI.h \
+ RANAP_IncludeVelocity.h \
+ RANAP_InformationExchangeID.h \
+ RANAP_InformationExchangeType.h \
+ RANAP_InformationRequested.h \
+ RANAP_InformationRequestType.h \
+ RANAP_InformationTransferID.h \
+ RANAP_InformationTransferType.h \
+ RANAP_IntegrityProtectionAlgorithm.h \
+ RANAP_IntegrityProtectionInformation.h \
+ RANAP_IntegrityProtectionKey.h \
+ RANAP_InterSystemInformationTransferType.h \
+ RANAP_InterSystemInformation-TransparentContainer.h \
+ RANAP_IPMulticastAddress.h \
+ RANAP_IuSignallingConnectionIdentifier.h \
+ RANAP_IuTransportAssociation.h \
+ RANAP_KeyStatus.h \
+ RANAP_LA-LIST.h \
+ RANAP_LAC.h \
+ RANAP_LAI.h \
+ RANAP_LastKnownServiceArea.h \
+ RANAP_LastVisitedUTRANCell-Item.h \
+ RANAP_LHN-ID.h \
+ RANAP_Links-to-log.h \
+ RANAP_ListOF-SNAs.h \
+ RANAP_ListOfInterfacesToTrace.h \
+ RANAP_InterfacesToTraceItem.h \
+ RANAP_LoadValue.h \
+ RANAP_LocationRelatedDataRequestType.h \
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h \
+ RANAP_LocationReportingTransferInformation.h \
+ RANAP_ReportChangeOfSAI.h \
+ RANAP_PeriodicReportingIndicator.h \
+ RANAP_DirectReportingIndicator.h \
+ RANAP_L3-Information.h \
+ RANAP_M1Report.h \
+ RANAP_M2Report.h \
+ RANAP_M4Report.h \
+ RANAP_M4-Collection-Parameters.h \
+ RANAP_M4-Period.h \
+ RANAP_M4-Threshold.h \
+ RANAP_M5Report.h \
+ RANAP_M5-Period.h \
+ RANAP_M6Report.h \
+ RANAP_M6-Period.h \
+ RANAP_M7Report.h \
+ RANAP_M7-Period.h \
+ RANAP_Management-Based-MDT-Allowed.h \
+ RANAP_MaxBitrate.h \
+ RANAP_MaxSDU-Size.h \
+ RANAP_MBMS-PTP-RAB-ID.h \
+ RANAP_MBMSBearerServiceType.h \
+ RANAP_MBMSCNDe-Registration.h \
+ RANAP_MBMSCountingInformation.h \
+ RANAP_MBMSHCIndicator.h \
+ RANAP_MBMSIPMulticastAddressandAPNRequest.h \
+ RANAP_MBMSLinkingInformation.h \
+ RANAP_MBMSRegistrationRequestType.h \
+ RANAP_MBMSServiceArea.h \
+ RANAP_MBMSSessionDuration.h \
+ RANAP_MBMSSessionIdentity.h \
+ RANAP_MBMSSessionRepetitionNumber.h \
+ RANAP_MDT-Activation.h \
+ RANAP_MDTAreaScope.h \
+ RANAP_MDT-Configuration.h \
+ RANAP_MDTMode.h \
+ RANAP_MDT-PLMN-List.h \
+ RANAP_MDT-Report-Parameters.h \
+ RANAP_MeasurementQuantity.h \
+ RANAP_MeasurementsToActivate.h \
+ RANAP_MSISDN.h \
+ RANAP_NAS-PDU.h \
+ RANAP_NAS-SequenceNumber.h \
+ RANAP_NAS-SynchronisationIndicator.h \
+ RANAP_NewBSS-To-OldBSS-Information.h \
+ RANAP_NonSearchingIndication.h \
+ RANAP_NRTLoadInformationValue.h \
+ RANAP_NumberOfIuInstances.h \
+ RANAP_NumberOfSteps.h \
+ RANAP_Offload-RAB-Parameters.h \
+ RANAP_Offload-RAB-Parameters-APN.h \
+ RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h \
+ RANAP_OldBSS-ToNewBSS-Information.h \
+ RANAP_OMC-ID.h \
+ RANAP_Out-Of-UTRAN.h \
+ RANAP_PagingAreaID.h \
+ RANAP_PagingCause.h \
+ RANAP_PDP-TypeInformation.h \
+ RANAP_PDP-Type.h \
+ RANAP_PDP-TypeInformation-extension.h \
+ RANAP_PDP-Type-extension.h \
+ RANAP_PDUType14FrameSequenceNumber.h \
+ RANAP_PeriodicLocationInfo.h \
+ RANAP_PermanentNAS-UE-ID.h \
+ RANAP_PermittedEncryptionAlgorithms.h \
+ RANAP_PermittedIntegrityProtectionAlgorithms.h \
+ RANAP_LABased.h \
+ RANAP_LAI-List.h \
+ RANAP_LoggedMDT.h \
+ RANAP_LoggingInterval.h \
+ RANAP_LoggingDuration.h \
+ RANAP_PLMNidentity.h \
+ RANAP_PLMNs-in-shared-network.h \
+ RANAP_Port-Number.h \
+ RANAP_PositioningDataDiscriminator.h \
+ RANAP_PositioningDataSet.h \
+ RANAP_PositioningMethodAndUsage.h \
+ RANAP_PositioningPriority.h \
+ RANAP_PositionData.h \
+ RANAP_PositionDataSpecificToGERANIuMode.h \
+ RANAP_Pre-emptionCapability.h \
+ RANAP_Pre-emptionVulnerability.h \
+ RANAP_PriorityLevel.h \
+ RANAP_Priority-Class-Indicator.h \
+ RANAP_ProvidedData.h \
+ RANAP_P-TMSI.h \
+ RANAP_QueuingAllowed.h \
+ RANAP_RAB-AsymmetryIndicator.h \
+ RANAP_RABased.h \
+ RANAP_RAI-List.h \
+ RANAP_RABDataVolumeReport.h \
+ RANAP_RAB-ID.h \
+ RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_RAB-Parameter-MaxBitrateList.h \
+ RANAP_RAB-Parameters.h \
+ RANAP_RABParametersList.h \
+ RANAP_RAB-SubflowCombinationBitRate.h \
+ RANAP_RAB-TrCH-Mapping.h \
+ RANAP_RAB-TrCH-MappingItem.h \
+ RANAP_RAC.h \
+ RANAP_RAI.h \
+ RANAP_RAListofIdleModeUEs.h \
+ RANAP_NotEmptyRAListofIdleModeUEs.h \
+ RANAP_RAofIdleModeUEs.h \
+ RANAP_LAListofIdleModeUEs.h \
+ RANAP_RAT-Type.h \
+ RANAP_RateControlAllowed.h \
+ RANAP_RedirectAttemptFlag.h \
+ RANAP_RedirectionCompleted.h \
+ RANAP_RejectCauseValue.h \
+ RANAP_RelocationRequirement.h \
+ RANAP_RelocationType.h \
+ RANAP_RepetitionNumber0.h \
+ RANAP_RepetitionNumber1.h \
+ RANAP_ReportArea.h \
+ RANAP_ReportInterval.h \
+ RANAP_ReportAmount.h \
+ RANAP_RequestedGPSAssistanceData.h \
+ RANAP_RequestedGANSSAssistanceData.h \
+ RANAP_RequestedLocationRelatedDataType.h \
+ RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h \
+ RANAP_MBMSIPMulticastAddressandAPNlist.h \
+ RANAP_RequestedMulticastServiceList.h \
+ RANAP_Requested-RAB-Parameter-Values.h \
+ RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h \
+ RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h \
+ RANAP_Requested-RAB-Parameter-MaxBitrateList.h \
+ RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h \
+ RANAP_RequestType.h \
+ RANAP_ResidualBitErrorRatio.h \
+ RANAP_ResponseTime.h \
+ RANAP_RIMInformation.h \
+ RANAP_RIM-Transfer.h \
+ RANAP_RIMRoutingAddress.h \
+ RANAP_RNC-ID.h \
+ RANAP_RNCTraceInformation.h \
+ RANAP_RNSAPRelocationParameters.h \
+ RANAP_RRC-Container.h \
+ RANAP_RTLoadValue.h \
+ RANAP_RSRVCC-HO-Indication.h \
+ RANAP_RSRVCC-Information.h \
+ RANAP_RSRVCC-Operation-Possible.h \
+ RANAP_SAC.h \
+ RANAP_SAI.h \
+ RANAP_SAPI.h \
+ RANAP_SessionUpdateID.h \
+ RANAP_Shared-Network-Information.h \
+ RANAP_Session-Re-establishment-Indicator.h \
+ RANAP_SignallingIndication.h \
+ RANAP_SDU-ErrorRatio.h \
+ RANAP_SDU-FormatInformationParameters.h \
+ RANAP_SDU-FormatInformationParameterItem.h \
+ RANAP_SDU-Parameters.h \
+ RANAP_SDU-ParameterItem.h \
+ RANAP_SNA-Access-Information.h \
+ RANAP_SNAC.h \
+ RANAP_Service-Handover.h \
+ RANAP_Source-ToTarget-TransparentContainer.h \
+ RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h \
+ RANAP_SourceCellID.h \
+ RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h \
+ RANAP_SourceID.h \
+ RANAP_SourceRNC-ID.h \
+ RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h \
+ RANAP_IRAT-Measurement-Configuration.h \
+ RANAP_IRATmeasurementParameters.h \
+ RANAP_RSRQ-Type.h \
+ RANAP_RSRQ-Extension.h \
+ RANAP_EUTRANFrequencies.h \
+ RANAP_MeasBand.h \
+ RANAP_SubscriberProfileIDforRFP.h \
+ RANAP_SourceStatisticsDescriptor.h \
+ RANAP_SupportedRAB-ParameterBitrateList.h \
+ RANAP_SupportedBitrate.h \
+ RANAP_SourceUTRANCellID.h \
+ RANAP_SRB-ID.h \
+ RANAP_SRB-TrCH-Mapping.h \
+ RANAP_SRB-TrCH-MappingItem.h \
+ RANAP_SRVCC-HO-Indication.h \
+ RANAP_SRVCC-Information.h \
+ RANAP_SRVCC-Operation-Possible.h \
+ RANAP_SubflowSDU-Size.h \
+ RANAP_TAC.h \
+ RANAP_TAI.h \
+ RANAP_Target-ToSource-TransparentContainer.h \
+ RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h \
+ RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h \
+ RANAP_TargetCellId.h \
+ RANAP_TargetID.h \
+ RANAP_TargetENB-ID.h \
+ RANAP_TargetRNC-ID.h \
+ RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h \
+ RANAP_TBCD-STRING.h \
+ RANAP_TemporaryUE-ID.h \
+ RANAP_Time-UE-StayedInCell.h \
+ RANAP_Time-UE-StayedInCell-EnhancedGranularity.h \
+ RANAP_TimeToMBMSDataTransfer.h \
+ RANAP_TimingDifferenceULDL.h \
+ RANAP_TMGI.h \
+ RANAP_TMSI.h \
+ RANAP_TraceDepth.h \
+ RANAP_TraceInformation.h \
+ RANAP_TracePropagationParameters.h \
+ RANAP_TraceRecordingSessionInformation.h \
+ RANAP_TraceRecordingSessionReference.h \
+ RANAP_TraceReference.h \
+ RANAP_TraceType.h \
+ RANAP_TrafficClass.h \
+ RANAP_TrafficHandlingPriority.h \
+ RANAP_TransferDelay.h \
+ RANAP_UnsuccessfullyTransmittedDataVolume.h \
+ RANAP_TransportLayerAddress.h \
+ RANAP_TrCH-ID.h \
+ RANAP_TrCH-ID-List.h \
+ RANAP_TriggerID.h \
+ RANAP_TunnelInformation.h \
+ RANAP_TypeOfError.h \
+ RANAP_UE-AggregateMaximumBitRate.h \
+ RANAP_UE-AggregateMaximumBitRateDownlink.h \
+ RANAP_UE-AggregateMaximumBitRateUplink.h \
+ RANAP_UE-History-Information.h \
+ RANAP_UE-ID.h \
+ RANAP_UESBI-Iu.h \
+ RANAP_UESBI-IuA.h \
+ RANAP_UESBI-IuB.h \
+ RANAP_UL-GTP-PDU-SequenceNumber.h \
+ RANAP_UL-N-PDU-SequenceNumber.h \
+ RANAP_UPInformation.h \
+ RANAP_UPInitialisationFrame.h \
+ RANAP_UP-ModeVersions.h \
+ RANAP_USCH-ID.h \
+ RANAP_UserPlaneMode.h \
+ RANAP_UTRAN-CellID.h \
+ RANAP_VelocityEstimate.h \
+ RANAP_HorizontalVelocity.h \
+ RANAP_HorizontalWithVerticalVelocity.h \
+ RANAP_HorizontalVelocityWithUncertainty.h \
+ RANAP_HorizontalWithVerticalVelocityAndUncertainty.h \
+ RANAP_HorizontalSpeedAndBearing.h \
+ RANAP_VerticalVelocity.h \
+ RANAP_VerticalSpeedDirection.h \
+ RANAP_VerticalAccuracyCode.h \
+ RANAP_VoiceSupportMatchIndicator.h \
+ RANAP_RANAP-PDU.h \
+ RANAP_InitiatingMessage.h \
+ RANAP_SuccessfulOutcome.h \
+ RANAP_UnsuccessfulOutcome.h \
+ RANAP_Outcome.h \
+ RANAP_Iu-ReleaseCommand.h \
+ RANAP_Iu-ReleaseComplete.h \
+ RANAP_RelocationRequired.h \
+ RANAP_RelocationCommand.h \
+ RANAP_RelocationPreparationFailure.h \
+ RANAP_RelocationRequest.h \
+ RANAP_RelocationRequestAcknowledge.h \
+ RANAP_RelocationFailure.h \
+ RANAP_RelocationCancel.h \
+ RANAP_RelocationCancelAcknowledge.h \
+ RANAP_SRNS-ContextRequest.h \
+ RANAP_RAB-DataForwardingList-SRNS-CtxReq.h \
+ RANAP_DataVolumeReportRequest.h \
+ RANAP_SRNS-ContextResponse.h \
+ RANAP_SecurityModeCommand.h \
+ RANAP_SecurityModeComplete.h \
+ RANAP_SecurityModeReject.h \
+ RANAP_DataVolumeReport.h \
+ RANAP_Reset.h \
+ RANAP_ResetAcknowledge.h \
+ RANAP_RAB-ReleaseRequest.h \
+ RANAP_RedirectionIndication.h \
+ RANAP_RAB-ReleaseList.h \
+ RANAP_Iu-ReleaseRequest.h \
+ RANAP_RelocationDetect.h \
+ RANAP_RelocationComplete.h \
+ RANAP_Paging.h \
+ RANAP_CommonID.h \
+ RANAP_CN-InvokeTrace.h \
+ RANAP_CN-DeactivateTrace.h \
+ RANAP_LocationReportingControl.h \
+ RANAP_LocationReport.h \
+ RANAP_InitialUE-Message.h \
+ RANAP_DirectTransfer.h \
+ RANAP_Overload.h \
+ RANAP_ErrorIndication.h \
+ RANAP_SRNS-DataForwardCommand.h \
+ RANAP_ForwardSRNS-Context.h \
+ RANAP_RAB-AssignmentRequest.h \
+ RANAP_RAB-SetupOrModifyList.h \
+ RANAP_RAB-AssignmentResponse.h \
+ RANAP_PrivateMessage.h \
+ RANAP_ResetResource.h \
+ RANAP_ResetResourceAcknowledge.h \
+ RANAP_RANAP-RelocationInformation.h \
+ RANAP_RAB-ModifyRequest.h \
+ RANAP_LocationRelatedDataRequest.h \
+ RANAP_LocationRelatedDataResponse.h \
+ RANAP_LocationRelatedDataFailure.h \
+ RANAP_InformationTransferIndication.h \
+ RANAP_InformationTransferConfirmation.h \
+ RANAP_InformationTransferFailure.h \
+ RANAP_UESpecificInformationIndication.h \
+ RANAP_DirectInformationTransfer.h \
+ RANAP_UplinkInformationExchangeRequest.h \
+ RANAP_UplinkInformationExchangeResponse.h \
+ RANAP_UplinkInformationExchangeFailure.h \
+ RANAP_MBMSSessionStart.h \
+ RANAP_MBMSSessionStartResponse.h \
+ RANAP_MBMSSessionStartFailure.h \
+ RANAP_MBMSSessionUpdate.h \
+ RANAP_MBMSSessionUpdateResponse.h \
+ RANAP_MBMSSessionUpdateFailure.h \
+ RANAP_MBMSSessionStop.h \
+ RANAP_MBMSSessionStopResponse.h \
+ RANAP_MBMSUELinkingRequest.h \
+ RANAP_MBMSUELinkingResponse.h \
+ RANAP_MBMSRegistrationRequest.h \
+ RANAP_MBMSRegistrationResponse.h \
+ RANAP_MBMSRegistrationFailure.h \
+ RANAP_MBMSCNDe-RegistrationRequest.h \
+ RANAP_MBMSCNDe-RegistrationResponse.h \
+ RANAP_MBMSRABEstablishmentIndication.h \
+ RANAP_MBMSRABReleaseRequest.h \
+ RANAP_MBMSRABRelease.h \
+ RANAP_MBMSRABReleaseFailure.h \
+ RANAP_EnhancedRelocationCompleteRequest.h \
+ RANAP_EnhancedRelocationCompleteResponse.h \
+ RANAP_EnhancedRelocationCompleteFailure.h \
+ RANAP_EnhancedRelocationCompleteConfirm.h \
+ RANAP_RANAP-EnhancedRelocationInformationRequest.h \
+ RANAP_RANAP-EnhancedRelocationInformationResponse.h \
+ RANAP_SRVCC-CSKeysRequest.h \
+ RANAP_SRVCC-CSKeysResponse.h \
+ RANAP_UeRadioCapabilityMatchRequest.h \
+ RANAP_UeRadioCapabilityMatchResponse.h \
+ RANAP_ProtocolExtensionContainer.h \
+ RANAP_ProtocolExtensionField.h \
+ RANAP_IE.h \
+ RANAP_ProtocolIE-Container.h \
+ RANAP_ProtocolIE-FieldPair.h \
+ RANAP_ProtocolIE-ContainerPair.h \
+ RANAP_RAB-IE-ContainerList.h \
+ RANAP_RAB-IE-ContainerPairList.h \
+ RANAP_ProtocolError-IE-ContainerList.h \
+ RANAP_IuSigConId-IE-ContainerList.h \
+ RANAP_DirectTransfer-IE-ContainerList.h \
+ RANAP_DataVolumeReportList.h \
+ RANAP_RAB-ReleasedList-IuRelComp.h \
+ RANAP_RAB-RelocationReleaseList.h \
+ RANAP_RAB-DataForwardingList.h \
+ RANAP_RAB-SetupList-RelocReq.h \
+ RANAP_RAB-SetupList-RelocReqAck.h \
+ RANAP_RAB-FailedList.h \
+ RANAP_RAB-ContextList.h \
+ RANAP_RABs-ContextFailedtoTransferList.h \
+ RANAP_RAB-DataVolumeReportRequestList.h \
+ RANAP_RAB-DataVolumeReportRequestItem.h \
+ RANAP_RABs-failed-to-reportList.h \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h \
+ RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-SetupOrModifiedList.h \
+ RANAP_RAB-ReleasedList.h \
+ RANAP_RAB-QueuedList.h \
+ RANAP_RAB-ContextList-RANAP-RelocInf.h \
+ RANAP_RAB-SetupList-EnhRelocInfoReq.h \
+ RANAP_RAB-SetupList-EnhRelocInfoRes.h \
+ RANAP_RAB-FailedList-EnhRelocInfoRes.h \
+ RANAP_RAB-ModifyList.h \
+ RANAP_RAB-DataVolumeReportList.h \
+ RANAP_RAB-DataVolumeReportItem.h \
+ RANAP_RAB-ReleasedItem-IuRelComp.h \
+ RANAP_RAB-RelocationReleaseItem.h \
+ RANAP_RAB-DataForwardingItem.h \
+ RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h \
+ RANAP_RAB-SetupItem-RelocReq.h \
+ RANAP_UserPlaneInformation.h \
+ RANAP_CNMBMSLinkingInformation.h \
+ RANAP_JoinedMBMSBearerService-IEs.h \
+ RANAP_RAB-SetupItem-RelocReqAck.h \
+ RANAP_RAB-FailedItem.h \
+ RANAP_RAB-ContextItem.h \
+ RANAP_RABs-ContextFailedtoTransferItem.h \
+ RANAP_RABs-failed-to-reportItem.h \
+ RANAP_ResetResourceList.h \
+ RANAP_ResetResourceItem.h \
+ RANAP_ResetResourceAckList.h \
+ RANAP_ResetResourceAckItem.h \
+ RANAP_RAB-ReleaseItem.h \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h \
+ RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h \
+ RANAP_RAB-SetupOrModifyItemFirst.h \
+ RANAP_TransportLayerInformation.h \
+ RANAP_RAB-SetupOrModifyItemSecond.h \
+ RANAP_RAB-SetupOrModifiedItem.h \
+ RANAP_RAB-ReleasedItem.h \
+ RANAP_DataVolumeList.h \
+ RANAP_RAB-QueuedItem.h \
+ RANAP_RAB-ReleaseFailedList.h \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h \
+ RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h \
+ RANAP_DirectTransferInformationItem-RANAP-RelocInf.h \
+ RANAP_RAB-ContextItem-RANAP-RelocInf.h \
+ RANAP_RAB-SetupItem-EnhRelocInfoReq.h \
+ RANAP_TNLInformationEnhRelInfoReq.h \
+ RANAP_RAB-SetupItem-EnhRelocInfoRes.h \
+ RANAP_RAB-FailedItem-EnhRelocInfoRes.h \
+ RANAP_TNLInformationEnhRelInfoRes.h \
+ RANAP_RAB-ModifyItem.h \
+ RANAP_MBMSSynchronisationInformation.h \
+ RANAP_LeftMBMSBearerService-IEs.h \
+ RANAP_UnsuccessfulLinking-IEs.h
+
+AM_CFLAGS = -I$(top_srcdir)/include $(ASN1C_CFLAGS) $(OSMOCORE_CFLAGS)
+
+noinst_LTLIBRARIES=libosmo-asn1-ranap.la
+libosmo_asn1_ranap_la_SOURCES=$(ASN_MODULE_SRC)
+libosmo_asn1_ranap_la_LIBADD=$(ASN1C_LDADD)
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+ ASN1C_PREFIX="RANAP_" asn1c -gen-PER $(top_srcdir)/asn1/ranap/RANAP-CommonDataTypes.asn $(top_srcdir)/asn1/ranap/RANAP-Constants.asn $(top_srcdir)/asn1/ranap/RANAP-IEs.asn $(top_srcdir)/asn1/ranap/RANAP-PDU.asn
+ @rm ANY.* BOOLEAN.* INTEGER.* NativeEnumerated.* NativeInteger.* NULL.* OBJECT_IDENTIFIER.* asn_* OCTET_STRING.* converter-sample.c per_* xer_* constr* der_* ber_* BIT_STRING.*
+# some fixups in erroneous code that asn1c generates
+ sed -i '6i#include <constr_CHOICE.h>' RANAP_ChosenEncryptionAlgorithm.h RANAP_ChosenIntegrityProtectionAlgorithm.h RANAP_IMSI.h RANAP_PLMNidentity.h RANAP_RAB-ReleaseFailedList.c RANAP_RAB-ReleaseList.c RANAP_RAB-SetupOrModifyList.c RANAP_ResetResourceList.c RANAP_ResetResourceAckList.c
+ sed -i 's/Member/MemberA/' RANAP_LA-LIST.[ch]
+ sed -i 's/Member/MemberB/' RANAP_RABParametersList.[ch]
+ sed -i 's/Member/MemberC/' RANAP_AuthorisedPLMNs.[ch]
+ sed -i 's/Member/MemberD/' RANAP_UnsuccessfulLinking-IEs.[ch]
+ sed -i 's/Member/MemberE/' RANAP_SDU-FormatInformationParameters.[ch]
+ sed -i 's/Member/MemberF/' RANAP_JoinedMBMSBearerService-IEs.[ch]
+ sed -i 's/Member/MemberG/' RANAP_CriticalityDiagnostics-IE-List.[ch]
+ sed -i 's/Member/MemberH/' RANAP_DataVolumeList.[ch]
+ sed -i 's/Member/MemberJ/' RANAP_EUTRANFrequencies.[ch]
+ sed -i 's/Member/MemberK/' RANAP_LeftMBMSBearerService-IEs.[ch]
+ sed -i 's/Member/MemberL/' RANAP_MessageStructure.[ch]
+ sed -i 's/Member/MemberM/' RANAP_PLMNs-in-shared-network.[ch]
+ sed -i 's/Member/MemberN/' RANAP_RABDataVolumeReport.[ch]
+# change include style to `#include <dir/foo.h>'
+ $(top_srcdir)/move-asn1-header-files.sh osmocom/ranap $(ASN_MODULE_INC)
+
diff --git a/src/ranap/RANAP_APN.c b/src/ranap/RANAP_APN.c
new file mode 100644
index 0000000..d2024aa
--- /dev/null
+++ b/src/ranap/RANAP_APN.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_APN.h>
+
+int
+RANAP_APN_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_APN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_APN_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_APN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_APN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_APN_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_APN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_APN_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_APN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_APN_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_APN_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_APN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_APN_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_APN_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 255l } /* (SIZE(1..255)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_APN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_APN = {
+ "RANAP_APN",
+ "RANAP_APN",
+ RANAP_APN_free,
+ RANAP_APN_print,
+ RANAP_APN_constraint,
+ RANAP_APN_decode_ber,
+ RANAP_APN_encode_der,
+ RANAP_APN_decode_xer,
+ RANAP_APN_encode_xer,
+ RANAP_APN_decode_uper,
+ RANAP_APN_encode_uper,
+ RANAP_APN_decode_aper,
+ RANAP_APN_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_APN_tags_1,
+ sizeof(asn_DEF_RANAP_APN_tags_1)
+ /sizeof(asn_DEF_RANAP_APN_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_APN_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_APN_tags_1)
+ /sizeof(asn_DEF_RANAP_APN_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_APN_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_AccuracyFulfilmentIndicator.c b/src/ranap/RANAP_AccuracyFulfilmentIndicator.c
new file mode 100644
index 0000000..d444558
--- /dev/null
+++ b/src/ranap/RANAP_AccuracyFulfilmentIndicator.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AccuracyFulfilmentIndicator.h>
+
+int
+RANAP_AccuracyFulfilmentIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_AccuracyFulfilmentIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_AccuracyFulfilmentIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AccuracyFulfilmentIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_AccuracyFulfilmentIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AccuracyFulfilmentIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_AccuracyFulfilmentIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AccuracyFulfilmentIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_AccuracyFulfilmentIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_AccuracyFulfilmentIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_AccuracyFulfilmentIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_AccuracyFulfilmentIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_AccuracyFulfilmentIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_AccuracyFulfilmentIndicator_value2enum_1[] = {
+ { 0, 28, "requested-Accuracy-Fulfilled" },
+ { 1, 32, "requested-Accuracy-Not-Fulfilled" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_AccuracyFulfilmentIndicator_enum2value_1[] = {
+ 0, /* requested-Accuracy-Fulfilled(0) */
+ 1 /* requested-Accuracy-Not-Fulfilled(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_AccuracyFulfilmentIndicator_specs_1 = {
+ asn_MAP_RANAP_AccuracyFulfilmentIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_AccuracyFulfilmentIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AccuracyFulfilmentIndicator = {
+ "RANAP_AccuracyFulfilmentIndicator",
+ "RANAP_AccuracyFulfilmentIndicator",
+ RANAP_AccuracyFulfilmentIndicator_free,
+ RANAP_AccuracyFulfilmentIndicator_print,
+ RANAP_AccuracyFulfilmentIndicator_constraint,
+ RANAP_AccuracyFulfilmentIndicator_decode_ber,
+ RANAP_AccuracyFulfilmentIndicator_encode_der,
+ RANAP_AccuracyFulfilmentIndicator_decode_xer,
+ RANAP_AccuracyFulfilmentIndicator_encode_xer,
+ RANAP_AccuracyFulfilmentIndicator_decode_uper,
+ RANAP_AccuracyFulfilmentIndicator_encode_uper,
+ RANAP_AccuracyFulfilmentIndicator_decode_aper,
+ RANAP_AccuracyFulfilmentIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_AccuracyFulfilmentIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_AccuracyFulfilmentIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_AccuracyFulfilmentIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_AllocationOrRetentionPriority.c b/src/ranap/RANAP_AllocationOrRetentionPriority.c
new file mode 100644
index 0000000..2997cd0
--- /dev/null
+++ b/src/ranap/RANAP_AllocationOrRetentionPriority.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AllocationOrRetentionPriority.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_AllocationOrRetentionPriority_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AllocationOrRetentionPriority, priorityLevel),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PriorityLevel,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "priorityLevel"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AllocationOrRetentionPriority, pre_emptionCapability),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Pre_emptionCapability,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pre-emptionCapability"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AllocationOrRetentionPriority, pre_emptionVulnerability),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Pre_emptionVulnerability,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pre-emptionVulnerability"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AllocationOrRetentionPriority, queuingAllowed),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_QueuingAllowed,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "queuingAllowed"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_AllocationOrRetentionPriority, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_AllocationOrRetentionPriority_oms_1[] = { 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_AllocationOrRetentionPriority_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* priorityLevel */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pre-emptionCapability */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pre-emptionVulnerability */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* queuingAllowed */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_AllocationOrRetentionPriority_specs_1 = {
+ sizeof(struct RANAP_AllocationOrRetentionPriority),
+ offsetof(struct RANAP_AllocationOrRetentionPriority, _asn_ctx),
+ asn_MAP_RANAP_AllocationOrRetentionPriority_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_AllocationOrRetentionPriority_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AllocationOrRetentionPriority = {
+ "RANAP_AllocationOrRetentionPriority",
+ "RANAP_AllocationOrRetentionPriority",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1,
+ sizeof(asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_AllocationOrRetentionPriority_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_AllocationOrRetentionPriority_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_AllocationOrRetentionPriority_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.c
new file mode 100644
index 0000000..d04fccf
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf, altExtendedGuaranteedBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altExtendedGuaranteedBitrateType"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf, altExtendedGuaranteedBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altExtendedGuaranteedBitrates"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altExtendedGuaranteedBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altExtendedGuaranteedBitrates */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf",
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.c
new file mode 100644
index 0000000..18b02f6
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedGuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList = {
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.c
new file mode 100644
index 0000000..2e35f50
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates = {
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates",
+ "RANAP_Alt-RAB-Parameter-ExtendedGuaranteedBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedGuaranteedBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.c
new file mode 100644
index 0000000..4bab57d
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf, altExtendedMaxBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altExtendedMaxBitrateType"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf, altExtendedMaxBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altExtendedMaxBitrates"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altExtendedMaxBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altExtendedMaxBitrates */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf",
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.c
new file mode 100644
index 0000000..9eb3a2b
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedMaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList = {
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList",
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.c
new file mode 100644
index 0000000..dccb6c5
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates = {
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates",
+ "RANAP_Alt-RAB-Parameter-ExtendedMaxBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_ExtendedMaxBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.c
new file mode 100644
index 0000000..878b8d0
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf, altGuaranteedBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altGuaranteedBitrateType"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf, altGuaranteedBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altGuaranteedBitrates"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altGuaranteedBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altGuaranteedBitrates */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf",
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.c b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.c
new file mode 100644
index 0000000..9e717cc
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_GuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateList),
+ offsetof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList = {
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateList",
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.c b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.c
new file mode 100644
index 0000000..6d56142
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrateType.h>
+
+int
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_value2enum_1[] = {
+ { 0, 11, "unspecified" },
+ { 1, 11, "value-range" },
+ { 2, 15, "discrete-values" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_enum2value_1[] = {
+ 2, /* discrete-values(2) */
+ 0, /* unspecified(0) */
+ 1 /* value-range(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_specs_1 = {
+ asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType = {
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateType",
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrateType",
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_free,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_print,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_constraint,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_ber,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_der,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_xer,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_xer,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_uper,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_uper,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_decode_aper,
+ RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.c
new file mode 100644
index 0000000..6fa5614
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-GuaranteedBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_GuaranteedBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates = {
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrates",
+ "RANAP_Alt-RAB-Parameter-GuaranteedBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_GuaranteedBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.c
new file mode 100644
index 0000000..bc5633e
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_MaxBitrateInf, altMaxBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altMaxBitrateType"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_MaxBitrateInf, altMaxBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altMaxBitrates"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateInf_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altMaxBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altMaxBitrates */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_MaxBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_MaxBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateInf_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-MaxBitrateInf",
+ "RANAP_Alt-RAB-Parameter-MaxBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrateInf_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.c b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.c
new file mode 100644
index 0000000..3e2271b
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_MaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_MaxBitrateList),
+ offsetof(struct RANAP_Alt_RAB_Parameter_MaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList = {
+ "RANAP_Alt-RAB-Parameter-MaxBitrateList",
+ "RANAP_Alt-RAB-Parameter-MaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrateList_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.c b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.c
new file mode 100644
index 0000000..6899fe4
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrateType.h>
+
+int
+RANAP_Alt_RAB_Parameter_MaxBitrateType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Alt_RAB_Parameter_MaxBitrateType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Alt_RAB_Parameter_MaxBitrateType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrateType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateType_value2enum_1[] = {
+ { 0, 11, "unspecified" },
+ { 1, 11, "value-range" },
+ { 2, 15, "discrete-values" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateType_enum2value_1[] = {
+ 2, /* discrete-values(2) */
+ 0, /* unspecified(0) */
+ 1 /* value-range(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateType_specs_1 = {
+ asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Alt_RAB_Parameter_MaxBitrateType_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType = {
+ "RANAP_Alt-RAB-Parameter-MaxBitrateType",
+ "RANAP_Alt-RAB-Parameter-MaxBitrateType",
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_free,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_print,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_constraint,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_ber,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_der,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_xer,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_xer,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_uper,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_uper,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_decode_aper,
+ RANAP_Alt_RAB_Parameter_MaxBitrateType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrateType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrateType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.c
new file mode 100644
index 0000000..31bcbcd
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-MaxBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_MaxBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_MaxBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates = {
+ "RANAP_Alt-RAB-Parameter-MaxBitrates",
+ "RANAP_Alt-RAB-Parameter-MaxBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_MaxBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_MaxBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_MaxBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.c
new file mode 100644
index 0000000..c70e610
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf, altSupportedGuaranteedBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altSupportedGuaranteedBitrateType"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf, altSupportedGuaranteedBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altSupportedGuaranteedBitrates"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altSupportedGuaranteedBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altSupportedGuaranteedBitrates */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf",
+ "RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.c
new file mode 100644
index 0000000..6baa771
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SupportedRAB_ParameterBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates = {
+ "RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates",
+ "RANAP_Alt-RAB-Parameter-SupportedGuaranteedBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_SupportedGuaranteedBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.c b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.c
new file mode 100644
index 0000000..6a5ad4d
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf, altSupportedMaxBitrateType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altSupportedMaxBitrateType"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf, altSupportedMaxBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altSupportedMaxBitrates"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altSupportedMaxBitrateType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altSupportedMaxBitrates */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf),
+ offsetof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf = {
+ "RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf",
+ "RANAP_Alt-RAB-Parameter-SupportedMaxBitrateInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_SupportedMaxBitrateInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.c b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.c
new file mode 100644
index 0000000..1a9bb37
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameter-SupportedMaxBitrates.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SupportedRAB_ParameterBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrates),
+ offsetof(struct RANAP_Alt_RAB_Parameter_SupportedMaxBitrates, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates = {
+ "RANAP_Alt-RAB-Parameter-SupportedMaxBitrates",
+ "RANAP_Alt-RAB-Parameter-SupportedMaxBitrates",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_constr_1,
+ asn_MBR_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Alt_RAB_Parameter_SupportedMaxBitrates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Alt-RAB-Parameters.c b/src/ranap/RANAP_Alt-RAB-Parameters.c
new file mode 100644
index 0000000..f6da356
--- /dev/null
+++ b/src/ranap/RANAP_Alt-RAB-Parameters.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Alt-RAB-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Alt_RAB_Parameters_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_Alt_RAB_Parameters, altMaxBitrateInf),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_MaxBitrateInf,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altMaxBitrateInf"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_Alt_RAB_Parameters, altGuaranteedBitRateInf),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameter_GuaranteedBitrateInf,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altGuaranteedBitRateInf"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Alt_RAB_Parameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Alt_RAB_Parameters_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Alt_RAB_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Alt_RAB_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altMaxBitrateInf */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altGuaranteedBitRateInf */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Alt_RAB_Parameters_specs_1 = {
+ sizeof(struct RANAP_Alt_RAB_Parameters),
+ offsetof(struct RANAP_Alt_RAB_Parameters, _asn_ctx),
+ asn_MAP_RANAP_Alt_RAB_Parameters_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Alt_RAB_Parameters_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Alt_RAB_Parameters = {
+ "RANAP_Alt-RAB-Parameters",
+ "RANAP_Alt-RAB-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Alt_RAB_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Alt_RAB_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Alt_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Alt_RAB_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Alt_RAB_Parameters_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Alt_RAB_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_AlternativeRABConfigurationRequest.c b/src/ranap/RANAP_AlternativeRABConfigurationRequest.c
new file mode 100644
index 0000000..238d6e1
--- /dev/null
+++ b/src/ranap/RANAP_AlternativeRABConfigurationRequest.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AlternativeRABConfigurationRequest.h>
+
+int
+RANAP_AlternativeRABConfigurationRequest_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_AlternativeRABConfigurationRequest_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_AlternativeRABConfigurationRequest_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AlternativeRABConfigurationRequest_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_AlternativeRABConfigurationRequest_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AlternativeRABConfigurationRequest_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_AlternativeRABConfigurationRequest_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_AlternativeRABConfigurationRequest_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_AlternativeRABConfigurationRequest_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_AlternativeRABConfigurationRequest_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_AlternativeRABConfigurationRequest_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_AlternativeRABConfigurationRequest_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_AlternativeRABConfigurationRequest_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_AlternativeRABConfigurationRequest_value2enum_1[] = {
+ { 0, 39, "alternative-RAB-configuration-Requested" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_AlternativeRABConfigurationRequest_enum2value_1[] = {
+ 0 /* alternative-RAB-configuration-Requested(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_AlternativeRABConfigurationRequest_specs_1 = {
+ asn_MAP_RANAP_AlternativeRABConfigurationRequest_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_AlternativeRABConfigurationRequest_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AlternativeRABConfigurationRequest = {
+ "RANAP_AlternativeRABConfigurationRequest",
+ "RANAP_AlternativeRABConfigurationRequest",
+ RANAP_AlternativeRABConfigurationRequest_free,
+ RANAP_AlternativeRABConfigurationRequest_print,
+ RANAP_AlternativeRABConfigurationRequest_constraint,
+ RANAP_AlternativeRABConfigurationRequest_decode_ber,
+ RANAP_AlternativeRABConfigurationRequest_encode_der,
+ RANAP_AlternativeRABConfigurationRequest_decode_xer,
+ RANAP_AlternativeRABConfigurationRequest_encode_xer,
+ RANAP_AlternativeRABConfigurationRequest_decode_uper,
+ RANAP_AlternativeRABConfigurationRequest_encode_uper,
+ RANAP_AlternativeRABConfigurationRequest_decode_aper,
+ RANAP_AlternativeRABConfigurationRequest_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1,
+ sizeof(asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_AlternativeRABConfigurationRequest_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_AlternativeRABConfigurationRequest_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_AlternativeRABConfigurationRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_AreaIdentity.c b/src/ranap/RANAP_AreaIdentity.c
new file mode 100644
index 0000000..c774c21
--- /dev/null
+++ b/src/ranap/RANAP_AreaIdentity.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AreaIdentity.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_AreaIdentity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_AreaIdentity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AreaIdentity, choice.sAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_AreaIdentity, choice.geographicalArea),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalArea,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalArea"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_AreaIdentity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* geographicalArea */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_AreaIdentity_specs_1 = {
+ sizeof(struct RANAP_AreaIdentity),
+ offsetof(struct RANAP_AreaIdentity, _asn_ctx),
+ offsetof(struct RANAP_AreaIdentity, present),
+ sizeof(((struct RANAP_AreaIdentity *)0)->present),
+ asn_MAP_RANAP_AreaIdentity_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AreaIdentity = {
+ "RANAP_AreaIdentity",
+ "RANAP_AreaIdentity",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_AreaIdentity_constr_1,
+ asn_MBR_RANAP_AreaIdentity_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_AreaIdentity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.c b/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.c
new file mode 100644
index 0000000..3c97828
--- /dev/null
+++ b/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedGuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList),
+ offsetof(struct RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList = {
+ "RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ "RANAP_Ass-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Ass_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.c b/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.c
new file mode 100644
index 0000000..80d0ed8
--- /dev/null
+++ b/src/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedMaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList),
+ offsetof(struct RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList = {
+ "RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList",
+ "RANAP_Ass-RAB-Parameter-ExtendedMaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_constr_1,
+ asn_MBR_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Ass_RAB_Parameter_ExtendedMaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.c b/src/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.c
new file mode 100644
index 0000000..0797012
--- /dev/null
+++ b/src/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-GuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_GuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Ass_RAB_Parameter_GuaranteedBitrateList),
+ offsetof(struct RANAP_Ass_RAB_Parameter_GuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList = {
+ "RANAP_Ass-RAB-Parameter-GuaranteedBitrateList",
+ "RANAP_Ass-RAB-Parameter-GuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.c b/src/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.c
new file mode 100644
index 0000000..e1f9f92
--- /dev/null
+++ b/src/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameter-MaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Ass_RAB_Parameter_MaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Ass_RAB_Parameter_MaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_MaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Ass_RAB_Parameter_MaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Ass_RAB_Parameter_MaxBitrateList),
+ offsetof(struct RANAP_Ass_RAB_Parameter_MaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList = {
+ "RANAP_Ass-RAB-Parameter-MaxBitrateList",
+ "RANAP_Ass-RAB-Parameter-MaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Ass_RAB_Parameter_MaxBitrateList_constr_1,
+ asn_MBR_RANAP_Ass_RAB_Parameter_MaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Ass_RAB_Parameter_MaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Ass-RAB-Parameters.c b/src/ranap/RANAP_Ass-RAB-Parameters.c
new file mode 100644
index 0000000..18018ff
--- /dev/null
+++ b/src/ranap/RANAP_Ass-RAB-Parameters.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Ass-RAB-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Ass_RAB_Parameters_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_Ass_RAB_Parameters, assMaxBitrateInf),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Ass_RAB_Parameter_MaxBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "assMaxBitrateInf"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_Ass_RAB_Parameters, assGuaranteedBitRateInf),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Ass_RAB_Parameter_GuaranteedBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "assGuaranteedBitRateInf"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Ass_RAB_Parameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Ass_RAB_Parameters_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Ass_RAB_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Ass_RAB_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* assMaxBitrateInf */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* assGuaranteedBitRateInf */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Ass_RAB_Parameters_specs_1 = {
+ sizeof(struct RANAP_Ass_RAB_Parameters),
+ offsetof(struct RANAP_Ass_RAB_Parameters, _asn_ctx),
+ asn_MAP_RANAP_Ass_RAB_Parameters_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Ass_RAB_Parameters_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Ass_RAB_Parameters = {
+ "RANAP_Ass-RAB-Parameters",
+ "RANAP_Ass-RAB-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Ass_RAB_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Ass_RAB_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Ass_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Ass_RAB_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Ass_RAB_Parameters_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Ass_RAB_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_AuthorisedPLMNs.c b/src/ranap/RANAP_AuthorisedPLMNs.c
new file mode 100644
index 0000000..b25c22e
--- /dev/null
+++ b/src/ranap/RANAP_AuthorisedPLMNs.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AuthorisedPLMNs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_AuthorisedPLMNs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberC_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberC, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberC, authorisedSNAsList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_AuthorisedSNAs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "authorisedSNAsList"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberC, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberC_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MemberC_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberC_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* authorisedSNAsList */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberC_specs_2 = {
+ sizeof(struct MemberC),
+ offsetof(struct MemberC, _asn_ctx),
+ asn_MAP_MemberC_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberC_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberC_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberC_tags_2,
+ sizeof(asn_DEF_MemberC_tags_2)
+ /sizeof(asn_DEF_MemberC_tags_2[0]), /* 1 */
+ asn_DEF_MemberC_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberC_tags_2)
+ /sizeof(asn_DEF_MemberC_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberC_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberC_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_AuthorisedPLMNs_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberC_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_AuthorisedPLMNs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_AuthorisedPLMNs_specs_1 = {
+ sizeof(struct RANAP_AuthorisedPLMNs),
+ offsetof(struct RANAP_AuthorisedPLMNs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AuthorisedPLMNs = {
+ "RANAP_AuthorisedPLMNs",
+ "RANAP_AuthorisedPLMNs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_AuthorisedPLMNs_tags_1,
+ sizeof(asn_DEF_RANAP_AuthorisedPLMNs_tags_1)
+ /sizeof(asn_DEF_RANAP_AuthorisedPLMNs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_AuthorisedPLMNs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_AuthorisedPLMNs_tags_1)
+ /sizeof(asn_DEF_RANAP_AuthorisedPLMNs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_AuthorisedPLMNs_constr_1,
+ asn_MBR_RANAP_AuthorisedPLMNs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_AuthorisedPLMNs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_AuthorisedSNAs.c b/src/ranap/RANAP_AuthorisedSNAs.c
new file mode 100644
index 0000000..9514dc3
--- /dev/null
+++ b/src/ranap/RANAP_AuthorisedSNAs.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_AuthorisedSNAs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_AuthorisedSNAs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_AuthorisedSNAs_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SNAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_AuthorisedSNAs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_AuthorisedSNAs_specs_1 = {
+ sizeof(struct RANAP_AuthorisedSNAs),
+ offsetof(struct RANAP_AuthorisedSNAs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_AuthorisedSNAs = {
+ "RANAP_AuthorisedSNAs",
+ "RANAP_AuthorisedSNAs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_AuthorisedSNAs_tags_1,
+ sizeof(asn_DEF_RANAP_AuthorisedSNAs_tags_1)
+ /sizeof(asn_DEF_RANAP_AuthorisedSNAs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_AuthorisedSNAs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_AuthorisedSNAs_tags_1)
+ /sizeof(asn_DEF_RANAP_AuthorisedSNAs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_AuthorisedSNAs_constr_1,
+ asn_MBR_RANAP_AuthorisedSNAs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_AuthorisedSNAs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_BindingID.c b/src/ranap/RANAP_BindingID.c
new file mode 100644
index 0000000..d79da49
--- /dev/null
+++ b/src/ranap/RANAP_BindingID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_BindingID.h>
+
+int
+RANAP_BindingID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_BindingID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_BindingID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_BindingID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_BindingID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_BindingID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_BindingID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_BindingID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_BindingID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_BindingID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_BindingID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_BindingID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_BindingID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_BindingID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_BindingID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_BindingID = {
+ "RANAP_BindingID",
+ "RANAP_BindingID",
+ RANAP_BindingID_free,
+ RANAP_BindingID_print,
+ RANAP_BindingID_constraint,
+ RANAP_BindingID_decode_ber,
+ RANAP_BindingID_encode_der,
+ RANAP_BindingID_decode_xer,
+ RANAP_BindingID_encode_xer,
+ RANAP_BindingID_decode_uper,
+ RANAP_BindingID_encode_uper,
+ RANAP_BindingID_decode_aper,
+ RANAP_BindingID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_BindingID_tags_1,
+ sizeof(asn_DEF_RANAP_BindingID_tags_1)
+ /sizeof(asn_DEF_RANAP_BindingID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_BindingID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_BindingID_tags_1)
+ /sizeof(asn_DEF_RANAP_BindingID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_BindingID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.c b/src/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.c
new file mode 100644
index 0000000..e16fdbb
--- /dev/null
+++ b/src/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.c
@@ -0,0 +1,189 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_BroadcastAssistanceDataDecipheringKeys.h>
+
+static int
+memb_cipheringKeyFlag_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_currentDecipheringKey_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 56l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_nextDecipheringKey_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 56l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_cipheringKeyFlag_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_currentDecipheringKey_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 56l, 56l } /* (SIZE(56..56)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_nextDecipheringKey_constr_4 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 56l, 56l } /* (SIZE(56..56)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_BroadcastAssistanceDataDecipheringKeys_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_BroadcastAssistanceDataDecipheringKeys, cipheringKeyFlag),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_cipheringKeyFlag_constraint_1,
+ &asn_PER_memb_cipheringKeyFlag_constr_2,
+ 0,
+ "cipheringKeyFlag"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_BroadcastAssistanceDataDecipheringKeys, currentDecipheringKey),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_currentDecipheringKey_constraint_1,
+ &asn_PER_memb_currentDecipheringKey_constr_3,
+ 0,
+ "currentDecipheringKey"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_BroadcastAssistanceDataDecipheringKeys, nextDecipheringKey),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_nextDecipheringKey_constraint_1,
+ &asn_PER_memb_nextDecipheringKey_constr_4,
+ 0,
+ "nextDecipheringKey"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_BroadcastAssistanceDataDecipheringKeys_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cipheringKeyFlag */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* currentDecipheringKey */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nextDecipheringKey */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_BroadcastAssistanceDataDecipheringKeys_specs_1 = {
+ sizeof(struct RANAP_BroadcastAssistanceDataDecipheringKeys),
+ offsetof(struct RANAP_BroadcastAssistanceDataDecipheringKeys, _asn_ctx),
+ asn_MAP_RANAP_BroadcastAssistanceDataDecipheringKeys_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys = {
+ "RANAP_BroadcastAssistanceDataDecipheringKeys",
+ "RANAP_BroadcastAssistanceDataDecipheringKeys",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1,
+ sizeof(asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1)
+ /sizeof(asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1)
+ /sizeof(asn_DEF_RANAP_BroadcastAssistanceDataDecipheringKeys_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_BroadcastAssistanceDataDecipheringKeys_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_BroadcastAssistanceDataDecipheringKeys_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CGI.c b/src/ranap/RANAP_CGI.c
new file mode 100644
index 0000000..2d08bce
--- /dev/null
+++ b/src/ranap/RANAP_CGI.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CGI.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CGI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CGI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CGI, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CGI, cI),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CGI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CGI_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CGI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CGI_specs_1 = {
+ sizeof(struct RANAP_CGI),
+ offsetof(struct RANAP_CGI, _asn_ctx),
+ asn_MAP_RANAP_CGI_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_CGI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CGI = {
+ "RANAP_CGI",
+ "RANAP_CGI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CGI_tags_1,
+ sizeof(asn_DEF_RANAP_CGI_tags_1)
+ /sizeof(asn_DEF_RANAP_CGI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CGI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CGI_tags_1)
+ /sizeof(asn_DEF_RANAP_CGI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CGI_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_CGI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CI.c b/src/ranap/RANAP_CI.c
new file mode 100644
index 0000000..ed83b75
--- /dev/null
+++ b/src/ranap/RANAP_CI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CI.h>
+
+int
+RANAP_CI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_CI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CI = {
+ "RANAP_CI",
+ "RANAP_CI",
+ RANAP_CI_free,
+ RANAP_CI_print,
+ RANAP_CI_constraint,
+ RANAP_CI_decode_ber,
+ RANAP_CI_encode_der,
+ RANAP_CI_decode_xer,
+ RANAP_CI_encode_xer,
+ RANAP_CI_decode_uper,
+ RANAP_CI_encode_uper,
+ RANAP_CI_decode_aper,
+ RANAP_CI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CI_tags_1,
+ sizeof(asn_DEF_RANAP_CI_tags_1)
+ /sizeof(asn_DEF_RANAP_CI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CI_tags_1)
+ /sizeof(asn_DEF_RANAP_CI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CN-DeactivateTrace.c b/src/ranap/RANAP_CN-DeactivateTrace.c
new file mode 100644
index 0000000..ba7fb6f
--- /dev/null
+++ b/src/ranap/RANAP_CN-DeactivateTrace.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CN-DeactivateTrace.h>
+
+static int
+memb_cN_DeactivateTrace_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_cN_DeactivateTrace_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_cN_DeactivateTrace_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cN_DeactivateTrace_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_cN_DeactivateTrace_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cN_DeactivateTrace_ies_specs_2 = {
+ sizeof(struct cN_DeactivateTrace_ies),
+ offsetof(struct cN_DeactivateTrace_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cN_DeactivateTrace_ies_2 = {
+ "cN-DeactivateTrace-ies",
+ "cN-DeactivateTrace-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_cN_DeactivateTrace_ies_tags_2,
+ sizeof(asn_DEF_cN_DeactivateTrace_ies_tags_2)
+ /sizeof(asn_DEF_cN_DeactivateTrace_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_cN_DeactivateTrace_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_cN_DeactivateTrace_ies_tags_2)
+ /sizeof(asn_DEF_cN_DeactivateTrace_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_cN_DeactivateTrace_ies_constr_2,
+ asn_MBR_cN_DeactivateTrace_ies_2,
+ 1, /* Single element */
+ &asn_SPC_cN_DeactivateTrace_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_CN_DeactivateTrace_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CN_DeactivateTrace, cN_DeactivateTrace_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_cN_DeactivateTrace_ies_2,
+ memb_cN_DeactivateTrace_ies_constraint_1,
+ &asn_PER_memb_cN_DeactivateTrace_ies_constr_2,
+ 0,
+ "cN-DeactivateTrace-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CN_DeactivateTrace_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CN_DeactivateTrace_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cN-DeactivateTrace-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CN_DeactivateTrace_specs_1 = {
+ sizeof(struct RANAP_CN_DeactivateTrace),
+ offsetof(struct RANAP_CN_DeactivateTrace, _asn_ctx),
+ asn_MAP_RANAP_CN_DeactivateTrace_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CN_DeactivateTrace = {
+ "RANAP_CN-DeactivateTrace",
+ "RANAP_CN-DeactivateTrace",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CN_DeactivateTrace_tags_1,
+ sizeof(asn_DEF_RANAP_CN_DeactivateTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_DeactivateTrace_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CN_DeactivateTrace_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CN_DeactivateTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_DeactivateTrace_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CN_DeactivateTrace_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_CN_DeactivateTrace_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CN-DomainIndicator.c b/src/ranap/RANAP_CN-DomainIndicator.c
new file mode 100644
index 0000000..b5b9d10
--- /dev/null
+++ b/src/ranap/RANAP_CN-DomainIndicator.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
+
+int
+RANAP_CN_DomainIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_CN_DomainIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CN_DomainIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_DomainIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CN_DomainIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_DomainIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CN_DomainIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_DomainIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CN_DomainIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CN_DomainIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CN_DomainIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CN_DomainIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_CN_DomainIndicator_value2enum_1[] = {
+ { 0, 9, "cs-domain" },
+ { 1, 9, "ps-domain" }
+};
+static const unsigned int asn_MAP_RANAP_CN_DomainIndicator_enum2value_1[] = {
+ 0, /* cs-domain(0) */
+ 1 /* ps-domain(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_CN_DomainIndicator_specs_1 = {
+ asn_MAP_RANAP_CN_DomainIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_CN_DomainIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CN_DomainIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CN_DomainIndicator = {
+ "RANAP_CN-DomainIndicator",
+ "RANAP_CN-DomainIndicator",
+ RANAP_CN_DomainIndicator_free,
+ RANAP_CN_DomainIndicator_print,
+ RANAP_CN_DomainIndicator_constraint,
+ RANAP_CN_DomainIndicator_decode_ber,
+ RANAP_CN_DomainIndicator_encode_der,
+ RANAP_CN_DomainIndicator_decode_xer,
+ RANAP_CN_DomainIndicator_encode_xer,
+ RANAP_CN_DomainIndicator_decode_uper,
+ RANAP_CN_DomainIndicator_encode_uper,
+ RANAP_CN_DomainIndicator_decode_aper,
+ RANAP_CN_DomainIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CN_DomainIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_DomainIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CN_DomainIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_DomainIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CN_DomainIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_CN_DomainIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CN-ID.c b/src/ranap/RANAP_CN-ID.c
new file mode 100644
index 0000000..f181580
--- /dev/null
+++ b/src/ranap/RANAP_CN-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CN-ID.h>
+
+int
+RANAP_CN_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 4095l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CN_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CN_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CN_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CN_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CN_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CN_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CN_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CN_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CN_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CN_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CN_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (0..4095) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CN_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CN_ID = {
+ "RANAP_CN-ID",
+ "RANAP_CN-ID",
+ RANAP_CN_ID_free,
+ RANAP_CN_ID_print,
+ RANAP_CN_ID_constraint,
+ RANAP_CN_ID_decode_ber,
+ RANAP_CN_ID_encode_der,
+ RANAP_CN_ID_decode_xer,
+ RANAP_CN_ID_encode_xer,
+ RANAP_CN_ID_decode_uper,
+ RANAP_CN_ID_encode_uper,
+ RANAP_CN_ID_decode_aper,
+ RANAP_CN_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CN_ID_tags_1,
+ sizeof(asn_DEF_RANAP_CN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CN_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CN_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CN-InvokeTrace.c b/src/ranap/RANAP_CN-InvokeTrace.c
new file mode 100644
index 0000000..4e50b42
--- /dev/null
+++ b/src/ranap/RANAP_CN-InvokeTrace.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CN-InvokeTrace.h>
+
+static int
+memb_cN_InvokeTrace_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_cN_InvokeTrace_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_cN_InvokeTrace_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cN_InvokeTrace_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_cN_InvokeTrace_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cN_InvokeTrace_ies_specs_2 = {
+ sizeof(struct cN_InvokeTrace_ies),
+ offsetof(struct cN_InvokeTrace_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cN_InvokeTrace_ies_2 = {
+ "cN-InvokeTrace-ies",
+ "cN-InvokeTrace-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_cN_InvokeTrace_ies_tags_2,
+ sizeof(asn_DEF_cN_InvokeTrace_ies_tags_2)
+ /sizeof(asn_DEF_cN_InvokeTrace_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_cN_InvokeTrace_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_cN_InvokeTrace_ies_tags_2)
+ /sizeof(asn_DEF_cN_InvokeTrace_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_cN_InvokeTrace_ies_constr_2,
+ asn_MBR_cN_InvokeTrace_ies_2,
+ 1, /* Single element */
+ &asn_SPC_cN_InvokeTrace_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_CN_InvokeTrace_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CN_InvokeTrace, cN_InvokeTrace_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_cN_InvokeTrace_ies_2,
+ memb_cN_InvokeTrace_ies_constraint_1,
+ &asn_PER_memb_cN_InvokeTrace_ies_constr_2,
+ 0,
+ "cN-InvokeTrace-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CN_InvokeTrace_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CN_InvokeTrace_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cN-InvokeTrace-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CN_InvokeTrace_specs_1 = {
+ sizeof(struct RANAP_CN_InvokeTrace),
+ offsetof(struct RANAP_CN_InvokeTrace, _asn_ctx),
+ asn_MAP_RANAP_CN_InvokeTrace_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CN_InvokeTrace = {
+ "RANAP_CN-InvokeTrace",
+ "RANAP_CN-InvokeTrace",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CN_InvokeTrace_tags_1,
+ sizeof(asn_DEF_RANAP_CN_InvokeTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_InvokeTrace_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CN_InvokeTrace_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CN_InvokeTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_CN_InvokeTrace_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CN_InvokeTrace_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_CN_InvokeTrace_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CNMBMSLinkingInformation.c b/src/ranap/RANAP_CNMBMSLinkingInformation.c
new file mode 100644
index 0000000..3e724fe
--- /dev/null
+++ b/src/ranap/RANAP_CNMBMSLinkingInformation.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CNMBMSLinkingInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CNMBMSLinkingInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CNMBMSLinkingInformation, joinedMBMSBearerService_IEs),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_JoinedMBMSBearerService_IEs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "joinedMBMSBearerService-IEs"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CNMBMSLinkingInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CNMBMSLinkingInformation_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CNMBMSLinkingInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* joinedMBMSBearerService-IEs */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CNMBMSLinkingInformation_specs_1 = {
+ sizeof(struct RANAP_CNMBMSLinkingInformation),
+ offsetof(struct RANAP_CNMBMSLinkingInformation, _asn_ctx),
+ asn_MAP_RANAP_CNMBMSLinkingInformation_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_CNMBMSLinkingInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CNMBMSLinkingInformation = {
+ "RANAP_CNMBMSLinkingInformation",
+ "RANAP_CNMBMSLinkingInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1,
+ sizeof(asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_CNMBMSLinkingInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CNMBMSLinkingInformation_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_CNMBMSLinkingInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CSFB-Information.c b/src/ranap/RANAP_CSFB-Information.c
new file mode 100644
index 0000000..434b1ad
--- /dev/null
+++ b/src/ranap/RANAP_CSFB-Information.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CSFB-Information.h>
+
+int
+RANAP_CSFB_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CSFB_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_CSFB_Information_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CSFB_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSFB_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CSFB_Information_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSFB_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CSFB_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSFB_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CSFB_Information_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CSFB_Information_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CSFB_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSFB_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CSFB_Information_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_CSFB_Information_value2enum_1[] = {
+ { 0, 4, "csfb" },
+ { 1, 18, "csfb-high-priority" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_CSFB_Information_enum2value_1[] = {
+ 0, /* csfb(0) */
+ 1 /* csfb-high-priority(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_CSFB_Information_specs_1 = {
+ asn_MAP_RANAP_CSFB_Information_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_CSFB_Information_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CSFB_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CSFB_Information = {
+ "RANAP_CSFB-Information",
+ "RANAP_CSFB-Information",
+ RANAP_CSFB_Information_free,
+ RANAP_CSFB_Information_print,
+ RANAP_CSFB_Information_constraint,
+ RANAP_CSFB_Information_decode_ber,
+ RANAP_CSFB_Information_encode_der,
+ RANAP_CSFB_Information_decode_xer,
+ RANAP_CSFB_Information_encode_xer,
+ RANAP_CSFB_Information_decode_uper,
+ RANAP_CSFB_Information_encode_uper,
+ RANAP_CSFB_Information_decode_aper,
+ RANAP_CSFB_Information_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CSFB_Information_tags_1,
+ sizeof(asn_DEF_RANAP_CSFB_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_CSFB_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CSFB_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CSFB_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_CSFB_Information_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CSFB_Information_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_CSFB_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CSG-Id-List.c b/src/ranap/RANAP_CSG-Id-List.c
new file mode 100644
index 0000000..5d58575
--- /dev/null
+++ b/src/ranap/RANAP_CSG-Id-List.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CSG-Id-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_CSG_Id_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_CSG_Id_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_CSG_Id,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CSG_Id_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_CSG_Id_List_specs_1 = {
+ sizeof(struct RANAP_CSG_Id_List),
+ offsetof(struct RANAP_CSG_Id_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Id_List = {
+ "RANAP_CSG-Id-List",
+ "RANAP_CSG-Id-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CSG_Id_List_tags_1,
+ sizeof(asn_DEF_RANAP_CSG_Id_List_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Id_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CSG_Id_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CSG_Id_List_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Id_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CSG_Id_List_constr_1,
+ asn_MBR_RANAP_CSG_Id_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_CSG_Id_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CSG-Id.c b/src/ranap/RANAP_CSG-Id.c
new file mode 100644
index 0000000..0699dc6
--- /dev/null
+++ b/src/ranap/RANAP_CSG-Id.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CSG-Id.h>
+
+int
+RANAP_CSG_Id_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 27l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CSG_Id_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_CSG_Id_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CSG_Id_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Id_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Id_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Id_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Id_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Id_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Id_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Id_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Id_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSG_Id_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CSG_Id_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 27l, 27l } /* (SIZE(27..27)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CSG_Id_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Id = {
+ "RANAP_CSG-Id",
+ "RANAP_CSG-Id",
+ RANAP_CSG_Id_free,
+ RANAP_CSG_Id_print,
+ RANAP_CSG_Id_constraint,
+ RANAP_CSG_Id_decode_ber,
+ RANAP_CSG_Id_encode_der,
+ RANAP_CSG_Id_decode_xer,
+ RANAP_CSG_Id_encode_xer,
+ RANAP_CSG_Id_decode_uper,
+ RANAP_CSG_Id_encode_uper,
+ RANAP_CSG_Id_decode_aper,
+ RANAP_CSG_Id_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CSG_Id_tags_1,
+ sizeof(asn_DEF_RANAP_CSG_Id_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Id_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CSG_Id_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CSG_Id_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Id_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CSG_Id_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CSG-Membership-Status.c b/src/ranap/RANAP_CSG-Membership-Status.c
new file mode 100644
index 0000000..8ddf050
--- /dev/null
+++ b/src/ranap/RANAP_CSG-Membership-Status.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CSG-Membership-Status.h>
+
+int
+RANAP_CSG_Membership_Status_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_CSG_Membership_Status_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CSG_Membership_Status_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Membership_Status_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Membership_Status_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Membership_Status_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Membership_Status_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Membership_Status_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Membership_Status_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CSG_Membership_Status_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CSG_Membership_Status_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CSG_Membership_Status_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CSG_Membership_Status_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_CSG_Membership_Status_value2enum_1[] = {
+ { 0, 6, "member" },
+ { 1, 10, "non-member" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_CSG_Membership_Status_enum2value_1[] = {
+ 0, /* member(0) */
+ 1 /* non-member(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_CSG_Membership_Status_specs_1 = {
+ asn_MAP_RANAP_CSG_Membership_Status_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_CSG_Membership_Status_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CSG_Membership_Status_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CSG_Membership_Status = {
+ "RANAP_CSG-Membership-Status",
+ "RANAP_CSG-Membership-Status",
+ RANAP_CSG_Membership_Status_free,
+ RANAP_CSG_Membership_Status_print,
+ RANAP_CSG_Membership_Status_constraint,
+ RANAP_CSG_Membership_Status_decode_ber,
+ RANAP_CSG_Membership_Status_encode_der,
+ RANAP_CSG_Membership_Status_decode_xer,
+ RANAP_CSG_Membership_Status_encode_xer,
+ RANAP_CSG_Membership_Status_decode_uper,
+ RANAP_CSG_Membership_Status_encode_uper,
+ RANAP_CSG_Membership_Status_decode_aper,
+ RANAP_CSG_Membership_Status_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CSG_Membership_Status_tags_1,
+ sizeof(asn_DEF_RANAP_CSG_Membership_Status_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Membership_Status_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CSG_Membership_Status_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CSG_Membership_Status_tags_1)
+ /sizeof(asn_DEF_RANAP_CSG_Membership_Status_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CSG_Membership_Status_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_CSG_Membership_Status_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Cause.c b/src/ranap/RANAP_Cause.c
new file mode 100644
index 0000000..3e688cc
--- /dev/null
+++ b/src/ranap/RANAP_Cause.c
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Cause.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Cause_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.radioNetwork),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseRadioNetwork,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "radioNetwork"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.transmissionNetwork),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseTransmissionNetwork,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transmissionNetwork"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.nAS),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseNAS,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "nAS"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.protocol),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseProtocol,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "protocol"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.misc),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseMisc,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "misc"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.non_Standard),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseNon_Standard,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "non-Standard"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Cause, choice.radioNetworkExtension),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CauseRadioNetworkExtension,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "radioNetworkExtension"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Cause_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transmissionNetwork */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nAS */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* misc */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* non-Standard */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* radioNetworkExtension */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_Cause_specs_1 = {
+ sizeof(struct RANAP_Cause),
+ offsetof(struct RANAP_Cause, _asn_ctx),
+ offsetof(struct RANAP_Cause, present),
+ sizeof(((struct RANAP_Cause *)0)->present),
+ asn_MAP_RANAP_Cause_tag2el_1,
+ 7, /* Count of tags in the map */
+ 0,
+ 6 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Cause = {
+ "RANAP_Cause",
+ "RANAP_Cause",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_Cause_constr_1,
+ asn_MBR_RANAP_Cause_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_Cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CauseMisc.c b/src/ranap/RANAP_CauseMisc.c
new file mode 100644
index 0000000..262c462
--- /dev/null
+++ b/src/ranap/RANAP_CauseMisc.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseMisc.h>
+
+int
+RANAP_CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 113l && value <= 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseMisc_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseMisc_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseMisc_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseMisc_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseMisc_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 113l, 128l } /* (113..128) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseMisc_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseMisc = {
+ "RANAP_CauseMisc",
+ "RANAP_CauseMisc",
+ RANAP_CauseMisc_free,
+ RANAP_CauseMisc_print,
+ RANAP_CauseMisc_constraint,
+ RANAP_CauseMisc_decode_ber,
+ RANAP_CauseMisc_encode_der,
+ RANAP_CauseMisc_decode_xer,
+ RANAP_CauseMisc_encode_xer,
+ RANAP_CauseMisc_decode_uper,
+ RANAP_CauseMisc_encode_uper,
+ RANAP_CauseMisc_decode_aper,
+ RANAP_CauseMisc_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseMisc_tags_1,
+ sizeof(asn_DEF_RANAP_CauseMisc_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseMisc_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseMisc_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseMisc_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseMisc_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseMisc_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseNAS.c b/src/ranap/RANAP_CauseNAS.c
new file mode 100644
index 0000000..ea6fb82
--- /dev/null
+++ b/src/ranap/RANAP_CauseNAS.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseNAS.h>
+
+int
+RANAP_CauseNAS_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 81l && value <= 96l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseNAS_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseNAS_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseNAS_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNAS_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseNAS_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNAS_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseNAS_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNAS_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseNAS_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseNAS_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseNAS_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseNAS_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseNAS_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 81l, 96l } /* (81..96) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseNAS_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseNAS = {
+ "RANAP_CauseNAS",
+ "RANAP_CauseNAS",
+ RANAP_CauseNAS_free,
+ RANAP_CauseNAS_print,
+ RANAP_CauseNAS_constraint,
+ RANAP_CauseNAS_decode_ber,
+ RANAP_CauseNAS_encode_der,
+ RANAP_CauseNAS_decode_xer,
+ RANAP_CauseNAS_encode_xer,
+ RANAP_CauseNAS_decode_uper,
+ RANAP_CauseNAS_encode_uper,
+ RANAP_CauseNAS_decode_aper,
+ RANAP_CauseNAS_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseNAS_tags_1,
+ sizeof(asn_DEF_RANAP_CauseNAS_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseNAS_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseNAS_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseNAS_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseNAS_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseNAS_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseNon-Standard.c b/src/ranap/RANAP_CauseNon-Standard.c
new file mode 100644
index 0000000..1e75804
--- /dev/null
+++ b/src/ranap/RANAP_CauseNon-Standard.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseNon-Standard.h>
+
+int
+RANAP_CauseNon_Standard_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 129l && value <= 256l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseNon_Standard_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseNon_Standard_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNon_Standard_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseNon_Standard_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNon_Standard_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseNon_Standard_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseNon_Standard_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseNon_Standard_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseNon_Standard_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseNon_Standard_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseNon_Standard_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseNon_Standard_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 129l, 256l } /* (129..256) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseNon_Standard_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseNon_Standard = {
+ "RANAP_CauseNon-Standard",
+ "RANAP_CauseNon-Standard",
+ RANAP_CauseNon_Standard_free,
+ RANAP_CauseNon_Standard_print,
+ RANAP_CauseNon_Standard_constraint,
+ RANAP_CauseNon_Standard_decode_ber,
+ RANAP_CauseNon_Standard_encode_der,
+ RANAP_CauseNon_Standard_decode_xer,
+ RANAP_CauseNon_Standard_encode_xer,
+ RANAP_CauseNon_Standard_decode_uper,
+ RANAP_CauseNon_Standard_encode_uper,
+ RANAP_CauseNon_Standard_decode_aper,
+ RANAP_CauseNon_Standard_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseNon_Standard_tags_1,
+ sizeof(asn_DEF_RANAP_CauseNon_Standard_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseNon_Standard_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseNon_Standard_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseNon_Standard_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseNon_Standard_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseNon_Standard_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseProtocol.c b/src/ranap/RANAP_CauseProtocol.c
new file mode 100644
index 0000000..47b03f3
--- /dev/null
+++ b/src/ranap/RANAP_CauseProtocol.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseProtocol.h>
+
+int
+RANAP_CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 97l && value <= 112l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseProtocol_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseProtocol_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseProtocol_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 97l, 112l } /* (97..112) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseProtocol_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseProtocol = {
+ "RANAP_CauseProtocol",
+ "RANAP_CauseProtocol",
+ RANAP_CauseProtocol_free,
+ RANAP_CauseProtocol_print,
+ RANAP_CauseProtocol_constraint,
+ RANAP_CauseProtocol_decode_ber,
+ RANAP_CauseProtocol_encode_der,
+ RANAP_CauseProtocol_decode_xer,
+ RANAP_CauseProtocol_encode_xer,
+ RANAP_CauseProtocol_decode_uper,
+ RANAP_CauseProtocol_encode_uper,
+ RANAP_CauseProtocol_decode_aper,
+ RANAP_CauseProtocol_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseProtocol_tags_1,
+ sizeof(asn_DEF_RANAP_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseProtocol_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseProtocol_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseProtocol_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseProtocol_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseRadioNetwork.c b/src/ranap/RANAP_CauseRadioNetwork.c
new file mode 100644
index 0000000..32f9965
--- /dev/null
+++ b/src/ranap/RANAP_CauseRadioNetwork.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseRadioNetwork.h>
+
+int
+RANAP_CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 64l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseRadioNetwork_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseRadioNetwork_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 6, 6, 1l, 64l } /* (1..64) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseRadioNetwork_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseRadioNetwork = {
+ "RANAP_CauseRadioNetwork",
+ "RANAP_CauseRadioNetwork",
+ RANAP_CauseRadioNetwork_free,
+ RANAP_CauseRadioNetwork_print,
+ RANAP_CauseRadioNetwork_constraint,
+ RANAP_CauseRadioNetwork_decode_ber,
+ RANAP_CauseRadioNetwork_encode_der,
+ RANAP_CauseRadioNetwork_decode_xer,
+ RANAP_CauseRadioNetwork_encode_xer,
+ RANAP_CauseRadioNetwork_decode_uper,
+ RANAP_CauseRadioNetwork_encode_uper,
+ RANAP_CauseRadioNetwork_decode_aper,
+ RANAP_CauseRadioNetwork_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseRadioNetwork_tags_1,
+ sizeof(asn_DEF_RANAP_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseRadioNetwork_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseRadioNetwork_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseRadioNetwork_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseRadioNetwork_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseRadioNetworkExtension.c b/src/ranap/RANAP_CauseRadioNetworkExtension.c
new file mode 100644
index 0000000..233d6b6
--- /dev/null
+++ b/src/ranap/RANAP_CauseRadioNetworkExtension.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseRadioNetworkExtension.h>
+
+int
+RANAP_CauseRadioNetworkExtension_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 257l && value <= 512l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseRadioNetworkExtension_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseRadioNetworkExtension_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetworkExtension_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetworkExtension_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetworkExtension_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetworkExtension_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetworkExtension_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetworkExtension_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseRadioNetworkExtension_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseRadioNetworkExtension_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseRadioNetworkExtension_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseRadioNetworkExtension_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 257l, 512l } /* (257..512) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseRadioNetworkExtension = {
+ "RANAP_CauseRadioNetworkExtension",
+ "RANAP_CauseRadioNetworkExtension",
+ RANAP_CauseRadioNetworkExtension_free,
+ RANAP_CauseRadioNetworkExtension_print,
+ RANAP_CauseRadioNetworkExtension_constraint,
+ RANAP_CauseRadioNetworkExtension_decode_ber,
+ RANAP_CauseRadioNetworkExtension_encode_der,
+ RANAP_CauseRadioNetworkExtension_decode_xer,
+ RANAP_CauseRadioNetworkExtension_encode_xer,
+ RANAP_CauseRadioNetworkExtension_decode_uper,
+ RANAP_CauseRadioNetworkExtension_encode_uper,
+ RANAP_CauseRadioNetworkExtension_decode_aper,
+ RANAP_CauseRadioNetworkExtension_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1,
+ sizeof(asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseRadioNetworkExtension_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseRadioNetworkExtension_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CauseTransmissionNetwork.c b/src/ranap/RANAP_CauseTransmissionNetwork.c
new file mode 100644
index 0000000..887589e
--- /dev/null
+++ b/src/ranap/RANAP_CauseTransmissionNetwork.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CauseTransmissionNetwork.h>
+
+int
+RANAP_CauseTransmissionNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 65l && value <= 80l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_CauseTransmissionNetwork_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CauseTransmissionNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseTransmissionNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CauseTransmissionNetwork_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseTransmissionNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CauseTransmissionNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CauseTransmissionNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CauseTransmissionNetwork_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CauseTransmissionNetwork_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CauseTransmissionNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CauseTransmissionNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CauseTransmissionNetwork_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 65l, 80l } /* (65..80) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CauseTransmissionNetwork_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CauseTransmissionNetwork = {
+ "RANAP_CauseTransmissionNetwork",
+ "RANAP_CauseTransmissionNetwork",
+ RANAP_CauseTransmissionNetwork_free,
+ RANAP_CauseTransmissionNetwork_print,
+ RANAP_CauseTransmissionNetwork_constraint,
+ RANAP_CauseTransmissionNetwork_decode_ber,
+ RANAP_CauseTransmissionNetwork_encode_der,
+ RANAP_CauseTransmissionNetwork_decode_xer,
+ RANAP_CauseTransmissionNetwork_encode_xer,
+ RANAP_CauseTransmissionNetwork_decode_uper,
+ RANAP_CauseTransmissionNetwork_encode_uper,
+ RANAP_CauseTransmissionNetwork_decode_aper,
+ RANAP_CauseTransmissionNetwork_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CauseTransmissionNetwork_tags_1,
+ sizeof(asn_DEF_RANAP_CauseTransmissionNetwork_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseTransmissionNetwork_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CauseTransmissionNetwork_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CauseTransmissionNetwork_tags_1)
+ /sizeof(asn_DEF_RANAP_CauseTransmissionNetwork_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CauseTransmissionNetwork_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Cell-Access-Mode.c b/src/ranap/RANAP_Cell-Access-Mode.c
new file mode 100644
index 0000000..b9af5d1
--- /dev/null
+++ b/src/ranap/RANAP_Cell-Access-Mode.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Cell-Access-Mode.h>
+
+int
+RANAP_Cell_Access_Mode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Cell_Access_Mode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Cell_Access_Mode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Access_Mode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Access_Mode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Access_Mode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Access_Mode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Access_Mode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Access_Mode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Access_Mode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Access_Mode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Access_Mode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Cell_Access_Mode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Cell_Access_Mode_value2enum_1[] = {
+ { 0, 6, "hybrid" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Cell_Access_Mode_enum2value_1[] = {
+ 0 /* hybrid(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Cell_Access_Mode_specs_1 = {
+ asn_MAP_RANAP_Cell_Access_Mode_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Cell_Access_Mode_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Cell_Access_Mode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Access_Mode = {
+ "RANAP_Cell-Access-Mode",
+ "RANAP_Cell-Access-Mode",
+ RANAP_Cell_Access_Mode_free,
+ RANAP_Cell_Access_Mode_print,
+ RANAP_Cell_Access_Mode_constraint,
+ RANAP_Cell_Access_Mode_decode_ber,
+ RANAP_Cell_Access_Mode_encode_der,
+ RANAP_Cell_Access_Mode_decode_xer,
+ RANAP_Cell_Access_Mode_encode_xer,
+ RANAP_Cell_Access_Mode_decode_uper,
+ RANAP_Cell_Access_Mode_encode_uper,
+ RANAP_Cell_Access_Mode_decode_aper,
+ RANAP_Cell_Access_Mode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Cell_Access_Mode_tags_1,
+ sizeof(asn_DEF_RANAP_Cell_Access_Mode_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Access_Mode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Cell_Access_Mode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Cell_Access_Mode_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Access_Mode_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Cell_Access_Mode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Cell_Access_Mode_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Cell-Capacity-Class-Value.c b/src/ranap/RANAP_Cell-Capacity-Class-Value.c
new file mode 100644
index 0000000..2537ab4
--- /dev/null
+++ b/src/ranap/RANAP_Cell-Capacity-Class-Value.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Cell-Capacity-Class-Value.h>
+
+int
+RANAP_Cell_Capacity_Class_Value_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 100l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_Cell_Capacity_Class_Value_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Cell_Capacity_Class_Value_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Capacity_Class_Value_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Capacity_Class_Value_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Capacity_Class_Value_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Capacity_Class_Value_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Capacity_Class_Value_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Capacity_Class_Value_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Capacity_Class_Value_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Capacity_Class_Value_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Capacity_Class_Value_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Cell_Capacity_Class_Value_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1l, 100l } /* (1..100,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Capacity_Class_Value = {
+ "RANAP_Cell-Capacity-Class-Value",
+ "RANAP_Cell-Capacity-Class-Value",
+ RANAP_Cell_Capacity_Class_Value_free,
+ RANAP_Cell_Capacity_Class_Value_print,
+ RANAP_Cell_Capacity_Class_Value_constraint,
+ RANAP_Cell_Capacity_Class_Value_decode_ber,
+ RANAP_Cell_Capacity_Class_Value_encode_der,
+ RANAP_Cell_Capacity_Class_Value_decode_xer,
+ RANAP_Cell_Capacity_Class_Value_encode_xer,
+ RANAP_Cell_Capacity_Class_Value_decode_uper,
+ RANAP_Cell_Capacity_Class_Value_encode_uper,
+ RANAP_Cell_Capacity_Class_Value_decode_aper,
+ RANAP_Cell_Capacity_Class_Value_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1,
+ sizeof(asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Capacity_Class_Value_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Cell_Capacity_Class_Value_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Cell-Id.c b/src/ranap/RANAP_Cell-Id.c
new file mode 100644
index 0000000..49225b7
--- /dev/null
+++ b/src/ranap/RANAP_Cell-Id.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Cell-Id.h>
+
+int
+RANAP_Cell_Id_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 268435455l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Cell_Id_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_Cell_Id_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Cell_Id_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Id_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Id_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Id_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Id_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Id_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Id_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Cell_Id_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Cell_Id_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Cell_Id_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Cell_Id_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 28, -1, 0l, 268435455l } /* (0..268435455) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Cell_Id_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Cell_Id = {
+ "RANAP_Cell-Id",
+ "RANAP_Cell-Id",
+ RANAP_Cell_Id_free,
+ RANAP_Cell_Id_print,
+ RANAP_Cell_Id_constraint,
+ RANAP_Cell_Id_decode_ber,
+ RANAP_Cell_Id_encode_der,
+ RANAP_Cell_Id_decode_xer,
+ RANAP_Cell_Id_encode_xer,
+ RANAP_Cell_Id_decode_uper,
+ RANAP_Cell_Id_encode_uper,
+ RANAP_Cell_Id_decode_aper,
+ RANAP_Cell_Id_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Cell_Id_tags_1,
+ sizeof(asn_DEF_RANAP_Cell_Id_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Id_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Cell_Id_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Cell_Id_tags_1)
+ /sizeof(asn_DEF_RANAP_Cell_Id_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Cell_Id_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_CellBased.c b/src/ranap/RANAP_CellBased.c
new file mode 100644
index 0000000..0428a07
--- /dev/null
+++ b/src/ranap/RANAP_CellBased.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CellBased.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CellBased_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CellBased, cellIdList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellIdList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellIdList"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CellBased, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CellBased_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CellBased_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CellBased_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CellBased_specs_1 = {
+ sizeof(struct RANAP_CellBased),
+ offsetof(struct RANAP_CellBased, _asn_ctx),
+ asn_MAP_RANAP_CellBased_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_CellBased_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CellBased = {
+ "RANAP_CellBased",
+ "RANAP_CellBased",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CellBased_tags_1,
+ sizeof(asn_DEF_RANAP_CellBased_tags_1)
+ /sizeof(asn_DEF_RANAP_CellBased_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CellBased_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CellBased_tags_1)
+ /sizeof(asn_DEF_RANAP_CellBased_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CellBased_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_CellBased_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CellIdList.c b/src/ranap/RANAP_CellIdList.c
new file mode 100644
index 0000000..7a91269
--- /dev/null
+++ b/src/ranap/RANAP_CellIdList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CellIdList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_CellIdList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_CellIdList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_Cell_Id,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CellIdList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_CellIdList_specs_1 = {
+ sizeof(struct RANAP_CellIdList),
+ offsetof(struct RANAP_CellIdList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CellIdList = {
+ "RANAP_CellIdList",
+ "RANAP_CellIdList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CellIdList_tags_1,
+ sizeof(asn_DEF_RANAP_CellIdList_tags_1)
+ /sizeof(asn_DEF_RANAP_CellIdList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CellIdList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CellIdList_tags_1)
+ /sizeof(asn_DEF_RANAP_CellIdList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CellIdList_constr_1,
+ asn_MBR_RANAP_CellIdList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_CellIdList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CellLoadInformation.c b/src/ranap/RANAP_CellLoadInformation.c
new file mode 100644
index 0000000..b086b3d
--- /dev/null
+++ b/src/ranap/RANAP_CellLoadInformation.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CellLoadInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CellLoadInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CellLoadInformation, cell_Capacity_Class_Value),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Cell_Capacity_Class_Value,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cell-Capacity-Class-Value"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CellLoadInformation, loadValue),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LoadValue,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "loadValue"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_CellLoadInformation, rTLoadValue),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RTLoadValue,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rTLoadValue"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_CellLoadInformation, nRTLoadInformationValue),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NRTLoadInformationValue,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "nRTLoadInformationValue"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CellLoadInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CellLoadInformation_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CellLoadInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CellLoadInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-Capacity-Class-Value */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* loadValue */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rTLoadValue */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nRTLoadInformationValue */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CellLoadInformation_specs_1 = {
+ sizeof(struct RANAP_CellLoadInformation),
+ offsetof(struct RANAP_CellLoadInformation, _asn_ctx),
+ asn_MAP_RANAP_CellLoadInformation_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_CellLoadInformation_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CellLoadInformation = {
+ "RANAP_CellLoadInformation",
+ "RANAP_CellLoadInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CellLoadInformation_tags_1,
+ sizeof(asn_DEF_RANAP_CellLoadInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_CellLoadInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CellLoadInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CellLoadInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_CellLoadInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CellLoadInformation_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_CellLoadInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CellLoadInformationGroup.c b/src/ranap/RANAP_CellLoadInformationGroup.c
new file mode 100644
index 0000000..5c12990
--- /dev/null
+++ b/src/ranap/RANAP_CellLoadInformationGroup.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CellLoadInformationGroup.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CellLoadInformationGroup_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CellLoadInformationGroup, sourceCellID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_SourceCellID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceCellID"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_CellLoadInformationGroup, uplinkCellLoadInformation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellLoadInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uplinkCellLoadInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_CellLoadInformationGroup, downlinkCellLoadInformation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellLoadInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "downlinkCellLoadInformation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CellLoadInformationGroup, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CellLoadInformationGroup_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CellLoadInformationGroup_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CellLoadInformationGroup_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourceCellID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uplinkCellLoadInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* downlinkCellLoadInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CellLoadInformationGroup_specs_1 = {
+ sizeof(struct RANAP_CellLoadInformationGroup),
+ offsetof(struct RANAP_CellLoadInformationGroup, _asn_ctx),
+ asn_MAP_RANAP_CellLoadInformationGroup_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_CellLoadInformationGroup_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CellLoadInformationGroup = {
+ "RANAP_CellLoadInformationGroup",
+ "RANAP_CellLoadInformationGroup",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CellLoadInformationGroup_tags_1,
+ sizeof(asn_DEF_RANAP_CellLoadInformationGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_CellLoadInformationGroup_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CellLoadInformationGroup_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CellLoadInformationGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_CellLoadInformationGroup_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CellLoadInformationGroup_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_CellLoadInformationGroup_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CellType.c b/src/ranap/RANAP_CellType.c
new file mode 100644
index 0000000..e7047da
--- /dev/null
+++ b/src/ranap/RANAP_CellType.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CellType.h>
+
+int
+RANAP_CellType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_CellType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_CellType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_CellType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CellType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_CellType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CellType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_CellType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_CellType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_CellType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_CellType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_CellType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_CellType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_CellType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_CellType_value2enum_1[] = {
+ { 0, 5, "macro" },
+ { 1, 5, "micro" },
+ { 2, 4, "pico" },
+ { 3, 5, "femto" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_CellType_enum2value_1[] = {
+ 3, /* femto(3) */
+ 0, /* macro(0) */
+ 1, /* micro(1) */
+ 2 /* pico(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_CellType_specs_1 = {
+ asn_MAP_RANAP_CellType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_CellType_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CellType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CellType = {
+ "RANAP_CellType",
+ "RANAP_CellType",
+ RANAP_CellType_free,
+ RANAP_CellType_print,
+ RANAP_CellType_constraint,
+ RANAP_CellType_decode_ber,
+ RANAP_CellType_encode_der,
+ RANAP_CellType_decode_xer,
+ RANAP_CellType_encode_xer,
+ RANAP_CellType_decode_uper,
+ RANAP_CellType_encode_uper,
+ RANAP_CellType_decode_aper,
+ RANAP_CellType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CellType_tags_1,
+ sizeof(asn_DEF_RANAP_CellType_tags_1)
+ /sizeof(asn_DEF_RANAP_CellType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CellType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CellType_tags_1)
+ /sizeof(asn_DEF_RANAP_CellType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CellType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_CellType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ChosenEncryptionAlgorithm.c b/src/ranap/RANAP_ChosenEncryptionAlgorithm.c
new file mode 100644
index 0000000..de8f55c
--- /dev/null
+++ b/src/ranap/RANAP_ChosenEncryptionAlgorithm.c
@@ -0,0 +1,157 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h>
+
+int
+RANAP_ChosenEncryptionAlgorithm_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ if(1 /* No applicable constraints whatsoever */) {
+ /* Nothing is here. See below */
+ }
+
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_RANAP_EncryptionAlgorithm.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using RANAP_EncryptionAlgorithm,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_RANAP_EncryptionAlgorithm.free_struct;
+ td->print_struct = asn_DEF_RANAP_EncryptionAlgorithm.print_struct;
+ td->check_constraints = asn_DEF_RANAP_EncryptionAlgorithm.check_constraints;
+ td->ber_decoder = asn_DEF_RANAP_EncryptionAlgorithm.ber_decoder;
+ td->der_encoder = asn_DEF_RANAP_EncryptionAlgorithm.der_encoder;
+ td->xer_decoder = asn_DEF_RANAP_EncryptionAlgorithm.xer_decoder;
+ td->xer_encoder = asn_DEF_RANAP_EncryptionAlgorithm.xer_encoder;
+ td->uper_decoder = asn_DEF_RANAP_EncryptionAlgorithm.uper_decoder;
+ td->uper_encoder = asn_DEF_RANAP_EncryptionAlgorithm.uper_encoder;
+ td->aper_decoder = asn_DEF_RANAP_EncryptionAlgorithm.aper_decoder;
+ td->aper_encoder = asn_DEF_RANAP_EncryptionAlgorithm.aper_encoder;
+ /* The next four lines are here because of -fknown-extern-type */
+ td->tags = asn_DEF_RANAP_EncryptionAlgorithm.tags;
+ td->tags_count = asn_DEF_RANAP_EncryptionAlgorithm.tags_count;
+ td->all_tags = asn_DEF_RANAP_EncryptionAlgorithm.all_tags;
+ td->all_tags_count = asn_DEF_RANAP_EncryptionAlgorithm.all_tags_count;
+ /* End of these lines */
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_RANAP_EncryptionAlgorithm.per_constraints;
+ td->elements = asn_DEF_RANAP_EncryptionAlgorithm.elements;
+ td->elements_count = asn_DEF_RANAP_EncryptionAlgorithm.elements_count;
+ td->specifics = asn_DEF_RANAP_EncryptionAlgorithm.specifics;
+}
+
+void
+RANAP_ChosenEncryptionAlgorithm_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ChosenEncryptionAlgorithm_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenEncryptionAlgorithm_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ChosenEncryptionAlgorithm_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenEncryptionAlgorithm_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ChosenEncryptionAlgorithm_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenEncryptionAlgorithm_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ChosenEncryptionAlgorithm_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ChosenEncryptionAlgorithm_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ChosenEncryptionAlgorithm_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ChosenEncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_TYPE_descriptor_t asn_DEF_RANAP_ChosenEncryptionAlgorithm = {
+ "RANAP_ChosenEncryptionAlgorithm",
+ "RANAP_ChosenEncryptionAlgorithm",
+ RANAP_ChosenEncryptionAlgorithm_free,
+ RANAP_ChosenEncryptionAlgorithm_print,
+ RANAP_ChosenEncryptionAlgorithm_constraint,
+ RANAP_ChosenEncryptionAlgorithm_decode_ber,
+ RANAP_ChosenEncryptionAlgorithm_encode_der,
+ RANAP_ChosenEncryptionAlgorithm_decode_xer,
+ RANAP_ChosenEncryptionAlgorithm_encode_xer,
+ RANAP_ChosenEncryptionAlgorithm_decode_uper,
+ RANAP_ChosenEncryptionAlgorithm_encode_uper,
+ RANAP_ChosenEncryptionAlgorithm_decode_aper,
+ RANAP_ChosenEncryptionAlgorithm_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.c b/src/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.c
new file mode 100644
index 0000000..a1b7f92
--- /dev/null
+++ b/src/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.c
@@ -0,0 +1,157 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h>
+
+int
+RANAP_ChosenIntegrityProtectionAlgorithm_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ if(1 /* No applicable constraints whatsoever */) {
+ /* Nothing is here. See below */
+ }
+
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_RANAP_IntegrityProtectionAlgorithm.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using RANAP_IntegrityProtectionAlgorithm,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_RANAP_IntegrityProtectionAlgorithm.free_struct;
+ td->print_struct = asn_DEF_RANAP_IntegrityProtectionAlgorithm.print_struct;
+ td->check_constraints = asn_DEF_RANAP_IntegrityProtectionAlgorithm.check_constraints;
+ td->ber_decoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.ber_decoder;
+ td->der_encoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.der_encoder;
+ td->xer_decoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.xer_decoder;
+ td->xer_encoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.xer_encoder;
+ td->uper_decoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.uper_decoder;
+ td->uper_encoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.uper_encoder;
+ td->aper_decoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.aper_decoder;
+ td->aper_encoder = asn_DEF_RANAP_IntegrityProtectionAlgorithm.aper_encoder;
+ /* The next four lines are here because of -fknown-extern-type */
+ td->tags = asn_DEF_RANAP_IntegrityProtectionAlgorithm.tags;
+ td->tags_count = asn_DEF_RANAP_IntegrityProtectionAlgorithm.tags_count;
+ td->all_tags = asn_DEF_RANAP_IntegrityProtectionAlgorithm.all_tags;
+ td->all_tags_count = asn_DEF_RANAP_IntegrityProtectionAlgorithm.all_tags_count;
+ /* End of these lines */
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_RANAP_IntegrityProtectionAlgorithm.per_constraints;
+ td->elements = asn_DEF_RANAP_IntegrityProtectionAlgorithm.elements;
+ td->elements_count = asn_DEF_RANAP_IntegrityProtectionAlgorithm.elements_count;
+ td->specifics = asn_DEF_RANAP_IntegrityProtectionAlgorithm.specifics;
+}
+
+void
+RANAP_ChosenIntegrityProtectionAlgorithm_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ChosenIntegrityProtectionAlgorithm_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ChosenIntegrityProtectionAlgorithm_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ChosenIntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_TYPE_descriptor_t asn_DEF_RANAP_ChosenIntegrityProtectionAlgorithm = {
+ "RANAP_ChosenIntegrityProtectionAlgorithm",
+ "RANAP_ChosenIntegrityProtectionAlgorithm",
+ RANAP_ChosenIntegrityProtectionAlgorithm_free,
+ RANAP_ChosenIntegrityProtectionAlgorithm_print,
+ RANAP_ChosenIntegrityProtectionAlgorithm_constraint,
+ RANAP_ChosenIntegrityProtectionAlgorithm_decode_ber,
+ RANAP_ChosenIntegrityProtectionAlgorithm_encode_der,
+ RANAP_ChosenIntegrityProtectionAlgorithm_decode_xer,
+ RANAP_ChosenIntegrityProtectionAlgorithm_encode_xer,
+ RANAP_ChosenIntegrityProtectionAlgorithm_decode_uper,
+ RANAP_ChosenIntegrityProtectionAlgorithm_encode_uper,
+ RANAP_ChosenIntegrityProtectionAlgorithm_decode_aper,
+ RANAP_ChosenIntegrityProtectionAlgorithm_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ClassmarkInformation2.c b/src/ranap/RANAP_ClassmarkInformation2.c
new file mode 100644
index 0000000..69409e1
--- /dev/null
+++ b/src/ranap/RANAP_ClassmarkInformation2.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ClassmarkInformation2.h>
+
+int
+RANAP_ClassmarkInformation2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_ClassmarkInformation2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ClassmarkInformation2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClassmarkInformation2_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_ClassmarkInformation2_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ClassmarkInformation2 = {
+ "RANAP_ClassmarkInformation2",
+ "RANAP_ClassmarkInformation2",
+ RANAP_ClassmarkInformation2_free,
+ RANAP_ClassmarkInformation2_print,
+ RANAP_ClassmarkInformation2_constraint,
+ RANAP_ClassmarkInformation2_decode_ber,
+ RANAP_ClassmarkInformation2_encode_der,
+ RANAP_ClassmarkInformation2_decode_xer,
+ RANAP_ClassmarkInformation2_encode_xer,
+ RANAP_ClassmarkInformation2_decode_uper,
+ RANAP_ClassmarkInformation2_encode_uper,
+ RANAP_ClassmarkInformation2_decode_aper,
+ RANAP_ClassmarkInformation2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ClassmarkInformation2_tags_1,
+ sizeof(asn_DEF_RANAP_ClassmarkInformation2_tags_1)
+ /sizeof(asn_DEF_RANAP_ClassmarkInformation2_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ClassmarkInformation2_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ClassmarkInformation2_tags_1)
+ /sizeof(asn_DEF_RANAP_ClassmarkInformation2_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ClassmarkInformation3.c b/src/ranap/RANAP_ClassmarkInformation3.c
new file mode 100644
index 0000000..4ec6abe
--- /dev/null
+++ b/src/ranap/RANAP_ClassmarkInformation3.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ClassmarkInformation3.h>
+
+int
+RANAP_ClassmarkInformation3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_ClassmarkInformation3_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ClassmarkInformation3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation3_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation3_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ClassmarkInformation3_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ClassmarkInformation3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClassmarkInformation3_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_ClassmarkInformation3_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ClassmarkInformation3 = {
+ "RANAP_ClassmarkInformation3",
+ "RANAP_ClassmarkInformation3",
+ RANAP_ClassmarkInformation3_free,
+ RANAP_ClassmarkInformation3_print,
+ RANAP_ClassmarkInformation3_constraint,
+ RANAP_ClassmarkInformation3_decode_ber,
+ RANAP_ClassmarkInformation3_encode_der,
+ RANAP_ClassmarkInformation3_decode_xer,
+ RANAP_ClassmarkInformation3_encode_xer,
+ RANAP_ClassmarkInformation3_decode_uper,
+ RANAP_ClassmarkInformation3_encode_uper,
+ RANAP_ClassmarkInformation3_decode_aper,
+ RANAP_ClassmarkInformation3_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ClassmarkInformation3_tags_1,
+ sizeof(asn_DEF_RANAP_ClassmarkInformation3_tags_1)
+ /sizeof(asn_DEF_RANAP_ClassmarkInformation3_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ClassmarkInformation3_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ClassmarkInformation3_tags_1)
+ /sizeof(asn_DEF_RANAP_ClassmarkInformation3_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ClientType.c b/src/ranap/RANAP_ClientType.c
new file mode 100644
index 0000000..1f11e80
--- /dev/null
+++ b/src/ranap/RANAP_ClientType.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ClientType.h>
+
+int
+RANAP_ClientType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ClientType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ClientType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ClientType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClientType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ClientType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClientType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ClientType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ClientType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ClientType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ClientType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ClientType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ClientType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ClientType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ClientType_value2enum_1[] = {
+ { 0, 18, "emergency-Services" },
+ { 1, 20, "value-Added-Services" },
+ { 2, 22, "pLMN-Operator-Services" },
+ { 3, 25, "lawful-Intercept-Services" },
+ { 4, 32, "pLMN-Operator-Broadcast-Services" },
+ { 5, 20, "pLMN-Operator-O-et-M" },
+ { 6, 34, "pLMN-Operator-Anonymous-Statistics" },
+ { 7, 39, "pLMN-Operator-Target-MS-Service-Support" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ClientType_enum2value_1[] = {
+ 0, /* emergency-Services(0) */
+ 3, /* lawful-Intercept-Services(3) */
+ 6, /* pLMN-Operator-Anonymous-Statistics(6) */
+ 4, /* pLMN-Operator-Broadcast-Services(4) */
+ 5, /* pLMN-Operator-O-et-M(5) */
+ 2, /* pLMN-Operator-Services(2) */
+ 7, /* pLMN-Operator-Target-MS-Service-Support(7) */
+ 1 /* value-Added-Services(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ClientType_specs_1 = {
+ asn_MAP_RANAP_ClientType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ClientType_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 9, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ClientType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ClientType = {
+ "RANAP_ClientType",
+ "RANAP_ClientType",
+ RANAP_ClientType_free,
+ RANAP_ClientType_print,
+ RANAP_ClientType_constraint,
+ RANAP_ClientType_decode_ber,
+ RANAP_ClientType_encode_der,
+ RANAP_ClientType_decode_xer,
+ RANAP_ClientType_encode_xer,
+ RANAP_ClientType_decode_uper,
+ RANAP_ClientType_encode_uper,
+ RANAP_ClientType_decode_aper,
+ RANAP_ClientType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ClientType_tags_1,
+ sizeof(asn_DEF_RANAP_ClientType_tags_1)
+ /sizeof(asn_DEF_RANAP_ClientType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ClientType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ClientType_tags_1)
+ /sizeof(asn_DEF_RANAP_ClientType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ClientType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ClientType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CommonID.c b/src/ranap/RANAP_CommonID.c
new file mode 100644
index 0000000..6568b2d
--- /dev/null
+++ b/src/ranap/RANAP_CommonID.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CommonID.h>
+
+static int
+memb_commonID_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_commonID_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_commonID_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_commonID_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_commonID_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_commonID_ies_specs_2 = {
+ sizeof(struct commonID_ies),
+ offsetof(struct commonID_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_commonID_ies_2 = {
+ "commonID-ies",
+ "commonID-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_commonID_ies_tags_2,
+ sizeof(asn_DEF_commonID_ies_tags_2)
+ /sizeof(asn_DEF_commonID_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_commonID_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_commonID_ies_tags_2)
+ /sizeof(asn_DEF_commonID_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_commonID_ies_constr_2,
+ asn_MBR_commonID_ies_2,
+ 1, /* Single element */
+ &asn_SPC_commonID_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_CommonID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_CommonID, commonID_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_commonID_ies_2,
+ memb_commonID_ies_constraint_1,
+ &asn_PER_memb_commonID_ies_constr_2,
+ 0,
+ "commonID-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CommonID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CommonID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* commonID-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CommonID_specs_1 = {
+ sizeof(struct RANAP_CommonID),
+ offsetof(struct RANAP_CommonID, _asn_ctx),
+ asn_MAP_RANAP_CommonID_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CommonID = {
+ "RANAP_CommonID",
+ "RANAP_CommonID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CommonID_tags_1,
+ sizeof(asn_DEF_RANAP_CommonID_tags_1)
+ /sizeof(asn_DEF_RANAP_CommonID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CommonID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CommonID_tags_1)
+ /sizeof(asn_DEF_RANAP_CommonID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CommonID_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_CommonID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Correlation-ID.c b/src/ranap/RANAP_Correlation-ID.c
new file mode 100644
index 0000000..e6f3b6d
--- /dev/null
+++ b/src/ranap/RANAP_Correlation-ID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Correlation-ID.h>
+
+int
+RANAP_Correlation_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Correlation_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Correlation_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Correlation_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Correlation_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Correlation_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Correlation_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Correlation_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Correlation_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Correlation_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Correlation_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Correlation_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Correlation_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Correlation_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Correlation_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Correlation_ID = {
+ "RANAP_Correlation-ID",
+ "RANAP_Correlation-ID",
+ RANAP_Correlation_ID_free,
+ RANAP_Correlation_ID_print,
+ RANAP_Correlation_ID_constraint,
+ RANAP_Correlation_ID_decode_ber,
+ RANAP_Correlation_ID_encode_der,
+ RANAP_Correlation_ID_decode_xer,
+ RANAP_Correlation_ID_encode_xer,
+ RANAP_Correlation_ID_decode_uper,
+ RANAP_Correlation_ID_encode_uper,
+ RANAP_Correlation_ID_decode_aper,
+ RANAP_Correlation_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Correlation_ID_tags_1,
+ sizeof(asn_DEF_RANAP_Correlation_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_Correlation_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Correlation_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Correlation_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_Correlation_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Correlation_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Criticality.c b/src/ranap/RANAP_Criticality.c
new file mode 100644
index 0000000..073f0dc
--- /dev/null
+++ b/src/ranap/RANAP_Criticality.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Criticality.h>
+
+int
+RANAP_Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Criticality_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Criticality_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Criticality_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Criticality_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Criticality_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Criticality_value2enum_1[] = {
+ { 0, 6, "reject" },
+ { 1, 6, "ignore" },
+ { 2, 6, "notify" }
+};
+static const unsigned int asn_MAP_RANAP_Criticality_enum2value_1[] = {
+ 1, /* ignore(1) */
+ 2, /* notify(2) */
+ 0 /* reject(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Criticality_specs_1 = {
+ asn_MAP_RANAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Criticality_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Criticality = {
+ "RANAP_Criticality",
+ "RANAP_Criticality",
+ RANAP_Criticality_free,
+ RANAP_Criticality_print,
+ RANAP_Criticality_constraint,
+ RANAP_Criticality_decode_ber,
+ RANAP_Criticality_encode_der,
+ RANAP_Criticality_decode_xer,
+ RANAP_Criticality_encode_xer,
+ RANAP_Criticality_decode_uper,
+ RANAP_Criticality_encode_uper,
+ RANAP_Criticality_decode_aper,
+ RANAP_Criticality_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Criticality_tags_1,
+ sizeof(asn_DEF_RANAP_Criticality_tags_1)
+ /sizeof(asn_DEF_RANAP_Criticality_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Criticality_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Criticality_tags_1)
+ /sizeof(asn_DEF_RANAP_Criticality_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Criticality_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Criticality_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CriticalityDiagnostics-IE-List.c b/src/ranap/RANAP_CriticalityDiagnostics-IE-List.c
new file mode 100644
index 0000000..044a235
--- /dev/null
+++ b/src/ranap/RANAP_CriticalityDiagnostics-IE-List.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CriticalityDiagnostics-IE-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberG_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberG, iECriticality),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iECriticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberG, iE_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberG, repetitionNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RepetitionNumber0,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "repetitionNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberG, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberG_oms_2[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MemberG_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberG_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* repetitionNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberG_specs_2 = {
+ sizeof(struct MemberG),
+ offsetof(struct MemberG, _asn_ctx),
+ asn_MAP_MemberG_tag2el_2,
+ 4, /* Count of tags in the map */
+ asn_MAP_MemberG_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberG_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberG_tags_2,
+ sizeof(asn_DEF_MemberG_tags_2)
+ /sizeof(asn_DEF_MemberG_tags_2[0]), /* 1 */
+ asn_DEF_MemberG_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberG_tags_2)
+ /sizeof(asn_DEF_MemberG_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberG_2,
+ 4, /* Elements count */
+ &asn_SPC_MemberG_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_CriticalityDiagnostics_IE_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberG_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_CriticalityDiagnostics_IE_List_specs_1 = {
+ sizeof(struct RANAP_CriticalityDiagnostics_IE_List),
+ offsetof(struct RANAP_CriticalityDiagnostics_IE_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CriticalityDiagnostics_IE_List = {
+ "RANAP_CriticalityDiagnostics-IE-List",
+ "RANAP_CriticalityDiagnostics-IE-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1,
+ sizeof(asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_RANAP_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_CriticalityDiagnostics_IE_List_constr_1,
+ asn_MBR_RANAP_CriticalityDiagnostics_IE_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_CriticalityDiagnostics.c b/src/ranap/RANAP_CriticalityDiagnostics.c
new file mode 100644
index 0000000..5865d64
--- /dev/null
+++ b/src/ranap/RANAP_CriticalityDiagnostics.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_CriticalityDiagnostics.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_CriticalityDiagnostics_1[] = {
+ { ATF_POINTER, 5, offsetof(struct RANAP_CriticalityDiagnostics, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_CriticalityDiagnostics, triggeringMessage),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TriggeringMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "triggeringMessage"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_CriticalityDiagnostics, procedureCriticality),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCriticality"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_CriticalityDiagnostics, iEsCriticalityDiagnostics),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CriticalityDiagnostics_IE_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iEsCriticalityDiagnostics"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_CriticalityDiagnostics, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_CriticalityDiagnostics_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_CriticalityDiagnostics_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_CriticalityDiagnostics_specs_1 = {
+ sizeof(struct RANAP_CriticalityDiagnostics),
+ offsetof(struct RANAP_CriticalityDiagnostics, _asn_ctx),
+ asn_MAP_RANAP_CriticalityDiagnostics_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_CriticalityDiagnostics_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_CriticalityDiagnostics = {
+ "RANAP_CriticalityDiagnostics",
+ "RANAP_CriticalityDiagnostics",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_CriticalityDiagnostics_tags_1,
+ sizeof(asn_DEF_RANAP_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_RANAP_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_CriticalityDiagnostics_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_RANAP_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_CriticalityDiagnostics_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_CriticalityDiagnostics_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_D-RNTI.c b/src/ranap/RANAP_D-RNTI.c
new file mode 100644
index 0000000..77dc4c8
--- /dev/null
+++ b/src/ranap/RANAP_D-RNTI.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_D-RNTI.h>
+
+int
+RANAP_D_RNTI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 1048575l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_D_RNTI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_D_RNTI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_D_RNTI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_D_RNTI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_D_RNTI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_D_RNTI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_D_RNTI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_D_RNTI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_D_RNTI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_D_RNTI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_D_RNTI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_D_RNTI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_D_RNTI_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 20, -1, 0l, 1048575l } /* (0..1048575) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_D_RNTI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_D_RNTI = {
+ "RANAP_D-RNTI",
+ "RANAP_D-RNTI",
+ RANAP_D_RNTI_free,
+ RANAP_D_RNTI_print,
+ RANAP_D_RNTI_constraint,
+ RANAP_D_RNTI_decode_ber,
+ RANAP_D_RNTI_encode_der,
+ RANAP_D_RNTI_decode_xer,
+ RANAP_D_RNTI_encode_xer,
+ RANAP_D_RNTI_decode_uper,
+ RANAP_D_RNTI_encode_uper,
+ RANAP_D_RNTI_decode_aper,
+ RANAP_D_RNTI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_D_RNTI_tags_1,
+ sizeof(asn_DEF_RANAP_D_RNTI_tags_1)
+ /sizeof(asn_DEF_RANAP_D_RNTI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_D_RNTI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_D_RNTI_tags_1)
+ /sizeof(asn_DEF_RANAP_D_RNTI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_D_RNTI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DCH-ID.c b/src/ranap/RANAP_DCH-ID.c
new file mode 100644
index 0000000..73ec84f
--- /dev/null
+++ b/src/ranap/RANAP_DCH-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DCH-ID.h>
+
+int
+RANAP_DCH_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DCH_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DCH_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DCH_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DCH_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DCH_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DCH_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DCH_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DCH_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DCH_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DCH_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DCH_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DCH_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DCH_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DCH_ID = {
+ "RANAP_DCH-ID",
+ "RANAP_DCH-ID",
+ RANAP_DCH_ID_free,
+ RANAP_DCH_ID_print,
+ RANAP_DCH_ID_constraint,
+ RANAP_DCH_ID_decode_ber,
+ RANAP_DCH_ID_encode_der,
+ RANAP_DCH_ID_decode_xer,
+ RANAP_DCH_ID_encode_xer,
+ RANAP_DCH_ID_decode_uper,
+ RANAP_DCH_ID_encode_uper,
+ RANAP_DCH_ID_decode_aper,
+ RANAP_DCH_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DCH_ID_tags_1,
+ sizeof(asn_DEF_RANAP_DCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_DCH_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DCH_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_DCH_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DCH_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DL-GTP-PDU-SequenceNumber.c b/src/ranap/RANAP_DL-GTP-PDU-SequenceNumber.c
new file mode 100644
index 0000000..87782ea
--- /dev/null
+++ b/src/ranap/RANAP_DL-GTP-PDU-SequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DL-GTP-PDU-SequenceNumber.h>
+
+int
+RANAP_DL_GTP_PDU_SequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DL_GTP_PDU_SequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DL_GTP_PDU_SequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DL_GTP_PDU_SequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DL_GTP_PDU_SequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber = {
+ "RANAP_DL-GTP-PDU-SequenceNumber",
+ "RANAP_DL-GTP-PDU-SequenceNumber",
+ RANAP_DL_GTP_PDU_SequenceNumber_free,
+ RANAP_DL_GTP_PDU_SequenceNumber_print,
+ RANAP_DL_GTP_PDU_SequenceNumber_constraint,
+ RANAP_DL_GTP_PDU_SequenceNumber_decode_ber,
+ RANAP_DL_GTP_PDU_SequenceNumber_encode_der,
+ RANAP_DL_GTP_PDU_SequenceNumber_decode_xer,
+ RANAP_DL_GTP_PDU_SequenceNumber_encode_xer,
+ RANAP_DL_GTP_PDU_SequenceNumber_decode_uper,
+ RANAP_DL_GTP_PDU_SequenceNumber_encode_uper,
+ RANAP_DL_GTP_PDU_SequenceNumber_decode_aper,
+ RANAP_DL_GTP_PDU_SequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DL_GTP_PDU_SequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DL-N-PDU-SequenceNumber.c b/src/ranap/RANAP_DL-N-PDU-SequenceNumber.c
new file mode 100644
index 0000000..d2c5583
--- /dev/null
+++ b/src/ranap/RANAP_DL-N-PDU-SequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DL-N-PDU-SequenceNumber.h>
+
+int
+RANAP_DL_N_PDU_SequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DL_N_PDU_SequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DL_N_PDU_SequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_N_PDU_SequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DL_N_PDU_SequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_N_PDU_SequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DL_N_PDU_SequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DL_N_PDU_SequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DL_N_PDU_SequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DL_N_PDU_SequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DL_N_PDU_SequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DL_N_PDU_SequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DL_N_PDU_SequenceNumber = {
+ "RANAP_DL-N-PDU-SequenceNumber",
+ "RANAP_DL-N-PDU-SequenceNumber",
+ RANAP_DL_N_PDU_SequenceNumber_free,
+ RANAP_DL_N_PDU_SequenceNumber_print,
+ RANAP_DL_N_PDU_SequenceNumber_constraint,
+ RANAP_DL_N_PDU_SequenceNumber_decode_ber,
+ RANAP_DL_N_PDU_SequenceNumber_encode_der,
+ RANAP_DL_N_PDU_SequenceNumber_decode_xer,
+ RANAP_DL_N_PDU_SequenceNumber_encode_xer,
+ RANAP_DL_N_PDU_SequenceNumber_decode_uper,
+ RANAP_DL_N_PDU_SequenceNumber_encode_uper,
+ RANAP_DL_N_PDU_SequenceNumber_decode_aper,
+ RANAP_DL_N_PDU_SequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_DL_N_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DL_N_PDU_SequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DRX-CycleLengthCoefficient.c b/src/ranap/RANAP_DRX-CycleLengthCoefficient.c
new file mode 100644
index 0000000..b5e1699
--- /dev/null
+++ b/src/ranap/RANAP_DRX-CycleLengthCoefficient.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DRX-CycleLengthCoefficient.h>
+
+int
+RANAP_DRX_CycleLengthCoefficient_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 6l && value <= 9l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DRX_CycleLengthCoefficient_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DRX_CycleLengthCoefficient_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DRX_CycleLengthCoefficient_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DRX_CycleLengthCoefficient_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DRX_CycleLengthCoefficient_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DRX_CycleLengthCoefficient_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DRX_CycleLengthCoefficient_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DRX_CycleLengthCoefficient_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DRX_CycleLengthCoefficient_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DRX_CycleLengthCoefficient_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DRX_CycleLengthCoefficient_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DRX_CycleLengthCoefficient_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 6l, 9l } /* (6..9) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DRX_CycleLengthCoefficient = {
+ "RANAP_DRX-CycleLengthCoefficient",
+ "RANAP_DRX-CycleLengthCoefficient",
+ RANAP_DRX_CycleLengthCoefficient_free,
+ RANAP_DRX_CycleLengthCoefficient_print,
+ RANAP_DRX_CycleLengthCoefficient_constraint,
+ RANAP_DRX_CycleLengthCoefficient_decode_ber,
+ RANAP_DRX_CycleLengthCoefficient_encode_der,
+ RANAP_DRX_CycleLengthCoefficient_decode_xer,
+ RANAP_DRX_CycleLengthCoefficient_encode_xer,
+ RANAP_DRX_CycleLengthCoefficient_decode_uper,
+ RANAP_DRX_CycleLengthCoefficient_encode_uper,
+ RANAP_DRX_CycleLengthCoefficient_decode_aper,
+ RANAP_DRX_CycleLengthCoefficient_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1,
+ sizeof(asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1)
+ /sizeof(asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1)
+ /sizeof(asn_DEF_RANAP_DRX_CycleLengthCoefficient_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DRX_CycleLengthCoefficient_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DSCH-ID.c b/src/ranap/RANAP_DSCH-ID.c
new file mode 100644
index 0000000..7a73d37
--- /dev/null
+++ b/src/ranap/RANAP_DSCH-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DSCH-ID.h>
+
+int
+RANAP_DSCH_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DSCH_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DSCH_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DSCH_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DSCH_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DSCH_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DSCH_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DSCH_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DSCH_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DSCH_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DSCH_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DSCH_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DSCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DSCH_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DSCH_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DSCH_ID = {
+ "RANAP_DSCH-ID",
+ "RANAP_DSCH-ID",
+ RANAP_DSCH_ID_free,
+ RANAP_DSCH_ID_print,
+ RANAP_DSCH_ID_constraint,
+ RANAP_DSCH_ID_decode_ber,
+ RANAP_DSCH_ID_encode_der,
+ RANAP_DSCH_ID_decode_xer,
+ RANAP_DSCH_ID_encode_xer,
+ RANAP_DSCH_ID_decode_uper,
+ RANAP_DSCH_ID_encode_uper,
+ RANAP_DSCH_ID_decode_aper,
+ RANAP_DSCH_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DSCH_ID_tags_1,
+ sizeof(asn_DEF_RANAP_DSCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_DSCH_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DSCH_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DSCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_DSCH_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DSCH_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DataPDUType.c b/src/ranap/RANAP_DataPDUType.c
new file mode 100644
index 0000000..581130b
--- /dev/null
+++ b/src/ranap/RANAP_DataPDUType.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataPDUType.h>
+
+int
+RANAP_DataPDUType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DataPDUType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_DataPDUType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DataPDUType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataPDUType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DataPDUType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataPDUType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DataPDUType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataPDUType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DataPDUType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DataPDUType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DataPDUType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataPDUType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DataPDUType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_DataPDUType_value2enum_1[] = {
+ { 0, 8, "pDUtype0" },
+ { 1, 8, "pDUtype1" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_DataPDUType_enum2value_1[] = {
+ 0, /* pDUtype0(0) */
+ 1 /* pDUtype1(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_DataPDUType_specs_1 = {
+ asn_MAP_RANAP_DataPDUType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_DataPDUType_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataPDUType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataPDUType = {
+ "RANAP_DataPDUType",
+ "RANAP_DataPDUType",
+ RANAP_DataPDUType_free,
+ RANAP_DataPDUType_print,
+ RANAP_DataPDUType_constraint,
+ RANAP_DataPDUType_decode_ber,
+ RANAP_DataPDUType_encode_der,
+ RANAP_DataPDUType_decode_xer,
+ RANAP_DataPDUType_encode_xer,
+ RANAP_DataPDUType_decode_uper,
+ RANAP_DataPDUType_encode_uper,
+ RANAP_DataPDUType_decode_aper,
+ RANAP_DataPDUType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataPDUType_tags_1,
+ sizeof(asn_DEF_RANAP_DataPDUType_tags_1)
+ /sizeof(asn_DEF_RANAP_DataPDUType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataPDUType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataPDUType_tags_1)
+ /sizeof(asn_DEF_RANAP_DataPDUType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DataPDUType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_DataPDUType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeList.c b/src/ranap/RANAP_DataVolumeList.c
new file mode 100644
index 0000000..5be74e1
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeList.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_DataVolumeList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberH_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberH, dl_UnsuccessfullyTransmittedDataVolume),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-UnsuccessfullyTransmittedDataVolume"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberH, dataVolumeReference),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataVolumeReference"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberH, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberH_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MemberH_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberH_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-UnsuccessfullyTransmittedDataVolume */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dataVolumeReference */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberH_specs_2 = {
+ sizeof(struct MemberH),
+ offsetof(struct MemberH, _asn_ctx),
+ asn_MAP_MemberH_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberH_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberH_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberH_tags_2,
+ sizeof(asn_DEF_MemberH_tags_2)
+ /sizeof(asn_DEF_MemberH_tags_2[0]), /* 1 */
+ asn_DEF_MemberH_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberH_tags_2)
+ /sizeof(asn_DEF_MemberH_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberH_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberH_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DataVolumeList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberH_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_DataVolumeList_specs_1 = {
+ sizeof(struct RANAP_DataVolumeList),
+ offsetof(struct RANAP_DataVolumeList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeList = {
+ "RANAP_DataVolumeList",
+ "RANAP_DataVolumeList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeList_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeList_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeList_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DataVolumeList_constr_1,
+ asn_MBR_RANAP_DataVolumeList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_DataVolumeList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeReference.c b/src/ranap/RANAP_DataVolumeReference.c
new file mode 100644
index 0000000..0d88fb9
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeReference.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeReference.h>
+
+int
+RANAP_DataVolumeReference_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_DataVolumeReference_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DataVolumeReference_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReference_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReference_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReference_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReference_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReference_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReference_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReference_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReference_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataVolumeReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DataVolumeReference_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeReference_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReference = {
+ "RANAP_DataVolumeReference",
+ "RANAP_DataVolumeReference",
+ RANAP_DataVolumeReference_free,
+ RANAP_DataVolumeReference_print,
+ RANAP_DataVolumeReference_constraint,
+ RANAP_DataVolumeReference_decode_ber,
+ RANAP_DataVolumeReference_encode_der,
+ RANAP_DataVolumeReference_decode_xer,
+ RANAP_DataVolumeReference_encode_xer,
+ RANAP_DataVolumeReference_decode_uper,
+ RANAP_DataVolumeReference_encode_uper,
+ RANAP_DataVolumeReference_decode_aper,
+ RANAP_DataVolumeReference_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeReference_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeReference_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReference_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeReference_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeReference_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReference_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DataVolumeReference_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeReport.c b/src/ranap/RANAP_DataVolumeReport.c
new file mode 100644
index 0000000..2c1d6b0
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeReport.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeReport.h>
+
+static int
+memb_dataVolumeReport_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_dataVolumeReport_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_dataVolumeReport_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_dataVolumeReport_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_dataVolumeReport_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dataVolumeReport_ies_specs_2 = {
+ sizeof(struct dataVolumeReport_ies),
+ offsetof(struct dataVolumeReport_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dataVolumeReport_ies_2 = {
+ "dataVolumeReport-ies",
+ "dataVolumeReport-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_dataVolumeReport_ies_tags_2,
+ sizeof(asn_DEF_dataVolumeReport_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReport_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_dataVolumeReport_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_dataVolumeReport_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReport_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_dataVolumeReport_ies_constr_2,
+ asn_MBR_dataVolumeReport_ies_2,
+ 1, /* Single element */
+ &asn_SPC_dataVolumeReport_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DataVolumeReport_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DataVolumeReport, dataVolumeReport_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_dataVolumeReport_ies_2,
+ memb_dataVolumeReport_ies_constraint_1,
+ &asn_PER_memb_dataVolumeReport_ies_constr_2,
+ 0,
+ "dataVolumeReport-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeReport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DataVolumeReport_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dataVolumeReport-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DataVolumeReport_specs_1 = {
+ sizeof(struct RANAP_DataVolumeReport),
+ offsetof(struct RANAP_DataVolumeReport, _asn_ctx),
+ asn_MAP_RANAP_DataVolumeReport_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReport = {
+ "RANAP_DataVolumeReport",
+ "RANAP_DataVolumeReport",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeReport_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeReport_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReport_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeReport_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeReport_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReport_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DataVolumeReport_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_DataVolumeReport_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeReportList.c b/src/ranap/RANAP_DataVolumeReportList.c
new file mode 100644
index 0000000..1476e7d
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeReportList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeReportList.h>
+
+static int
+memb_dataVolumeReportListe_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_dataVolumeReportListe_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_dataVolumeReportListe_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_dataVolumeReportListe_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_dataVolumeReportListe_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dataVolumeReportListe_ies_specs_2 = {
+ sizeof(struct dataVolumeReportListe_ies),
+ offsetof(struct dataVolumeReportListe_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dataVolumeReportListe_ies_2 = {
+ "dataVolumeReportListe-ies",
+ "dataVolumeReportListe-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_dataVolumeReportListe_ies_tags_2,
+ sizeof(asn_DEF_dataVolumeReportListe_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReportListe_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_dataVolumeReportListe_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_dataVolumeReportListe_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReportListe_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_dataVolumeReportListe_ies_constr_2,
+ asn_MBR_dataVolumeReportListe_ies_2,
+ 1, /* Single element */
+ &asn_SPC_dataVolumeReportListe_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DataVolumeReportList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DataVolumeReportList, dataVolumeReportListe_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_dataVolumeReportListe_ies_2,
+ memb_dataVolumeReportListe_ies_constraint_1,
+ &asn_PER_memb_dataVolumeReportListe_ies_constr_2,
+ 0,
+ "dataVolumeReportListe-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeReportList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DataVolumeReportList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dataVolumeReportListe-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DataVolumeReportList_specs_1 = {
+ sizeof(struct RANAP_DataVolumeReportList),
+ offsetof(struct RANAP_DataVolumeReportList, _asn_ctx),
+ asn_MAP_RANAP_DataVolumeReportList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportList = {
+ "RANAP_DataVolumeReportList",
+ "RANAP_DataVolumeReportList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeReportList_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeReportList_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeReportList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeReportList_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DataVolumeReportList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_DataVolumeReportList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeReportRequest.c b/src/ranap/RANAP_DataVolumeReportRequest.c
new file mode 100644
index 0000000..2b0463a
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeReportRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeReportRequest.h>
+
+static int
+memb_dataVolumeReportRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_dataVolumeReportRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_dataVolumeReportRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_dataVolumeReportRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_dataVolumeReportRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dataVolumeReportRequest_ies_specs_2 = {
+ sizeof(struct dataVolumeReportRequest_ies),
+ offsetof(struct dataVolumeReportRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dataVolumeReportRequest_ies_2 = {
+ "dataVolumeReportRequest-ies",
+ "dataVolumeReportRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_dataVolumeReportRequest_ies_tags_2,
+ sizeof(asn_DEF_dataVolumeReportRequest_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReportRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_dataVolumeReportRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_dataVolumeReportRequest_ies_tags_2)
+ /sizeof(asn_DEF_dataVolumeReportRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_dataVolumeReportRequest_ies_constr_2,
+ asn_MBR_dataVolumeReportRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_dataVolumeReportRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DataVolumeReportRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DataVolumeReportRequest, dataVolumeReportRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_dataVolumeReportRequest_ies_2,
+ memb_dataVolumeReportRequest_ies_constraint_1,
+ &asn_PER_memb_dataVolumeReportRequest_ies_constr_2,
+ 0,
+ "dataVolumeReportRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeReportRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DataVolumeReportRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dataVolumeReportRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DataVolumeReportRequest_specs_1 = {
+ sizeof(struct RANAP_DataVolumeReportRequest),
+ offsetof(struct RANAP_DataVolumeReportRequest, _asn_ctx),
+ asn_MAP_RANAP_DataVolumeReportRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportRequest = {
+ "RANAP_DataVolumeReportRequest",
+ "RANAP_DataVolumeReportRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeReportRequest_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeReportRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeReportRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeReportRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DataVolumeReportRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_DataVolumeReportRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DataVolumeReportingIndication.c b/src/ranap/RANAP_DataVolumeReportingIndication.c
new file mode 100644
index 0000000..a549bcf
--- /dev/null
+++ b/src/ranap/RANAP_DataVolumeReportingIndication.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DataVolumeReportingIndication.h>
+
+int
+RANAP_DataVolumeReportingIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_DataVolumeReportingIndication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DataVolumeReportingIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReportingIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReportingIndication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReportingIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReportingIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReportingIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReportingIndication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DataVolumeReportingIndication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DataVolumeReportingIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DataVolumeReportingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DataVolumeReportingIndication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_DataVolumeReportingIndication_value2enum_1[] = {
+ { 0, 9, "do-report" },
+ { 1, 13, "do-not-report" }
+};
+static const unsigned int asn_MAP_RANAP_DataVolumeReportingIndication_enum2value_1[] = {
+ 1, /* do-not-report(1) */
+ 0 /* do-report(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_DataVolumeReportingIndication_specs_1 = {
+ asn_MAP_RANAP_DataVolumeReportingIndication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_DataVolumeReportingIndication_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DataVolumeReportingIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DataVolumeReportingIndication = {
+ "RANAP_DataVolumeReportingIndication",
+ "RANAP_DataVolumeReportingIndication",
+ RANAP_DataVolumeReportingIndication_free,
+ RANAP_DataVolumeReportingIndication_print,
+ RANAP_DataVolumeReportingIndication_constraint,
+ RANAP_DataVolumeReportingIndication_decode_ber,
+ RANAP_DataVolumeReportingIndication_encode_der,
+ RANAP_DataVolumeReportingIndication_decode_xer,
+ RANAP_DataVolumeReportingIndication_encode_xer,
+ RANAP_DataVolumeReportingIndication_decode_uper,
+ RANAP_DataVolumeReportingIndication_encode_uper,
+ RANAP_DataVolumeReportingIndication_decode_aper,
+ RANAP_DataVolumeReportingIndication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DataVolumeReportingIndication_tags_1,
+ sizeof(asn_DEF_RANAP_DataVolumeReportingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportingIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DataVolumeReportingIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DataVolumeReportingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_DataVolumeReportingIndication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DataVolumeReportingIndication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_DataVolumeReportingIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DeliveryOfErroneousSDU.c b/src/ranap/RANAP_DeliveryOfErroneousSDU.c
new file mode 100644
index 0000000..6da9d59
--- /dev/null
+++ b/src/ranap/RANAP_DeliveryOfErroneousSDU.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DeliveryOfErroneousSDU.h>
+
+int
+RANAP_DeliveryOfErroneousSDU_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_DeliveryOfErroneousSDU_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DeliveryOfErroneousSDU_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOfErroneousSDU_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOfErroneousSDU_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOfErroneousSDU_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOfErroneousSDU_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOfErroneousSDU_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOfErroneousSDU_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOfErroneousSDU_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOfErroneousSDU_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DeliveryOfErroneousSDU_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DeliveryOfErroneousSDU_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_DeliveryOfErroneousSDU_value2enum_1[] = {
+ { 0, 3, "yes" },
+ { 1, 2, "no" },
+ { 2, 32, "no-error-detection-consideration" }
+};
+static const unsigned int asn_MAP_RANAP_DeliveryOfErroneousSDU_enum2value_1[] = {
+ 1, /* no(1) */
+ 2, /* no-error-detection-consideration(2) */
+ 0 /* yes(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_DeliveryOfErroneousSDU_specs_1 = {
+ asn_MAP_RANAP_DeliveryOfErroneousSDU_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_DeliveryOfErroneousSDU_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DeliveryOfErroneousSDU = {
+ "RANAP_DeliveryOfErroneousSDU",
+ "RANAP_DeliveryOfErroneousSDU",
+ RANAP_DeliveryOfErroneousSDU_free,
+ RANAP_DeliveryOfErroneousSDU_print,
+ RANAP_DeliveryOfErroneousSDU_constraint,
+ RANAP_DeliveryOfErroneousSDU_decode_ber,
+ RANAP_DeliveryOfErroneousSDU_encode_der,
+ RANAP_DeliveryOfErroneousSDU_decode_xer,
+ RANAP_DeliveryOfErroneousSDU_encode_xer,
+ RANAP_DeliveryOfErroneousSDU_decode_uper,
+ RANAP_DeliveryOfErroneousSDU_encode_uper,
+ RANAP_DeliveryOfErroneousSDU_decode_aper,
+ RANAP_DeliveryOfErroneousSDU_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1,
+ sizeof(asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1)
+ /sizeof(asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1)
+ /sizeof(asn_DEF_RANAP_DeliveryOfErroneousSDU_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DeliveryOfErroneousSDU_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_DeliveryOfErroneousSDU_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DeliveryOrder.c b/src/ranap/RANAP_DeliveryOrder.c
new file mode 100644
index 0000000..f8443f6
--- /dev/null
+++ b/src/ranap/RANAP_DeliveryOrder.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DeliveryOrder.h>
+
+int
+RANAP_DeliveryOrder_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_DeliveryOrder_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DeliveryOrder_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOrder_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOrder_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOrder_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOrder_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOrder_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOrder_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DeliveryOrder_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DeliveryOrder_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DeliveryOrder_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DeliveryOrder_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_DeliveryOrder_value2enum_1[] = {
+ { 0, 24, "delivery-order-requested" },
+ { 1, 28, "delivery-order-not-requested" }
+};
+static const unsigned int asn_MAP_RANAP_DeliveryOrder_enum2value_1[] = {
+ 1, /* delivery-order-not-requested(1) */
+ 0 /* delivery-order-requested(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_DeliveryOrder_specs_1 = {
+ asn_MAP_RANAP_DeliveryOrder_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_DeliveryOrder_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DeliveryOrder_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DeliveryOrder = {
+ "RANAP_DeliveryOrder",
+ "RANAP_DeliveryOrder",
+ RANAP_DeliveryOrder_free,
+ RANAP_DeliveryOrder_print,
+ RANAP_DeliveryOrder_constraint,
+ RANAP_DeliveryOrder_decode_ber,
+ RANAP_DeliveryOrder_encode_der,
+ RANAP_DeliveryOrder_decode_xer,
+ RANAP_DeliveryOrder_encode_xer,
+ RANAP_DeliveryOrder_decode_uper,
+ RANAP_DeliveryOrder_encode_uper,
+ RANAP_DeliveryOrder_decode_aper,
+ RANAP_DeliveryOrder_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DeliveryOrder_tags_1,
+ sizeof(asn_DEF_RANAP_DeliveryOrder_tags_1)
+ /sizeof(asn_DEF_RANAP_DeliveryOrder_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DeliveryOrder_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DeliveryOrder_tags_1)
+ /sizeof(asn_DEF_RANAP_DeliveryOrder_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DeliveryOrder_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_DeliveryOrder_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DeltaRAListofIdleModeUEs.c b/src/ranap/RANAP_DeltaRAListofIdleModeUEs.c
new file mode 100644
index 0000000..8ebd374
--- /dev/null
+++ b/src/ranap/RANAP_DeltaRAListofIdleModeUEs.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DeltaRAListofIdleModeUEs.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_DeltaRAListofIdleModeUEs_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_DeltaRAListofIdleModeUEs, newRAListofIdleModeUEs),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NewRAListofIdleModeUEs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "newRAListofIdleModeUEs"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_DeltaRAListofIdleModeUEs, rAListwithNoIdleModeUEsAnyMore),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAListwithNoIdleModeUEsAnyMore"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_DeltaRAListofIdleModeUEs, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_DeltaRAListofIdleModeUEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DeltaRAListofIdleModeUEs_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* newRAListofIdleModeUEs */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAListwithNoIdleModeUEsAnyMore */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DeltaRAListofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_DeltaRAListofIdleModeUEs),
+ offsetof(struct RANAP_DeltaRAListofIdleModeUEs, _asn_ctx),
+ asn_MAP_RANAP_DeltaRAListofIdleModeUEs_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_DeltaRAListofIdleModeUEs_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DeltaRAListofIdleModeUEs = {
+ "RANAP_DeltaRAListofIdleModeUEs",
+ "RANAP_DeltaRAListofIdleModeUEs",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1,
+ sizeof(asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_DeltaRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DeltaRAListofIdleModeUEs_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_DeltaRAListofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DirectInformationTransfer.c b/src/ranap/RANAP_DirectInformationTransfer.c
new file mode 100644
index 0000000..0f7d143
--- /dev/null
+++ b/src/ranap/RANAP_DirectInformationTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DirectInformationTransfer.h>
+
+static int
+memb_directInformationTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_directInformationTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_directInformationTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_directInformationTransfer_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_directInformationTransfer_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_directInformationTransfer_ies_specs_2 = {
+ sizeof(struct directInformationTransfer_ies),
+ offsetof(struct directInformationTransfer_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directInformationTransfer_ies_2 = {
+ "directInformationTransfer-ies",
+ "directInformationTransfer-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_directInformationTransfer_ies_tags_2,
+ sizeof(asn_DEF_directInformationTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directInformationTransfer_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_directInformationTransfer_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_directInformationTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directInformationTransfer_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_directInformationTransfer_ies_constr_2,
+ asn_MBR_directInformationTransfer_ies_2,
+ 1, /* Single element */
+ &asn_SPC_directInformationTransfer_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DirectInformationTransfer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DirectInformationTransfer, directInformationTransfer_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_directInformationTransfer_ies_2,
+ memb_directInformationTransfer_ies_constraint_1,
+ &asn_PER_memb_directInformationTransfer_ies_constr_2,
+ 0,
+ "directInformationTransfer-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DirectInformationTransfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DirectInformationTransfer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* directInformationTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DirectInformationTransfer_specs_1 = {
+ sizeof(struct RANAP_DirectInformationTransfer),
+ offsetof(struct RANAP_DirectInformationTransfer, _asn_ctx),
+ asn_MAP_RANAP_DirectInformationTransfer_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DirectInformationTransfer = {
+ "RANAP_DirectInformationTransfer",
+ "RANAP_DirectInformationTransfer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DirectInformationTransfer_tags_1,
+ sizeof(asn_DEF_RANAP_DirectInformationTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectInformationTransfer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DirectInformationTransfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DirectInformationTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectInformationTransfer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DirectInformationTransfer_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_DirectInformationTransfer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DirectReportingIndicator.c b/src/ranap/RANAP_DirectReportingIndicator.c
new file mode 100644
index 0000000..8b9c560
--- /dev/null
+++ b/src/ranap/RANAP_DirectReportingIndicator.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DirectReportingIndicator.h>
+
+int
+RANAP_DirectReportingIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_DirectReportingIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_DirectReportingIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DirectReportingIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_DirectReportingIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DirectReportingIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_DirectReportingIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_DirectReportingIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_DirectReportingIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_DirectReportingIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_DirectReportingIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_DirectReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_DirectReportingIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_DirectReportingIndicator_value2enum_1[] = {
+ { 0, 9, "directSAI" },
+ { 1, 9, "directGeo" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_DirectReportingIndicator_enum2value_1[] = {
+ 1, /* directGeo(1) */
+ 0 /* directSAI(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_DirectReportingIndicator_specs_1 = {
+ asn_MAP_RANAP_DirectReportingIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_DirectReportingIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DirectReportingIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DirectReportingIndicator = {
+ "RANAP_DirectReportingIndicator",
+ "RANAP_DirectReportingIndicator",
+ RANAP_DirectReportingIndicator_free,
+ RANAP_DirectReportingIndicator_print,
+ RANAP_DirectReportingIndicator_constraint,
+ RANAP_DirectReportingIndicator_decode_ber,
+ RANAP_DirectReportingIndicator_encode_der,
+ RANAP_DirectReportingIndicator_decode_xer,
+ RANAP_DirectReportingIndicator_encode_xer,
+ RANAP_DirectReportingIndicator_decode_uper,
+ RANAP_DirectReportingIndicator_encode_uper,
+ RANAP_DirectReportingIndicator_decode_aper,
+ RANAP_DirectReportingIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DirectReportingIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_DirectReportingIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectReportingIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DirectReportingIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DirectReportingIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectReportingIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DirectReportingIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_DirectReportingIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DirectTransfer-IE-ContainerList.c b/src/ranap/RANAP_DirectTransfer-IE-ContainerList.c
new file mode 100644
index 0000000..a4fae90
--- /dev/null
+++ b/src/ranap/RANAP_DirectTransfer-IE-ContainerList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DirectTransfer-IE-ContainerList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_DirectTransfer_IE_ContainerList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 15l } /* (SIZE(1..15)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_DirectTransfer_IE_ContainerList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_DirectTransfer_IE_ContainerList_specs_1 = {
+ sizeof(struct RANAP_DirectTransfer_IE_ContainerList),
+ offsetof(struct RANAP_DirectTransfer_IE_ContainerList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransfer_IE_ContainerList = {
+ "RANAP_DirectTransfer-IE-ContainerList",
+ "RANAP_DirectTransfer-IE-ContainerList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1,
+ sizeof(asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransfer_IE_ContainerList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_DirectTransfer_IE_ContainerList_constr_1,
+ asn_MBR_RANAP_DirectTransfer_IE_ContainerList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_DirectTransfer_IE_ContainerList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DirectTransfer.c b/src/ranap/RANAP_DirectTransfer.c
new file mode 100644
index 0000000..03fed10
--- /dev/null
+++ b/src/ranap/RANAP_DirectTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DirectTransfer.h>
+
+static int
+memb_directTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_directTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_directTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_directTransfer_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_directTransfer_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_directTransfer_ies_specs_2 = {
+ sizeof(struct directTransfer_ies),
+ offsetof(struct directTransfer_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directTransfer_ies_2 = {
+ "directTransfer-ies",
+ "directTransfer-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_directTransfer_ies_tags_2,
+ sizeof(asn_DEF_directTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directTransfer_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_directTransfer_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_directTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directTransfer_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_directTransfer_ies_constr_2,
+ asn_MBR_directTransfer_ies_2,
+ 1, /* Single element */
+ &asn_SPC_directTransfer_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_DirectTransfer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DirectTransfer, directTransfer_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_directTransfer_ies_2,
+ memb_directTransfer_ies_constraint_1,
+ &asn_PER_memb_directTransfer_ies_constr_2,
+ 0,
+ "directTransfer-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_DirectTransfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DirectTransfer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* directTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DirectTransfer_specs_1 = {
+ sizeof(struct RANAP_DirectTransfer),
+ offsetof(struct RANAP_DirectTransfer, _asn_ctx),
+ asn_MAP_RANAP_DirectTransfer_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransfer = {
+ "RANAP_DirectTransfer",
+ "RANAP_DirectTransfer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DirectTransfer_tags_1,
+ sizeof(asn_DEF_RANAP_DirectTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransfer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DirectTransfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DirectTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransfer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DirectTransfer_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_DirectTransfer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.c b/src/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.c
new file mode 100644
index 0000000..dca65f8
--- /dev/null
+++ b/src/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_DirectTransferInformationItem-RANAP-RelocInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_DirectTransferInformationItem_RANAP_RelocInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf, nAS_PDU),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NAS_PDU,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "nAS-PDU"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf, sAPI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAPI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sAPI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf, cN_DomainIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cN-DomainIndicator"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_DirectTransferInformationItem_RANAP_RelocInf_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nAS-PDU */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sAPI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cN-DomainIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_DirectTransferInformationItem_RANAP_RelocInf_specs_1 = {
+ sizeof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf),
+ offsetof(struct RANAP_DirectTransferInformationItem_RANAP_RelocInf, _asn_ctx),
+ asn_MAP_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_DirectTransferInformationItem_RANAP_RelocInf_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf = {
+ "RANAP_DirectTransferInformationItem-RANAP-RelocInf",
+ "RANAP_DirectTransferInformationItem-RANAP-RelocInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1,
+ sizeof(asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_DirectTransferInformationItem_RANAP_RelocInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_DirectTransferInformationItem_RANAP_RelocInf_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_DirectTransferInformationItem_RANAP_RelocInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_E-DCH-MAC-d-Flow-ID.c b/src/ranap/RANAP_E-DCH-MAC-d-Flow-ID.c
new file mode 100644
index 0000000..19a69ff
--- /dev/null
+++ b/src/ranap/RANAP_E-DCH-MAC-d-Flow-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_E-DCH-MAC-d-Flow-ID.h>
+
+int
+RANAP_E_DCH_MAC_d_Flow_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 7l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_E_DCH_MAC_d_Flow_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_E_DCH_MAC_d_Flow_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_E_DCH_MAC_d_Flow_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_E_DCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_E_DCH_MAC_d_Flow_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (0..7) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID = {
+ "RANAP_E-DCH-MAC-d-Flow-ID",
+ "RANAP_E-DCH-MAC-d-Flow-ID",
+ RANAP_E_DCH_MAC_d_Flow_ID_free,
+ RANAP_E_DCH_MAC_d_Flow_ID_print,
+ RANAP_E_DCH_MAC_d_Flow_ID_constraint,
+ RANAP_E_DCH_MAC_d_Flow_ID_decode_ber,
+ RANAP_E_DCH_MAC_d_Flow_ID_encode_der,
+ RANAP_E_DCH_MAC_d_Flow_ID_decode_xer,
+ RANAP_E_DCH_MAC_d_Flow_ID_encode_xer,
+ RANAP_E_DCH_MAC_d_Flow_ID_decode_uper,
+ RANAP_E_DCH_MAC_d_Flow_ID_encode_uper,
+ RANAP_E_DCH_MAC_d_Flow_ID_decode_aper,
+ RANAP_E_DCH_MAC_d_Flow_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1,
+ sizeof(asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_E_DCH_MAC_d_Flow_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_E_DCH_MAC_d_Flow_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_E-UTRAN-Service-Handover.c b/src/ranap/RANAP_E-UTRAN-Service-Handover.c
new file mode 100644
index 0000000..8f964a3
--- /dev/null
+++ b/src/ranap/RANAP_E-UTRAN-Service-Handover.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_E-UTRAN-Service-Handover.h>
+
+int
+RANAP_E_UTRAN_Service_Handover_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_E_UTRAN_Service_Handover_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_E_UTRAN_Service_Handover_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_UTRAN_Service_Handover_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_E_UTRAN_Service_Handover_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_UTRAN_Service_Handover_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_E_UTRAN_Service_Handover_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_E_UTRAN_Service_Handover_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_E_UTRAN_Service_Handover_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_E_UTRAN_Service_Handover_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_E_UTRAN_Service_Handover_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_E_UTRAN_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_E_UTRAN_Service_Handover_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_E_UTRAN_Service_Handover_value2enum_1[] = {
+ { 0, 42, "handover-to-E-UTRAN-shall-not-be-performed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_E_UTRAN_Service_Handover_enum2value_1[] = {
+ 0 /* handover-to-E-UTRAN-shall-not-be-performed(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_E_UTRAN_Service_Handover_specs_1 = {
+ asn_MAP_RANAP_E_UTRAN_Service_Handover_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_E_UTRAN_Service_Handover_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_E_UTRAN_Service_Handover = {
+ "RANAP_E-UTRAN-Service-Handover",
+ "RANAP_E-UTRAN-Service-Handover",
+ RANAP_E_UTRAN_Service_Handover_free,
+ RANAP_E_UTRAN_Service_Handover_print,
+ RANAP_E_UTRAN_Service_Handover_constraint,
+ RANAP_E_UTRAN_Service_Handover_decode_ber,
+ RANAP_E_UTRAN_Service_Handover_encode_der,
+ RANAP_E_UTRAN_Service_Handover_decode_xer,
+ RANAP_E_UTRAN_Service_Handover_encode_xer,
+ RANAP_E_UTRAN_Service_Handover_decode_uper,
+ RANAP_E_UTRAN_Service_Handover_encode_uper,
+ RANAP_E_UTRAN_Service_Handover_decode_aper,
+ RANAP_E_UTRAN_Service_Handover_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1,
+ sizeof(asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1)
+ /sizeof(asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1)
+ /sizeof(asn_DEF_RANAP_E_UTRAN_Service_Handover_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_E_UTRAN_Service_Handover_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_E_UTRAN_Service_Handover_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EARFCN-Extended.c b/src/ranap/RANAP_EARFCN-Extended.c
new file mode 100644
index 0000000..09340d1
--- /dev/null
+++ b/src/ranap/RANAP_EARFCN-Extended.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EARFCN-Extended.h>
+
+int
+RANAP_EARFCN_Extended_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 65536l && value <= 262143l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_EARFCN_Extended_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_EARFCN_Extended_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EARFCN_Extended_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_EARFCN_Extended_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EARFCN_Extended_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_EARFCN_Extended_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EARFCN_Extended_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_EARFCN_Extended_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_EARFCN_Extended_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_EARFCN_Extended_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EARFCN_Extended_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_EARFCN_Extended_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 18, -1, 65536l, 262143l } /* (65536..262143,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EARFCN_Extended_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EARFCN_Extended = {
+ "RANAP_EARFCN-Extended",
+ "RANAP_EARFCN-Extended",
+ RANAP_EARFCN_Extended_free,
+ RANAP_EARFCN_Extended_print,
+ RANAP_EARFCN_Extended_constraint,
+ RANAP_EARFCN_Extended_decode_ber,
+ RANAP_EARFCN_Extended_encode_der,
+ RANAP_EARFCN_Extended_decode_xer,
+ RANAP_EARFCN_Extended_encode_xer,
+ RANAP_EARFCN_Extended_decode_uper,
+ RANAP_EARFCN_Extended_encode_uper,
+ RANAP_EARFCN_Extended_decode_aper,
+ RANAP_EARFCN_Extended_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EARFCN_Extended_tags_1,
+ sizeof(asn_DEF_RANAP_EARFCN_Extended_tags_1)
+ /sizeof(asn_DEF_RANAP_EARFCN_Extended_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EARFCN_Extended_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EARFCN_Extended_tags_1)
+ /sizeof(asn_DEF_RANAP_EARFCN_Extended_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_EARFCN_Extended_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ENB-ID.c b/src/ranap/RANAP_ENB-ID.c
new file mode 100644
index 0000000..f7e855d
--- /dev/null
+++ b/src/ranap/RANAP_ENB-ID.c
@@ -0,0 +1,144 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ENB-ID.h>
+
+static int
+memb_macroENB_ID_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 20l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_homeENB_ID_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 28l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_macroENB_ID_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 20l, 20l } /* (SIZE(20..20)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_homeENB_ID_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 28l, 28l } /* (SIZE(28..28)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RANAP_ENB_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ENB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ENB_ID, choice.macroENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_macroENB_ID_constraint_1,
+ &asn_PER_memb_macroENB_ID_constr_2,
+ 0,
+ "macroENB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ENB_ID, choice.homeENB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_homeENB_ID_constraint_1,
+ &asn_PER_memb_homeENB_ID_constr_3,
+ 0,
+ "homeENB-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ENB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroENB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* homeENB-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_ENB_ID_specs_1 = {
+ sizeof(struct RANAP_ENB_ID),
+ offsetof(struct RANAP_ENB_ID, _asn_ctx),
+ offsetof(struct RANAP_ENB_ID, present),
+ sizeof(((struct RANAP_ENB_ID *)0)->present),
+ asn_MAP_RANAP_ENB_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ENB_ID = {
+ "RANAP_ENB-ID",
+ "RANAP_ENB-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_ENB_ID_constr_1,
+ asn_MBR_RANAP_ENB_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_ENB_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EUTRANFrequencies.c b/src/ranap/RANAP_EUTRANFrequencies.c
new file mode 100644
index 0000000..f6faca6
--- /dev/null
+++ b/src/ranap/RANAP_EUTRANFrequencies.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EUTRANFrequencies.h>
+
+static int
+memb_earfcn_constraint_2(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_earfcn_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RANAP_EUTRANFrequencies_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (SIZE(1..8)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberJ_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberJ, earfcn),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_earfcn_constraint_2,
+ &asn_PER_memb_earfcn_constr_3,
+ 0,
+ "earfcn"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberJ, measBand),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MeasBand,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "measBand"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberJ, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberJ_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MemberJ_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberJ_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* earfcn */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measBand */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberJ_specs_2 = {
+ sizeof(struct MemberJ),
+ offsetof(struct MemberJ, _asn_ctx),
+ asn_MAP_MemberJ_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberJ_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberJ_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberJ_tags_2,
+ sizeof(asn_DEF_MemberJ_tags_2)
+ /sizeof(asn_DEF_MemberJ_tags_2[0]), /* 1 */
+ asn_DEF_MemberJ_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberJ_tags_2)
+ /sizeof(asn_DEF_MemberJ_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberJ_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberJ_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_EUTRANFrequencies_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberJ_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EUTRANFrequencies_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_EUTRANFrequencies_specs_1 = {
+ sizeof(struct RANAP_EUTRANFrequencies),
+ offsetof(struct RANAP_EUTRANFrequencies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EUTRANFrequencies = {
+ "RANAP_EUTRANFrequencies",
+ "RANAP_EUTRANFrequencies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EUTRANFrequencies_tags_1,
+ sizeof(asn_DEF_RANAP_EUTRANFrequencies_tags_1)
+ /sizeof(asn_DEF_RANAP_EUTRANFrequencies_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EUTRANFrequencies_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EUTRANFrequencies_tags_1)
+ /sizeof(asn_DEF_RANAP_EUTRANFrequencies_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_EUTRANFrequencies_constr_1,
+ asn_MBR_RANAP_EUTRANFrequencies_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_EUTRANFrequencies_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EncryptionAlgorithm.c b/src/ranap/RANAP_EncryptionAlgorithm.c
new file mode 100644
index 0000000..b8df715
--- /dev/null
+++ b/src/ranap/RANAP_EncryptionAlgorithm.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EncryptionAlgorithm.h>
+
+int
+RANAP_EncryptionAlgorithm_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_EncryptionAlgorithm_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_EncryptionAlgorithm_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionAlgorithm_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionAlgorithm_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionAlgorithm_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionAlgorithm_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionAlgorithm_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionAlgorithm_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionAlgorithm_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionAlgorithm_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EncryptionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_EncryptionAlgorithm_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (0..15) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EncryptionAlgorithm_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionAlgorithm = {
+ "RANAP_EncryptionAlgorithm",
+ "RANAP_EncryptionAlgorithm",
+ RANAP_EncryptionAlgorithm_free,
+ RANAP_EncryptionAlgorithm_print,
+ RANAP_EncryptionAlgorithm_constraint,
+ RANAP_EncryptionAlgorithm_decode_ber,
+ RANAP_EncryptionAlgorithm_encode_der,
+ RANAP_EncryptionAlgorithm_decode_xer,
+ RANAP_EncryptionAlgorithm_encode_xer,
+ RANAP_EncryptionAlgorithm_decode_uper,
+ RANAP_EncryptionAlgorithm_encode_uper,
+ RANAP_EncryptionAlgorithm_decode_aper,
+ RANAP_EncryptionAlgorithm_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EncryptionAlgorithm_tags_1,
+ sizeof(asn_DEF_RANAP_EncryptionAlgorithm_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionAlgorithm_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EncryptionAlgorithm_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EncryptionAlgorithm_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionAlgorithm_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_EncryptionAlgorithm_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_EncryptionInformation.c b/src/ranap/RANAP_EncryptionInformation.c
new file mode 100644
index 0000000..0f2c650
--- /dev/null
+++ b/src/ranap/RANAP_EncryptionInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EncryptionInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_EncryptionInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EncryptionInformation, permittedAlgorithms),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PermittedEncryptionAlgorithms,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "permittedAlgorithms"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EncryptionInformation, key),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_EncryptionKey,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "key"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_EncryptionInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_EncryptionInformation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_EncryptionInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EncryptionInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* permittedAlgorithms */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* key */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_EncryptionInformation_specs_1 = {
+ sizeof(struct RANAP_EncryptionInformation),
+ offsetof(struct RANAP_EncryptionInformation, _asn_ctx),
+ asn_MAP_RANAP_EncryptionInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_EncryptionInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionInformation = {
+ "RANAP_EncryptionInformation",
+ "RANAP_EncryptionInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EncryptionInformation_tags_1,
+ sizeof(asn_DEF_RANAP_EncryptionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EncryptionInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EncryptionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_EncryptionInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_EncryptionInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EncryptionKey.c b/src/ranap/RANAP_EncryptionKey.c
new file mode 100644
index 0000000..e451789
--- /dev/null
+++ b/src/ranap/RANAP_EncryptionKey.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EncryptionKey.h>
+
+int
+RANAP_EncryptionKey_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_EncryptionKey_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_EncryptionKey_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_EncryptionKey_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionKey_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionKey_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionKey_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionKey_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionKey_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionKey_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_EncryptionKey_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_EncryptionKey_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_EncryptionKey_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_EncryptionKey_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 128l, 128l } /* (SIZE(128..128)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EncryptionKey_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EncryptionKey = {
+ "RANAP_EncryptionKey",
+ "RANAP_EncryptionKey",
+ RANAP_EncryptionKey_free,
+ RANAP_EncryptionKey_print,
+ RANAP_EncryptionKey_constraint,
+ RANAP_EncryptionKey_decode_ber,
+ RANAP_EncryptionKey_encode_der,
+ RANAP_EncryptionKey_decode_xer,
+ RANAP_EncryptionKey_encode_xer,
+ RANAP_EncryptionKey_decode_uper,
+ RANAP_EncryptionKey_encode_uper,
+ RANAP_EncryptionKey_decode_aper,
+ RANAP_EncryptionKey_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EncryptionKey_tags_1,
+ sizeof(asn_DEF_RANAP_EncryptionKey_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionKey_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EncryptionKey_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EncryptionKey_tags_1)
+ /sizeof(asn_DEF_RANAP_EncryptionKey_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_EncryptionKey_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_End-Of-CSFB.c b/src/ranap/RANAP_End-Of-CSFB.c
new file mode 100644
index 0000000..d409967
--- /dev/null
+++ b/src/ranap/RANAP_End-Of-CSFB.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_End-Of-CSFB.h>
+
+int
+RANAP_End_Of_CSFB_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_End_Of_CSFB_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_End_Of_CSFB_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_End_Of_CSFB_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_End_Of_CSFB_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_End_Of_CSFB_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_End_Of_CSFB_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_End_Of_CSFB_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_End_Of_CSFB_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_End_Of_CSFB_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_End_Of_CSFB_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_End_Of_CSFB_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_End_Of_CSFB_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_End_Of_CSFB_value2enum_1[] = {
+ { 0, 11, "end-of-CSFB" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_End_Of_CSFB_enum2value_1[] = {
+ 0 /* end-of-CSFB(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_End_Of_CSFB_specs_1 = {
+ asn_MAP_RANAP_End_Of_CSFB_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_End_Of_CSFB_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_End_Of_CSFB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_End_Of_CSFB = {
+ "RANAP_End-Of-CSFB",
+ "RANAP_End-Of-CSFB",
+ RANAP_End_Of_CSFB_free,
+ RANAP_End_Of_CSFB_print,
+ RANAP_End_Of_CSFB_constraint,
+ RANAP_End_Of_CSFB_decode_ber,
+ RANAP_End_Of_CSFB_encode_der,
+ RANAP_End_Of_CSFB_decode_xer,
+ RANAP_End_Of_CSFB_encode_xer,
+ RANAP_End_Of_CSFB_decode_uper,
+ RANAP_End_Of_CSFB_encode_uper,
+ RANAP_End_Of_CSFB_decode_aper,
+ RANAP_End_Of_CSFB_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_End_Of_CSFB_tags_1,
+ sizeof(asn_DEF_RANAP_End_Of_CSFB_tags_1)
+ /sizeof(asn_DEF_RANAP_End_Of_CSFB_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_End_Of_CSFB_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_End_Of_CSFB_tags_1)
+ /sizeof(asn_DEF_RANAP_End_Of_CSFB_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_End_Of_CSFB_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_End_Of_CSFB_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EnhancedRelocationCompleteConfirm.c b/src/ranap/RANAP_EnhancedRelocationCompleteConfirm.c
new file mode 100644
index 0000000..0c5d28b
--- /dev/null
+++ b/src/ranap/RANAP_EnhancedRelocationCompleteConfirm.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteConfirm.h>
+
+static int
+memb_enhancedRelocationCompleteConfirm_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_enhancedRelocationCompleteConfirm_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_enhancedRelocationCompleteConfirm_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_enhancedRelocationCompleteConfirm_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_enhancedRelocationCompleteConfirm_ies_specs_2 = {
+ sizeof(struct enhancedRelocationCompleteConfirm_ies),
+ offsetof(struct enhancedRelocationCompleteConfirm_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_enhancedRelocationCompleteConfirm_ies_2 = {
+ "enhancedRelocationCompleteConfirm-ies",
+ "enhancedRelocationCompleteConfirm-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2,
+ sizeof(asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteConfirm_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_enhancedRelocationCompleteConfirm_ies_constr_2,
+ asn_MBR_enhancedRelocationCompleteConfirm_ies_2,
+ 1, /* Single element */
+ &asn_SPC_enhancedRelocationCompleteConfirm_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_EnhancedRelocationCompleteConfirm_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EnhancedRelocationCompleteConfirm, enhancedRelocationCompleteConfirm_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_enhancedRelocationCompleteConfirm_ies_2,
+ memb_enhancedRelocationCompleteConfirm_ies_constraint_1,
+ &asn_PER_memb_enhancedRelocationCompleteConfirm_ies_constr_2,
+ 0,
+ "enhancedRelocationCompleteConfirm-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EnhancedRelocationCompleteConfirm_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* enhancedRelocationCompleteConfirm-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_EnhancedRelocationCompleteConfirm_specs_1 = {
+ sizeof(struct RANAP_EnhancedRelocationCompleteConfirm),
+ offsetof(struct RANAP_EnhancedRelocationCompleteConfirm, _asn_ctx),
+ asn_MAP_RANAP_EnhancedRelocationCompleteConfirm_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteConfirm = {
+ "RANAP_EnhancedRelocationCompleteConfirm",
+ "RANAP_EnhancedRelocationCompleteConfirm",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1,
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteConfirm_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_EnhancedRelocationCompleteConfirm_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_EnhancedRelocationCompleteConfirm_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EnhancedRelocationCompleteFailure.c b/src/ranap/RANAP_EnhancedRelocationCompleteFailure.c
new file mode 100644
index 0000000..7201203
--- /dev/null
+++ b/src/ranap/RANAP_EnhancedRelocationCompleteFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteFailure.h>
+
+static int
+memb_enhancedRelocationCompleteFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_enhancedRelocationCompleteFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_enhancedRelocationCompleteFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_enhancedRelocationCompleteFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_enhancedRelocationCompleteFailure_ies_specs_2 = {
+ sizeof(struct enhancedRelocationCompleteFailure_ies),
+ offsetof(struct enhancedRelocationCompleteFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_enhancedRelocationCompleteFailure_ies_2 = {
+ "enhancedRelocationCompleteFailure-ies",
+ "enhancedRelocationCompleteFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2,
+ sizeof(asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_enhancedRelocationCompleteFailure_ies_constr_2,
+ asn_MBR_enhancedRelocationCompleteFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_enhancedRelocationCompleteFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_EnhancedRelocationCompleteFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EnhancedRelocationCompleteFailure, enhancedRelocationCompleteFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_enhancedRelocationCompleteFailure_ies_2,
+ memb_enhancedRelocationCompleteFailure_ies_constraint_1,
+ &asn_PER_memb_enhancedRelocationCompleteFailure_ies_constr_2,
+ 0,
+ "enhancedRelocationCompleteFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EnhancedRelocationCompleteFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* enhancedRelocationCompleteFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_EnhancedRelocationCompleteFailure_specs_1 = {
+ sizeof(struct RANAP_EnhancedRelocationCompleteFailure),
+ offsetof(struct RANAP_EnhancedRelocationCompleteFailure, _asn_ctx),
+ asn_MAP_RANAP_EnhancedRelocationCompleteFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteFailure = {
+ "RANAP_EnhancedRelocationCompleteFailure",
+ "RANAP_EnhancedRelocationCompleteFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1,
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_EnhancedRelocationCompleteFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_EnhancedRelocationCompleteFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EnhancedRelocationCompleteRequest.c b/src/ranap/RANAP_EnhancedRelocationCompleteRequest.c
new file mode 100644
index 0000000..cd6a042
--- /dev/null
+++ b/src/ranap/RANAP_EnhancedRelocationCompleteRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteRequest.h>
+
+static int
+memb_enhancedRelocationCompleteRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_enhancedRelocationCompleteRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_enhancedRelocationCompleteRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_enhancedRelocationCompleteRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_enhancedRelocationCompleteRequest_ies_specs_2 = {
+ sizeof(struct enhancedRelocationCompleteRequest_ies),
+ offsetof(struct enhancedRelocationCompleteRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_enhancedRelocationCompleteRequest_ies_2 = {
+ "enhancedRelocationCompleteRequest-ies",
+ "enhancedRelocationCompleteRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2,
+ sizeof(asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_enhancedRelocationCompleteRequest_ies_constr_2,
+ asn_MBR_enhancedRelocationCompleteRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_enhancedRelocationCompleteRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_EnhancedRelocationCompleteRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EnhancedRelocationCompleteRequest, enhancedRelocationCompleteRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_enhancedRelocationCompleteRequest_ies_2,
+ memb_enhancedRelocationCompleteRequest_ies_constraint_1,
+ &asn_PER_memb_enhancedRelocationCompleteRequest_ies_constr_2,
+ 0,
+ "enhancedRelocationCompleteRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EnhancedRelocationCompleteRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* enhancedRelocationCompleteRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_EnhancedRelocationCompleteRequest_specs_1 = {
+ sizeof(struct RANAP_EnhancedRelocationCompleteRequest),
+ offsetof(struct RANAP_EnhancedRelocationCompleteRequest, _asn_ctx),
+ asn_MAP_RANAP_EnhancedRelocationCompleteRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteRequest = {
+ "RANAP_EnhancedRelocationCompleteRequest",
+ "RANAP_EnhancedRelocationCompleteRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1,
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_EnhancedRelocationCompleteRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_EnhancedRelocationCompleteRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EnhancedRelocationCompleteResponse.c b/src/ranap/RANAP_EnhancedRelocationCompleteResponse.c
new file mode 100644
index 0000000..ac1328e
--- /dev/null
+++ b/src/ranap/RANAP_EnhancedRelocationCompleteResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EnhancedRelocationCompleteResponse.h>
+
+static int
+memb_enhancedRelocationCompleteResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_enhancedRelocationCompleteResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_enhancedRelocationCompleteResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_enhancedRelocationCompleteResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_enhancedRelocationCompleteResponse_ies_specs_2 = {
+ sizeof(struct enhancedRelocationCompleteResponse_ies),
+ offsetof(struct enhancedRelocationCompleteResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_enhancedRelocationCompleteResponse_ies_2 = {
+ "enhancedRelocationCompleteResponse-ies",
+ "enhancedRelocationCompleteResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2,
+ sizeof(asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2)
+ /sizeof(asn_DEF_enhancedRelocationCompleteResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_enhancedRelocationCompleteResponse_ies_constr_2,
+ asn_MBR_enhancedRelocationCompleteResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_enhancedRelocationCompleteResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_EnhancedRelocationCompleteResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EnhancedRelocationCompleteResponse, enhancedRelocationCompleteResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_enhancedRelocationCompleteResponse_ies_2,
+ memb_enhancedRelocationCompleteResponse_ies_constraint_1,
+ &asn_PER_memb_enhancedRelocationCompleteResponse_ies_constr_2,
+ 0,
+ "enhancedRelocationCompleteResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EnhancedRelocationCompleteResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* enhancedRelocationCompleteResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_EnhancedRelocationCompleteResponse_specs_1 = {
+ sizeof(struct RANAP_EnhancedRelocationCompleteResponse),
+ offsetof(struct RANAP_EnhancedRelocationCompleteResponse, _asn_ctx),
+ asn_MAP_RANAP_EnhancedRelocationCompleteResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EnhancedRelocationCompleteResponse = {
+ "RANAP_EnhancedRelocationCompleteResponse",
+ "RANAP_EnhancedRelocationCompleteResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1,
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_EnhancedRelocationCompleteResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_EnhancedRelocationCompleteResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_EnhancedRelocationCompleteResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_EquipmentsToBeTraced.c b/src/ranap/RANAP_EquipmentsToBeTraced.c
new file mode 100644
index 0000000..cf6e08f
--- /dev/null
+++ b/src/ranap/RANAP_EquipmentsToBeTraced.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_EquipmentsToBeTraced.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_EquipmentsToBeTraced_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_EquipmentsToBeTraced_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EquipmentsToBeTraced, choice.iMEIlist),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEIList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEIlist"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EquipmentsToBeTraced, choice.iMEISVlist),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEISVList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEISVlist"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EquipmentsToBeTraced, choice.iMEIgroup),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEIGroup,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEIgroup"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_EquipmentsToBeTraced, choice.iMEISVgroup),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEISVGroup,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEISVgroup"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_EquipmentsToBeTraced_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMEIlist */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iMEISVlist */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iMEIgroup */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iMEISVgroup */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_EquipmentsToBeTraced_specs_1 = {
+ sizeof(struct RANAP_EquipmentsToBeTraced),
+ offsetof(struct RANAP_EquipmentsToBeTraced, _asn_ctx),
+ offsetof(struct RANAP_EquipmentsToBeTraced, present),
+ sizeof(((struct RANAP_EquipmentsToBeTraced *)0)->present),
+ asn_MAP_RANAP_EquipmentsToBeTraced_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_EquipmentsToBeTraced = {
+ "RANAP_EquipmentsToBeTraced",
+ "RANAP_EquipmentsToBeTraced",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_EquipmentsToBeTraced_constr_1,
+ asn_MBR_RANAP_EquipmentsToBeTraced_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_EquipmentsToBeTraced_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ErrorIndication.c b/src/ranap/RANAP_ErrorIndication.c
new file mode 100644
index 0000000..4fcb502
--- /dev/null
+++ b/src/ranap/RANAP_ErrorIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ErrorIndication.h>
+
+static int
+memb_errorIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_errorIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_errorIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_errorIndication_ies_specs_2 = {
+ sizeof(struct errorIndication_ies),
+ offsetof(struct errorIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_errorIndication_ies_2 = {
+ "errorIndication-ies",
+ "errorIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_errorIndication_ies_tags_2,
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_errorIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_errorIndication_ies_constr_2,
+ asn_MBR_errorIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_errorIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ErrorIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ErrorIndication, errorIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_errorIndication_ies_2,
+ memb_errorIndication_ies_constraint_1,
+ &asn_PER_memb_errorIndication_ies_constr_2,
+ 0,
+ "errorIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ErrorIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ErrorIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* errorIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ErrorIndication_specs_1 = {
+ sizeof(struct RANAP_ErrorIndication),
+ offsetof(struct RANAP_ErrorIndication, _asn_ctx),
+ asn_MAP_RANAP_ErrorIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ErrorIndication = {
+ "RANAP_ErrorIndication",
+ "RANAP_ErrorIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ErrorIndication_tags_1,
+ sizeof(asn_DEF_RANAP_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_ErrorIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ErrorIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_ErrorIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ErrorIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ErrorIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Event.c b/src/ranap/RANAP_Event.c
new file mode 100644
index 0000000..07b2370
--- /dev/null
+++ b/src/ranap/RANAP_Event.c
@@ -0,0 +1,175 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Event.h>
+
+int
+RANAP_Event_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Event_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Event_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Event_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Event_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Event_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Event_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Event_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Event_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Event_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Event_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Event_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Event_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Event_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Event_value2enum_1[] = {
+ { 0, 27, "stop-change-of-service-area" },
+ { 1, 6, "direct" },
+ { 2, 21, "change-of-servicearea" },
+ { 3, 11, "stop-direct" },
+ { 4, 8, "periodic" },
+ { 5, 13, "stop-periodic" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Event_enum2value_1[] = {
+ 2, /* change-of-servicearea(2) */
+ 1, /* direct(1) */
+ 4, /* periodic(4) */
+ 0, /* stop-change-of-service-area(0) */
+ 3, /* stop-direct(3) */
+ 5 /* stop-periodic(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Event_specs_1 = {
+ asn_MAP_RANAP_Event_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Event_enum2value_1, /* N => "tag"; sorted by N */
+ 6, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Event_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Event = {
+ "RANAP_Event",
+ "RANAP_Event",
+ RANAP_Event_free,
+ RANAP_Event_print,
+ RANAP_Event_constraint,
+ RANAP_Event_decode_ber,
+ RANAP_Event_encode_der,
+ RANAP_Event_decode_xer,
+ RANAP_Event_encode_xer,
+ RANAP_Event_decode_uper,
+ RANAP_Event_encode_uper,
+ RANAP_Event_decode_aper,
+ RANAP_Event_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Event_tags_1,
+ sizeof(asn_DEF_RANAP_Event_tags_1)
+ /sizeof(asn_DEF_RANAP_Event_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Event_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Event_tags_1)
+ /sizeof(asn_DEF_RANAP_Event_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Event_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Event_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Event1F-Parameters.c b/src/ranap/RANAP_Event1F-Parameters.c
new file mode 100644
index 0000000..550cc0e
--- /dev/null
+++ b/src/ranap/RANAP_Event1F-Parameters.c
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Event1F-Parameters.h>
+
+static int
+memb_threshold_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= -120ull && value <= 165l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_threshold_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 9, 9, -120ull, 165l } /* (-120..165) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Event1F_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Event1F_Parameters, measurementQuantity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MeasurementQuantity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "measurementQuantity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Event1F_Parameters, threshold),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_threshold_constraint_1,
+ &asn_PER_memb_threshold_constr_3,
+ 0,
+ "threshold"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Event1F_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Event1F_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementQuantity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshold */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Event1F_Parameters_specs_1 = {
+ sizeof(struct RANAP_Event1F_Parameters),
+ offsetof(struct RANAP_Event1F_Parameters, _asn_ctx),
+ asn_MAP_RANAP_Event1F_Parameters_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Event1F_Parameters = {
+ "RANAP_Event1F-Parameters",
+ "RANAP_Event1F-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Event1F_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_Event1F_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Event1F_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Event1F_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Event1F_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Event1F_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Event1F_Parameters_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Event1F_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Event1I-Parameters.c b/src/ranap/RANAP_Event1I-Parameters.c
new file mode 100644
index 0000000..606755f
--- /dev/null
+++ b/src/ranap/RANAP_Event1I-Parameters.c
@@ -0,0 +1,91 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Event1I-Parameters.h>
+
+static int
+memb_threshold_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= -120ull && value <= -25ull)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_threshold_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, -120ull, -25ull } /* (-120..-25) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Event1I_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Event1I_Parameters, threshold),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_threshold_constraint_1,
+ &asn_PER_memb_threshold_constr_2,
+ 0,
+ "threshold"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Event1I_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Event1I_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* threshold */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Event1I_Parameters_specs_1 = {
+ sizeof(struct RANAP_Event1I_Parameters),
+ offsetof(struct RANAP_Event1I_Parameters, _asn_ctx),
+ asn_MAP_RANAP_Event1I_Parameters_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Event1I_Parameters = {
+ "RANAP_Event1I-Parameters",
+ "RANAP_Event1I-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Event1I_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_Event1I_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Event1I_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Event1I_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Event1I_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Event1I_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Event1I_Parameters_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Event1I_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ExtendedGuaranteedBitrate.c b/src/ranap/RANAP_ExtendedGuaranteedBitrate.c
new file mode 100644
index 0000000..8891830
--- /dev/null
+++ b/src/ranap/RANAP_ExtendedGuaranteedBitrate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ExtendedGuaranteedBitrate.h>
+
+int
+RANAP_ExtendedGuaranteedBitrate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 16000001l && value <= 256000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ExtendedGuaranteedBitrate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ExtendedGuaranteedBitrate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedGuaranteedBitrate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedGuaranteedBitrate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedGuaranteedBitrate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedGuaranteedBitrate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedGuaranteedBitrate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedGuaranteedBitrate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedGuaranteedBitrate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedGuaranteedBitrate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedGuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ExtendedGuaranteedBitrate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 28, -1, 16000001l, 256000000l } /* (16000001..256000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedGuaranteedBitrate = {
+ "RANAP_ExtendedGuaranteedBitrate",
+ "RANAP_ExtendedGuaranteedBitrate",
+ RANAP_ExtendedGuaranteedBitrate_free,
+ RANAP_ExtendedGuaranteedBitrate_print,
+ RANAP_ExtendedGuaranteedBitrate_constraint,
+ RANAP_ExtendedGuaranteedBitrate_decode_ber,
+ RANAP_ExtendedGuaranteedBitrate_encode_der,
+ RANAP_ExtendedGuaranteedBitrate_decode_xer,
+ RANAP_ExtendedGuaranteedBitrate_encode_xer,
+ RANAP_ExtendedGuaranteedBitrate_decode_uper,
+ RANAP_ExtendedGuaranteedBitrate_encode_uper,
+ RANAP_ExtendedGuaranteedBitrate_decode_aper,
+ RANAP_ExtendedGuaranteedBitrate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1,
+ sizeof(asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedGuaranteedBitrate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ExtendedGuaranteedBitrate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ExtendedMaxBitrate.c b/src/ranap/RANAP_ExtendedMaxBitrate.c
new file mode 100644
index 0000000..3158e83
--- /dev/null
+++ b/src/ranap/RANAP_ExtendedMaxBitrate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ExtendedMaxBitrate.h>
+
+int
+RANAP_ExtendedMaxBitrate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 16000001l && value <= 256000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ExtendedMaxBitrate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ExtendedMaxBitrate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedMaxBitrate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedMaxBitrate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedMaxBitrate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedMaxBitrate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedMaxBitrate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedMaxBitrate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedMaxBitrate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedMaxBitrate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedMaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ExtendedMaxBitrate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 28, -1, 16000001l, 256000000l } /* (16000001..256000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ExtendedMaxBitrate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedMaxBitrate = {
+ "RANAP_ExtendedMaxBitrate",
+ "RANAP_ExtendedMaxBitrate",
+ RANAP_ExtendedMaxBitrate_free,
+ RANAP_ExtendedMaxBitrate_print,
+ RANAP_ExtendedMaxBitrate_constraint,
+ RANAP_ExtendedMaxBitrate_decode_ber,
+ RANAP_ExtendedMaxBitrate_encode_der,
+ RANAP_ExtendedMaxBitrate_decode_xer,
+ RANAP_ExtendedMaxBitrate_encode_xer,
+ RANAP_ExtendedMaxBitrate_decode_uper,
+ RANAP_ExtendedMaxBitrate_encode_uper,
+ RANAP_ExtendedMaxBitrate_decode_aper,
+ RANAP_ExtendedMaxBitrate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ExtendedMaxBitrate_tags_1,
+ sizeof(asn_DEF_RANAP_ExtendedMaxBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedMaxBitrate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ExtendedMaxBitrate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ExtendedMaxBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedMaxBitrate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ExtendedMaxBitrate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ExtendedRNC-ID.c b/src/ranap/RANAP_ExtendedRNC-ID.c
new file mode 100644
index 0000000..10e1f6b
--- /dev/null
+++ b/src/ranap/RANAP_ExtendedRNC-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ExtendedRNC-ID.h>
+
+int
+RANAP_ExtendedRNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 4096l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ExtendedRNC_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ExtendedRNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedRNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedRNC_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedRNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedRNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedRNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedRNC_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ExtendedRNC_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ExtendedRNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ExtendedRNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ExtendedRNC_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 4096l, 65535l } /* (4096..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ExtendedRNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ExtendedRNC_ID = {
+ "RANAP_ExtendedRNC-ID",
+ "RANAP_ExtendedRNC-ID",
+ RANAP_ExtendedRNC_ID_free,
+ RANAP_ExtendedRNC_ID_print,
+ RANAP_ExtendedRNC_ID_constraint,
+ RANAP_ExtendedRNC_ID_decode_ber,
+ RANAP_ExtendedRNC_ID_encode_der,
+ RANAP_ExtendedRNC_ID_decode_xer,
+ RANAP_ExtendedRNC_ID_encode_xer,
+ RANAP_ExtendedRNC_ID_decode_uper,
+ RANAP_ExtendedRNC_ID_encode_uper,
+ RANAP_ExtendedRNC_ID_decode_aper,
+ RANAP_ExtendedRNC_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ExtendedRNC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_ExtendedRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedRNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ExtendedRNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ExtendedRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_ExtendedRNC_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ExtendedRNC_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ForwardSRNS-Context.c b/src/ranap/RANAP_ForwardSRNS-Context.c
new file mode 100644
index 0000000..61f1a5b
--- /dev/null
+++ b/src/ranap/RANAP_ForwardSRNS-Context.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ForwardSRNS-Context.h>
+
+static int
+memb_forwardSRNS_Context_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_forwardSRNS_Context_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_forwardSRNS_Context_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_forwardSRNS_Context_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_forwardSRNS_Context_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_forwardSRNS_Context_ies_specs_2 = {
+ sizeof(struct forwardSRNS_Context_ies),
+ offsetof(struct forwardSRNS_Context_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_forwardSRNS_Context_ies_2 = {
+ "forwardSRNS-Context-ies",
+ "forwardSRNS-Context-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_forwardSRNS_Context_ies_tags_2,
+ sizeof(asn_DEF_forwardSRNS_Context_ies_tags_2)
+ /sizeof(asn_DEF_forwardSRNS_Context_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_forwardSRNS_Context_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_forwardSRNS_Context_ies_tags_2)
+ /sizeof(asn_DEF_forwardSRNS_Context_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_forwardSRNS_Context_ies_constr_2,
+ asn_MBR_forwardSRNS_Context_ies_2,
+ 1, /* Single element */
+ &asn_SPC_forwardSRNS_Context_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ForwardSRNS_Context_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ForwardSRNS_Context, forwardSRNS_Context_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_forwardSRNS_Context_ies_2,
+ memb_forwardSRNS_Context_ies_constraint_1,
+ &asn_PER_memb_forwardSRNS_Context_ies_constr_2,
+ 0,
+ "forwardSRNS-Context-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ForwardSRNS_Context_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ForwardSRNS_Context_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* forwardSRNS-Context-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ForwardSRNS_Context_specs_1 = {
+ sizeof(struct RANAP_ForwardSRNS_Context),
+ offsetof(struct RANAP_ForwardSRNS_Context, _asn_ctx),
+ asn_MAP_RANAP_ForwardSRNS_Context_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ForwardSRNS_Context = {
+ "RANAP_ForwardSRNS-Context",
+ "RANAP_ForwardSRNS-Context",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ForwardSRNS_Context_tags_1,
+ sizeof(asn_DEF_RANAP_ForwardSRNS_Context_tags_1)
+ /sizeof(asn_DEF_RANAP_ForwardSRNS_Context_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ForwardSRNS_Context_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ForwardSRNS_Context_tags_1)
+ /sizeof(asn_DEF_RANAP_ForwardSRNS_Context_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ForwardSRNS_Context_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ForwardSRNS_Context_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ForwardingIndication.c b/src/ranap/RANAP_ForwardingIndication.c
new file mode 100644
index 0000000..11478b1
--- /dev/null
+++ b/src/ranap/RANAP_ForwardingIndication.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ForwardingIndication.h>
+
+int
+RANAP_ForwardingIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ForwardingIndication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ForwardingIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ForwardingIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ForwardingIndication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ForwardingIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ForwardingIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ForwardingIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ForwardingIndication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ForwardingIndication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ForwardingIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ForwardingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ForwardingIndication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ForwardingIndication_value2enum_1[] = {
+ { 0, 19, "forwarding-admitted" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ForwardingIndication_enum2value_1[] = {
+ 0 /* forwarding-admitted(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ForwardingIndication_specs_1 = {
+ asn_MAP_RANAP_ForwardingIndication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ForwardingIndication_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ForwardingIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ForwardingIndication = {
+ "RANAP_ForwardingIndication",
+ "RANAP_ForwardingIndication",
+ RANAP_ForwardingIndication_free,
+ RANAP_ForwardingIndication_print,
+ RANAP_ForwardingIndication_constraint,
+ RANAP_ForwardingIndication_decode_ber,
+ RANAP_ForwardingIndication_encode_der,
+ RANAP_ForwardingIndication_decode_xer,
+ RANAP_ForwardingIndication_encode_xer,
+ RANAP_ForwardingIndication_decode_uper,
+ RANAP_ForwardingIndication_encode_uper,
+ RANAP_ForwardingIndication_decode_aper,
+ RANAP_ForwardingIndication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ForwardingIndication_tags_1,
+ sizeof(asn_DEF_RANAP_ForwardingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_ForwardingIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ForwardingIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ForwardingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_ForwardingIndication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ForwardingIndication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ForwardingIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_FrameSequenceNumber.c b/src/ranap/RANAP_FrameSequenceNumber.c
new file mode 100644
index 0000000..a933552
--- /dev/null
+++ b/src/ranap/RANAP_FrameSequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_FrameSequenceNumber.h>
+
+int
+RANAP_FrameSequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_FrameSequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_FrameSequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrameSequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_FrameSequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrameSequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_FrameSequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrameSequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_FrameSequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_FrameSequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_FrameSequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_FrameSequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (0..15) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_FrameSequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_FrameSequenceNumber = {
+ "RANAP_FrameSequenceNumber",
+ "RANAP_FrameSequenceNumber",
+ RANAP_FrameSequenceNumber_free,
+ RANAP_FrameSequenceNumber_print,
+ RANAP_FrameSequenceNumber_constraint,
+ RANAP_FrameSequenceNumber_decode_ber,
+ RANAP_FrameSequenceNumber_encode_der,
+ RANAP_FrameSequenceNumber_decode_xer,
+ RANAP_FrameSequenceNumber_encode_xer,
+ RANAP_FrameSequenceNumber_decode_uper,
+ RANAP_FrameSequenceNumber_encode_uper,
+ RANAP_FrameSequenceNumber_decode_aper,
+ RANAP_FrameSequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_FrameSequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_FrameSequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_FrameSequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_FrameSequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_FrameSequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_FrameSequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_FrameSequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_FrequenceLayerConvergenceFlag.c b/src/ranap/RANAP_FrequenceLayerConvergenceFlag.c
new file mode 100644
index 0000000..f9b71ed
--- /dev/null
+++ b/src/ranap/RANAP_FrequenceLayerConvergenceFlag.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_FrequenceLayerConvergenceFlag.h>
+
+int
+RANAP_FrequenceLayerConvergenceFlag_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_FrequenceLayerConvergenceFlag_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_FrequenceLayerConvergenceFlag_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrequenceLayerConvergenceFlag_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_FrequenceLayerConvergenceFlag_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrequenceLayerConvergenceFlag_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_FrequenceLayerConvergenceFlag_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_FrequenceLayerConvergenceFlag_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_FrequenceLayerConvergenceFlag_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_FrequenceLayerConvergenceFlag_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_FrequenceLayerConvergenceFlag_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_FrequenceLayerConvergenceFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_FrequenceLayerConvergenceFlag_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_FrequenceLayerConvergenceFlag_value2enum_1[] = {
+ { 0, 11, "no-FLC-flag" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_FrequenceLayerConvergenceFlag_enum2value_1[] = {
+ 0 /* no-FLC-flag(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_FrequenceLayerConvergenceFlag_specs_1 = {
+ asn_MAP_RANAP_FrequenceLayerConvergenceFlag_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_FrequenceLayerConvergenceFlag_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_FrequenceLayerConvergenceFlag = {
+ "RANAP_FrequenceLayerConvergenceFlag",
+ "RANAP_FrequenceLayerConvergenceFlag",
+ RANAP_FrequenceLayerConvergenceFlag_free,
+ RANAP_FrequenceLayerConvergenceFlag_print,
+ RANAP_FrequenceLayerConvergenceFlag_constraint,
+ RANAP_FrequenceLayerConvergenceFlag_decode_ber,
+ RANAP_FrequenceLayerConvergenceFlag_encode_der,
+ RANAP_FrequenceLayerConvergenceFlag_decode_xer,
+ RANAP_FrequenceLayerConvergenceFlag_encode_xer,
+ RANAP_FrequenceLayerConvergenceFlag_decode_uper,
+ RANAP_FrequenceLayerConvergenceFlag_encode_uper,
+ RANAP_FrequenceLayerConvergenceFlag_decode_aper,
+ RANAP_FrequenceLayerConvergenceFlag_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1,
+ sizeof(asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_FrequenceLayerConvergenceFlag_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_FrequenceLayerConvergenceFlag_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_FrequenceLayerConvergenceFlag_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-AltitudeAndDirection.c b/src/ranap/RANAP_GA-AltitudeAndDirection.c
new file mode 100644
index 0000000..b707f1c
--- /dev/null
+++ b/src/ranap/RANAP_GA-AltitudeAndDirection.c
@@ -0,0 +1,260 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-AltitudeAndDirection.h>
+
+static int
+directionOfAltitude_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+directionOfAltitude_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+directionOfAltitude_2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+directionOfAltitude_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+directionOfAltitude_2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+directionOfAltitude_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ directionOfAltitude_2_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static int
+memb_altitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 32767l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_directionOfAltitude_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_altitude_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 15, 15, 0l, 32767l } /* (0..32767) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_directionOfAltitude_value2enum_2[] = {
+ { 0, 6, "height" },
+ { 1, 5, "depth" }
+};
+static const unsigned int asn_MAP_directionOfAltitude_enum2value_2[] = {
+ 1, /* depth(1) */
+ 0 /* height(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_directionOfAltitude_specs_2 = {
+ asn_MAP_directionOfAltitude_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_directionOfAltitude_enum2value_2, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_directionOfAltitude_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directionOfAltitude_2 = {
+ "directionOfAltitude",
+ "directionOfAltitude",
+ directionOfAltitude_2_free,
+ directionOfAltitude_2_print,
+ directionOfAltitude_2_constraint,
+ directionOfAltitude_2_decode_ber,
+ directionOfAltitude_2_encode_der,
+ directionOfAltitude_2_decode_xer,
+ directionOfAltitude_2_encode_xer,
+ directionOfAltitude_2_decode_uper,
+ directionOfAltitude_2_encode_uper,
+ directionOfAltitude_2_decode_aper,
+ directionOfAltitude_2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_directionOfAltitude_tags_2,
+ sizeof(asn_DEF_directionOfAltitude_tags_2)
+ /sizeof(asn_DEF_directionOfAltitude_tags_2[0]) - 1, /* 1 */
+ asn_DEF_directionOfAltitude_tags_2, /* Same as above */
+ sizeof(asn_DEF_directionOfAltitude_tags_2)
+ /sizeof(asn_DEF_directionOfAltitude_tags_2[0]), /* 2 */
+ &asn_PER_type_directionOfAltitude_constr_2,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_directionOfAltitude_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_GA_AltitudeAndDirection_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_AltitudeAndDirection, directionOfAltitude),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_directionOfAltitude_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "directionOfAltitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_AltitudeAndDirection, altitude),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_altitude_constraint_1,
+ &asn_PER_memb_altitude_constr_5,
+ 0,
+ "altitude"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_AltitudeAndDirection_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* directionOfAltitude */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altitude */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_AltitudeAndDirection_specs_1 = {
+ sizeof(struct RANAP_GA_AltitudeAndDirection),
+ offsetof(struct RANAP_GA_AltitudeAndDirection, _asn_ctx),
+ asn_MAP_RANAP_GA_AltitudeAndDirection_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_AltitudeAndDirection = {
+ "RANAP_GA-AltitudeAndDirection",
+ "RANAP_GA-AltitudeAndDirection",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1,
+ sizeof(asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_AltitudeAndDirection_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_AltitudeAndDirection_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_GA_AltitudeAndDirection_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-EllipsoidArc.c b/src/ranap/RANAP_GA-EllipsoidArc.c
new file mode 100644
index 0000000..bf406ac
--- /dev/null
+++ b/src/ranap/RANAP_GA-EllipsoidArc.c
@@ -0,0 +1,273 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-EllipsoidArc.h>
+
+static int
+memb_innerRadius_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_uncertaintyRadius_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_offsetAngle_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 179l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_includedAngle_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 179l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_confidence_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_innerRadius_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_uncertaintyRadius_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_offsetAngle_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 179l } /* (0..179) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_includedAngle_constr_6 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 179l } /* (0..179) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_confidence_constr_7 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GA_EllipsoidArc_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, innerRadius),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_innerRadius_constraint_1,
+ &asn_PER_memb_innerRadius_constr_3,
+ 0,
+ "innerRadius"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, uncertaintyRadius),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintyRadius_constraint_1,
+ &asn_PER_memb_uncertaintyRadius_constr_4,
+ 0,
+ "uncertaintyRadius"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, offsetAngle),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_offsetAngle_constraint_1,
+ &asn_PER_memb_offsetAngle_constr_5,
+ 0,
+ "offsetAngle"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, includedAngle),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_includedAngle_constraint_1,
+ &asn_PER_memb_includedAngle_constr_6,
+ 0,
+ "includedAngle"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_EllipsoidArc, confidence),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_confidence_constraint_1,
+ &asn_PER_memb_confidence_constr_7,
+ 0,
+ "confidence"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_EllipsoidArc, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GA_EllipsoidArc_oms_1[] = { 6 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_EllipsoidArc_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_EllipsoidArc_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* innerRadius */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uncertaintyRadius */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* offsetAngle */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* includedAngle */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* confidence */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_EllipsoidArc_specs_1 = {
+ sizeof(struct RANAP_GA_EllipsoidArc),
+ offsetof(struct RANAP_GA_EllipsoidArc, _asn_ctx),
+ asn_MAP_RANAP_GA_EllipsoidArc_tag2el_1,
+ 7, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_EllipsoidArc_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 6, /* Start extensions */
+ 8 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_EllipsoidArc = {
+ "RANAP_GA-EllipsoidArc",
+ "RANAP_GA-EllipsoidArc",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_EllipsoidArc_tags_1,
+ sizeof(asn_DEF_RANAP_GA_EllipsoidArc_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_EllipsoidArc_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_EllipsoidArc_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_EllipsoidArc_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_EllipsoidArc_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_EllipsoidArc_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_GA_EllipsoidArc_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-Point.c b/src/ranap/RANAP_GA-Point.c
new file mode 100644
index 0000000..41e10d6
--- /dev/null
+++ b/src/ranap/RANAP_GA-Point.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-Point.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GA_Point_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_Point, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_Point, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GA_Point_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_Point_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_Point_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_Point_specs_1 = {
+ sizeof(struct RANAP_GA_Point),
+ offsetof(struct RANAP_GA_Point, _asn_ctx),
+ asn_MAP_RANAP_GA_Point_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_Point_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_Point = {
+ "RANAP_GA-Point",
+ "RANAP_GA-Point",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_Point_tags_1,
+ sizeof(asn_DEF_RANAP_GA_Point_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_Point_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_Point_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_Point_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_Point_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_Point_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_GA_Point_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-PointWithAltitude.c b/src/ranap/RANAP_GA-PointWithAltitude.c
new file mode 100644
index 0000000..b72fdd3
--- /dev/null
+++ b/src/ranap/RANAP_GA-PointWithAltitude.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-PointWithAltitude.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GA_PointWithAltitude_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitude, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitude, altitudeAndDirection),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_AltitudeAndDirection,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altitudeAndDirection"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_PointWithAltitude, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GA_PointWithAltitude_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_PointWithAltitude_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_PointWithAltitude_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altitudeAndDirection */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_PointWithAltitude_specs_1 = {
+ sizeof(struct RANAP_GA_PointWithAltitude),
+ offsetof(struct RANAP_GA_PointWithAltitude, _asn_ctx),
+ asn_MAP_RANAP_GA_PointWithAltitude_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_PointWithAltitude_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithAltitude = {
+ "RANAP_GA-PointWithAltitude",
+ "RANAP_GA-PointWithAltitude",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_PointWithAltitude_tags_1,
+ sizeof(asn_DEF_RANAP_GA_PointWithAltitude_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithAltitude_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_PointWithAltitude_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_PointWithAltitude_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithAltitude_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_PointWithAltitude_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_GA_PointWithAltitude_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.c b/src/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.c
new file mode 100644
index 0000000..29c3919
--- /dev/null
+++ b/src/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.c
@@ -0,0 +1,173 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid.h>
+
+static int
+memb_uncertaintyAltitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_confidence_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_uncertaintyAltitude_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_confidence_constr_6 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, altitudeAndDirection),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_AltitudeAndDirection,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "altitudeAndDirection"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, uncertaintyEllipse),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_UncertaintyEllipse,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uncertaintyEllipse"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, uncertaintyAltitude),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintyAltitude_constraint_1,
+ &asn_PER_memb_uncertaintyAltitude_constr_5,
+ 0,
+ "uncertaintyAltitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, confidence),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_confidence_constraint_1,
+ &asn_PER_memb_confidence_constr_6,
+ 0,
+ "confidence"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_oms_1[] = { 5 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* altitudeAndDirection */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uncertaintyEllipse */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uncertaintyAltitude */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* confidence */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_specs_1 = {
+ sizeof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid),
+ offsetof(struct RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid, _asn_ctx),
+ asn_MAP_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tag2el_1,
+ 6, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 5, /* Start extensions */
+ 7 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid = {
+ "RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid",
+ "RANAP_GA-PointWithAltitudeAndUncertaintyEllipsoid",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1,
+ sizeof(asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_1,
+ 6, /* Elements count */
+ &asn_SPC_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-PointWithUnCertainty.c b/src/ranap/RANAP_GA-PointWithUnCertainty.c
new file mode 100644
index 0000000..cc65d70
--- /dev/null
+++ b/src/ranap/RANAP_GA-PointWithUnCertainty.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertainty.h>
+
+static int
+memb_uncertaintyCode_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_uncertaintyCode_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GA_PointWithUnCertainty_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithUnCertainty, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_PointWithUnCertainty, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithUnCertainty, uncertaintyCode),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintyCode_constraint_1,
+ &asn_PER_memb_uncertaintyCode_constr_4,
+ 0,
+ "uncertaintyCode"
+ },
+};
+static const int asn_MAP_RANAP_GA_PointWithUnCertainty_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_PointWithUnCertainty_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-Extensions */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* uncertaintyCode */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_PointWithUnCertainty_specs_1 = {
+ sizeof(struct RANAP_GA_PointWithUnCertainty),
+ offsetof(struct RANAP_GA_PointWithUnCertainty, _asn_ctx),
+ asn_MAP_RANAP_GA_PointWithUnCertainty_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_PointWithUnCertainty_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithUnCertainty = {
+ "RANAP_GA-PointWithUnCertainty",
+ "RANAP_GA-PointWithUnCertainty",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1,
+ sizeof(asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithUnCertainty_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_PointWithUnCertainty_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_GA_PointWithUnCertainty_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-PointWithUnCertaintyEllipse.c b/src/ranap/RANAP_GA-PointWithUnCertaintyEllipse.c
new file mode 100644
index 0000000..f0e1115
--- /dev/null
+++ b/src/ranap/RANAP_GA-PointWithUnCertaintyEllipse.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-PointWithUnCertaintyEllipse.h>
+
+static int
+memb_confidence_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_confidence_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GA_PointWithUnCertaintyEllipse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithUnCertaintyEllipse, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithUnCertaintyEllipse, uncertaintyEllipse),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_UncertaintyEllipse,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uncertaintyEllipse"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_PointWithUnCertaintyEllipse, confidence),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_confidence_constraint_1,
+ &asn_PER_memb_confidence_constr_4,
+ 0,
+ "confidence"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GA_PointWithUnCertaintyEllipse, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GA_PointWithUnCertaintyEllipse_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_PointWithUnCertaintyEllipse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uncertaintyEllipse */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* confidence */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_PointWithUnCertaintyEllipse_specs_1 = {
+ sizeof(struct RANAP_GA_PointWithUnCertaintyEllipse),
+ offsetof(struct RANAP_GA_PointWithUnCertaintyEllipse, _asn_ctx),
+ asn_MAP_RANAP_GA_PointWithUnCertaintyEllipse_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_GA_PointWithUnCertaintyEllipse_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse = {
+ "RANAP_GA-PointWithUnCertaintyEllipse",
+ "RANAP_GA-PointWithUnCertaintyEllipse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1,
+ sizeof(asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_PointWithUnCertaintyEllipse_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_GA_PointWithUnCertaintyEllipse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-Polygon.c b/src/ranap/RANAP_GA-Polygon.c
new file mode 100644
index 0000000..0e9979f
--- /dev/null
+++ b/src/ranap/RANAP_GA-Polygon.c
@@ -0,0 +1,125 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-Polygon.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_GA_Polygon_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 15l } /* (SIZE(1..15)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Member, geographicalCoordinates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GeographicalCoordinates,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "geographicalCoordinates"
+ },
+ { ATF_POINTER, 1, offsetof(struct Member, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_Member_oms_2[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* geographicalCoordinates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = {
+ sizeof(struct Member),
+ offsetof(struct Member, _asn_ctx),
+ asn_MAP_Member_tag2el_2,
+ 2, /* Count of tags in the map */
+ asn_MAP_Member_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Member_tags_2,
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ asn_DEF_Member_tags_2, /* Same as above */
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_Member_2,
+ 2, /* Elements count */
+ &asn_SPC_Member_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_GA_Polygon_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_Member_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_Polygon_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_GA_Polygon_specs_1 = {
+ sizeof(struct RANAP_GA_Polygon),
+ offsetof(struct RANAP_GA_Polygon, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_Polygon = {
+ "RANAP_GA-Polygon",
+ "RANAP_GA-Polygon",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_Polygon_tags_1,
+ sizeof(asn_DEF_RANAP_GA_Polygon_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_Polygon_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_Polygon_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_Polygon_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_Polygon_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_GA_Polygon_constr_1,
+ asn_MBR_RANAP_GA_Polygon_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_GA_Polygon_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GA-UncertaintyEllipse.c b/src/ranap/RANAP_GA-UncertaintyEllipse.c
new file mode 100644
index 0000000..c88dd10
--- /dev/null
+++ b/src/ranap/RANAP_GA-UncertaintyEllipse.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GA-UncertaintyEllipse.h>
+
+static int
+memb_uncertaintySemi_major_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_uncertaintySemi_minor_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_orientationOfMajorAxis_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 179l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_uncertaintySemi_major_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_uncertaintySemi_minor_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_orientationOfMajorAxis_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 179l } /* (0..179) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GA_UncertaintyEllipse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_UncertaintyEllipse, uncertaintySemi_major),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintySemi_major_constraint_1,
+ &asn_PER_memb_uncertaintySemi_major_constr_2,
+ 0,
+ "uncertaintySemi-major"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_UncertaintyEllipse, uncertaintySemi_minor),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintySemi_minor_constraint_1,
+ &asn_PER_memb_uncertaintySemi_minor_constr_3,
+ 0,
+ "uncertaintySemi-minor"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GA_UncertaintyEllipse, orientationOfMajorAxis),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_orientationOfMajorAxis_constraint_1,
+ &asn_PER_memb_orientationOfMajorAxis_constr_4,
+ 0,
+ "orientationOfMajorAxis"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GA_UncertaintyEllipse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uncertaintySemi-major */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uncertaintySemi-minor */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* orientationOfMajorAxis */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GA_UncertaintyEllipse_specs_1 = {
+ sizeof(struct RANAP_GA_UncertaintyEllipse),
+ offsetof(struct RANAP_GA_UncertaintyEllipse, _asn_ctx),
+ asn_MAP_RANAP_GA_UncertaintyEllipse_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GA_UncertaintyEllipse = {
+ "RANAP_GA-UncertaintyEllipse",
+ "RANAP_GA-UncertaintyEllipse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1,
+ sizeof(asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1)
+ /sizeof(asn_DEF_RANAP_GA_UncertaintyEllipse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GA_UncertaintyEllipse_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_GA_UncertaintyEllipse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GANSS-PositioningDataSet.c b/src/ranap/RANAP_GANSS-PositioningDataSet.c
new file mode 100644
index 0000000..b427447
--- /dev/null
+++ b/src/ranap/RANAP_GANSS-PositioningDataSet.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GANSS-PositioningDataSet.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_GANSS_PositioningDataSet_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 9l } /* (SIZE(1..9)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GANSS_PositioningDataSet_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_GANSS_PositioningMethodAndUsage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_GANSS_PositioningDataSet_specs_1 = {
+ sizeof(struct RANAP_GANSS_PositioningDataSet),
+ offsetof(struct RANAP_GANSS_PositioningDataSet, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GANSS_PositioningDataSet = {
+ "RANAP_GANSS-PositioningDataSet",
+ "RANAP_GANSS-PositioningDataSet",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1,
+ sizeof(asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1)
+ /sizeof(asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1)
+ /sizeof(asn_DEF_RANAP_GANSS_PositioningDataSet_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_GANSS_PositioningDataSet_constr_1,
+ asn_MBR_RANAP_GANSS_PositioningDataSet_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_GANSS_PositioningDataSet_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GANSS-PositioningMethodAndUsage.c b/src/ranap/RANAP_GANSS-PositioningMethodAndUsage.c
new file mode 100644
index 0000000..a18b51d
--- /dev/null
+++ b/src/ranap/RANAP_GANSS-PositioningMethodAndUsage.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GANSS-PositioningMethodAndUsage.h>
+
+int
+RANAP_GANSS_PositioningMethodAndUsage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_GANSS_PositioningMethodAndUsage_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_GANSS_PositioningMethodAndUsage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_GANSS_PositioningMethodAndUsage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GANSS_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_GANSS_PositioningMethodAndUsage_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GANSS_PositioningMethodAndUsage = {
+ "RANAP_GANSS-PositioningMethodAndUsage",
+ "RANAP_GANSS-PositioningMethodAndUsage",
+ RANAP_GANSS_PositioningMethodAndUsage_free,
+ RANAP_GANSS_PositioningMethodAndUsage_print,
+ RANAP_GANSS_PositioningMethodAndUsage_constraint,
+ RANAP_GANSS_PositioningMethodAndUsage_decode_ber,
+ RANAP_GANSS_PositioningMethodAndUsage_encode_der,
+ RANAP_GANSS_PositioningMethodAndUsage_decode_xer,
+ RANAP_GANSS_PositioningMethodAndUsage_encode_xer,
+ RANAP_GANSS_PositioningMethodAndUsage_decode_uper,
+ RANAP_GANSS_PositioningMethodAndUsage_encode_uper,
+ RANAP_GANSS_PositioningMethodAndUsage_decode_aper,
+ RANAP_GANSS_PositioningMethodAndUsage_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1,
+ sizeof(asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1)
+ /sizeof(asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1)
+ /sizeof(asn_DEF_RANAP_GANSS_PositioningMethodAndUsage_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_GANSS_PositioningMethodAndUsage_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_GERAN-BSC-Container.c b/src/ranap/RANAP_GERAN-BSC-Container.c
new file mode 100644
index 0000000..b7205fc
--- /dev/null
+++ b/src/ranap/RANAP_GERAN-BSC-Container.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GERAN-BSC-Container.h>
+
+int
+RANAP_GERAN_BSC_Container_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_GERAN_BSC_Container_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_GERAN_BSC_Container_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_BSC_Container_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_BSC_Container_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_BSC_Container_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_BSC_Container_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_BSC_Container_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_BSC_Container_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_BSC_Container_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_BSC_Container_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GERAN_BSC_Container_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_GERAN_BSC_Container_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_BSC_Container = {
+ "RANAP_GERAN-BSC-Container",
+ "RANAP_GERAN-BSC-Container",
+ RANAP_GERAN_BSC_Container_free,
+ RANAP_GERAN_BSC_Container_print,
+ RANAP_GERAN_BSC_Container_constraint,
+ RANAP_GERAN_BSC_Container_decode_ber,
+ RANAP_GERAN_BSC_Container_encode_der,
+ RANAP_GERAN_BSC_Container_decode_xer,
+ RANAP_GERAN_BSC_Container_encode_xer,
+ RANAP_GERAN_BSC_Container_decode_uper,
+ RANAP_GERAN_BSC_Container_encode_uper,
+ RANAP_GERAN_BSC_Container_decode_aper,
+ RANAP_GERAN_BSC_Container_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GERAN_BSC_Container_tags_1,
+ sizeof(asn_DEF_RANAP_GERAN_BSC_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_BSC_Container_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GERAN_BSC_Container_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GERAN_BSC_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_BSC_Container_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_GERAN-Cell-ID.c b/src/ranap/RANAP_GERAN-Cell-ID.c
new file mode 100644
index 0000000..c0539f7
--- /dev/null
+++ b/src/ranap/RANAP_GERAN-Cell-ID.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GERAN-Cell-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GERAN_Cell_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Cell_ID, lAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Cell_ID, rAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Cell_ID, cI),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GERAN_Cell_ID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GERAN_Cell_ID_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GERAN_Cell_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GERAN_Cell_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GERAN_Cell_ID_specs_1 = {
+ sizeof(struct RANAP_GERAN_Cell_ID),
+ offsetof(struct RANAP_GERAN_Cell_ID, _asn_ctx),
+ asn_MAP_RANAP_GERAN_Cell_ID_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_GERAN_Cell_ID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Cell_ID = {
+ "RANAP_GERAN-Cell-ID",
+ "RANAP_GERAN-Cell-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GERAN_Cell_ID_tags_1,
+ sizeof(asn_DEF_RANAP_GERAN_Cell_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Cell_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GERAN_Cell_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GERAN_Cell_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Cell_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GERAN_Cell_ID_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_GERAN_Cell_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GERAN-Classmark.c b/src/ranap/RANAP_GERAN-Classmark.c
new file mode 100644
index 0000000..f499935
--- /dev/null
+++ b/src/ranap/RANAP_GERAN-Classmark.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GERAN-Classmark.h>
+
+int
+RANAP_GERAN_Classmark_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_GERAN_Classmark_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_GERAN_Classmark_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_Classmark_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_Classmark_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_Classmark_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_Classmark_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_Classmark_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_Classmark_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_GERAN_Classmark_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_GERAN_Classmark_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GERAN_Classmark_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_GERAN_Classmark_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Classmark = {
+ "RANAP_GERAN-Classmark",
+ "RANAP_GERAN-Classmark",
+ RANAP_GERAN_Classmark_free,
+ RANAP_GERAN_Classmark_print,
+ RANAP_GERAN_Classmark_constraint,
+ RANAP_GERAN_Classmark_decode_ber,
+ RANAP_GERAN_Classmark_encode_der,
+ RANAP_GERAN_Classmark_decode_xer,
+ RANAP_GERAN_Classmark_encode_xer,
+ RANAP_GERAN_Classmark_decode_uper,
+ RANAP_GERAN_Classmark_encode_uper,
+ RANAP_GERAN_Classmark_decode_aper,
+ RANAP_GERAN_Classmark_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GERAN_Classmark_tags_1,
+ sizeof(asn_DEF_RANAP_GERAN_Classmark_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Classmark_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GERAN_Classmark_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GERAN_Classmark_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Classmark_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.c b/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.c
new file mode 100644
index 0000000..9cc7df2
--- /dev/null
+++ b/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item, gERAN_Classmark),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GERAN_Classmark,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gERAN-Classmark"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gERAN-Classmark */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_specs_1 = {
+ sizeof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item),
+ offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item, _asn_ctx),
+ asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item = {
+ "RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item",
+ "RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1,
+ sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_Item_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.c b/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.c
new file mode 100644
index 0000000..f981c08
--- /dev/null
+++ b/src/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List.h>
+
+static int
+memb_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_specs_2 = {
+ sizeof(struct geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies),
+ offsetof(struct geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_2 = {
+ "geraN-Iumode-RAB-Failed-RABAssgntResponse-List-ies",
+ "geraN-Iumode-RAB-Failed-RABAssgntResponse-List-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2,
+ sizeof(asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2)
+ /sizeof(asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2)
+ /sizeof(asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constr_2,
+ asn_MBR_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_2,
+ 1, /* Single element */
+ &asn_SPC_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List, geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_2,
+ memb_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constraint_1,
+ &asn_PER_memb_geraN_Iumode_RAB_Failed_RABAssgntResponse_List_ies_constr_2,
+ 0,
+ "geraN-Iumode-RAB-Failed-RABAssgntResponse-List-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* geraN-Iumode-RAB-Failed-RABAssgntResponse-List-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_specs_1 = {
+ sizeof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List),
+ offsetof(struct RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List, _asn_ctx),
+ asn_MAP_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List = {
+ "RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List",
+ "RANAP_GERAN-Iumode-RAB-Failed-RABAssgntResponse-List",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1,
+ sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1)
+ /sizeof(asn_DEF_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_GERAN_Iumode_RAB_Failed_RABAssgntResponse_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GTP-TEI.c b/src/ranap/RANAP_GTP-TEI.c
new file mode 100644
index 0000000..34e1e3f
--- /dev/null
+++ b/src/ranap/RANAP_GTP-TEI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GTP-TEI.h>
+
+int
+RANAP_GTP_TEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_GTP_TEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_GTP_TEI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_GTP_TEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GTP_TEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_GTP_TEI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GTP_TEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_GTP_TEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GTP_TEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_GTP_TEI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_GTP_TEI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_GTP_TEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GTP_TEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_GTP_TEI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GTP_TEI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GTP_TEI = {
+ "RANAP_GTP-TEI",
+ "RANAP_GTP-TEI",
+ RANAP_GTP_TEI_free,
+ RANAP_GTP_TEI_print,
+ RANAP_GTP_TEI_constraint,
+ RANAP_GTP_TEI_decode_ber,
+ RANAP_GTP_TEI_encode_der,
+ RANAP_GTP_TEI_decode_xer,
+ RANAP_GTP_TEI_encode_xer,
+ RANAP_GTP_TEI_decode_uper,
+ RANAP_GTP_TEI_encode_uper,
+ RANAP_GTP_TEI_decode_aper,
+ RANAP_GTP_TEI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GTP_TEI_tags_1,
+ sizeof(asn_DEF_RANAP_GTP_TEI_tags_1)
+ /sizeof(asn_DEF_RANAP_GTP_TEI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GTP_TEI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GTP_TEI_tags_1)
+ /sizeof(asn_DEF_RANAP_GTP_TEI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_GTP_TEI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_GeographicalArea.c b/src/ranap/RANAP_GeographicalArea.c
new file mode 100644
index 0000000..a007c11
--- /dev/null
+++ b/src/ranap/RANAP_GeographicalArea.c
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GeographicalArea.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_GeographicalArea_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_GeographicalArea_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.point),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_Point,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "point"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.pointWithUnCertainty),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_PointWithUnCertainty,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pointWithUnCertainty"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.polygon),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_Polygon,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "polygon"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.pointWithUncertaintyEllipse),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_PointWithUnCertaintyEllipse,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pointWithUncertaintyEllipse"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.pointWithAltitude),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_PointWithAltitude,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pointWithAltitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.pointWithAltitudeAndUncertaintyEllipsoid),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_PointWithAltitudeAndUncertaintyEllipsoid,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pointWithAltitudeAndUncertaintyEllipsoid"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalArea, choice.ellipsoidArc),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GA_EllipsoidArc,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ellipsoidArc"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GeographicalArea_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* point */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pointWithUnCertainty */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* polygon */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pointWithUncertaintyEllipse */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pointWithAltitude */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* pointWithAltitudeAndUncertaintyEllipsoid */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ellipsoidArc */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_GeographicalArea_specs_1 = {
+ sizeof(struct RANAP_GeographicalArea),
+ offsetof(struct RANAP_GeographicalArea, _asn_ctx),
+ offsetof(struct RANAP_GeographicalArea, present),
+ sizeof(((struct RANAP_GeographicalArea *)0)->present),
+ asn_MAP_RANAP_GeographicalArea_tag2el_1,
+ 7, /* Count of tags in the map */
+ 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GeographicalArea = {
+ "RANAP_GeographicalArea",
+ "RANAP_GeographicalArea",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_GeographicalArea_constr_1,
+ asn_MBR_RANAP_GeographicalArea_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_GeographicalArea_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GeographicalCoordinates.c b/src/ranap/RANAP_GeographicalCoordinates.c
new file mode 100644
index 0000000..1296794
--- /dev/null
+++ b/src/ranap/RANAP_GeographicalCoordinates.c
@@ -0,0 +1,312 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GeographicalCoordinates.h>
+
+static int
+latitudeSign_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+latitudeSign_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+latitudeSign_2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+latitudeSign_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+latitudeSign_2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+latitudeSign_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ latitudeSign_2_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static int
+memb_latitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 8388607l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_longitude_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= -8388608ull && value <= 8388607l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_latitudeSign_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_latitude_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 23, -1, 0l, 8388607l } /* (0..8388607) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_longitude_constr_6 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 24, -1, -8388608ull, 8388607l } /* (-8388608..8388607) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_latitudeSign_value2enum_2[] = {
+ { 0, 5, "north" },
+ { 1, 5, "south" }
+};
+static const unsigned int asn_MAP_latitudeSign_enum2value_2[] = {
+ 0, /* north(0) */
+ 1 /* south(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_latitudeSign_specs_2 = {
+ asn_MAP_latitudeSign_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_latitudeSign_enum2value_2, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_latitudeSign_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_latitudeSign_2 = {
+ "latitudeSign",
+ "latitudeSign",
+ latitudeSign_2_free,
+ latitudeSign_2_print,
+ latitudeSign_2_constraint,
+ latitudeSign_2_decode_ber,
+ latitudeSign_2_encode_der,
+ latitudeSign_2_decode_xer,
+ latitudeSign_2_encode_xer,
+ latitudeSign_2_decode_uper,
+ latitudeSign_2_encode_uper,
+ latitudeSign_2_decode_aper,
+ latitudeSign_2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_latitudeSign_tags_2,
+ sizeof(asn_DEF_latitudeSign_tags_2)
+ /sizeof(asn_DEF_latitudeSign_tags_2[0]) - 1, /* 1 */
+ asn_DEF_latitudeSign_tags_2, /* Same as above */
+ sizeof(asn_DEF_latitudeSign_tags_2)
+ /sizeof(asn_DEF_latitudeSign_tags_2[0]), /* 2 */
+ &asn_PER_type_latitudeSign_constr_2,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_latitudeSign_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_GeographicalCoordinates_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalCoordinates, latitudeSign),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_latitudeSign_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "latitudeSign"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalCoordinates, latitude),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_latitude_constraint_1,
+ &asn_PER_memb_latitude_constr_5,
+ 0,
+ "latitude"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GeographicalCoordinates, longitude),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_longitude_constraint_1,
+ &asn_PER_memb_longitude_constr_6,
+ 0,
+ "longitude"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_GeographicalCoordinates, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_GeographicalCoordinates_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_GeographicalCoordinates_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GeographicalCoordinates_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitudeSign */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* latitude */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* longitude */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GeographicalCoordinates_specs_1 = {
+ sizeof(struct RANAP_GeographicalCoordinates),
+ offsetof(struct RANAP_GeographicalCoordinates, _asn_ctx),
+ asn_MAP_RANAP_GeographicalCoordinates_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_GeographicalCoordinates_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GeographicalCoordinates = {
+ "RANAP_GeographicalCoordinates",
+ "RANAP_GeographicalCoordinates",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GeographicalCoordinates_tags_1,
+ sizeof(asn_DEF_RANAP_GeographicalCoordinates_tags_1)
+ /sizeof(asn_DEF_RANAP_GeographicalCoordinates_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GeographicalCoordinates_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GeographicalCoordinates_tags_1)
+ /sizeof(asn_DEF_RANAP_GeographicalCoordinates_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GeographicalCoordinates_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_GeographicalCoordinates_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GlobalCN-ID.c b/src/ranap/RANAP_GlobalCN-ID.c
new file mode 100644
index 0000000..4bd7ed0
--- /dev/null
+++ b/src/ranap/RANAP_GlobalCN-ID.c
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GlobalCN-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GlobalCN_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GlobalCN_ID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GlobalCN_ID, cN_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cN-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GlobalCN_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GlobalCN_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cN-ID */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GlobalCN_ID_specs_1 = {
+ sizeof(struct RANAP_GlobalCN_ID),
+ offsetof(struct RANAP_GlobalCN_ID, _asn_ctx),
+ asn_MAP_RANAP_GlobalCN_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GlobalCN_ID = {
+ "RANAP_GlobalCN-ID",
+ "RANAP_GlobalCN-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GlobalCN_ID_tags_1,
+ sizeof(asn_DEF_RANAP_GlobalCN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GlobalCN_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GlobalCN_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GlobalCN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GlobalCN_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GlobalCN_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_GlobalCN_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GlobalRNC-ID.c b/src/ranap/RANAP_GlobalRNC-ID.c
new file mode 100644
index 0000000..3858840
--- /dev/null
+++ b/src/ranap/RANAP_GlobalRNC-ID.c
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GlobalRNC-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_GlobalRNC_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GlobalRNC_ID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_GlobalRNC_ID, rNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rNC-ID"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GlobalRNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_GlobalRNC_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rNC-ID */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_GlobalRNC_ID_specs_1 = {
+ sizeof(struct RANAP_GlobalRNC_ID),
+ offsetof(struct RANAP_GlobalRNC_ID, _asn_ctx),
+ asn_MAP_RANAP_GlobalRNC_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GlobalRNC_ID = {
+ "RANAP_GlobalRNC-ID",
+ "RANAP_GlobalRNC-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GlobalRNC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_GlobalRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GlobalRNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GlobalRNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GlobalRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_GlobalRNC_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_GlobalRNC_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_GlobalRNC_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_GuaranteedBitrate.c b/src/ranap/RANAP_GuaranteedBitrate.c
new file mode 100644
index 0000000..e00bf5c
--- /dev/null
+++ b/src/ranap/RANAP_GuaranteedBitrate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_GuaranteedBitrate.h>
+
+int
+RANAP_GuaranteedBitrate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 16000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_GuaranteedBitrate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_GuaranteedBitrate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GuaranteedBitrate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_GuaranteedBitrate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GuaranteedBitrate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_GuaranteedBitrate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_GuaranteedBitrate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_GuaranteedBitrate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_GuaranteedBitrate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_GuaranteedBitrate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_GuaranteedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_GuaranteedBitrate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 24, -1, 0l, 16000000l } /* (0..16000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_GuaranteedBitrate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_GuaranteedBitrate = {
+ "RANAP_GuaranteedBitrate",
+ "RANAP_GuaranteedBitrate",
+ RANAP_GuaranteedBitrate_free,
+ RANAP_GuaranteedBitrate_print,
+ RANAP_GuaranteedBitrate_constraint,
+ RANAP_GuaranteedBitrate_decode_ber,
+ RANAP_GuaranteedBitrate_encode_der,
+ RANAP_GuaranteedBitrate_decode_xer,
+ RANAP_GuaranteedBitrate_encode_xer,
+ RANAP_GuaranteedBitrate_decode_uper,
+ RANAP_GuaranteedBitrate_encode_uper,
+ RANAP_GuaranteedBitrate_decode_aper,
+ RANAP_GuaranteedBitrate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_GuaranteedBitrate_tags_1,
+ sizeof(asn_DEF_RANAP_GuaranteedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_GuaranteedBitrate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_GuaranteedBitrate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_GuaranteedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_GuaranteedBitrate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_GuaranteedBitrate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.c b/src/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.c
new file mode 100644
index 0000000..69e3d6f
--- /dev/null
+++ b/src/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HS-DSCH-MAC-d-Flow-ID.h>
+
+int
+RANAP_HS_DSCH_MAC_d_Flow_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 7l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_HS_DSCH_MAC_d_Flow_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_HS_DSCH_MAC_d_Flow_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_HS_DSCH_MAC_d_Flow_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_HS_DSCH_MAC_d_Flow_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_HS_DSCH_MAC_d_Flow_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (0..7) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID = {
+ "RANAP_HS-DSCH-MAC-d-Flow-ID",
+ "RANAP_HS-DSCH-MAC-d-Flow-ID",
+ RANAP_HS_DSCH_MAC_d_Flow_ID_free,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_print,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_constraint,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_decode_ber,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_encode_der,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_decode_xer,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_encode_xer,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_decode_uper,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_encode_uper,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_decode_aper,
+ RANAP_HS_DSCH_MAC_d_Flow_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1,
+ sizeof(asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_HS_DSCH_MAC_d_Flow_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_HS_DSCH_MAC_d_Flow_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_HigherBitratesThan16MbpsFlag.c b/src/ranap/RANAP_HigherBitratesThan16MbpsFlag.c
new file mode 100644
index 0000000..c4291e5
--- /dev/null
+++ b/src/ranap/RANAP_HigherBitratesThan16MbpsFlag.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HigherBitratesThan16MbpsFlag.h>
+
+int
+RANAP_HigherBitratesThan16MbpsFlag_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_HigherBitratesThan16MbpsFlag_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_HigherBitratesThan16MbpsFlag_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_HigherBitratesThan16MbpsFlag_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_HigherBitratesThan16MbpsFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_HigherBitratesThan16MbpsFlag_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_HigherBitratesThan16MbpsFlag_value2enum_1[] = {
+ { 0, 7, "allowed" },
+ { 1, 11, "not-allowed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_HigherBitratesThan16MbpsFlag_enum2value_1[] = {
+ 0, /* allowed(0) */
+ 1 /* not-allowed(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_HigherBitratesThan16MbpsFlag_specs_1 = {
+ asn_MAP_RANAP_HigherBitratesThan16MbpsFlag_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_HigherBitratesThan16MbpsFlag_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HigherBitratesThan16MbpsFlag = {
+ "RANAP_HigherBitratesThan16MbpsFlag",
+ "RANAP_HigherBitratesThan16MbpsFlag",
+ RANAP_HigherBitratesThan16MbpsFlag_free,
+ RANAP_HigherBitratesThan16MbpsFlag_print,
+ RANAP_HigherBitratesThan16MbpsFlag_constraint,
+ RANAP_HigherBitratesThan16MbpsFlag_decode_ber,
+ RANAP_HigherBitratesThan16MbpsFlag_encode_der,
+ RANAP_HigherBitratesThan16MbpsFlag_decode_xer,
+ RANAP_HigherBitratesThan16MbpsFlag_encode_xer,
+ RANAP_HigherBitratesThan16MbpsFlag_decode_uper,
+ RANAP_HigherBitratesThan16MbpsFlag_encode_uper,
+ RANAP_HigherBitratesThan16MbpsFlag_decode_aper,
+ RANAP_HigherBitratesThan16MbpsFlag_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1,
+ sizeof(asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_HigherBitratesThan16MbpsFlag_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_HigherBitratesThan16MbpsFlag_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_HigherBitratesThan16MbpsFlag_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_HorizontalSpeedAndBearing.c b/src/ranap/RANAP_HorizontalSpeedAndBearing.c
new file mode 100644
index 0000000..02f8ab5
--- /dev/null
+++ b/src/ranap/RANAP_HorizontalSpeedAndBearing.c
@@ -0,0 +1,131 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HorizontalSpeedAndBearing.h>
+
+static int
+memb_bearing_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 359l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_horizontalSpeed_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 2047l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_bearing_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 9, 9, 0l, 359l } /* (0..359) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_horizontalSpeed_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 11, 11, 0l, 2047l } /* (0..2047) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_HorizontalSpeedAndBearing_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalSpeedAndBearing, bearing),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_bearing_constraint_1,
+ &asn_PER_memb_bearing_constr_2,
+ 0,
+ "bearing"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalSpeedAndBearing, horizontalSpeed),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_horizontalSpeed_constraint_1,
+ &asn_PER_memb_horizontalSpeed_constr_3,
+ 0,
+ "horizontalSpeed"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_HorizontalSpeedAndBearing_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bearing */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* horizontalSpeed */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_HorizontalSpeedAndBearing_specs_1 = {
+ sizeof(struct RANAP_HorizontalSpeedAndBearing),
+ offsetof(struct RANAP_HorizontalSpeedAndBearing, _asn_ctx),
+ asn_MAP_RANAP_HorizontalSpeedAndBearing_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalSpeedAndBearing = {
+ "RANAP_HorizontalSpeedAndBearing",
+ "RANAP_HorizontalSpeedAndBearing",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1,
+ sizeof(asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalSpeedAndBearing_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_HorizontalSpeedAndBearing_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_HorizontalSpeedAndBearing_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_HorizontalVelocity.c b/src/ranap/RANAP_HorizontalVelocity.c
new file mode 100644
index 0000000..878ff66
--- /dev/null
+++ b/src/ranap/RANAP_HorizontalVelocity.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HorizontalVelocity.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_HorizontalVelocity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalVelocity, horizontalSpeedAndBearing),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalSpeedAndBearing,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalSpeedAndBearing"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_HorizontalVelocity, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_HorizontalVelocity_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_HorizontalVelocity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_HorizontalVelocity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* horizontalSpeedAndBearing */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_HorizontalVelocity_specs_1 = {
+ sizeof(struct RANAP_HorizontalVelocity),
+ offsetof(struct RANAP_HorizontalVelocity, _asn_ctx),
+ asn_MAP_RANAP_HorizontalVelocity_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_HorizontalVelocity_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalVelocity = {
+ "RANAP_HorizontalVelocity",
+ "RANAP_HorizontalVelocity",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HorizontalVelocity_tags_1,
+ sizeof(asn_DEF_RANAP_HorizontalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalVelocity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HorizontalVelocity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HorizontalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalVelocity_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_HorizontalVelocity_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_HorizontalVelocity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_HorizontalVelocityWithUncertainty.c b/src/ranap/RANAP_HorizontalVelocityWithUncertainty.c
new file mode 100644
index 0000000..70ed4f3
--- /dev/null
+++ b/src/ranap/RANAP_HorizontalVelocityWithUncertainty.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HorizontalVelocityWithUncertainty.h>
+
+static int
+memb_uncertaintySpeed_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_uncertaintySpeed_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_HorizontalVelocityWithUncertainty_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalVelocityWithUncertainty, horizontalSpeedAndBearing),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalSpeedAndBearing,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalSpeedAndBearing"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalVelocityWithUncertainty, uncertaintySpeed),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_uncertaintySpeed_constraint_1,
+ &asn_PER_memb_uncertaintySpeed_constr_3,
+ 0,
+ "uncertaintySpeed"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_HorizontalVelocityWithUncertainty, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_HorizontalVelocityWithUncertainty_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_HorizontalVelocityWithUncertainty_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* horizontalSpeedAndBearing */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uncertaintySpeed */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_HorizontalVelocityWithUncertainty_specs_1 = {
+ sizeof(struct RANAP_HorizontalVelocityWithUncertainty),
+ offsetof(struct RANAP_HorizontalVelocityWithUncertainty, _asn_ctx),
+ asn_MAP_RANAP_HorizontalVelocityWithUncertainty_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_HorizontalVelocityWithUncertainty_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalVelocityWithUncertainty = {
+ "RANAP_HorizontalVelocityWithUncertainty",
+ "RANAP_HorizontalVelocityWithUncertainty",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1,
+ sizeof(asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalVelocityWithUncertainty_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_HorizontalVelocityWithUncertainty_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_HorizontalVelocityWithUncertainty_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_HorizontalWithVerticalVelocity.c b/src/ranap/RANAP_HorizontalWithVerticalVelocity.c
new file mode 100644
index 0000000..0a2175e
--- /dev/null
+++ b/src/ranap/RANAP_HorizontalWithVerticalVelocity.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocity.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_HorizontalWithVerticalVelocity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocity, horizontalSpeedAndBearing),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalSpeedAndBearing,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalSpeedAndBearing"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocity, veritcalVelocity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_VerticalVelocity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "veritcalVelocity"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_HorizontalWithVerticalVelocity, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_HorizontalWithVerticalVelocity_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_HorizontalWithVerticalVelocity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* horizontalSpeedAndBearing */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* veritcalVelocity */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_HorizontalWithVerticalVelocity_specs_1 = {
+ sizeof(struct RANAP_HorizontalWithVerticalVelocity),
+ offsetof(struct RANAP_HorizontalWithVerticalVelocity, _asn_ctx),
+ asn_MAP_RANAP_HorizontalWithVerticalVelocity_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_HorizontalWithVerticalVelocity_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalWithVerticalVelocity = {
+ "RANAP_HorizontalWithVerticalVelocity",
+ "RANAP_HorizontalWithVerticalVelocity",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1,
+ sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocity_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_HorizontalWithVerticalVelocity_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_HorizontalWithVerticalVelocity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.c b/src/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.c
new file mode 100644
index 0000000..0472005
--- /dev/null
+++ b/src/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.c
@@ -0,0 +1,163 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_HorizontalWithVerticalVelocityAndUncertainty.h>
+
+static int
+memb_horizontalUncertaintySpeed_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_verticalUncertaintySpeed_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_horizontalUncertaintySpeed_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_verticalUncertaintySpeed_constr_5 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_HorizontalWithVerticalVelocityAndUncertainty_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, horizontalSpeedAndBearing),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalSpeedAndBearing,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalSpeedAndBearing"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, veritcalVelocity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_VerticalVelocity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "veritcalVelocity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, horizontalUncertaintySpeed),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_horizontalUncertaintySpeed_constraint_1,
+ &asn_PER_memb_horizontalUncertaintySpeed_constr_4,
+ 0,
+ "horizontalUncertaintySpeed"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, verticalUncertaintySpeed),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_verticalUncertaintySpeed_constraint_1,
+ &asn_PER_memb_verticalUncertaintySpeed_constr_5,
+ 0,
+ "verticalUncertaintySpeed"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_HorizontalWithVerticalVelocityAndUncertainty_oms_1[] = { 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* horizontalSpeedAndBearing */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* veritcalVelocity */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* horizontalUncertaintySpeed */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* verticalUncertaintySpeed */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_HorizontalWithVerticalVelocityAndUncertainty_specs_1 = {
+ sizeof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty),
+ offsetof(struct RANAP_HorizontalWithVerticalVelocityAndUncertainty, _asn_ctx),
+ asn_MAP_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_HorizontalWithVerticalVelocityAndUncertainty_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty = {
+ "RANAP_HorizontalWithVerticalVelocityAndUncertainty",
+ "RANAP_HorizontalWithVerticalVelocityAndUncertainty",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1,
+ sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1)
+ /sizeof(asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_HorizontalWithVerticalVelocityAndUncertainty_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_HorizontalWithVerticalVelocityAndUncertainty_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IE-Extensions.c b/src/ranap/RANAP_IE-Extensions.c
new file mode 100644
index 0000000..689058f
--- /dev/null
+++ b/src/ranap/RANAP_IE-Extensions.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IE-Extensions.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_IE_Extensions_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IE_Extensions_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IE_Extensions_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_IE_Extensions_specs_1 = {
+ sizeof(struct RANAP_IE_Extensions),
+ offsetof(struct RANAP_IE_Extensions, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IE_Extensions = {
+ "RANAP_IE-Extensions",
+ "RANAP_IE-Extensions",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IE_Extensions_tags_1,
+ sizeof(asn_DEF_RANAP_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_RANAP_IE_Extensions_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IE_Extensions_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_RANAP_IE_Extensions_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IE_Extensions_constr_1,
+ asn_MBR_RANAP_IE_Extensions_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_IE_Extensions_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IE.c b/src/ranap/RANAP_IE.c
new file mode 100644
index 0000000..47c54b7
--- /dev/null
+++ b/src/ranap/RANAP_IE.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IE.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_IE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IE, id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IE, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IE, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IE_specs_1 = {
+ sizeof(struct RANAP_IE),
+ offsetof(struct RANAP_IE, _asn_ctx),
+ asn_MAP_RANAP_IE_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IE = {
+ "RANAP_IE",
+ "RANAP_IE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IE_tags_1,
+ sizeof(asn_DEF_RANAP_IE_tags_1)
+ /sizeof(asn_DEF_RANAP_IE_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IE_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IE_tags_1)
+ /sizeof(asn_DEF_RANAP_IE_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IE_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_IE_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IMEI.c b/src/ranap/RANAP_IMEI.c
new file mode 100644
index 0000000..a1bf807
--- /dev/null
+++ b/src/ranap/RANAP_IMEI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEI.h>
+
+int
+RANAP_IMEI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IMEI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_IMEI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IMEI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IMEI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IMEI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IMEI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IMEI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IMEI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMEI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IMEI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEI = {
+ "RANAP_IMEI",
+ "RANAP_IMEI",
+ RANAP_IMEI_free,
+ RANAP_IMEI_print,
+ RANAP_IMEI_constraint,
+ RANAP_IMEI_decode_ber,
+ RANAP_IMEI_encode_der,
+ RANAP_IMEI_decode_xer,
+ RANAP_IMEI_encode_xer,
+ RANAP_IMEI_decode_uper,
+ RANAP_IMEI_encode_uper,
+ RANAP_IMEI_decode_aper,
+ RANAP_IMEI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEI_tags_1,
+ sizeof(asn_DEF_RANAP_IMEI_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEI_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IMEI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IMEIGroup.c b/src/ranap/RANAP_IMEIGroup.c
new file mode 100644
index 0000000..684fcdd
--- /dev/null
+++ b/src/ranap/RANAP_IMEIGroup.c
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEIGroup.h>
+
+static int
+memb_iMEIMask_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 7l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_iMEIMask_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 7l, 7l } /* (SIZE(7..7)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IMEIGroup_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IMEIGroup, iMEI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IMEIGroup, iMEIMask),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_iMEIMask_constraint_1,
+ &asn_PER_memb_iMEIMask_constr_3,
+ 0,
+ "iMEIMask"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IMEIGroup, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_IMEIGroup_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEIGroup_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IMEIGroup_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMEI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iMEIMask */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IMEIGroup_specs_1 = {
+ sizeof(struct RANAP_IMEIGroup),
+ offsetof(struct RANAP_IMEIGroup, _asn_ctx),
+ asn_MAP_RANAP_IMEIGroup_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_IMEIGroup_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEIGroup = {
+ "RANAP_IMEIGroup",
+ "RANAP_IMEIGroup",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEIGroup_tags_1,
+ sizeof(asn_DEF_RANAP_IMEIGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEIGroup_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEIGroup_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEIGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEIGroup_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IMEIGroup_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_IMEIGroup_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IMEIList.c b/src/ranap/RANAP_IMEIList.c
new file mode 100644
index 0000000..f24ad4e
--- /dev/null
+++ b/src/ranap/RANAP_IMEIList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEIList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_IMEIList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1l, 64l } /* (SIZE(1..64)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IMEIList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IMEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEIList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_IMEIList_specs_1 = {
+ sizeof(struct RANAP_IMEIList),
+ offsetof(struct RANAP_IMEIList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEIList = {
+ "RANAP_IMEIList",
+ "RANAP_IMEIList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEIList_tags_1,
+ sizeof(asn_DEF_RANAP_IMEIList_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEIList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEIList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEIList_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEIList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IMEIList_constr_1,
+ asn_MBR_RANAP_IMEIList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_IMEIList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IMEISV.c b/src/ranap/RANAP_IMEISV.c
new file mode 100644
index 0000000..1f9627d
--- /dev/null
+++ b/src/ranap/RANAP_IMEISV.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEISV.h>
+
+int
+RANAP_IMEISV_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IMEISV_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_IMEISV_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IMEISV_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEISV_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IMEISV_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEISV_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IMEISV_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMEISV_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IMEISV_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IMEISV_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IMEISV_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMEISV_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IMEISV_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEISV_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISV = {
+ "RANAP_IMEISV",
+ "RANAP_IMEISV",
+ RANAP_IMEISV_free,
+ RANAP_IMEISV_print,
+ RANAP_IMEISV_constraint,
+ RANAP_IMEISV_decode_ber,
+ RANAP_IMEISV_encode_der,
+ RANAP_IMEISV_decode_xer,
+ RANAP_IMEISV_encode_xer,
+ RANAP_IMEISV_decode_uper,
+ RANAP_IMEISV_encode_uper,
+ RANAP_IMEISV_decode_aper,
+ RANAP_IMEISV_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEISV_tags_1,
+ sizeof(asn_DEF_RANAP_IMEISV_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISV_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEISV_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEISV_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISV_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IMEISV_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IMEISVGroup.c b/src/ranap/RANAP_IMEISVGroup.c
new file mode 100644
index 0000000..83ccbd8
--- /dev/null
+++ b/src/ranap/RANAP_IMEISVGroup.c
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEISVGroup.h>
+
+static int
+memb_iMEISVMask_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 7l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_iMEISVMask_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 7l, 7l } /* (SIZE(7..7)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IMEISVGroup_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IMEISVGroup, iMEISV),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEISV,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEISV"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IMEISVGroup, iMEISVMask),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_iMEISVMask_constraint_1,
+ &asn_PER_memb_iMEISVMask_constr_3,
+ 0,
+ "iMEISVMask"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IMEISVGroup, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_IMEISVGroup_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEISVGroup_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IMEISVGroup_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iMEISV */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iMEISVMask */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IMEISVGroup_specs_1 = {
+ sizeof(struct RANAP_IMEISVGroup),
+ offsetof(struct RANAP_IMEISVGroup, _asn_ctx),
+ asn_MAP_RANAP_IMEISVGroup_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_IMEISVGroup_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISVGroup = {
+ "RANAP_IMEISVGroup",
+ "RANAP_IMEISVGroup",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEISVGroup_tags_1,
+ sizeof(asn_DEF_RANAP_IMEISVGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISVGroup_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEISVGroup_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEISVGroup_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISVGroup_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IMEISVGroup_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_IMEISVGroup_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IMEISVList.c b/src/ranap/RANAP_IMEISVList.c
new file mode 100644
index 0000000..25cb5e1
--- /dev/null
+++ b/src/ranap/RANAP_IMEISVList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMEISVList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_IMEISVList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1l, 64l } /* (SIZE(1..64)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IMEISVList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IMEISV,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IMEISVList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_IMEISVList_specs_1 = {
+ sizeof(struct RANAP_IMEISVList),
+ offsetof(struct RANAP_IMEISVList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMEISVList = {
+ "RANAP_IMEISVList",
+ "RANAP_IMEISVList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMEISVList_tags_1,
+ sizeof(asn_DEF_RANAP_IMEISVList_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISVList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMEISVList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMEISVList_tags_1)
+ /sizeof(asn_DEF_RANAP_IMEISVList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IMEISVList_constr_1,
+ asn_MBR_RANAP_IMEISVList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_IMEISVList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IMSI.c b/src/ranap/RANAP_IMSI.c
new file mode 100644
index 0000000..cddcb8a
--- /dev/null
+++ b/src/ranap/RANAP_IMSI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IMSI.h>
+
+int
+RANAP_IMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 3l && size <= 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_IMSI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IMSI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IMSI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IMSI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IMSI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 3l, 8l } /* (SIZE(3..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IMSI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IMSI = {
+ "RANAP_IMSI",
+ "RANAP_IMSI",
+ RANAP_IMSI_free,
+ RANAP_IMSI_print,
+ RANAP_IMSI_constraint,
+ RANAP_IMSI_decode_ber,
+ RANAP_IMSI_encode_der,
+ RANAP_IMSI_decode_xer,
+ RANAP_IMSI_encode_xer,
+ RANAP_IMSI_decode_uper,
+ RANAP_IMSI_encode_uper,
+ RANAP_IMSI_decode_aper,
+ RANAP_IMSI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IMSI_tags_1,
+ sizeof(asn_DEF_RANAP_IMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_IMSI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IMSI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_IMSI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IMSI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IPMulticastAddress.c b/src/ranap/RANAP_IPMulticastAddress.c
new file mode 100644
index 0000000..3a9ee2b
--- /dev/null
+++ b/src/ranap/RANAP_IPMulticastAddress.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IPMulticastAddress.h>
+
+int
+RANAP_IPMulticastAddress_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 4l && size <= 16l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_IPMulticastAddress_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IPMulticastAddress_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IPMulticastAddress_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IPMulticastAddress_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IPMulticastAddress_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IPMulticastAddress_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IPMulticastAddress_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IPMulticastAddress_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IPMulticastAddress_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IPMulticastAddress_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IPMulticastAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IPMulticastAddress_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 4l, 16l } /* (SIZE(4..16)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IPMulticastAddress_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IPMulticastAddress = {
+ "RANAP_IPMulticastAddress",
+ "RANAP_IPMulticastAddress",
+ RANAP_IPMulticastAddress_free,
+ RANAP_IPMulticastAddress_print,
+ RANAP_IPMulticastAddress_constraint,
+ RANAP_IPMulticastAddress_decode_ber,
+ RANAP_IPMulticastAddress_encode_der,
+ RANAP_IPMulticastAddress_decode_xer,
+ RANAP_IPMulticastAddress_encode_xer,
+ RANAP_IPMulticastAddress_decode_uper,
+ RANAP_IPMulticastAddress_encode_uper,
+ RANAP_IPMulticastAddress_decode_aper,
+ RANAP_IPMulticastAddress_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IPMulticastAddress_tags_1,
+ sizeof(asn_DEF_RANAP_IPMulticastAddress_tags_1)
+ /sizeof(asn_DEF_RANAP_IPMulticastAddress_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IPMulticastAddress_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IPMulticastAddress_tags_1)
+ /sizeof(asn_DEF_RANAP_IPMulticastAddress_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IPMulticastAddress_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IRAT-Measurement-Configuration.c b/src/ranap/RANAP_IRAT-Measurement-Configuration.c
new file mode 100644
index 0000000..766b8df
--- /dev/null
+++ b/src/ranap/RANAP_IRAT-Measurement-Configuration.c
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IRAT-Measurement-Configuration.h>
+
+static int
+memb_rSRP_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 97l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_rSRQ_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 34l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_rSRP_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 97l } /* (0..97) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_rSRQ_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 6, 6, 0l, 34l } /* (0..34) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IRAT_Measurement_Configuration_1[] = {
+ { ATF_POINTER, 2, offsetof(struct RANAP_IRAT_Measurement_Configuration, rSRP),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_rSRP_constraint_1,
+ &asn_PER_memb_rSRP_constr_2,
+ 0,
+ "rSRP"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IRAT_Measurement_Configuration, rSRQ),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_rSRQ_constraint_1,
+ &asn_PER_memb_rSRQ_constr_3,
+ 0,
+ "rSRQ"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IRAT_Measurement_Configuration, iRATmeasurementParameters),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IRATmeasurementParameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iRATmeasurementParameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IRAT_Measurement_Configuration, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_IRAT_Measurement_Configuration_oms_1[] = { 0, 1, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IRAT_Measurement_Configuration_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rSRP */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rSRQ */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iRATmeasurementParameters */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IRAT_Measurement_Configuration_specs_1 = {
+ sizeof(struct RANAP_IRAT_Measurement_Configuration),
+ offsetof(struct RANAP_IRAT_Measurement_Configuration, _asn_ctx),
+ asn_MAP_RANAP_IRAT_Measurement_Configuration_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_IRAT_Measurement_Configuration_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IRAT_Measurement_Configuration = {
+ "RANAP_IRAT-Measurement-Configuration",
+ "RANAP_IRAT-Measurement-Configuration",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1,
+ sizeof(asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1)
+ /sizeof(asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1)
+ /sizeof(asn_DEF_RANAP_IRAT_Measurement_Configuration_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IRAT_Measurement_Configuration_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_IRAT_Measurement_Configuration_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IRATmeasurementParameters.c b/src/ranap/RANAP_IRATmeasurementParameters.c
new file mode 100644
index 0000000..b511b59
--- /dev/null
+++ b/src/ranap/RANAP_IRATmeasurementParameters.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IRATmeasurementParameters.h>
+
+static int
+memb_measurementDuration_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 100l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_measurementDuration_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 1l, 100l } /* (1..100) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IRATmeasurementParameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IRATmeasurementParameters, measurementDuration),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_measurementDuration_constraint_1,
+ &asn_PER_memb_measurementDuration_constr_2,
+ 0,
+ "measurementDuration"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_IRATmeasurementParameters, eUTRANFrequencies),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_EUTRANFrequencies,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "eUTRANFrequencies"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IRATmeasurementParameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_IRATmeasurementParameters_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IRATmeasurementParameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IRATmeasurementParameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementDuration */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eUTRANFrequencies */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IRATmeasurementParameters_specs_1 = {
+ sizeof(struct RANAP_IRATmeasurementParameters),
+ offsetof(struct RANAP_IRATmeasurementParameters, _asn_ctx),
+ asn_MAP_RANAP_IRATmeasurementParameters_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_IRATmeasurementParameters_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IRATmeasurementParameters = {
+ "RANAP_IRATmeasurementParameters",
+ "RANAP_IRATmeasurementParameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IRATmeasurementParameters_tags_1,
+ sizeof(asn_DEF_RANAP_IRATmeasurementParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_IRATmeasurementParameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IRATmeasurementParameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IRATmeasurementParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_IRATmeasurementParameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IRATmeasurementParameters_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_IRATmeasurementParameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ImmediateMDT.c b/src/ranap/RANAP_ImmediateMDT.c
new file mode 100644
index 0000000..c007c09
--- /dev/null
+++ b/src/ranap/RANAP_ImmediateMDT.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ImmediateMDT.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_ImmediateMDT_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ImmediateMDT, measurementsToActivate),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MeasurementsToActivate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "measurementsToActivate"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_ImmediateMDT, m1report),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_M1Report,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m1report"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_ImmediateMDT, m2report),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_M2Report,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m2report"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_ImmediateMDT, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_ImmediateMDT_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_ImmediateMDT_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ImmediateMDT_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementsToActivate */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m1report */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m2report */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ImmediateMDT_specs_1 = {
+ sizeof(struct RANAP_ImmediateMDT),
+ offsetof(struct RANAP_ImmediateMDT, _asn_ctx),
+ asn_MAP_RANAP_ImmediateMDT_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_ImmediateMDT_oms_1, /* Optional members */
+ 2, 1, /* Root/Additions */
+ 2, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ImmediateMDT = {
+ "RANAP_ImmediateMDT",
+ "RANAP_ImmediateMDT",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ImmediateMDT_tags_1,
+ sizeof(asn_DEF_RANAP_ImmediateMDT_tags_1)
+ /sizeof(asn_DEF_RANAP_ImmediateMDT_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ImmediateMDT_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ImmediateMDT_tags_1)
+ /sizeof(asn_DEF_RANAP_ImmediateMDT_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ImmediateMDT_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_ImmediateMDT_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IncludeVelocity.c b/src/ranap/RANAP_IncludeVelocity.c
new file mode 100644
index 0000000..c10b1cb
--- /dev/null
+++ b/src/ranap/RANAP_IncludeVelocity.c
@@ -0,0 +1,163 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IncludeVelocity.h>
+
+int
+RANAP_IncludeVelocity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_IncludeVelocity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IncludeVelocity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IncludeVelocity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IncludeVelocity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IncludeVelocity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IncludeVelocity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IncludeVelocity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IncludeVelocity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IncludeVelocity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IncludeVelocity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IncludeVelocity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IncludeVelocity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 0, 0, 0l, 0l } /* (0..0) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_IncludeVelocity_value2enum_1[] = {
+ { 0, 9, "requested" }
+};
+static const unsigned int asn_MAP_RANAP_IncludeVelocity_enum2value_1[] = {
+ 0 /* requested(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_IncludeVelocity_specs_1 = {
+ asn_MAP_RANAP_IncludeVelocity_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_IncludeVelocity_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IncludeVelocity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IncludeVelocity = {
+ "RANAP_IncludeVelocity",
+ "RANAP_IncludeVelocity",
+ RANAP_IncludeVelocity_free,
+ RANAP_IncludeVelocity_print,
+ RANAP_IncludeVelocity_constraint,
+ RANAP_IncludeVelocity_decode_ber,
+ RANAP_IncludeVelocity_encode_der,
+ RANAP_IncludeVelocity_decode_xer,
+ RANAP_IncludeVelocity_encode_xer,
+ RANAP_IncludeVelocity_decode_uper,
+ RANAP_IncludeVelocity_encode_uper,
+ RANAP_IncludeVelocity_decode_aper,
+ RANAP_IncludeVelocity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IncludeVelocity_tags_1,
+ sizeof(asn_DEF_RANAP_IncludeVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_IncludeVelocity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IncludeVelocity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IncludeVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_IncludeVelocity_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IncludeVelocity_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_IncludeVelocity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationExchangeID.c b/src/ranap/RANAP_InformationExchangeID.c
new file mode 100644
index 0000000..239c345
--- /dev/null
+++ b/src/ranap/RANAP_InformationExchangeID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationExchangeID.h>
+
+int
+RANAP_InformationExchangeID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 1048575l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_InformationExchangeID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_InformationExchangeID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationExchangeID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationExchangeID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 20, -1, 0l, 1048575l } /* (0..1048575) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationExchangeID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationExchangeID = {
+ "RANAP_InformationExchangeID",
+ "RANAP_InformationExchangeID",
+ RANAP_InformationExchangeID_free,
+ RANAP_InformationExchangeID_print,
+ RANAP_InformationExchangeID_constraint,
+ RANAP_InformationExchangeID_decode_ber,
+ RANAP_InformationExchangeID_encode_der,
+ RANAP_InformationExchangeID_decode_xer,
+ RANAP_InformationExchangeID_encode_xer,
+ RANAP_InformationExchangeID_decode_uper,
+ RANAP_InformationExchangeID_encode_uper,
+ RANAP_InformationExchangeID_decode_aper,
+ RANAP_InformationExchangeID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationExchangeID_tags_1,
+ sizeof(asn_DEF_RANAP_InformationExchangeID_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationExchangeID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationExchangeID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationExchangeID_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationExchangeID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_InformationExchangeID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_InformationExchangeType.c b/src/ranap/RANAP_InformationExchangeType.c
new file mode 100644
index 0000000..fd8bb0f
--- /dev/null
+++ b/src/ranap/RANAP_InformationExchangeType.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationExchangeType.h>
+
+int
+RANAP_InformationExchangeType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_InformationExchangeType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_InformationExchangeType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_InformationExchangeType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_InformationExchangeType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationExchangeType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationExchangeType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_InformationExchangeType_value2enum_1[] = {
+ { 0, 8, "transfer" },
+ { 1, 7, "request" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_InformationExchangeType_enum2value_1[] = {
+ 1, /* request(1) */
+ 0 /* transfer(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_InformationExchangeType_specs_1 = {
+ asn_MAP_RANAP_InformationExchangeType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_InformationExchangeType_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationExchangeType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationExchangeType = {
+ "RANAP_InformationExchangeType",
+ "RANAP_InformationExchangeType",
+ RANAP_InformationExchangeType_free,
+ RANAP_InformationExchangeType_print,
+ RANAP_InformationExchangeType_constraint,
+ RANAP_InformationExchangeType_decode_ber,
+ RANAP_InformationExchangeType_encode_der,
+ RANAP_InformationExchangeType_decode_xer,
+ RANAP_InformationExchangeType_encode_xer,
+ RANAP_InformationExchangeType_decode_uper,
+ RANAP_InformationExchangeType_encode_uper,
+ RANAP_InformationExchangeType_decode_aper,
+ RANAP_InformationExchangeType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationExchangeType_tags_1,
+ sizeof(asn_DEF_RANAP_InformationExchangeType_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationExchangeType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationExchangeType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationExchangeType_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationExchangeType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_InformationExchangeType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_InformationExchangeType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationRequestType.c b/src/ranap/RANAP_InformationRequestType.c
new file mode 100644
index 0000000..5775d89
--- /dev/null
+++ b/src/ranap/RANAP_InformationRequestType.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationRequestType.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationRequestType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_InformationRequestType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationRequestType, choice.mBMSIPMulticastAddressandAPNRequest),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mBMSIPMulticastAddressandAPNRequest"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationRequestType, choice.permanentNAS_UE_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_PermanentNAS_UE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "permanentNAS-UE-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationRequestType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mBMSIPMulticastAddressandAPNRequest */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* permanentNAS-UE-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_InformationRequestType_specs_1 = {
+ sizeof(struct RANAP_InformationRequestType),
+ offsetof(struct RANAP_InformationRequestType, _asn_ctx),
+ offsetof(struct RANAP_InformationRequestType, present),
+ sizeof(((struct RANAP_InformationRequestType *)0)->present),
+ asn_MAP_RANAP_InformationRequestType_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationRequestType = {
+ "RANAP_InformationRequestType",
+ "RANAP_InformationRequestType",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_InformationRequestType_constr_1,
+ asn_MBR_RANAP_InformationRequestType_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_InformationRequestType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationRequested.c b/src/ranap/RANAP_InformationRequested.c
new file mode 100644
index 0000000..b01e726
--- /dev/null
+++ b/src/ranap/RANAP_InformationRequested.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationRequested.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationRequested_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_InformationRequested_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationRequested, choice.requestedMBMSIPMulticastAddressandAPNRequest),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedMBMSIPMulticastAddressandAPNRequest"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationRequested, choice.requestedMulticastServiceList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RequestedMulticastServiceList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedMulticastServiceList"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationRequested_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requestedMBMSIPMulticastAddressandAPNRequest */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* requestedMulticastServiceList */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_InformationRequested_specs_1 = {
+ sizeof(struct RANAP_InformationRequested),
+ offsetof(struct RANAP_InformationRequested, _asn_ctx),
+ offsetof(struct RANAP_InformationRequested, present),
+ sizeof(((struct RANAP_InformationRequested *)0)->present),
+ asn_MAP_RANAP_InformationRequested_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationRequested = {
+ "RANAP_InformationRequested",
+ "RANAP_InformationRequested",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_InformationRequested_constr_1,
+ asn_MBR_RANAP_InformationRequested_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_InformationRequested_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationTransferConfirmation.c b/src/ranap/RANAP_InformationTransferConfirmation.c
new file mode 100644
index 0000000..846cb05
--- /dev/null
+++ b/src/ranap/RANAP_InformationTransferConfirmation.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationTransferConfirmation.h>
+
+static int
+memb_informationTransferConfirmation_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_informationTransferConfirmation_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_informationTransferConfirmation_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_informationTransferConfirmation_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_informationTransferConfirmation_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_informationTransferConfirmation_ies_specs_2 = {
+ sizeof(struct informationTransferConfirmation_ies),
+ offsetof(struct informationTransferConfirmation_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_informationTransferConfirmation_ies_2 = {
+ "informationTransferConfirmation-ies",
+ "informationTransferConfirmation-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_informationTransferConfirmation_ies_tags_2,
+ sizeof(asn_DEF_informationTransferConfirmation_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferConfirmation_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_informationTransferConfirmation_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_informationTransferConfirmation_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferConfirmation_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_informationTransferConfirmation_ies_constr_2,
+ asn_MBR_informationTransferConfirmation_ies_2,
+ 1, /* Single element */
+ &asn_SPC_informationTransferConfirmation_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_InformationTransferConfirmation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationTransferConfirmation, informationTransferConfirmation_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_informationTransferConfirmation_ies_2,
+ memb_informationTransferConfirmation_ies_constraint_1,
+ &asn_PER_memb_informationTransferConfirmation_ies_constr_2,
+ 0,
+ "informationTransferConfirmation-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationTransferConfirmation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationTransferConfirmation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* informationTransferConfirmation-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InformationTransferConfirmation_specs_1 = {
+ sizeof(struct RANAP_InformationTransferConfirmation),
+ offsetof(struct RANAP_InformationTransferConfirmation, _asn_ctx),
+ asn_MAP_RANAP_InformationTransferConfirmation_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferConfirmation = {
+ "RANAP_InformationTransferConfirmation",
+ "RANAP_InformationTransferConfirmation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationTransferConfirmation_tags_1,
+ sizeof(asn_DEF_RANAP_InformationTransferConfirmation_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferConfirmation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationTransferConfirmation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationTransferConfirmation_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferConfirmation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InformationTransferConfirmation_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InformationTransferConfirmation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationTransferFailure.c b/src/ranap/RANAP_InformationTransferFailure.c
new file mode 100644
index 0000000..fe3b40d
--- /dev/null
+++ b/src/ranap/RANAP_InformationTransferFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationTransferFailure.h>
+
+static int
+memb_informationTransferFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_informationTransferFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_informationTransferFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_informationTransferFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_informationTransferFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_informationTransferFailure_ies_specs_2 = {
+ sizeof(struct informationTransferFailure_ies),
+ offsetof(struct informationTransferFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_informationTransferFailure_ies_2 = {
+ "informationTransferFailure-ies",
+ "informationTransferFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_informationTransferFailure_ies_tags_2,
+ sizeof(asn_DEF_informationTransferFailure_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_informationTransferFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_informationTransferFailure_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_informationTransferFailure_ies_constr_2,
+ asn_MBR_informationTransferFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_informationTransferFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_InformationTransferFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationTransferFailure, informationTransferFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_informationTransferFailure_ies_2,
+ memb_informationTransferFailure_ies_constraint_1,
+ &asn_PER_memb_informationTransferFailure_ies_constr_2,
+ 0,
+ "informationTransferFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationTransferFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationTransferFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* informationTransferFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InformationTransferFailure_specs_1 = {
+ sizeof(struct RANAP_InformationTransferFailure),
+ offsetof(struct RANAP_InformationTransferFailure, _asn_ctx),
+ asn_MAP_RANAP_InformationTransferFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferFailure = {
+ "RANAP_InformationTransferFailure",
+ "RANAP_InformationTransferFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationTransferFailure_tags_1,
+ sizeof(asn_DEF_RANAP_InformationTransferFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationTransferFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationTransferFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InformationTransferFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InformationTransferFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationTransferID.c b/src/ranap/RANAP_InformationTransferID.c
new file mode 100644
index 0000000..2a862a6
--- /dev/null
+++ b/src/ranap/RANAP_InformationTransferID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationTransferID.h>
+
+int
+RANAP_InformationTransferID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 1048575l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_InformationTransferID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_InformationTransferID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_InformationTransferID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationTransferID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_InformationTransferID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationTransferID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_InformationTransferID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_InformationTransferID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_InformationTransferID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_InformationTransferID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_InformationTransferID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_InformationTransferID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationTransferID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 20, -1, 0l, 1048575l } /* (0..1048575) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationTransferID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferID = {
+ "RANAP_InformationTransferID",
+ "RANAP_InformationTransferID",
+ RANAP_InformationTransferID_free,
+ RANAP_InformationTransferID_print,
+ RANAP_InformationTransferID_constraint,
+ RANAP_InformationTransferID_decode_ber,
+ RANAP_InformationTransferID_encode_der,
+ RANAP_InformationTransferID_decode_xer,
+ RANAP_InformationTransferID_encode_xer,
+ RANAP_InformationTransferID_decode_uper,
+ RANAP_InformationTransferID_encode_uper,
+ RANAP_InformationTransferID_decode_aper,
+ RANAP_InformationTransferID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationTransferID_tags_1,
+ sizeof(asn_DEF_RANAP_InformationTransferID_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationTransferID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationTransferID_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_InformationTransferID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_InformationTransferIndication.c b/src/ranap/RANAP_InformationTransferIndication.c
new file mode 100644
index 0000000..5956c5e
--- /dev/null
+++ b/src/ranap/RANAP_InformationTransferIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationTransferIndication.h>
+
+static int
+memb_informationTransferIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_informationTransferIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_informationTransferIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_informationTransferIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_informationTransferIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_informationTransferIndication_ies_specs_2 = {
+ sizeof(struct informationTransferIndication_ies),
+ offsetof(struct informationTransferIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_informationTransferIndication_ies_2 = {
+ "informationTransferIndication-ies",
+ "informationTransferIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_informationTransferIndication_ies_tags_2,
+ sizeof(asn_DEF_informationTransferIndication_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_informationTransferIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_informationTransferIndication_ies_tags_2)
+ /sizeof(asn_DEF_informationTransferIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_informationTransferIndication_ies_constr_2,
+ asn_MBR_informationTransferIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_informationTransferIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_InformationTransferIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationTransferIndication, informationTransferIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_informationTransferIndication_ies_2,
+ memb_informationTransferIndication_ies_constraint_1,
+ &asn_PER_memb_informationTransferIndication_ies_constr_2,
+ 0,
+ "informationTransferIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InformationTransferIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationTransferIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* informationTransferIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InformationTransferIndication_specs_1 = {
+ sizeof(struct RANAP_InformationTransferIndication),
+ offsetof(struct RANAP_InformationTransferIndication, _asn_ctx),
+ asn_MAP_RANAP_InformationTransferIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferIndication = {
+ "RANAP_InformationTransferIndication",
+ "RANAP_InformationTransferIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InformationTransferIndication_tags_1,
+ sizeof(asn_DEF_RANAP_InformationTransferIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InformationTransferIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InformationTransferIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_InformationTransferIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InformationTransferIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InformationTransferIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InformationTransferType.c b/src/ranap/RANAP_InformationTransferType.c
new file mode 100644
index 0000000..c73463d
--- /dev/null
+++ b/src/ranap/RANAP_InformationTransferType.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InformationTransferType.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_InformationTransferType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_InformationTransferType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InformationTransferType, choice.rNCTraceInformation),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RNCTraceInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rNCTraceInformation"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InformationTransferType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rNCTraceInformation */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_InformationTransferType_specs_1 = {
+ sizeof(struct RANAP_InformationTransferType),
+ offsetof(struct RANAP_InformationTransferType, _asn_ctx),
+ offsetof(struct RANAP_InformationTransferType, present),
+ sizeof(((struct RANAP_InformationTransferType *)0)->present),
+ asn_MAP_RANAP_InformationTransferType_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferType = {
+ "RANAP_InformationTransferType",
+ "RANAP_InformationTransferType",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_InformationTransferType_constr_1,
+ asn_MBR_RANAP_InformationTransferType_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InformationTransferType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InitialUE-Message.c b/src/ranap/RANAP_InitialUE-Message.c
new file mode 100644
index 0000000..45ff1e5
--- /dev/null
+++ b/src/ranap/RANAP_InitialUE-Message.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InitialUE-Message.h>
+
+static int
+memb_initialUE_Message_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_initialUE_Message_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_initialUE_Message_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_initialUE_Message_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_initialUE_Message_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_initialUE_Message_ies_specs_2 = {
+ sizeof(struct initialUE_Message_ies),
+ offsetof(struct initialUE_Message_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_initialUE_Message_ies_2 = {
+ "initialUE-Message-ies",
+ "initialUE-Message-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_initialUE_Message_ies_tags_2,
+ sizeof(asn_DEF_initialUE_Message_ies_tags_2)
+ /sizeof(asn_DEF_initialUE_Message_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_initialUE_Message_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_initialUE_Message_ies_tags_2)
+ /sizeof(asn_DEF_initialUE_Message_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_initialUE_Message_ies_constr_2,
+ asn_MBR_initialUE_Message_ies_2,
+ 1, /* Single element */
+ &asn_SPC_initialUE_Message_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_InitialUE_Message_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InitialUE_Message, initialUE_Message_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_initialUE_Message_ies_2,
+ memb_initialUE_Message_ies_constraint_1,
+ &asn_PER_memb_initialUE_Message_ies_constr_2,
+ 0,
+ "initialUE-Message-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InitialUE_Message_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InitialUE_Message_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* initialUE-Message-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InitialUE_Message_specs_1 = {
+ sizeof(struct RANAP_InitialUE_Message),
+ offsetof(struct RANAP_InitialUE_Message, _asn_ctx),
+ asn_MAP_RANAP_InitialUE_Message_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InitialUE_Message = {
+ "RANAP_InitialUE-Message",
+ "RANAP_InitialUE-Message",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InitialUE_Message_tags_1,
+ sizeof(asn_DEF_RANAP_InitialUE_Message_tags_1)
+ /sizeof(asn_DEF_RANAP_InitialUE_Message_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InitialUE_Message_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InitialUE_Message_tags_1)
+ /sizeof(asn_DEF_RANAP_InitialUE_Message_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InitialUE_Message_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InitialUE_Message_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InitiatingMessage.c b/src/ranap/RANAP_InitiatingMessage.c
new file mode 100644
index 0000000..a9a2e72
--- /dev/null
+++ b/src/ranap/RANAP_InitiatingMessage.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InitiatingMessage.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_InitiatingMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InitiatingMessage, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InitiatingMessage, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InitiatingMessage, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_InitiatingMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InitiatingMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InitiatingMessage_specs_1 = {
+ sizeof(struct RANAP_InitiatingMessage),
+ offsetof(struct RANAP_InitiatingMessage, _asn_ctx),
+ asn_MAP_RANAP_InitiatingMessage_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InitiatingMessage = {
+ "RANAP_InitiatingMessage",
+ "RANAP_InitiatingMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InitiatingMessage_tags_1,
+ sizeof(asn_DEF_RANAP_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_InitiatingMessage_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InitiatingMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_InitiatingMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InitiatingMessage_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_InitiatingMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IntegrityProtectionAlgorithm.c b/src/ranap/RANAP_IntegrityProtectionAlgorithm.c
new file mode 100644
index 0000000..a402600
--- /dev/null
+++ b/src/ranap/RANAP_IntegrityProtectionAlgorithm.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IntegrityProtectionAlgorithm.h>
+
+int
+RANAP_IntegrityProtectionAlgorithm_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_IntegrityProtectionAlgorithm_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IntegrityProtectionAlgorithm_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionAlgorithm_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionAlgorithm_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionAlgorithm_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionAlgorithm_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionAlgorithm_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionAlgorithm_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionAlgorithm_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionAlgorithm_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IntegrityProtectionAlgorithm_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IntegrityProtectionAlgorithm_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (0..15) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionAlgorithm = {
+ "RANAP_IntegrityProtectionAlgorithm",
+ "RANAP_IntegrityProtectionAlgorithm",
+ RANAP_IntegrityProtectionAlgorithm_free,
+ RANAP_IntegrityProtectionAlgorithm_print,
+ RANAP_IntegrityProtectionAlgorithm_constraint,
+ RANAP_IntegrityProtectionAlgorithm_decode_ber,
+ RANAP_IntegrityProtectionAlgorithm_encode_der,
+ RANAP_IntegrityProtectionAlgorithm_decode_xer,
+ RANAP_IntegrityProtectionAlgorithm_encode_xer,
+ RANAP_IntegrityProtectionAlgorithm_decode_uper,
+ RANAP_IntegrityProtectionAlgorithm_encode_uper,
+ RANAP_IntegrityProtectionAlgorithm_decode_aper,
+ RANAP_IntegrityProtectionAlgorithm_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1,
+ sizeof(asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionAlgorithm_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IntegrityProtectionAlgorithm_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IntegrityProtectionInformation.c b/src/ranap/RANAP_IntegrityProtectionInformation.c
new file mode 100644
index 0000000..4c4453a
--- /dev/null
+++ b/src/ranap/RANAP_IntegrityProtectionInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IntegrityProtectionInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_IntegrityProtectionInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IntegrityProtectionInformation, permittedAlgorithms),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "permittedAlgorithms"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IntegrityProtectionInformation, key),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IntegrityProtectionKey,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "key"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_IntegrityProtectionInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_IntegrityProtectionInformation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_IntegrityProtectionInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IntegrityProtectionInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* permittedAlgorithms */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* key */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_IntegrityProtectionInformation_specs_1 = {
+ sizeof(struct RANAP_IntegrityProtectionInformation),
+ offsetof(struct RANAP_IntegrityProtectionInformation, _asn_ctx),
+ asn_MAP_RANAP_IntegrityProtectionInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_IntegrityProtectionInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionInformation = {
+ "RANAP_IntegrityProtectionInformation",
+ "RANAP_IntegrityProtectionInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IntegrityProtectionInformation_tags_1,
+ sizeof(asn_DEF_RANAP_IntegrityProtectionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IntegrityProtectionInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IntegrityProtectionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_IntegrityProtectionInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_IntegrityProtectionInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IntegrityProtectionKey.c b/src/ranap/RANAP_IntegrityProtectionKey.c
new file mode 100644
index 0000000..fe42226
--- /dev/null
+++ b/src/ranap/RANAP_IntegrityProtectionKey.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IntegrityProtectionKey.h>
+
+int
+RANAP_IntegrityProtectionKey_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_IntegrityProtectionKey_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IntegrityProtectionKey_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionKey_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionKey_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionKey_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionKey_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionKey_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionKey_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IntegrityProtectionKey_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IntegrityProtectionKey_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IntegrityProtectionKey_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IntegrityProtectionKey_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 128l, 128l } /* (SIZE(128..128)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IntegrityProtectionKey_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IntegrityProtectionKey = {
+ "RANAP_IntegrityProtectionKey",
+ "RANAP_IntegrityProtectionKey",
+ RANAP_IntegrityProtectionKey_free,
+ RANAP_IntegrityProtectionKey_print,
+ RANAP_IntegrityProtectionKey_constraint,
+ RANAP_IntegrityProtectionKey_decode_ber,
+ RANAP_IntegrityProtectionKey_encode_der,
+ RANAP_IntegrityProtectionKey_decode_xer,
+ RANAP_IntegrityProtectionKey_encode_xer,
+ RANAP_IntegrityProtectionKey_decode_uper,
+ RANAP_IntegrityProtectionKey_encode_uper,
+ RANAP_IntegrityProtectionKey_decode_aper,
+ RANAP_IntegrityProtectionKey_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IntegrityProtectionKey_tags_1,
+ sizeof(asn_DEF_RANAP_IntegrityProtectionKey_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionKey_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IntegrityProtectionKey_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IntegrityProtectionKey_tags_1)
+ /sizeof(asn_DEF_RANAP_IntegrityProtectionKey_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IntegrityProtectionKey_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_InterSystemInformation-TransparentContainer.c b/src/ranap/RANAP_InterSystemInformation-TransparentContainer.c
new file mode 100644
index 0000000..3b77feb
--- /dev/null
+++ b/src/ranap/RANAP_InterSystemInformation-TransparentContainer.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InterSystemInformation-TransparentContainer.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_InterSystemInformation_TransparentContainer_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_InterSystemInformation_TransparentContainer, downlinkCellLoadInformation),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellLoadInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "downlinkCellLoadInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_InterSystemInformation_TransparentContainer, uplinkCellLoadInformation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellLoadInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uplinkCellLoadInformation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_InterSystemInformation_TransparentContainer, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_InterSystemInformation_TransparentContainer_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InterSystemInformation_TransparentContainer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* downlinkCellLoadInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uplinkCellLoadInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InterSystemInformation_TransparentContainer_specs_1 = {
+ sizeof(struct RANAP_InterSystemInformation_TransparentContainer),
+ offsetof(struct RANAP_InterSystemInformation_TransparentContainer, _asn_ctx),
+ asn_MAP_RANAP_InterSystemInformation_TransparentContainer_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_InterSystemInformation_TransparentContainer_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InterSystemInformation_TransparentContainer = {
+ "RANAP_InterSystemInformation-TransparentContainer",
+ "RANAP_InterSystemInformation-TransparentContainer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_InterSystemInformation_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InterSystemInformation_TransparentContainer_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_InterSystemInformation_TransparentContainer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InterSystemInformationTransferType.c b/src/ranap/RANAP_InterSystemInformationTransferType.c
new file mode 100644
index 0000000..6d7ea90
--- /dev/null
+++ b/src/ranap/RANAP_InterSystemInformationTransferType.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InterSystemInformationTransferType.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_InterSystemInformationTransferType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_InterSystemInformationTransferType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InterSystemInformationTransferType, choice.rIM_Transfer),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RIM_Transfer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rIM-Transfer"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InterSystemInformationTransferType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rIM-Transfer */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_InterSystemInformationTransferType_specs_1 = {
+ sizeof(struct RANAP_InterSystemInformationTransferType),
+ offsetof(struct RANAP_InterSystemInformationTransferType, _asn_ctx),
+ offsetof(struct RANAP_InterSystemInformationTransferType, present),
+ sizeof(((struct RANAP_InterSystemInformationTransferType *)0)->present),
+ asn_MAP_RANAP_InterSystemInformationTransferType_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InterSystemInformationTransferType = {
+ "RANAP_InterSystemInformationTransferType",
+ "RANAP_InterSystemInformationTransferType",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_InterSystemInformationTransferType_constr_1,
+ asn_MBR_RANAP_InterSystemInformationTransferType_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_InterSystemInformationTransferType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_InterfacesToTraceItem.c b/src/ranap/RANAP_InterfacesToTraceItem.c
new file mode 100644
index 0000000..f1d5aa0
--- /dev/null
+++ b/src/ranap/RANAP_InterfacesToTraceItem.c
@@ -0,0 +1,240 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_InterfacesToTraceItem.h>
+
+static int
+interface_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+interface_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+interface_2_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ interface_2_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+interface_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+interface_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+interface_2_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+interface_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+interface_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+interface_2_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+interface_2_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+interface_2_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+interface_2_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ interface_2_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_interface_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (0..4,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_interface_value2enum_2[] = {
+ { 0, 5, "iu-cs" },
+ { 1, 5, "iu-ps" },
+ { 2, 3, "iur" },
+ { 3, 3, "iub" },
+ { 4, 2, "uu" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_interface_enum2value_2[] = {
+ 0, /* iu-cs(0) */
+ 1, /* iu-ps(1) */
+ 3, /* iub(3) */
+ 2, /* iur(2) */
+ 4 /* uu(4) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interface_specs_2 = {
+ asn_MAP_interface_value2enum_2, /* "tag" => N; sorted by tag */
+ asn_MAP_interface_enum2value_2, /* N => "tag"; sorted by N */
+ 5, /* Number of elements in the maps */
+ 6, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_interface_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_interface_2 = {
+ "interface",
+ "interface",
+ interface_2_free,
+ interface_2_print,
+ interface_2_constraint,
+ interface_2_decode_ber,
+ interface_2_encode_der,
+ interface_2_decode_xer,
+ interface_2_encode_xer,
+ interface_2_decode_uper,
+ interface_2_encode_uper,
+ interface_2_decode_aper,
+ interface_2_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_interface_tags_2,
+ sizeof(asn_DEF_interface_tags_2)
+ /sizeof(asn_DEF_interface_tags_2[0]) - 1, /* 1 */
+ asn_DEF_interface_tags_2, /* Same as above */
+ sizeof(asn_DEF_interface_tags_2)
+ /sizeof(asn_DEF_interface_tags_2[0]), /* 2 */
+ &asn_PER_type_interface_constr_2,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_interface_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_InterfacesToTraceItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_InterfacesToTraceItem, interface),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_interface_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "interface"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_InterfacesToTraceItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_InterfacesToTraceItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_InterfacesToTraceItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_InterfacesToTraceItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_InterfacesToTraceItem_specs_1 = {
+ sizeof(struct RANAP_InterfacesToTraceItem),
+ offsetof(struct RANAP_InterfacesToTraceItem, _asn_ctx),
+ asn_MAP_RANAP_InterfacesToTraceItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_InterfacesToTraceItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_InterfacesToTraceItem = {
+ "RANAP_InterfacesToTraceItem",
+ "RANAP_InterfacesToTraceItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_InterfacesToTraceItem_tags_1,
+ sizeof(asn_DEF_RANAP_InterfacesToTraceItem_tags_1)
+ /sizeof(asn_DEF_RANAP_InterfacesToTraceItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_InterfacesToTraceItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_InterfacesToTraceItem_tags_1)
+ /sizeof(asn_DEF_RANAP_InterfacesToTraceItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_InterfacesToTraceItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_InterfacesToTraceItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Iu-ReleaseCommand.c b/src/ranap/RANAP_Iu-ReleaseCommand.c
new file mode 100644
index 0000000..8bb0fe5
--- /dev/null
+++ b/src/ranap/RANAP_Iu-ReleaseCommand.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Iu-ReleaseCommand.h>
+
+static int
+memb_iu_ReleaseCommand_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_iu_ReleaseCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_iu_ReleaseCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_iu_ReleaseCommand_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iu_ReleaseCommand_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_iu_ReleaseCommand_ies_specs_2 = {
+ sizeof(struct iu_ReleaseCommand_ies),
+ offsetof(struct iu_ReleaseCommand_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iu_ReleaseCommand_ies_2 = {
+ "iu-ReleaseCommand-ies",
+ "iu-ReleaseCommand-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iu_ReleaseCommand_ies_tags_2,
+ sizeof(asn_DEF_iu_ReleaseCommand_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseCommand_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_iu_ReleaseCommand_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_iu_ReleaseCommand_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseCommand_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_iu_ReleaseCommand_ies_constr_2,
+ asn_MBR_iu_ReleaseCommand_ies_2,
+ 1, /* Single element */
+ &asn_SPC_iu_ReleaseCommand_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Iu_ReleaseCommand_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Iu_ReleaseCommand, iu_ReleaseCommand_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_iu_ReleaseCommand_ies_2,
+ memb_iu_ReleaseCommand_ies_constraint_1,
+ &asn_PER_memb_iu_ReleaseCommand_ies_constr_2,
+ 0,
+ "iu-ReleaseCommand-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Iu_ReleaseCommand_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Iu_ReleaseCommand_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iu-ReleaseCommand-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Iu_ReleaseCommand_specs_1 = {
+ sizeof(struct RANAP_Iu_ReleaseCommand),
+ offsetof(struct RANAP_Iu_ReleaseCommand, _asn_ctx),
+ asn_MAP_RANAP_Iu_ReleaseCommand_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseCommand = {
+ "RANAP_Iu-ReleaseCommand",
+ "RANAP_Iu-ReleaseCommand",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Iu_ReleaseCommand_tags_1,
+ sizeof(asn_DEF_RANAP_Iu_ReleaseCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseCommand_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Iu_ReleaseCommand_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Iu_ReleaseCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseCommand_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Iu_ReleaseCommand_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Iu_ReleaseCommand_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Iu-ReleaseComplete.c b/src/ranap/RANAP_Iu-ReleaseComplete.c
new file mode 100644
index 0000000..7fd8aff
--- /dev/null
+++ b/src/ranap/RANAP_Iu-ReleaseComplete.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Iu-ReleaseComplete.h>
+
+static int
+memb_iu_ReleaseComplete_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_iu_ReleaseComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_iu_ReleaseComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_iu_ReleaseComplete_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iu_ReleaseComplete_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_iu_ReleaseComplete_ies_specs_2 = {
+ sizeof(struct iu_ReleaseComplete_ies),
+ offsetof(struct iu_ReleaseComplete_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iu_ReleaseComplete_ies_2 = {
+ "iu-ReleaseComplete-ies",
+ "iu-ReleaseComplete-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iu_ReleaseComplete_ies_tags_2,
+ sizeof(asn_DEF_iu_ReleaseComplete_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseComplete_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_iu_ReleaseComplete_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_iu_ReleaseComplete_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseComplete_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_iu_ReleaseComplete_ies_constr_2,
+ asn_MBR_iu_ReleaseComplete_ies_2,
+ 1, /* Single element */
+ &asn_SPC_iu_ReleaseComplete_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Iu_ReleaseComplete_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Iu_ReleaseComplete, iu_ReleaseComplete_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_iu_ReleaseComplete_ies_2,
+ memb_iu_ReleaseComplete_ies_constraint_1,
+ &asn_PER_memb_iu_ReleaseComplete_ies_constr_2,
+ 0,
+ "iu-ReleaseComplete-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Iu_ReleaseComplete_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Iu_ReleaseComplete_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iu-ReleaseComplete-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Iu_ReleaseComplete_specs_1 = {
+ sizeof(struct RANAP_Iu_ReleaseComplete),
+ offsetof(struct RANAP_Iu_ReleaseComplete, _asn_ctx),
+ asn_MAP_RANAP_Iu_ReleaseComplete_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseComplete = {
+ "RANAP_Iu-ReleaseComplete",
+ "RANAP_Iu-ReleaseComplete",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Iu_ReleaseComplete_tags_1,
+ sizeof(asn_DEF_RANAP_Iu_ReleaseComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseComplete_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Iu_ReleaseComplete_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Iu_ReleaseComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseComplete_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Iu_ReleaseComplete_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Iu_ReleaseComplete_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Iu-ReleaseRequest.c b/src/ranap/RANAP_Iu-ReleaseRequest.c
new file mode 100644
index 0000000..f629f45
--- /dev/null
+++ b/src/ranap/RANAP_Iu-ReleaseRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Iu-ReleaseRequest.h>
+
+static int
+memb_iu_ReleaseRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_iu_ReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_iu_ReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_iu_ReleaseRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iu_ReleaseRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_iu_ReleaseRequest_ies_specs_2 = {
+ sizeof(struct iu_ReleaseRequest_ies),
+ offsetof(struct iu_ReleaseRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iu_ReleaseRequest_ies_2 = {
+ "iu-ReleaseRequest-ies",
+ "iu-ReleaseRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iu_ReleaseRequest_ies_tags_2,
+ sizeof(asn_DEF_iu_ReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_iu_ReleaseRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_iu_ReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_iu_ReleaseRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_iu_ReleaseRequest_ies_constr_2,
+ asn_MBR_iu_ReleaseRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_iu_ReleaseRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Iu_ReleaseRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Iu_ReleaseRequest, iu_ReleaseRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_iu_ReleaseRequest_ies_2,
+ memb_iu_ReleaseRequest_ies_constraint_1,
+ &asn_PER_memb_iu_ReleaseRequest_ies_constr_2,
+ 0,
+ "iu-ReleaseRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Iu_ReleaseRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Iu_ReleaseRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iu-ReleaseRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Iu_ReleaseRequest_specs_1 = {
+ sizeof(struct RANAP_Iu_ReleaseRequest),
+ offsetof(struct RANAP_Iu_ReleaseRequest, _asn_ctx),
+ asn_MAP_RANAP_Iu_ReleaseRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Iu_ReleaseRequest = {
+ "RANAP_Iu-ReleaseRequest",
+ "RANAP_Iu-ReleaseRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Iu_ReleaseRequest_tags_1,
+ sizeof(asn_DEF_RANAP_Iu_ReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Iu_ReleaseRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Iu_ReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_Iu_ReleaseRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Iu_ReleaseRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Iu_ReleaseRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IuSigConId-IE-ContainerList.c b/src/ranap/RANAP_IuSigConId-IE-ContainerList.c
new file mode 100644
index 0000000..a3718ec
--- /dev/null
+++ b/src/ranap/RANAP_IuSigConId-IE-ContainerList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IuSigConId-IE-ContainerList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_IuSigConId_IE_ContainerList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 250l } /* (SIZE(1..250)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IuSigConId_IE_ContainerList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_IuSigConId_IE_ContainerList_specs_1 = {
+ sizeof(struct RANAP_IuSigConId_IE_ContainerList),
+ offsetof(struct RANAP_IuSigConId_IE_ContainerList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IuSigConId_IE_ContainerList = {
+ "RANAP_IuSigConId-IE-ContainerList",
+ "RANAP_IuSigConId-IE-ContainerList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1,
+ sizeof(asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_IuSigConId_IE_ContainerList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IuSigConId_IE_ContainerList_constr_1,
+ asn_MBR_RANAP_IuSigConId_IE_ContainerList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_IuSigConId_IE_ContainerList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_IuSignallingConnectionIdentifier.c b/src/ranap/RANAP_IuSignallingConnectionIdentifier.c
new file mode 100644
index 0000000..118f3ab
--- /dev/null
+++ b/src/ranap/RANAP_IuSignallingConnectionIdentifier.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IuSignallingConnectionIdentifier.h>
+
+int
+RANAP_IuSignallingConnectionIdentifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 24l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_IuSignallingConnectionIdentifier_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_IuSignallingConnectionIdentifier_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IuSignallingConnectionIdentifier_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_IuSignallingConnectionIdentifier_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IuSignallingConnectionIdentifier_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_IuSignallingConnectionIdentifier_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_IuSignallingConnectionIdentifier_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_IuSignallingConnectionIdentifier_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_IuSignallingConnectionIdentifier_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_IuSignallingConnectionIdentifier_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_IuSignallingConnectionIdentifier_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_IuSignallingConnectionIdentifier_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 24l, 24l } /* (SIZE(24..24)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IuSignallingConnectionIdentifier = {
+ "RANAP_IuSignallingConnectionIdentifier",
+ "RANAP_IuSignallingConnectionIdentifier",
+ RANAP_IuSignallingConnectionIdentifier_free,
+ RANAP_IuSignallingConnectionIdentifier_print,
+ RANAP_IuSignallingConnectionIdentifier_constraint,
+ RANAP_IuSignallingConnectionIdentifier_decode_ber,
+ RANAP_IuSignallingConnectionIdentifier_encode_der,
+ RANAP_IuSignallingConnectionIdentifier_decode_xer,
+ RANAP_IuSignallingConnectionIdentifier_encode_xer,
+ RANAP_IuSignallingConnectionIdentifier_decode_uper,
+ RANAP_IuSignallingConnectionIdentifier_encode_uper,
+ RANAP_IuSignallingConnectionIdentifier_decode_aper,
+ RANAP_IuSignallingConnectionIdentifier_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1,
+ sizeof(asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1)
+ /sizeof(asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1)
+ /sizeof(asn_DEF_RANAP_IuSignallingConnectionIdentifier_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_IuSignallingConnectionIdentifier_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_IuTransportAssociation.c b/src/ranap/RANAP_IuTransportAssociation.c
new file mode 100644
index 0000000..7da78f2
--- /dev/null
+++ b/src/ranap/RANAP_IuTransportAssociation.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_IuTransportAssociation_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_IuTransportAssociation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IuTransportAssociation, choice.gTP_TEI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GTP_TEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gTP-TEI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_IuTransportAssociation, choice.bindingID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_BindingID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "bindingID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_IuTransportAssociation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gTP-TEI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bindingID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_IuTransportAssociation_specs_1 = {
+ sizeof(struct RANAP_IuTransportAssociation),
+ offsetof(struct RANAP_IuTransportAssociation, _asn_ctx),
+ offsetof(struct RANAP_IuTransportAssociation, present),
+ sizeof(((struct RANAP_IuTransportAssociation *)0)->present),
+ asn_MAP_RANAP_IuTransportAssociation_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_IuTransportAssociation = {
+ "RANAP_IuTransportAssociation",
+ "RANAP_IuTransportAssociation",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_IuTransportAssociation_constr_1,
+ asn_MBR_RANAP_IuTransportAssociation_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_IuTransportAssociation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_JoinedMBMSBearerService-IEs.c b/src/ranap/RANAP_JoinedMBMSBearerService-IEs.c
new file mode 100644
index 0000000..4055055
--- /dev/null
+++ b/src/ranap/RANAP_JoinedMBMSBearerService-IEs.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_JoinedMBMSBearerService-IEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_JoinedMBMSBearerService_IEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberF_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberF, tMGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberF, mBMS_PTP_RAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MBMS_PTP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mBMS-PTP-RAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberF, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberF_oms_2[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MemberF_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberF_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mBMS-PTP-RAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberF_specs_2 = {
+ sizeof(struct MemberF),
+ offsetof(struct MemberF, _asn_ctx),
+ asn_MAP_MemberF_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberF_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberF_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberF_tags_2,
+ sizeof(asn_DEF_MemberF_tags_2)
+ /sizeof(asn_DEF_MemberF_tags_2[0]), /* 1 */
+ asn_DEF_MemberF_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberF_tags_2)
+ /sizeof(asn_DEF_MemberF_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberF_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberF_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_JoinedMBMSBearerService_IEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberF_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_JoinedMBMSBearerService_IEs_specs_1 = {
+ sizeof(struct RANAP_JoinedMBMSBearerService_IEs),
+ offsetof(struct RANAP_JoinedMBMSBearerService_IEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_JoinedMBMSBearerService_IEs = {
+ "RANAP_JoinedMBMSBearerService-IEs",
+ "RANAP_JoinedMBMSBearerService-IEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1,
+ sizeof(asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_JoinedMBMSBearerService_IEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_JoinedMBMSBearerService_IEs_constr_1,
+ asn_MBR_RANAP_JoinedMBMSBearerService_IEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_JoinedMBMSBearerService_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_KeyStatus.c b/src/ranap/RANAP_KeyStatus.c
new file mode 100644
index 0000000..5a7c058
--- /dev/null
+++ b/src/ranap/RANAP_KeyStatus.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_KeyStatus.h>
+
+int
+RANAP_KeyStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_KeyStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_KeyStatus_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_KeyStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_KeyStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_KeyStatus_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_KeyStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_KeyStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_KeyStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_KeyStatus_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_KeyStatus_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_KeyStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_KeyStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_KeyStatus_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_KeyStatus_value2enum_1[] = {
+ { 0, 3, "old" },
+ { 1, 3, "new" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_KeyStatus_enum2value_1[] = {
+ 1, /* new(1) */
+ 0 /* old(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_KeyStatus_specs_1 = {
+ asn_MAP_RANAP_KeyStatus_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_KeyStatus_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_KeyStatus_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_KeyStatus = {
+ "RANAP_KeyStatus",
+ "RANAP_KeyStatus",
+ RANAP_KeyStatus_free,
+ RANAP_KeyStatus_print,
+ RANAP_KeyStatus_constraint,
+ RANAP_KeyStatus_decode_ber,
+ RANAP_KeyStatus_encode_der,
+ RANAP_KeyStatus_decode_xer,
+ RANAP_KeyStatus_encode_xer,
+ RANAP_KeyStatus_decode_uper,
+ RANAP_KeyStatus_encode_uper,
+ RANAP_KeyStatus_decode_aper,
+ RANAP_KeyStatus_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_KeyStatus_tags_1,
+ sizeof(asn_DEF_RANAP_KeyStatus_tags_1)
+ /sizeof(asn_DEF_RANAP_KeyStatus_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_KeyStatus_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_KeyStatus_tags_1)
+ /sizeof(asn_DEF_RANAP_KeyStatus_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_KeyStatus_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_KeyStatus_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_L3-Information.c b/src/ranap/RANAP_L3-Information.c
new file mode 100644
index 0000000..cf9e797
--- /dev/null
+++ b/src/ranap/RANAP_L3-Information.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_L3-Information.h>
+
+int
+RANAP_L3_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_L3_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_L3_Information_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_L3_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_L3_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_L3_Information_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_L3_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_L3_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_L3_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_L3_Information_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_L3_Information_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_L3_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_L3_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_L3_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_L3_Information = {
+ "RANAP_L3-Information",
+ "RANAP_L3-Information",
+ RANAP_L3_Information_free,
+ RANAP_L3_Information_print,
+ RANAP_L3_Information_constraint,
+ RANAP_L3_Information_decode_ber,
+ RANAP_L3_Information_encode_der,
+ RANAP_L3_Information_decode_xer,
+ RANAP_L3_Information_encode_xer,
+ RANAP_L3_Information_decode_uper,
+ RANAP_L3_Information_encode_uper,
+ RANAP_L3_Information_decode_aper,
+ RANAP_L3_Information_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_L3_Information_tags_1,
+ sizeof(asn_DEF_RANAP_L3_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_L3_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_L3_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_L3_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_L3_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_LA-LIST.c b/src/ranap/RANAP_LA-LIST.c
new file mode 100644
index 0000000..59793d8
--- /dev/null
+++ b/src/ranap/RANAP_LA-LIST.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LA-LIST.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_LA_LIST_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberA_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberA, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberA, listOF_SNAs),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ListOF_SNAs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "listOF-SNAs"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberA, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberA_oms_2[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MemberA_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberA_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* listOF-SNAs */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberA_specs_2 = {
+ sizeof(struct MemberA),
+ offsetof(struct MemberA, _asn_ctx),
+ asn_MAP_MemberA_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberA_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberA_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberA_tags_2,
+ sizeof(asn_DEF_MemberA_tags_2)
+ /sizeof(asn_DEF_MemberA_tags_2[0]), /* 1 */
+ asn_DEF_MemberA_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberA_tags_2)
+ /sizeof(asn_DEF_MemberA_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberA_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberA_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LA_LIST_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberA_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LA_LIST_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_LA_LIST_specs_1 = {
+ sizeof(struct RANAP_LA_LIST),
+ offsetof(struct RANAP_LA_LIST, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LA_LIST = {
+ "RANAP_LA-LIST",
+ "RANAP_LA-LIST",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LA_LIST_tags_1,
+ sizeof(asn_DEF_RANAP_LA_LIST_tags_1)
+ /sizeof(asn_DEF_RANAP_LA_LIST_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LA_LIST_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LA_LIST_tags_1)
+ /sizeof(asn_DEF_RANAP_LA_LIST_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LA_LIST_constr_1,
+ asn_MBR_RANAP_LA_LIST_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_LA_LIST_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LABased.c b/src/ranap/RANAP_LABased.c
new file mode 100644
index 0000000..4ba1a60
--- /dev/null
+++ b/src/ranap/RANAP_LABased.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LABased.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LABased_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LABased, laiList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAI_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "laiList"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LABased, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LABased_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LABased_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LABased_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* laiList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LABased_specs_1 = {
+ sizeof(struct RANAP_LABased),
+ offsetof(struct RANAP_LABased, _asn_ctx),
+ asn_MAP_RANAP_LABased_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_LABased_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LABased = {
+ "RANAP_LABased",
+ "RANAP_LABased",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LABased_tags_1,
+ sizeof(asn_DEF_RANAP_LABased_tags_1)
+ /sizeof(asn_DEF_RANAP_LABased_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LABased_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LABased_tags_1)
+ /sizeof(asn_DEF_RANAP_LABased_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LABased_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_LABased_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LAC.c b/src/ranap/RANAP_LAC.c
new file mode 100644
index 0000000..8d3e6ed
--- /dev/null
+++ b/src/ranap/RANAP_LAC.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LAC.h>
+
+int
+RANAP_LAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_LAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LAC = {
+ "RANAP_LAC",
+ "RANAP_LAC",
+ RANAP_LAC_free,
+ RANAP_LAC_print,
+ RANAP_LAC_constraint,
+ RANAP_LAC_decode_ber,
+ RANAP_LAC_encode_der,
+ RANAP_LAC_decode_xer,
+ RANAP_LAC_encode_xer,
+ RANAP_LAC_decode_uper,
+ RANAP_LAC_encode_uper,
+ RANAP_LAC_decode_aper,
+ RANAP_LAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LAC_tags_1,
+ sizeof(asn_DEF_RANAP_LAC_tags_1)
+ /sizeof(asn_DEF_RANAP_LAC_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LAC_tags_1)
+ /sizeof(asn_DEF_RANAP_LAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_LAI-List.c b/src/ranap/RANAP_LAI-List.c
new file mode 100644
index 0000000..4aa08c0
--- /dev/null
+++ b/src/ranap/RANAP_LAI-List.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LAI-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_LAI_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (SIZE(1..8)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_LAI_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LAI_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_LAI_List_specs_1 = {
+ sizeof(struct RANAP_LAI_List),
+ offsetof(struct RANAP_LAI_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LAI_List = {
+ "RANAP_LAI-List",
+ "RANAP_LAI-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LAI_List_tags_1,
+ sizeof(asn_DEF_RANAP_LAI_List_tags_1)
+ /sizeof(asn_DEF_RANAP_LAI_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LAI_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LAI_List_tags_1)
+ /sizeof(asn_DEF_RANAP_LAI_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LAI_List_constr_1,
+ asn_MBR_RANAP_LAI_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_LAI_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LAI.c b/src/ranap/RANAP_LAI.c
new file mode 100644
index 0000000..8a5aa0a
--- /dev/null
+++ b/src/ranap/RANAP_LAI.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LAI.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LAI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LAI, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LAI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LAI_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LAI_specs_1 = {
+ sizeof(struct RANAP_LAI),
+ offsetof(struct RANAP_LAI, _asn_ctx),
+ asn_MAP_RANAP_LAI_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_LAI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LAI = {
+ "RANAP_LAI",
+ "RANAP_LAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LAI_tags_1,
+ sizeof(asn_DEF_RANAP_LAI_tags_1)
+ /sizeof(asn_DEF_RANAP_LAI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LAI_tags_1)
+ /sizeof(asn_DEF_RANAP_LAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LAI_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_LAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LAListofIdleModeUEs.c b/src/ranap/RANAP_LAListofIdleModeUEs.c
new file mode 100644
index 0000000..ff3a43d
--- /dev/null
+++ b/src/ranap/RANAP_LAListofIdleModeUEs.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LAListofIdleModeUEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_LAListofIdleModeUEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_LAListofIdleModeUEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LAListofIdleModeUEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_LAListofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_LAListofIdleModeUEs),
+ offsetof(struct RANAP_LAListofIdleModeUEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LAListofIdleModeUEs = {
+ "RANAP_LAListofIdleModeUEs",
+ "RANAP_LAListofIdleModeUEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LAListofIdleModeUEs_tags_1,
+ sizeof(asn_DEF_RANAP_LAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_LAListofIdleModeUEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LAListofIdleModeUEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_LAListofIdleModeUEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LAListofIdleModeUEs_constr_1,
+ asn_MBR_RANAP_LAListofIdleModeUEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_LAListofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LHN-ID.c b/src/ranap/RANAP_LHN-ID.c
new file mode 100644
index 0000000..c030c96
--- /dev/null
+++ b/src/ranap/RANAP_LHN-ID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LHN-ID.h>
+
+int
+RANAP_LHN_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 32l && size <= 256l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LHN_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_LHN_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LHN_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LHN_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LHN_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LHN_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LHN_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LHN_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LHN_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LHN_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LHN_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LHN_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LHN_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 32l, 256l } /* (SIZE(32..256)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LHN_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LHN_ID = {
+ "RANAP_LHN-ID",
+ "RANAP_LHN-ID",
+ RANAP_LHN_ID_free,
+ RANAP_LHN_ID_print,
+ RANAP_LHN_ID_constraint,
+ RANAP_LHN_ID_decode_ber,
+ RANAP_LHN_ID_encode_der,
+ RANAP_LHN_ID_decode_xer,
+ RANAP_LHN_ID_encode_xer,
+ RANAP_LHN_ID_decode_uper,
+ RANAP_LHN_ID_encode_uper,
+ RANAP_LHN_ID_decode_aper,
+ RANAP_LHN_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LHN_ID_tags_1,
+ sizeof(asn_DEF_RANAP_LHN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_LHN_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LHN_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LHN_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_LHN_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LHN_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_LastKnownServiceArea.c b/src/ranap/RANAP_LastKnownServiceArea.c
new file mode 100644
index 0000000..00983a2
--- /dev/null
+++ b/src/ranap/RANAP_LastKnownServiceArea.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LastKnownServiceArea.h>
+
+static int
+memb_ageOfSAI_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 32767l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_ageOfSAI_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 15, 15, 0l, 32767l } /* (0..32767) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_LastKnownServiceArea_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LastKnownServiceArea, sAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LastKnownServiceArea, ageOfSAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_ageOfSAI_constraint_1,
+ &asn_PER_memb_ageOfSAI_constr_3,
+ 0,
+ "ageOfSAI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LastKnownServiceArea, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LastKnownServiceArea_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LastKnownServiceArea_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LastKnownServiceArea_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ageOfSAI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LastKnownServiceArea_specs_1 = {
+ sizeof(struct RANAP_LastKnownServiceArea),
+ offsetof(struct RANAP_LastKnownServiceArea, _asn_ctx),
+ asn_MAP_RANAP_LastKnownServiceArea_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_LastKnownServiceArea_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LastKnownServiceArea = {
+ "RANAP_LastKnownServiceArea",
+ "RANAP_LastKnownServiceArea",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LastKnownServiceArea_tags_1,
+ sizeof(asn_DEF_RANAP_LastKnownServiceArea_tags_1)
+ /sizeof(asn_DEF_RANAP_LastKnownServiceArea_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LastKnownServiceArea_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LastKnownServiceArea_tags_1)
+ /sizeof(asn_DEF_RANAP_LastKnownServiceArea_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LastKnownServiceArea_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_LastKnownServiceArea_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LastVisitedUTRANCell-Item.c b/src/ranap/RANAP_LastVisitedUTRANCell-Item.c
new file mode 100644
index 0000000..5322aaa
--- /dev/null
+++ b/src/ranap/RANAP_LastVisitedUTRANCell-Item.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LastVisitedUTRANCell-Item.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LastVisitedUTRANCell_Item_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LastVisitedUTRANCell_Item, uTRAN_CellID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UTRAN_CellID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uTRAN-CellID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LastVisitedUTRANCell_Item, cellType),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LastVisitedUTRANCell_Item, time_UE_StayedInCell),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Time_UE_StayedInCell,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "time-UE-StayedInCell"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LastVisitedUTRANCell_Item, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LastVisitedUTRANCell_Item_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LastVisitedUTRANCell_Item_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uTRAN-CellID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellType */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* time-UE-StayedInCell */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LastVisitedUTRANCell_Item_specs_1 = {
+ sizeof(struct RANAP_LastVisitedUTRANCell_Item),
+ offsetof(struct RANAP_LastVisitedUTRANCell_Item, _asn_ctx),
+ asn_MAP_RANAP_LastVisitedUTRANCell_Item_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_LastVisitedUTRANCell_Item_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LastVisitedUTRANCell_Item = {
+ "RANAP_LastVisitedUTRANCell-Item",
+ "RANAP_LastVisitedUTRANCell-Item",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1,
+ sizeof(asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1)
+ /sizeof(asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1)
+ /sizeof(asn_DEF_RANAP_LastVisitedUTRANCell_Item_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LastVisitedUTRANCell_Item_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_LastVisitedUTRANCell_Item_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LeftMBMSBearerService-IEs.c b/src/ranap/RANAP_LeftMBMSBearerService-IEs.c
new file mode 100644
index 0000000..b6f00f1
--- /dev/null
+++ b/src/ranap/RANAP_LeftMBMSBearerService-IEs.c
@@ -0,0 +1,125 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LeftMBMSBearerService-IEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_LeftMBMSBearerService_IEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberK_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberK, tMGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMGI"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberK, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberK_oms_2[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MemberK_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberK_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberK_specs_2 = {
+ sizeof(struct MemberK),
+ offsetof(struct MemberK, _asn_ctx),
+ asn_MAP_MemberK_tag2el_2,
+ 2, /* Count of tags in the map */
+ asn_MAP_MemberK_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberK_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberK_tags_2,
+ sizeof(asn_DEF_MemberK_tags_2)
+ /sizeof(asn_DEF_MemberK_tags_2[0]), /* 1 */
+ asn_DEF_MemberK_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberK_tags_2)
+ /sizeof(asn_DEF_MemberK_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberK_2,
+ 2, /* Elements count */
+ &asn_SPC_MemberK_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LeftMBMSBearerService_IEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberK_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_LeftMBMSBearerService_IEs_specs_1 = {
+ sizeof(struct RANAP_LeftMBMSBearerService_IEs),
+ offsetof(struct RANAP_LeftMBMSBearerService_IEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LeftMBMSBearerService_IEs = {
+ "RANAP_LeftMBMSBearerService-IEs",
+ "RANAP_LeftMBMSBearerService-IEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1,
+ sizeof(asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_LeftMBMSBearerService_IEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LeftMBMSBearerService_IEs_constr_1,
+ asn_MBR_RANAP_LeftMBMSBearerService_IEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_LeftMBMSBearerService_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Links-to-log.c b/src/ranap/RANAP_Links-to-log.c
new file mode 100644
index 0000000..a02d7be
--- /dev/null
+++ b/src/ranap/RANAP_Links-to-log.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Links-to-log.h>
+
+int
+RANAP_Links_to_log_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Links_to_log_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Links_to_log_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Links_to_log_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Links_to_log_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Links_to_log_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Links_to_log_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Links_to_log_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Links_to_log_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Links_to_log_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Links_to_log_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Links_to_log_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Links_to_log_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Links_to_log_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Links_to_log_value2enum_1[] = {
+ { 0, 6, "uplink" },
+ { 1, 8, "downlink" },
+ { 2, 24, "both-uplink-and-downlink" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Links_to_log_enum2value_1[] = {
+ 2, /* both-uplink-and-downlink(2) */
+ 1, /* downlink(1) */
+ 0 /* uplink(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Links_to_log_specs_1 = {
+ asn_MAP_RANAP_Links_to_log_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Links_to_log_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Links_to_log_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Links_to_log = {
+ "RANAP_Links-to-log",
+ "RANAP_Links-to-log",
+ RANAP_Links_to_log_free,
+ RANAP_Links_to_log_print,
+ RANAP_Links_to_log_constraint,
+ RANAP_Links_to_log_decode_ber,
+ RANAP_Links_to_log_encode_der,
+ RANAP_Links_to_log_decode_xer,
+ RANAP_Links_to_log_encode_xer,
+ RANAP_Links_to_log_decode_uper,
+ RANAP_Links_to_log_encode_uper,
+ RANAP_Links_to_log_decode_aper,
+ RANAP_Links_to_log_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Links_to_log_tags_1,
+ sizeof(asn_DEF_RANAP_Links_to_log_tags_1)
+ /sizeof(asn_DEF_RANAP_Links_to_log_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Links_to_log_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Links_to_log_tags_1)
+ /sizeof(asn_DEF_RANAP_Links_to_log_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Links_to_log_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Links_to_log_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ListOF-SNAs.c b/src/ranap/RANAP_ListOF-SNAs.c
new file mode 100644
index 0000000..cba3a0c
--- /dev/null
+++ b/src/ranap/RANAP_ListOF-SNAs.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ListOF-SNAs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ListOF_SNAs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ListOF_SNAs_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SNAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ListOF_SNAs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ListOF_SNAs_specs_1 = {
+ sizeof(struct RANAP_ListOF_SNAs),
+ offsetof(struct RANAP_ListOF_SNAs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ListOF_SNAs = {
+ "RANAP_ListOF-SNAs",
+ "RANAP_ListOF-SNAs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ListOF_SNAs_tags_1,
+ sizeof(asn_DEF_RANAP_ListOF_SNAs_tags_1)
+ /sizeof(asn_DEF_RANAP_ListOF_SNAs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ListOF_SNAs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ListOF_SNAs_tags_1)
+ /sizeof(asn_DEF_RANAP_ListOF_SNAs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ListOF_SNAs_constr_1,
+ asn_MBR_RANAP_ListOF_SNAs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ListOF_SNAs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ListOfInterfacesToTrace.c b/src/ranap/RANAP_ListOfInterfacesToTrace.c
new file mode 100644
index 0000000..76a6a3f
--- /dev/null
+++ b/src/ranap/RANAP_ListOfInterfacesToTrace.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ListOfInterfacesToTrace.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ListOfInterfacesToTrace_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ListOfInterfacesToTrace_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_InterfacesToTraceItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ListOfInterfacesToTrace_specs_1 = {
+ sizeof(struct RANAP_ListOfInterfacesToTrace),
+ offsetof(struct RANAP_ListOfInterfacesToTrace, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ListOfInterfacesToTrace = {
+ "RANAP_ListOfInterfacesToTrace",
+ "RANAP_ListOfInterfacesToTrace",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1,
+ sizeof(asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1)
+ /sizeof(asn_DEF_RANAP_ListOfInterfacesToTrace_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ListOfInterfacesToTrace_constr_1,
+ asn_MBR_RANAP_ListOfInterfacesToTrace_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ListOfInterfacesToTrace_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LoadValue.c b/src/ranap/RANAP_LoadValue.c
new file mode 100644
index 0000000..f6449a9
--- /dev/null
+++ b/src/ranap/RANAP_LoadValue.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LoadValue.h>
+
+int
+RANAP_LoadValue_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 100l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LoadValue_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_LoadValue_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LoadValue_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoadValue_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LoadValue_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoadValue_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LoadValue_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoadValue_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LoadValue_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LoadValue_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LoadValue_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoadValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LoadValue_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 100l } /* (0..100) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LoadValue_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LoadValue = {
+ "RANAP_LoadValue",
+ "RANAP_LoadValue",
+ RANAP_LoadValue_free,
+ RANAP_LoadValue_print,
+ RANAP_LoadValue_constraint,
+ RANAP_LoadValue_decode_ber,
+ RANAP_LoadValue_encode_der,
+ RANAP_LoadValue_decode_xer,
+ RANAP_LoadValue_encode_xer,
+ RANAP_LoadValue_decode_uper,
+ RANAP_LoadValue_encode_uper,
+ RANAP_LoadValue_decode_aper,
+ RANAP_LoadValue_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LoadValue_tags_1,
+ sizeof(asn_DEF_RANAP_LoadValue_tags_1)
+ /sizeof(asn_DEF_RANAP_LoadValue_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LoadValue_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LoadValue_tags_1)
+ /sizeof(asn_DEF_RANAP_LoadValue_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LoadValue_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_LocationRelatedDataFailure.c b/src/ranap/RANAP_LocationRelatedDataFailure.c
new file mode 100644
index 0000000..1bdc865
--- /dev/null
+++ b/src/ranap/RANAP_LocationRelatedDataFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationRelatedDataFailure.h>
+
+static int
+memb_locationRelatedDataFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_locationRelatedDataFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_locationRelatedDataFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_locationRelatedDataFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_locationRelatedDataFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_locationRelatedDataFailure_ies_specs_2 = {
+ sizeof(struct locationRelatedDataFailure_ies),
+ offsetof(struct locationRelatedDataFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_locationRelatedDataFailure_ies_2 = {
+ "locationRelatedDataFailure-ies",
+ "locationRelatedDataFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_locationRelatedDataFailure_ies_tags_2,
+ sizeof(asn_DEF_locationRelatedDataFailure_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_locationRelatedDataFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_locationRelatedDataFailure_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_locationRelatedDataFailure_ies_constr_2,
+ asn_MBR_locationRelatedDataFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_locationRelatedDataFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationRelatedDataFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationRelatedDataFailure, locationRelatedDataFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_locationRelatedDataFailure_ies_2,
+ memb_locationRelatedDataFailure_ies_constraint_1,
+ &asn_PER_memb_locationRelatedDataFailure_ies_constr_2,
+ 0,
+ "locationRelatedDataFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationRelatedDataFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationRelatedDataFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* locationRelatedDataFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationRelatedDataFailure_specs_1 = {
+ sizeof(struct RANAP_LocationRelatedDataFailure),
+ offsetof(struct RANAP_LocationRelatedDataFailure, _asn_ctx),
+ asn_MAP_RANAP_LocationRelatedDataFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataFailure = {
+ "RANAP_LocationRelatedDataFailure",
+ "RANAP_LocationRelatedDataFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationRelatedDataFailure_tags_1,
+ sizeof(asn_DEF_RANAP_LocationRelatedDataFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationRelatedDataFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationRelatedDataFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationRelatedDataFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_LocationRelatedDataFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationRelatedDataRequest.c b/src/ranap/RANAP_LocationRelatedDataRequest.c
new file mode 100644
index 0000000..16cbfba
--- /dev/null
+++ b/src/ranap/RANAP_LocationRelatedDataRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequest.h>
+
+static int
+memb_locationRelatedDataRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_locationRelatedDataRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_locationRelatedDataRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_locationRelatedDataRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_locationRelatedDataRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_locationRelatedDataRequest_ies_specs_2 = {
+ sizeof(struct locationRelatedDataRequest_ies),
+ offsetof(struct locationRelatedDataRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_locationRelatedDataRequest_ies_2 = {
+ "locationRelatedDataRequest-ies",
+ "locationRelatedDataRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_locationRelatedDataRequest_ies_tags_2,
+ sizeof(asn_DEF_locationRelatedDataRequest_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_locationRelatedDataRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_locationRelatedDataRequest_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_locationRelatedDataRequest_ies_constr_2,
+ asn_MBR_locationRelatedDataRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_locationRelatedDataRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationRelatedDataRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationRelatedDataRequest, locationRelatedDataRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_locationRelatedDataRequest_ies_2,
+ memb_locationRelatedDataRequest_ies_constraint_1,
+ &asn_PER_memb_locationRelatedDataRequest_ies_constr_2,
+ 0,
+ "locationRelatedDataRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationRelatedDataRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationRelatedDataRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* locationRelatedDataRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationRelatedDataRequest_specs_1 = {
+ sizeof(struct RANAP_LocationRelatedDataRequest),
+ offsetof(struct RANAP_LocationRelatedDataRequest, _asn_ctx),
+ asn_MAP_RANAP_LocationRelatedDataRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequest = {
+ "RANAP_LocationRelatedDataRequest",
+ "RANAP_LocationRelatedDataRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationRelatedDataRequest_tags_1,
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationRelatedDataRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationRelatedDataRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_LocationRelatedDataRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationRelatedDataRequestType.c b/src/ranap/RANAP_LocationRelatedDataRequestType.c
new file mode 100644
index 0000000..2bab91d
--- /dev/null
+++ b/src/ranap/RANAP_LocationRelatedDataRequestType.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequestType.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationRelatedDataRequestType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationRelatedDataRequestType, requestedLocationRelatedDataType),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RequestedLocationRelatedDataType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedLocationRelatedDataType"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LocationRelatedDataRequestType, requestedGPSAssistanceData),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RequestedGPSAssistanceData,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedGPSAssistanceData"
+ },
+};
+static const int asn_MAP_RANAP_LocationRelatedDataRequestType_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationRelatedDataRequestType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requestedLocationRelatedDataType */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* requestedGPSAssistanceData */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationRelatedDataRequestType_specs_1 = {
+ sizeof(struct RANAP_LocationRelatedDataRequestType),
+ offsetof(struct RANAP_LocationRelatedDataRequestType, _asn_ctx),
+ asn_MAP_RANAP_LocationRelatedDataRequestType_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_LocationRelatedDataRequestType_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequestType = {
+ "RANAP_LocationRelatedDataRequestType",
+ "RANAP_LocationRelatedDataRequestType",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1,
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequestType_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationRelatedDataRequestType_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_LocationRelatedDataRequestType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.c b/src/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.c
new file mode 100644
index 0000000..5ba2c8c
--- /dev/null
+++ b/src/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode.h>
+
+int
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_value2enum_1[] = {
+ { 0, 19, "decipheringKeysEOTD" },
+ { 1, 41, "dedicatedMobileAssistedEOTDAssistanceData" },
+ { 2, 38, "dedicatedMobileBasedEOTDAssistanceData" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_enum2value_1[] = {
+ 0, /* decipheringKeysEOTD(0) */
+ 1, /* dedicatedMobileAssistedEOTDAssistanceData(1) */
+ 2 /* dedicatedMobileBasedEOTDAssistanceData(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_specs_1 = {
+ asn_MAP_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode = {
+ "RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode",
+ "RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode",
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_free,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_print,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_constraint,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_ber,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_der,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_xer,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_xer,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_uper,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_uper,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_decode_aper,
+ RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1,
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_LocationRelatedDataRequestTypeSpecificToGERANIuMode_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationRelatedDataResponse.c b/src/ranap/RANAP_LocationRelatedDataResponse.c
new file mode 100644
index 0000000..71ced5d
--- /dev/null
+++ b/src/ranap/RANAP_LocationRelatedDataResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationRelatedDataResponse.h>
+
+static int
+memb_locationRelatedDataResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_locationRelatedDataResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_locationRelatedDataResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_locationRelatedDataResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_locationRelatedDataResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_locationRelatedDataResponse_ies_specs_2 = {
+ sizeof(struct locationRelatedDataResponse_ies),
+ offsetof(struct locationRelatedDataResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_locationRelatedDataResponse_ies_2 = {
+ "locationRelatedDataResponse-ies",
+ "locationRelatedDataResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_locationRelatedDataResponse_ies_tags_2,
+ sizeof(asn_DEF_locationRelatedDataResponse_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_locationRelatedDataResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_locationRelatedDataResponse_ies_tags_2)
+ /sizeof(asn_DEF_locationRelatedDataResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_locationRelatedDataResponse_ies_constr_2,
+ asn_MBR_locationRelatedDataResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_locationRelatedDataResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationRelatedDataResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationRelatedDataResponse, locationRelatedDataResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_locationRelatedDataResponse_ies_2,
+ memb_locationRelatedDataResponse_ies_constraint_1,
+ &asn_PER_memb_locationRelatedDataResponse_ies_constr_2,
+ 0,
+ "locationRelatedDataResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationRelatedDataResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationRelatedDataResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* locationRelatedDataResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationRelatedDataResponse_specs_1 = {
+ sizeof(struct RANAP_LocationRelatedDataResponse),
+ offsetof(struct RANAP_LocationRelatedDataResponse, _asn_ctx),
+ asn_MAP_RANAP_LocationRelatedDataResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationRelatedDataResponse = {
+ "RANAP_LocationRelatedDataResponse",
+ "RANAP_LocationRelatedDataResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationRelatedDataResponse_tags_1,
+ sizeof(asn_DEF_RANAP_LocationRelatedDataResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationRelatedDataResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationRelatedDataResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationRelatedDataResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationRelatedDataResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_LocationRelatedDataResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationReport.c b/src/ranap/RANAP_LocationReport.c
new file mode 100644
index 0000000..0e0d612
--- /dev/null
+++ b/src/ranap/RANAP_LocationReport.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationReport.h>
+
+static int
+memb_locationReport_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_locationReport_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_locationReport_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_locationReport_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_locationReport_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_locationReport_ies_specs_2 = {
+ sizeof(struct locationReport_ies),
+ offsetof(struct locationReport_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_locationReport_ies_2 = {
+ "locationReport-ies",
+ "locationReport-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_locationReport_ies_tags_2,
+ sizeof(asn_DEF_locationReport_ies_tags_2)
+ /sizeof(asn_DEF_locationReport_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_locationReport_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_locationReport_ies_tags_2)
+ /sizeof(asn_DEF_locationReport_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_locationReport_ies_constr_2,
+ asn_MBR_locationReport_ies_2,
+ 1, /* Single element */
+ &asn_SPC_locationReport_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationReport_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationReport, locationReport_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_locationReport_ies_2,
+ memb_locationReport_ies_constraint_1,
+ &asn_PER_memb_locationReport_ies_constr_2,
+ 0,
+ "locationReport-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationReport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationReport_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* locationReport-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationReport_specs_1 = {
+ sizeof(struct RANAP_LocationReport),
+ offsetof(struct RANAP_LocationReport, _asn_ctx),
+ asn_MAP_RANAP_LocationReport_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReport = {
+ "RANAP_LocationReport",
+ "RANAP_LocationReport",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationReport_tags_1,
+ sizeof(asn_DEF_RANAP_LocationReport_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReport_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationReport_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationReport_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReport_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationReport_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_LocationReport_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationReportingControl.c b/src/ranap/RANAP_LocationReportingControl.c
new file mode 100644
index 0000000..d77be12
--- /dev/null
+++ b/src/ranap/RANAP_LocationReportingControl.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationReportingControl.h>
+
+static int
+memb_locationReportingControl_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_locationReportingControl_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_locationReportingControl_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_locationReportingControl_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_locationReportingControl_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_locationReportingControl_ies_specs_2 = {
+ sizeof(struct locationReportingControl_ies),
+ offsetof(struct locationReportingControl_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_locationReportingControl_ies_2 = {
+ "locationReportingControl-ies",
+ "locationReportingControl-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_locationReportingControl_ies_tags_2,
+ sizeof(asn_DEF_locationReportingControl_ies_tags_2)
+ /sizeof(asn_DEF_locationReportingControl_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_locationReportingControl_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_locationReportingControl_ies_tags_2)
+ /sizeof(asn_DEF_locationReportingControl_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_locationReportingControl_ies_constr_2,
+ asn_MBR_locationReportingControl_ies_2,
+ 1, /* Single element */
+ &asn_SPC_locationReportingControl_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationReportingControl_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LocationReportingControl, locationReportingControl_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_locationReportingControl_ies_2,
+ memb_locationReportingControl_ies_constraint_1,
+ &asn_PER_memb_locationReportingControl_ies_constr_2,
+ 0,
+ "locationReportingControl-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationReportingControl_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationReportingControl_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* locationReportingControl-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationReportingControl_specs_1 = {
+ sizeof(struct RANAP_LocationReportingControl),
+ offsetof(struct RANAP_LocationReportingControl, _asn_ctx),
+ asn_MAP_RANAP_LocationReportingControl_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReportingControl = {
+ "RANAP_LocationReportingControl",
+ "RANAP_LocationReportingControl",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationReportingControl_tags_1,
+ sizeof(asn_DEF_RANAP_LocationReportingControl_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReportingControl_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationReportingControl_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationReportingControl_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReportingControl_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationReportingControl_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_LocationReportingControl_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LocationReportingTransferInformation.c b/src/ranap/RANAP_LocationReportingTransferInformation.c
new file mode 100644
index 0000000..3c01ed4
--- /dev/null
+++ b/src/ranap/RANAP_LocationReportingTransferInformation.c
@@ -0,0 +1,173 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LocationReportingTransferInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LocationReportingTransferInformation_1[] = {
+ { ATF_POINTER, 12, offsetof(struct RANAP_LocationReportingTransferInformation, reportChangeOfSAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ReportChangeOfSAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "reportChangeOfSAI"
+ },
+ { ATF_POINTER, 11, offsetof(struct RANAP_LocationReportingTransferInformation, periodicReportingIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PeriodicReportingIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "periodicReportingIndicator"
+ },
+ { ATF_POINTER, 10, offsetof(struct RANAP_LocationReportingTransferInformation, directReportingIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DirectReportingIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "directReportingIndicator"
+ },
+ { ATF_POINTER, 9, offsetof(struct RANAP_LocationReportingTransferInformation, verticalAccuracyCode),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_VerticalAccuracyCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "verticalAccuracyCode"
+ },
+ { ATF_POINTER, 8, offsetof(struct RANAP_LocationReportingTransferInformation, positioningPriorityChangeSAI),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PositioningPriority,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "positioningPriorityChangeSAI"
+ },
+ { ATF_POINTER, 7, offsetof(struct RANAP_LocationReportingTransferInformation, positioningPriorityDirect),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PositioningPriority,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "positioningPriorityDirect"
+ },
+ { ATF_POINTER, 6, offsetof(struct RANAP_LocationReportingTransferInformation, clientTypePeriodic),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ClientType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "clientTypePeriodic"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_LocationReportingTransferInformation, clientTypeDirect),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ClientType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "clientTypeDirect"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_LocationReportingTransferInformation, responseTime),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ResponseTime,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "responseTime"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_LocationReportingTransferInformation, includeVelocity),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IncludeVelocity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "includeVelocity"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_LocationReportingTransferInformation, periodicLocationInfo),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PeriodicLocationInfo,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "periodicLocationInfo"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LocationReportingTransferInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LocationReportingTransferInformation_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LocationReportingTransferInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LocationReportingTransferInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportChangeOfSAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* periodicReportingIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* directReportingIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* verticalAccuracyCode */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* positioningPriorityChangeSAI */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* positioningPriorityDirect */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* clientTypePeriodic */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* clientTypeDirect */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* responseTime */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* includeVelocity */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* periodicLocationInfo */
+ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LocationReportingTransferInformation_specs_1 = {
+ sizeof(struct RANAP_LocationReportingTransferInformation),
+ offsetof(struct RANAP_LocationReportingTransferInformation, _asn_ctx),
+ asn_MAP_RANAP_LocationReportingTransferInformation_tag2el_1,
+ 12, /* Count of tags in the map */
+ asn_MAP_RANAP_LocationReportingTransferInformation_oms_1, /* Optional members */
+ 12, 0, /* Root/Additions */
+ 11, /* Start extensions */
+ 13 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LocationReportingTransferInformation = {
+ "RANAP_LocationReportingTransferInformation",
+ "RANAP_LocationReportingTransferInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LocationReportingTransferInformation_tags_1,
+ sizeof(asn_DEF_RANAP_LocationReportingTransferInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReportingTransferInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LocationReportingTransferInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LocationReportingTransferInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_LocationReportingTransferInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LocationReportingTransferInformation_1,
+ 12, /* Elements count */
+ &asn_SPC_RANAP_LocationReportingTransferInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LoggedMDT.c b/src/ranap/RANAP_LoggedMDT.c
new file mode 100644
index 0000000..10bf814
--- /dev/null
+++ b/src/ranap/RANAP_LoggedMDT.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LoggedMDT.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_LoggedMDT_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LoggedMDT, loggingInterval),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LoggingInterval,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "loggingInterval"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_LoggedMDT, loggingDuration),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LoggingDuration,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "loggingDuration"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_LoggedMDT, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_LoggedMDT_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_LoggedMDT_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_LoggedMDT_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* loggingInterval */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* loggingDuration */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_LoggedMDT_specs_1 = {
+ sizeof(struct RANAP_LoggedMDT),
+ offsetof(struct RANAP_LoggedMDT, _asn_ctx),
+ asn_MAP_RANAP_LoggedMDT_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_LoggedMDT_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LoggedMDT = {
+ "RANAP_LoggedMDT",
+ "RANAP_LoggedMDT",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LoggedMDT_tags_1,
+ sizeof(asn_DEF_RANAP_LoggedMDT_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggedMDT_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LoggedMDT_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LoggedMDT_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggedMDT_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_LoggedMDT_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_LoggedMDT_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LoggingDuration.c b/src/ranap/RANAP_LoggingDuration.c
new file mode 100644
index 0000000..beed4bc
--- /dev/null
+++ b/src/ranap/RANAP_LoggingDuration.c
@@ -0,0 +1,175 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LoggingDuration.h>
+
+int
+RANAP_LoggingDuration_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LoggingDuration_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_LoggingDuration_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LoggingDuration_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingDuration_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LoggingDuration_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingDuration_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LoggingDuration_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingDuration_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LoggingDuration_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LoggingDuration_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LoggingDuration_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoggingDuration_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LoggingDuration_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_LoggingDuration_value2enum_1[] = {
+ { 0, 5, "min10" },
+ { 1, 5, "min20" },
+ { 2, 5, "min40" },
+ { 3, 5, "min60" },
+ { 4, 5, "min90" },
+ { 5, 6, "min120" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_LoggingDuration_enum2value_1[] = {
+ 0, /* min10(0) */
+ 5, /* min120(5) */
+ 1, /* min20(1) */
+ 2, /* min40(2) */
+ 3, /* min60(3) */
+ 4 /* min90(4) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_LoggingDuration_specs_1 = {
+ asn_MAP_RANAP_LoggingDuration_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_LoggingDuration_enum2value_1, /* N => "tag"; sorted by N */
+ 6, /* Number of elements in the maps */
+ 7, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LoggingDuration_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LoggingDuration = {
+ "RANAP_LoggingDuration",
+ "RANAP_LoggingDuration",
+ RANAP_LoggingDuration_free,
+ RANAP_LoggingDuration_print,
+ RANAP_LoggingDuration_constraint,
+ RANAP_LoggingDuration_decode_ber,
+ RANAP_LoggingDuration_encode_der,
+ RANAP_LoggingDuration_decode_xer,
+ RANAP_LoggingDuration_encode_xer,
+ RANAP_LoggingDuration_decode_uper,
+ RANAP_LoggingDuration_encode_uper,
+ RANAP_LoggingDuration_decode_aper,
+ RANAP_LoggingDuration_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LoggingDuration_tags_1,
+ sizeof(asn_DEF_RANAP_LoggingDuration_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggingDuration_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LoggingDuration_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LoggingDuration_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggingDuration_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LoggingDuration_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_LoggingDuration_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_LoggingInterval.c b/src/ranap/RANAP_LoggingInterval.c
new file mode 100644
index 0000000..9859f4f
--- /dev/null
+++ b/src/ranap/RANAP_LoggingInterval.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_LoggingInterval.h>
+
+int
+RANAP_LoggingInterval_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_LoggingInterval_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_LoggingInterval_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_LoggingInterval_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingInterval_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_LoggingInterval_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingInterval_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_LoggingInterval_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_LoggingInterval_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_LoggingInterval_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_LoggingInterval_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_LoggingInterval_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_LoggingInterval_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_LoggingInterval_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_LoggingInterval_value2enum_1[] = {
+ { 0, 5, "s1d28" },
+ { 1, 5, "s2d56" },
+ { 2, 5, "s5d12" },
+ { 3, 6, "s10d24" },
+ { 4, 6, "s20d48" },
+ { 5, 6, "s30d72" },
+ { 6, 6, "s40d96" },
+ { 7, 6, "s61d44" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_LoggingInterval_enum2value_1[] = {
+ 3, /* s10d24(3) */
+ 0, /* s1d28(0) */
+ 4, /* s20d48(4) */
+ 1, /* s2d56(1) */
+ 5, /* s30d72(5) */
+ 6, /* s40d96(6) */
+ 2, /* s5d12(2) */
+ 7 /* s61d44(7) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_LoggingInterval_specs_1 = {
+ asn_MAP_RANAP_LoggingInterval_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_LoggingInterval_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 9, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_LoggingInterval_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_LoggingInterval = {
+ "RANAP_LoggingInterval",
+ "RANAP_LoggingInterval",
+ RANAP_LoggingInterval_free,
+ RANAP_LoggingInterval_print,
+ RANAP_LoggingInterval_constraint,
+ RANAP_LoggingInterval_decode_ber,
+ RANAP_LoggingInterval_encode_der,
+ RANAP_LoggingInterval_decode_xer,
+ RANAP_LoggingInterval_encode_xer,
+ RANAP_LoggingInterval_decode_uper,
+ RANAP_LoggingInterval_encode_uper,
+ RANAP_LoggingInterval_decode_aper,
+ RANAP_LoggingInterval_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_LoggingInterval_tags_1,
+ sizeof(asn_DEF_RANAP_LoggingInterval_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggingInterval_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_LoggingInterval_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_LoggingInterval_tags_1)
+ /sizeof(asn_DEF_RANAP_LoggingInterval_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_LoggingInterval_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_LoggingInterval_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M1Report.c b/src/ranap/RANAP_M1Report.c
new file mode 100644
index 0000000..5a489ed
--- /dev/null
+++ b/src/ranap/RANAP_M1Report.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M1Report.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_M1Report_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_M1Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M1Report, choice.periodic),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MDT_Report_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "periodic"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M1Report, choice.event1F),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Event1F_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "event1F"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M1Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodic */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* event1F */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_M1Report_specs_1 = {
+ sizeof(struct RANAP_M1Report),
+ offsetof(struct RANAP_M1Report, _asn_ctx),
+ offsetof(struct RANAP_M1Report, present),
+ sizeof(((struct RANAP_M1Report *)0)->present),
+ asn_MAP_RANAP_M1Report_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M1Report = {
+ "RANAP_M1Report",
+ "RANAP_M1Report",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_M1Report_constr_1,
+ asn_MBR_RANAP_M1Report_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_M1Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M2Report.c b/src/ranap/RANAP_M2Report.c
new file mode 100644
index 0000000..1fda992
--- /dev/null
+++ b/src/ranap/RANAP_M2Report.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M2Report.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_M2Report_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_M2Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M2Report, choice.periodic),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MDT_Report_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "periodic"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M2Report, choice.event1I),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Event1I_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "event1I"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M2Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodic */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* event1I */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_M2Report_specs_1 = {
+ sizeof(struct RANAP_M2Report),
+ offsetof(struct RANAP_M2Report, _asn_ctx),
+ offsetof(struct RANAP_M2Report, present),
+ sizeof(((struct RANAP_M2Report *)0)->present),
+ asn_MAP_RANAP_M2Report_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M2Report = {
+ "RANAP_M2Report",
+ "RANAP_M2Report",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_M2Report_constr_1,
+ asn_MBR_RANAP_M2Report_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_M2Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M4-Collection-Parameters.c b/src/ranap/RANAP_M4-Collection-Parameters.c
new file mode 100644
index 0000000..ea0f0c3
--- /dev/null
+++ b/src/ranap/RANAP_M4-Collection-Parameters.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M4-Collection-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_M4_Collection_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M4_Collection_Parameters, m4_period),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M4_Period,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m4-period"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_M4_Collection_Parameters, m4_threshold),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M4_Threshold,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m4-threshold"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_M4_Collection_Parameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_M4_Collection_Parameters_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_M4_Collection_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M4_Collection_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m4-period */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m4-threshold */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_M4_Collection_Parameters_specs_1 = {
+ sizeof(struct RANAP_M4_Collection_Parameters),
+ offsetof(struct RANAP_M4_Collection_Parameters, _asn_ctx),
+ asn_MAP_RANAP_M4_Collection_Parameters_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_M4_Collection_Parameters_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Collection_Parameters = {
+ "RANAP_M4-Collection-Parameters",
+ "RANAP_M4-Collection-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M4_Collection_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_M4_Collection_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Collection_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M4_Collection_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M4_Collection_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Collection_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_M4_Collection_Parameters_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_M4_Collection_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M4-Period.c b/src/ranap/RANAP_M4-Period.c
new file mode 100644
index 0000000..f7ca873
--- /dev/null
+++ b/src/ranap/RANAP_M4-Period.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M4-Period.h>
+
+int
+RANAP_M4_Period_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_M4_Period_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_M4_Period_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_M4_Period_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Period_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_M4_Period_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Period_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_M4_Period_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Period_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_M4_Period_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_M4_Period_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_M4_Period_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M4_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_M4_Period_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_M4_Period_value2enum_1[] = {
+ { 0, 5, "ms100" },
+ { 1, 5, "ms250" },
+ { 2, 5, "ms500" },
+ { 3, 6, "ms1000" },
+ { 4, 6, "ms2000" },
+ { 5, 6, "ms3000" },
+ { 6, 6, "ms4000" },
+ { 7, 6, "ms6000" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_M4_Period_enum2value_1[] = {
+ 0, /* ms100(0) */
+ 3, /* ms1000(3) */
+ 4, /* ms2000(4) */
+ 1, /* ms250(1) */
+ 5, /* ms3000(5) */
+ 6, /* ms4000(6) */
+ 2, /* ms500(2) */
+ 7 /* ms6000(7) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_M4_Period_specs_1 = {
+ asn_MAP_RANAP_M4_Period_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_M4_Period_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 9, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_M4_Period_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Period = {
+ "RANAP_M4-Period",
+ "RANAP_M4-Period",
+ RANAP_M4_Period_free,
+ RANAP_M4_Period_print,
+ RANAP_M4_Period_constraint,
+ RANAP_M4_Period_decode_ber,
+ RANAP_M4_Period_encode_der,
+ RANAP_M4_Period_decode_xer,
+ RANAP_M4_Period_encode_xer,
+ RANAP_M4_Period_decode_uper,
+ RANAP_M4_Period_encode_uper,
+ RANAP_M4_Period_decode_aper,
+ RANAP_M4_Period_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M4_Period_tags_1,
+ sizeof(asn_DEF_RANAP_M4_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Period_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M4_Period_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M4_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Period_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_M4_Period_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_M4_Period_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M4-Threshold.c b/src/ranap/RANAP_M4-Threshold.c
new file mode 100644
index 0000000..d2c6692
--- /dev/null
+++ b/src/ranap/RANAP_M4-Threshold.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M4-Threshold.h>
+
+int
+RANAP_M4_Threshold_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 31l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_M4_Threshold_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_M4_Threshold_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_M4_Threshold_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Threshold_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_M4_Threshold_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Threshold_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_M4_Threshold_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M4_Threshold_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_M4_Threshold_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_M4_Threshold_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_M4_Threshold_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M4_Threshold_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_M4_Threshold_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 5, 5, 0l, 31l } /* (0..31) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_M4_Threshold_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M4_Threshold = {
+ "RANAP_M4-Threshold",
+ "RANAP_M4-Threshold",
+ RANAP_M4_Threshold_free,
+ RANAP_M4_Threshold_print,
+ RANAP_M4_Threshold_constraint,
+ RANAP_M4_Threshold_decode_ber,
+ RANAP_M4_Threshold_encode_der,
+ RANAP_M4_Threshold_decode_xer,
+ RANAP_M4_Threshold_encode_xer,
+ RANAP_M4_Threshold_decode_uper,
+ RANAP_M4_Threshold_encode_uper,
+ RANAP_M4_Threshold_decode_aper,
+ RANAP_M4_Threshold_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M4_Threshold_tags_1,
+ sizeof(asn_DEF_RANAP_M4_Threshold_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Threshold_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M4_Threshold_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M4_Threshold_tags_1)
+ /sizeof(asn_DEF_RANAP_M4_Threshold_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_M4_Threshold_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_M4Report.c b/src/ranap/RANAP_M4Report.c
new file mode 100644
index 0000000..9fe44b2
--- /dev/null
+++ b/src/ranap/RANAP_M4Report.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M4Report.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_M4Report_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_M4Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M4Report, choice.all),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NULL,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "all"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M4Report, choice.m4_collection_parameters),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M4_Collection_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m4-collection-parameters"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M4Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* all */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* m4-collection-parameters */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_M4Report_specs_1 = {
+ sizeof(struct RANAP_M4Report),
+ offsetof(struct RANAP_M4Report, _asn_ctx),
+ offsetof(struct RANAP_M4Report, present),
+ sizeof(((struct RANAP_M4Report *)0)->present),
+ asn_MAP_RANAP_M4Report_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M4Report = {
+ "RANAP_M4Report",
+ "RANAP_M4Report",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_M4Report_constr_1,
+ asn_MBR_RANAP_M4Report_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_M4Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M5-Period.c b/src/ranap/RANAP_M5-Period.c
new file mode 100644
index 0000000..d841ca0
--- /dev/null
+++ b/src/ranap/RANAP_M5-Period.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M5-Period.h>
+
+int
+RANAP_M5_Period_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_M5_Period_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_M5_Period_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_M5_Period_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M5_Period_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_M5_Period_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M5_Period_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_M5_Period_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M5_Period_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_M5_Period_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_M5_Period_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_M5_Period_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M5_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_M5_Period_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_M5_Period_value2enum_1[] = {
+ { 0, 5, "ms100" },
+ { 1, 5, "ms250" },
+ { 2, 5, "ms500" },
+ { 3, 6, "ms1000" },
+ { 4, 6, "ms2000" },
+ { 5, 6, "ms3000" },
+ { 6, 6, "ms4000" },
+ { 7, 6, "ms6000" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_M5_Period_enum2value_1[] = {
+ 0, /* ms100(0) */
+ 3, /* ms1000(3) */
+ 4, /* ms2000(4) */
+ 1, /* ms250(1) */
+ 5, /* ms3000(5) */
+ 6, /* ms4000(6) */
+ 2, /* ms500(2) */
+ 7 /* ms6000(7) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_M5_Period_specs_1 = {
+ asn_MAP_RANAP_M5_Period_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_M5_Period_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 9, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_M5_Period_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M5_Period = {
+ "RANAP_M5-Period",
+ "RANAP_M5-Period",
+ RANAP_M5_Period_free,
+ RANAP_M5_Period_print,
+ RANAP_M5_Period_constraint,
+ RANAP_M5_Period_decode_ber,
+ RANAP_M5_Period_encode_der,
+ RANAP_M5_Period_decode_xer,
+ RANAP_M5_Period_encode_xer,
+ RANAP_M5_Period_decode_uper,
+ RANAP_M5_Period_encode_uper,
+ RANAP_M5_Period_decode_aper,
+ RANAP_M5_Period_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M5_Period_tags_1,
+ sizeof(asn_DEF_RANAP_M5_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M5_Period_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M5_Period_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M5_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M5_Period_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_M5_Period_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_M5_Period_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M5Report.c b/src/ranap/RANAP_M5Report.c
new file mode 100644
index 0000000..1551a35
--- /dev/null
+++ b/src/ranap/RANAP_M5Report.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M5Report.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_M5Report_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_M5Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M5Report, choice.when_available),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NULL,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "when-available"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M5Report, choice.m5_period),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M5_Period,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m5-period"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M5Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* when-available */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* m5-period */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_M5Report_specs_1 = {
+ sizeof(struct RANAP_M5Report),
+ offsetof(struct RANAP_M5Report, _asn_ctx),
+ offsetof(struct RANAP_M5Report, present),
+ sizeof(((struct RANAP_M5Report *)0)->present),
+ asn_MAP_RANAP_M5Report_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M5Report = {
+ "RANAP_M5Report",
+ "RANAP_M5Report",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_M5Report_constr_1,
+ asn_MBR_RANAP_M5Report_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_M5Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M6-Period.c b/src/ranap/RANAP_M6-Period.c
new file mode 100644
index 0000000..0802b47
--- /dev/null
+++ b/src/ranap/RANAP_M6-Period.c
@@ -0,0 +1,189 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M6-Period.h>
+
+int
+RANAP_M6_Period_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_M6_Period_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_M6_Period_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_M6_Period_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M6_Period_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_M6_Period_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M6_Period_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_M6_Period_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M6_Period_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_M6_Period_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_M6_Period_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_M6_Period_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M6_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_M6_Period_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 12l } /* (0..12,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_M6_Period_value2enum_1[] = {
+ { 0, 6, "ms1000" },
+ { 1, 6, "ms2000" },
+ { 2, 6, "ms3000" },
+ { 3, 6, "ms4000" },
+ { 4, 6, "ms6000" },
+ { 5, 6, "ms8000" },
+ { 6, 7, "ms12000" },
+ { 7, 7, "ms16000" },
+ { 8, 7, "ms20000" },
+ { 9, 7, "ms24000" },
+ { 10, 7, "ms28000" },
+ { 11, 7, "ms32000" },
+ { 12, 7, "ms64000" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_M6_Period_enum2value_1[] = {
+ 0, /* ms1000(0) */
+ 6, /* ms12000(6) */
+ 7, /* ms16000(7) */
+ 1, /* ms2000(1) */
+ 8, /* ms20000(8) */
+ 9, /* ms24000(9) */
+ 10, /* ms28000(10) */
+ 2, /* ms3000(2) */
+ 11, /* ms32000(11) */
+ 3, /* ms4000(3) */
+ 4, /* ms6000(4) */
+ 12, /* ms64000(12) */
+ 5 /* ms8000(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_M6_Period_specs_1 = {
+ asn_MAP_RANAP_M6_Period_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_M6_Period_enum2value_1, /* N => "tag"; sorted by N */
+ 13, /* Number of elements in the maps */
+ 14, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_M6_Period_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M6_Period = {
+ "RANAP_M6-Period",
+ "RANAP_M6-Period",
+ RANAP_M6_Period_free,
+ RANAP_M6_Period_print,
+ RANAP_M6_Period_constraint,
+ RANAP_M6_Period_decode_ber,
+ RANAP_M6_Period_encode_der,
+ RANAP_M6_Period_decode_xer,
+ RANAP_M6_Period_encode_xer,
+ RANAP_M6_Period_decode_uper,
+ RANAP_M6_Period_encode_uper,
+ RANAP_M6_Period_decode_aper,
+ RANAP_M6_Period_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M6_Period_tags_1,
+ sizeof(asn_DEF_RANAP_M6_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M6_Period_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M6_Period_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M6_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M6_Period_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_M6_Period_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_M6_Period_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M6Report.c b/src/ranap/RANAP_M6Report.c
new file mode 100644
index 0000000..c30b430
--- /dev/null
+++ b/src/ranap/RANAP_M6Report.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M6Report.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_M6Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M6Report, m6_period),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M6_Period,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m6-period"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M6Report, m6_links_to_log),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Links_to_log,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m6-links-to-log"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_M6Report, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_M6Report_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_M6Report_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M6Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m6-period */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m6-links-to-log */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_M6Report_specs_1 = {
+ sizeof(struct RANAP_M6Report),
+ offsetof(struct RANAP_M6Report, _asn_ctx),
+ asn_MAP_RANAP_M6Report_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_M6Report_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M6Report = {
+ "RANAP_M6Report",
+ "RANAP_M6Report",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M6Report_tags_1,
+ sizeof(asn_DEF_RANAP_M6Report_tags_1)
+ /sizeof(asn_DEF_RANAP_M6Report_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M6Report_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M6Report_tags_1)
+ /sizeof(asn_DEF_RANAP_M6Report_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_M6Report_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_M6Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M7-Period.c b/src/ranap/RANAP_M7-Period.c
new file mode 100644
index 0000000..a488ee3
--- /dev/null
+++ b/src/ranap/RANAP_M7-Period.c
@@ -0,0 +1,189 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M7-Period.h>
+
+int
+RANAP_M7_Period_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_M7_Period_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_M7_Period_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_M7_Period_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M7_Period_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_M7_Period_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M7_Period_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_M7_Period_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_M7_Period_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_M7_Period_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_M7_Period_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_M7_Period_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_M7_Period_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_M7_Period_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 12l } /* (0..12,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_M7_Period_value2enum_1[] = {
+ { 0, 6, "ms1000" },
+ { 1, 6, "ms2000" },
+ { 2, 6, "ms3000" },
+ { 3, 6, "ms4000" },
+ { 4, 6, "ms6000" },
+ { 5, 6, "ms8000" },
+ { 6, 7, "ms12000" },
+ { 7, 7, "ms16000" },
+ { 8, 7, "ms20000" },
+ { 9, 7, "ms24000" },
+ { 10, 7, "ms28000" },
+ { 11, 7, "ms32000" },
+ { 12, 7, "ms64000" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_M7_Period_enum2value_1[] = {
+ 0, /* ms1000(0) */
+ 6, /* ms12000(6) */
+ 7, /* ms16000(7) */
+ 1, /* ms2000(1) */
+ 8, /* ms20000(8) */
+ 9, /* ms24000(9) */
+ 10, /* ms28000(10) */
+ 2, /* ms3000(2) */
+ 11, /* ms32000(11) */
+ 3, /* ms4000(3) */
+ 4, /* ms6000(4) */
+ 12, /* ms64000(12) */
+ 5 /* ms8000(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_M7_Period_specs_1 = {
+ asn_MAP_RANAP_M7_Period_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_M7_Period_enum2value_1, /* N => "tag"; sorted by N */
+ 13, /* Number of elements in the maps */
+ 14, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_M7_Period_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M7_Period = {
+ "RANAP_M7-Period",
+ "RANAP_M7-Period",
+ RANAP_M7_Period_free,
+ RANAP_M7_Period_print,
+ RANAP_M7_Period_constraint,
+ RANAP_M7_Period_decode_ber,
+ RANAP_M7_Period_encode_der,
+ RANAP_M7_Period_decode_xer,
+ RANAP_M7_Period_encode_xer,
+ RANAP_M7_Period_decode_uper,
+ RANAP_M7_Period_encode_uper,
+ RANAP_M7_Period_decode_aper,
+ RANAP_M7_Period_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M7_Period_tags_1,
+ sizeof(asn_DEF_RANAP_M7_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M7_Period_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M7_Period_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M7_Period_tags_1)
+ /sizeof(asn_DEF_RANAP_M7_Period_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_M7_Period_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_M7_Period_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_M7Report.c b/src/ranap/RANAP_M7Report.c
new file mode 100644
index 0000000..fb16de4
--- /dev/null
+++ b/src/ranap/RANAP_M7Report.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_M7Report.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_M7Report_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M7Report, m7_period),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_M7_Period,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m7-period"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_M7Report, m7_links_to_log),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Links_to_log,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "m7-links-to-log"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_M7Report, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_M7Report_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_M7Report_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_M7Report_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m7-period */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m7-links-to-log */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_M7Report_specs_1 = {
+ sizeof(struct RANAP_M7Report),
+ offsetof(struct RANAP_M7Report, _asn_ctx),
+ asn_MAP_RANAP_M7Report_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_M7Report_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_M7Report = {
+ "RANAP_M7Report",
+ "RANAP_M7Report",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_M7Report_tags_1,
+ sizeof(asn_DEF_RANAP_M7Report_tags_1)
+ /sizeof(asn_DEF_RANAP_M7Report_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_M7Report_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_M7Report_tags_1)
+ /sizeof(asn_DEF_RANAP_M7Report_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_M7Report_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_M7Report_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMS-PTP-RAB-ID.c b/src/ranap/RANAP_MBMS-PTP-RAB-ID.c
new file mode 100644
index 0000000..2854c0b
--- /dev/null
+++ b/src/ranap/RANAP_MBMS-PTP-RAB-ID.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMS-PTP-RAB-ID.h>
+
+int
+RANAP_MBMS_PTP_RAB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_MBMS_PTP_RAB_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMS_PTP_RAB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMS_PTP_RAB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMS_PTP_RAB_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMS_PTP_RAB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMS_PTP_RAB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMS_PTP_RAB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMS_PTP_RAB_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMS_PTP_RAB_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMS_PTP_RAB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMS_PTP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMS_PTP_RAB_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMS_PTP_RAB_ID = {
+ "RANAP_MBMS-PTP-RAB-ID",
+ "RANAP_MBMS-PTP-RAB-ID",
+ RANAP_MBMS_PTP_RAB_ID_free,
+ RANAP_MBMS_PTP_RAB_ID_print,
+ RANAP_MBMS_PTP_RAB_ID_constraint,
+ RANAP_MBMS_PTP_RAB_ID_decode_ber,
+ RANAP_MBMS_PTP_RAB_ID_encode_der,
+ RANAP_MBMS_PTP_RAB_ID_decode_xer,
+ RANAP_MBMS_PTP_RAB_ID_encode_xer,
+ RANAP_MBMS_PTP_RAB_ID_decode_uper,
+ RANAP_MBMS_PTP_RAB_ID_encode_uper,
+ RANAP_MBMS_PTP_RAB_ID_decode_aper,
+ RANAP_MBMS_PTP_RAB_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1,
+ sizeof(asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMS_PTP_RAB_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMS_PTP_RAB_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MBMSBearerServiceType.c b/src/ranap/RANAP_MBMSBearerServiceType.c
new file mode 100644
index 0000000..bed0c28
--- /dev/null
+++ b/src/ranap/RANAP_MBMSBearerServiceType.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSBearerServiceType.h>
+
+int
+RANAP_MBMSBearerServiceType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSBearerServiceType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSBearerServiceType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSBearerServiceType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSBearerServiceType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSBearerServiceType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSBearerServiceType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSBearerServiceType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSBearerServiceType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSBearerServiceType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSBearerServiceType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSBearerServiceType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSBearerServiceType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSBearerServiceType_value2enum_1[] = {
+ { 0, 9, "multicast" },
+ { 1, 9, "broadcast" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSBearerServiceType_enum2value_1[] = {
+ 1, /* broadcast(1) */
+ 0 /* multicast(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSBearerServiceType_specs_1 = {
+ asn_MAP_RANAP_MBMSBearerServiceType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSBearerServiceType_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSBearerServiceType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSBearerServiceType = {
+ "RANAP_MBMSBearerServiceType",
+ "RANAP_MBMSBearerServiceType",
+ RANAP_MBMSBearerServiceType_free,
+ RANAP_MBMSBearerServiceType_print,
+ RANAP_MBMSBearerServiceType_constraint,
+ RANAP_MBMSBearerServiceType_decode_ber,
+ RANAP_MBMSBearerServiceType_encode_der,
+ RANAP_MBMSBearerServiceType_decode_xer,
+ RANAP_MBMSBearerServiceType_encode_xer,
+ RANAP_MBMSBearerServiceType_decode_uper,
+ RANAP_MBMSBearerServiceType_encode_uper,
+ RANAP_MBMSBearerServiceType_decode_aper,
+ RANAP_MBMSBearerServiceType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSBearerServiceType_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSBearerServiceType_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSBearerServiceType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSBearerServiceType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSBearerServiceType_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSBearerServiceType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSBearerServiceType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSBearerServiceType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSCNDe-Registration.c b/src/ranap/RANAP_MBMSCNDe-Registration.c
new file mode 100644
index 0000000..0d962b9
--- /dev/null
+++ b/src/ranap/RANAP_MBMSCNDe-Registration.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSCNDe-Registration.h>
+
+int
+RANAP_MBMSCNDe_Registration_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSCNDe_Registration_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSCNDe_Registration_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCNDe_Registration_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCNDe_Registration_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCNDe_Registration_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCNDe_Registration_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCNDe_Registration_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCNDe_Registration_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCNDe_Registration_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCNDe_Registration_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSCNDe_Registration_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSCNDe_Registration_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSCNDe_Registration_value2enum_1[] = {
+ { 0, 17, "normalsessionstop" },
+ { 1, 10, "deregister" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSCNDe_Registration_enum2value_1[] = {
+ 1, /* deregister(1) */
+ 0 /* normalsessionstop(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSCNDe_Registration_specs_1 = {
+ asn_MAP_RANAP_MBMSCNDe_Registration_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSCNDe_Registration_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSCNDe_Registration_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_Registration = {
+ "RANAP_MBMSCNDe-Registration",
+ "RANAP_MBMSCNDe-Registration",
+ RANAP_MBMSCNDe_Registration_free,
+ RANAP_MBMSCNDe_Registration_print,
+ RANAP_MBMSCNDe_Registration_constraint,
+ RANAP_MBMSCNDe_Registration_decode_ber,
+ RANAP_MBMSCNDe_Registration_encode_der,
+ RANAP_MBMSCNDe_Registration_decode_xer,
+ RANAP_MBMSCNDe_Registration_encode_xer,
+ RANAP_MBMSCNDe_Registration_decode_uper,
+ RANAP_MBMSCNDe_Registration_encode_uper,
+ RANAP_MBMSCNDe_Registration_decode_aper,
+ RANAP_MBMSCNDe_Registration_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSCNDe_Registration_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSCNDe_Registration_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_Registration_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSCNDe_Registration_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSCNDe_Registration_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_Registration_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSCNDe_Registration_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSCNDe_Registration_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSCNDe-RegistrationRequest.c b/src/ranap/RANAP_MBMSCNDe-RegistrationRequest.c
new file mode 100644
index 0000000..c1773c3
--- /dev/null
+++ b/src/ranap/RANAP_MBMSCNDe-RegistrationRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSCNDe-RegistrationRequest.h>
+
+static int
+memb_mbmscnDe_RegistrationRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmscnDe_RegistrationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmscnDe_RegistrationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmscnDe_RegistrationRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmscnDe_RegistrationRequest_ies_specs_2 = {
+ sizeof(struct mbmscnDe_RegistrationRequest_ies),
+ offsetof(struct mbmscnDe_RegistrationRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmscnDe_RegistrationRequest_ies_2 = {
+ "mbmscnDe-RegistrationRequest-ies",
+ "mbmscnDe-RegistrationRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2,
+ sizeof(asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmscnDe_RegistrationRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmscnDe_RegistrationRequest_ies_constr_2,
+ asn_MBR_mbmscnDe_RegistrationRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmscnDe_RegistrationRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSCNDe_RegistrationRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSCNDe_RegistrationRequest, mbmscnDe_RegistrationRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmscnDe_RegistrationRequest_ies_2,
+ memb_mbmscnDe_RegistrationRequest_ies_constraint_1,
+ &asn_PER_memb_mbmscnDe_RegistrationRequest_ies_constr_2,
+ 0,
+ "mbmscnDe-RegistrationRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSCNDe_RegistrationRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmscnDe-RegistrationRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSCNDe_RegistrationRequest_specs_1 = {
+ sizeof(struct RANAP_MBMSCNDe_RegistrationRequest),
+ offsetof(struct RANAP_MBMSCNDe_RegistrationRequest, _asn_ctx),
+ asn_MAP_RANAP_MBMSCNDe_RegistrationRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_RegistrationRequest = {
+ "RANAP_MBMSCNDe-RegistrationRequest",
+ "RANAP_MBMSCNDe-RegistrationRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSCNDe_RegistrationRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSCNDe_RegistrationRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSCNDe-RegistrationResponse.c b/src/ranap/RANAP_MBMSCNDe-RegistrationResponse.c
new file mode 100644
index 0000000..85246a2
--- /dev/null
+++ b/src/ranap/RANAP_MBMSCNDe-RegistrationResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSCNDe-RegistrationResponse.h>
+
+static int
+memb_mbmscnDe_RegistrationResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmscnDe_RegistrationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmscnDe_RegistrationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmscnDe_RegistrationResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmscnDe_RegistrationResponse_ies_specs_2 = {
+ sizeof(struct mbmscnDe_RegistrationResponse_ies),
+ offsetof(struct mbmscnDe_RegistrationResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmscnDe_RegistrationResponse_ies_2 = {
+ "mbmscnDe-RegistrationResponse-ies",
+ "mbmscnDe-RegistrationResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmscnDe_RegistrationResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmscnDe_RegistrationResponse_ies_constr_2,
+ asn_MBR_mbmscnDe_RegistrationResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmscnDe_RegistrationResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSCNDe_RegistrationResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSCNDe_RegistrationResponse, mbmscnDe_RegistrationResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmscnDe_RegistrationResponse_ies_2,
+ memb_mbmscnDe_RegistrationResponse_ies_constraint_1,
+ &asn_PER_memb_mbmscnDe_RegistrationResponse_ies_constr_2,
+ 0,
+ "mbmscnDe-RegistrationResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSCNDe_RegistrationResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmscnDe-RegistrationResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSCNDe_RegistrationResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSCNDe_RegistrationResponse),
+ offsetof(struct RANAP_MBMSCNDe_RegistrationResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSCNDe_RegistrationResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCNDe_RegistrationResponse = {
+ "RANAP_MBMSCNDe-RegistrationResponse",
+ "RANAP_MBMSCNDe-RegistrationResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCNDe_RegistrationResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSCNDe_RegistrationResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSCNDe_RegistrationResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSCountingInformation.c b/src/ranap/RANAP_MBMSCountingInformation.c
new file mode 100644
index 0000000..cc92316
--- /dev/null
+++ b/src/ranap/RANAP_MBMSCountingInformation.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSCountingInformation.h>
+
+int
+RANAP_MBMSCountingInformation_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSCountingInformation_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSCountingInformation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCountingInformation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCountingInformation_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCountingInformation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCountingInformation_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCountingInformation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCountingInformation_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSCountingInformation_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSCountingInformation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSCountingInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSCountingInformation_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSCountingInformation_value2enum_1[] = {
+ { 0, 8, "counting" },
+ { 1, 11, "notcounting" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSCountingInformation_enum2value_1[] = {
+ 0, /* counting(0) */
+ 1 /* notcounting(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSCountingInformation_specs_1 = {
+ asn_MAP_RANAP_MBMSCountingInformation_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSCountingInformation_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSCountingInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSCountingInformation = {
+ "RANAP_MBMSCountingInformation",
+ "RANAP_MBMSCountingInformation",
+ RANAP_MBMSCountingInformation_free,
+ RANAP_MBMSCountingInformation_print,
+ RANAP_MBMSCountingInformation_constraint,
+ RANAP_MBMSCountingInformation_decode_ber,
+ RANAP_MBMSCountingInformation_encode_der,
+ RANAP_MBMSCountingInformation_decode_xer,
+ RANAP_MBMSCountingInformation_encode_xer,
+ RANAP_MBMSCountingInformation_decode_uper,
+ RANAP_MBMSCountingInformation_encode_uper,
+ RANAP_MBMSCountingInformation_decode_aper,
+ RANAP_MBMSCountingInformation_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSCountingInformation_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSCountingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCountingInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSCountingInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSCountingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSCountingInformation_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSCountingInformation_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSCountingInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSHCIndicator.c b/src/ranap/RANAP_MBMSHCIndicator.c
new file mode 100644
index 0000000..ec0f82c
--- /dev/null
+++ b/src/ranap/RANAP_MBMSHCIndicator.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSHCIndicator.h>
+
+int
+RANAP_MBMSHCIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSHCIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSHCIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSHCIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSHCIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSHCIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSHCIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSHCIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSHCIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSHCIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSHCIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSHCIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSHCIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSHCIndicator_value2enum_1[] = {
+ { 0, 19, "uncompressed-header" },
+ { 1, 17, "compressed-header" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSHCIndicator_enum2value_1[] = {
+ 1, /* compressed-header(1) */
+ 0 /* uncompressed-header(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSHCIndicator_specs_1 = {
+ asn_MAP_RANAP_MBMSHCIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSHCIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSHCIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSHCIndicator = {
+ "RANAP_MBMSHCIndicator",
+ "RANAP_MBMSHCIndicator",
+ RANAP_MBMSHCIndicator_free,
+ RANAP_MBMSHCIndicator_print,
+ RANAP_MBMSHCIndicator_constraint,
+ RANAP_MBMSHCIndicator_decode_ber,
+ RANAP_MBMSHCIndicator_encode_der,
+ RANAP_MBMSHCIndicator_decode_xer,
+ RANAP_MBMSHCIndicator_encode_xer,
+ RANAP_MBMSHCIndicator_decode_uper,
+ RANAP_MBMSHCIndicator_encode_uper,
+ RANAP_MBMSHCIndicator_decode_aper,
+ RANAP_MBMSHCIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSHCIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSHCIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSHCIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSHCIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSHCIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSHCIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSHCIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSHCIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.c b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.c
new file mode 100644
index 0000000..d052585
--- /dev/null
+++ b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNRequest.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSIPMulticastAddressandAPNRequest_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1l, 512l } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSIPMulticastAddressandAPNRequest_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_MBMSIPMulticastAddressandAPNRequest_specs_1 = {
+ sizeof(struct RANAP_MBMSIPMulticastAddressandAPNRequest),
+ offsetof(struct RANAP_MBMSIPMulticastAddressandAPNRequest, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest = {
+ "RANAP_MBMSIPMulticastAddressandAPNRequest",
+ "RANAP_MBMSIPMulticastAddressandAPNRequest",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNRequest_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSIPMulticastAddressandAPNRequest_constr_1,
+ asn_MBR_RANAP_MBMSIPMulticastAddressandAPNRequest_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_MBMSIPMulticastAddressandAPNRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c
new file mode 100644
index 0000000..e46166d
--- /dev/null
+++ b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSIPMulticastAddressandAPNlist_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, tMGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, iPMulticastAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IPMulticastAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iPMulticastAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, aPN),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_APN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "aPN"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iPMulticastAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aPN */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSIPMulticastAddressandAPNlist_specs_1 = {
+ sizeof(struct RANAP_MBMSIPMulticastAddressandAPNlist),
+ offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, _asn_ctx),
+ asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist = {
+ "RANAP_MBMSIPMulticastAddressandAPNlist",
+ "RANAP_MBMSIPMulticastAddressandAPNlist",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSIPMulticastAddressandAPNlist_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_MBMSIPMulticastAddressandAPNlist_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSLinkingInformation.c b/src/ranap/RANAP_MBMSLinkingInformation.c
new file mode 100644
index 0000000..6e8e8e0
--- /dev/null
+++ b/src/ranap/RANAP_MBMSLinkingInformation.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSLinkingInformation.h>
+
+int
+RANAP_MBMSLinkingInformation_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSLinkingInformation_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSLinkingInformation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSLinkingInformation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSLinkingInformation_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSLinkingInformation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSLinkingInformation_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSLinkingInformation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSLinkingInformation_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSLinkingInformation_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSLinkingInformation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSLinkingInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSLinkingInformation_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSLinkingInformation_value2enum_1[] = {
+ { 0, 32, "uE-has-joined-multicast-services" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSLinkingInformation_enum2value_1[] = {
+ 0 /* uE-has-joined-multicast-services(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSLinkingInformation_specs_1 = {
+ asn_MAP_RANAP_MBMSLinkingInformation_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSLinkingInformation_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSLinkingInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSLinkingInformation = {
+ "RANAP_MBMSLinkingInformation",
+ "RANAP_MBMSLinkingInformation",
+ RANAP_MBMSLinkingInformation_free,
+ RANAP_MBMSLinkingInformation_print,
+ RANAP_MBMSLinkingInformation_constraint,
+ RANAP_MBMSLinkingInformation_decode_ber,
+ RANAP_MBMSLinkingInformation_encode_der,
+ RANAP_MBMSLinkingInformation_decode_xer,
+ RANAP_MBMSLinkingInformation_encode_xer,
+ RANAP_MBMSLinkingInformation_decode_uper,
+ RANAP_MBMSLinkingInformation_encode_uper,
+ RANAP_MBMSLinkingInformation_decode_aper,
+ RANAP_MBMSLinkingInformation_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSLinkingInformation_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSLinkingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSLinkingInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSLinkingInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSLinkingInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSLinkingInformation_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSLinkingInformation_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSLinkingInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRABEstablishmentIndication.c b/src/ranap/RANAP_MBMSRABEstablishmentIndication.c
new file mode 100644
index 0000000..e38dc54
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRABEstablishmentIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRABEstablishmentIndication.h>
+
+static int
+memb_mbmsrabEstablishmentIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsrabEstablishmentIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsrabEstablishmentIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsrabEstablishmentIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsrabEstablishmentIndication_ies_specs_2 = {
+ sizeof(struct mbmsrabEstablishmentIndication_ies),
+ offsetof(struct mbmsrabEstablishmentIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsrabEstablishmentIndication_ies_2 = {
+ "mbmsrabEstablishmentIndication-ies",
+ "mbmsrabEstablishmentIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2,
+ sizeof(asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabEstablishmentIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsrabEstablishmentIndication_ies_constr_2,
+ asn_MBR_mbmsrabEstablishmentIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsrabEstablishmentIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRABEstablishmentIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRABEstablishmentIndication, mbmsrabEstablishmentIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsrabEstablishmentIndication_ies_2,
+ memb_mbmsrabEstablishmentIndication_ies_constraint_1,
+ &asn_PER_memb_mbmsrabEstablishmentIndication_ies_constr_2,
+ 0,
+ "mbmsrabEstablishmentIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRABEstablishmentIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsrabEstablishmentIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRABEstablishmentIndication_specs_1 = {
+ sizeof(struct RANAP_MBMSRABEstablishmentIndication),
+ offsetof(struct RANAP_MBMSRABEstablishmentIndication, _asn_ctx),
+ asn_MAP_RANAP_MBMSRABEstablishmentIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABEstablishmentIndication = {
+ "RANAP_MBMSRABEstablishmentIndication",
+ "RANAP_MBMSRABEstablishmentIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABEstablishmentIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRABEstablishmentIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRABEstablishmentIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRABRelease.c b/src/ranap/RANAP_MBMSRABRelease.c
new file mode 100644
index 0000000..0ad3d80
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRABRelease.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRABRelease.h>
+
+static int
+memb_mbmsrabRelease_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsrabRelease_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsrabRelease_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsrabRelease_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsrabRelease_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsrabRelease_ies_specs_2 = {
+ sizeof(struct mbmsrabRelease_ies),
+ offsetof(struct mbmsrabRelease_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsrabRelease_ies_2 = {
+ "mbmsrabRelease-ies",
+ "mbmsrabRelease-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsrabRelease_ies_tags_2,
+ sizeof(asn_DEF_mbmsrabRelease_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabRelease_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsrabRelease_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsrabRelease_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabRelease_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsrabRelease_ies_constr_2,
+ asn_MBR_mbmsrabRelease_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsrabRelease_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRABRelease_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRABRelease, mbmsrabRelease_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsrabRelease_ies_2,
+ memb_mbmsrabRelease_ies_constraint_1,
+ &asn_PER_memb_mbmsrabRelease_ies_constr_2,
+ 0,
+ "mbmsrabRelease-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRABRelease_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRABRelease_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsrabRelease-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRABRelease_specs_1 = {
+ sizeof(struct RANAP_MBMSRABRelease),
+ offsetof(struct RANAP_MBMSRABRelease, _asn_ctx),
+ asn_MAP_RANAP_MBMSRABRelease_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABRelease = {
+ "RANAP_MBMSRABRelease",
+ "RANAP_MBMSRABRelease",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRABRelease_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRABRelease_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABRelease_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRABRelease_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRABRelease_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABRelease_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRABRelease_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRABRelease_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRABReleaseFailure.c b/src/ranap/RANAP_MBMSRABReleaseFailure.c
new file mode 100644
index 0000000..620c586
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRABReleaseFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRABReleaseFailure.h>
+
+static int
+memb_mbmsrabReleaseFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsrabReleaseFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsrabReleaseFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsrabReleaseFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsrabReleaseFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsrabReleaseFailure_ies_specs_2 = {
+ sizeof(struct mbmsrabReleaseFailure_ies),
+ offsetof(struct mbmsrabReleaseFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsrabReleaseFailure_ies_2 = {
+ "mbmsrabReleaseFailure-ies",
+ "mbmsrabReleaseFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsrabReleaseFailure_ies_tags_2,
+ sizeof(asn_DEF_mbmsrabReleaseFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabReleaseFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsrabReleaseFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsrabReleaseFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabReleaseFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsrabReleaseFailure_ies_constr_2,
+ asn_MBR_mbmsrabReleaseFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsrabReleaseFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRABReleaseFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRABReleaseFailure, mbmsrabReleaseFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsrabReleaseFailure_ies_2,
+ memb_mbmsrabReleaseFailure_ies_constraint_1,
+ &asn_PER_memb_mbmsrabReleaseFailure_ies_constr_2,
+ 0,
+ "mbmsrabReleaseFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRABReleaseFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsrabReleaseFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRABReleaseFailure_specs_1 = {
+ sizeof(struct RANAP_MBMSRABReleaseFailure),
+ offsetof(struct RANAP_MBMSRABReleaseFailure, _asn_ctx),
+ asn_MAP_RANAP_MBMSRABReleaseFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABReleaseFailure = {
+ "RANAP_MBMSRABReleaseFailure",
+ "RANAP_MBMSRABReleaseFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABReleaseFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRABReleaseFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRABReleaseFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRABReleaseRequest.c b/src/ranap/RANAP_MBMSRABReleaseRequest.c
new file mode 100644
index 0000000..07380e1
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRABReleaseRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRABReleaseRequest.h>
+
+static int
+memb_mbmsrabReleaseRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsrabReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsrabReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsrabReleaseRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsrabReleaseRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsrabReleaseRequest_ies_specs_2 = {
+ sizeof(struct mbmsrabReleaseRequest_ies),
+ offsetof(struct mbmsrabReleaseRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsrabReleaseRequest_ies_2 = {
+ "mbmsrabReleaseRequest-ies",
+ "mbmsrabReleaseRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsrabReleaseRequest_ies_tags_2,
+ sizeof(asn_DEF_mbmsrabReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabReleaseRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsrabReleaseRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsrabReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsrabReleaseRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsrabReleaseRequest_ies_constr_2,
+ asn_MBR_mbmsrabReleaseRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsrabReleaseRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRABReleaseRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRABReleaseRequest, mbmsrabReleaseRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsrabReleaseRequest_ies_2,
+ memb_mbmsrabReleaseRequest_ies_constraint_1,
+ &asn_PER_memb_mbmsrabReleaseRequest_ies_constr_2,
+ 0,
+ "mbmsrabReleaseRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRABReleaseRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsrabReleaseRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRABReleaseRequest_specs_1 = {
+ sizeof(struct RANAP_MBMSRABReleaseRequest),
+ offsetof(struct RANAP_MBMSRABReleaseRequest, _asn_ctx),
+ asn_MAP_RANAP_MBMSRABReleaseRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRABReleaseRequest = {
+ "RANAP_MBMSRABReleaseRequest",
+ "RANAP_MBMSRABReleaseRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRABReleaseRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRABReleaseRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRABReleaseRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRegistrationFailure.c b/src/ranap/RANAP_MBMSRegistrationFailure.c
new file mode 100644
index 0000000..63fb097
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRegistrationFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRegistrationFailure.h>
+
+static int
+memb_mbmsRegistrationFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsRegistrationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsRegistrationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsRegistrationFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsRegistrationFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsRegistrationFailure_ies_specs_2 = {
+ sizeof(struct mbmsRegistrationFailure_ies),
+ offsetof(struct mbmsRegistrationFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsRegistrationFailure_ies_2 = {
+ "mbmsRegistrationFailure-ies",
+ "mbmsRegistrationFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsRegistrationFailure_ies_tags_2,
+ sizeof(asn_DEF_mbmsRegistrationFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsRegistrationFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsRegistrationFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsRegistrationFailure_ies_constr_2,
+ asn_MBR_mbmsRegistrationFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsRegistrationFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRegistrationFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRegistrationFailure, mbmsRegistrationFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsRegistrationFailure_ies_2,
+ memb_mbmsRegistrationFailure_ies_constraint_1,
+ &asn_PER_memb_mbmsRegistrationFailure_ies_constr_2,
+ 0,
+ "mbmsRegistrationFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRegistrationFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRegistrationFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsRegistrationFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRegistrationFailure_specs_1 = {
+ sizeof(struct RANAP_MBMSRegistrationFailure),
+ offsetof(struct RANAP_MBMSRegistrationFailure, _asn_ctx),
+ asn_MAP_RANAP_MBMSRegistrationFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationFailure = {
+ "RANAP_MBMSRegistrationFailure",
+ "RANAP_MBMSRegistrationFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRegistrationFailure_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRegistrationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRegistrationFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRegistrationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRegistrationFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRegistrationFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRegistrationRequest.c b/src/ranap/RANAP_MBMSRegistrationRequest.c
new file mode 100644
index 0000000..568668e
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRegistrationRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRegistrationRequest.h>
+
+static int
+memb_mbmsRegistrationRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsRegistrationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsRegistrationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsRegistrationRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsRegistrationRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsRegistrationRequest_ies_specs_2 = {
+ sizeof(struct mbmsRegistrationRequest_ies),
+ offsetof(struct mbmsRegistrationRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsRegistrationRequest_ies_2 = {
+ "mbmsRegistrationRequest-ies",
+ "mbmsRegistrationRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsRegistrationRequest_ies_tags_2,
+ sizeof(asn_DEF_mbmsRegistrationRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsRegistrationRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsRegistrationRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsRegistrationRequest_ies_constr_2,
+ asn_MBR_mbmsRegistrationRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsRegistrationRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRegistrationRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRegistrationRequest, mbmsRegistrationRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsRegistrationRequest_ies_2,
+ memb_mbmsRegistrationRequest_ies_constraint_1,
+ &asn_PER_memb_mbmsRegistrationRequest_ies_constr_2,
+ 0,
+ "mbmsRegistrationRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRegistrationRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRegistrationRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsRegistrationRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRegistrationRequest_specs_1 = {
+ sizeof(struct RANAP_MBMSRegistrationRequest),
+ offsetof(struct RANAP_MBMSRegistrationRequest, _asn_ctx),
+ asn_MAP_RANAP_MBMSRegistrationRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationRequest = {
+ "RANAP_MBMSRegistrationRequest",
+ "RANAP_MBMSRegistrationRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRegistrationRequest_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRegistrationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRegistrationRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRegistrationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRegistrationRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRegistrationRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRegistrationRequestType.c b/src/ranap/RANAP_MBMSRegistrationRequestType.c
new file mode 100644
index 0000000..374698b
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRegistrationRequestType.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRegistrationRequestType.h>
+
+int
+RANAP_MBMSRegistrationRequestType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MBMSRegistrationRequestType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSRegistrationRequestType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSRegistrationRequestType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSRegistrationRequestType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSRegistrationRequestType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSRegistrationRequestType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSRegistrationRequestType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSRegistrationRequestType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSRegistrationRequestType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSRegistrationRequestType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSRegistrationRequestType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSRegistrationRequestType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MBMSRegistrationRequestType_value2enum_1[] = {
+ { 0, 8, "register" },
+ { 1, 10, "deregister" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MBMSRegistrationRequestType_enum2value_1[] = {
+ 1, /* deregister(1) */
+ 0 /* register(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MBMSRegistrationRequestType_specs_1 = {
+ asn_MAP_RANAP_MBMSRegistrationRequestType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MBMSRegistrationRequestType_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationRequestType = {
+ "RANAP_MBMSRegistrationRequestType",
+ "RANAP_MBMSRegistrationRequestType",
+ RANAP_MBMSRegistrationRequestType_free,
+ RANAP_MBMSRegistrationRequestType_print,
+ RANAP_MBMSRegistrationRequestType_constraint,
+ RANAP_MBMSRegistrationRequestType_decode_ber,
+ RANAP_MBMSRegistrationRequestType_encode_der,
+ RANAP_MBMSRegistrationRequestType_decode_xer,
+ RANAP_MBMSRegistrationRequestType_encode_xer,
+ RANAP_MBMSRegistrationRequestType_decode_uper,
+ RANAP_MBMSRegistrationRequestType_encode_uper,
+ RANAP_MBMSRegistrationRequestType_decode_aper,
+ RANAP_MBMSRegistrationRequestType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationRequestType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSRegistrationRequestType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MBMSRegistrationRequestType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSRegistrationResponse.c b/src/ranap/RANAP_MBMSRegistrationResponse.c
new file mode 100644
index 0000000..3302a3b
--- /dev/null
+++ b/src/ranap/RANAP_MBMSRegistrationResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSRegistrationResponse.h>
+
+static int
+memb_mbmsRegistrationResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsRegistrationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsRegistrationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsRegistrationResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsRegistrationResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsRegistrationResponse_ies_specs_2 = {
+ sizeof(struct mbmsRegistrationResponse_ies),
+ offsetof(struct mbmsRegistrationResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsRegistrationResponse_ies_2 = {
+ "mbmsRegistrationResponse-ies",
+ "mbmsRegistrationResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsRegistrationResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmsRegistrationResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsRegistrationResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsRegistrationResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsRegistrationResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsRegistrationResponse_ies_constr_2,
+ asn_MBR_mbmsRegistrationResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsRegistrationResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSRegistrationResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSRegistrationResponse, mbmsRegistrationResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsRegistrationResponse_ies_2,
+ memb_mbmsRegistrationResponse_ies_constraint_1,
+ &asn_PER_memb_mbmsRegistrationResponse_ies_constr_2,
+ 0,
+ "mbmsRegistrationResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSRegistrationResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSRegistrationResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsRegistrationResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSRegistrationResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSRegistrationResponse),
+ offsetof(struct RANAP_MBMSRegistrationResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSRegistrationResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSRegistrationResponse = {
+ "RANAP_MBMSRegistrationResponse",
+ "RANAP_MBMSRegistrationResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSRegistrationResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSRegistrationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSRegistrationResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSRegistrationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSRegistrationResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSRegistrationResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSRegistrationResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSServiceArea.c b/src/ranap/RANAP_MBMSServiceArea.c
new file mode 100644
index 0000000..eb0e118
--- /dev/null
+++ b/src/ranap/RANAP_MBMSServiceArea.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSServiceArea.h>
+
+int
+RANAP_MBMSServiceArea_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_MBMSServiceArea_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSServiceArea_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSServiceArea_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSServiceArea_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSServiceArea_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSServiceArea_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSServiceArea_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSServiceArea_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSServiceArea_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSServiceArea_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSServiceArea_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSServiceArea_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSServiceArea = {
+ "RANAP_MBMSServiceArea",
+ "RANAP_MBMSServiceArea",
+ RANAP_MBMSServiceArea_free,
+ RANAP_MBMSServiceArea_print,
+ RANAP_MBMSServiceArea_constraint,
+ RANAP_MBMSServiceArea_decode_ber,
+ RANAP_MBMSServiceArea_encode_der,
+ RANAP_MBMSServiceArea_decode_xer,
+ RANAP_MBMSServiceArea_encode_xer,
+ RANAP_MBMSServiceArea_decode_uper,
+ RANAP_MBMSServiceArea_encode_uper,
+ RANAP_MBMSServiceArea_decode_aper,
+ RANAP_MBMSServiceArea_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSServiceArea_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSServiceArea_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSServiceArea_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSServiceArea_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSServiceArea_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSServiceArea_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionDuration.c b/src/ranap/RANAP_MBMSSessionDuration.c
new file mode 100644
index 0000000..b36c222
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionDuration.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionDuration.h>
+
+int
+RANAP_MBMSSessionDuration_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_MBMSSessionDuration_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSSessionDuration_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionDuration_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionDuration_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionDuration_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionDuration_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionDuration_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionDuration_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionDuration_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionDuration_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionDuration_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSSessionDuration_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (SIZE(3..3)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionDuration_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionDuration = {
+ "RANAP_MBMSSessionDuration",
+ "RANAP_MBMSSessionDuration",
+ RANAP_MBMSSessionDuration_free,
+ RANAP_MBMSSessionDuration_print,
+ RANAP_MBMSSessionDuration_constraint,
+ RANAP_MBMSSessionDuration_decode_ber,
+ RANAP_MBMSSessionDuration_encode_der,
+ RANAP_MBMSSessionDuration_decode_xer,
+ RANAP_MBMSSessionDuration_encode_xer,
+ RANAP_MBMSSessionDuration_decode_uper,
+ RANAP_MBMSSessionDuration_encode_uper,
+ RANAP_MBMSSessionDuration_decode_aper,
+ RANAP_MBMSSessionDuration_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionDuration_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionDuration_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionDuration_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionDuration_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionDuration_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionDuration_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSSessionDuration_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionIdentity.c b/src/ranap/RANAP_MBMSSessionIdentity.c
new file mode 100644
index 0000000..72070cb
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionIdentity.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionIdentity.h>
+
+int
+RANAP_MBMSSessionIdentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_MBMSSessionIdentity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSSessionIdentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionIdentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionIdentity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionIdentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionIdentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionIdentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionIdentity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionIdentity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionIdentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionIdentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSSessionIdentity_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionIdentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionIdentity = {
+ "RANAP_MBMSSessionIdentity",
+ "RANAP_MBMSSessionIdentity",
+ RANAP_MBMSSessionIdentity_free,
+ RANAP_MBMSSessionIdentity_print,
+ RANAP_MBMSSessionIdentity_constraint,
+ RANAP_MBMSSessionIdentity_decode_ber,
+ RANAP_MBMSSessionIdentity_encode_der,
+ RANAP_MBMSSessionIdentity_decode_xer,
+ RANAP_MBMSSessionIdentity_encode_xer,
+ RANAP_MBMSSessionIdentity_decode_uper,
+ RANAP_MBMSSessionIdentity_encode_uper,
+ RANAP_MBMSSessionIdentity_decode_aper,
+ RANAP_MBMSSessionIdentity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionIdentity_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionIdentity_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionIdentity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionIdentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionIdentity_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionIdentity_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSSessionIdentity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionRepetitionNumber.c b/src/ranap/RANAP_MBMSSessionRepetitionNumber.c
new file mode 100644
index 0000000..a6c6ddf
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionRepetitionNumber.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionRepetitionNumber.h>
+
+int
+RANAP_MBMSSessionRepetitionNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_MBMSSessionRepetitionNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MBMSSessionRepetitionNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionRepetitionNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionRepetitionNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionRepetitionNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionRepetitionNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionRepetitionNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionRepetitionNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MBMSSessionRepetitionNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MBMSSessionRepetitionNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MBMSSessionRepetitionNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MBMSSessionRepetitionNumber_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionRepetitionNumber = {
+ "RANAP_MBMSSessionRepetitionNumber",
+ "RANAP_MBMSSessionRepetitionNumber",
+ RANAP_MBMSSessionRepetitionNumber_free,
+ RANAP_MBMSSessionRepetitionNumber_print,
+ RANAP_MBMSSessionRepetitionNumber_constraint,
+ RANAP_MBMSSessionRepetitionNumber_decode_ber,
+ RANAP_MBMSSessionRepetitionNumber_encode_der,
+ RANAP_MBMSSessionRepetitionNumber_decode_xer,
+ RANAP_MBMSSessionRepetitionNumber_encode_xer,
+ RANAP_MBMSSessionRepetitionNumber_decode_uper,
+ RANAP_MBMSSessionRepetitionNumber_encode_uper,
+ RANAP_MBMSSessionRepetitionNumber_decode_aper,
+ RANAP_MBMSSessionRepetitionNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionRepetitionNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MBMSSessionRepetitionNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionStart.c b/src/ranap/RANAP_MBMSSessionStart.c
new file mode 100644
index 0000000..d239766
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionStart.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionStart.h>
+
+static int
+memb_mbmsSessionStart_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionStart_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionStart_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionStart_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionStart_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionStart_ies_specs_2 = {
+ sizeof(struct mbmsSessionStart_ies),
+ offsetof(struct mbmsSessionStart_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionStart_ies_2 = {
+ "mbmsSessionStart-ies",
+ "mbmsSessionStart-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionStart_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionStart_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStart_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionStart_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionStart_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStart_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionStart_ies_constr_2,
+ asn_MBR_mbmsSessionStart_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionStart_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionStart_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionStart, mbmsSessionStart_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionStart_ies_2,
+ memb_mbmsSessionStart_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionStart_ies_constr_2,
+ 0,
+ "mbmsSessionStart-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionStart_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionStart_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionStart-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionStart_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionStart),
+ offsetof(struct RANAP_MBMSSessionStart, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionStart_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStart = {
+ "RANAP_MBMSSessionStart",
+ "RANAP_MBMSSessionStart",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionStart_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionStart_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStart_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionStart_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionStart_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStart_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionStart_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionStart_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionStartFailure.c b/src/ranap/RANAP_MBMSSessionStartFailure.c
new file mode 100644
index 0000000..3036fea
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionStartFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionStartFailure.h>
+
+static int
+memb_mbmsSessionStartFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionStartFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionStartFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionStartFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionStartFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionStartFailure_ies_specs_2 = {
+ sizeof(struct mbmsSessionStartFailure_ies),
+ offsetof(struct mbmsSessionStartFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionStartFailure_ies_2 = {
+ "mbmsSessionStartFailure-ies",
+ "mbmsSessionStartFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionStartFailure_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionStartFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStartFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionStartFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionStartFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStartFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionStartFailure_ies_constr_2,
+ asn_MBR_mbmsSessionStartFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionStartFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionStartFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionStartFailure, mbmsSessionStartFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionStartFailure_ies_2,
+ memb_mbmsSessionStartFailure_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionStartFailure_ies_constr_2,
+ 0,
+ "mbmsSessionStartFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionStartFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionStartFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionStartFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionStartFailure_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionStartFailure),
+ offsetof(struct RANAP_MBMSSessionStartFailure, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionStartFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStartFailure = {
+ "RANAP_MBMSSessionStartFailure",
+ "RANAP_MBMSSessionStartFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionStartFailure_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionStartFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStartFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionStartFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionStartFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStartFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionStartFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionStartFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionStartResponse.c b/src/ranap/RANAP_MBMSSessionStartResponse.c
new file mode 100644
index 0000000..79c9d74
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionStartResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionStartResponse.h>
+
+static int
+memb_mbmsSessionStartResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionStartResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionStartResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionStartResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionStartResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionStartResponse_ies_specs_2 = {
+ sizeof(struct mbmsSessionStartResponse_ies),
+ offsetof(struct mbmsSessionStartResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionStartResponse_ies_2 = {
+ "mbmsSessionStartResponse-ies",
+ "mbmsSessionStartResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionStartResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionStartResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStartResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionStartResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionStartResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStartResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionStartResponse_ies_constr_2,
+ asn_MBR_mbmsSessionStartResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionStartResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionStartResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionStartResponse, mbmsSessionStartResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionStartResponse_ies_2,
+ memb_mbmsSessionStartResponse_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionStartResponse_ies_constr_2,
+ 0,
+ "mbmsSessionStartResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionStartResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionStartResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionStartResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionStartResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionStartResponse),
+ offsetof(struct RANAP_MBMSSessionStartResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionStartResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStartResponse = {
+ "RANAP_MBMSSessionStartResponse",
+ "RANAP_MBMSSessionStartResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionStartResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionStartResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStartResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionStartResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionStartResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStartResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionStartResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionStartResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionStop.c b/src/ranap/RANAP_MBMSSessionStop.c
new file mode 100644
index 0000000..a812966
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionStop.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionStop.h>
+
+static int
+memb_mbmsSessionStop_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionStop_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionStop_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionStop_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionStop_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionStop_ies_specs_2 = {
+ sizeof(struct mbmsSessionStop_ies),
+ offsetof(struct mbmsSessionStop_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionStop_ies_2 = {
+ "mbmsSessionStop-ies",
+ "mbmsSessionStop-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionStop_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionStop_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStop_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionStop_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionStop_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStop_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionStop_ies_constr_2,
+ asn_MBR_mbmsSessionStop_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionStop_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionStop_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionStop, mbmsSessionStop_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionStop_ies_2,
+ memb_mbmsSessionStop_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionStop_ies_constr_2,
+ 0,
+ "mbmsSessionStop-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionStop_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionStop_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionStop-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionStop_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionStop),
+ offsetof(struct RANAP_MBMSSessionStop, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionStop_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStop = {
+ "RANAP_MBMSSessionStop",
+ "RANAP_MBMSSessionStop",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionStop_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionStop_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStop_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionStop_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionStop_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStop_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionStop_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionStop_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionStopResponse.c b/src/ranap/RANAP_MBMSSessionStopResponse.c
new file mode 100644
index 0000000..8ce2bdf
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionStopResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionStopResponse.h>
+
+static int
+memb_mbmsSessionStopResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionStopResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionStopResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionStopResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionStopResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionStopResponse_ies_specs_2 = {
+ sizeof(struct mbmsSessionStopResponse_ies),
+ offsetof(struct mbmsSessionStopResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionStopResponse_ies_2 = {
+ "mbmsSessionStopResponse-ies",
+ "mbmsSessionStopResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionStopResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionStopResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStopResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionStopResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionStopResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionStopResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionStopResponse_ies_constr_2,
+ asn_MBR_mbmsSessionStopResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionStopResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionStopResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionStopResponse, mbmsSessionStopResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionStopResponse_ies_2,
+ memb_mbmsSessionStopResponse_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionStopResponse_ies_constr_2,
+ 0,
+ "mbmsSessionStopResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionStopResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionStopResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionStopResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionStopResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionStopResponse),
+ offsetof(struct RANAP_MBMSSessionStopResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionStopResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionStopResponse = {
+ "RANAP_MBMSSessionStopResponse",
+ "RANAP_MBMSSessionStopResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionStopResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionStopResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStopResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionStopResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionStopResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionStopResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionStopResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionStopResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionUpdate.c b/src/ranap/RANAP_MBMSSessionUpdate.c
new file mode 100644
index 0000000..d246b4a
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionUpdate.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionUpdate.h>
+
+static int
+memb_mbmsSessionUpdate_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionUpdate_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionUpdate_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionUpdate_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionUpdate_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionUpdate_ies_specs_2 = {
+ sizeof(struct mbmsSessionUpdate_ies),
+ offsetof(struct mbmsSessionUpdate_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionUpdate_ies_2 = {
+ "mbmsSessionUpdate-ies",
+ "mbmsSessionUpdate-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionUpdate_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionUpdate_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdate_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionUpdate_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionUpdate_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdate_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionUpdate_ies_constr_2,
+ asn_MBR_mbmsSessionUpdate_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionUpdate_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionUpdate_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdate, mbmsSessionUpdate_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionUpdate_ies_2,
+ memb_mbmsSessionUpdate_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionUpdate_ies_constr_2,
+ 0,
+ "mbmsSessionUpdate-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionUpdate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionUpdate_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionUpdate-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionUpdate_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionUpdate),
+ offsetof(struct RANAP_MBMSSessionUpdate, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionUpdate_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdate = {
+ "RANAP_MBMSSessionUpdate",
+ "RANAP_MBMSSessionUpdate",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionUpdate_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdate_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionUpdate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdate_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdate_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionUpdate_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionUpdate_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionUpdateFailure.c b/src/ranap/RANAP_MBMSSessionUpdateFailure.c
new file mode 100644
index 0000000..5940672
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionUpdateFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionUpdateFailure.h>
+
+static int
+memb_mbmsSessionUpdateFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionUpdateFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionUpdateFailure_ies_specs_2 = {
+ sizeof(struct mbmsSessionUpdateFailure_ies),
+ offsetof(struct mbmsSessionUpdateFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionUpdateFailure_ies_2 = {
+ "mbmsSessionUpdateFailure-ies",
+ "mbmsSessionUpdateFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionUpdateFailure_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionUpdateFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionUpdateFailure_ies_constr_2,
+ asn_MBR_mbmsSessionUpdateFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionUpdateFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionUpdateFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateFailure, mbmsSessionUpdateFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionUpdateFailure_ies_2,
+ memb_mbmsSessionUpdateFailure_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionUpdateFailure_ies_constr_2,
+ 0,
+ "mbmsSessionUpdateFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionUpdateFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionUpdateFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionUpdateFailure_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionUpdateFailure),
+ offsetof(struct RANAP_MBMSSessionUpdateFailure, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionUpdateFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdateFailure = {
+ "RANAP_MBMSSessionUpdateFailure",
+ "RANAP_MBMSSessionUpdateFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionUpdateFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionUpdateFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSessionUpdateResponse.c b/src/ranap/RANAP_MBMSSessionUpdateResponse.c
new file mode 100644
index 0000000..5aa7eae
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSessionUpdateResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSessionUpdateResponse.h>
+
+static int
+memb_mbmsSessionUpdateResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsSessionUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsSessionUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsSessionUpdateResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionUpdateResponse_ies_specs_2 = {
+ sizeof(struct mbmsSessionUpdateResponse_ies),
+ offsetof(struct mbmsSessionUpdateResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionUpdateResponse_ies_2 = {
+ "mbmsSessionUpdateResponse-ies",
+ "mbmsSessionUpdateResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsSessionUpdateResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsSessionUpdateResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsSessionUpdateResponse_ies_constr_2,
+ asn_MBR_mbmsSessionUpdateResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsSessionUpdateResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionUpdateResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateResponse, mbmsSessionUpdateResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsSessionUpdateResponse_ies_2,
+ memb_mbmsSessionUpdateResponse_ies_constraint_1,
+ &asn_PER_memb_mbmsSessionUpdateResponse_ies_constr_2,
+ 0,
+ "mbmsSessionUpdateResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionUpdateResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionUpdateResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionUpdateResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSSessionUpdateResponse),
+ offsetof(struct RANAP_MBMSSessionUpdateResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSSessionUpdateResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSessionUpdateResponse = {
+ "RANAP_MBMSSessionUpdateResponse",
+ "RANAP_MBMSSessionUpdateResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSessionUpdateResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSSessionUpdateResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSSynchronisationInformation.c b/src/ranap/RANAP_MBMSSynchronisationInformation.c
new file mode 100644
index 0000000..2296501
--- /dev/null
+++ b/src/ranap/RANAP_MBMSSynchronisationInformation.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSSynchronisationInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSSynchronisationInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSynchronisationInformation, mBMSHCIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MBMSHCIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mBMSHCIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSynchronisationInformation, iPMulticastAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IPMulticastAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iPMulticastAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSynchronisationInformation, gTPDLTEID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GTP_TEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gTPDLTEID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_MBMSSynchronisationInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_MBMSSynchronisationInformation_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSynchronisationInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mBMSHCIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iPMulticastAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTPDLTEID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSynchronisationInformation_specs_1 = {
+ sizeof(struct RANAP_MBMSSynchronisationInformation),
+ offsetof(struct RANAP_MBMSSynchronisationInformation, _asn_ctx),
+ asn_MAP_RANAP_MBMSSynchronisationInformation_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_MBMSSynchronisationInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSSynchronisationInformation = {
+ "RANAP_MBMSSynchronisationInformation",
+ "RANAP_MBMSSynchronisationInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSSynchronisationInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSSynchronisationInformation_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_MBMSSynchronisationInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSUELinkingRequest.c b/src/ranap/RANAP_MBMSUELinkingRequest.c
new file mode 100644
index 0000000..157d62b
--- /dev/null
+++ b/src/ranap/RANAP_MBMSUELinkingRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSUELinkingRequest.h>
+
+static int
+memb_mbmsueLinkingRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsueLinkingRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsueLinkingRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsueLinkingRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsueLinkingRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsueLinkingRequest_ies_specs_2 = {
+ sizeof(struct mbmsueLinkingRequest_ies),
+ offsetof(struct mbmsueLinkingRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsueLinkingRequest_ies_2 = {
+ "mbmsueLinkingRequest-ies",
+ "mbmsueLinkingRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsueLinkingRequest_ies_tags_2,
+ sizeof(asn_DEF_mbmsueLinkingRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsueLinkingRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsueLinkingRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsueLinkingRequest_ies_tags_2)
+ /sizeof(asn_DEF_mbmsueLinkingRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsueLinkingRequest_ies_constr_2,
+ asn_MBR_mbmsueLinkingRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsueLinkingRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSUELinkingRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSUELinkingRequest, mbmsueLinkingRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsueLinkingRequest_ies_2,
+ memb_mbmsueLinkingRequest_ies_constraint_1,
+ &asn_PER_memb_mbmsueLinkingRequest_ies_constr_2,
+ 0,
+ "mbmsueLinkingRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSUELinkingRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSUELinkingRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsueLinkingRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSUELinkingRequest_specs_1 = {
+ sizeof(struct RANAP_MBMSUELinkingRequest),
+ offsetof(struct RANAP_MBMSUELinkingRequest, _asn_ctx),
+ asn_MAP_RANAP_MBMSUELinkingRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSUELinkingRequest = {
+ "RANAP_MBMSUELinkingRequest",
+ "RANAP_MBMSUELinkingRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSUELinkingRequest_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSUELinkingRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSUELinkingRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSUELinkingRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSUELinkingRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSUELinkingRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSUELinkingRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSUELinkingRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MBMSUELinkingResponse.c b/src/ranap/RANAP_MBMSUELinkingResponse.c
new file mode 100644
index 0000000..49a8cf1
--- /dev/null
+++ b/src/ranap/RANAP_MBMSUELinkingResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MBMSUELinkingResponse.h>
+
+static int
+memb_mbmsueLinkingResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_mbmsueLinkingResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_mbmsueLinkingResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_mbmsueLinkingResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_mbmsueLinkingResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mbmsueLinkingResponse_ies_specs_2 = {
+ sizeof(struct mbmsueLinkingResponse_ies),
+ offsetof(struct mbmsueLinkingResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mbmsueLinkingResponse_ies_2 = {
+ "mbmsueLinkingResponse-ies",
+ "mbmsueLinkingResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_mbmsueLinkingResponse_ies_tags_2,
+ sizeof(asn_DEF_mbmsueLinkingResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsueLinkingResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_mbmsueLinkingResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_mbmsueLinkingResponse_ies_tags_2)
+ /sizeof(asn_DEF_mbmsueLinkingResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_mbmsueLinkingResponse_ies_constr_2,
+ asn_MBR_mbmsueLinkingResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_mbmsueLinkingResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSUELinkingResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSUELinkingResponse, mbmsueLinkingResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_mbmsueLinkingResponse_ies_2,
+ memb_mbmsueLinkingResponse_ies_constraint_1,
+ &asn_PER_memb_mbmsueLinkingResponse_ies_constr_2,
+ 0,
+ "mbmsueLinkingResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSUELinkingResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSUELinkingResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsueLinkingResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSUELinkingResponse_specs_1 = {
+ sizeof(struct RANAP_MBMSUELinkingResponse),
+ offsetof(struct RANAP_MBMSUELinkingResponse, _asn_ctx),
+ asn_MAP_RANAP_MBMSUELinkingResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSUELinkingResponse = {
+ "RANAP_MBMSUELinkingResponse",
+ "RANAP_MBMSUELinkingResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MBMSUELinkingResponse_tags_1,
+ sizeof(asn_DEF_RANAP_MBMSUELinkingResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSUELinkingResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MBMSUELinkingResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MBMSUELinkingResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_MBMSUELinkingResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MBMSUELinkingResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_MBMSUELinkingResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDT-Activation.c b/src/ranap/RANAP_MDT-Activation.c
new file mode 100644
index 0000000..7412f7b
--- /dev/null
+++ b/src/ranap/RANAP_MDT-Activation.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDT-Activation.h>
+
+int
+RANAP_MDT_Activation_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MDT_Activation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MDT_Activation_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MDT_Activation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MDT_Activation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MDT_Activation_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MDT_Activation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MDT_Activation_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MDT_Activation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MDT_Activation_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MDT_Activation_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MDT_Activation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MDT_Activation_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MDT_Activation_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MDT_Activation_value2enum_1[] = {
+ { 0, 16, "immediateMDTonly" },
+ { 1, 13, "loggedMDTonly" },
+ { 2, 20, "immediateMDTandTrace" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MDT_Activation_enum2value_1[] = {
+ 2, /* immediateMDTandTrace(2) */
+ 0, /* immediateMDTonly(0) */
+ 1 /* loggedMDTonly(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MDT_Activation_specs_1 = {
+ asn_MAP_RANAP_MDT_Activation_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MDT_Activation_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MDT_Activation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Activation = {
+ "RANAP_MDT-Activation",
+ "RANAP_MDT-Activation",
+ RANAP_MDT_Activation_free,
+ RANAP_MDT_Activation_print,
+ RANAP_MDT_Activation_constraint,
+ RANAP_MDT_Activation_decode_ber,
+ RANAP_MDT_Activation_encode_der,
+ RANAP_MDT_Activation_decode_xer,
+ RANAP_MDT_Activation_encode_xer,
+ RANAP_MDT_Activation_decode_uper,
+ RANAP_MDT_Activation_encode_uper,
+ RANAP_MDT_Activation_decode_aper,
+ RANAP_MDT_Activation_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MDT_Activation_tags_1,
+ sizeof(asn_DEF_RANAP_MDT_Activation_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Activation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MDT_Activation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MDT_Activation_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Activation_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MDT_Activation_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MDT_Activation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDT-Configuration.c b/src/ranap/RANAP_MDT-Configuration.c
new file mode 100644
index 0000000..9d532c4
--- /dev/null
+++ b/src/ranap/RANAP_MDT-Configuration.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDT-Configuration.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_MDT_Configuration_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDT_Configuration, mdtActivation),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MDT_Activation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mdtActivation"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDT_Configuration, mdtAreaScope),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_MDTAreaScope,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mdtAreaScope"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDT_Configuration, mdtMode),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_MDTMode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "mdtMode"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_MDT_Configuration, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_MDT_Configuration_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_MDT_Configuration_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MDT_Configuration_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mdtActivation */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mdtAreaScope */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mdtMode */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MDT_Configuration_specs_1 = {
+ sizeof(struct RANAP_MDT_Configuration),
+ offsetof(struct RANAP_MDT_Configuration, _asn_ctx),
+ asn_MAP_RANAP_MDT_Configuration_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_MDT_Configuration_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Configuration = {
+ "RANAP_MDT-Configuration",
+ "RANAP_MDT-Configuration",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MDT_Configuration_tags_1,
+ sizeof(asn_DEF_RANAP_MDT_Configuration_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Configuration_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MDT_Configuration_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MDT_Configuration_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Configuration_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MDT_Configuration_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_MDT_Configuration_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDT-PLMN-List.c b/src/ranap/RANAP_MDT-PLMN-List.c
new file mode 100644
index 0000000..ef69ec3
--- /dev/null
+++ b/src/ranap/RANAP_MDT-PLMN-List.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDT-PLMN-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_MDT_PLMN_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_MDT_PLMN_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MDT_PLMN_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_MDT_PLMN_List_specs_1 = {
+ sizeof(struct RANAP_MDT_PLMN_List),
+ offsetof(struct RANAP_MDT_PLMN_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_PLMN_List = {
+ "RANAP_MDT-PLMN-List",
+ "RANAP_MDT-PLMN-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MDT_PLMN_List_tags_1,
+ sizeof(asn_DEF_RANAP_MDT_PLMN_List_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_PLMN_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MDT_PLMN_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MDT_PLMN_List_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_PLMN_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MDT_PLMN_List_constr_1,
+ asn_MBR_RANAP_MDT_PLMN_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_MDT_PLMN_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDT-Report-Parameters.c b/src/ranap/RANAP_MDT-Report-Parameters.c
new file mode 100644
index 0000000..0b2b193
--- /dev/null
+++ b/src/ranap/RANAP_MDT-Report-Parameters.c
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDT-Report-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_MDT_Report_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDT_Report_Parameters, reportInterval),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ReportInterval,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "reportInterval"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDT_Report_Parameters, reportAmount),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ReportAmount,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "reportAmount"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MDT_Report_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MDT_Report_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportInterval */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportAmount */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MDT_Report_Parameters_specs_1 = {
+ sizeof(struct RANAP_MDT_Report_Parameters),
+ offsetof(struct RANAP_MDT_Report_Parameters, _asn_ctx),
+ asn_MAP_RANAP_MDT_Report_Parameters_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDT_Report_Parameters = {
+ "RANAP_MDT-Report-Parameters",
+ "RANAP_MDT-Report-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MDT_Report_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_MDT_Report_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Report_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MDT_Report_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MDT_Report_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_MDT_Report_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_MDT_Report_Parameters_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_MDT_Report_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDTAreaScope.c b/src/ranap/RANAP_MDTAreaScope.c
new file mode 100644
index 0000000..c0daddf
--- /dev/null
+++ b/src/ranap/RANAP_MDTAreaScope.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDTAreaScope.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_MDTAreaScope_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_MDTAreaScope_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTAreaScope, choice.cellbased),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CellBased,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellbased"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTAreaScope, choice.labased),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LABased,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "labased"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTAreaScope, choice.rabased),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RABased,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rabased"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTAreaScope, choice.plmn_area_based),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NULL,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "plmn-area-based"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MDTAreaScope_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellbased */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* labased */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rabased */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* plmn-area-based */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_MDTAreaScope_specs_1 = {
+ sizeof(struct RANAP_MDTAreaScope),
+ offsetof(struct RANAP_MDTAreaScope, _asn_ctx),
+ offsetof(struct RANAP_MDTAreaScope, present),
+ sizeof(((struct RANAP_MDTAreaScope *)0)->present),
+ asn_MAP_RANAP_MDTAreaScope_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDTAreaScope = {
+ "RANAP_MDTAreaScope",
+ "RANAP_MDTAreaScope",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_MDTAreaScope_constr_1,
+ asn_MBR_RANAP_MDTAreaScope_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_MDTAreaScope_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MDTMode.c b/src/ranap/RANAP_MDTMode.c
new file mode 100644
index 0000000..9ef4883
--- /dev/null
+++ b/src/ranap/RANAP_MDTMode.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MDTMode.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_MDTMode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_MDTMode_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTMode, choice.immediateMDT),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ImmediateMDT,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "immediateMDT"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_MDTMode, choice.loggedMDT),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LoggedMDT,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "loggedMDT"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MDTMode_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* immediateMDT */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* loggedMDT */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_MDTMode_specs_1 = {
+ sizeof(struct RANAP_MDTMode),
+ offsetof(struct RANAP_MDTMode, _asn_ctx),
+ offsetof(struct RANAP_MDTMode, present),
+ sizeof(((struct RANAP_MDTMode *)0)->present),
+ asn_MAP_RANAP_MDTMode_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MDTMode = {
+ "RANAP_MDTMode",
+ "RANAP_MDTMode",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_MDTMode_constr_1,
+ asn_MBR_RANAP_MDTMode_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_MDTMode_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MSISDN.c b/src/ranap/RANAP_MSISDN.c
new file mode 100644
index 0000000..b0c358d
--- /dev/null
+++ b/src/ranap/RANAP_MSISDN.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MSISDN.h>
+
+int
+RANAP_MSISDN_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 9l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MSISDN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_MSISDN_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MSISDN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MSISDN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MSISDN_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MSISDN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MSISDN_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MSISDN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MSISDN_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MSISDN_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MSISDN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MSISDN_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MSISDN_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 9l } /* (SIZE(1..9)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MSISDN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MSISDN = {
+ "RANAP_MSISDN",
+ "RANAP_MSISDN",
+ RANAP_MSISDN_free,
+ RANAP_MSISDN_print,
+ RANAP_MSISDN_constraint,
+ RANAP_MSISDN_decode_ber,
+ RANAP_MSISDN_encode_der,
+ RANAP_MSISDN_decode_xer,
+ RANAP_MSISDN_encode_xer,
+ RANAP_MSISDN_decode_uper,
+ RANAP_MSISDN_encode_uper,
+ RANAP_MSISDN_decode_aper,
+ RANAP_MSISDN_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MSISDN_tags_1,
+ sizeof(asn_DEF_RANAP_MSISDN_tags_1)
+ /sizeof(asn_DEF_RANAP_MSISDN_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MSISDN_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MSISDN_tags_1)
+ /sizeof(asn_DEF_RANAP_MSISDN_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MSISDN_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Management-Based-MDT-Allowed.c b/src/ranap/RANAP_Management-Based-MDT-Allowed.c
new file mode 100644
index 0000000..a6832a5
--- /dev/null
+++ b/src/ranap/RANAP_Management-Based-MDT-Allowed.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Management-Based-MDT-Allowed.h>
+
+int
+RANAP_Management_Based_MDT_Allowed_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Management_Based_MDT_Allowed_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Management_Based_MDT_Allowed_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Management_Based_MDT_Allowed_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Management_Based_MDT_Allowed_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Management_Based_MDT_Allowed_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Management_Based_MDT_Allowed_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Management_Based_MDT_Allowed_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Management_Based_MDT_Allowed_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Management_Based_MDT_Allowed_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Management_Based_MDT_Allowed_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Management_Based_MDT_Allowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Management_Based_MDT_Allowed_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Management_Based_MDT_Allowed_value2enum_1[] = {
+ { 0, 7, "allowed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Management_Based_MDT_Allowed_enum2value_1[] = {
+ 0 /* allowed(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Management_Based_MDT_Allowed_specs_1 = {
+ asn_MAP_RANAP_Management_Based_MDT_Allowed_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Management_Based_MDT_Allowed_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Management_Based_MDT_Allowed = {
+ "RANAP_Management-Based-MDT-Allowed",
+ "RANAP_Management-Based-MDT-Allowed",
+ RANAP_Management_Based_MDT_Allowed_free,
+ RANAP_Management_Based_MDT_Allowed_print,
+ RANAP_Management_Based_MDT_Allowed_constraint,
+ RANAP_Management_Based_MDT_Allowed_decode_ber,
+ RANAP_Management_Based_MDT_Allowed_encode_der,
+ RANAP_Management_Based_MDT_Allowed_decode_xer,
+ RANAP_Management_Based_MDT_Allowed_encode_xer,
+ RANAP_Management_Based_MDT_Allowed_decode_uper,
+ RANAP_Management_Based_MDT_Allowed_encode_uper,
+ RANAP_Management_Based_MDT_Allowed_decode_aper,
+ RANAP_Management_Based_MDT_Allowed_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1,
+ sizeof(asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1)
+ /sizeof(asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1)
+ /sizeof(asn_DEF_RANAP_Management_Based_MDT_Allowed_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Management_Based_MDT_Allowed_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Management_Based_MDT_Allowed_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MaxBitrate.c b/src/ranap/RANAP_MaxBitrate.c
new file mode 100644
index 0000000..7b37b4a
--- /dev/null
+++ b/src/ranap/RANAP_MaxBitrate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+
+int
+RANAP_MaxBitrate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 16000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MaxBitrate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_MaxBitrate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MaxBitrate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxBitrate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MaxBitrate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxBitrate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MaxBitrate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxBitrate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MaxBitrate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MaxBitrate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MaxBitrate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MaxBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MaxBitrate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 24, -1, 1l, 16000000l } /* (1..16000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MaxBitrate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MaxBitrate = {
+ "RANAP_MaxBitrate",
+ "RANAP_MaxBitrate",
+ RANAP_MaxBitrate_free,
+ RANAP_MaxBitrate_print,
+ RANAP_MaxBitrate_constraint,
+ RANAP_MaxBitrate_decode_ber,
+ RANAP_MaxBitrate_encode_der,
+ RANAP_MaxBitrate_decode_xer,
+ RANAP_MaxBitrate_encode_xer,
+ RANAP_MaxBitrate_decode_uper,
+ RANAP_MaxBitrate_encode_uper,
+ RANAP_MaxBitrate_decode_aper,
+ RANAP_MaxBitrate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MaxBitrate_tags_1,
+ sizeof(asn_DEF_RANAP_MaxBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_MaxBitrate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MaxBitrate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MaxBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_MaxBitrate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MaxBitrate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MaxSDU-Size.c b/src/ranap/RANAP_MaxSDU-Size.c
new file mode 100644
index 0000000..963ec54
--- /dev/null
+++ b/src/ranap/RANAP_MaxSDU-Size.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MaxSDU-Size.h>
+
+int
+RANAP_MaxSDU_Size_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 32768l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_MaxSDU_Size_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MaxSDU_Size_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxSDU_Size_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MaxSDU_Size_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxSDU_Size_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MaxSDU_Size_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MaxSDU_Size_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MaxSDU_Size_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MaxSDU_Size_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MaxSDU_Size_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MaxSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MaxSDU_Size_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 32768l } /* (0..32768) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MaxSDU_Size_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MaxSDU_Size = {
+ "RANAP_MaxSDU-Size",
+ "RANAP_MaxSDU-Size",
+ RANAP_MaxSDU_Size_free,
+ RANAP_MaxSDU_Size_print,
+ RANAP_MaxSDU_Size_constraint,
+ RANAP_MaxSDU_Size_decode_ber,
+ RANAP_MaxSDU_Size_encode_der,
+ RANAP_MaxSDU_Size_decode_xer,
+ RANAP_MaxSDU_Size_encode_xer,
+ RANAP_MaxSDU_Size_decode_uper,
+ RANAP_MaxSDU_Size_encode_uper,
+ RANAP_MaxSDU_Size_decode_aper,
+ RANAP_MaxSDU_Size_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MaxSDU_Size_tags_1,
+ sizeof(asn_DEF_RANAP_MaxSDU_Size_tags_1)
+ /sizeof(asn_DEF_RANAP_MaxSDU_Size_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MaxSDU_Size_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MaxSDU_Size_tags_1)
+ /sizeof(asn_DEF_RANAP_MaxSDU_Size_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MaxSDU_Size_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MeasBand.c b/src/ranap/RANAP_MeasBand.c
new file mode 100644
index 0000000..550c847
--- /dev/null
+++ b/src/ranap/RANAP_MeasBand.c
@@ -0,0 +1,173 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MeasBand.h>
+
+int
+RANAP_MeasBand_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MeasBand_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MeasBand_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MeasBand_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasBand_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MeasBand_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasBand_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MeasBand_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasBand_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MeasBand_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MeasBand_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MeasBand_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasBand_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MeasBand_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 0l, 5l } /* (0..5) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MeasBand_value2enum_1[] = {
+ { 0, 2, "v6" },
+ { 1, 3, "v15" },
+ { 2, 3, "v25" },
+ { 3, 3, "v50" },
+ { 4, 3, "v75" },
+ { 5, 4, "v100" }
+};
+static const unsigned int asn_MAP_RANAP_MeasBand_enum2value_1[] = {
+ 5, /* v100(5) */
+ 1, /* v15(1) */
+ 2, /* v25(2) */
+ 3, /* v50(3) */
+ 0, /* v6(0) */
+ 4 /* v75(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MeasBand_specs_1 = {
+ asn_MAP_RANAP_MeasBand_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MeasBand_enum2value_1, /* N => "tag"; sorted by N */
+ 6, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MeasBand_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MeasBand = {
+ "RANAP_MeasBand",
+ "RANAP_MeasBand",
+ RANAP_MeasBand_free,
+ RANAP_MeasBand_print,
+ RANAP_MeasBand_constraint,
+ RANAP_MeasBand_decode_ber,
+ RANAP_MeasBand_encode_der,
+ RANAP_MeasBand_decode_xer,
+ RANAP_MeasBand_encode_xer,
+ RANAP_MeasBand_decode_uper,
+ RANAP_MeasBand_encode_uper,
+ RANAP_MeasBand_decode_aper,
+ RANAP_MeasBand_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MeasBand_tags_1,
+ sizeof(asn_DEF_RANAP_MeasBand_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasBand_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MeasBand_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MeasBand_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasBand_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MeasBand_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MeasBand_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MeasurementQuantity.c b/src/ranap/RANAP_MeasurementQuantity.c
new file mode 100644
index 0000000..b2ed847
--- /dev/null
+++ b/src/ranap/RANAP_MeasurementQuantity.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MeasurementQuantity.h>
+
+int
+RANAP_MeasurementQuantity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_MeasurementQuantity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MeasurementQuantity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementQuantity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementQuantity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementQuantity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementQuantity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementQuantity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementQuantity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementQuantity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementQuantity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasurementQuantity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MeasurementQuantity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_MeasurementQuantity_value2enum_1[] = {
+ { 0, 9, "cpichEcNo" },
+ { 1, 9, "cpichRSCP" },
+ { 2, 8, "pathloss" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_MeasurementQuantity_enum2value_1[] = {
+ 0, /* cpichEcNo(0) */
+ 1, /* cpichRSCP(1) */
+ 2 /* pathloss(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_MeasurementQuantity_specs_1 = {
+ asn_MAP_RANAP_MeasurementQuantity_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_MeasurementQuantity_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MeasurementQuantity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MeasurementQuantity = {
+ "RANAP_MeasurementQuantity",
+ "RANAP_MeasurementQuantity",
+ RANAP_MeasurementQuantity_free,
+ RANAP_MeasurementQuantity_print,
+ RANAP_MeasurementQuantity_constraint,
+ RANAP_MeasurementQuantity_decode_ber,
+ RANAP_MeasurementQuantity_encode_der,
+ RANAP_MeasurementQuantity_decode_xer,
+ RANAP_MeasurementQuantity_encode_xer,
+ RANAP_MeasurementQuantity_decode_uper,
+ RANAP_MeasurementQuantity_encode_uper,
+ RANAP_MeasurementQuantity_decode_aper,
+ RANAP_MeasurementQuantity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MeasurementQuantity_tags_1,
+ sizeof(asn_DEF_RANAP_MeasurementQuantity_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasurementQuantity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MeasurementQuantity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MeasurementQuantity_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasurementQuantity_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MeasurementQuantity_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_MeasurementQuantity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_MeasurementsToActivate.c b/src/ranap/RANAP_MeasurementsToActivate.c
new file mode 100644
index 0000000..c44f5a5
--- /dev/null
+++ b/src/ranap/RANAP_MeasurementsToActivate.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MeasurementsToActivate.h>
+
+int
+RANAP_MeasurementsToActivate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_MeasurementsToActivate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_MeasurementsToActivate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementsToActivate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementsToActivate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementsToActivate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementsToActivate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementsToActivate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementsToActivate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_MeasurementsToActivate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_MeasurementsToActivate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_MeasurementsToActivate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_MeasurementsToActivate_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MeasurementsToActivate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MeasurementsToActivate = {
+ "RANAP_MeasurementsToActivate",
+ "RANAP_MeasurementsToActivate",
+ RANAP_MeasurementsToActivate_free,
+ RANAP_MeasurementsToActivate_print,
+ RANAP_MeasurementsToActivate_constraint,
+ RANAP_MeasurementsToActivate_decode_ber,
+ RANAP_MeasurementsToActivate_encode_der,
+ RANAP_MeasurementsToActivate_decode_xer,
+ RANAP_MeasurementsToActivate_encode_xer,
+ RANAP_MeasurementsToActivate_decode_uper,
+ RANAP_MeasurementsToActivate_encode_uper,
+ RANAP_MeasurementsToActivate_decode_aper,
+ RANAP_MeasurementsToActivate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MeasurementsToActivate_tags_1,
+ sizeof(asn_DEF_RANAP_MeasurementsToActivate_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasurementsToActivate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MeasurementsToActivate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MeasurementsToActivate_tags_1)
+ /sizeof(asn_DEF_RANAP_MeasurementsToActivate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MeasurementsToActivate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_MessageStructure.c b/src/ranap/RANAP_MessageStructure.c
new file mode 100644
index 0000000..92dab9d
--- /dev/null
+++ b/src/ranap/RANAP_MessageStructure.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_MessageStructure.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_MessageStructure_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberL_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberL, iE_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberL, repetitionNumber),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RepetitionNumber1,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "repetitionNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberL, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberL_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MemberL_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberL_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iE-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* repetitionNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberL_specs_2 = {
+ sizeof(struct MemberL),
+ offsetof(struct MemberL, _asn_ctx),
+ asn_MAP_MemberL_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberL_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberL_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberL_tags_2,
+ sizeof(asn_DEF_MemberL_tags_2)
+ /sizeof(asn_DEF_MemberL_tags_2[0]), /* 1 */
+ asn_DEF_MemberL_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberL_tags_2)
+ /sizeof(asn_DEF_MemberL_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberL_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberL_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_MessageStructure_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberL_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_MessageStructure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_MessageStructure_specs_1 = {
+ sizeof(struct RANAP_MessageStructure),
+ offsetof(struct RANAP_MessageStructure, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MessageStructure = {
+ "RANAP_MessageStructure",
+ "RANAP_MessageStructure",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_MessageStructure_tags_1,
+ sizeof(asn_DEF_RANAP_MessageStructure_tags_1)
+ /sizeof(asn_DEF_RANAP_MessageStructure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_MessageStructure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_MessageStructure_tags_1)
+ /sizeof(asn_DEF_RANAP_MessageStructure_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_MessageStructure_constr_1,
+ asn_MBR_RANAP_MessageStructure_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_MessageStructure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_NAS-PDU.c b/src/ranap/RANAP_NAS-PDU.c
new file mode 100644
index 0000000..cb0d5f9
--- /dev/null
+++ b/src/ranap/RANAP_NAS-PDU.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NAS-PDU.h>
+
+int
+RANAP_NAS_PDU_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NAS_PDU_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_NAS_PDU_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NAS_PDU_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_PDU_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NAS_PDU_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_PDU_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NAS_PDU_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_PDU_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NAS_PDU_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NAS_PDU_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NAS_PDU_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_PDU_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_NAS_PDU_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_PDU = {
+ "RANAP_NAS-PDU",
+ "RANAP_NAS-PDU",
+ RANAP_NAS_PDU_free,
+ RANAP_NAS_PDU_print,
+ RANAP_NAS_PDU_constraint,
+ RANAP_NAS_PDU_decode_ber,
+ RANAP_NAS_PDU_encode_der,
+ RANAP_NAS_PDU_decode_xer,
+ RANAP_NAS_PDU_encode_xer,
+ RANAP_NAS_PDU_decode_uper,
+ RANAP_NAS_PDU_encode_uper,
+ RANAP_NAS_PDU_decode_aper,
+ RANAP_NAS_PDU_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NAS_PDU_tags_1,
+ sizeof(asn_DEF_RANAP_NAS_PDU_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_PDU_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NAS_PDU_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NAS_PDU_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_PDU_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NAS-SequenceNumber.c b/src/ranap/RANAP_NAS-SequenceNumber.c
new file mode 100644
index 0000000..a5b77e0
--- /dev/null
+++ b/src/ranap/RANAP_NAS-SequenceNumber.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NAS-SequenceNumber.h>
+
+int
+RANAP_NAS_SequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_NAS_SequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NAS_SequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NAS_SequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NAS_SequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_SequenceNumber = {
+ "RANAP_NAS-SequenceNumber",
+ "RANAP_NAS-SequenceNumber",
+ RANAP_NAS_SequenceNumber_free,
+ RANAP_NAS_SequenceNumber_print,
+ RANAP_NAS_SequenceNumber_constraint,
+ RANAP_NAS_SequenceNumber_decode_ber,
+ RANAP_NAS_SequenceNumber_encode_der,
+ RANAP_NAS_SequenceNumber_decode_xer,
+ RANAP_NAS_SequenceNumber_encode_xer,
+ RANAP_NAS_SequenceNumber_decode_uper,
+ RANAP_NAS_SequenceNumber_encode_uper,
+ RANAP_NAS_SequenceNumber_decode_aper,
+ RANAP_NAS_SequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NAS_SequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_NAS_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_SequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NAS_SequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NAS_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_SequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NAS_SequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NAS-SynchronisationIndicator.c b/src/ranap/RANAP_NAS-SynchronisationIndicator.c
new file mode 100644
index 0000000..57b5074
--- /dev/null
+++ b/src/ranap/RANAP_NAS-SynchronisationIndicator.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NAS-SynchronisationIndicator.h>
+
+int
+RANAP_NAS_SynchronisationIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_NAS_SynchronisationIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NAS_SynchronisationIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SynchronisationIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SynchronisationIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SynchronisationIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SynchronisationIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SynchronisationIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SynchronisationIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NAS_SynchronisationIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NAS_SynchronisationIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NAS_SynchronisationIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NAS_SynchronisationIndicator_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NAS_SynchronisationIndicator = {
+ "RANAP_NAS-SynchronisationIndicator",
+ "RANAP_NAS-SynchronisationIndicator",
+ RANAP_NAS_SynchronisationIndicator_free,
+ RANAP_NAS_SynchronisationIndicator_print,
+ RANAP_NAS_SynchronisationIndicator_constraint,
+ RANAP_NAS_SynchronisationIndicator_decode_ber,
+ RANAP_NAS_SynchronisationIndicator_encode_der,
+ RANAP_NAS_SynchronisationIndicator_decode_xer,
+ RANAP_NAS_SynchronisationIndicator_encode_xer,
+ RANAP_NAS_SynchronisationIndicator_decode_uper,
+ RANAP_NAS_SynchronisationIndicator_encode_uper,
+ RANAP_NAS_SynchronisationIndicator_decode_aper,
+ RANAP_NAS_SynchronisationIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_NAS_SynchronisationIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NAS_SynchronisationIndicator_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NRTLoadInformationValue.c b/src/ranap/RANAP_NRTLoadInformationValue.c
new file mode 100644
index 0000000..5a53d24
--- /dev/null
+++ b/src/ranap/RANAP_NRTLoadInformationValue.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NRTLoadInformationValue.h>
+
+int
+RANAP_NRTLoadInformationValue_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_NRTLoadInformationValue_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NRTLoadInformationValue_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NRTLoadInformationValue_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NRTLoadInformationValue_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NRTLoadInformationValue_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NRTLoadInformationValue_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NRTLoadInformationValue_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NRTLoadInformationValue_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NRTLoadInformationValue_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NRTLoadInformationValue_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NRTLoadInformationValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NRTLoadInformationValue_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 3l } /* (0..3) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NRTLoadInformationValue_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NRTLoadInformationValue = {
+ "RANAP_NRTLoadInformationValue",
+ "RANAP_NRTLoadInformationValue",
+ RANAP_NRTLoadInformationValue_free,
+ RANAP_NRTLoadInformationValue_print,
+ RANAP_NRTLoadInformationValue_constraint,
+ RANAP_NRTLoadInformationValue_decode_ber,
+ RANAP_NRTLoadInformationValue_encode_der,
+ RANAP_NRTLoadInformationValue_decode_xer,
+ RANAP_NRTLoadInformationValue_encode_xer,
+ RANAP_NRTLoadInformationValue_decode_uper,
+ RANAP_NRTLoadInformationValue_encode_uper,
+ RANAP_NRTLoadInformationValue_decode_aper,
+ RANAP_NRTLoadInformationValue_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NRTLoadInformationValue_tags_1,
+ sizeof(asn_DEF_RANAP_NRTLoadInformationValue_tags_1)
+ /sizeof(asn_DEF_RANAP_NRTLoadInformationValue_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NRTLoadInformationValue_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NRTLoadInformationValue_tags_1)
+ /sizeof(asn_DEF_RANAP_NRTLoadInformationValue_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NRTLoadInformationValue_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NewBSS-To-OldBSS-Information.c b/src/ranap/RANAP_NewBSS-To-OldBSS-Information.c
new file mode 100644
index 0000000..ad93f02
--- /dev/null
+++ b/src/ranap/RANAP_NewBSS-To-OldBSS-Information.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NewBSS-To-OldBSS-Information.h>
+
+int
+RANAP_NewBSS_To_OldBSS_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_NewBSS_To_OldBSS_Information_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NewBSS_To_OldBSS_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NewBSS_To_OldBSS_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NewBSS_To_OldBSS_Information_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NewBSS_To_OldBSS_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NewBSS_To_OldBSS_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NewBSS_To_OldBSS_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NewBSS_To_OldBSS_Information_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NewBSS_To_OldBSS_Information_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NewBSS_To_OldBSS_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NewBSS_To_OldBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NewBSS_To_OldBSS_Information = {
+ "RANAP_NewBSS-To-OldBSS-Information",
+ "RANAP_NewBSS-To-OldBSS-Information",
+ RANAP_NewBSS_To_OldBSS_Information_free,
+ RANAP_NewBSS_To_OldBSS_Information_print,
+ RANAP_NewBSS_To_OldBSS_Information_constraint,
+ RANAP_NewBSS_To_OldBSS_Information_decode_ber,
+ RANAP_NewBSS_To_OldBSS_Information_encode_der,
+ RANAP_NewBSS_To_OldBSS_Information_decode_xer,
+ RANAP_NewBSS_To_OldBSS_Information_encode_xer,
+ RANAP_NewBSS_To_OldBSS_Information_decode_uper,
+ RANAP_NewBSS_To_OldBSS_Information_encode_uper,
+ RANAP_NewBSS_To_OldBSS_Information_decode_aper,
+ RANAP_NewBSS_To_OldBSS_Information_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1,
+ sizeof(asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_NewBSS_To_OldBSS_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NewRAListofIdleModeUEs.c b/src/ranap/RANAP_NewRAListofIdleModeUEs.c
new file mode 100644
index 0000000..03bba51
--- /dev/null
+++ b/src/ranap/RANAP_NewRAListofIdleModeUEs.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NewRAListofIdleModeUEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_NewRAListofIdleModeUEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_NewRAListofIdleModeUEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_NewRAListofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_NewRAListofIdleModeUEs),
+ offsetof(struct RANAP_NewRAListofIdleModeUEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NewRAListofIdleModeUEs = {
+ "RANAP_NewRAListofIdleModeUEs",
+ "RANAP_NewRAListofIdleModeUEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1,
+ sizeof(asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_NewRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NewRAListofIdleModeUEs_constr_1,
+ asn_MBR_RANAP_NewRAListofIdleModeUEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_NewRAListofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_NonSearchingIndication.c b/src/ranap/RANAP_NonSearchingIndication.c
new file mode 100644
index 0000000..18d6015
--- /dev/null
+++ b/src/ranap/RANAP_NonSearchingIndication.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NonSearchingIndication.h>
+
+int
+RANAP_NonSearchingIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_NonSearchingIndication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NonSearchingIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NonSearchingIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NonSearchingIndication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NonSearchingIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NonSearchingIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NonSearchingIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NonSearchingIndication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NonSearchingIndication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NonSearchingIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NonSearchingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NonSearchingIndication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_NonSearchingIndication_value2enum_1[] = {
+ { 0, 13, "non-searching" },
+ { 1, 9, "searching" }
+};
+static const unsigned int asn_MAP_RANAP_NonSearchingIndication_enum2value_1[] = {
+ 0, /* non-searching(0) */
+ 1 /* searching(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_NonSearchingIndication_specs_1 = {
+ asn_MAP_RANAP_NonSearchingIndication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_NonSearchingIndication_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NonSearchingIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NonSearchingIndication = {
+ "RANAP_NonSearchingIndication",
+ "RANAP_NonSearchingIndication",
+ RANAP_NonSearchingIndication_free,
+ RANAP_NonSearchingIndication_print,
+ RANAP_NonSearchingIndication_constraint,
+ RANAP_NonSearchingIndication_decode_ber,
+ RANAP_NonSearchingIndication_encode_der,
+ RANAP_NonSearchingIndication_decode_xer,
+ RANAP_NonSearchingIndication_encode_xer,
+ RANAP_NonSearchingIndication_decode_uper,
+ RANAP_NonSearchingIndication_encode_uper,
+ RANAP_NonSearchingIndication_decode_aper,
+ RANAP_NonSearchingIndication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NonSearchingIndication_tags_1,
+ sizeof(asn_DEF_RANAP_NonSearchingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_NonSearchingIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NonSearchingIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NonSearchingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_NonSearchingIndication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NonSearchingIndication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_NonSearchingIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_NotEmptyRAListofIdleModeUEs.c b/src/ranap/RANAP_NotEmptyRAListofIdleModeUEs.c
new file mode 100644
index 0000000..13803f3
--- /dev/null
+++ b/src/ranap/RANAP_NotEmptyRAListofIdleModeUEs.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NotEmptyRAListofIdleModeUEs.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_NotEmptyRAListofIdleModeUEs_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_NotEmptyRAListofIdleModeUEs, rAofIdleModeUEs),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAofIdleModeUEs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAofIdleModeUEs"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_NotEmptyRAListofIdleModeUEs, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_NotEmptyRAListofIdleModeUEs_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_NotEmptyRAListofIdleModeUEs_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAofIdleModeUEs */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_NotEmptyRAListofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_NotEmptyRAListofIdleModeUEs),
+ offsetof(struct RANAP_NotEmptyRAListofIdleModeUEs, _asn_ctx),
+ asn_MAP_RANAP_NotEmptyRAListofIdleModeUEs_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_NotEmptyRAListofIdleModeUEs_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs = {
+ "RANAP_NotEmptyRAListofIdleModeUEs",
+ "RANAP_NotEmptyRAListofIdleModeUEs",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1,
+ sizeof(asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_NotEmptyRAListofIdleModeUEs_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_NotEmptyRAListofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_NumberOfIuInstances.c b/src/ranap/RANAP_NumberOfIuInstances.c
new file mode 100644
index 0000000..08af647
--- /dev/null
+++ b/src/ranap/RANAP_NumberOfIuInstances.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NumberOfIuInstances.h>
+
+int
+RANAP_NumberOfIuInstances_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_NumberOfIuInstances_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NumberOfIuInstances_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfIuInstances_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfIuInstances_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfIuInstances_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfIuInstances_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfIuInstances_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfIuInstances_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfIuInstances_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfIuInstances_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NumberOfIuInstances_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NumberOfIuInstances_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (1..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NumberOfIuInstances_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NumberOfIuInstances = {
+ "RANAP_NumberOfIuInstances",
+ "RANAP_NumberOfIuInstances",
+ RANAP_NumberOfIuInstances_free,
+ RANAP_NumberOfIuInstances_print,
+ RANAP_NumberOfIuInstances_constraint,
+ RANAP_NumberOfIuInstances_decode_ber,
+ RANAP_NumberOfIuInstances_encode_der,
+ RANAP_NumberOfIuInstances_decode_xer,
+ RANAP_NumberOfIuInstances_encode_xer,
+ RANAP_NumberOfIuInstances_decode_uper,
+ RANAP_NumberOfIuInstances_encode_uper,
+ RANAP_NumberOfIuInstances_decode_aper,
+ RANAP_NumberOfIuInstances_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NumberOfIuInstances_tags_1,
+ sizeof(asn_DEF_RANAP_NumberOfIuInstances_tags_1)
+ /sizeof(asn_DEF_RANAP_NumberOfIuInstances_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NumberOfIuInstances_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NumberOfIuInstances_tags_1)
+ /sizeof(asn_DEF_RANAP_NumberOfIuInstances_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NumberOfIuInstances_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_NumberOfSteps.c b/src/ranap/RANAP_NumberOfSteps.c
new file mode 100644
index 0000000..7265264
--- /dev/null
+++ b/src/ranap/RANAP_NumberOfSteps.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_NumberOfSteps.h>
+
+int
+RANAP_NumberOfSteps_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 16l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_NumberOfSteps_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_NumberOfSteps_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfSteps_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfSteps_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfSteps_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfSteps_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfSteps_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfSteps_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_NumberOfSteps_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_NumberOfSteps_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_NumberOfSteps_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_NumberOfSteps_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (1..16) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_NumberOfSteps_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_NumberOfSteps = {
+ "RANAP_NumberOfSteps",
+ "RANAP_NumberOfSteps",
+ RANAP_NumberOfSteps_free,
+ RANAP_NumberOfSteps_print,
+ RANAP_NumberOfSteps_constraint,
+ RANAP_NumberOfSteps_decode_ber,
+ RANAP_NumberOfSteps_encode_der,
+ RANAP_NumberOfSteps_decode_xer,
+ RANAP_NumberOfSteps_encode_xer,
+ RANAP_NumberOfSteps_decode_uper,
+ RANAP_NumberOfSteps_encode_uper,
+ RANAP_NumberOfSteps_decode_aper,
+ RANAP_NumberOfSteps_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_NumberOfSteps_tags_1,
+ sizeof(asn_DEF_RANAP_NumberOfSteps_tags_1)
+ /sizeof(asn_DEF_RANAP_NumberOfSteps_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_NumberOfSteps_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_NumberOfSteps_tags_1)
+ /sizeof(asn_DEF_RANAP_NumberOfSteps_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_NumberOfSteps_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_OMC-ID.c b/src/ranap/RANAP_OMC-ID.c
new file mode 100644
index 0000000..a389129
--- /dev/null
+++ b/src/ranap/RANAP_OMC-ID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_OMC-ID.h>
+
+int
+RANAP_OMC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 3l && size <= 22l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_OMC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_OMC_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_OMC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OMC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_OMC_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OMC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_OMC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OMC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_OMC_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_OMC_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_OMC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_OMC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_OMC_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 3l, 22l } /* (SIZE(3..22)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_OMC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_OMC_ID = {
+ "RANAP_OMC-ID",
+ "RANAP_OMC-ID",
+ RANAP_OMC_ID_free,
+ RANAP_OMC_ID_print,
+ RANAP_OMC_ID_constraint,
+ RANAP_OMC_ID_decode_ber,
+ RANAP_OMC_ID_encode_der,
+ RANAP_OMC_ID_decode_xer,
+ RANAP_OMC_ID_encode_xer,
+ RANAP_OMC_ID_decode_uper,
+ RANAP_OMC_ID_encode_uper,
+ RANAP_OMC_ID_decode_aper,
+ RANAP_OMC_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_OMC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_OMC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_OMC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_OMC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_OMC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_OMC_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_OMC_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Offload-RAB-Parameters-APN.c b/src/ranap/RANAP_Offload-RAB-Parameters-APN.c
new file mode 100644
index 0000000..46d9e96
--- /dev/null
+++ b/src/ranap/RANAP_Offload-RAB-Parameters-APN.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-APN.h>
+
+int
+RANAP_Offload_RAB_Parameters_APN_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Offload_RAB_Parameters_APN_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Offload_RAB_Parameters_APN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_APN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_APN_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_APN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_APN_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_APN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_APN_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_APN_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_APN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Offload_RAB_Parameters_APN_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Offload_RAB_Parameters_APN_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 255l } /* (SIZE(1..255)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters_APN = {
+ "RANAP_Offload-RAB-Parameters-APN",
+ "RANAP_Offload-RAB-Parameters-APN",
+ RANAP_Offload_RAB_Parameters_APN_free,
+ RANAP_Offload_RAB_Parameters_APN_print,
+ RANAP_Offload_RAB_Parameters_APN_constraint,
+ RANAP_Offload_RAB_Parameters_APN_decode_ber,
+ RANAP_Offload_RAB_Parameters_APN_encode_der,
+ RANAP_Offload_RAB_Parameters_APN_decode_xer,
+ RANAP_Offload_RAB_Parameters_APN_encode_xer,
+ RANAP_Offload_RAB_Parameters_APN_decode_uper,
+ RANAP_Offload_RAB_Parameters_APN_encode_uper,
+ RANAP_Offload_RAB_Parameters_APN_decode_aper,
+ RANAP_Offload_RAB_Parameters_APN_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1,
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_APN_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Offload_RAB_Parameters_APN_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.c b/src/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.c
new file mode 100644
index 0000000..7708d5f
--- /dev/null
+++ b/src/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters-ChargingCharacteristics.h>
+
+int
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics = {
+ "RANAP_Offload-RAB-Parameters-ChargingCharacteristics",
+ "RANAP_Offload-RAB-Parameters-ChargingCharacteristics",
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_free,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_print,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_constraint,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_ber,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_der,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_xer,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_xer,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_uper,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_uper,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_decode_aper,
+ RANAP_Offload_RAB_Parameters_ChargingCharacteristics_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1,
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Offload_RAB_Parameters_ChargingCharacteristics_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Offload-RAB-Parameters.c b/src/ranap/RANAP_Offload-RAB-Parameters.c
new file mode 100644
index 0000000..73472fc
--- /dev/null
+++ b/src/ranap/RANAP_Offload-RAB-Parameters.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Offload-RAB-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Offload_RAB_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Offload_RAB_Parameters, accessPointName),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Offload_RAB_Parameters_APN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "accessPointName"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Offload_RAB_Parameters, chargingCharacteristics),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Offload_RAB_Parameters_ChargingCharacteristics,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "chargingCharacteristics"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Offload_RAB_Parameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Offload_RAB_Parameters_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Offload_RAB_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Offload_RAB_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accessPointName */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* chargingCharacteristics */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Offload_RAB_Parameters_specs_1 = {
+ sizeof(struct RANAP_Offload_RAB_Parameters),
+ offsetof(struct RANAP_Offload_RAB_Parameters, _asn_ctx),
+ asn_MAP_RANAP_Offload_RAB_Parameters_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Offload_RAB_Parameters_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Offload_RAB_Parameters = {
+ "RANAP_Offload-RAB-Parameters",
+ "RANAP_Offload-RAB-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Offload_RAB_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Offload_RAB_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_Offload_RAB_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Offload_RAB_Parameters_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Offload_RAB_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_OldBSS-ToNewBSS-Information.c b/src/ranap/RANAP_OldBSS-ToNewBSS-Information.c
new file mode 100644
index 0000000..7d9763f
--- /dev/null
+++ b/src/ranap/RANAP_OldBSS-ToNewBSS-Information.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_OldBSS-ToNewBSS-Information.h>
+
+int
+RANAP_OldBSS_ToNewBSS_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_OldBSS_ToNewBSS_Information_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_OldBSS_ToNewBSS_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OldBSS_ToNewBSS_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_OldBSS_ToNewBSS_Information_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OldBSS_ToNewBSS_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_OldBSS_ToNewBSS_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_OldBSS_ToNewBSS_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_OldBSS_ToNewBSS_Information_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_OldBSS_ToNewBSS_Information_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_OldBSS_ToNewBSS_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_OldBSS_ToNewBSS_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_OldBSS_ToNewBSS_Information = {
+ "RANAP_OldBSS-ToNewBSS-Information",
+ "RANAP_OldBSS-ToNewBSS-Information",
+ RANAP_OldBSS_ToNewBSS_Information_free,
+ RANAP_OldBSS_ToNewBSS_Information_print,
+ RANAP_OldBSS_ToNewBSS_Information_constraint,
+ RANAP_OldBSS_ToNewBSS_Information_decode_ber,
+ RANAP_OldBSS_ToNewBSS_Information_encode_der,
+ RANAP_OldBSS_ToNewBSS_Information_decode_xer,
+ RANAP_OldBSS_ToNewBSS_Information_encode_xer,
+ RANAP_OldBSS_ToNewBSS_Information_decode_uper,
+ RANAP_OldBSS_ToNewBSS_Information_encode_uper,
+ RANAP_OldBSS_ToNewBSS_Information_decode_aper,
+ RANAP_OldBSS_ToNewBSS_Information_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1,
+ sizeof(asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_OldBSS_ToNewBSS_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Out-Of-UTRAN.c b/src/ranap/RANAP_Out-Of-UTRAN.c
new file mode 100644
index 0000000..6bd1be4
--- /dev/null
+++ b/src/ranap/RANAP_Out-Of-UTRAN.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Out-Of-UTRAN.h>
+
+int
+RANAP_Out_Of_UTRAN_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Out_Of_UTRAN_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Out_Of_UTRAN_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Out_Of_UTRAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Out_Of_UTRAN_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Out_Of_UTRAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Out_Of_UTRAN_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Out_Of_UTRAN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Out_Of_UTRAN_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Out_Of_UTRAN_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Out_Of_UTRAN_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Out_Of_UTRAN_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Out_Of_UTRAN_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Out_Of_UTRAN_value2enum_1[] = {
+ { 0, 26, "cell-reselection-to-EUTRAN" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Out_Of_UTRAN_enum2value_1[] = {
+ 0 /* cell-reselection-to-EUTRAN(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Out_Of_UTRAN_specs_1 = {
+ asn_MAP_RANAP_Out_Of_UTRAN_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Out_Of_UTRAN_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Out_Of_UTRAN_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Out_Of_UTRAN = {
+ "RANAP_Out-Of-UTRAN",
+ "RANAP_Out-Of-UTRAN",
+ RANAP_Out_Of_UTRAN_free,
+ RANAP_Out_Of_UTRAN_print,
+ RANAP_Out_Of_UTRAN_constraint,
+ RANAP_Out_Of_UTRAN_decode_ber,
+ RANAP_Out_Of_UTRAN_encode_der,
+ RANAP_Out_Of_UTRAN_decode_xer,
+ RANAP_Out_Of_UTRAN_encode_xer,
+ RANAP_Out_Of_UTRAN_decode_uper,
+ RANAP_Out_Of_UTRAN_encode_uper,
+ RANAP_Out_Of_UTRAN_decode_aper,
+ RANAP_Out_Of_UTRAN_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Out_Of_UTRAN_tags_1,
+ sizeof(asn_DEF_RANAP_Out_Of_UTRAN_tags_1)
+ /sizeof(asn_DEF_RANAP_Out_Of_UTRAN_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Out_Of_UTRAN_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Out_Of_UTRAN_tags_1)
+ /sizeof(asn_DEF_RANAP_Out_Of_UTRAN_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Out_Of_UTRAN_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Out_Of_UTRAN_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Outcome.c b/src/ranap/RANAP_Outcome.c
new file mode 100644
index 0000000..3ad872a
--- /dev/null
+++ b/src/ranap/RANAP_Outcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Outcome.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Outcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Outcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Outcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Outcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Outcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Outcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Outcome_specs_1 = {
+ sizeof(struct RANAP_Outcome),
+ offsetof(struct RANAP_Outcome, _asn_ctx),
+ asn_MAP_RANAP_Outcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Outcome = {
+ "RANAP_Outcome",
+ "RANAP_Outcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Outcome_tags_1,
+ sizeof(asn_DEF_RANAP_Outcome_tags_1)
+ /sizeof(asn_DEF_RANAP_Outcome_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Outcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Outcome_tags_1)
+ /sizeof(asn_DEF_RANAP_Outcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Outcome_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Outcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Overload.c b/src/ranap/RANAP_Overload.c
new file mode 100644
index 0000000..b0cc47c
--- /dev/null
+++ b/src/ranap/RANAP_Overload.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Overload.h>
+
+static int
+memb_overload_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_overload_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_overload_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_overload_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_overload_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_overload_ies_specs_2 = {
+ sizeof(struct overload_ies),
+ offsetof(struct overload_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_overload_ies_2 = {
+ "overload-ies",
+ "overload-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_overload_ies_tags_2,
+ sizeof(asn_DEF_overload_ies_tags_2)
+ /sizeof(asn_DEF_overload_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_overload_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_overload_ies_tags_2)
+ /sizeof(asn_DEF_overload_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_overload_ies_constr_2,
+ asn_MBR_overload_ies_2,
+ 1, /* Single element */
+ &asn_SPC_overload_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Overload_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Overload, overload_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_overload_ies_2,
+ memb_overload_ies_constraint_1,
+ &asn_PER_memb_overload_ies_constr_2,
+ 0,
+ "overload-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Overload_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Overload_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* overload-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Overload_specs_1 = {
+ sizeof(struct RANAP_Overload),
+ offsetof(struct RANAP_Overload, _asn_ctx),
+ asn_MAP_RANAP_Overload_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Overload = {
+ "RANAP_Overload",
+ "RANAP_Overload",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Overload_tags_1,
+ sizeof(asn_DEF_RANAP_Overload_tags_1)
+ /sizeof(asn_DEF_RANAP_Overload_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Overload_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Overload_tags_1)
+ /sizeof(asn_DEF_RANAP_Overload_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Overload_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Overload_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_P-TMSI.c b/src/ranap/RANAP_P-TMSI.c
new file mode 100644
index 0000000..da5be7c
--- /dev/null
+++ b/src/ranap/RANAP_P-TMSI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_P-TMSI.h>
+
+int
+RANAP_P_TMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_P_TMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_P_TMSI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_P_TMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_P_TMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_P_TMSI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_P_TMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_P_TMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_P_TMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_P_TMSI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_P_TMSI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_P_TMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_P_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_P_TMSI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_P_TMSI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_P_TMSI = {
+ "RANAP_P-TMSI",
+ "RANAP_P-TMSI",
+ RANAP_P_TMSI_free,
+ RANAP_P_TMSI_print,
+ RANAP_P_TMSI_constraint,
+ RANAP_P_TMSI_decode_ber,
+ RANAP_P_TMSI_encode_der,
+ RANAP_P_TMSI_decode_xer,
+ RANAP_P_TMSI_encode_xer,
+ RANAP_P_TMSI_decode_uper,
+ RANAP_P_TMSI_encode_uper,
+ RANAP_P_TMSI_decode_aper,
+ RANAP_P_TMSI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_P_TMSI_tags_1,
+ sizeof(asn_DEF_RANAP_P_TMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_P_TMSI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_P_TMSI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_P_TMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_P_TMSI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_P_TMSI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PDP-Type-extension.c b/src/ranap/RANAP_PDP-Type-extension.c
new file mode 100644
index 0000000..4647ced
--- /dev/null
+++ b/src/ranap/RANAP_PDP-Type-extension.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PDP-Type-extension.h>
+
+int
+RANAP_PDP_Type_extension_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_PDP_Type_extension_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PDP_Type_extension_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_extension_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_extension_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_extension_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_extension_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_extension_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_extension_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_extension_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_extension_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDP_Type_extension_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PDP_Type_extension_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_PDP_Type_extension_value2enum_1[] = {
+ { 0, 13, "ipv4-and-ipv6" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_PDP_Type_extension_enum2value_1[] = {
+ 0 /* ipv4-and-ipv6(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_PDP_Type_extension_specs_1 = {
+ asn_MAP_RANAP_PDP_Type_extension_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_PDP_Type_extension_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PDP_Type_extension_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_Type_extension = {
+ "RANAP_PDP-Type-extension",
+ "RANAP_PDP-Type-extension",
+ RANAP_PDP_Type_extension_free,
+ RANAP_PDP_Type_extension_print,
+ RANAP_PDP_Type_extension_constraint,
+ RANAP_PDP_Type_extension_decode_ber,
+ RANAP_PDP_Type_extension_encode_der,
+ RANAP_PDP_Type_extension_decode_xer,
+ RANAP_PDP_Type_extension_encode_xer,
+ RANAP_PDP_Type_extension_decode_uper,
+ RANAP_PDP_Type_extension_encode_uper,
+ RANAP_PDP_Type_extension_decode_aper,
+ RANAP_PDP_Type_extension_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PDP_Type_extension_tags_1,
+ sizeof(asn_DEF_RANAP_PDP_Type_extension_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_Type_extension_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PDP_Type_extension_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PDP_Type_extension_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_Type_extension_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PDP_Type_extension_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_PDP_Type_extension_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PDP-Type.c b/src/ranap/RANAP_PDP-Type.c
new file mode 100644
index 0000000..03d116e
--- /dev/null
+++ b/src/ranap/RANAP_PDP-Type.c
@@ -0,0 +1,173 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PDP-Type.h>
+
+int
+RANAP_PDP_Type_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PDP_Type_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_PDP_Type_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PDP_Type_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PDP_Type_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PDP_Type_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDP_Type_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PDP_Type_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (0..4,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_PDP_Type_value2enum_1[] = {
+ { 0, 5, "empty" },
+ { 1, 3, "ppp" },
+ { 2, 9, "osp-ihoss" },
+ { 3, 4, "ipv4" },
+ { 4, 4, "ipv6" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_PDP_Type_enum2value_1[] = {
+ 0, /* empty(0) */
+ 3, /* ipv4(3) */
+ 4, /* ipv6(4) */
+ 2, /* osp-ihoss(2) */
+ 1 /* ppp(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_PDP_Type_specs_1 = {
+ asn_MAP_RANAP_PDP_Type_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_PDP_Type_enum2value_1, /* N => "tag"; sorted by N */
+ 5, /* Number of elements in the maps */
+ 6, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PDP_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_Type = {
+ "RANAP_PDP-Type",
+ "RANAP_PDP-Type",
+ RANAP_PDP_Type_free,
+ RANAP_PDP_Type_print,
+ RANAP_PDP_Type_constraint,
+ RANAP_PDP_Type_decode_ber,
+ RANAP_PDP_Type_encode_der,
+ RANAP_PDP_Type_decode_xer,
+ RANAP_PDP_Type_encode_xer,
+ RANAP_PDP_Type_decode_uper,
+ RANAP_PDP_Type_encode_uper,
+ RANAP_PDP_Type_decode_aper,
+ RANAP_PDP_Type_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PDP_Type_tags_1,
+ sizeof(asn_DEF_RANAP_PDP_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_Type_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PDP_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PDP_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_Type_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PDP_Type_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_PDP_Type_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PDP-TypeInformation-extension.c b/src/ranap/RANAP_PDP-TypeInformation-extension.c
new file mode 100644
index 0000000..2a63070
--- /dev/null
+++ b/src/ranap/RANAP_PDP-TypeInformation-extension.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PDP-TypeInformation-extension.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PDP_TypeInformation_extension_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PDP_TypeInformation_extension_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_PDP_Type_extension,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PDP_TypeInformation_extension_specs_1 = {
+ sizeof(struct RANAP_PDP_TypeInformation_extension),
+ offsetof(struct RANAP_PDP_TypeInformation_extension, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_TypeInformation_extension = {
+ "RANAP_PDP-TypeInformation-extension",
+ "RANAP_PDP-TypeInformation-extension",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1,
+ sizeof(asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_TypeInformation_extension_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PDP_TypeInformation_extension_constr_1,
+ asn_MBR_RANAP_PDP_TypeInformation_extension_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PDP_TypeInformation_extension_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PDP-TypeInformation.c b/src/ranap/RANAP_PDP-TypeInformation.c
new file mode 100644
index 0000000..8808ec6
--- /dev/null
+++ b/src/ranap/RANAP_PDP-TypeInformation.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PDP-TypeInformation.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PDP_TypeInformation_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PDP_TypeInformation_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_PDP_Type,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PDP_TypeInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PDP_TypeInformation_specs_1 = {
+ sizeof(struct RANAP_PDP_TypeInformation),
+ offsetof(struct RANAP_PDP_TypeInformation, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PDP_TypeInformation = {
+ "RANAP_PDP-TypeInformation",
+ "RANAP_PDP-TypeInformation",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PDP_TypeInformation_tags_1,
+ sizeof(asn_DEF_RANAP_PDP_TypeInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_TypeInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PDP_TypeInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PDP_TypeInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_PDP_TypeInformation_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PDP_TypeInformation_constr_1,
+ asn_MBR_RANAP_PDP_TypeInformation_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PDP_TypeInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PDUType14FrameSequenceNumber.c b/src/ranap/RANAP_PDUType14FrameSequenceNumber.c
new file mode 100644
index 0000000..8f5c3de
--- /dev/null
+++ b/src/ranap/RANAP_PDUType14FrameSequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PDUType14FrameSequenceNumber.h>
+
+int
+RANAP_PDUType14FrameSequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_PDUType14FrameSequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PDUType14FrameSequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDUType14FrameSequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PDUType14FrameSequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDUType14FrameSequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PDUType14FrameSequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PDUType14FrameSequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PDUType14FrameSequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PDUType14FrameSequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PDUType14FrameSequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PDUType14FrameSequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PDUType14FrameSequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 3l } /* (0..3) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PDUType14FrameSequenceNumber = {
+ "RANAP_PDUType14FrameSequenceNumber",
+ "RANAP_PDUType14FrameSequenceNumber",
+ RANAP_PDUType14FrameSequenceNumber_free,
+ RANAP_PDUType14FrameSequenceNumber_print,
+ RANAP_PDUType14FrameSequenceNumber_constraint,
+ RANAP_PDUType14FrameSequenceNumber_decode_ber,
+ RANAP_PDUType14FrameSequenceNumber_encode_der,
+ RANAP_PDUType14FrameSequenceNumber_decode_xer,
+ RANAP_PDUType14FrameSequenceNumber_encode_xer,
+ RANAP_PDUType14FrameSequenceNumber_decode_uper,
+ RANAP_PDUType14FrameSequenceNumber_encode_uper,
+ RANAP_PDUType14FrameSequenceNumber_decode_aper,
+ RANAP_PDUType14FrameSequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_PDUType14FrameSequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PDUType14FrameSequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PLMNidentity.c b/src/ranap/RANAP_PLMNidentity.c
new file mode 100644
index 0000000..0664e9f
--- /dev/null
+++ b/src/ranap/RANAP_PLMNidentity.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PLMNidentity.h>
+
+int
+RANAP_PLMNidentity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PLMNidentity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_PLMNidentity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PLMNidentity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PLMNidentity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PLMNidentity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PLMNidentity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PLMNidentity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PLMNidentity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PLMNidentity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PLMNidentity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PLMNidentity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PLMNidentity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PLMNidentity_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (SIZE(3..3)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PLMNidentity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNidentity = {
+ "RANAP_PLMNidentity",
+ "RANAP_PLMNidentity",
+ RANAP_PLMNidentity_free,
+ RANAP_PLMNidentity_print,
+ RANAP_PLMNidentity_constraint,
+ RANAP_PLMNidentity_decode_ber,
+ RANAP_PLMNidentity_encode_der,
+ RANAP_PLMNidentity_decode_xer,
+ RANAP_PLMNidentity_encode_xer,
+ RANAP_PLMNidentity_decode_uper,
+ RANAP_PLMNidentity_encode_uper,
+ RANAP_PLMNidentity_decode_aper,
+ RANAP_PLMNidentity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PLMNidentity_tags_1,
+ sizeof(asn_DEF_RANAP_PLMNidentity_tags_1)
+ /sizeof(asn_DEF_RANAP_PLMNidentity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PLMNidentity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PLMNidentity_tags_1)
+ /sizeof(asn_DEF_RANAP_PLMNidentity_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PLMNidentity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PLMNs-in-shared-network.c b/src/ranap/RANAP_PLMNs-in-shared-network.c
new file mode 100644
index 0000000..e98d5e2
--- /dev/null
+++ b/src/ranap/RANAP_PLMNs-in-shared-network.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PLMNs-in-shared-network.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PLMNs_in_shared_network_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberM_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberM, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberM, lA_LIST),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LA_LIST,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lA-LIST"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberM, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberM_oms_2[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MemberM_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberM_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lA-LIST */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberM_specs_2 = {
+ sizeof(struct MemberM),
+ offsetof(struct MemberM, _asn_ctx),
+ asn_MAP_MemberM_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberM_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberM_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberM_tags_2,
+ sizeof(asn_DEF_MemberM_tags_2)
+ /sizeof(asn_DEF_MemberM_tags_2[0]), /* 1 */
+ asn_DEF_MemberM_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberM_tags_2)
+ /sizeof(asn_DEF_MemberM_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberM_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberM_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_PLMNs_in_shared_network_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberM_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PLMNs_in_shared_network_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PLMNs_in_shared_network_specs_1 = {
+ sizeof(struct RANAP_PLMNs_in_shared_network),
+ offsetof(struct RANAP_PLMNs_in_shared_network, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PLMNs_in_shared_network = {
+ "RANAP_PLMNs-in-shared-network",
+ "RANAP_PLMNs-in-shared-network",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PLMNs_in_shared_network_tags_1,
+ sizeof(asn_DEF_RANAP_PLMNs_in_shared_network_tags_1)
+ /sizeof(asn_DEF_RANAP_PLMNs_in_shared_network_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PLMNs_in_shared_network_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PLMNs_in_shared_network_tags_1)
+ /sizeof(asn_DEF_RANAP_PLMNs_in_shared_network_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PLMNs_in_shared_network_constr_1,
+ asn_MBR_RANAP_PLMNs_in_shared_network_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PLMNs_in_shared_network_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Paging.c b/src/ranap/RANAP_Paging.c
new file mode 100644
index 0000000..18d232c
--- /dev/null
+++ b/src/ranap/RANAP_Paging.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Paging.h>
+
+static int
+memb_paging_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_paging_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_paging_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_paging_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_paging_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_paging_ies_specs_2 = {
+ sizeof(struct paging_ies),
+ offsetof(struct paging_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_paging_ies_2 = {
+ "paging-ies",
+ "paging-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_paging_ies_tags_2,
+ sizeof(asn_DEF_paging_ies_tags_2)
+ /sizeof(asn_DEF_paging_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_paging_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_paging_ies_tags_2)
+ /sizeof(asn_DEF_paging_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_paging_ies_constr_2,
+ asn_MBR_paging_ies_2,
+ 1, /* Single element */
+ &asn_SPC_paging_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Paging_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Paging, paging_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_paging_ies_2,
+ memb_paging_ies_constraint_1,
+ &asn_PER_memb_paging_ies_constr_2,
+ 0,
+ "paging-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Paging_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Paging_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* paging-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Paging_specs_1 = {
+ sizeof(struct RANAP_Paging),
+ offsetof(struct RANAP_Paging, _asn_ctx),
+ asn_MAP_RANAP_Paging_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Paging = {
+ "RANAP_Paging",
+ "RANAP_Paging",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Paging_tags_1,
+ sizeof(asn_DEF_RANAP_Paging_tags_1)
+ /sizeof(asn_DEF_RANAP_Paging_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Paging_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Paging_tags_1)
+ /sizeof(asn_DEF_RANAP_Paging_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Paging_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Paging_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PagingAreaID.c b/src/ranap/RANAP_PagingAreaID.c
new file mode 100644
index 0000000..84467f4
--- /dev/null
+++ b/src/ranap/RANAP_PagingAreaID.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PagingAreaID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PagingAreaID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PagingAreaID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PagingAreaID, choice.lAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PagingAreaID, choice.rAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PagingAreaID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rAI */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_PagingAreaID_specs_1 = {
+ sizeof(struct RANAP_PagingAreaID),
+ offsetof(struct RANAP_PagingAreaID, _asn_ctx),
+ offsetof(struct RANAP_PagingAreaID, present),
+ sizeof(((struct RANAP_PagingAreaID *)0)->present),
+ asn_MAP_RANAP_PagingAreaID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PagingAreaID = {
+ "RANAP_PagingAreaID",
+ "RANAP_PagingAreaID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_PagingAreaID_constr_1,
+ asn_MBR_RANAP_PagingAreaID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_PagingAreaID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PagingCause.c b/src/ranap/RANAP_PagingCause.c
new file mode 100644
index 0000000..9006147
--- /dev/null
+++ b/src/ranap/RANAP_PagingCause.c
@@ -0,0 +1,175 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PagingCause.h>
+
+int
+RANAP_PagingCause_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PagingCause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_PagingCause_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PagingCause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PagingCause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PagingCause_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PagingCause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PagingCause_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PagingCause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PagingCause_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PagingCause_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PagingCause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PagingCause_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PagingCause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 4l } /* (0..4,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_PagingCause_value2enum_1[] = {
+ { 0, 31, "terminating-conversational-call" },
+ { 1, 26, "terminating-streaming-call" },
+ { 2, 28, "terminating-interactive-call" },
+ { 3, 27, "terminating-background-call" },
+ { 4, 35, "terminating-low-priority-signalling" },
+ { 5, 36, "terminating-high-priority-signalling" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_PagingCause_enum2value_1[] = {
+ 3, /* terminating-background-call(3) */
+ 0, /* terminating-conversational-call(0) */
+ 5, /* terminating-high-priority-signalling(5) */
+ 2, /* terminating-interactive-call(2) */
+ 4, /* terminating-low-priority-signalling(4) */
+ 1 /* terminating-streaming-call(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_PagingCause_specs_1 = {
+ asn_MAP_RANAP_PagingCause_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_PagingCause_enum2value_1, /* N => "tag"; sorted by N */
+ 6, /* Number of elements in the maps */
+ 6, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PagingCause_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PagingCause = {
+ "RANAP_PagingCause",
+ "RANAP_PagingCause",
+ RANAP_PagingCause_free,
+ RANAP_PagingCause_print,
+ RANAP_PagingCause_constraint,
+ RANAP_PagingCause_decode_ber,
+ RANAP_PagingCause_encode_der,
+ RANAP_PagingCause_decode_xer,
+ RANAP_PagingCause_encode_xer,
+ RANAP_PagingCause_decode_uper,
+ RANAP_PagingCause_encode_uper,
+ RANAP_PagingCause_decode_aper,
+ RANAP_PagingCause_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PagingCause_tags_1,
+ sizeof(asn_DEF_RANAP_PagingCause_tags_1)
+ /sizeof(asn_DEF_RANAP_PagingCause_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PagingCause_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PagingCause_tags_1)
+ /sizeof(asn_DEF_RANAP_PagingCause_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PagingCause_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_PagingCause_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PeriodicLocationInfo.c b/src/ranap/RANAP_PeriodicLocationInfo.c
new file mode 100644
index 0000000..86ca3cd
--- /dev/null
+++ b/src/ranap/RANAP_PeriodicLocationInfo.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PeriodicLocationInfo.h>
+
+static int
+memb_reportingAmount_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 8639999l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_reportingInterval_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 8639999l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_reportingAmount_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 24, -1, 1l, 8639999l } /* (1..8639999,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_reportingInterval_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 24, -1, 1l, 8639999l } /* (1..8639999,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PeriodicLocationInfo_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PeriodicLocationInfo, reportingAmount),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_reportingAmount_constraint_1,
+ &asn_PER_memb_reportingAmount_constr_2,
+ 0,
+ "reportingAmount"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PeriodicLocationInfo, reportingInterval),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_reportingInterval_constraint_1,
+ &asn_PER_memb_reportingInterval_constr_3,
+ 0,
+ "reportingInterval"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_PeriodicLocationInfo, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_PeriodicLocationInfo_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_PeriodicLocationInfo_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PeriodicLocationInfo_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportingAmount */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportingInterval */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_PeriodicLocationInfo_specs_1 = {
+ sizeof(struct RANAP_PeriodicLocationInfo),
+ offsetof(struct RANAP_PeriodicLocationInfo, _asn_ctx),
+ asn_MAP_RANAP_PeriodicLocationInfo_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_PeriodicLocationInfo_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PeriodicLocationInfo = {
+ "RANAP_PeriodicLocationInfo",
+ "RANAP_PeriodicLocationInfo",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PeriodicLocationInfo_tags_1,
+ sizeof(asn_DEF_RANAP_PeriodicLocationInfo_tags_1)
+ /sizeof(asn_DEF_RANAP_PeriodicLocationInfo_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PeriodicLocationInfo_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PeriodicLocationInfo_tags_1)
+ /sizeof(asn_DEF_RANAP_PeriodicLocationInfo_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_PeriodicLocationInfo_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_PeriodicLocationInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PeriodicReportingIndicator.c b/src/ranap/RANAP_PeriodicReportingIndicator.c
new file mode 100644
index 0000000..9b31305
--- /dev/null
+++ b/src/ranap/RANAP_PeriodicReportingIndicator.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PeriodicReportingIndicator.h>
+
+int
+RANAP_PeriodicReportingIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_PeriodicReportingIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PeriodicReportingIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PeriodicReportingIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PeriodicReportingIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PeriodicReportingIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PeriodicReportingIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PeriodicReportingIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PeriodicReportingIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PeriodicReportingIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PeriodicReportingIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PeriodicReportingIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PeriodicReportingIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_PeriodicReportingIndicator_value2enum_1[] = {
+ { 0, 11, "periodicSAI" },
+ { 1, 11, "periodicGeo" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_PeriodicReportingIndicator_enum2value_1[] = {
+ 1, /* periodicGeo(1) */
+ 0 /* periodicSAI(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_PeriodicReportingIndicator_specs_1 = {
+ asn_MAP_RANAP_PeriodicReportingIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_PeriodicReportingIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PeriodicReportingIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PeriodicReportingIndicator = {
+ "RANAP_PeriodicReportingIndicator",
+ "RANAP_PeriodicReportingIndicator",
+ RANAP_PeriodicReportingIndicator_free,
+ RANAP_PeriodicReportingIndicator_print,
+ RANAP_PeriodicReportingIndicator_constraint,
+ RANAP_PeriodicReportingIndicator_decode_ber,
+ RANAP_PeriodicReportingIndicator_encode_der,
+ RANAP_PeriodicReportingIndicator_decode_xer,
+ RANAP_PeriodicReportingIndicator_encode_xer,
+ RANAP_PeriodicReportingIndicator_decode_uper,
+ RANAP_PeriodicReportingIndicator_encode_uper,
+ RANAP_PeriodicReportingIndicator_decode_aper,
+ RANAP_PeriodicReportingIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PeriodicReportingIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_PeriodicReportingIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_PeriodicReportingIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PeriodicReportingIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PeriodicReportingIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_PeriodicReportingIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PeriodicReportingIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_PeriodicReportingIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PermanentNAS-UE-ID.c b/src/ranap/RANAP_PermanentNAS-UE-ID.c
new file mode 100644
index 0000000..87e22fa
--- /dev/null
+++ b/src/ranap/RANAP_PermanentNAS-UE-ID.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PermanentNAS-UE-ID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PermanentNAS_UE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PermanentNAS_UE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PermanentNAS_UE_ID, choice.iMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PermanentNAS_UE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iMSI */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_PermanentNAS_UE_ID_specs_1 = {
+ sizeof(struct RANAP_PermanentNAS_UE_ID),
+ offsetof(struct RANAP_PermanentNAS_UE_ID, _asn_ctx),
+ offsetof(struct RANAP_PermanentNAS_UE_ID, present),
+ sizeof(((struct RANAP_PermanentNAS_UE_ID *)0)->present),
+ asn_MAP_RANAP_PermanentNAS_UE_ID_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PermanentNAS_UE_ID = {
+ "RANAP_PermanentNAS-UE-ID",
+ "RANAP_PermanentNAS-UE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_PermanentNAS_UE_ID_constr_1,
+ asn_MBR_RANAP_PermanentNAS_UE_ID_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_PermanentNAS_UE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PermittedEncryptionAlgorithms.c b/src/ranap/RANAP_PermittedEncryptionAlgorithms.c
new file mode 100644
index 0000000..fe7d11d
--- /dev/null
+++ b/src/ranap/RANAP_PermittedEncryptionAlgorithms.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PermittedEncryptionAlgorithms.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PermittedEncryptionAlgorithms_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PermittedEncryptionAlgorithms_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_EncryptionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PermittedEncryptionAlgorithms_specs_1 = {
+ sizeof(struct RANAP_PermittedEncryptionAlgorithms),
+ offsetof(struct RANAP_PermittedEncryptionAlgorithms, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PermittedEncryptionAlgorithms = {
+ "RANAP_PermittedEncryptionAlgorithms",
+ "RANAP_PermittedEncryptionAlgorithms",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1,
+ sizeof(asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1)
+ /sizeof(asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1)
+ /sizeof(asn_DEF_RANAP_PermittedEncryptionAlgorithms_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PermittedEncryptionAlgorithms_constr_1,
+ asn_MBR_RANAP_PermittedEncryptionAlgorithms_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PermittedEncryptionAlgorithms_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.c b/src/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.c
new file mode 100644
index 0000000..5ab24af
--- /dev/null
+++ b/src/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PermittedIntegrityProtectionAlgorithms.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PermittedIntegrityProtectionAlgorithms_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 16l } /* (SIZE(1..16)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PermittedIntegrityProtectionAlgorithms_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IntegrityProtectionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PermittedIntegrityProtectionAlgorithms_specs_1 = {
+ sizeof(struct RANAP_PermittedIntegrityProtectionAlgorithms),
+ offsetof(struct RANAP_PermittedIntegrityProtectionAlgorithms, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms = {
+ "RANAP_PermittedIntegrityProtectionAlgorithms",
+ "RANAP_PermittedIntegrityProtectionAlgorithms",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1,
+ sizeof(asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1)
+ /sizeof(asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1)
+ /sizeof(asn_DEF_RANAP_PermittedIntegrityProtectionAlgorithms_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PermittedIntegrityProtectionAlgorithms_constr_1,
+ asn_MBR_RANAP_PermittedIntegrityProtectionAlgorithms_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PermittedIntegrityProtectionAlgorithms_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Port-Number.c b/src/ranap/RANAP_Port-Number.c
new file mode 100644
index 0000000..e68b262
--- /dev/null
+++ b/src/ranap/RANAP_Port-Number.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Port-Number.h>
+
+int
+RANAP_Port_Number_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Port_Number_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Port_Number_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Port_Number_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Port_Number_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Port_Number_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Port_Number_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Port_Number_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Port_Number_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Port_Number_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Port_Number_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Port_Number_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Port_Number_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Port_Number_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Port_Number_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Port_Number = {
+ "RANAP_Port-Number",
+ "RANAP_Port-Number",
+ RANAP_Port_Number_free,
+ RANAP_Port_Number_print,
+ RANAP_Port_Number_constraint,
+ RANAP_Port_Number_decode_ber,
+ RANAP_Port_Number_encode_der,
+ RANAP_Port_Number_decode_xer,
+ RANAP_Port_Number_encode_xer,
+ RANAP_Port_Number_decode_uper,
+ RANAP_Port_Number_encode_uper,
+ RANAP_Port_Number_decode_aper,
+ RANAP_Port_Number_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Port_Number_tags_1,
+ sizeof(asn_DEF_RANAP_Port_Number_tags_1)
+ /sizeof(asn_DEF_RANAP_Port_Number_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Port_Number_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Port_Number_tags_1)
+ /sizeof(asn_DEF_RANAP_Port_Number_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Port_Number_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PositionData.c b/src/ranap/RANAP_PositionData.c
new file mode 100644
index 0000000..c96d2ed
--- /dev/null
+++ b/src/ranap/RANAP_PositionData.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositionData.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_PositionData_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PositionData, positioningDataDiscriminator),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PositioningDataDiscriminator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "positioningDataDiscriminator"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_PositionData, positioningDataSet),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PositioningDataSet,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "positioningDataSet"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_PositionData, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_PositionData_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_PositionData_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PositionData_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* positioningDataDiscriminator */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* positioningDataSet */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_PositionData_specs_1 = {
+ sizeof(struct RANAP_PositionData),
+ offsetof(struct RANAP_PositionData, _asn_ctx),
+ asn_MAP_RANAP_PositionData_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_PositionData_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositionData = {
+ "RANAP_PositionData",
+ "RANAP_PositionData",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositionData_tags_1,
+ sizeof(asn_DEF_RANAP_PositionData_tags_1)
+ /sizeof(asn_DEF_RANAP_PositionData_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositionData_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositionData_tags_1)
+ /sizeof(asn_DEF_RANAP_PositionData_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_PositionData_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_PositionData_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PositionDataSpecificToGERANIuMode.c b/src/ranap/RANAP_PositionDataSpecificToGERANIuMode.c
new file mode 100644
index 0000000..6338fa4
--- /dev/null
+++ b/src/ranap/RANAP_PositionDataSpecificToGERANIuMode.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositionDataSpecificToGERANIuMode.h>
+
+int
+RANAP_PositionDataSpecificToGERANIuMode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_PositionDataSpecificToGERANIuMode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PositionDataSpecificToGERANIuMode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PositionDataSpecificToGERANIuMode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositionDataSpecificToGERANIuMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositionDataSpecificToGERANIuMode = {
+ "RANAP_PositionDataSpecificToGERANIuMode",
+ "RANAP_PositionDataSpecificToGERANIuMode",
+ RANAP_PositionDataSpecificToGERANIuMode_free,
+ RANAP_PositionDataSpecificToGERANIuMode_print,
+ RANAP_PositionDataSpecificToGERANIuMode_constraint,
+ RANAP_PositionDataSpecificToGERANIuMode_decode_ber,
+ RANAP_PositionDataSpecificToGERANIuMode_encode_der,
+ RANAP_PositionDataSpecificToGERANIuMode_decode_xer,
+ RANAP_PositionDataSpecificToGERANIuMode_encode_xer,
+ RANAP_PositionDataSpecificToGERANIuMode_decode_uper,
+ RANAP_PositionDataSpecificToGERANIuMode_encode_uper,
+ RANAP_PositionDataSpecificToGERANIuMode_decode_aper,
+ RANAP_PositionDataSpecificToGERANIuMode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1,
+ sizeof(asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1)
+ /sizeof(asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1)
+ /sizeof(asn_DEF_RANAP_PositionDataSpecificToGERANIuMode_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PositioningDataDiscriminator.c b/src/ranap/RANAP_PositioningDataDiscriminator.c
new file mode 100644
index 0000000..5892f08
--- /dev/null
+++ b/src/ranap/RANAP_PositioningDataDiscriminator.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositioningDataDiscriminator.h>
+
+int
+RANAP_PositioningDataDiscriminator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_PositioningDataDiscriminator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PositioningDataDiscriminator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningDataDiscriminator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PositioningDataDiscriminator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningDataDiscriminator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PositioningDataDiscriminator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningDataDiscriminator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PositioningDataDiscriminator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PositioningDataDiscriminator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PositioningDataDiscriminator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningDataDiscriminator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PositioningDataDiscriminator_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PositioningDataDiscriminator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningDataDiscriminator = {
+ "RANAP_PositioningDataDiscriminator",
+ "RANAP_PositioningDataDiscriminator",
+ RANAP_PositioningDataDiscriminator_free,
+ RANAP_PositioningDataDiscriminator_print,
+ RANAP_PositioningDataDiscriminator_constraint,
+ RANAP_PositioningDataDiscriminator_decode_ber,
+ RANAP_PositioningDataDiscriminator_encode_der,
+ RANAP_PositioningDataDiscriminator_decode_xer,
+ RANAP_PositioningDataDiscriminator_encode_xer,
+ RANAP_PositioningDataDiscriminator_decode_uper,
+ RANAP_PositioningDataDiscriminator_encode_uper,
+ RANAP_PositioningDataDiscriminator_decode_aper,
+ RANAP_PositioningDataDiscriminator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositioningDataDiscriminator_tags_1,
+ sizeof(asn_DEF_RANAP_PositioningDataDiscriminator_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningDataDiscriminator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositioningDataDiscriminator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositioningDataDiscriminator_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningDataDiscriminator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PositioningDataDiscriminator_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PositioningDataSet.c b/src/ranap/RANAP_PositioningDataSet.c
new file mode 100644
index 0000000..c978f1f
--- /dev/null
+++ b/src/ranap/RANAP_PositioningDataSet.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositioningDataSet.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_PositioningDataSet_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 4, 4, 1l, 9l } /* (SIZE(1..9)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PositioningDataSet_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_PositioningMethodAndUsage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PositioningDataSet_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_PositioningDataSet_specs_1 = {
+ sizeof(struct RANAP_PositioningDataSet),
+ offsetof(struct RANAP_PositioningDataSet, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningDataSet = {
+ "RANAP_PositioningDataSet",
+ "RANAP_PositioningDataSet",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositioningDataSet_tags_1,
+ sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositioningDataSet_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PositioningDataSet_constr_1,
+ asn_MBR_RANAP_PositioningDataSet_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_PositioningDataSet_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PositioningMethodAndUsage.c b/src/ranap/RANAP_PositioningMethodAndUsage.c
new file mode 100644
index 0000000..4b6a2f2
--- /dev/null
+++ b/src/ranap/RANAP_PositioningMethodAndUsage.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositioningMethodAndUsage.h>
+
+int
+RANAP_PositioningMethodAndUsage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_PositioningMethodAndUsage_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PositioningMethodAndUsage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningMethodAndUsage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PositioningMethodAndUsage_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningMethodAndUsage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PositioningMethodAndUsage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningMethodAndUsage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PositioningMethodAndUsage_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PositioningMethodAndUsage_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PositioningMethodAndUsage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningMethodAndUsage_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PositioningMethodAndUsage_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PositioningMethodAndUsage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningMethodAndUsage = {
+ "RANAP_PositioningMethodAndUsage",
+ "RANAP_PositioningMethodAndUsage",
+ RANAP_PositioningMethodAndUsage_free,
+ RANAP_PositioningMethodAndUsage_print,
+ RANAP_PositioningMethodAndUsage_constraint,
+ RANAP_PositioningMethodAndUsage_decode_ber,
+ RANAP_PositioningMethodAndUsage_encode_der,
+ RANAP_PositioningMethodAndUsage_decode_xer,
+ RANAP_PositioningMethodAndUsage_encode_xer,
+ RANAP_PositioningMethodAndUsage_decode_uper,
+ RANAP_PositioningMethodAndUsage_encode_uper,
+ RANAP_PositioningMethodAndUsage_decode_aper,
+ RANAP_PositioningMethodAndUsage_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositioningMethodAndUsage_tags_1,
+ sizeof(asn_DEF_RANAP_PositioningMethodAndUsage_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningMethodAndUsage_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositioningMethodAndUsage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositioningMethodAndUsage_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningMethodAndUsage_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PositioningMethodAndUsage_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PositioningPriority.c b/src/ranap/RANAP_PositioningPriority.c
new file mode 100644
index 0000000..547e4f4
--- /dev/null
+++ b/src/ranap/RANAP_PositioningPriority.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PositioningPriority.h>
+
+int
+RANAP_PositioningPriority_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PositioningPriority_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_PositioningPriority_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PositioningPriority_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningPriority_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PositioningPriority_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningPriority_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PositioningPriority_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PositioningPriority_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PositioningPriority_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PositioningPriority_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PositioningPriority_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PositioningPriority_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PositioningPriority_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_PositioningPriority_value2enum_1[] = {
+ { 0, 13, "high-Priority" },
+ { 1, 15, "normal-Priority" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_PositioningPriority_enum2value_1[] = {
+ 0, /* high-Priority(0) */
+ 1 /* normal-Priority(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_PositioningPriority_specs_1 = {
+ asn_MAP_RANAP_PositioningPriority_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_PositioningPriority_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PositioningPriority_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningPriority = {
+ "RANAP_PositioningPriority",
+ "RANAP_PositioningPriority",
+ RANAP_PositioningPriority_free,
+ RANAP_PositioningPriority_print,
+ RANAP_PositioningPriority_constraint,
+ RANAP_PositioningPriority_decode_ber,
+ RANAP_PositioningPriority_encode_der,
+ RANAP_PositioningPriority_decode_xer,
+ RANAP_PositioningPriority_encode_xer,
+ RANAP_PositioningPriority_decode_uper,
+ RANAP_PositioningPriority_encode_uper,
+ RANAP_PositioningPriority_decode_aper,
+ RANAP_PositioningPriority_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PositioningPriority_tags_1,
+ sizeof(asn_DEF_RANAP_PositioningPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningPriority_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PositioningPriority_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PositioningPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_PositioningPriority_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PositioningPriority_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_PositioningPriority_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Pre-emptionCapability.c b/src/ranap/RANAP_Pre-emptionCapability.c
new file mode 100644
index 0000000..0c4df99
--- /dev/null
+++ b/src/ranap/RANAP_Pre-emptionCapability.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Pre-emptionCapability.h>
+
+int
+RANAP_Pre_emptionCapability_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Pre_emptionCapability_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Pre_emptionCapability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionCapability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionCapability_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionCapability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionCapability_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionCapability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionCapability_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionCapability_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionCapability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Pre_emptionCapability_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Pre_emptionCapability_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Pre_emptionCapability_value2enum_1[] = {
+ { 0, 29, "shall-not-trigger-pre-emption" },
+ { 1, 23, "may-trigger-pre-emption" }
+};
+static const unsigned int asn_MAP_RANAP_Pre_emptionCapability_enum2value_1[] = {
+ 1, /* may-trigger-pre-emption(1) */
+ 0 /* shall-not-trigger-pre-emption(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Pre_emptionCapability_specs_1 = {
+ asn_MAP_RANAP_Pre_emptionCapability_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Pre_emptionCapability_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Pre_emptionCapability_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Pre_emptionCapability = {
+ "RANAP_Pre-emptionCapability",
+ "RANAP_Pre-emptionCapability",
+ RANAP_Pre_emptionCapability_free,
+ RANAP_Pre_emptionCapability_print,
+ RANAP_Pre_emptionCapability_constraint,
+ RANAP_Pre_emptionCapability_decode_ber,
+ RANAP_Pre_emptionCapability_encode_der,
+ RANAP_Pre_emptionCapability_decode_xer,
+ RANAP_Pre_emptionCapability_encode_xer,
+ RANAP_Pre_emptionCapability_decode_uper,
+ RANAP_Pre_emptionCapability_encode_uper,
+ RANAP_Pre_emptionCapability_decode_aper,
+ RANAP_Pre_emptionCapability_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Pre_emptionCapability_tags_1,
+ sizeof(asn_DEF_RANAP_Pre_emptionCapability_tags_1)
+ /sizeof(asn_DEF_RANAP_Pre_emptionCapability_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Pre_emptionCapability_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Pre_emptionCapability_tags_1)
+ /sizeof(asn_DEF_RANAP_Pre_emptionCapability_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Pre_emptionCapability_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Pre_emptionCapability_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Pre-emptionVulnerability.c b/src/ranap/RANAP_Pre-emptionVulnerability.c
new file mode 100644
index 0000000..3b1fb1f
--- /dev/null
+++ b/src/ranap/RANAP_Pre-emptionVulnerability.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Pre-emptionVulnerability.h>
+
+int
+RANAP_Pre_emptionVulnerability_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Pre_emptionVulnerability_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Pre_emptionVulnerability_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionVulnerability_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionVulnerability_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionVulnerability_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionVulnerability_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionVulnerability_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionVulnerability_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Pre_emptionVulnerability_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Pre_emptionVulnerability_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Pre_emptionVulnerability_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Pre_emptionVulnerability_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Pre_emptionVulnerability_value2enum_1[] = {
+ { 0, 16, "not-pre-emptable" },
+ { 1, 12, "pre-emptable" }
+};
+static const unsigned int asn_MAP_RANAP_Pre_emptionVulnerability_enum2value_1[] = {
+ 0, /* not-pre-emptable(0) */
+ 1 /* pre-emptable(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Pre_emptionVulnerability_specs_1 = {
+ asn_MAP_RANAP_Pre_emptionVulnerability_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Pre_emptionVulnerability_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Pre_emptionVulnerability_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Pre_emptionVulnerability = {
+ "RANAP_Pre-emptionVulnerability",
+ "RANAP_Pre-emptionVulnerability",
+ RANAP_Pre_emptionVulnerability_free,
+ RANAP_Pre_emptionVulnerability_print,
+ RANAP_Pre_emptionVulnerability_constraint,
+ RANAP_Pre_emptionVulnerability_decode_ber,
+ RANAP_Pre_emptionVulnerability_encode_der,
+ RANAP_Pre_emptionVulnerability_decode_xer,
+ RANAP_Pre_emptionVulnerability_encode_xer,
+ RANAP_Pre_emptionVulnerability_decode_uper,
+ RANAP_Pre_emptionVulnerability_encode_uper,
+ RANAP_Pre_emptionVulnerability_decode_aper,
+ RANAP_Pre_emptionVulnerability_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Pre_emptionVulnerability_tags_1,
+ sizeof(asn_DEF_RANAP_Pre_emptionVulnerability_tags_1)
+ /sizeof(asn_DEF_RANAP_Pre_emptionVulnerability_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Pre_emptionVulnerability_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Pre_emptionVulnerability_tags_1)
+ /sizeof(asn_DEF_RANAP_Pre_emptionVulnerability_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Pre_emptionVulnerability_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Pre_emptionVulnerability_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Presence.c b/src/ranap/RANAP_Presence.c
new file mode 100644
index 0000000..5e8bf00
--- /dev/null
+++ b/src/ranap/RANAP_Presence.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Presence.h>
+
+int
+RANAP_Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Presence_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Presence_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Presence_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Presence_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Presence_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Presence_value2enum_1[] = {
+ { 0, 8, "optional" },
+ { 1, 11, "conditional" },
+ { 2, 9, "mandatory" }
+};
+static const unsigned int asn_MAP_RANAP_Presence_enum2value_1[] = {
+ 1, /* conditional(1) */
+ 2, /* mandatory(2) */
+ 0 /* optional(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Presence_specs_1 = {
+ asn_MAP_RANAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Presence_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Presence_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Presence = {
+ "RANAP_Presence",
+ "RANAP_Presence",
+ RANAP_Presence_free,
+ RANAP_Presence_print,
+ RANAP_Presence_constraint,
+ RANAP_Presence_decode_ber,
+ RANAP_Presence_encode_der,
+ RANAP_Presence_decode_xer,
+ RANAP_Presence_encode_xer,
+ RANAP_Presence_decode_uper,
+ RANAP_Presence_encode_uper,
+ RANAP_Presence_decode_aper,
+ RANAP_Presence_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Presence_tags_1,
+ sizeof(asn_DEF_RANAP_Presence_tags_1)
+ /sizeof(asn_DEF_RANAP_Presence_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Presence_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Presence_tags_1)
+ /sizeof(asn_DEF_RANAP_Presence_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Presence_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Presence_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Priority-Class-Indicator.c b/src/ranap/RANAP_Priority-Class-Indicator.c
new file mode 100644
index 0000000..ad02157
--- /dev/null
+++ b/src/ranap/RANAP_Priority-Class-Indicator.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Priority-Class-Indicator.h>
+
+int
+RANAP_Priority_Class_Indicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_Priority_Class_Indicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Priority_Class_Indicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Priority_Class_Indicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Priority_Class_Indicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Priority_Class_Indicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Priority_Class_Indicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Priority_Class_Indicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Priority_Class_Indicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Priority_Class_Indicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Priority_Class_Indicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Priority_Class_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Priority_Class_Indicator_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Priority_Class_Indicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Priority_Class_Indicator = {
+ "RANAP_Priority-Class-Indicator",
+ "RANAP_Priority-Class-Indicator",
+ RANAP_Priority_Class_Indicator_free,
+ RANAP_Priority_Class_Indicator_print,
+ RANAP_Priority_Class_Indicator_constraint,
+ RANAP_Priority_Class_Indicator_decode_ber,
+ RANAP_Priority_Class_Indicator_encode_der,
+ RANAP_Priority_Class_Indicator_decode_xer,
+ RANAP_Priority_Class_Indicator_encode_xer,
+ RANAP_Priority_Class_Indicator_decode_uper,
+ RANAP_Priority_Class_Indicator_encode_uper,
+ RANAP_Priority_Class_Indicator_decode_aper,
+ RANAP_Priority_Class_Indicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Priority_Class_Indicator_tags_1,
+ sizeof(asn_DEF_RANAP_Priority_Class_Indicator_tags_1)
+ /sizeof(asn_DEF_RANAP_Priority_Class_Indicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Priority_Class_Indicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Priority_Class_Indicator_tags_1)
+ /sizeof(asn_DEF_RANAP_Priority_Class_Indicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Priority_Class_Indicator_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PriorityLevel.c b/src/ranap/RANAP_PriorityLevel.c
new file mode 100644
index 0000000..399298a
--- /dev/null
+++ b/src/ranap/RANAP_PriorityLevel.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PriorityLevel.h>
+
+int
+RANAP_PriorityLevel_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_PriorityLevel_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_PriorityLevel_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_PriorityLevel_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PriorityLevel_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_PriorityLevel_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PriorityLevel_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_PriorityLevel_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_PriorityLevel_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_PriorityLevel_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_PriorityLevel_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_PriorityLevel_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_PriorityLevel_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_PriorityLevel_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (0..15) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PriorityLevel_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PriorityLevel = {
+ "RANAP_PriorityLevel",
+ "RANAP_PriorityLevel",
+ RANAP_PriorityLevel_free,
+ RANAP_PriorityLevel_print,
+ RANAP_PriorityLevel_constraint,
+ RANAP_PriorityLevel_decode_ber,
+ RANAP_PriorityLevel_encode_der,
+ RANAP_PriorityLevel_decode_xer,
+ RANAP_PriorityLevel_encode_xer,
+ RANAP_PriorityLevel_decode_uper,
+ RANAP_PriorityLevel_encode_uper,
+ RANAP_PriorityLevel_decode_aper,
+ RANAP_PriorityLevel_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PriorityLevel_tags_1,
+ sizeof(asn_DEF_RANAP_PriorityLevel_tags_1)
+ /sizeof(asn_DEF_RANAP_PriorityLevel_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PriorityLevel_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PriorityLevel_tags_1)
+ /sizeof(asn_DEF_RANAP_PriorityLevel_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_PriorityLevel_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_PrivateIE-ID.c b/src/ranap/RANAP_PrivateIE-ID.c
new file mode 100644
index 0000000..1f1bd97
--- /dev/null
+++ b/src/ranap/RANAP_PrivateIE-ID.c
@@ -0,0 +1,102 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PrivateIE-ID.h>
+
+static int
+memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RANAP_PrivateIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_PrivateIE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PrivateIE_ID, choice.local),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_local_constraint_1,
+ &asn_PER_memb_local_constr_2,
+ 0,
+ "local"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PrivateIE_ID, choice.global),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OBJECT_IDENTIFIER,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "global"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PrivateIE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_PrivateIE_ID_specs_1 = {
+ sizeof(struct RANAP_PrivateIE_ID),
+ offsetof(struct RANAP_PrivateIE_ID, _asn_ctx),
+ offsetof(struct RANAP_PrivateIE_ID, present),
+ sizeof(((struct RANAP_PrivateIE_ID *)0)->present),
+ asn_MAP_RANAP_PrivateIE_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PrivateIE_ID = {
+ "RANAP_PrivateIE-ID",
+ "RANAP_PrivateIE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_PrivateIE_ID_constr_1,
+ asn_MBR_RANAP_PrivateIE_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_PrivateIE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_PrivateMessage.c b/src/ranap/RANAP_PrivateMessage.c
new file mode 100644
index 0000000..d4c8cb6
--- /dev/null
+++ b/src/ranap/RANAP_PrivateMessage.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_PrivateMessage.h>
+
+static int
+memb_privateMessage_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_privateMessage_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_privateMessage_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_privateMessage_ies_specs_2 = {
+ sizeof(struct privateMessage_ies),
+ offsetof(struct privateMessage_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_privateMessage_ies_2 = {
+ "privateMessage-ies",
+ "privateMessage-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_privateMessage_ies_tags_2,
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_privateMessage_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_privateMessage_ies_constr_2,
+ asn_MBR_privateMessage_ies_2,
+ 1, /* Single element */
+ &asn_SPC_privateMessage_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_PrivateMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_PrivateMessage, privateMessage_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_privateMessage_ies_2,
+ memb_privateMessage_ies_constraint_1,
+ &asn_PER_memb_privateMessage_ies_constr_2,
+ 0,
+ "privateMessage-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_PrivateMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_PrivateMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateMessage-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_PrivateMessage_specs_1 = {
+ sizeof(struct RANAP_PrivateMessage),
+ offsetof(struct RANAP_PrivateMessage, _asn_ctx),
+ asn_MAP_RANAP_PrivateMessage_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_PrivateMessage = {
+ "RANAP_PrivateMessage",
+ "RANAP_PrivateMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_PrivateMessage_tags_1,
+ sizeof(asn_DEF_RANAP_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_PrivateMessage_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_PrivateMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_PrivateMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_PrivateMessage_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_PrivateMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProcedureCode.c b/src/ranap/RANAP_ProcedureCode.c
new file mode 100644
index 0000000..8729ba0
--- /dev/null
+++ b/src/ranap/RANAP_ProcedureCode.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+
+int
+RANAP_ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ProcedureCode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ProcedureCode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProcedureCode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProcedureCode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProcedureCode = {
+ "RANAP_ProcedureCode",
+ "RANAP_ProcedureCode",
+ RANAP_ProcedureCode_free,
+ RANAP_ProcedureCode_print,
+ RANAP_ProcedureCode_constraint,
+ RANAP_ProcedureCode_decode_ber,
+ RANAP_ProcedureCode_encode_der,
+ RANAP_ProcedureCode_decode_xer,
+ RANAP_ProcedureCode_encode_xer,
+ RANAP_ProcedureCode_decode_uper,
+ RANAP_ProcedureCode_encode_uper,
+ RANAP_ProcedureCode_decode_aper,
+ RANAP_ProcedureCode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProcedureCode_tags_1,
+ sizeof(asn_DEF_RANAP_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_RANAP_ProcedureCode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProcedureCode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_RANAP_ProcedureCode_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProcedureCode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ProtocolError-IE-ContainerList.c b/src/ranap/RANAP_ProtocolError-IE-ContainerList.c
new file mode 100644
index 0000000..8f2c0ab
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolError-IE-ContainerList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolError-IE-ContainerList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolError_IE_ContainerList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolError_IE_ContainerList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ProtocolError_IE_ContainerList_specs_1 = {
+ sizeof(struct RANAP_ProtocolError_IE_ContainerList),
+ offsetof(struct RANAP_ProtocolError_IE_ContainerList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolError_IE_ContainerList = {
+ "RANAP_ProtocolError-IE-ContainerList",
+ "RANAP_ProtocolError-IE-ContainerList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolError_IE_ContainerList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolError_IE_ContainerList_constr_1,
+ asn_MBR_RANAP_ProtocolError_IE_ContainerList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ProtocolError_IE_ContainerList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolExtensionContainer.c b/src/ranap/RANAP_ProtocolExtensionContainer.c
new file mode 100644
index 0000000..55d8e5e
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolExtensionContainer.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolExtensionContainer.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolExtensionContainer_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolExtensionContainer_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolExtensionField,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolExtensionContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ProtocolExtensionContainer_specs_1 = {
+ sizeof(struct RANAP_ProtocolExtensionContainer),
+ offsetof(struct RANAP_ProtocolExtensionContainer, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionContainer = {
+ "RANAP_ProtocolExtensionContainer",
+ "RANAP_ProtocolExtensionContainer",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolExtensionContainer_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolExtensionContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolExtensionContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolExtensionContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionContainer_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolExtensionContainer_constr_1,
+ asn_MBR_RANAP_ProtocolExtensionContainer_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ProtocolExtensionContainer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolExtensionField.c b/src/ranap/RANAP_ProtocolExtensionField.c
new file mode 100644
index 0000000..7dc81c0
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolExtensionField.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolExtensionField.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolExtensionField_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolExtensionField, id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolExtensionField, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolExtensionField, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolExtensionField_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ProtocolExtensionField_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ProtocolExtensionField_specs_1 = {
+ sizeof(struct RANAP_ProtocolExtensionField),
+ offsetof(struct RANAP_ProtocolExtensionField, _asn_ctx),
+ asn_MAP_RANAP_ProtocolExtensionField_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionField = {
+ "RANAP_ProtocolExtensionField",
+ "RANAP_ProtocolExtensionField",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolExtensionField_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolExtensionField_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionField_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolExtensionField_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolExtensionField_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionField_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ProtocolExtensionField_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_ProtocolExtensionField_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolExtensionID.c b/src/ranap/RANAP_ProtocolExtensionID.c
new file mode 100644
index 0000000..c3fdd0f
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolExtensionID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolExtensionID.h>
+
+int
+RANAP_ProtocolExtensionID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ProtocolExtensionID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ProtocolExtensionID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolExtensionID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolExtensionID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolExtensionID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolExtensionID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolExtensionID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolExtensionID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolExtensionID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolExtensionID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProtocolExtensionID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolExtensionID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolExtensionID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolExtensionID = {
+ "RANAP_ProtocolExtensionID",
+ "RANAP_ProtocolExtensionID",
+ RANAP_ProtocolExtensionID_free,
+ RANAP_ProtocolExtensionID_print,
+ RANAP_ProtocolExtensionID_constraint,
+ RANAP_ProtocolExtensionID_decode_ber,
+ RANAP_ProtocolExtensionID_encode_der,
+ RANAP_ProtocolExtensionID_decode_xer,
+ RANAP_ProtocolExtensionID_encode_xer,
+ RANAP_ProtocolExtensionID_decode_uper,
+ RANAP_ProtocolExtensionID_encode_uper,
+ RANAP_ProtocolExtensionID_decode_aper,
+ RANAP_ProtocolExtensionID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolExtensionID_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolExtensionID_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolExtensionID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolExtensionID_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolExtensionID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolExtensionID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ProtocolIE-Container.c b/src/ranap/RANAP_ProtocolIE-Container.c
new file mode 100644
index 0000000..592222d
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolIE-Container.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolIE-Container.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolIE_Container_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolIE_Container_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolIE_Container_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ProtocolIE_Container_specs_1 = {
+ sizeof(struct RANAP_ProtocolIE_Container),
+ offsetof(struct RANAP_ProtocolIE_Container, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_Container = {
+ "RANAP_ProtocolIE-Container",
+ "RANAP_ProtocolIE-Container",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolIE_Container_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolIE_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_Container_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolIE_Container_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolIE_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_Container_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolIE_Container_constr_1,
+ asn_MBR_RANAP_ProtocolIE_Container_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ProtocolIE_Container_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolIE-ContainerPair.c b/src/ranap/RANAP_ProtocolIE-ContainerPair.c
new file mode 100644
index 0000000..ce9cec3
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolIE-ContainerPair.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolIE-ContainerPair.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolIE_ContainerPair_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolIE_ContainerPair_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_FieldPair,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_ProtocolIE_ContainerPair_specs_1 = {
+ sizeof(struct RANAP_ProtocolIE_ContainerPair),
+ offsetof(struct RANAP_ProtocolIE_ContainerPair, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_ContainerPair = {
+ "RANAP_ProtocolIE-ContainerPair",
+ "RANAP_ProtocolIE-ContainerPair",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_ContainerPair_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolIE_ContainerPair_constr_1,
+ asn_MBR_RANAP_ProtocolIE_ContainerPair_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_ProtocolIE_ContainerPair_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolIE-FieldPair.c b/src/ranap/RANAP_ProtocolIE-FieldPair.c
new file mode 100644
index 0000000..5f1ab9a
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolIE-FieldPair.c
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolIE-FieldPair.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_ProtocolIE_FieldPair_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolIE_FieldPair, id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolIE_FieldPair, firstCriticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "firstCriticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolIE_FieldPair, firstValue),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "firstValue"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolIE_FieldPair, secondCriticality),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "secondCriticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProtocolIE_FieldPair, secondValue),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "secondValue"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ProtocolIE_FieldPair_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* firstCriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* firstValue */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* secondCriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* secondValue */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ProtocolIE_FieldPair_specs_1 = {
+ sizeof(struct RANAP_ProtocolIE_FieldPair),
+ offsetof(struct RANAP_ProtocolIE_FieldPair, _asn_ctx),
+ asn_MAP_RANAP_ProtocolIE_FieldPair_tag2el_1,
+ 5, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_FieldPair = {
+ "RANAP_ProtocolIE-FieldPair",
+ "RANAP_ProtocolIE-FieldPair",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_FieldPair_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ProtocolIE_FieldPair_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_ProtocolIE_FieldPair_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ProtocolIE-ID.c b/src/ranap/RANAP_ProtocolIE-ID.c
new file mode 100644
index 0000000..b4fadb4
--- /dev/null
+++ b/src/ranap/RANAP_ProtocolIE-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProtocolIE-ID.h>
+
+int
+RANAP_ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_ProtocolIE_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProtocolIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ProtocolIE_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProtocolIE_ID = {
+ "RANAP_ProtocolIE-ID",
+ "RANAP_ProtocolIE-ID",
+ RANAP_ProtocolIE_ID_free,
+ RANAP_ProtocolIE_ID_print,
+ RANAP_ProtocolIE_ID_constraint,
+ RANAP_ProtocolIE_ID_decode_ber,
+ RANAP_ProtocolIE_ID_encode_der,
+ RANAP_ProtocolIE_ID_decode_xer,
+ RANAP_ProtocolIE_ID_encode_xer,
+ RANAP_ProtocolIE_ID_decode_uper,
+ RANAP_ProtocolIE_ID_encode_uper,
+ RANAP_ProtocolIE_ID_decode_aper,
+ RANAP_ProtocolIE_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ProtocolIE_ID_tags_1,
+ sizeof(asn_DEF_RANAP_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ProtocolIE_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_ProtocolIE_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ProtocolIE_ID_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ProvidedData.c b/src/ranap/RANAP_ProvidedData.c
new file mode 100644
index 0000000..067f250
--- /dev/null
+++ b/src/ranap/RANAP_ProvidedData.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ProvidedData.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_ProvidedData_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ProvidedData_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ProvidedData, choice.shared_network_information),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Shared_Network_Information,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "shared-network-information"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ProvidedData_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* shared-network-information */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_ProvidedData_specs_1 = {
+ sizeof(struct RANAP_ProvidedData),
+ offsetof(struct RANAP_ProvidedData, _asn_ctx),
+ offsetof(struct RANAP_ProvidedData, present),
+ sizeof(((struct RANAP_ProvidedData *)0)->present),
+ asn_MAP_RANAP_ProvidedData_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0,
+ 1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ProvidedData = {
+ "RANAP_ProvidedData",
+ "RANAP_ProvidedData",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_ProvidedData_constr_1,
+ asn_MBR_RANAP_ProvidedData_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ProvidedData_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_QueuingAllowed.c b/src/ranap/RANAP_QueuingAllowed.c
new file mode 100644
index 0000000..62cf81b
--- /dev/null
+++ b/src/ranap/RANAP_QueuingAllowed.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_QueuingAllowed.h>
+
+int
+RANAP_QueuingAllowed_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_QueuingAllowed_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_QueuingAllowed_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_QueuingAllowed_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_QueuingAllowed_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_QueuingAllowed_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_QueuingAllowed_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_QueuingAllowed_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_QueuingAllowed_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_QueuingAllowed_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_QueuingAllowed_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_QueuingAllowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_QueuingAllowed_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_QueuingAllowed_value2enum_1[] = {
+ { 0, 20, "queueing-not-allowed" },
+ { 1, 16, "queueing-allowed" }
+};
+static const unsigned int asn_MAP_RANAP_QueuingAllowed_enum2value_1[] = {
+ 1, /* queueing-allowed(1) */
+ 0 /* queueing-not-allowed(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_QueuingAllowed_specs_1 = {
+ asn_MAP_RANAP_QueuingAllowed_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_QueuingAllowed_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_QueuingAllowed_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_QueuingAllowed = {
+ "RANAP_QueuingAllowed",
+ "RANAP_QueuingAllowed",
+ RANAP_QueuingAllowed_free,
+ RANAP_QueuingAllowed_print,
+ RANAP_QueuingAllowed_constraint,
+ RANAP_QueuingAllowed_decode_ber,
+ RANAP_QueuingAllowed_encode_der,
+ RANAP_QueuingAllowed_decode_xer,
+ RANAP_QueuingAllowed_encode_xer,
+ RANAP_QueuingAllowed_decode_uper,
+ RANAP_QueuingAllowed_encode_uper,
+ RANAP_QueuingAllowed_decode_aper,
+ RANAP_QueuingAllowed_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_QueuingAllowed_tags_1,
+ sizeof(asn_DEF_RANAP_QueuingAllowed_tags_1)
+ /sizeof(asn_DEF_RANAP_QueuingAllowed_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_QueuingAllowed_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_QueuingAllowed_tags_1)
+ /sizeof(asn_DEF_RANAP_QueuingAllowed_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_QueuingAllowed_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_QueuingAllowed_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-AssignmentRequest.c b/src/ranap/RANAP_RAB-AssignmentRequest.c
new file mode 100644
index 0000000..65882ed
--- /dev/null
+++ b/src/ranap/RANAP_RAB-AssignmentRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-AssignmentRequest.h>
+
+static int
+memb_raB_AssignmentRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_AssignmentRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_AssignmentRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_AssignmentRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_AssignmentRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_AssignmentRequest_ies_specs_2 = {
+ sizeof(struct raB_AssignmentRequest_ies),
+ offsetof(struct raB_AssignmentRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_AssignmentRequest_ies_2 = {
+ "raB-AssignmentRequest-ies",
+ "raB-AssignmentRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_AssignmentRequest_ies_tags_2,
+ sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_AssignmentRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_AssignmentRequest_ies_constr_2,
+ asn_MBR_raB_AssignmentRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_AssignmentRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_AssignmentRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentRequest, raB_AssignmentRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_AssignmentRequest_ies_2,
+ memb_raB_AssignmentRequest_ies_constraint_1,
+ &asn_PER_memb_raB_AssignmentRequest_ies_constr_2,
+ 0,
+ "raB-AssignmentRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_AssignmentRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_AssignmentRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-AssignmentRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_AssignmentRequest_specs_1 = {
+ sizeof(struct RANAP_RAB_AssignmentRequest),
+ offsetof(struct RANAP_RAB_AssignmentRequest, _asn_ctx),
+ asn_MAP_RANAP_RAB_AssignmentRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AssignmentRequest = {
+ "RANAP_RAB-AssignmentRequest",
+ "RANAP_RAB-AssignmentRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_AssignmentRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_AssignmentRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AssignmentRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_AssignmentRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_AssignmentRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AssignmentRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_AssignmentRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_AssignmentRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-AssignmentResponse.c b/src/ranap/RANAP_RAB-AssignmentResponse.c
new file mode 100644
index 0000000..1d7914a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-AssignmentResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-AssignmentResponse.h>
+
+static int
+memb_raB_AssignmentResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_AssignmentResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_AssignmentResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_AssignmentResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_AssignmentResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_AssignmentResponse_ies_specs_2 = {
+ sizeof(struct raB_AssignmentResponse_ies),
+ offsetof(struct raB_AssignmentResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_AssignmentResponse_ies_2 = {
+ "raB-AssignmentResponse-ies",
+ "raB-AssignmentResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_AssignmentResponse_ies_tags_2,
+ sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2)
+ /sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_AssignmentResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2)
+ /sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_AssignmentResponse_ies_constr_2,
+ asn_MBR_raB_AssignmentResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_AssignmentResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_AssignmentResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentResponse, raB_AssignmentResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_AssignmentResponse_ies_2,
+ memb_raB_AssignmentResponse_ies_constraint_1,
+ &asn_PER_memb_raB_AssignmentResponse_ies_constr_2,
+ 0,
+ "raB-AssignmentResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_AssignmentResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_AssignmentResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-AssignmentResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_AssignmentResponse_specs_1 = {
+ sizeof(struct RANAP_RAB_AssignmentResponse),
+ offsetof(struct RANAP_RAB_AssignmentResponse, _asn_ctx),
+ asn_MAP_RANAP_RAB_AssignmentResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AssignmentResponse = {
+ "RANAP_RAB-AssignmentResponse",
+ "RANAP_RAB-AssignmentResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_AssignmentResponse_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_AssignmentResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AssignmentResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_AssignmentResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_AssignmentResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AssignmentResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_AssignmentResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_AssignmentResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-AsymmetryIndicator.c b/src/ranap/RANAP_RAB-AsymmetryIndicator.c
new file mode 100644
index 0000000..2828d2d
--- /dev/null
+++ b/src/ranap/RANAP_RAB-AsymmetryIndicator.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-AsymmetryIndicator.h>
+
+int
+RANAP_RAB_AsymmetryIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RAB_AsymmetryIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAB_AsymmetryIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_AsymmetryIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAB_AsymmetryIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_AsymmetryIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAB_AsymmetryIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_AsymmetryIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAB_AsymmetryIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAB_AsymmetryIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAB_AsymmetryIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_AsymmetryIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_AsymmetryIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RAB_AsymmetryIndicator_value2enum_1[] = {
+ { 0, 23, "symmetric-bidirectional" },
+ { 1, 34, "asymmetric-unidirectional-downlink" },
+ { 2, 32, "asymmetric-unidirectional-uplink" },
+ { 3, 24, "asymmetric-bidirectional" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RAB_AsymmetryIndicator_enum2value_1[] = {
+ 3, /* asymmetric-bidirectional(3) */
+ 1, /* asymmetric-unidirectional-downlink(1) */
+ 2, /* asymmetric-unidirectional-uplink(2) */
+ 0 /* symmetric-bidirectional(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RAB_AsymmetryIndicator_specs_1 = {
+ asn_MAP_RANAP_RAB_AsymmetryIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RAB_AsymmetryIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_AsymmetryIndicator = {
+ "RANAP_RAB-AsymmetryIndicator",
+ "RANAP_RAB-AsymmetryIndicator",
+ RANAP_RAB_AsymmetryIndicator_free,
+ RANAP_RAB_AsymmetryIndicator_print,
+ RANAP_RAB_AsymmetryIndicator_constraint,
+ RANAP_RAB_AsymmetryIndicator_decode_ber,
+ RANAP_RAB_AsymmetryIndicator_encode_der,
+ RANAP_RAB_AsymmetryIndicator_decode_xer,
+ RANAP_RAB_AsymmetryIndicator_encode_xer,
+ RANAP_RAB_AsymmetryIndicator_decode_uper,
+ RANAP_RAB_AsymmetryIndicator_encode_uper,
+ RANAP_RAB_AsymmetryIndicator_decode_aper,
+ RANAP_RAB_AsymmetryIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_AsymmetryIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_AsymmetryIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RAB_AsymmetryIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.c b/src/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.c
new file mode 100644
index 0000000..a219ee6
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ContextItem-RANAP-RelocInf.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ContextItem_RANAP_RelocInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, dl_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, ul_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, dl_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, ul_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ContextItem_RANAP_RelocInf_oms_1[] = { 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ContextItem_RANAP_RelocInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ul-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ContextItem_RANAP_RelocInf_specs_1 = {
+ sizeof(struct RANAP_RAB_ContextItem_RANAP_RelocInf),
+ offsetof(struct RANAP_RAB_ContextItem_RANAP_RelocInf, _asn_ctx),
+ asn_MAP_RANAP_RAB_ContextItem_RANAP_RelocInf_tag2el_1,
+ 6, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ContextItem_RANAP_RelocInf_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 5, /* Start extensions */
+ 7 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf = {
+ "RANAP_RAB-ContextItem-RANAP-RelocInf",
+ "RANAP_RAB-ContextItem-RANAP-RelocInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextItem_RANAP_RelocInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ContextItem_RANAP_RelocInf_1,
+ 6, /* Elements count */
+ &asn_SPC_RANAP_RAB_ContextItem_RANAP_RelocInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ContextItem.c b/src/ranap/RANAP_RAB-ContextItem.c
new file mode 100644
index 0000000..abe94a9
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ContextItem.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ContextItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ContextItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ContextItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_ContextItem, dl_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_ContextItem, ul_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_ContextItem, dl_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_ContextItem, ul_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ContextItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ContextItem_oms_1[] = { 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ContextItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ContextItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ul-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ContextItem_specs_1 = {
+ sizeof(struct RANAP_RAB_ContextItem),
+ offsetof(struct RANAP_RAB_ContextItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_ContextItem_tag2el_1,
+ 6, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ContextItem_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 5, /* Start extensions */
+ 7 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextItem = {
+ "RANAP_RAB-ContextItem",
+ "RANAP_RAB-ContextItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ContextItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ContextItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ContextItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ContextItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ContextItem_1,
+ 6, /* Elements count */
+ &asn_SPC_RANAP_RAB_ContextItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.c b/src/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.c
new file mode 100644
index 0000000..c0ec066
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ContextList-RANAP-RelocInf.h>
+
+static int
+memb_raB_ContextList_RANAP_RelocInf_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ContextList_RANAP_RelocInf_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ContextList_RANAP_RelocInf_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ContextList_RANAP_RelocInf_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ContextList_RANAP_RelocInf_ies_specs_2 = {
+ sizeof(struct raB_ContextList_RANAP_RelocInf_ies),
+ offsetof(struct raB_ContextList_RANAP_RelocInf_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ContextList_RANAP_RelocInf_ies_2 = {
+ "raB-ContextList-RANAP-RelocInf-ies",
+ "raB-ContextList-RANAP-RelocInf-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2,
+ sizeof(asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2)
+ /sizeof(asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2)
+ /sizeof(asn_DEF_raB_ContextList_RANAP_RelocInf_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ContextList_RANAP_RelocInf_ies_constr_2,
+ asn_MBR_raB_ContextList_RANAP_RelocInf_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ContextList_RANAP_RelocInf_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ContextList_RANAP_RelocInf_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ContextList_RANAP_RelocInf, raB_ContextList_RANAP_RelocInf_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ContextList_RANAP_RelocInf_ies_2,
+ memb_raB_ContextList_RANAP_RelocInf_ies_constraint_1,
+ &asn_PER_memb_raB_ContextList_RANAP_RelocInf_ies_constr_2,
+ 0,
+ "raB-ContextList-RANAP-RelocInf-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ContextList_RANAP_RelocInf_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ContextList-RANAP-RelocInf-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ContextList_RANAP_RelocInf_specs_1 = {
+ sizeof(struct RANAP_RAB_ContextList_RANAP_RelocInf),
+ offsetof(struct RANAP_RAB_ContextList_RANAP_RelocInf, _asn_ctx),
+ asn_MAP_RANAP_RAB_ContextList_RANAP_RelocInf_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf = {
+ "RANAP_RAB-ContextList-RANAP-RelocInf",
+ "RANAP_RAB-ContextList-RANAP-RelocInf",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextList_RANAP_RelocInf_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ContextList_RANAP_RelocInf_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ContextList_RANAP_RelocInf_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ContextList.c b/src/ranap/RANAP_RAB-ContextList.c
new file mode 100644
index 0000000..8456109
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ContextList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ContextList.h>
+
+static int
+memb_raB_ContextList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ContextList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ContextList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ContextList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ContextList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ContextList_ies_specs_2 = {
+ sizeof(struct raB_ContextList_ies),
+ offsetof(struct raB_ContextList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ContextList_ies_2 = {
+ "raB-ContextList-ies",
+ "raB-ContextList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ContextList_ies_tags_2,
+ sizeof(asn_DEF_raB_ContextList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ContextList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ContextList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ContextList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ContextList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ContextList_ies_constr_2,
+ asn_MBR_raB_ContextList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ContextList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ContextList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ContextList, raB_ContextList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ContextList_ies_2,
+ memb_raB_ContextList_ies_constraint_1,
+ &asn_PER_memb_raB_ContextList_ies_constr_2,
+ 0,
+ "raB-ContextList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ContextList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ContextList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ContextList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ContextList_specs_1 = {
+ sizeof(struct RANAP_RAB_ContextList),
+ offsetof(struct RANAP_RAB_ContextList, _asn_ctx),
+ asn_MAP_RANAP_RAB_ContextList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ContextList = {
+ "RANAP_RAB-ContextList",
+ "RANAP_RAB-ContextList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ContextList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ContextList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ContextList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ContextList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ContextList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ContextList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ContextList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.c b/src/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.c
new file mode 100644
index 0000000..bee0d76
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataForwardingItem-SRNS-CtxReq.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingItem_SRNS_CtxReq, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_DataForwardingItem_SRNS_CtxReq, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_specs_1 = {
+ sizeof(struct RANAP_RAB_DataForwardingItem_SRNS_CtxReq),
+ offsetof(struct RANAP_RAB_DataForwardingItem_SRNS_CtxReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq = {
+ "RANAP_RAB-DataForwardingItem-SRNS-CtxReq",
+ "RANAP_RAB-DataForwardingItem-SRNS-CtxReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataForwardingItem_SRNS_CtxReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataForwardingItem.c b/src/ranap/RANAP_RAB-DataForwardingItem.c
new file mode 100644
index 0000000..2342301
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataForwardingItem.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataForwardingItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataForwardingItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingItem, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingItem, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_DataForwardingItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_DataForwardingItem_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataForwardingItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataForwardingItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataForwardingItem_specs_1 = {
+ sizeof(struct RANAP_RAB_DataForwardingItem),
+ offsetof(struct RANAP_RAB_DataForwardingItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataForwardingItem_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_DataForwardingItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingItem = {
+ "RANAP_RAB-DataForwardingItem",
+ "RANAP_RAB-DataForwardingItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataForwardingItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataForwardingItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataForwardingItem_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataForwardingItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.c b/src/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.c
new file mode 100644
index 0000000..63eab28
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataForwardingList-SRNS-CtxReq.h>
+
+static int
+memb_raB_DataForwardingList_SRNS_CtxReq_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_DataForwardingList_SRNS_CtxReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_DataForwardingList_SRNS_CtxReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_DataForwardingList_SRNS_CtxReq_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_DataForwardingList_SRNS_CtxReq_ies_specs_2 = {
+ sizeof(struct raB_DataForwardingList_SRNS_CtxReq_ies),
+ offsetof(struct raB_DataForwardingList_SRNS_CtxReq_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_2 = {
+ "raB-DataForwardingList-SRNS-CtxReq-ies",
+ "raB-DataForwardingList-SRNS-CtxReq-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2,
+ sizeof(asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_DataForwardingList_SRNS_CtxReq_ies_constr_2,
+ asn_MBR_raB_DataForwardingList_SRNS_CtxReq_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_DataForwardingList_SRNS_CtxReq_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataForwardingList_SRNS_CtxReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingList_SRNS_CtxReq, raB_DataForwardingList_SRNS_CtxReq_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_DataForwardingList_SRNS_CtxReq_ies_2,
+ memb_raB_DataForwardingList_SRNS_CtxReq_ies_constraint_1,
+ &asn_PER_memb_raB_DataForwardingList_SRNS_CtxReq_ies_constr_2,
+ 0,
+ "raB-DataForwardingList-SRNS-CtxReq-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-DataForwardingList-SRNS-CtxReq-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataForwardingList_SRNS_CtxReq_specs_1 = {
+ sizeof(struct RANAP_RAB_DataForwardingList_SRNS_CtxReq),
+ offsetof(struct RANAP_RAB_DataForwardingList_SRNS_CtxReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq = {
+ "RANAP_RAB-DataForwardingList-SRNS-CtxReq",
+ "RANAP_RAB-DataForwardingList-SRNS-CtxReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingList_SRNS_CtxReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataForwardingList_SRNS_CtxReq_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataForwardingList_SRNS_CtxReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataForwardingList.c b/src/ranap/RANAP_RAB-DataForwardingList.c
new file mode 100644
index 0000000..a80d4cd
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataForwardingList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataForwardingList.h>
+
+static int
+memb_raB_DataForwardingList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_DataForwardingList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_DataForwardingList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_DataForwardingList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_DataForwardingList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_DataForwardingList_ies_specs_2 = {
+ sizeof(struct raB_DataForwardingList_ies),
+ offsetof(struct raB_DataForwardingList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_DataForwardingList_ies_2 = {
+ "raB-DataForwardingList-ies",
+ "raB-DataForwardingList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_DataForwardingList_ies_tags_2,
+ sizeof(asn_DEF_raB_DataForwardingList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataForwardingList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_DataForwardingList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_DataForwardingList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataForwardingList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_DataForwardingList_ies_constr_2,
+ asn_MBR_raB_DataForwardingList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_DataForwardingList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataForwardingList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataForwardingList, raB_DataForwardingList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_DataForwardingList_ies_2,
+ memb_raB_DataForwardingList_ies_constraint_1,
+ &asn_PER_memb_raB_DataForwardingList_ies_constr_2,
+ 0,
+ "raB-DataForwardingList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataForwardingList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataForwardingList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-DataForwardingList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataForwardingList_specs_1 = {
+ sizeof(struct RANAP_RAB_DataForwardingList),
+ offsetof(struct RANAP_RAB_DataForwardingList, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataForwardingList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataForwardingList = {
+ "RANAP_RAB-DataForwardingList",
+ "RANAP_RAB-DataForwardingList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataForwardingList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataForwardingList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataForwardingList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataForwardingList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataForwardingList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataForwardingList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataVolumeReportItem.c b/src/ranap/RANAP_RAB-DataVolumeReportItem.c
new file mode 100644
index 0000000..bf9a9fa
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataVolumeReportItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataVolumeReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataVolumeReportItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_DataVolumeReportItem, dl_UnsuccessfullyTransmittedDataVolume),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-UnsuccessfullyTransmittedDataVolume"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_DataVolumeReportItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_DataVolumeReportItem_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataVolumeReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-UnsuccessfullyTransmittedDataVolume */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataVolumeReportItem_specs_1 = {
+ sizeof(struct RANAP_RAB_DataVolumeReportItem),
+ offsetof(struct RANAP_RAB_DataVolumeReportItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataVolumeReportItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_DataVolumeReportItem_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportItem = {
+ "RANAP_RAB-DataVolumeReportItem",
+ "RANAP_RAB-DataVolumeReportItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataVolumeReportItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataVolumeReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataVolumeReportList.c b/src/ranap/RANAP_RAB-DataVolumeReportList.c
new file mode 100644
index 0000000..7730e59
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataVolumeReportList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportList.h>
+
+static int
+memb_raB_DataVolumeReportList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_DataVolumeReportList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_DataVolumeReportList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_DataVolumeReportList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_DataVolumeReportList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_DataVolumeReportList_ies_specs_2 = {
+ sizeof(struct raB_DataVolumeReportList_ies),
+ offsetof(struct raB_DataVolumeReportList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_DataVolumeReportList_ies_2 = {
+ "raB-DataVolumeReportList-ies",
+ "raB-DataVolumeReportList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_DataVolumeReportList_ies_tags_2,
+ sizeof(asn_DEF_raB_DataVolumeReportList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataVolumeReportList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_DataVolumeReportList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_DataVolumeReportList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataVolumeReportList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_DataVolumeReportList_ies_constr_2,
+ asn_MBR_raB_DataVolumeReportList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_DataVolumeReportList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataVolumeReportList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataVolumeReportList, raB_DataVolumeReportList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_DataVolumeReportList_ies_2,
+ memb_raB_DataVolumeReportList_ies_constraint_1,
+ &asn_PER_memb_raB_DataVolumeReportList_ies_constr_2,
+ 0,
+ "raB-DataVolumeReportList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataVolumeReportList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-DataVolumeReportList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataVolumeReportList_specs_1 = {
+ sizeof(struct RANAP_RAB_DataVolumeReportList),
+ offsetof(struct RANAP_RAB_DataVolumeReportList, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataVolumeReportList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportList = {
+ "RANAP_RAB-DataVolumeReportList",
+ "RANAP_RAB-DataVolumeReportList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataVolumeReportList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataVolumeReportList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataVolumeReportRequestItem.c b/src/ranap/RANAP_RAB-DataVolumeReportRequestItem.c
new file mode 100644
index 0000000..a0fcba9
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataVolumeReportRequestItem.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportRequestItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataVolumeReportRequestItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataVolumeReportRequestItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_DataVolumeReportRequestItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_DataVolumeReportRequestItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataVolumeReportRequestItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataVolumeReportRequestItem_specs_1 = {
+ sizeof(struct RANAP_RAB_DataVolumeReportRequestItem),
+ offsetof(struct RANAP_RAB_DataVolumeReportRequestItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataVolumeReportRequestItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_DataVolumeReportRequestItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportRequestItem = {
+ "RANAP_RAB-DataVolumeReportRequestItem",
+ "RANAP_RAB-DataVolumeReportRequestItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataVolumeReportRequestItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataVolumeReportRequestItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-DataVolumeReportRequestList.c b/src/ranap/RANAP_RAB-DataVolumeReportRequestList.c
new file mode 100644
index 0000000..716f578
--- /dev/null
+++ b/src/ranap/RANAP_RAB-DataVolumeReportRequestList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-DataVolumeReportRequestList.h>
+
+static int
+memb_raB_DataVolumeReportRequestList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_DataVolumeReportRequestList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_DataVolumeReportRequestList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_DataVolumeReportRequestList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_DataVolumeReportRequestList_ies_specs_2 = {
+ sizeof(struct raB_DataVolumeReportRequestList_ies),
+ offsetof(struct raB_DataVolumeReportRequestList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_DataVolumeReportRequestList_ies_2 = {
+ "raB-DataVolumeReportRequestList-ies",
+ "raB-DataVolumeReportRequestList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2,
+ sizeof(asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2)
+ /sizeof(asn_DEF_raB_DataVolumeReportRequestList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_DataVolumeReportRequestList_ies_constr_2,
+ asn_MBR_raB_DataVolumeReportRequestList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_DataVolumeReportRequestList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_DataVolumeReportRequestList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_DataVolumeReportRequestList, raB_DataVolumeReportRequestList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_DataVolumeReportRequestList_ies_2,
+ memb_raB_DataVolumeReportRequestList_ies_constraint_1,
+ &asn_PER_memb_raB_DataVolumeReportRequestList_ies_constr_2,
+ 0,
+ "raB-DataVolumeReportRequestList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_DataVolumeReportRequestList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-DataVolumeReportRequestList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_DataVolumeReportRequestList_specs_1 = {
+ sizeof(struct RANAP_RAB_DataVolumeReportRequestList),
+ offsetof(struct RANAP_RAB_DataVolumeReportRequestList, _asn_ctx),
+ asn_MAP_RANAP_RAB_DataVolumeReportRequestList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_DataVolumeReportRequestList = {
+ "RANAP_RAB-DataVolumeReportRequestList",
+ "RANAP_RAB-DataVolumeReportRequestList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_DataVolumeReportRequestList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_DataVolumeReportRequestList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_DataVolumeReportRequestList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.c b/src/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.c
new file mode 100644
index 0000000..c44192c
--- /dev/null
+++ b/src/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-FailedItem-EnhRelocInfoRes.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_FailedItem_EnhRelocInfoRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes, cN_DomainIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cN-DomainIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes, cause),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_FailedItem_EnhRelocInfoRes_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_FailedItem_EnhRelocInfoRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cN-DomainIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_FailedItem_EnhRelocInfoRes_specs_1 = {
+ sizeof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes),
+ offsetof(struct RANAP_RAB_FailedItem_EnhRelocInfoRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_FailedItem_EnhRelocInfoRes_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_FailedItem_EnhRelocInfoRes_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes = {
+ "RANAP_RAB-FailedItem-EnhRelocInfoRes",
+ "RANAP_RAB-FailedItem-EnhRelocInfoRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedItem_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_FailedItem_EnhRelocInfoRes_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RAB_FailedItem_EnhRelocInfoRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-FailedItem.c b/src/ranap/RANAP_RAB-FailedItem.c
new file mode 100644
index 0000000..db248df
--- /dev/null
+++ b/src/ranap/RANAP_RAB-FailedItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-FailedItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_FailedItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedItem, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_FailedItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_FailedItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_FailedItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_FailedItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_FailedItem_specs_1 = {
+ sizeof(struct RANAP_RAB_FailedItem),
+ offsetof(struct RANAP_RAB_FailedItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_FailedItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_FailedItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedItem = {
+ "RANAP_RAB-FailedItem",
+ "RANAP_RAB-FailedItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_FailedItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_FailedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_FailedItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_FailedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_FailedItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_FailedItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.c b/src/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.c
new file mode 100644
index 0000000..5fe38a7
--- /dev/null
+++ b/src/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-FailedList-EnhRelocInfoRes.h>
+
+static int
+memb_raB_FailedList_EnhRelocInfoRes_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_FailedList_EnhRelocInfoRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_FailedList_EnhRelocInfoRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_FailedList_EnhRelocInfoRes_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_FailedList_EnhRelocInfoRes_ies_specs_2 = {
+ sizeof(struct raB_FailedList_EnhRelocInfoRes_ies),
+ offsetof(struct raB_FailedList_EnhRelocInfoRes_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_2 = {
+ "raB-FailedList-EnhRelocInfoRes-ies",
+ "raB-FailedList-EnhRelocInfoRes-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2,
+ sizeof(asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_FailedList_EnhRelocInfoRes_ies_constr_2,
+ asn_MBR_raB_FailedList_EnhRelocInfoRes_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_FailedList_EnhRelocInfoRes_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_FailedList_EnhRelocInfoRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedList_EnhRelocInfoRes, raB_FailedList_EnhRelocInfoRes_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_FailedList_EnhRelocInfoRes_ies_2,
+ memb_raB_FailedList_EnhRelocInfoRes_ies_constraint_1,
+ &asn_PER_memb_raB_FailedList_EnhRelocInfoRes_ies_constr_2,
+ 0,
+ "raB-FailedList-EnhRelocInfoRes-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_FailedList_EnhRelocInfoRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-FailedList-EnhRelocInfoRes-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_FailedList_EnhRelocInfoRes_specs_1 = {
+ sizeof(struct RANAP_RAB_FailedList_EnhRelocInfoRes),
+ offsetof(struct RANAP_RAB_FailedList_EnhRelocInfoRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_FailedList_EnhRelocInfoRes_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes = {
+ "RANAP_RAB-FailedList-EnhRelocInfoRes",
+ "RANAP_RAB-FailedList-EnhRelocInfoRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedList_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_FailedList_EnhRelocInfoRes_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_FailedList_EnhRelocInfoRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-FailedList.c b/src/ranap/RANAP_RAB-FailedList.c
new file mode 100644
index 0000000..8bea44d
--- /dev/null
+++ b/src/ranap/RANAP_RAB-FailedList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-FailedList.h>
+
+static int
+memb_raB_FailedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_FailedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_FailedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_FailedList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_FailedList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_FailedList_ies_specs_2 = {
+ sizeof(struct raB_FailedList_ies),
+ offsetof(struct raB_FailedList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_FailedList_ies_2 = {
+ "raB-FailedList-ies",
+ "raB-FailedList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_FailedList_ies_tags_2,
+ sizeof(asn_DEF_raB_FailedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_FailedList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_FailedList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_FailedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_FailedList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_FailedList_ies_constr_2,
+ asn_MBR_raB_FailedList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_FailedList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_FailedList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedList, raB_FailedList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_FailedList_ies_2,
+ memb_raB_FailedList_ies_constraint_1,
+ &asn_PER_memb_raB_FailedList_ies_constr_2,
+ 0,
+ "raB-FailedList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_FailedList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_FailedList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-FailedList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_FailedList_specs_1 = {
+ sizeof(struct RANAP_RAB_FailedList),
+ offsetof(struct RANAP_RAB_FailedList, _asn_ctx),
+ asn_MAP_RANAP_RAB_FailedList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_FailedList = {
+ "RANAP_RAB-FailedList",
+ "RANAP_RAB-FailedList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_FailedList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_FailedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_FailedList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_FailedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_FailedList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_FailedList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_FailedList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ID.c b/src/ranap/RANAP_RAB-ID.c
new file mode 100644
index 0000000..6351672
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ID.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ID.h>
+
+int
+RANAP_RAB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_RAB_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 8l, 8l } /* (SIZE(8..8)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ID = {
+ "RANAP_RAB-ID",
+ "RANAP_RAB-ID",
+ RANAP_RAB_ID_free,
+ RANAP_RAB_ID_print,
+ RANAP_RAB_ID_constraint,
+ RANAP_RAB_ID_decode_ber,
+ RANAP_RAB_ID_encode_der,
+ RANAP_RAB_ID_decode_xer,
+ RANAP_RAB_ID_encode_xer,
+ RANAP_RAB_ID_decode_uper,
+ RANAP_RAB_ID_encode_uper,
+ RANAP_RAB_ID_decode_aper,
+ RANAP_RAB_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ID_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RAB-IE-ContainerList.c b/src/ranap/RANAP_RAB-IE-ContainerList.c
new file mode 100644
index 0000000..1f3009a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-IE-ContainerList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-IE-ContainerList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_IE_ContainerList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_IE_ContainerList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_IE_ContainerList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_IE_ContainerList_specs_1 = {
+ sizeof(struct RANAP_RAB_IE_ContainerList),
+ offsetof(struct RANAP_RAB_IE_ContainerList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_IE_ContainerList = {
+ "RANAP_RAB-IE-ContainerList",
+ "RANAP_RAB-IE-ContainerList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_IE_ContainerList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_IE_ContainerList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_IE_ContainerList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_IE_ContainerList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_IE_ContainerList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_IE_ContainerList_constr_1,
+ asn_MBR_RANAP_RAB_IE_ContainerList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_IE_ContainerList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-IE-ContainerPairList.c b/src/ranap/RANAP_RAB-IE-ContainerPairList.c
new file mode 100644
index 0000000..02b3182
--- /dev/null
+++ b/src/ranap/RANAP_RAB-IE-ContainerPairList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-IE-ContainerPairList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_IE_ContainerPairList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_IE_ContainerPairList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ProtocolIE_ContainerPair,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_IE_ContainerPairList_specs_1 = {
+ sizeof(struct RANAP_RAB_IE_ContainerPairList),
+ offsetof(struct RANAP_RAB_IE_ContainerPairList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_IE_ContainerPairList = {
+ "RANAP_RAB-IE-ContainerPairList",
+ "RANAP_RAB-IE-ContainerPairList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_IE_ContainerPairList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_IE_ContainerPairList_constr_1,
+ asn_MBR_RANAP_RAB_IE_ContainerPairList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_IE_ContainerPairList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ModifyItem.c b/src/ranap/RANAP_RAB-ModifyItem.c
new file mode 100644
index 0000000..b8e6ec4
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ModifyItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ModifyItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ModifyItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyItem, requested_RAB_Parameter_Values),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Requested_RAB_Parameter_Values,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requested-RAB-Parameter-Values"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ModifyItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ModifyItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ModifyItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ModifyItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* requested-RAB-Parameter-Values */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ModifyItem_specs_1 = {
+ sizeof(struct RANAP_RAB_ModifyItem),
+ offsetof(struct RANAP_RAB_ModifyItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_ModifyItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ModifyItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyItem = {
+ "RANAP_RAB-ModifyItem",
+ "RANAP_RAB-ModifyItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ModifyItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ModifyItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ModifyItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ModifyItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ModifyItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_ModifyItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ModifyList.c b/src/ranap/RANAP_RAB-ModifyList.c
new file mode 100644
index 0000000..7312683
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ModifyList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ModifyList.h>
+
+static int
+memb_raB_ModifyList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ModifyList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ModifyList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ModifyList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ModifyList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ModifyList_ies_specs_2 = {
+ sizeof(struct raB_ModifyList_ies),
+ offsetof(struct raB_ModifyList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ModifyList_ies_2 = {
+ "raB-ModifyList-ies",
+ "raB-ModifyList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ModifyList_ies_tags_2,
+ sizeof(asn_DEF_raB_ModifyList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ModifyList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ModifyList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ModifyList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ModifyList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ModifyList_ies_constr_2,
+ asn_MBR_raB_ModifyList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ModifyList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ModifyList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyList, raB_ModifyList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ModifyList_ies_2,
+ memb_raB_ModifyList_ies_constraint_1,
+ &asn_PER_memb_raB_ModifyList_ies_constr_2,
+ 0,
+ "raB-ModifyList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ModifyList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ModifyList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ModifyList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ModifyList_specs_1 = {
+ sizeof(struct RANAP_RAB_ModifyList),
+ offsetof(struct RANAP_RAB_ModifyList, _asn_ctx),
+ asn_MAP_RANAP_RAB_ModifyList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyList = {
+ "RANAP_RAB-ModifyList",
+ "RANAP_RAB-ModifyList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ModifyList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ModifyList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ModifyList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ModifyList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ModifyList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ModifyList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ModifyRequest.c b/src/ranap/RANAP_RAB-ModifyRequest.c
new file mode 100644
index 0000000..49442d6
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ModifyRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ModifyRequest.h>
+
+static int
+memb_raB_ModifyRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ModifyRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ModifyRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ModifyRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ModifyRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ModifyRequest_ies_specs_2 = {
+ sizeof(struct raB_ModifyRequest_ies),
+ offsetof(struct raB_ModifyRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ModifyRequest_ies_2 = {
+ "raB-ModifyRequest-ies",
+ "raB-ModifyRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ModifyRequest_ies_tags_2,
+ sizeof(asn_DEF_raB_ModifyRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_ModifyRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ModifyRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ModifyRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_ModifyRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ModifyRequest_ies_constr_2,
+ asn_MBR_raB_ModifyRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ModifyRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ModifyRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyRequest, raB_ModifyRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ModifyRequest_ies_2,
+ memb_raB_ModifyRequest_ies_constraint_1,
+ &asn_PER_memb_raB_ModifyRequest_ies_constr_2,
+ 0,
+ "raB-ModifyRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ModifyRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ModifyRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ModifyRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ModifyRequest_specs_1 = {
+ sizeof(struct RANAP_RAB_ModifyRequest),
+ offsetof(struct RANAP_RAB_ModifyRequest, _asn_ctx),
+ asn_MAP_RANAP_RAB_ModifyRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ModifyRequest = {
+ "RANAP_RAB-ModifyRequest",
+ "RANAP_RAB-ModifyRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ModifyRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ModifyRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ModifyRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ModifyRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ModifyRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ModifyRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ModifyRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.c b/src/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.c
new file mode 100644
index 0000000..c3bbe2e
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedGuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList),
+ offsetof(struct RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList = {
+ "RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList",
+ "RANAP_RAB-Parameter-ExtendedGuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.c b/src/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.c
new file mode 100644
index 0000000..84ce71a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-Parameter-ExtendedMaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_Parameter_ExtendedMaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameter_ExtendedMaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedMaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_Parameter_ExtendedMaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_RAB_Parameter_ExtendedMaxBitrateList),
+ offsetof(struct RANAP_RAB_Parameter_ExtendedMaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList = {
+ "RANAP_RAB-Parameter-ExtendedMaxBitrateList",
+ "RANAP_RAB-Parameter-ExtendedMaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_Parameter_ExtendedMaxBitrateList_constr_1,
+ asn_MBR_RANAP_RAB_Parameter_ExtendedMaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_Parameter_ExtendedMaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.c b/src/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.c
new file mode 100644
index 0000000..f674fb5
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-Parameter-GuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_Parameter_GuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameter_GuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_GuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_Parameter_GuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_RAB_Parameter_GuaranteedBitrateList),
+ offsetof(struct RANAP_RAB_Parameter_GuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList = {
+ "RANAP_RAB-Parameter-GuaranteedBitrateList",
+ "RANAP_RAB-Parameter-GuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_Parameter_GuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_RAB_Parameter_GuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_Parameter_GuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-Parameter-MaxBitrateList.c b/src/ranap/RANAP_RAB-Parameter-MaxBitrateList.c
new file mode 100644
index 0000000..e60048a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameter-MaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-Parameter-MaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_Parameter_MaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameter_MaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_MaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_Parameter_MaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_RAB_Parameter_MaxBitrateList),
+ offsetof(struct RANAP_RAB_Parameter_MaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameter_MaxBitrateList = {
+ "RANAP_RAB-Parameter-MaxBitrateList",
+ "RANAP_RAB-Parameter-MaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_Parameter_MaxBitrateList_constr_1,
+ asn_MBR_RANAP_RAB_Parameter_MaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_Parameter_MaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-Parameters.c b/src/ranap/RANAP_RAB-Parameters.c
new file mode 100644
index 0000000..0a3fb45
--- /dev/null
+++ b/src/ranap/RANAP_RAB-Parameters.c
@@ -0,0 +1,183 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-Parameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_Parameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, trafficClass),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TrafficClass,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "trafficClass"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, rAB_AsymmetryIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_AsymmetryIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-AsymmetryIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, maxBitrate),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameter_MaxBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "maxBitrate"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_Parameters, guaranteedBitRate),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameter_GuaranteedBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "guaranteedBitRate"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, deliveryOrder),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DeliveryOrder,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "deliveryOrder"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, maxSDU_Size),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_MaxSDU_Size,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "maxSDU-Size"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_Parameters, sDU_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SDU_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sDU-Parameters"
+ },
+ { ATF_POINTER, 6, offsetof(struct RANAP_RAB_Parameters, transferDelay),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransferDelay,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transferDelay"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_Parameters, trafficHandlingPriority),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TrafficHandlingPriority,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "trafficHandlingPriority"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_Parameters, allocationOrRetentionPriority),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_AllocationOrRetentionPriority,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "allocationOrRetentionPriority"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_Parameters, sourceStatisticsDescriptor),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SourceStatisticsDescriptor,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceStatisticsDescriptor"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_Parameters, relocationRequirement),
+ (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RelocationRequirement,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "relocationRequirement"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_Parameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_Parameters_oms_1[] = { 3, 7, 8, 9, 10, 11, 12 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_Parameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trafficClass */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-AsymmetryIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxBitrate */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* guaranteedBitRate */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* deliveryOrder */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maxSDU-Size */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sDU-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* transferDelay */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* trafficHandlingPriority */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* allocationOrRetentionPriority */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sourceStatisticsDescriptor */
+ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* relocationRequirement */
+ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_Parameters_specs_1 = {
+ sizeof(struct RANAP_RAB_Parameters),
+ offsetof(struct RANAP_RAB_Parameters, _asn_ctx),
+ asn_MAP_RANAP_RAB_Parameters_tag2el_1,
+ 13, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_Parameters_oms_1, /* Optional members */
+ 7, 0, /* Root/Additions */
+ 12, /* Start extensions */
+ 14 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_Parameters = {
+ "RANAP_RAB-Parameters",
+ "RANAP_RAB-Parameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_Parameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_Parameters_1,
+ 13, /* Elements count */
+ &asn_SPC_RANAP_RAB_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-QueuedItem.c b/src/ranap/RANAP_RAB-QueuedItem.c
new file mode 100644
index 0000000..75a75d7
--- /dev/null
+++ b/src/ranap/RANAP_RAB-QueuedItem.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-QueuedItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_QueuedItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_QueuedItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_QueuedItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_QueuedItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_QueuedItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_QueuedItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_QueuedItem_specs_1 = {
+ sizeof(struct RANAP_RAB_QueuedItem),
+ offsetof(struct RANAP_RAB_QueuedItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_QueuedItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_QueuedItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_QueuedItem = {
+ "RANAP_RAB-QueuedItem",
+ "RANAP_RAB-QueuedItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_QueuedItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_QueuedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_QueuedItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_QueuedItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_QueuedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_QueuedItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_QueuedItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RAB_QueuedItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-QueuedList.c b/src/ranap/RANAP_RAB-QueuedList.c
new file mode 100644
index 0000000..c60e7b9
--- /dev/null
+++ b/src/ranap/RANAP_RAB-QueuedList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-QueuedList.h>
+
+static int
+memb_raB_QueuedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_QueuedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_QueuedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_QueuedList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_QueuedList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_QueuedList_ies_specs_2 = {
+ sizeof(struct raB_QueuedList_ies),
+ offsetof(struct raB_QueuedList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_QueuedList_ies_2 = {
+ "raB-QueuedList-ies",
+ "raB-QueuedList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_QueuedList_ies_tags_2,
+ sizeof(asn_DEF_raB_QueuedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_QueuedList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_QueuedList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_QueuedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_QueuedList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_QueuedList_ies_constr_2,
+ asn_MBR_raB_QueuedList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_QueuedList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_QueuedList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_QueuedList, raB_QueuedList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_QueuedList_ies_2,
+ memb_raB_QueuedList_ies_constraint_1,
+ &asn_PER_memb_raB_QueuedList_ies_constr_2,
+ 0,
+ "raB-QueuedList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_QueuedList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_QueuedList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-QueuedList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_QueuedList_specs_1 = {
+ sizeof(struct RANAP_RAB_QueuedList),
+ offsetof(struct RANAP_RAB_QueuedList, _asn_ctx),
+ asn_MAP_RANAP_RAB_QueuedList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_QueuedList = {
+ "RANAP_RAB-QueuedList",
+ "RANAP_RAB-QueuedList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_QueuedList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_QueuedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_QueuedList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_QueuedList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_QueuedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_QueuedList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_QueuedList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_QueuedList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleaseFailedList.c b/src/ranap/RANAP_RAB-ReleaseFailedList.c
new file mode 100644
index 0000000..2652a12
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleaseFailedList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+#include <constr_CHOICE.h>
+
+#include <osmocom/ranap/RANAP_RAB-ReleaseFailedList.h>
+
+int
+RANAP_RAB_ReleaseFailedList_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_RANAP_RAB_FailedList.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using RANAP_RAB_FailedList,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_RANAP_RAB_FailedList.free_struct;
+ td->print_struct = asn_DEF_RANAP_RAB_FailedList.print_struct;
+ td->check_constraints = asn_DEF_RANAP_RAB_FailedList.check_constraints;
+ td->ber_decoder = asn_DEF_RANAP_RAB_FailedList.ber_decoder;
+ td->der_encoder = asn_DEF_RANAP_RAB_FailedList.der_encoder;
+ td->xer_decoder = asn_DEF_RANAP_RAB_FailedList.xer_decoder;
+ td->xer_encoder = asn_DEF_RANAP_RAB_FailedList.xer_encoder;
+ td->uper_decoder = asn_DEF_RANAP_RAB_FailedList.uper_decoder;
+ td->uper_encoder = asn_DEF_RANAP_RAB_FailedList.uper_encoder;
+ td->aper_decoder = asn_DEF_RANAP_RAB_FailedList.aper_decoder;
+ td->aper_encoder = asn_DEF_RANAP_RAB_FailedList.aper_encoder;
+ /* The next four lines are here because of -fknown-extern-type */
+ td->tags = asn_DEF_RANAP_RAB_FailedList.tags;
+ td->tags_count = asn_DEF_RANAP_RAB_FailedList.tags_count;
+ td->all_tags = asn_DEF_RANAP_RAB_FailedList.all_tags;
+ td->all_tags_count = asn_DEF_RANAP_RAB_FailedList.all_tags_count;
+ /* End of these lines */
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_RANAP_RAB_FailedList.per_constraints;
+ td->elements = asn_DEF_RANAP_RAB_FailedList.elements;
+ td->elements_count = asn_DEF_RANAP_RAB_FailedList.elements_count;
+ td->specifics = asn_DEF_RANAP_RAB_FailedList.specifics;
+}
+
+void
+RANAP_RAB_ReleaseFailedList_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAB_ReleaseFailedList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ReleaseFailedList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ReleaseFailedList_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ReleaseFailedList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ReleaseFailedList_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ReleaseFailedList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ReleaseFailedList_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAB_ReleaseFailedList_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAB_ReleaseFailedList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_ReleaseFailedList_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseFailedList = {
+ "RANAP_RAB-ReleaseFailedList",
+ "RANAP_RAB-ReleaseFailedList",
+ RANAP_RAB_ReleaseFailedList_free,
+ RANAP_RAB_ReleaseFailedList_print,
+ RANAP_RAB_ReleaseFailedList_constraint,
+ RANAP_RAB_ReleaseFailedList_decode_ber,
+ RANAP_RAB_ReleaseFailedList_encode_der,
+ RANAP_RAB_ReleaseFailedList_decode_xer,
+ RANAP_RAB_ReleaseFailedList_encode_xer,
+ RANAP_RAB_ReleaseFailedList_decode_uper,
+ RANAP_RAB_ReleaseFailedList_encode_uper,
+ RANAP_RAB_ReleaseFailedList_decode_aper,
+ RANAP_RAB_ReleaseFailedList_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleaseItem.c b/src/ranap/RANAP_RAB-ReleaseItem.c
new file mode 100644
index 0000000..ef17012
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleaseItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleaseItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleaseItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleaseItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleaseItem, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ReleaseItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ReleaseItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleaseItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleaseItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleaseItem_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleaseItem),
+ offsetof(struct RANAP_RAB_ReleaseItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleaseItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ReleaseItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseItem = {
+ "RANAP_RAB-ReleaseItem",
+ "RANAP_RAB-ReleaseItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleaseItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleaseItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleaseItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleaseItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleaseItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleaseItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleaseList.c b/src/ranap/RANAP_RAB-ReleaseList.c
new file mode 100644
index 0000000..dc88f8d
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleaseList.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+#include <constr_CHOICE.h>
+
+#include <osmocom/ranap/RANAP_RAB-ReleaseList.h>
+
+static int
+memb_raB_ReleaseList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ReleaseList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ReleaseList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ReleaseList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ReleaseList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ReleaseList_ies_specs_2 = {
+ sizeof(struct raB_ReleaseList_ies),
+ offsetof(struct raB_ReleaseList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ReleaseList_ies_2 = {
+ "raB-ReleaseList-ies",
+ "raB-ReleaseList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ReleaseList_ies_tags_2,
+ sizeof(asn_DEF_raB_ReleaseList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleaseList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ReleaseList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ReleaseList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleaseList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ReleaseList_ies_constr_2,
+ asn_MBR_raB_ReleaseList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ReleaseList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleaseList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleaseList, raB_ReleaseList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ReleaseList_ies_2,
+ memb_raB_ReleaseList_ies_constraint_1,
+ &asn_PER_memb_raB_ReleaseList_ies_constr_2,
+ 0,
+ "raB-ReleaseList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleaseList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleaseList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ReleaseList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleaseList_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleaseList),
+ offsetof(struct RANAP_RAB_ReleaseList, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleaseList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseList = {
+ "RANAP_RAB-ReleaseList",
+ "RANAP_RAB-ReleaseList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleaseList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleaseList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleaseList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleaseList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleaseList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleaseList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleaseRequest.c b/src/ranap/RANAP_RAB-ReleaseRequest.c
new file mode 100644
index 0000000..db6dd26
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleaseRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleaseRequest.h>
+
+static int
+memb_raB_ReleaseRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ReleaseRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ReleaseRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ReleaseRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ReleaseRequest_ies_specs_2 = {
+ sizeof(struct raB_ReleaseRequest_ies),
+ offsetof(struct raB_ReleaseRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ReleaseRequest_ies_2 = {
+ "raB-ReleaseRequest-ies",
+ "raB-ReleaseRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ReleaseRequest_ies_tags_2,
+ sizeof(asn_DEF_raB_ReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleaseRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ReleaseRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ReleaseRequest_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleaseRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ReleaseRequest_ies_constr_2,
+ asn_MBR_raB_ReleaseRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ReleaseRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleaseRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleaseRequest, raB_ReleaseRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ReleaseRequest_ies_2,
+ memb_raB_ReleaseRequest_ies_constraint_1,
+ &asn_PER_memb_raB_ReleaseRequest_ies_constr_2,
+ 0,
+ "raB-ReleaseRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleaseRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleaseRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ReleaseRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleaseRequest_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleaseRequest),
+ offsetof(struct RANAP_RAB_ReleaseRequest, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleaseRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleaseRequest = {
+ "RANAP_RAB-ReleaseRequest",
+ "RANAP_RAB-ReleaseRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleaseRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleaseRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleaseRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleaseRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleaseRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleaseRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleasedItem-IuRelComp.c b/src/ranap/RANAP_RAB-ReleasedItem-IuRelComp.c
new file mode 100644
index 0000000..9e73bf1
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleasedItem-IuRelComp.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleasedItem-IuRelComp.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleasedItem_IuRelComp_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleasedItem_IuRelComp, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_ReleasedItem_IuRelComp, dL_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dL-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_ReleasedItem_IuRelComp, uL_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uL-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ReleasedItem_IuRelComp, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ReleasedItem_IuRelComp_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleasedItem_IuRelComp_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleasedItem_IuRelComp_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleasedItem_IuRelComp),
+ offsetof(struct RANAP_RAB_ReleasedItem_IuRelComp, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleasedItem_IuRelComp_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ReleasedItem_IuRelComp_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp = {
+ "RANAP_RAB-ReleasedItem-IuRelComp",
+ "RANAP_RAB-ReleasedItem-IuRelComp",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedItem_IuRelComp_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleasedItem_IuRelComp_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleasedItem_IuRelComp_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleasedItem.c b/src/ranap/RANAP_RAB-ReleasedItem.c
new file mode 100644
index 0000000..357e7ca
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleasedItem.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleasedItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleasedItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleasedItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_ReleasedItem, dl_dataVolumes),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-dataVolumes"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_ReleasedItem, dL_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dL-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_ReleasedItem, uL_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uL-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ReleasedItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ReleasedItem_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleasedItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleasedItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-dataVolumes */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleasedItem_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleasedItem),
+ offsetof(struct RANAP_RAB_ReleasedItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleasedItem_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ReleasedItem_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedItem = {
+ "RANAP_RAB-ReleasedItem",
+ "RANAP_RAB-ReleasedItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleasedItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleasedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleasedItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleasedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleasedItem_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleasedItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleasedList-IuRelComp.c b/src/ranap/RANAP_RAB-ReleasedList-IuRelComp.c
new file mode 100644
index 0000000..cce2172
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleasedList-IuRelComp.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleasedList-IuRelComp.h>
+
+static int
+memb_raB_ReleasedList_IuRelComp_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ReleasedList_IuRelComp_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ReleasedList_IuRelComp_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ReleasedList_IuRelComp_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ReleasedList_IuRelComp_ies_specs_2 = {
+ sizeof(struct raB_ReleasedList_IuRelComp_ies),
+ offsetof(struct raB_ReleasedList_IuRelComp_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ReleasedList_IuRelComp_ies_2 = {
+ "raB-ReleasedList-IuRelComp-ies",
+ "raB-ReleasedList-IuRelComp-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2,
+ sizeof(asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleasedList_IuRelComp_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ReleasedList_IuRelComp_ies_constr_2,
+ asn_MBR_raB_ReleasedList_IuRelComp_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ReleasedList_IuRelComp_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleasedList_IuRelComp_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleasedList_IuRelComp, raB_ReleasedList_IuRelComp_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ReleasedList_IuRelComp_ies_2,
+ memb_raB_ReleasedList_IuRelComp_ies_constraint_1,
+ &asn_PER_memb_raB_ReleasedList_IuRelComp_ies_constr_2,
+ 0,
+ "raB-ReleasedList-IuRelComp-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleasedList_IuRelComp_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ReleasedList-IuRelComp-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleasedList_IuRelComp_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleasedList_IuRelComp),
+ offsetof(struct RANAP_RAB_ReleasedList_IuRelComp, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleasedList_IuRelComp_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedList_IuRelComp = {
+ "RANAP_RAB-ReleasedList-IuRelComp",
+ "RANAP_RAB-ReleasedList-IuRelComp",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedList_IuRelComp_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleasedList_IuRelComp_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleasedList_IuRelComp_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ReleasedList.c b/src/ranap/RANAP_RAB-ReleasedList.c
new file mode 100644
index 0000000..5311ece
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ReleasedList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ReleasedList.h>
+
+static int
+memb_raB_ReleasedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ReleasedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ReleasedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ReleasedList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ReleasedList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ReleasedList_ies_specs_2 = {
+ sizeof(struct raB_ReleasedList_ies),
+ offsetof(struct raB_ReleasedList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ReleasedList_ies_2 = {
+ "raB-ReleasedList-ies",
+ "raB-ReleasedList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ReleasedList_ies_tags_2,
+ sizeof(asn_DEF_raB_ReleasedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleasedList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ReleasedList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ReleasedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_ReleasedList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ReleasedList_ies_constr_2,
+ asn_MBR_raB_ReleasedList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ReleasedList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ReleasedList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ReleasedList, raB_ReleasedList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ReleasedList_ies_2,
+ memb_raB_ReleasedList_ies_constraint_1,
+ &asn_PER_memb_raB_ReleasedList_ies_constr_2,
+ 0,
+ "raB-ReleasedList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ReleasedList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ReleasedList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ReleasedList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ReleasedList_specs_1 = {
+ sizeof(struct RANAP_RAB_ReleasedList),
+ offsetof(struct RANAP_RAB_ReleasedList, _asn_ctx),
+ asn_MAP_RANAP_RAB_ReleasedList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ReleasedList = {
+ "RANAP_RAB-ReleasedList",
+ "RANAP_RAB-ReleasedList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ReleasedList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ReleasedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ReleasedList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ReleasedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ReleasedList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ReleasedList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ReleasedList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-RelocationReleaseItem.c b/src/ranap/RANAP_RAB-RelocationReleaseItem.c
new file mode 100644
index 0000000..94c199f
--- /dev/null
+++ b/src/ranap/RANAP_RAB-RelocationReleaseItem.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-RelocationReleaseItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_RelocationReleaseItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_RelocationReleaseItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_RelocationReleaseItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_RelocationReleaseItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_RelocationReleaseItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_RelocationReleaseItem_specs_1 = {
+ sizeof(struct RANAP_RAB_RelocationReleaseItem),
+ offsetof(struct RANAP_RAB_RelocationReleaseItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_RelocationReleaseItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_RelocationReleaseItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_RelocationReleaseItem = {
+ "RANAP_RAB-RelocationReleaseItem",
+ "RANAP_RAB-RelocationReleaseItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_RelocationReleaseItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_RelocationReleaseItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RAB_RelocationReleaseItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-RelocationReleaseList.c b/src/ranap/RANAP_RAB-RelocationReleaseList.c
new file mode 100644
index 0000000..8af6229
--- /dev/null
+++ b/src/ranap/RANAP_RAB-RelocationReleaseList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-RelocationReleaseList.h>
+
+static int
+memb_raB_RelocationReleaseList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_RelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_RelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_RelocationReleaseList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_RelocationReleaseList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_RelocationReleaseList_ies_specs_2 = {
+ sizeof(struct raB_RelocationReleaseList_ies),
+ offsetof(struct raB_RelocationReleaseList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_RelocationReleaseList_ies_2 = {
+ "raB-RelocationReleaseList-ies",
+ "raB-RelocationReleaseList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_RelocationReleaseList_ies_tags_2,
+ sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2)
+ /sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_RelocationReleaseList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2)
+ /sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_RelocationReleaseList_ies_constr_2,
+ asn_MBR_raB_RelocationReleaseList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_RelocationReleaseList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_RelocationReleaseList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_RelocationReleaseList, raB_RelocationReleaseList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_RelocationReleaseList_ies_2,
+ memb_raB_RelocationReleaseList_ies_constraint_1,
+ &asn_PER_memb_raB_RelocationReleaseList_ies_constr_2,
+ 0,
+ "raB-RelocationReleaseList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_RelocationReleaseList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-RelocationReleaseList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_RelocationReleaseList_specs_1 = {
+ sizeof(struct RANAP_RAB_RelocationReleaseList),
+ offsetof(struct RANAP_RAB_RelocationReleaseList, _asn_ctx),
+ asn_MAP_RANAP_RAB_RelocationReleaseList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_RelocationReleaseList = {
+ "RANAP_RAB-RelocationReleaseList",
+ "RANAP_RAB-RelocationReleaseList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_RelocationReleaseList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_RelocationReleaseList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.c b/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.c
new file mode 100644
index 0000000..3b0ef4e
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.c
@@ -0,0 +1,163 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoReq.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_EnhRelocInfoReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, cN_DomainIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cN-DomainIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, rAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-Parameters"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, dataVolumeReportingIndication),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeReportingIndication,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataVolumeReportingIndication"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, pDP_TypeInformation),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PDP_TypeInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pDP-TypeInformation"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, userPlaneInformation),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UserPlaneInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "userPlaneInformation"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, dataForwardingInformation),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TNLInformationEnhRelInfoReq,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataForwardingInformation"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, sourceSideIuULTNLInfo),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TNLInformationEnhRelInfoReq,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceSideIuULTNLInfo"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, service_Handover),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Service_Handover,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "service-Handover"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, alt_RAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Alt_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "alt-RAB-Parameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoReq_oms_1[] = { 3, 4, 6, 7, 8, 9, 10 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cN-DomainIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dataVolumeReportingIndication */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pDP-TypeInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* userPlaneInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* dataForwardingInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sourceSideIuULTNLInfo */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* service-Handover */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* alt-RAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_EnhRelocInfoReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq),
+ offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoReq_tag2el_1,
+ 11, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoReq_oms_1, /* Optional members */
+ 7, 0, /* Root/Additions */
+ 10, /* Start extensions */
+ 12 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq = {
+ "RANAP_RAB-SetupItem-EnhRelocInfoReq",
+ "RANAP_RAB-SetupItem-EnhRelocInfoReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_EnhRelocInfoReq_1,
+ 11, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_EnhRelocInfoReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.c b/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.c
new file mode 100644
index 0000000..473902a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhRelocInfoRes.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_EnhRelocInfoRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, cN_DomainIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cN-DomainIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, dataForwardingInformation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TNLInformationEnhRelInfoRes,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataForwardingInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, ass_RAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Ass_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ass-RAB-Parameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoRes_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cN-DomainIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dataForwardingInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ass-RAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_EnhRelocInfoRes_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes),
+ offsetof(struct RANAP_RAB_SetupItem_EnhRelocInfoRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoRes_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_EnhRelocInfoRes_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes = {
+ "RANAP_RAB-SetupItem-EnhRelocInfoRes",
+ "RANAP_RAB-SetupItem-EnhRelocInfoRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_EnhRelocInfoRes_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_EnhRelocInfoRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.c b/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.c
new file mode 100644
index 0000000..acb0766
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteReq.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, transportLayerAddressReq1),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddressReq1"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, iuTransportAssociationReq1),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociationReq1"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, ass_RAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Ass_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ass-RAB-Parameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddressReq1 */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iuTransportAssociationReq1 */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ass-RAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq),
+ offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq = {
+ "RANAP_RAB-SetupItem-EnhancedRelocCompleteReq",
+ "RANAP_RAB-SetupItem-EnhancedRelocCompleteReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_EnhancedRelocCompleteReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.c b/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.c
new file mode 100644
index 0000000..3e47cf7
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-EnhancedRelocCompleteRes.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, rAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-Parameters"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, userPlaneInformation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UserPlaneInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "userPlaneInformation"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, transportLayerAddressRes1),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddressRes1"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, iuTransportAssociationRes1),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociationRes1"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, rab2beReleasedList),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rab2beReleasedList"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_oms_1[] = { 1, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* userPlaneInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transportLayerAddressRes1 */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* iuTransportAssociationRes1 */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rab2beReleasedList */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes),
+ offsetof(struct RANAP_RAB_SetupItem_EnhancedRelocCompleteRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tag2el_1,
+ 7, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 6, /* Start extensions */
+ 8 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes = {
+ "RANAP_RAB-SetupItem-EnhancedRelocCompleteRes",
+ "RANAP_RAB-SetupItem-EnhancedRelocCompleteRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_EnhancedRelocCompleteRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-RelocReq.c b/src/ranap/RANAP_RAB-SetupItem-RelocReq.c
new file mode 100644
index 0000000..ff6c26a
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-RelocReq.c
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-RelocReq.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_RelocReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReq, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_RelocReq, nAS_SynchronisationIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NAS_SynchronisationIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "nAS-SynchronisationIndicator"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReq, rAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-Parameters"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_RelocReq, dataVolumeReportingIndication),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeReportingIndication,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataVolumeReportingIndication"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_RelocReq, pDP_TypeInformation),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PDP_TypeInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pDP-TypeInformation"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReq, userPlaneInformation),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UserPlaneInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "userPlaneInformation"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReq, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReq, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_RelocReq, service_Handover),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Service_Handover,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "service-Handover"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_RelocReq, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_RelocReq_oms_1[] = { 1, 3, 4, 8, 9 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_RelocReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nAS-SynchronisationIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dataVolumeReportingIndication */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pDP-TypeInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* userPlaneInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* service-Handover */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_RelocReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_RelocReq),
+ offsetof(struct RANAP_RAB_SetupItem_RelocReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_RelocReq_tag2el_1,
+ 10, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_RelocReq_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 9, /* Start extensions */
+ 11 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_RelocReq = {
+ "RANAP_RAB-SetupItem-RelocReq",
+ "RANAP_RAB-SetupItem-RelocReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_RelocReq_1,
+ 10, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_RelocReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupItem-RelocReqAck.c b/src/ranap/RANAP_RAB-SetupItem-RelocReqAck.c
new file mode 100644
index 0000000..2af68cf
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupItem-RelocReqAck.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupItem-RelocReqAck.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupItem_RelocReqAck_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupItem_RelocReqAck, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupItem_RelocReqAck, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupItem_RelocReqAck, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupItem_RelocReqAck, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupItem_RelocReqAck_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupItem_RelocReqAck_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupItem_RelocReqAck_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupItem_RelocReqAck),
+ offsetof(struct RANAP_RAB_SetupItem_RelocReqAck, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupItem_RelocReqAck_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupItem_RelocReqAck_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupItem_RelocReqAck = {
+ "RANAP_RAB-SetupItem-RelocReqAck",
+ "RANAP_RAB-SetupItem-RelocReqAck",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupItem_RelocReqAck_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupItem_RelocReqAck_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupItem_RelocReqAck_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.c b/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.c
new file mode 100644
index 0000000..8764f0b
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoReq.h>
+
+static int
+memb_raB_SetupList_EnhRelocInfoReq_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_EnhRelocInfoReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_EnhRelocInfoReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_EnhRelocInfoReq_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_EnhRelocInfoReq_ies_specs_2 = {
+ sizeof(struct raB_SetupList_EnhRelocInfoReq_ies),
+ offsetof(struct raB_SetupList_EnhRelocInfoReq_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_2 = {
+ "raB-SetupList-EnhRelocInfoReq-ies",
+ "raB-SetupList-EnhRelocInfoReq-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_EnhRelocInfoReq_ies_constr_2,
+ asn_MBR_raB_SetupList_EnhRelocInfoReq_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_EnhRelocInfoReq_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_EnhRelocInfoReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_EnhRelocInfoReq, raB_SetupList_EnhRelocInfoReq_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_EnhRelocInfoReq_ies_2,
+ memb_raB_SetupList_EnhRelocInfoReq_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_EnhRelocInfoReq_ies_constr_2,
+ 0,
+ "raB-SetupList-EnhRelocInfoReq-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_EnhRelocInfoReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-EnhRelocInfoReq-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_EnhRelocInfoReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_EnhRelocInfoReq),
+ offsetof(struct RANAP_RAB_SetupList_EnhRelocInfoReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_EnhRelocInfoReq_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq = {
+ "RANAP_RAB-SetupList-EnhRelocInfoReq",
+ "RANAP_RAB-SetupList-EnhRelocInfoReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_EnhRelocInfoReq_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_EnhRelocInfoReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.c b/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.c
new file mode 100644
index 0000000..08b3c60
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhRelocInfoRes.h>
+
+static int
+memb_raB_SetupList_EnhRelocInfoRes_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_EnhRelocInfoRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_EnhRelocInfoRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_EnhRelocInfoRes_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_EnhRelocInfoRes_ies_specs_2 = {
+ sizeof(struct raB_SetupList_EnhRelocInfoRes_ies),
+ offsetof(struct raB_SetupList_EnhRelocInfoRes_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_2 = {
+ "raB-SetupList-EnhRelocInfoRes-ies",
+ "raB-SetupList-EnhRelocInfoRes-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_EnhRelocInfoRes_ies_constr_2,
+ asn_MBR_raB_SetupList_EnhRelocInfoRes_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_EnhRelocInfoRes_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_EnhRelocInfoRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_EnhRelocInfoRes, raB_SetupList_EnhRelocInfoRes_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_EnhRelocInfoRes_ies_2,
+ memb_raB_SetupList_EnhRelocInfoRes_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_EnhRelocInfoRes_ies_constr_2,
+ 0,
+ "raB-SetupList-EnhRelocInfoRes-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_EnhRelocInfoRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-EnhRelocInfoRes-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_EnhRelocInfoRes_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_EnhRelocInfoRes),
+ offsetof(struct RANAP_RAB_SetupList_EnhRelocInfoRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_EnhRelocInfoRes_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes = {
+ "RANAP_RAB-SetupList-EnhRelocInfoRes",
+ "RANAP_RAB-SetupList-EnhRelocInfoRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhRelocInfoRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_EnhRelocInfoRes_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_EnhRelocInfoRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.c b/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.c
new file mode 100644
index 0000000..5668b72
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteReq.h>
+
+static int
+memb_raB_SetupList_EnhancedRelocCompleteReq_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_EnhancedRelocCompleteReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_EnhancedRelocCompleteReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_EnhancedRelocCompleteReq_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_EnhancedRelocCompleteReq_ies_specs_2 = {
+ sizeof(struct raB_SetupList_EnhancedRelocCompleteReq_ies),
+ offsetof(struct raB_SetupList_EnhancedRelocCompleteReq_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_2 = {
+ "raB-SetupList-EnhancedRelocCompleteReq-ies",
+ "raB-SetupList-EnhancedRelocCompleteReq-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_EnhancedRelocCompleteReq_ies_constr_2,
+ asn_MBR_raB_SetupList_EnhancedRelocCompleteReq_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_EnhancedRelocCompleteReq_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteReq, raB_SetupList_EnhancedRelocCompleteReq_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_EnhancedRelocCompleteReq_ies_2,
+ memb_raB_SetupList_EnhancedRelocCompleteReq_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_EnhancedRelocCompleteReq_ies_constr_2,
+ 0,
+ "raB-SetupList-EnhancedRelocCompleteReq-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-EnhancedRelocCompleteReq-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteReq),
+ offsetof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq = {
+ "RANAP_RAB-SetupList-EnhancedRelocCompleteReq",
+ "RANAP_RAB-SetupList-EnhancedRelocCompleteReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_EnhancedRelocCompleteReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.c b/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.c
new file mode 100644
index 0000000..aba4e14
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-EnhancedRelocCompleteRes.h>
+
+static int
+memb_raB_SetupList_EnhancedRelocCompleteRes_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_EnhancedRelocCompleteRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_EnhancedRelocCompleteRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_EnhancedRelocCompleteRes_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_EnhancedRelocCompleteRes_ies_specs_2 = {
+ sizeof(struct raB_SetupList_EnhancedRelocCompleteRes_ies),
+ offsetof(struct raB_SetupList_EnhancedRelocCompleteRes_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_2 = {
+ "raB-SetupList-EnhancedRelocCompleteRes-ies",
+ "raB-SetupList-EnhancedRelocCompleteRes-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_EnhancedRelocCompleteRes_ies_constr_2,
+ asn_MBR_raB_SetupList_EnhancedRelocCompleteRes_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_EnhancedRelocCompleteRes_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteRes, raB_SetupList_EnhancedRelocCompleteRes_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_EnhancedRelocCompleteRes_ies_2,
+ memb_raB_SetupList_EnhancedRelocCompleteRes_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_EnhancedRelocCompleteRes_ies_constr_2,
+ 0,
+ "raB-SetupList-EnhancedRelocCompleteRes-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-EnhancedRelocCompleteRes-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteRes),
+ offsetof(struct RANAP_RAB_SetupList_EnhancedRelocCompleteRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes = {
+ "RANAP_RAB-SetupList-EnhancedRelocCompleteRes",
+ "RANAP_RAB-SetupList-EnhancedRelocCompleteRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_EnhancedRelocCompleteRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-RelocReq.c b/src/ranap/RANAP_RAB-SetupList-RelocReq.c
new file mode 100644
index 0000000..85dc110
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-RelocReq.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-RelocReq.h>
+
+static int
+memb_raB_SetupList_RelocReq_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_RelocReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_RelocReq_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_RelocReq_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_RelocReq_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_RelocReq_ies_specs_2 = {
+ sizeof(struct raB_SetupList_RelocReq_ies),
+ offsetof(struct raB_SetupList_RelocReq_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_RelocReq_ies_2 = {
+ "raB-SetupList-RelocReq-ies",
+ "raB-SetupList-RelocReq-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_RelocReq_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_RelocReq_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_RelocReq_ies_constr_2,
+ asn_MBR_raB_SetupList_RelocReq_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_RelocReq_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_RelocReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReq, raB_SetupList_RelocReq_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_RelocReq_ies_2,
+ memb_raB_SetupList_RelocReq_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_RelocReq_ies_constr_2,
+ 0,
+ "raB-SetupList-RelocReq-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_RelocReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-RelocReq-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_RelocReq_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_RelocReq),
+ offsetof(struct RANAP_RAB_SetupList_RelocReq, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_RelocReq_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_RelocReq = {
+ "RANAP_RAB-SetupList-RelocReq",
+ "RANAP_RAB-SetupList-RelocReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_RelocReq_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_RelocReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c b/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c
new file mode 100644
index 0000000..181c5fc
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupList-RelocReqAck.h>
+
+static int
+memb_raB_SetupList_RelocReqAck_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupList_RelocReqAck_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_RelocReqAck_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupList_RelocReqAck_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_RelocReqAck_ies_specs_2 = {
+ sizeof(struct raB_SetupList_RelocReqAck_ies),
+ offsetof(struct raB_SetupList_RelocReqAck_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_RelocReqAck_ies_2 = {
+ "raB-SetupList-RelocReqAck-ies",
+ "raB-SetupList-RelocReqAck-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupList_RelocReqAck_ies_constr_2,
+ asn_MBR_raB_SetupList_RelocReqAck_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupList_RelocReqAck_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_RelocReqAck_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReqAck, raB_SetupList_RelocReqAck_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupList_RelocReqAck_ies_2,
+ memb_raB_SetupList_RelocReqAck_ies_constraint_1,
+ &asn_PER_memb_raB_SetupList_RelocReqAck_ies_constr_2,
+ 0,
+ "raB-SetupList-RelocReqAck-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_RelocReqAck_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-RelocReqAck-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_RelocReqAck_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupList_RelocReqAck),
+ offsetof(struct RANAP_RAB_SetupList_RelocReqAck, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupList_RelocReqAck_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupList_RelocReqAck = {
+ "RANAP_RAB-SetupList-RelocReqAck",
+ "RANAP_RAB-SetupList-RelocReqAck",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupList_RelocReqAck_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupList_RelocReqAck_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupOrModifiedItem.c b/src/ranap/RANAP_RAB-SetupOrModifiedItem.c
new file mode 100644
index 0000000..940ee71
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifiedItem.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifiedItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifiedItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifiedItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupOrModifiedItem, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupOrModifiedItem, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupOrModifiedItem, dl_dataVolumes),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-dataVolumes"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupOrModifiedItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupOrModifiedItem_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifiedItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-dataVolumes */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifiedItem_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupOrModifiedItem),
+ offsetof(struct RANAP_RAB_SetupOrModifiedItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupOrModifiedItem_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupOrModifiedItem_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifiedItem = {
+ "RANAP_RAB-SetupOrModifiedItem",
+ "RANAP_RAB-SetupOrModifiedItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupOrModifiedItem_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupOrModifiedItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupOrModifiedList.c b/src/ranap/RANAP_RAB-SetupOrModifiedList.c
new file mode 100644
index 0000000..1bc52c8
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifiedList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifiedList.h>
+
+static int
+memb_raB_SetupOrModifiedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_SetupOrModifiedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_SetupOrModifiedList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_SetupOrModifiedList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_SetupOrModifiedList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupOrModifiedList_ies_specs_2 = {
+ sizeof(struct raB_SetupOrModifiedList_ies),
+ offsetof(struct raB_SetupOrModifiedList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_SetupOrModifiedList_ies_2 = {
+ "raB-SetupOrModifiedList-ies",
+ "raB-SetupOrModifiedList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_SetupOrModifiedList_ies_tags_2,
+ sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_SetupOrModifiedList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2)
+ /sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_SetupOrModifiedList_ies_constr_2,
+ asn_MBR_raB_SetupOrModifiedList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_SetupOrModifiedList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifiedList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifiedList, raB_SetupOrModifiedList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_SetupOrModifiedList_ies_2,
+ memb_raB_SetupOrModifiedList_ies_constraint_1,
+ &asn_PER_memb_raB_SetupOrModifiedList_ies_constr_2,
+ 0,
+ "raB-SetupOrModifiedList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifiedList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupOrModifiedList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifiedList_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupOrModifiedList),
+ offsetof(struct RANAP_RAB_SetupOrModifiedList, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupOrModifiedList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifiedList = {
+ "RANAP_RAB-SetupOrModifiedList",
+ "RANAP_RAB-SetupOrModifiedList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupOrModifiedList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupOrModifiedList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupOrModifyItemFirst.c b/src/ranap/RANAP_RAB-SetupOrModifyItemFirst.c
new file mode 100644
index 0000000..172bea3
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifyItemFirst.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyItemFirst.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifyItemFirst_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_POINTER, 6, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, nAS_SynchronisationIndicator),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NAS_SynchronisationIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "nAS-SynchronisationIndicator"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, rAB_Parameters),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_Parameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-Parameters"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, userPlaneInformation),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UserPlaneInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "userPlaneInformation"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, transportLayerInformation),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, service_Handover),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Service_Handover,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "service-Handover"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupOrModifyItemFirst_oms_1[] = { 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifyItemFirst_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nAS-SynchronisationIndicator */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rAB-Parameters */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* userPlaneInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* transportLayerInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* service-Handover */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifyItemFirst_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupOrModifyItemFirst),
+ offsetof(struct RANAP_RAB_SetupOrModifyItemFirst, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupOrModifyItemFirst_tag2el_1,
+ 7, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupOrModifyItemFirst_oms_1, /* Optional members */
+ 6, 0, /* Root/Additions */
+ 6, /* Start extensions */
+ 8 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyItemFirst = {
+ "RANAP_RAB-SetupOrModifyItemFirst",
+ "RANAP_RAB-SetupOrModifyItemFirst",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupOrModifyItemFirst_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupOrModifyItemFirst_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupOrModifyItemSecond.c b/src/ranap/RANAP_RAB-SetupOrModifyItemSecond.c
new file mode 100644
index 0000000..6f09c00
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifyItemSecond.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyItemSecond.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifyItemSecond_1[] = {
+ { ATF_POINTER, 7, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, pDP_TypeInformation),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PDP_TypeInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pDP-TypeInformation"
+ },
+ { ATF_POINTER, 6, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, dataVolumeReportingIndication),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeReportingIndication,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataVolumeReportingIndication"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, dl_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, ul_GTP_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-GTP-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, dl_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, ul_N_PDU_SequenceNumber),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UL_N_PDU_SequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ul-N-PDU-SequenceNumber"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_SetupOrModifyItemSecond_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifyItemSecond_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDP-TypeInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dataVolumeReportingIndication */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dl-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ul-GTP-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dl-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ul-N-PDU-SequenceNumber */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifyItemSecond_specs_1 = {
+ sizeof(struct RANAP_RAB_SetupOrModifyItemSecond),
+ offsetof(struct RANAP_RAB_SetupOrModifyItemSecond, _asn_ctx),
+ asn_MAP_RANAP_RAB_SetupOrModifyItemSecond_tag2el_1,
+ 7, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_SetupOrModifyItemSecond_oms_1, /* Optional members */
+ 7, 0, /* Root/Additions */
+ 6, /* Start extensions */
+ 8 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyItemSecond = {
+ "RANAP_RAB-SetupOrModifyItemSecond",
+ "RANAP_RAB-SetupOrModifyItemSecond",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_SetupOrModifyItemSecond_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_RAB_SetupOrModifyItemSecond_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-SetupOrModifyList.c b/src/ranap/RANAP_RAB-SetupOrModifyList.c
new file mode 100644
index 0000000..a4aac71
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SetupOrModifyList.c
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+#include <constr_CHOICE.h>
+
+#include <osmocom/ranap/RANAP_RAB-SetupOrModifyList.h>
+
+int
+RANAP_RAB_SetupOrModifyList_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ if(1 /* No applicable constraints whatsoever */) {
+ /* Nothing is here. See below */
+ }
+
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_RANAP_RAB_IE_ContainerPairList.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using RANAP_RAB_IE_ContainerPairList,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_RANAP_RAB_IE_ContainerPairList.free_struct;
+ td->print_struct = asn_DEF_RANAP_RAB_IE_ContainerPairList.print_struct;
+ td->check_constraints = asn_DEF_RANAP_RAB_IE_ContainerPairList.check_constraints;
+ td->ber_decoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.ber_decoder;
+ td->der_encoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.der_encoder;
+ td->xer_decoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.xer_decoder;
+ td->xer_encoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.xer_encoder;
+ td->uper_decoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.uper_decoder;
+ td->uper_encoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.uper_encoder;
+ td->aper_decoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.aper_decoder;
+ td->aper_encoder = asn_DEF_RANAP_RAB_IE_ContainerPairList.aper_encoder;
+ /* The next four lines are here because of -fknown-extern-type */
+ td->tags = asn_DEF_RANAP_RAB_IE_ContainerPairList.tags;
+ td->tags_count = asn_DEF_RANAP_RAB_IE_ContainerPairList.tags_count;
+ td->all_tags = asn_DEF_RANAP_RAB_IE_ContainerPairList.all_tags;
+ td->all_tags_count = asn_DEF_RANAP_RAB_IE_ContainerPairList.all_tags_count;
+ /* End of these lines */
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_RANAP_RAB_IE_ContainerPairList.per_constraints;
+ td->elements = asn_DEF_RANAP_RAB_IE_ContainerPairList.elements;
+ td->elements_count = asn_DEF_RANAP_RAB_IE_ContainerPairList.elements_count;
+ td->specifics = asn_DEF_RANAP_RAB_IE_ContainerPairList.specifics;
+}
+
+void
+RANAP_RAB_SetupOrModifyList_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAB_SetupOrModifyList_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SetupOrModifyList_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SetupOrModifyList_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SetupOrModifyList_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SetupOrModifyList_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SetupOrModifyList_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SetupOrModifyList_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SetupOrModifyList_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SetupOrModifyList_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_SetupOrModifyList_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SetupOrModifyList = {
+ "RANAP_RAB-SetupOrModifyList",
+ "RANAP_RAB-SetupOrModifyList",
+ RANAP_RAB_SetupOrModifyList_free,
+ RANAP_RAB_SetupOrModifyList_print,
+ RANAP_RAB_SetupOrModifyList_constraint,
+ RANAP_RAB_SetupOrModifyList_decode_ber,
+ RANAP_RAB_SetupOrModifyList_encode_der,
+ RANAP_RAB_SetupOrModifyList_decode_xer,
+ RANAP_RAB_SetupOrModifyList_encode_xer,
+ RANAP_RAB_SetupOrModifyList_decode_uper,
+ RANAP_RAB_SetupOrModifyList_encode_uper,
+ RANAP_RAB_SetupOrModifyList_decode_aper,
+ RANAP_RAB_SetupOrModifyList_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RAB-SubflowCombinationBitRate.c b/src/ranap/RANAP_RAB-SubflowCombinationBitRate.c
new file mode 100644
index 0000000..c0c0185
--- /dev/null
+++ b/src/ranap/RANAP_RAB-SubflowCombinationBitRate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-SubflowCombinationBitRate.h>
+
+int
+RANAP_RAB_SubflowCombinationBitRate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 16000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RAB_SubflowCombinationBitRate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAB_SubflowCombinationBitRate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SubflowCombinationBitRate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SubflowCombinationBitRate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SubflowCombinationBitRate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SubflowCombinationBitRate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SubflowCombinationBitRate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SubflowCombinationBitRate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAB_SubflowCombinationBitRate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAB_SubflowCombinationBitRate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAB_SubflowCombinationBitRate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_SubflowCombinationBitRate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 24, -1, 0l, 16000000l } /* (0..16000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_SubflowCombinationBitRate = {
+ "RANAP_RAB-SubflowCombinationBitRate",
+ "RANAP_RAB-SubflowCombinationBitRate",
+ RANAP_RAB_SubflowCombinationBitRate_free,
+ RANAP_RAB_SubflowCombinationBitRate_print,
+ RANAP_RAB_SubflowCombinationBitRate_constraint,
+ RANAP_RAB_SubflowCombinationBitRate_decode_ber,
+ RANAP_RAB_SubflowCombinationBitRate_encode_der,
+ RANAP_RAB_SubflowCombinationBitRate_decode_xer,
+ RANAP_RAB_SubflowCombinationBitRate_encode_xer,
+ RANAP_RAB_SubflowCombinationBitRate_decode_uper,
+ RANAP_RAB_SubflowCombinationBitRate_encode_uper,
+ RANAP_RAB_SubflowCombinationBitRate_decode_aper,
+ RANAP_RAB_SubflowCombinationBitRate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_SubflowCombinationBitRate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_SubflowCombinationBitRate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.c b/src/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.c
new file mode 100644
index 0000000..ea67d32
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_specs_1 = {
+ sizeof(struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes),
+ offsetof(struct RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes = {
+ "RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes",
+ "RANAP_RAB-ToBeReleasedItem-EnhancedRelocCompleteRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_ToBeReleasedItem_EnhancedRelocCompleteRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.c b/src/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.c
new file mode 100644
index 0000000..762ae25
--- /dev/null
+++ b/src/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes.h>
+
+static int
+memb_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_specs_2 = {
+ sizeof(struct raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies),
+ offsetof(struct raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_2 = {
+ "raB-ToBeReleasedList-EnhancedRelocCompleteRes-ies",
+ "raB-ToBeReleasedList-EnhancedRelocCompleteRes-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2,
+ sizeof(asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2)
+ /sizeof(asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constr_2,
+ asn_MBR_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes, raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_2,
+ memb_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constraint_1,
+ &asn_PER_memb_raB_ToBeReleasedList_EnhancedRelocCompleteRes_ies_constr_2,
+ 0,
+ "raB-ToBeReleasedList-EnhancedRelocCompleteRes-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ToBeReleasedList-EnhancedRelocCompleteRes-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_specs_1 = {
+ sizeof(struct RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes),
+ offsetof(struct RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes, _asn_ctx),
+ asn_MAP_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes = {
+ "RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes",
+ "RANAP_RAB-ToBeReleasedList-EnhancedRelocCompleteRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RAB_ToBeReleasedList_EnhancedRelocCompleteRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-TrCH-Mapping.c b/src/ranap/RANAP_RAB-TrCH-Mapping.c
new file mode 100644
index 0000000..df4fc25
--- /dev/null
+++ b/src/ranap/RANAP_RAB-TrCH-Mapping.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-TrCH-Mapping.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAB_TrCH_Mapping_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_TrCH_Mapping_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_RAB_TrCH_MappingItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAB_TrCH_Mapping_specs_1 = {
+ sizeof(struct RANAP_RAB_TrCH_Mapping),
+ offsetof(struct RANAP_RAB_TrCH_Mapping, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_TrCH_Mapping = {
+ "RANAP_RAB-TrCH-Mapping",
+ "RANAP_RAB-TrCH-Mapping",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_TrCH_Mapping_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAB_TrCH_Mapping_constr_1,
+ asn_MBR_RANAP_RAB_TrCH_Mapping_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAB_TrCH_Mapping_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAB-TrCH-MappingItem.c b/src/ranap/RANAP_RAB-TrCH-MappingItem.c
new file mode 100644
index 0000000..97352c0
--- /dev/null
+++ b/src/ranap/RANAP_RAB-TrCH-MappingItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAB-TrCH-MappingItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAB_TrCH_MappingItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_TrCH_MappingItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_TrCH_MappingItem, trCH_ID_List),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TrCH_ID_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "trCH-ID-List"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAB_TrCH_MappingItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAB_TrCH_MappingItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_TrCH_MappingItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trCH-ID-List */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_TrCH_MappingItem_specs_1 = {
+ sizeof(struct RANAP_RAB_TrCH_MappingItem),
+ offsetof(struct RANAP_RAB_TrCH_MappingItem, _asn_ctx),
+ asn_MAP_RANAP_RAB_TrCH_MappingItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAB_TrCH_MappingItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAB_TrCH_MappingItem = {
+ "RANAP_RAB-TrCH-MappingItem",
+ "RANAP_RAB-TrCH-MappingItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1,
+ sizeof(asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RAB_TrCH_MappingItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAB_TrCH_MappingItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAB_TrCH_MappingItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABDataVolumeReport.c b/src/ranap/RANAP_RABDataVolumeReport.c
new file mode 100644
index 0000000..6be90da
--- /dev/null
+++ b/src/ranap/RANAP_RABDataVolumeReport.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABDataVolumeReport.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RABDataVolumeReport_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberN_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberN, dl_UnsuccessfullyTransmittedDataVolume),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-UnsuccessfullyTransmittedDataVolume"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberN, dataVolumeReference),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataVolumeReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataVolumeReference"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberN, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberN_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MemberN_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberN_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-UnsuccessfullyTransmittedDataVolume */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dataVolumeReference */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberN_specs_2 = {
+ sizeof(struct MemberN),
+ offsetof(struct MemberN, _asn_ctx),
+ asn_MAP_MemberN_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberN_oms_2, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberN_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberN_tags_2,
+ sizeof(asn_DEF_MemberN_tags_2)
+ /sizeof(asn_DEF_MemberN_tags_2[0]), /* 1 */
+ asn_DEF_MemberN_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberN_tags_2)
+ /sizeof(asn_DEF_MemberN_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberN_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberN_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABDataVolumeReport_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberN_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RABDataVolumeReport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RABDataVolumeReport_specs_1 = {
+ sizeof(struct RANAP_RABDataVolumeReport),
+ offsetof(struct RANAP_RABDataVolumeReport, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABDataVolumeReport = {
+ "RANAP_RABDataVolumeReport",
+ "RANAP_RABDataVolumeReport",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABDataVolumeReport_tags_1,
+ sizeof(asn_DEF_RANAP_RABDataVolumeReport_tags_1)
+ /sizeof(asn_DEF_RANAP_RABDataVolumeReport_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABDataVolumeReport_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABDataVolumeReport_tags_1)
+ /sizeof(asn_DEF_RANAP_RABDataVolumeReport_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RABDataVolumeReport_constr_1,
+ asn_MBR_RANAP_RABDataVolumeReport_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RABDataVolumeReport_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABParametersList.c b/src/ranap/RANAP_RABParametersList.c
new file mode 100644
index 0000000..89fe75b
--- /dev/null
+++ b/src/ranap/RANAP_RABParametersList.c
@@ -0,0 +1,155 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABParametersList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RABParametersList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberB_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberB, rab_Id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rab-Id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberB, cn_domain),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CN_DomainIndicator,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cn-domain"
+ },
+ { ATF_POINTER, 3, offsetof(struct MemberB, rabDataVolumeReport),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RABDataVolumeReport,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rabDataVolumeReport"
+ },
+ { ATF_POINTER, 2, offsetof(struct MemberB, upInformation),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UPInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "upInformation"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberB, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberB_oms_2[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_MemberB_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberB_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rab-Id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cn-domain */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rabDataVolumeReport */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* upInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberB_specs_2 = {
+ sizeof(struct MemberB),
+ offsetof(struct MemberB, _asn_ctx),
+ asn_MAP_MemberB_tag2el_2,
+ 5, /* Count of tags in the map */
+ asn_MAP_MemberB_oms_2, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberB_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberB_tags_2,
+ sizeof(asn_DEF_MemberB_tags_2)
+ /sizeof(asn_DEF_MemberB_tags_2[0]), /* 1 */
+ asn_DEF_MemberB_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberB_tags_2)
+ /sizeof(asn_DEF_MemberB_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberB_2,
+ 5, /* Elements count */
+ &asn_SPC_MemberB_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABParametersList_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberB_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RABParametersList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RABParametersList_specs_1 = {
+ sizeof(struct RANAP_RABParametersList),
+ offsetof(struct RANAP_RABParametersList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABParametersList = {
+ "RANAP_RABParametersList",
+ "RANAP_RABParametersList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABParametersList_tags_1,
+ sizeof(asn_DEF_RANAP_RABParametersList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABParametersList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABParametersList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABParametersList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABParametersList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RABParametersList_constr_1,
+ asn_MBR_RANAP_RABParametersList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RABParametersList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABased.c b/src/ranap/RANAP_RABased.c
new file mode 100644
index 0000000..5a85b8f
--- /dev/null
+++ b/src/ranap/RANAP_RABased.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABased.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABased_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABased, raiList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAI_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "raiList"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RABased, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RABased_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RABased_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RABased_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* raiList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RABased_specs_1 = {
+ sizeof(struct RANAP_RABased),
+ offsetof(struct RANAP_RABased, _asn_ctx),
+ asn_MAP_RANAP_RABased_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_RABased_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABased = {
+ "RANAP_RABased",
+ "RANAP_RABased",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABased_tags_1,
+ sizeof(asn_DEF_RANAP_RABased_tags_1)
+ /sizeof(asn_DEF_RANAP_RABased_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABased_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABased_tags_1)
+ /sizeof(asn_DEF_RANAP_RABased_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RABased_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RABased_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABs-ContextFailedtoTransferItem.c b/src/ranap/RANAP_RABs-ContextFailedtoTransferItem.c
new file mode 100644
index 0000000..5381685
--- /dev/null
+++ b/src/ranap/RANAP_RABs-ContextFailedtoTransferItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABs-ContextFailedtoTransferItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABs_ContextFailedtoTransferItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_ContextFailedtoTransferItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_ContextFailedtoTransferItem, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RABs_ContextFailedtoTransferItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RABs_ContextFailedtoTransferItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RABs_ContextFailedtoTransferItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RABs_ContextFailedtoTransferItem_specs_1 = {
+ sizeof(struct RANAP_RABs_ContextFailedtoTransferItem),
+ offsetof(struct RANAP_RABs_ContextFailedtoTransferItem, _asn_ctx),
+ asn_MAP_RANAP_RABs_ContextFailedtoTransferItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RABs_ContextFailedtoTransferItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_ContextFailedtoTransferItem = {
+ "RANAP_RABs-ContextFailedtoTransferItem",
+ "RANAP_RABs-ContextFailedtoTransferItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1,
+ sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RABs_ContextFailedtoTransferItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RABs_ContextFailedtoTransferItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABs-ContextFailedtoTransferList.c b/src/ranap/RANAP_RABs-ContextFailedtoTransferList.c
new file mode 100644
index 0000000..c1c9472
--- /dev/null
+++ b/src/ranap/RANAP_RABs-ContextFailedtoTransferList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABs-ContextFailedtoTransferList.h>
+
+static int
+memb_raBs_ContextFailedtoTransferList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raBs_ContextFailedtoTransferList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raBs_ContextFailedtoTransferList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raBs_ContextFailedtoTransferList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raBs_ContextFailedtoTransferList_ies_specs_2 = {
+ sizeof(struct raBs_ContextFailedtoTransferList_ies),
+ offsetof(struct raBs_ContextFailedtoTransferList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raBs_ContextFailedtoTransferList_ies_2 = {
+ "raBs-ContextFailedtoTransferList-ies",
+ "raBs-ContextFailedtoTransferList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2,
+ sizeof(asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2)
+ /sizeof(asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2)
+ /sizeof(asn_DEF_raBs_ContextFailedtoTransferList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raBs_ContextFailedtoTransferList_ies_constr_2,
+ asn_MBR_raBs_ContextFailedtoTransferList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raBs_ContextFailedtoTransferList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABs_ContextFailedtoTransferList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_ContextFailedtoTransferList, raBs_ContextFailedtoTransferList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raBs_ContextFailedtoTransferList_ies_2,
+ memb_raBs_ContextFailedtoTransferList_ies_constraint_1,
+ &asn_PER_memb_raBs_ContextFailedtoTransferList_ies_constr_2,
+ 0,
+ "raBs-ContextFailedtoTransferList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RABs_ContextFailedtoTransferList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raBs-ContextFailedtoTransferList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RABs_ContextFailedtoTransferList_specs_1 = {
+ sizeof(struct RANAP_RABs_ContextFailedtoTransferList),
+ offsetof(struct RANAP_RABs_ContextFailedtoTransferList, _asn_ctx),
+ asn_MAP_RANAP_RABs_ContextFailedtoTransferList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_ContextFailedtoTransferList = {
+ "RANAP_RABs-ContextFailedtoTransferList",
+ "RANAP_RABs-ContextFailedtoTransferList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1,
+ sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_ContextFailedtoTransferList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RABs_ContextFailedtoTransferList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RABs_ContextFailedtoTransferList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABs-failed-to-reportItem.c b/src/ranap/RANAP_RABs-failed-to-reportItem.c
new file mode 100644
index 0000000..6b797c6
--- /dev/null
+++ b/src/ranap/RANAP_RABs-failed-to-reportItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABs-failed-to-reportItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABs_failed_to_reportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_failed_to_reportItem, rAB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_failed_to_reportItem, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RABs_failed_to_reportItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RABs_failed_to_reportItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RABs_failed_to_reportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rAB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RABs_failed_to_reportItem_specs_1 = {
+ sizeof(struct RANAP_RABs_failed_to_reportItem),
+ offsetof(struct RANAP_RABs_failed_to_reportItem, _asn_ctx),
+ asn_MAP_RANAP_RABs_failed_to_reportItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RABs_failed_to_reportItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_failed_to_reportItem = {
+ "RANAP_RABs-failed-to-reportItem",
+ "RANAP_RABs-failed-to-reportItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1,
+ sizeof(asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_failed_to_reportItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RABs_failed_to_reportItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RABs_failed_to_reportItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RABs-failed-to-reportList.c b/src/ranap/RANAP_RABs-failed-to-reportList.c
new file mode 100644
index 0000000..7d3107e
--- /dev/null
+++ b/src/ranap/RANAP_RABs-failed-to-reportList.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RABs-failed-to-reportList.h>
+
+static int
+memb_raBs_failed_to_reportList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_raBs_failed_to_reportList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_raBs_failed_to_reportList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_raBs_failed_to_reportList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_raBs_failed_to_reportList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_raBs_failed_to_reportList_ies_specs_2 = {
+ sizeof(struct raBs_failed_to_reportList_ies),
+ offsetof(struct raBs_failed_to_reportList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_raBs_failed_to_reportList_ies_2 = {
+ "raBs-failed-to-reportList-ies",
+ "raBs-failed-to-reportList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_raBs_failed_to_reportList_ies_tags_2,
+ sizeof(asn_DEF_raBs_failed_to_reportList_ies_tags_2)
+ /sizeof(asn_DEF_raBs_failed_to_reportList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_raBs_failed_to_reportList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_raBs_failed_to_reportList_ies_tags_2)
+ /sizeof(asn_DEF_raBs_failed_to_reportList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_raBs_failed_to_reportList_ies_constr_2,
+ asn_MBR_raBs_failed_to_reportList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_raBs_failed_to_reportList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RABs_failed_to_reportList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RABs_failed_to_reportList, raBs_failed_to_reportList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_raBs_failed_to_reportList_ies_2,
+ memb_raBs_failed_to_reportList_ies_constraint_1,
+ &asn_PER_memb_raBs_failed_to_reportList_ies_constr_2,
+ 0,
+ "raBs-failed-to-reportList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RABs_failed_to_reportList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RABs_failed_to_reportList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raBs-failed-to-reportList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RABs_failed_to_reportList_specs_1 = {
+ sizeof(struct RANAP_RABs_failed_to_reportList),
+ offsetof(struct RANAP_RABs_failed_to_reportList, _asn_ctx),
+ asn_MAP_RANAP_RABs_failed_to_reportList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RABs_failed_to_reportList = {
+ "RANAP_RABs-failed-to-reportList",
+ "RANAP_RABs-failed-to-reportList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RABs_failed_to_reportList_tags_1,
+ sizeof(asn_DEF_RANAP_RABs_failed_to_reportList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_failed_to_reportList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RABs_failed_to_reportList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RABs_failed_to_reportList_tags_1)
+ /sizeof(asn_DEF_RANAP_RABs_failed_to_reportList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RABs_failed_to_reportList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RABs_failed_to_reportList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAC.c b/src/ranap/RANAP_RAC.c
new file mode 100644
index 0000000..8a4cb02
--- /dev/null
+++ b/src/ranap/RANAP_RAC.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAC.h>
+
+int
+RANAP_RAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_RAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAC = {
+ "RANAP_RAC",
+ "RANAP_RAC",
+ RANAP_RAC_free,
+ RANAP_RAC_print,
+ RANAP_RAC_constraint,
+ RANAP_RAC_decode_ber,
+ RANAP_RAC_encode_der,
+ RANAP_RAC_decode_xer,
+ RANAP_RAC_encode_xer,
+ RANAP_RAC_decode_uper,
+ RANAP_RAC_encode_uper,
+ RANAP_RAC_decode_aper,
+ RANAP_RAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAC_tags_1,
+ sizeof(asn_DEF_RANAP_RAC_tags_1)
+ /sizeof(asn_DEF_RANAP_RAC_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAC_tags_1)
+ /sizeof(asn_DEF_RANAP_RAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RAI-List.c b/src/ranap/RANAP_RAI-List.c
new file mode 100644
index 0000000..a39ae97
--- /dev/null
+++ b/src/ranap/RANAP_RAI-List.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAI-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAI_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (SIZE(1..8)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAI_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_RAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAI_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAI_List_specs_1 = {
+ sizeof(struct RANAP_RAI_List),
+ offsetof(struct RANAP_RAI_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAI_List = {
+ "RANAP_RAI-List",
+ "RANAP_RAI-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAI_List_tags_1,
+ sizeof(asn_DEF_RANAP_RAI_List_tags_1)
+ /sizeof(asn_DEF_RANAP_RAI_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAI_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAI_List_tags_1)
+ /sizeof(asn_DEF_RANAP_RAI_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAI_List_constr_1,
+ asn_MBR_RANAP_RAI_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAI_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAI.c b/src/ranap/RANAP_RAI.c
new file mode 100644
index 0000000..58d02f7
--- /dev/null
+++ b/src/ranap/RANAP_RAI.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAI.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAI, lAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAI, rAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAC"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RAI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RAI_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAI_specs_1 = {
+ sizeof(struct RANAP_RAI),
+ offsetof(struct RANAP_RAI, _asn_ctx),
+ asn_MAP_RANAP_RAI_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RAI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAI = {
+ "RANAP_RAI",
+ "RANAP_RAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAI_tags_1,
+ sizeof(asn_DEF_RANAP_RAI_tags_1)
+ /sizeof(asn_DEF_RANAP_RAI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAI_tags_1)
+ /sizeof(asn_DEF_RANAP_RAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RAI_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAListofIdleModeUEs.c b/src/ranap/RANAP_RAListofIdleModeUEs.c
new file mode 100644
index 0000000..23ff016
--- /dev/null
+++ b/src/ranap/RANAP_RAListofIdleModeUEs.c
@@ -0,0 +1,233 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAListofIdleModeUEs.h>
+
+static int
+emptyFullRAListofIdleModeUEs_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+emptyFullRAListofIdleModeUEs_3_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+emptyFullRAListofIdleModeUEs_3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+emptyFullRAListofIdleModeUEs_3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+emptyFullRAListofIdleModeUEs_3_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+emptyFullRAListofIdleModeUEs_3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+emptyFullRAListofIdleModeUEs_3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+emptyFullRAListofIdleModeUEs_3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+emptyFullRAListofIdleModeUEs_3_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+emptyFullRAListofIdleModeUEs_3_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+emptyFullRAListofIdleModeUEs_3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ emptyFullRAListofIdleModeUEs_3_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_emptyFullRAListofIdleModeUEs_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RANAP_RAListofIdleModeUEs_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_emptyFullRAListofIdleModeUEs_value2enum_3[] = {
+ { 0, 9, "emptylist" },
+ { 1, 8, "fulllist" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_emptyFullRAListofIdleModeUEs_enum2value_3[] = {
+ 0, /* emptylist(0) */
+ 1 /* fulllist(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_emptyFullRAListofIdleModeUEs_specs_3 = {
+ asn_MAP_emptyFullRAListofIdleModeUEs_value2enum_3, /* "tag" => N; sorted by tag */
+ asn_MAP_emptyFullRAListofIdleModeUEs_enum2value_3, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_emptyFullRAListofIdleModeUEs_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_emptyFullRAListofIdleModeUEs_3 = {
+ "emptyFullRAListofIdleModeUEs",
+ "emptyFullRAListofIdleModeUEs",
+ emptyFullRAListofIdleModeUEs_3_free,
+ emptyFullRAListofIdleModeUEs_3_print,
+ emptyFullRAListofIdleModeUEs_3_constraint,
+ emptyFullRAListofIdleModeUEs_3_decode_ber,
+ emptyFullRAListofIdleModeUEs_3_encode_der,
+ emptyFullRAListofIdleModeUEs_3_decode_xer,
+ emptyFullRAListofIdleModeUEs_3_encode_xer,
+ emptyFullRAListofIdleModeUEs_3_decode_uper,
+ emptyFullRAListofIdleModeUEs_3_encode_uper,
+ emptyFullRAListofIdleModeUEs_3_decode_aper,
+ emptyFullRAListofIdleModeUEs_3_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_emptyFullRAListofIdleModeUEs_tags_3,
+ sizeof(asn_DEF_emptyFullRAListofIdleModeUEs_tags_3)
+ /sizeof(asn_DEF_emptyFullRAListofIdleModeUEs_tags_3[0]) - 1, /* 1 */
+ asn_DEF_emptyFullRAListofIdleModeUEs_tags_3, /* Same as above */
+ sizeof(asn_DEF_emptyFullRAListofIdleModeUEs_tags_3)
+ /sizeof(asn_DEF_emptyFullRAListofIdleModeUEs_tags_3[0]), /* 2 */
+ &asn_PER_type_emptyFullRAListofIdleModeUEs_constr_3,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_emptyFullRAListofIdleModeUEs_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RAListofIdleModeUEs_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAListofIdleModeUEs, choice.notEmptyRAListofIdleModeUEs),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NotEmptyRAListofIdleModeUEs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "notEmptyRAListofIdleModeUEs"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RAListofIdleModeUEs, choice.emptyFullRAListofIdleModeUEs),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_emptyFullRAListofIdleModeUEs_3,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "emptyFullRAListofIdleModeUEs"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAListofIdleModeUEs_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notEmptyRAListofIdleModeUEs */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* emptyFullRAListofIdleModeUEs */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_RAListofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_RAListofIdleModeUEs),
+ offsetof(struct RANAP_RAListofIdleModeUEs, _asn_ctx),
+ offsetof(struct RANAP_RAListofIdleModeUEs, present),
+ sizeof(((struct RANAP_RAListofIdleModeUEs *)0)->present),
+ asn_MAP_RANAP_RAListofIdleModeUEs_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAListofIdleModeUEs = {
+ "RANAP_RAListofIdleModeUEs",
+ "RANAP_RAListofIdleModeUEs",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_RAListofIdleModeUEs_constr_1,
+ asn_MBR_RANAP_RAListofIdleModeUEs_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RAListofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.c b/src/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.c
new file mode 100644
index 0000000..b59401a
--- /dev/null
+++ b/src/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAListwithNoIdleModeUEsAnyMore.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAListwithNoIdleModeUEsAnyMore_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAListwithNoIdleModeUEsAnyMore_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAListwithNoIdleModeUEsAnyMore_specs_1 = {
+ sizeof(struct RANAP_RAListwithNoIdleModeUEsAnyMore),
+ offsetof(struct RANAP_RAListwithNoIdleModeUEsAnyMore, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore = {
+ "RANAP_RAListwithNoIdleModeUEsAnyMore",
+ "RANAP_RAListwithNoIdleModeUEsAnyMore",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1,
+ sizeof(asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1)
+ /sizeof(asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1)
+ /sizeof(asn_DEF_RANAP_RAListwithNoIdleModeUEsAnyMore_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAListwithNoIdleModeUEsAnyMore_constr_1,
+ asn_MBR_RANAP_RAListwithNoIdleModeUEsAnyMore_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAListwithNoIdleModeUEsAnyMore_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.c b/src/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.c
new file mode 100644
index 0000000..a2b50fe
--- /dev/null
+++ b/src/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationRequest.h>
+
+static int
+memb_ranaP_EnhancedRelocationInformationRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ranaP_EnhancedRelocationInformationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ranaP_EnhancedRelocationInformationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranaP_EnhancedRelocationInformationRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranaP_EnhancedRelocationInformationRequest_ies_specs_2 = {
+ sizeof(struct ranaP_EnhancedRelocationInformationRequest_ies),
+ offsetof(struct ranaP_EnhancedRelocationInformationRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_2 = {
+ "ranaP-EnhancedRelocationInformationRequest-ies",
+ "ranaP-EnhancedRelocationInformationRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2,
+ sizeof(asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ranaP_EnhancedRelocationInformationRequest_ies_constr_2,
+ asn_MBR_ranaP_EnhancedRelocationInformationRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ranaP_EnhancedRelocationInformationRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RANAP_EnhancedRelocationInformationRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_EnhancedRelocationInformationRequest, ranaP_EnhancedRelocationInformationRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ranaP_EnhancedRelocationInformationRequest_ies_2,
+ memb_ranaP_EnhancedRelocationInformationRequest_ies_constraint_1,
+ &asn_PER_memb_ranaP_EnhancedRelocationInformationRequest_ies_constr_2,
+ 0,
+ "ranaP-EnhancedRelocationInformationRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RANAP_EnhancedRelocationInformationRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranaP-EnhancedRelocationInformationRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RANAP_EnhancedRelocationInformationRequest_specs_1 = {
+ sizeof(struct RANAP_RANAP_EnhancedRelocationInformationRequest),
+ offsetof(struct RANAP_RANAP_EnhancedRelocationInformationRequest, _asn_ctx),
+ asn_MAP_RANAP_RANAP_EnhancedRelocationInformationRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest = {
+ "RANAP_RANAP-EnhancedRelocationInformationRequest",
+ "RANAP_RANAP-EnhancedRelocationInformationRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RANAP_EnhancedRelocationInformationRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RANAP_EnhancedRelocationInformationRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.c b/src/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.c
new file mode 100644
index 0000000..a92b060
--- /dev/null
+++ b/src/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RANAP-EnhancedRelocationInformationResponse.h>
+
+static int
+memb_ranaP_EnhancedRelocationInformationResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ranaP_EnhancedRelocationInformationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ranaP_EnhancedRelocationInformationResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranaP_EnhancedRelocationInformationResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranaP_EnhancedRelocationInformationResponse_ies_specs_2 = {
+ sizeof(struct ranaP_EnhancedRelocationInformationResponse_ies),
+ offsetof(struct ranaP_EnhancedRelocationInformationResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_2 = {
+ "ranaP-EnhancedRelocationInformationResponse-ies",
+ "ranaP-EnhancedRelocationInformationResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2,
+ sizeof(asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ranaP_EnhancedRelocationInformationResponse_ies_constr_2,
+ asn_MBR_ranaP_EnhancedRelocationInformationResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ranaP_EnhancedRelocationInformationResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RANAP_EnhancedRelocationInformationResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_EnhancedRelocationInformationResponse, ranaP_EnhancedRelocationInformationResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ranaP_EnhancedRelocationInformationResponse_ies_2,
+ memb_ranaP_EnhancedRelocationInformationResponse_ies_constraint_1,
+ &asn_PER_memb_ranaP_EnhancedRelocationInformationResponse_ies_constr_2,
+ 0,
+ "ranaP-EnhancedRelocationInformationResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RANAP_EnhancedRelocationInformationResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranaP-EnhancedRelocationInformationResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RANAP_EnhancedRelocationInformationResponse_specs_1 = {
+ sizeof(struct RANAP_RANAP_EnhancedRelocationInformationResponse),
+ offsetof(struct RANAP_RANAP_EnhancedRelocationInformationResponse, _asn_ctx),
+ asn_MAP_RANAP_RANAP_EnhancedRelocationInformationResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse = {
+ "RANAP_RANAP-EnhancedRelocationInformationResponse",
+ "RANAP_RANAP-EnhancedRelocationInformationResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1,
+ sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_EnhancedRelocationInformationResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RANAP_EnhancedRelocationInformationResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RANAP_EnhancedRelocationInformationResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RANAP-PDU.c b/src/ranap/RANAP_RANAP-PDU.c
new file mode 100644
index 0000000..16e3aa7
--- /dev/null
+++ b/src/ranap/RANAP_RANAP-PDU.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RANAP-PDU.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RANAP_PDU_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RANAP_PDU_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_PDU, choice.initiatingMessage),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_InitiatingMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "initiatingMessage"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_PDU, choice.successfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "successfulOutcome"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_PDU, choice.unsuccessfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UnsuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "unsuccessfulOutcome"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_PDU, choice.outcome),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Outcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "outcome"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RANAP_PDU_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* unsuccessfulOutcome */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* outcome */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_RANAP_PDU_specs_1 = {
+ sizeof(struct RANAP_RANAP_PDU),
+ offsetof(struct RANAP_RANAP_PDU, _asn_ctx),
+ offsetof(struct RANAP_RANAP_PDU, present),
+ sizeof(((struct RANAP_RANAP_PDU *)0)->present),
+ asn_MAP_RANAP_RANAP_PDU_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_PDU = {
+ "RANAP_RANAP-PDU",
+ "RANAP_RANAP-PDU",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_RANAP_PDU_constr_1,
+ asn_MBR_RANAP_RANAP_PDU_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RANAP_PDU_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RANAP-RelocationInformation.c b/src/ranap/RANAP_RANAP-RelocationInformation.c
new file mode 100644
index 0000000..898222d
--- /dev/null
+++ b/src/ranap/RANAP_RANAP-RelocationInformation.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RANAP-RelocationInformation.h>
+
+static int
+memb_ranaP_RelocationInformation_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ranaP_RelocationInformation_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ranaP_RelocationInformation_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranaP_RelocationInformation_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ranaP_RelocationInformation_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranaP_RelocationInformation_ies_specs_2 = {
+ sizeof(struct ranaP_RelocationInformation_ies),
+ offsetof(struct ranaP_RelocationInformation_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranaP_RelocationInformation_ies_2 = {
+ "ranaP-RelocationInformation-ies",
+ "ranaP-RelocationInformation-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ranaP_RelocationInformation_ies_tags_2,
+ sizeof(asn_DEF_ranaP_RelocationInformation_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_RelocationInformation_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ranaP_RelocationInformation_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ranaP_RelocationInformation_ies_tags_2)
+ /sizeof(asn_DEF_ranaP_RelocationInformation_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ranaP_RelocationInformation_ies_constr_2,
+ asn_MBR_ranaP_RelocationInformation_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ranaP_RelocationInformation_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RANAP_RelocationInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RANAP_RelocationInformation, ranaP_RelocationInformation_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ranaP_RelocationInformation_ies_2,
+ memb_ranaP_RelocationInformation_ies_constraint_1,
+ &asn_PER_memb_ranaP_RelocationInformation_ies_constr_2,
+ 0,
+ "ranaP-RelocationInformation-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RANAP_RelocationInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RANAP_RelocationInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranaP-RelocationInformation-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RANAP_RelocationInformation_specs_1 = {
+ sizeof(struct RANAP_RANAP_RelocationInformation),
+ offsetof(struct RANAP_RANAP_RelocationInformation, _asn_ctx),
+ asn_MAP_RANAP_RANAP_RelocationInformation_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_RelocationInformation = {
+ "RANAP_RANAP-RelocationInformation",
+ "RANAP_RANAP-RelocationInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RANAP_RelocationInformation_tags_1,
+ sizeof(asn_DEF_RANAP_RANAP_RelocationInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_RelocationInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RANAP_RelocationInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RANAP_RelocationInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RANAP_RelocationInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RANAP_RelocationInformation_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RANAP_RelocationInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAT-Type.c b/src/ranap/RANAP_RAT-Type.c
new file mode 100644
index 0000000..b507ae9
--- /dev/null
+++ b/src/ranap/RANAP_RAT-Type.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAT-Type.h>
+
+int
+RANAP_RAT_Type_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RAT_Type_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RAT_Type_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RAT_Type_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAT_Type_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RAT_Type_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAT_Type_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RAT_Type_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RAT_Type_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RAT_Type_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RAT_Type_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RAT_Type_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RAT_Type_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAT_Type_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RAT_Type_value2enum_1[] = {
+ { 0, 5, "utran" },
+ { 1, 5, "geran" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RAT_Type_enum2value_1[] = {
+ 1, /* geran(1) */
+ 0 /* utran(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RAT_Type_specs_1 = {
+ asn_MAP_RANAP_RAT_Type_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RAT_Type_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAT_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAT_Type = {
+ "RANAP_RAT-Type",
+ "RANAP_RAT-Type",
+ RANAP_RAT_Type_free,
+ RANAP_RAT_Type_print,
+ RANAP_RAT_Type_constraint,
+ RANAP_RAT_Type_decode_ber,
+ RANAP_RAT_Type_encode_der,
+ RANAP_RAT_Type_decode_xer,
+ RANAP_RAT_Type_encode_xer,
+ RANAP_RAT_Type_decode_uper,
+ RANAP_RAT_Type_encode_uper,
+ RANAP_RAT_Type_decode_aper,
+ RANAP_RAT_Type_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAT_Type_tags_1,
+ sizeof(asn_DEF_RANAP_RAT_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_RAT_Type_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAT_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAT_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_RAT_Type_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAT_Type_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RAT_Type_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RAofIdleModeUEs.c b/src/ranap/RANAP_RAofIdleModeUEs.c
new file mode 100644
index 0000000..a9a30ef
--- /dev/null
+++ b/src/ranap/RANAP_RAofIdleModeUEs.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RAofIdleModeUEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RAofIdleModeUEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, -1, 1l, 65536l } /* (SIZE(1..65536)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RAofIdleModeUEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RAofIdleModeUEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RAofIdleModeUEs_specs_1 = {
+ sizeof(struct RANAP_RAofIdleModeUEs),
+ offsetof(struct RANAP_RAofIdleModeUEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RAofIdleModeUEs = {
+ "RANAP_RAofIdleModeUEs",
+ "RANAP_RAofIdleModeUEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RAofIdleModeUEs_tags_1,
+ sizeof(asn_DEF_RANAP_RAofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_RAofIdleModeUEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RAofIdleModeUEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RAofIdleModeUEs_tags_1)
+ /sizeof(asn_DEF_RANAP_RAofIdleModeUEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RAofIdleModeUEs_constr_1,
+ asn_MBR_RANAP_RAofIdleModeUEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RAofIdleModeUEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RIM-Transfer.c b/src/ranap/RANAP_RIM-Transfer.c
new file mode 100644
index 0000000..0a69898
--- /dev/null
+++ b/src/ranap/RANAP_RIM-Transfer.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RIM-Transfer.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RIM_Transfer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RIM_Transfer, rIMInformation),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RIMInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rIMInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RIM_Transfer, rIMRoutingAddress),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_RIMRoutingAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rIMRoutingAddress"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RIM_Transfer, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RIM_Transfer_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RIM_Transfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RIM_Transfer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rIMInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rIMRoutingAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RIM_Transfer_specs_1 = {
+ sizeof(struct RANAP_RIM_Transfer),
+ offsetof(struct RANAP_RIM_Transfer, _asn_ctx),
+ asn_MAP_RANAP_RIM_Transfer_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RIM_Transfer_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RIM_Transfer = {
+ "RANAP_RIM-Transfer",
+ "RANAP_RIM-Transfer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RIM_Transfer_tags_1,
+ sizeof(asn_DEF_RANAP_RIM_Transfer_tags_1)
+ /sizeof(asn_DEF_RANAP_RIM_Transfer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RIM_Transfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RIM_Transfer_tags_1)
+ /sizeof(asn_DEF_RANAP_RIM_Transfer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RIM_Transfer_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RIM_Transfer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RIMInformation.c b/src/ranap/RANAP_RIMInformation.c
new file mode 100644
index 0000000..32f8d8e
--- /dev/null
+++ b/src/ranap/RANAP_RIMInformation.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RIMInformation.h>
+
+int
+RANAP_RIMInformation_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RIMInformation_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_RIMInformation_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RIMInformation_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RIMInformation_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RIMInformation_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RIMInformation_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RIMInformation_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RIMInformation_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RIMInformation_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RIMInformation_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RIMInformation_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RIMInformation_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_RIMInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RIMInformation = {
+ "RANAP_RIMInformation",
+ "RANAP_RIMInformation",
+ RANAP_RIMInformation_free,
+ RANAP_RIMInformation_print,
+ RANAP_RIMInformation_constraint,
+ RANAP_RIMInformation_decode_ber,
+ RANAP_RIMInformation_encode_der,
+ RANAP_RIMInformation_decode_xer,
+ RANAP_RIMInformation_encode_xer,
+ RANAP_RIMInformation_decode_uper,
+ RANAP_RIMInformation_encode_uper,
+ RANAP_RIMInformation_decode_aper,
+ RANAP_RIMInformation_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RIMInformation_tags_1,
+ sizeof(asn_DEF_RANAP_RIMInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RIMInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RIMInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RIMInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RIMInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RIMRoutingAddress.c b/src/ranap/RANAP_RIMRoutingAddress.c
new file mode 100644
index 0000000..bc5908c
--- /dev/null
+++ b/src/ranap/RANAP_RIMRoutingAddress.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RIMRoutingAddress.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RIMRoutingAddress_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RIMRoutingAddress_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RIMRoutingAddress, choice.targetRNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetRNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "targetRNC-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RIMRoutingAddress, choice.gERAN_Cell_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_GERAN_Cell_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gERAN-Cell-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RIMRoutingAddress, choice.targeteNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetENB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "targeteNB-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RIMRoutingAddress_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* targetRNC-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gERAN-Cell-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* targeteNB-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_RIMRoutingAddress_specs_1 = {
+ sizeof(struct RANAP_RIMRoutingAddress),
+ offsetof(struct RANAP_RIMRoutingAddress, _asn_ctx),
+ offsetof(struct RANAP_RIMRoutingAddress, present),
+ sizeof(((struct RANAP_RIMRoutingAddress *)0)->present),
+ asn_MAP_RANAP_RIMRoutingAddress_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RIMRoutingAddress = {
+ "RANAP_RIMRoutingAddress",
+ "RANAP_RIMRoutingAddress",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_RIMRoutingAddress_constr_1,
+ asn_MBR_RANAP_RIMRoutingAddress_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RIMRoutingAddress_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RNC-ID.c b/src/ranap/RANAP_RNC-ID.c
new file mode 100644
index 0000000..da7ee36
--- /dev/null
+++ b/src/ranap/RANAP_RNC-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RNC-ID.h>
+
+int
+RANAP_RNC_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 4095l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RNC_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RNC_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RNC_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RNC_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RNC_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RNC_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RNC_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RNC_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RNC_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RNC_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RNC_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RNC_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RNC_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (0..4095) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RNC_ID = {
+ "RANAP_RNC-ID",
+ "RANAP_RNC-ID",
+ RANAP_RNC_ID_free,
+ RANAP_RNC_ID_print,
+ RANAP_RNC_ID_constraint,
+ RANAP_RNC_ID_decode_ber,
+ RANAP_RNC_ID_encode_der,
+ RANAP_RNC_ID_decode_xer,
+ RANAP_RNC_ID_encode_xer,
+ RANAP_RNC_ID_decode_uper,
+ RANAP_RNC_ID_encode_uper,
+ RANAP_RNC_ID_decode_aper,
+ RANAP_RNC_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RNC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_RNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_RNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_RNC_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RNC_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RNCTraceInformation.c b/src/ranap/RANAP_RNCTraceInformation.c
new file mode 100644
index 0000000..fc286ae
--- /dev/null
+++ b/src/ranap/RANAP_RNCTraceInformation.c
@@ -0,0 +1,252 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RNCTraceInformation.h>
+
+static int
+traceActivationIndicato_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+traceActivationIndicato_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+static void
+traceActivationIndicato_3_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+static int
+traceActivationIndicato_3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+static asn_dec_rval_t
+traceActivationIndicato_3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+static asn_enc_rval_t
+traceActivationIndicato_3_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+static asn_dec_rval_t
+traceActivationIndicato_3_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+static asn_enc_rval_t
+traceActivationIndicato_3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+static asn_dec_rval_t
+traceActivationIndicato_3_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_enc_rval_t
+traceActivationIndicato_3_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_enc_rval_t
+traceActivationIndicato_3_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+static asn_dec_rval_t
+traceActivationIndicato_3_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ traceActivationIndicato_3_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_traceActivationIndicato_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_traceActivationIndicato_value2enum_3[] = {
+ { 0, 9, "activated" },
+ { 1, 11, "deactivated" }
+};
+static const unsigned int asn_MAP_traceActivationIndicato_enum2value_3[] = {
+ 0, /* activated(0) */
+ 1 /* deactivated(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_traceActivationIndicato_specs_3 = {
+ asn_MAP_traceActivationIndicato_value2enum_3, /* "tag" => N; sorted by tag */
+ asn_MAP_traceActivationIndicato_enum2value_3, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_traceActivationIndicato_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_traceActivationIndicato_3 = {
+ "traceActivationIndicato",
+ "traceActivationIndicato",
+ traceActivationIndicato_3_free,
+ traceActivationIndicato_3_print,
+ traceActivationIndicato_3_constraint,
+ traceActivationIndicato_3_decode_ber,
+ traceActivationIndicato_3_encode_der,
+ traceActivationIndicato_3_decode_xer,
+ traceActivationIndicato_3_encode_xer,
+ traceActivationIndicato_3_decode_uper,
+ traceActivationIndicato_3_encode_uper,
+ traceActivationIndicato_3_decode_aper,
+ traceActivationIndicato_3_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_traceActivationIndicato_tags_3,
+ sizeof(asn_DEF_traceActivationIndicato_tags_3)
+ /sizeof(asn_DEF_traceActivationIndicato_tags_3[0]) - 1, /* 1 */
+ asn_DEF_traceActivationIndicato_tags_3, /* Same as above */
+ sizeof(asn_DEF_traceActivationIndicato_tags_3)
+ /sizeof(asn_DEF_traceActivationIndicato_tags_3[0]), /* 2 */
+ &asn_PER_type_traceActivationIndicato_constr_3,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_traceActivationIndicato_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RNCTraceInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RNCTraceInformation, traceReference),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceReference"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RNCTraceInformation, traceActivationIndicato),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_traceActivationIndicato_3,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceActivationIndicato"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RNCTraceInformation, equipmentsToBeTraced),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_EquipmentsToBeTraced,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "equipmentsToBeTraced"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RNCTraceInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RNCTraceInformation_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RNCTraceInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RNCTraceInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* traceReference */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* traceActivationIndicato */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* equipmentsToBeTraced */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RNCTraceInformation_specs_1 = {
+ sizeof(struct RANAP_RNCTraceInformation),
+ offsetof(struct RANAP_RNCTraceInformation, _asn_ctx),
+ asn_MAP_RANAP_RNCTraceInformation_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_RNCTraceInformation_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RNCTraceInformation = {
+ "RANAP_RNCTraceInformation",
+ "RANAP_RNCTraceInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RNCTraceInformation_tags_1,
+ sizeof(asn_DEF_RANAP_RNCTraceInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RNCTraceInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RNCTraceInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RNCTraceInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_RNCTraceInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RNCTraceInformation_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_RNCTraceInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RNSAPRelocationParameters.c b/src/ranap/RANAP_RNSAPRelocationParameters.c
new file mode 100644
index 0000000..36f860d
--- /dev/null
+++ b/src/ranap/RANAP_RNSAPRelocationParameters.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RNSAPRelocationParameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RNSAPRelocationParameters_1[] = {
+ { ATF_POINTER, 5, offsetof(struct RANAP_RNSAPRelocationParameters, rabParmetersList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RABParametersList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rabParmetersList"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_RNSAPRelocationParameters, locationReporting),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LocationReportingTransferInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "locationReporting"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_RNSAPRelocationParameters, traceInformation),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceInformation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceInformation"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_RNSAPRelocationParameters, sourceSAI),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceSAI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RNSAPRelocationParameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RNSAPRelocationParameters_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RNSAPRelocationParameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RNSAPRelocationParameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rabParmetersList */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* locationReporting */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* traceInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sourceSAI */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RNSAPRelocationParameters_specs_1 = {
+ sizeof(struct RANAP_RNSAPRelocationParameters),
+ offsetof(struct RANAP_RNSAPRelocationParameters, _asn_ctx),
+ asn_MAP_RANAP_RNSAPRelocationParameters_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_RNSAPRelocationParameters_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RNSAPRelocationParameters = {
+ "RANAP_RNSAPRelocationParameters",
+ "RANAP_RNSAPRelocationParameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RNSAPRelocationParameters_tags_1,
+ sizeof(asn_DEF_RANAP_RNSAPRelocationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_RNSAPRelocationParameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RNSAPRelocationParameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RNSAPRelocationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_RNSAPRelocationParameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RNSAPRelocationParameters_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_RNSAPRelocationParameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RRC-Container.c b/src/ranap/RANAP_RRC-Container.c
new file mode 100644
index 0000000..f994c1f
--- /dev/null
+++ b/src/ranap/RANAP_RRC-Container.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RRC-Container.h>
+
+int
+RANAP_RRC_Container_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RRC_Container_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_RRC_Container_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RRC_Container_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RRC_Container_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RRC_Container_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RRC_Container_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RRC_Container_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RRC_Container_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RRC_Container_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RRC_Container_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RRC_Container_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RRC_Container_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_RRC_Container_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RRC_Container = {
+ "RANAP_RRC-Container",
+ "RANAP_RRC-Container",
+ RANAP_RRC_Container_free,
+ RANAP_RRC_Container_print,
+ RANAP_RRC_Container_constraint,
+ RANAP_RRC_Container_decode_ber,
+ RANAP_RRC_Container_encode_der,
+ RANAP_RRC_Container_decode_xer,
+ RANAP_RRC_Container_encode_xer,
+ RANAP_RRC_Container_decode_uper,
+ RANAP_RRC_Container_encode_uper,
+ RANAP_RRC_Container_decode_aper,
+ RANAP_RRC_Container_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RRC_Container_tags_1,
+ sizeof(asn_DEF_RANAP_RRC_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_RRC_Container_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RRC_Container_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RRC_Container_tags_1)
+ /sizeof(asn_DEF_RANAP_RRC_Container_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RSRQ-Extension.c b/src/ranap/RANAP_RSRQ-Extension.c
new file mode 100644
index 0000000..0cc3591
--- /dev/null
+++ b/src/ranap/RANAP_RSRQ-Extension.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RSRQ-Extension.h>
+
+int
+RANAP_RSRQ_Extension_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= -30ull && value <= 46l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RSRQ_Extension_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RSRQ_Extension_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRQ_Extension_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RSRQ_Extension_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRQ_Extension_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RSRQ_Extension_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRQ_Extension_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RSRQ_Extension_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RSRQ_Extension_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RSRQ_Extension_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRQ_Extension_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RSRQ_Extension_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, -30ull, 46l } /* (-30..46,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RSRQ_Extension_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RSRQ_Extension = {
+ "RANAP_RSRQ-Extension",
+ "RANAP_RSRQ-Extension",
+ RANAP_RSRQ_Extension_free,
+ RANAP_RSRQ_Extension_print,
+ RANAP_RSRQ_Extension_constraint,
+ RANAP_RSRQ_Extension_decode_ber,
+ RANAP_RSRQ_Extension_encode_der,
+ RANAP_RSRQ_Extension_decode_xer,
+ RANAP_RSRQ_Extension_encode_xer,
+ RANAP_RSRQ_Extension_decode_uper,
+ RANAP_RSRQ_Extension_encode_uper,
+ RANAP_RSRQ_Extension_decode_aper,
+ RANAP_RSRQ_Extension_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RSRQ_Extension_tags_1,
+ sizeof(asn_DEF_RANAP_RSRQ_Extension_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRQ_Extension_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RSRQ_Extension_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RSRQ_Extension_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRQ_Extension_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RSRQ_Extension_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RSRQ-Type.c b/src/ranap/RANAP_RSRQ-Type.c
new file mode 100644
index 0000000..592c19b
--- /dev/null
+++ b/src/ranap/RANAP_RSRQ-Type.c
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RSRQ-Type.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_RSRQ_Type_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RSRQ_Type, allSymbols),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BOOLEAN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "allSymbols"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RSRQ_Type, wideBand),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BOOLEAN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "wideBand"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RSRQ_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RSRQ_Type_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* allSymbols */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* wideBand */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RSRQ_Type_specs_1 = {
+ sizeof(struct RANAP_RSRQ_Type),
+ offsetof(struct RANAP_RSRQ_Type, _asn_ctx),
+ asn_MAP_RANAP_RSRQ_Type_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RSRQ_Type = {
+ "RANAP_RSRQ-Type",
+ "RANAP_RSRQ-Type",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RSRQ_Type_tags_1,
+ sizeof(asn_DEF_RANAP_RSRQ_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRQ_Type_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RSRQ_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RSRQ_Type_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRQ_Type_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RSRQ_Type_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_RSRQ_Type_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RSRVCC-HO-Indication.c b/src/ranap/RANAP_RSRVCC-HO-Indication.c
new file mode 100644
index 0000000..0e6784d
--- /dev/null
+++ b/src/ranap/RANAP_RSRVCC-HO-Indication.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RSRVCC-HO-Indication.h>
+
+int
+RANAP_RSRVCC_HO_Indication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RSRVCC_HO_Indication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RSRVCC_HO_Indication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_HO_Indication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_HO_Indication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_HO_Indication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_HO_Indication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_HO_Indication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_HO_Indication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_HO_Indication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_HO_Indication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RSRVCC_HO_Indication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RSRVCC_HO_Indication_value2enum_1[] = {
+ { 0, 7, "ps-only" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RSRVCC_HO_Indication_enum2value_1[] = {
+ 0 /* ps-only(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RSRVCC_HO_Indication_specs_1 = {
+ asn_MAP_RANAP_RSRVCC_HO_Indication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RSRVCC_HO_Indication_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_HO_Indication = {
+ "RANAP_RSRVCC-HO-Indication",
+ "RANAP_RSRVCC-HO-Indication",
+ RANAP_RSRVCC_HO_Indication_free,
+ RANAP_RSRVCC_HO_Indication_print,
+ RANAP_RSRVCC_HO_Indication_constraint,
+ RANAP_RSRVCC_HO_Indication_decode_ber,
+ RANAP_RSRVCC_HO_Indication_encode_der,
+ RANAP_RSRVCC_HO_Indication_decode_xer,
+ RANAP_RSRVCC_HO_Indication_encode_xer,
+ RANAP_RSRVCC_HO_Indication_decode_uper,
+ RANAP_RSRVCC_HO_Indication_encode_uper,
+ RANAP_RSRVCC_HO_Indication_decode_aper,
+ RANAP_RSRVCC_HO_Indication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1,
+ sizeof(asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_HO_Indication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RSRVCC_HO_Indication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RSRVCC_HO_Indication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RSRVCC-Information.c b/src/ranap/RANAP_RSRVCC-Information.c
new file mode 100644
index 0000000..9993bcd
--- /dev/null
+++ b/src/ranap/RANAP_RSRVCC-Information.c
@@ -0,0 +1,150 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RSRVCC-Information.h>
+
+static int
+memb_nonce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_iMSInformation_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_nonce_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 128l, 128l } /* (SIZE(128..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_iMSInformation_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RSRVCC_Information_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RSRVCC_Information, nonce),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_nonce_constraint_1,
+ &asn_PER_memb_nonce_constr_2,
+ 0,
+ "nonce"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RSRVCC_Information, iMSInformation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OCTET_STRING,
+ memb_iMSInformation_constraint_1,
+ &asn_PER_memb_iMSInformation_constr_3,
+ 0,
+ "iMSInformation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RSRVCC_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_RSRVCC_Information_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RSRVCC_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RSRVCC_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nonce */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iMSInformation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RSRVCC_Information_specs_1 = {
+ sizeof(struct RANAP_RSRVCC_Information),
+ offsetof(struct RANAP_RSRVCC_Information, _asn_ctx),
+ asn_MAP_RANAP_RSRVCC_Information_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RSRVCC_Information_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_Information = {
+ "RANAP_RSRVCC-Information",
+ "RANAP_RSRVCC-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RSRVCC_Information_tags_1,
+ sizeof(asn_DEF_RANAP_RSRVCC_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RSRVCC_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RSRVCC_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RSRVCC_Information_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RSRVCC_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RSRVCC-Operation-Possible.c b/src/ranap/RANAP_RSRVCC-Operation-Possible.c
new file mode 100644
index 0000000..b29659f
--- /dev/null
+++ b/src/ranap/RANAP_RSRVCC-Operation-Possible.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RSRVCC-Operation-Possible.h>
+
+int
+RANAP_RSRVCC_Operation_Possible_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RSRVCC_Operation_Possible_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RSRVCC_Operation_Possible_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_Operation_Possible_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_Operation_Possible_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_Operation_Possible_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_Operation_Possible_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_Operation_Possible_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_Operation_Possible_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RSRVCC_Operation_Possible_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RSRVCC_Operation_Possible_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RSRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RSRVCC_Operation_Possible_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RSRVCC_Operation_Possible_value2enum_1[] = {
+ { 0, 15, "rsrvcc-possible" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RSRVCC_Operation_Possible_enum2value_1[] = {
+ 0 /* rsrvcc-possible(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RSRVCC_Operation_Possible_specs_1 = {
+ asn_MAP_RANAP_RSRVCC_Operation_Possible_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RSRVCC_Operation_Possible_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RSRVCC_Operation_Possible = {
+ "RANAP_RSRVCC-Operation-Possible",
+ "RANAP_RSRVCC-Operation-Possible",
+ RANAP_RSRVCC_Operation_Possible_free,
+ RANAP_RSRVCC_Operation_Possible_print,
+ RANAP_RSRVCC_Operation_Possible_constraint,
+ RANAP_RSRVCC_Operation_Possible_decode_ber,
+ RANAP_RSRVCC_Operation_Possible_encode_der,
+ RANAP_RSRVCC_Operation_Possible_decode_xer,
+ RANAP_RSRVCC_Operation_Possible_encode_xer,
+ RANAP_RSRVCC_Operation_Possible_decode_uper,
+ RANAP_RSRVCC_Operation_Possible_encode_uper,
+ RANAP_RSRVCC_Operation_Possible_decode_aper,
+ RANAP_RSRVCC_Operation_Possible_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1,
+ sizeof(asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1)
+ /sizeof(asn_DEF_RANAP_RSRVCC_Operation_Possible_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RSRVCC_Operation_Possible_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RSRVCC_Operation_Possible_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RTLoadValue.c b/src/ranap/RANAP_RTLoadValue.c
new file mode 100644
index 0000000..607d645
--- /dev/null
+++ b/src/ranap/RANAP_RTLoadValue.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RTLoadValue.h>
+
+int
+RANAP_RTLoadValue_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 100l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RTLoadValue_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RTLoadValue_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RTLoadValue_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RTLoadValue_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RTLoadValue_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RTLoadValue_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RTLoadValue_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RTLoadValue_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RTLoadValue_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RTLoadValue_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RTLoadValue_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RTLoadValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RTLoadValue_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 100l } /* (0..100) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RTLoadValue_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RTLoadValue = {
+ "RANAP_RTLoadValue",
+ "RANAP_RTLoadValue",
+ RANAP_RTLoadValue_free,
+ RANAP_RTLoadValue_print,
+ RANAP_RTLoadValue_constraint,
+ RANAP_RTLoadValue_decode_ber,
+ RANAP_RTLoadValue_encode_der,
+ RANAP_RTLoadValue_decode_xer,
+ RANAP_RTLoadValue_encode_xer,
+ RANAP_RTLoadValue_decode_uper,
+ RANAP_RTLoadValue_encode_uper,
+ RANAP_RTLoadValue_decode_aper,
+ RANAP_RTLoadValue_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RTLoadValue_tags_1,
+ sizeof(asn_DEF_RANAP_RTLoadValue_tags_1)
+ /sizeof(asn_DEF_RANAP_RTLoadValue_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RTLoadValue_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RTLoadValue_tags_1)
+ /sizeof(asn_DEF_RANAP_RTLoadValue_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RTLoadValue_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RateControlAllowed.c b/src/ranap/RANAP_RateControlAllowed.c
new file mode 100644
index 0000000..d6b04d9
--- /dev/null
+++ b/src/ranap/RANAP_RateControlAllowed.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RateControlAllowed.h>
+
+int
+RANAP_RateControlAllowed_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RateControlAllowed_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RateControlAllowed_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RateControlAllowed_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RateControlAllowed_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RateControlAllowed_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RateControlAllowed_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RateControlAllowed_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RateControlAllowed_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RateControlAllowed_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RateControlAllowed_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RateControlAllowed_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RateControlAllowed_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RateControlAllowed_value2enum_1[] = {
+ { 0, 11, "not-allowed" },
+ { 1, 7, "allowed" }
+};
+static const unsigned int asn_MAP_RANAP_RateControlAllowed_enum2value_1[] = {
+ 1, /* allowed(1) */
+ 0 /* not-allowed(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RateControlAllowed_specs_1 = {
+ asn_MAP_RANAP_RateControlAllowed_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RateControlAllowed_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RateControlAllowed_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RateControlAllowed = {
+ "RANAP_RateControlAllowed",
+ "RANAP_RateControlAllowed",
+ RANAP_RateControlAllowed_free,
+ RANAP_RateControlAllowed_print,
+ RANAP_RateControlAllowed_constraint,
+ RANAP_RateControlAllowed_decode_ber,
+ RANAP_RateControlAllowed_encode_der,
+ RANAP_RateControlAllowed_decode_xer,
+ RANAP_RateControlAllowed_encode_xer,
+ RANAP_RateControlAllowed_decode_uper,
+ RANAP_RateControlAllowed_encode_uper,
+ RANAP_RateControlAllowed_decode_aper,
+ RANAP_RateControlAllowed_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RateControlAllowed_tags_1,
+ sizeof(asn_DEF_RANAP_RateControlAllowed_tags_1)
+ /sizeof(asn_DEF_RANAP_RateControlAllowed_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RateControlAllowed_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RateControlAllowed_tags_1)
+ /sizeof(asn_DEF_RANAP_RateControlAllowed_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RateControlAllowed_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RateControlAllowed_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RedirectAttemptFlag.c b/src/ranap/RANAP_RedirectAttemptFlag.c
new file mode 100644
index 0000000..0a822ff
--- /dev/null
+++ b/src/ranap/RANAP_RedirectAttemptFlag.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RedirectAttemptFlag.h>
+
+int
+RANAP_RedirectAttemptFlag_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NULL.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NULL,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NULL.free_struct;
+ td->print_struct = asn_DEF_NULL.print_struct;
+ td->check_constraints = asn_DEF_NULL.check_constraints;
+ td->ber_decoder = asn_DEF_NULL.ber_decoder;
+ td->der_encoder = asn_DEF_NULL.der_encoder;
+ td->xer_decoder = asn_DEF_NULL.xer_decoder;
+ td->xer_encoder = asn_DEF_NULL.xer_encoder;
+ td->uper_decoder = asn_DEF_NULL.uper_decoder;
+ td->uper_encoder = asn_DEF_NULL.uper_encoder;
+ td->aper_decoder = asn_DEF_NULL.aper_decoder;
+ td->aper_encoder = asn_DEF_NULL.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NULL.per_constraints;
+ td->elements = asn_DEF_NULL.elements;
+ td->elements_count = asn_DEF_NULL.elements_count;
+ td->specifics = asn_DEF_NULL.specifics;
+}
+
+void
+RANAP_RedirectAttemptFlag_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RedirectAttemptFlag_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectAttemptFlag_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RedirectAttemptFlag_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectAttemptFlag_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RedirectAttemptFlag_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectAttemptFlag_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RedirectAttemptFlag_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RedirectAttemptFlag_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RedirectAttemptFlag_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RedirectAttemptFlag_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_RedirectAttemptFlag_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (5 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectAttemptFlag = {
+ "RANAP_RedirectAttemptFlag",
+ "RANAP_RedirectAttemptFlag",
+ RANAP_RedirectAttemptFlag_free,
+ RANAP_RedirectAttemptFlag_print,
+ RANAP_RedirectAttemptFlag_constraint,
+ RANAP_RedirectAttemptFlag_decode_ber,
+ RANAP_RedirectAttemptFlag_encode_der,
+ RANAP_RedirectAttemptFlag_decode_xer,
+ RANAP_RedirectAttemptFlag_encode_xer,
+ RANAP_RedirectAttemptFlag_decode_uper,
+ RANAP_RedirectAttemptFlag_encode_uper,
+ RANAP_RedirectAttemptFlag_decode_aper,
+ RANAP_RedirectAttemptFlag_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RedirectAttemptFlag_tags_1,
+ sizeof(asn_DEF_RANAP_RedirectAttemptFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectAttemptFlag_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RedirectAttemptFlag_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RedirectAttemptFlag_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectAttemptFlag_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RedirectionCompleted.c b/src/ranap/RANAP_RedirectionCompleted.c
new file mode 100644
index 0000000..e3d370a
--- /dev/null
+++ b/src/ranap/RANAP_RedirectionCompleted.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RedirectionCompleted.h>
+
+int
+RANAP_RedirectionCompleted_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RedirectionCompleted_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RedirectionCompleted_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectionCompleted_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RedirectionCompleted_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectionCompleted_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RedirectionCompleted_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RedirectionCompleted_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RedirectionCompleted_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RedirectionCompleted_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RedirectionCompleted_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RedirectionCompleted_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RedirectionCompleted_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RedirectionCompleted_value2enum_1[] = {
+ { 0, 21, "redirection-completed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RedirectionCompleted_enum2value_1[] = {
+ 0 /* redirection-completed(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RedirectionCompleted_specs_1 = {
+ asn_MAP_RANAP_RedirectionCompleted_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RedirectionCompleted_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RedirectionCompleted_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectionCompleted = {
+ "RANAP_RedirectionCompleted",
+ "RANAP_RedirectionCompleted",
+ RANAP_RedirectionCompleted_free,
+ RANAP_RedirectionCompleted_print,
+ RANAP_RedirectionCompleted_constraint,
+ RANAP_RedirectionCompleted_decode_ber,
+ RANAP_RedirectionCompleted_encode_der,
+ RANAP_RedirectionCompleted_decode_xer,
+ RANAP_RedirectionCompleted_encode_xer,
+ RANAP_RedirectionCompleted_decode_uper,
+ RANAP_RedirectionCompleted_encode_uper,
+ RANAP_RedirectionCompleted_decode_aper,
+ RANAP_RedirectionCompleted_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RedirectionCompleted_tags_1,
+ sizeof(asn_DEF_RANAP_RedirectionCompleted_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectionCompleted_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RedirectionCompleted_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RedirectionCompleted_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectionCompleted_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RedirectionCompleted_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RedirectionCompleted_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RedirectionIndication.c b/src/ranap/RANAP_RedirectionIndication.c
new file mode 100644
index 0000000..f3f7999
--- /dev/null
+++ b/src/ranap/RANAP_RedirectionIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RedirectionIndication.h>
+
+static int
+memb_redirectionIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_redirectionIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_redirectionIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_redirectionIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_redirectionIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_redirectionIndication_ies_specs_2 = {
+ sizeof(struct redirectionIndication_ies),
+ offsetof(struct redirectionIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_redirectionIndication_ies_2 = {
+ "redirectionIndication-ies",
+ "redirectionIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_redirectionIndication_ies_tags_2,
+ sizeof(asn_DEF_redirectionIndication_ies_tags_2)
+ /sizeof(asn_DEF_redirectionIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_redirectionIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_redirectionIndication_ies_tags_2)
+ /sizeof(asn_DEF_redirectionIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_redirectionIndication_ies_constr_2,
+ asn_MBR_redirectionIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_redirectionIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RedirectionIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RedirectionIndication, redirectionIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_redirectionIndication_ies_2,
+ memb_redirectionIndication_ies_constraint_1,
+ &asn_PER_memb_redirectionIndication_ies_constr_2,
+ 0,
+ "redirectionIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RedirectionIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RedirectionIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* redirectionIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RedirectionIndication_specs_1 = {
+ sizeof(struct RANAP_RedirectionIndication),
+ offsetof(struct RANAP_RedirectionIndication, _asn_ctx),
+ asn_MAP_RANAP_RedirectionIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RedirectionIndication = {
+ "RANAP_RedirectionIndication",
+ "RANAP_RedirectionIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RedirectionIndication_tags_1,
+ sizeof(asn_DEF_RANAP_RedirectionIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectionIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RedirectionIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RedirectionIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_RedirectionIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RedirectionIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RedirectionIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RejectCauseValue.c b/src/ranap/RANAP_RejectCauseValue.c
new file mode 100644
index 0000000..a2c23be
--- /dev/null
+++ b/src/ranap/RANAP_RejectCauseValue.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RejectCauseValue.h>
+
+int
+RANAP_RejectCauseValue_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RejectCauseValue_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RejectCauseValue_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RejectCauseValue_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RejectCauseValue_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RejectCauseValue_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RejectCauseValue_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RejectCauseValue_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RejectCauseValue_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RejectCauseValue_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RejectCauseValue_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RejectCauseValue_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RejectCauseValue_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 5l } /* (0..5,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RejectCauseValue_value2enum_1[] = {
+ { 0, 16, "pLMN-Not-Allowed" },
+ { 1, 25, "location-Area-Not-Allowed" },
+ { 2, 41, "roaming-Not-Allowed-In-This-Location-Area" },
+ { 3, 33, "no-Suitable-Cell-In-Location-Area" },
+ { 4, 38, "gPRS-Services-Not-Allowed-In-This-PLMN" },
+ { 5, 27, "cS-PS-coordination-required" },
+ { 6, 15, "network-failure" },
+ { 7, 27, "not-authorized-for-this-CSG" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RejectCauseValue_enum2value_1[] = {
+ 5, /* cS-PS-coordination-required(5) */
+ 4, /* gPRS-Services-Not-Allowed-In-This-PLMN(4) */
+ 1, /* location-Area-Not-Allowed(1) */
+ 6, /* network-failure(6) */
+ 3, /* no-Suitable-Cell-In-Location-Area(3) */
+ 7, /* not-authorized-for-this-CSG(7) */
+ 0, /* pLMN-Not-Allowed(0) */
+ 2 /* roaming-Not-Allowed-In-This-Location-Area(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RejectCauseValue_specs_1 = {
+ asn_MAP_RANAP_RejectCauseValue_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RejectCauseValue_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 7, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RejectCauseValue_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RejectCauseValue = {
+ "RANAP_RejectCauseValue",
+ "RANAP_RejectCauseValue",
+ RANAP_RejectCauseValue_free,
+ RANAP_RejectCauseValue_print,
+ RANAP_RejectCauseValue_constraint,
+ RANAP_RejectCauseValue_decode_ber,
+ RANAP_RejectCauseValue_encode_der,
+ RANAP_RejectCauseValue_decode_xer,
+ RANAP_RejectCauseValue_encode_xer,
+ RANAP_RejectCauseValue_decode_uper,
+ RANAP_RejectCauseValue_encode_uper,
+ RANAP_RejectCauseValue_decode_aper,
+ RANAP_RejectCauseValue_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RejectCauseValue_tags_1,
+ sizeof(asn_DEF_RANAP_RejectCauseValue_tags_1)
+ /sizeof(asn_DEF_RANAP_RejectCauseValue_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RejectCauseValue_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RejectCauseValue_tags_1)
+ /sizeof(asn_DEF_RANAP_RejectCauseValue_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RejectCauseValue_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RejectCauseValue_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationCancel.c b/src/ranap/RANAP_RelocationCancel.c
new file mode 100644
index 0000000..974d023
--- /dev/null
+++ b/src/ranap/RANAP_RelocationCancel.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationCancel.h>
+
+static int
+memb_relocationCancel_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationCancel_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationCancel_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationCancel_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationCancel_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationCancel_ies_specs_2 = {
+ sizeof(struct relocationCancel_ies),
+ offsetof(struct relocationCancel_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationCancel_ies_2 = {
+ "relocationCancel-ies",
+ "relocationCancel-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationCancel_ies_tags_2,
+ sizeof(asn_DEF_relocationCancel_ies_tags_2)
+ /sizeof(asn_DEF_relocationCancel_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationCancel_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationCancel_ies_tags_2)
+ /sizeof(asn_DEF_relocationCancel_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationCancel_ies_constr_2,
+ asn_MBR_relocationCancel_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationCancel_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationCancel_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationCancel, relocationCancel_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationCancel_ies_2,
+ memb_relocationCancel_ies_constraint_1,
+ &asn_PER_memb_relocationCancel_ies_constr_2,
+ 0,
+ "relocationCancel-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationCancel_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationCancel_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationCancel-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationCancel_specs_1 = {
+ sizeof(struct RANAP_RelocationCancel),
+ offsetof(struct RANAP_RelocationCancel, _asn_ctx),
+ asn_MAP_RANAP_RelocationCancel_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCancel = {
+ "RANAP_RelocationCancel",
+ "RANAP_RelocationCancel",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationCancel_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationCancel_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCancel_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationCancel_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationCancel_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCancel_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationCancel_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationCancel_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationCancelAcknowledge.c b/src/ranap/RANAP_RelocationCancelAcknowledge.c
new file mode 100644
index 0000000..9df08cf
--- /dev/null
+++ b/src/ranap/RANAP_RelocationCancelAcknowledge.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationCancelAcknowledge.h>
+
+static int
+memb_relocationCancelAcknowledge_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationCancelAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationCancelAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationCancelAcknowledge_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationCancelAcknowledge_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationCancelAcknowledge_ies_specs_2 = {
+ sizeof(struct relocationCancelAcknowledge_ies),
+ offsetof(struct relocationCancelAcknowledge_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationCancelAcknowledge_ies_2 = {
+ "relocationCancelAcknowledge-ies",
+ "relocationCancelAcknowledge-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationCancelAcknowledge_ies_tags_2,
+ sizeof(asn_DEF_relocationCancelAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_relocationCancelAcknowledge_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationCancelAcknowledge_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationCancelAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_relocationCancelAcknowledge_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationCancelAcknowledge_ies_constr_2,
+ asn_MBR_relocationCancelAcknowledge_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationCancelAcknowledge_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationCancelAcknowledge_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationCancelAcknowledge, relocationCancelAcknowledge_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationCancelAcknowledge_ies_2,
+ memb_relocationCancelAcknowledge_ies_constraint_1,
+ &asn_PER_memb_relocationCancelAcknowledge_ies_constr_2,
+ 0,
+ "relocationCancelAcknowledge-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationCancelAcknowledge_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationCancelAcknowledge-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationCancelAcknowledge_specs_1 = {
+ sizeof(struct RANAP_RelocationCancelAcknowledge),
+ offsetof(struct RANAP_RelocationCancelAcknowledge, _asn_ctx),
+ asn_MAP_RANAP_RelocationCancelAcknowledge_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCancelAcknowledge = {
+ "RANAP_RelocationCancelAcknowledge",
+ "RANAP_RelocationCancelAcknowledge",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCancelAcknowledge_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationCancelAcknowledge_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationCancelAcknowledge_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationCommand.c b/src/ranap/RANAP_RelocationCommand.c
new file mode 100644
index 0000000..69d0d02
--- /dev/null
+++ b/src/ranap/RANAP_RelocationCommand.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationCommand.h>
+
+static int
+memb_relocationCommand_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationCommand_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationCommand_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationCommand_ies_specs_2 = {
+ sizeof(struct relocationCommand_ies),
+ offsetof(struct relocationCommand_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationCommand_ies_2 = {
+ "relocationCommand-ies",
+ "relocationCommand-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationCommand_ies_tags_2,
+ sizeof(asn_DEF_relocationCommand_ies_tags_2)
+ /sizeof(asn_DEF_relocationCommand_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationCommand_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationCommand_ies_tags_2)
+ /sizeof(asn_DEF_relocationCommand_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationCommand_ies_constr_2,
+ asn_MBR_relocationCommand_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationCommand_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationCommand_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationCommand, relocationCommand_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationCommand_ies_2,
+ memb_relocationCommand_ies_constraint_1,
+ &asn_PER_memb_relocationCommand_ies_constr_2,
+ 0,
+ "relocationCommand-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationCommand_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationCommand_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationCommand-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationCommand_specs_1 = {
+ sizeof(struct RANAP_RelocationCommand),
+ offsetof(struct RANAP_RelocationCommand, _asn_ctx),
+ asn_MAP_RANAP_RelocationCommand_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationCommand = {
+ "RANAP_RelocationCommand",
+ "RANAP_RelocationCommand",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationCommand_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCommand_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationCommand_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationCommand_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationCommand_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationCommand_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationComplete.c b/src/ranap/RANAP_RelocationComplete.c
new file mode 100644
index 0000000..a854c0f
--- /dev/null
+++ b/src/ranap/RANAP_RelocationComplete.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationComplete.h>
+
+static int
+memb_relocationComplete_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationComplete_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationComplete_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationComplete_ies_specs_2 = {
+ sizeof(struct relocationComplete_ies),
+ offsetof(struct relocationComplete_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationComplete_ies_2 = {
+ "relocationComplete-ies",
+ "relocationComplete-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationComplete_ies_tags_2,
+ sizeof(asn_DEF_relocationComplete_ies_tags_2)
+ /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationComplete_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationComplete_ies_tags_2)
+ /sizeof(asn_DEF_relocationComplete_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationComplete_ies_constr_2,
+ asn_MBR_relocationComplete_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationComplete_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationComplete_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationComplete, relocationComplete_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationComplete_ies_2,
+ memb_relocationComplete_ies_constraint_1,
+ &asn_PER_memb_relocationComplete_ies_constr_2,
+ 0,
+ "relocationComplete-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationComplete_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationComplete_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationComplete-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationComplete_specs_1 = {
+ sizeof(struct RANAP_RelocationComplete),
+ offsetof(struct RANAP_RelocationComplete, _asn_ctx),
+ asn_MAP_RANAP_RelocationComplete_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationComplete = {
+ "RANAP_RelocationComplete",
+ "RANAP_RelocationComplete",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationComplete_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationComplete_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationComplete_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationComplete_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationComplete_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationComplete_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationDetect.c b/src/ranap/RANAP_RelocationDetect.c
new file mode 100644
index 0000000..0c51fd7
--- /dev/null
+++ b/src/ranap/RANAP_RelocationDetect.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationDetect.h>
+
+static int
+memb_relocationDetect_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationDetect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationDetect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationDetect_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationDetect_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationDetect_ies_specs_2 = {
+ sizeof(struct relocationDetect_ies),
+ offsetof(struct relocationDetect_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationDetect_ies_2 = {
+ "relocationDetect-ies",
+ "relocationDetect-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationDetect_ies_tags_2,
+ sizeof(asn_DEF_relocationDetect_ies_tags_2)
+ /sizeof(asn_DEF_relocationDetect_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationDetect_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationDetect_ies_tags_2)
+ /sizeof(asn_DEF_relocationDetect_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationDetect_ies_constr_2,
+ asn_MBR_relocationDetect_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationDetect_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationDetect_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationDetect, relocationDetect_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationDetect_ies_2,
+ memb_relocationDetect_ies_constraint_1,
+ &asn_PER_memb_relocationDetect_ies_constr_2,
+ 0,
+ "relocationDetect-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationDetect_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationDetect_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationDetect-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationDetect_specs_1 = {
+ sizeof(struct RANAP_RelocationDetect),
+ offsetof(struct RANAP_RelocationDetect, _asn_ctx),
+ asn_MAP_RANAP_RelocationDetect_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationDetect = {
+ "RANAP_RelocationDetect",
+ "RANAP_RelocationDetect",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationDetect_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationDetect_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationDetect_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationDetect_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationDetect_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationDetect_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationDetect_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationDetect_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationFailure.c b/src/ranap/RANAP_RelocationFailure.c
new file mode 100644
index 0000000..7bed97e
--- /dev/null
+++ b/src/ranap/RANAP_RelocationFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationFailure.h>
+
+static int
+memb_relocationFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationFailure_ies_specs_2 = {
+ sizeof(struct relocationFailure_ies),
+ offsetof(struct relocationFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationFailure_ies_2 = {
+ "relocationFailure-ies",
+ "relocationFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationFailure_ies_tags_2,
+ sizeof(asn_DEF_relocationFailure_ies_tags_2)
+ /sizeof(asn_DEF_relocationFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationFailure_ies_tags_2)
+ /sizeof(asn_DEF_relocationFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationFailure_ies_constr_2,
+ asn_MBR_relocationFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationFailure, relocationFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationFailure_ies_2,
+ memb_relocationFailure_ies_constraint_1,
+ &asn_PER_memb_relocationFailure_ies_constr_2,
+ 0,
+ "relocationFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationFailure_specs_1 = {
+ sizeof(struct RANAP_RelocationFailure),
+ offsetof(struct RANAP_RelocationFailure, _asn_ctx),
+ asn_MAP_RANAP_RelocationFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationFailure = {
+ "RANAP_RelocationFailure",
+ "RANAP_RelocationFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationFailure_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationPreparationFailure.c b/src/ranap/RANAP_RelocationPreparationFailure.c
new file mode 100644
index 0000000..17431ab
--- /dev/null
+++ b/src/ranap/RANAP_RelocationPreparationFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationPreparationFailure.h>
+
+static int
+memb_relocationPreparationFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationPreparationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationPreparationFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationPreparationFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationPreparationFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationPreparationFailure_ies_specs_2 = {
+ sizeof(struct relocationPreparationFailure_ies),
+ offsetof(struct relocationPreparationFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationPreparationFailure_ies_2 = {
+ "relocationPreparationFailure-ies",
+ "relocationPreparationFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationPreparationFailure_ies_tags_2,
+ sizeof(asn_DEF_relocationPreparationFailure_ies_tags_2)
+ /sizeof(asn_DEF_relocationPreparationFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationPreparationFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationPreparationFailure_ies_tags_2)
+ /sizeof(asn_DEF_relocationPreparationFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationPreparationFailure_ies_constr_2,
+ asn_MBR_relocationPreparationFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationPreparationFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationPreparationFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationPreparationFailure, relocationPreparationFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationPreparationFailure_ies_2,
+ memb_relocationPreparationFailure_ies_constraint_1,
+ &asn_PER_memb_relocationPreparationFailure_ies_constr_2,
+ 0,
+ "relocationPreparationFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationPreparationFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationPreparationFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationPreparationFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationPreparationFailure_specs_1 = {
+ sizeof(struct RANAP_RelocationPreparationFailure),
+ offsetof(struct RANAP_RelocationPreparationFailure, _asn_ctx),
+ asn_MAP_RANAP_RelocationPreparationFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationPreparationFailure = {
+ "RANAP_RelocationPreparationFailure",
+ "RANAP_RelocationPreparationFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationPreparationFailure_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationPreparationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationPreparationFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationPreparationFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationPreparationFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationPreparationFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationPreparationFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationPreparationFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationRequest.c b/src/ranap/RANAP_RelocationRequest.c
new file mode 100644
index 0000000..2218e44
--- /dev/null
+++ b/src/ranap/RANAP_RelocationRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationRequest.h>
+
+static int
+memb_relocationRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationRequest_ies_specs_2 = {
+ sizeof(struct relocationRequest_ies),
+ offsetof(struct relocationRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationRequest_ies_2 = {
+ "relocationRequest-ies",
+ "relocationRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationRequest_ies_tags_2,
+ sizeof(asn_DEF_relocationRequest_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationRequest_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationRequest_ies_constr_2,
+ asn_MBR_relocationRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationRequest, relocationRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationRequest_ies_2,
+ memb_relocationRequest_ies_constraint_1,
+ &asn_PER_memb_relocationRequest_ies_constr_2,
+ 0,
+ "relocationRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationRequest_specs_1 = {
+ sizeof(struct RANAP_RelocationRequest),
+ offsetof(struct RANAP_RelocationRequest, _asn_ctx),
+ asn_MAP_RANAP_RelocationRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequest = {
+ "RANAP_RelocationRequest",
+ "RANAP_RelocationRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationRequestAcknowledge.c b/src/ranap/RANAP_RelocationRequestAcknowledge.c
new file mode 100644
index 0000000..383981e
--- /dev/null
+++ b/src/ranap/RANAP_RelocationRequestAcknowledge.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationRequestAcknowledge.h>
+
+static int
+memb_relocationRequestAcknowledge_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationRequestAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationRequestAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationRequestAcknowledge_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationRequestAcknowledge_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationRequestAcknowledge_ies_specs_2 = {
+ sizeof(struct relocationRequestAcknowledge_ies),
+ offsetof(struct relocationRequestAcknowledge_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationRequestAcknowledge_ies_2 = {
+ "relocationRequestAcknowledge-ies",
+ "relocationRequestAcknowledge-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationRequestAcknowledge_ies_tags_2,
+ sizeof(asn_DEF_relocationRequestAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequestAcknowledge_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationRequestAcknowledge_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationRequestAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequestAcknowledge_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationRequestAcknowledge_ies_constr_2,
+ asn_MBR_relocationRequestAcknowledge_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationRequestAcknowledge_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationRequestAcknowledge_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationRequestAcknowledge, relocationRequestAcknowledge_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationRequestAcknowledge_ies_2,
+ memb_relocationRequestAcknowledge_ies_constraint_1,
+ &asn_PER_memb_relocationRequestAcknowledge_ies_constr_2,
+ 0,
+ "relocationRequestAcknowledge-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationRequestAcknowledge_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationRequestAcknowledge-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationRequestAcknowledge_specs_1 = {
+ sizeof(struct RANAP_RelocationRequestAcknowledge),
+ offsetof(struct RANAP_RelocationRequestAcknowledge, _asn_ctx),
+ asn_MAP_RANAP_RelocationRequestAcknowledge_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequestAcknowledge = {
+ "RANAP_RelocationRequestAcknowledge",
+ "RANAP_RelocationRequestAcknowledge",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequestAcknowledge_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationRequestAcknowledge_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationRequestAcknowledge_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationRequired.c b/src/ranap/RANAP_RelocationRequired.c
new file mode 100644
index 0000000..ec351f5
--- /dev/null
+++ b/src/ranap/RANAP_RelocationRequired.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationRequired.h>
+
+static int
+memb_relocationRequired_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_relocationRequired_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_relocationRequired_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_relocationRequired_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_relocationRequired_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_relocationRequired_ies_specs_2 = {
+ sizeof(struct relocationRequired_ies),
+ offsetof(struct relocationRequired_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_relocationRequired_ies_2 = {
+ "relocationRequired-ies",
+ "relocationRequired-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_relocationRequired_ies_tags_2,
+ sizeof(asn_DEF_relocationRequired_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequired_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_relocationRequired_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_relocationRequired_ies_tags_2)
+ /sizeof(asn_DEF_relocationRequired_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_relocationRequired_ies_constr_2,
+ asn_MBR_relocationRequired_ies_2,
+ 1, /* Single element */
+ &asn_SPC_relocationRequired_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_RelocationRequired_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RelocationRequired, relocationRequired_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_relocationRequired_ies_2,
+ memb_relocationRequired_ies_constraint_1,
+ &asn_PER_memb_relocationRequired_ies_constr_2,
+ 0,
+ "relocationRequired-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationRequired_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RelocationRequired_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* relocationRequired-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RelocationRequired_specs_1 = {
+ sizeof(struct RANAP_RelocationRequired),
+ offsetof(struct RANAP_RelocationRequired, _asn_ctx),
+ asn_MAP_RANAP_RelocationRequired_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequired = {
+ "RANAP_RelocationRequired",
+ "RANAP_RelocationRequired",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationRequired_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationRequired_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequired_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationRequired_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationRequired_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequired_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RelocationRequired_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_RelocationRequired_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationRequirement.c b/src/ranap/RANAP_RelocationRequirement.c
new file mode 100644
index 0000000..95b6bbf
--- /dev/null
+++ b/src/ranap/RANAP_RelocationRequirement.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationRequirement.h>
+
+int
+RANAP_RelocationRequirement_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RelocationRequirement_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RelocationRequirement_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationRequirement_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RelocationRequirement_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationRequirement_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RelocationRequirement_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationRequirement_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RelocationRequirement_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RelocationRequirement_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RelocationRequirement_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RelocationRequirement_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RelocationRequirement_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RelocationRequirement_value2enum_1[] = {
+ { 0, 8, "lossless" },
+ { 1, 4, "none" },
+ { 2, 8, "realtime" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RelocationRequirement_enum2value_1[] = {
+ 0, /* lossless(0) */
+ 1, /* none(1) */
+ 2 /* realtime(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RelocationRequirement_specs_1 = {
+ asn_MAP_RANAP_RelocationRequirement_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RelocationRequirement_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationRequirement_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationRequirement = {
+ "RANAP_RelocationRequirement",
+ "RANAP_RelocationRequirement",
+ RANAP_RelocationRequirement_free,
+ RANAP_RelocationRequirement_print,
+ RANAP_RelocationRequirement_constraint,
+ RANAP_RelocationRequirement_decode_ber,
+ RANAP_RelocationRequirement_encode_der,
+ RANAP_RelocationRequirement_decode_xer,
+ RANAP_RelocationRequirement_encode_xer,
+ RANAP_RelocationRequirement_decode_uper,
+ RANAP_RelocationRequirement_encode_uper,
+ RANAP_RelocationRequirement_decode_aper,
+ RANAP_RelocationRequirement_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationRequirement_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationRequirement_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequirement_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationRequirement_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationRequirement_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationRequirement_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RelocationRequirement_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RelocationRequirement_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RelocationType.c b/src/ranap/RANAP_RelocationType.c
new file mode 100644
index 0000000..bfb9d8d
--- /dev/null
+++ b/src/ranap/RANAP_RelocationType.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RelocationType.h>
+
+int
+RANAP_RelocationType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RelocationType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RelocationType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RelocationType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RelocationType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RelocationType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RelocationType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RelocationType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RelocationType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RelocationType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RelocationType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RelocationType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RelocationType_value2enum_1[] = {
+ { 0, 15, "ue-not-involved" },
+ { 1, 11, "ue-involved" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RelocationType_enum2value_1[] = {
+ 1, /* ue-involved(1) */
+ 0 /* ue-not-involved(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RelocationType_specs_1 = {
+ asn_MAP_RANAP_RelocationType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RelocationType_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RelocationType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RelocationType = {
+ "RANAP_RelocationType",
+ "RANAP_RelocationType",
+ RANAP_RelocationType_free,
+ RANAP_RelocationType_print,
+ RANAP_RelocationType_constraint,
+ RANAP_RelocationType_decode_ber,
+ RANAP_RelocationType_encode_der,
+ RANAP_RelocationType_decode_xer,
+ RANAP_RelocationType_encode_xer,
+ RANAP_RelocationType_decode_uper,
+ RANAP_RelocationType_encode_uper,
+ RANAP_RelocationType_decode_aper,
+ RANAP_RelocationType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RelocationType_tags_1,
+ sizeof(asn_DEF_RANAP_RelocationType_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RelocationType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RelocationType_tags_1)
+ /sizeof(asn_DEF_RANAP_RelocationType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RelocationType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RelocationType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RepetitionNumber0.c b/src/ranap/RANAP_RepetitionNumber0.c
new file mode 100644
index 0000000..c42b055
--- /dev/null
+++ b/src/ranap/RANAP_RepetitionNumber0.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RepetitionNumber0.h>
+
+int
+RANAP_RepetitionNumber0_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RepetitionNumber0_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RepetitionNumber0_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber0_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber0_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber0_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber0_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber0_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber0_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber0_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber0_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RepetitionNumber0_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RepetitionNumber0_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RepetitionNumber0_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RepetitionNumber0 = {
+ "RANAP_RepetitionNumber0",
+ "RANAP_RepetitionNumber0",
+ RANAP_RepetitionNumber0_free,
+ RANAP_RepetitionNumber0_print,
+ RANAP_RepetitionNumber0_constraint,
+ RANAP_RepetitionNumber0_decode_ber,
+ RANAP_RepetitionNumber0_encode_der,
+ RANAP_RepetitionNumber0_decode_xer,
+ RANAP_RepetitionNumber0_encode_xer,
+ RANAP_RepetitionNumber0_decode_uper,
+ RANAP_RepetitionNumber0_encode_uper,
+ RANAP_RepetitionNumber0_decode_aper,
+ RANAP_RepetitionNumber0_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RepetitionNumber0_tags_1,
+ sizeof(asn_DEF_RANAP_RepetitionNumber0_tags_1)
+ /sizeof(asn_DEF_RANAP_RepetitionNumber0_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RepetitionNumber0_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RepetitionNumber0_tags_1)
+ /sizeof(asn_DEF_RANAP_RepetitionNumber0_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RepetitionNumber0_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RepetitionNumber1.c b/src/ranap/RANAP_RepetitionNumber1.c
new file mode 100644
index 0000000..01269f1
--- /dev/null
+++ b/src/ranap/RANAP_RepetitionNumber1.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RepetitionNumber1.h>
+
+int
+RANAP_RepetitionNumber1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 256l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_RepetitionNumber1_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RepetitionNumber1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber1_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber1_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber1_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber1_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RepetitionNumber1_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RepetitionNumber1_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RepetitionNumber1_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RepetitionNumber1_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (1..256) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RepetitionNumber1_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RepetitionNumber1 = {
+ "RANAP_RepetitionNumber1",
+ "RANAP_RepetitionNumber1",
+ RANAP_RepetitionNumber1_free,
+ RANAP_RepetitionNumber1_print,
+ RANAP_RepetitionNumber1_constraint,
+ RANAP_RepetitionNumber1_decode_ber,
+ RANAP_RepetitionNumber1_encode_der,
+ RANAP_RepetitionNumber1_decode_xer,
+ RANAP_RepetitionNumber1_encode_xer,
+ RANAP_RepetitionNumber1_decode_uper,
+ RANAP_RepetitionNumber1_encode_uper,
+ RANAP_RepetitionNumber1_decode_aper,
+ RANAP_RepetitionNumber1_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RepetitionNumber1_tags_1,
+ sizeof(asn_DEF_RANAP_RepetitionNumber1_tags_1)
+ /sizeof(asn_DEF_RANAP_RepetitionNumber1_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RepetitionNumber1_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RepetitionNumber1_tags_1)
+ /sizeof(asn_DEF_RANAP_RepetitionNumber1_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RepetitionNumber1_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_ReportAmount.c b/src/ranap/RANAP_ReportAmount.c
new file mode 100644
index 0000000..ce6c411
--- /dev/null
+++ b/src/ranap/RANAP_ReportAmount.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ReportAmount.h>
+
+int
+RANAP_ReportAmount_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ReportAmount_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ReportAmount_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ReportAmount_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportAmount_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ReportAmount_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportAmount_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ReportAmount_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportAmount_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ReportAmount_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ReportAmount_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ReportAmount_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportAmount_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ReportAmount_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 7l } /* (0..7,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ReportAmount_value2enum_1[] = {
+ { 0, 2, "n1" },
+ { 1, 2, "n2" },
+ { 2, 2, "n4" },
+ { 3, 2, "n8" },
+ { 4, 3, "n16" },
+ { 5, 3, "n32" },
+ { 6, 3, "n64" },
+ { 7, 8, "infinity" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ReportAmount_enum2value_1[] = {
+ 7, /* infinity(7) */
+ 0, /* n1(0) */
+ 4, /* n16(4) */
+ 1, /* n2(1) */
+ 5, /* n32(5) */
+ 2, /* n4(2) */
+ 6, /* n64(6) */
+ 3 /* n8(3) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ReportAmount_specs_1 = {
+ asn_MAP_RANAP_ReportAmount_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ReportAmount_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 9, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ReportAmount_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ReportAmount = {
+ "RANAP_ReportAmount",
+ "RANAP_ReportAmount",
+ RANAP_ReportAmount_free,
+ RANAP_ReportAmount_print,
+ RANAP_ReportAmount_constraint,
+ RANAP_ReportAmount_decode_ber,
+ RANAP_ReportAmount_encode_der,
+ RANAP_ReportAmount_decode_xer,
+ RANAP_ReportAmount_encode_xer,
+ RANAP_ReportAmount_decode_uper,
+ RANAP_ReportAmount_encode_uper,
+ RANAP_ReportAmount_decode_aper,
+ RANAP_ReportAmount_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ReportAmount_tags_1,
+ sizeof(asn_DEF_RANAP_ReportAmount_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportAmount_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ReportAmount_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ReportAmount_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportAmount_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ReportAmount_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ReportAmount_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ReportArea.c b/src/ranap/RANAP_ReportArea.c
new file mode 100644
index 0000000..d5a293c
--- /dev/null
+++ b/src/ranap/RANAP_ReportArea.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ReportArea.h>
+
+int
+RANAP_ReportArea_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ReportArea_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ReportArea_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ReportArea_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportArea_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ReportArea_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportArea_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ReportArea_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportArea_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ReportArea_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ReportArea_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ReportArea_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportArea_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ReportArea_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ReportArea_value2enum_1[] = {
+ { 0, 12, "service-area" },
+ { 1, 17, "geographical-area" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ReportArea_enum2value_1[] = {
+ 1, /* geographical-area(1) */
+ 0 /* service-area(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ReportArea_specs_1 = {
+ asn_MAP_RANAP_ReportArea_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ReportArea_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ReportArea_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ReportArea = {
+ "RANAP_ReportArea",
+ "RANAP_ReportArea",
+ RANAP_ReportArea_free,
+ RANAP_ReportArea_print,
+ RANAP_ReportArea_constraint,
+ RANAP_ReportArea_decode_ber,
+ RANAP_ReportArea_encode_der,
+ RANAP_ReportArea_decode_xer,
+ RANAP_ReportArea_encode_xer,
+ RANAP_ReportArea_decode_uper,
+ RANAP_ReportArea_encode_uper,
+ RANAP_ReportArea_decode_aper,
+ RANAP_ReportArea_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ReportArea_tags_1,
+ sizeof(asn_DEF_RANAP_ReportArea_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportArea_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ReportArea_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ReportArea_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportArea_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ReportArea_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ReportArea_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ReportChangeOfSAI.c b/src/ranap/RANAP_ReportChangeOfSAI.c
new file mode 100644
index 0000000..f169890
--- /dev/null
+++ b/src/ranap/RANAP_ReportChangeOfSAI.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ReportChangeOfSAI.h>
+
+int
+RANAP_ReportChangeOfSAI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ReportChangeOfSAI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ReportChangeOfSAI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportChangeOfSAI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ReportChangeOfSAI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportChangeOfSAI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ReportChangeOfSAI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportChangeOfSAI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ReportChangeOfSAI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ReportChangeOfSAI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ReportChangeOfSAI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportChangeOfSAI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ReportChangeOfSAI_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ReportChangeOfSAI_value2enum_1[] = {
+ { 0, 9, "requested" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ReportChangeOfSAI_enum2value_1[] = {
+ 0 /* requested(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ReportChangeOfSAI_specs_1 = {
+ asn_MAP_RANAP_ReportChangeOfSAI_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ReportChangeOfSAI_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ReportChangeOfSAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ReportChangeOfSAI = {
+ "RANAP_ReportChangeOfSAI",
+ "RANAP_ReportChangeOfSAI",
+ RANAP_ReportChangeOfSAI_free,
+ RANAP_ReportChangeOfSAI_print,
+ RANAP_ReportChangeOfSAI_constraint,
+ RANAP_ReportChangeOfSAI_decode_ber,
+ RANAP_ReportChangeOfSAI_encode_der,
+ RANAP_ReportChangeOfSAI_decode_xer,
+ RANAP_ReportChangeOfSAI_encode_xer,
+ RANAP_ReportChangeOfSAI_decode_uper,
+ RANAP_ReportChangeOfSAI_encode_uper,
+ RANAP_ReportChangeOfSAI_decode_aper,
+ RANAP_ReportChangeOfSAI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ReportChangeOfSAI_tags_1,
+ sizeof(asn_DEF_RANAP_ReportChangeOfSAI_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportChangeOfSAI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ReportChangeOfSAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ReportChangeOfSAI_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportChangeOfSAI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ReportChangeOfSAI_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ReportChangeOfSAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ReportInterval.c b/src/ranap/RANAP_ReportInterval.c
new file mode 100644
index 0000000..1bee993
--- /dev/null
+++ b/src/ranap/RANAP_ReportInterval.c
@@ -0,0 +1,193 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ReportInterval.h>
+
+int
+RANAP_ReportInterval_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ReportInterval_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ReportInterval_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ReportInterval_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportInterval_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ReportInterval_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportInterval_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ReportInterval_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ReportInterval_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ReportInterval_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ReportInterval_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ReportInterval_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ReportInterval_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ReportInterval_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0l, 12l } /* (0..12,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ReportInterval_value2enum_1[] = {
+ { 0, 5, "ms250" },
+ { 1, 5, "ms500" },
+ { 2, 6, "ms1000" },
+ { 3, 6, "ms2000" },
+ { 4, 6, "ms3000" },
+ { 5, 6, "ms4000" },
+ { 6, 6, "ms6000" },
+ { 7, 7, "ms12000" },
+ { 8, 7, "ms16000" },
+ { 9, 7, "ms20000" },
+ { 10, 7, "ms24000" },
+ { 11, 7, "ms32000" },
+ { 12, 7, "ms64000" },
+ { 13, 6, "ms8000" },
+ { 14, 7, "ms28000" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ReportInterval_enum2value_1[] = {
+ 2, /* ms1000(2) */
+ 7, /* ms12000(7) */
+ 8, /* ms16000(8) */
+ 3, /* ms2000(3) */
+ 9, /* ms20000(9) */
+ 10, /* ms24000(10) */
+ 0, /* ms250(0) */
+ 14, /* ms28000(14) */
+ 4, /* ms3000(4) */
+ 11, /* ms32000(11) */
+ 5, /* ms4000(5) */
+ 1, /* ms500(1) */
+ 6, /* ms6000(6) */
+ 12, /* ms64000(12) */
+ 13 /* ms8000(13) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ReportInterval_specs_1 = {
+ asn_MAP_RANAP_ReportInterval_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ReportInterval_enum2value_1, /* N => "tag"; sorted by N */
+ 15, /* Number of elements in the maps */
+ 14, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ReportInterval_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ReportInterval = {
+ "RANAP_ReportInterval",
+ "RANAP_ReportInterval",
+ RANAP_ReportInterval_free,
+ RANAP_ReportInterval_print,
+ RANAP_ReportInterval_constraint,
+ RANAP_ReportInterval_decode_ber,
+ RANAP_ReportInterval_encode_der,
+ RANAP_ReportInterval_decode_xer,
+ RANAP_ReportInterval_encode_xer,
+ RANAP_ReportInterval_decode_uper,
+ RANAP_ReportInterval_encode_uper,
+ RANAP_ReportInterval_decode_aper,
+ RANAP_ReportInterval_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ReportInterval_tags_1,
+ sizeof(asn_DEF_RANAP_ReportInterval_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportInterval_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ReportInterval_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ReportInterval_tags_1)
+ /sizeof(asn_DEF_RANAP_ReportInterval_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ReportInterval_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ReportInterval_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RequestType.c b/src/ranap/RANAP_RequestType.c
new file mode 100644
index 0000000..ba6e1a8
--- /dev/null
+++ b/src/ranap/RANAP_RequestType.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestType.h>
+
+static int
+memb_accuracyCode_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_accuracyCode_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RequestType_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RequestType, event),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Event,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "event"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_RequestType, reportArea),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ReportArea,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "reportArea"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_RequestType, accuracyCode),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_accuracyCode_constraint_1,
+ &asn_PER_memb_accuracyCode_constr_4,
+ 0,
+ "accuracyCode"
+ },
+};
+static const int asn_MAP_RANAP_RequestType_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_RequestType_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* event */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportArea */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* accuracyCode */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RequestType_specs_1 = {
+ sizeof(struct RANAP_RequestType),
+ offsetof(struct RANAP_RequestType, _asn_ctx),
+ asn_MAP_RANAP_RequestType_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_RequestType_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestType = {
+ "RANAP_RequestType",
+ "RANAP_RequestType",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestType_tags_1,
+ sizeof(asn_DEF_RANAP_RequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestType_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestType_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_RequestType_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_RequestType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.c b/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.c
new file mode 100644
index 0000000..4c65e68
--- /dev/null
+++ b/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedGuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList),
+ offsetof(struct RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList = {
+ "RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ "RANAP_Requested-RAB-Parameter-ExtendedGuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Requested_RAB_Parameter_ExtendedGuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.c b/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.c
new file mode 100644
index 0000000..1150e5b
--- /dev/null
+++ b/src/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_ExtendedMaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList),
+ offsetof(struct RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList = {
+ "RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList",
+ "RANAP_Requested-RAB-Parameter-ExtendedMaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_constr_1,
+ asn_MBR_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Requested_RAB_Parameter_ExtendedMaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.c b/src/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.c
new file mode 100644
index 0000000..ad2b9ba
--- /dev/null
+++ b/src/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-GuaranteedBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_GuaranteedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_specs_1 = {
+ sizeof(struct RANAP_Requested_RAB_Parameter_GuaranteedBitrateList),
+ offsetof(struct RANAP_Requested_RAB_Parameter_GuaranteedBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList = {
+ "RANAP_Requested-RAB-Parameter-GuaranteedBitrateList",
+ "RANAP_Requested-RAB-Parameter-GuaranteedBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_constr_1,
+ asn_MBR_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.c b/src/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.c
new file mode 100644
index 0000000..2aad1ad
--- /dev/null
+++ b/src/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-MaxBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_Requested_RAB_Parameter_MaxBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_Requested_RAB_Parameter_MaxBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_MaxBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_Requested_RAB_Parameter_MaxBitrateList_specs_1 = {
+ sizeof(struct RANAP_Requested_RAB_Parameter_MaxBitrateList),
+ offsetof(struct RANAP_Requested_RAB_Parameter_MaxBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList = {
+ "RANAP_Requested-RAB-Parameter-MaxBitrateList",
+ "RANAP_Requested-RAB-Parameter-MaxBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Requested_RAB_Parameter_MaxBitrateList_constr_1,
+ asn_MBR_RANAP_Requested_RAB_Parameter_MaxBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_Requested_RAB_Parameter_MaxBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Requested-RAB-Parameter-Values.c b/src/ranap/RANAP_Requested-RAB-Parameter-Values.c
new file mode 100644
index 0000000..0279887
--- /dev/null
+++ b/src/ranap/RANAP_Requested-RAB-Parameter-Values.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Requested-RAB-Parameter-Values.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Requested_RAB_Parameter_Values_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_Requested_RAB_Parameter_Values, requestedMaxBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Requested_RAB_Parameter_MaxBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedMaxBitrates"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_Requested_RAB_Parameter_Values, requestedGuaranteedBitrates),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Requested_RAB_Parameter_GuaranteedBitrateList,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "requestedGuaranteedBitrates"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Requested_RAB_Parameter_Values, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Requested_RAB_Parameter_Values_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Requested_RAB_Parameter_Values_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requestedMaxBitrates */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* requestedGuaranteedBitrates */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Requested_RAB_Parameter_Values_specs_1 = {
+ sizeof(struct RANAP_Requested_RAB_Parameter_Values),
+ offsetof(struct RANAP_Requested_RAB_Parameter_Values, _asn_ctx),
+ asn_MAP_RANAP_Requested_RAB_Parameter_Values_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_Requested_RAB_Parameter_Values_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Requested_RAB_Parameter_Values = {
+ "RANAP_Requested-RAB-Parameter-Values",
+ "RANAP_Requested-RAB-Parameter-Values",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1,
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1)
+ /sizeof(asn_DEF_RANAP_Requested_RAB_Parameter_Values_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Requested_RAB_Parameter_Values_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_Requested_RAB_Parameter_Values_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RequestedGANSSAssistanceData.c b/src/ranap/RANAP_RequestedGANSSAssistanceData.c
new file mode 100644
index 0000000..e18a3bd
--- /dev/null
+++ b/src/ranap/RANAP_RequestedGANSSAssistanceData.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestedGANSSAssistanceData.h>
+
+int
+RANAP_RequestedGANSSAssistanceData_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 201l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_RequestedGANSSAssistanceData_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RequestedGANSSAssistanceData_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGANSSAssistanceData_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGANSSAssistanceData_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGANSSAssistanceData_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGANSSAssistanceData_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGANSSAssistanceData_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGANSSAssistanceData_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGANSSAssistanceData_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGANSSAssistanceData_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedGANSSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RequestedGANSSAssistanceData_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 201l } /* (SIZE(1..201)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedGANSSAssistanceData = {
+ "RANAP_RequestedGANSSAssistanceData",
+ "RANAP_RequestedGANSSAssistanceData",
+ RANAP_RequestedGANSSAssistanceData_free,
+ RANAP_RequestedGANSSAssistanceData_print,
+ RANAP_RequestedGANSSAssistanceData_constraint,
+ RANAP_RequestedGANSSAssistanceData_decode_ber,
+ RANAP_RequestedGANSSAssistanceData_encode_der,
+ RANAP_RequestedGANSSAssistanceData_decode_xer,
+ RANAP_RequestedGANSSAssistanceData_encode_xer,
+ RANAP_RequestedGANSSAssistanceData_decode_uper,
+ RANAP_RequestedGANSSAssistanceData_encode_uper,
+ RANAP_RequestedGANSSAssistanceData_decode_aper,
+ RANAP_RequestedGANSSAssistanceData_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1,
+ sizeof(asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedGANSSAssistanceData_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RequestedGANSSAssistanceData_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RequestedGPSAssistanceData.c b/src/ranap/RANAP_RequestedGPSAssistanceData.c
new file mode 100644
index 0000000..139e0b9
--- /dev/null
+++ b/src/ranap/RANAP_RequestedGPSAssistanceData.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestedGPSAssistanceData.h>
+
+int
+RANAP_RequestedGPSAssistanceData_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 1l && size <= 38l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_RequestedGPSAssistanceData_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RequestedGPSAssistanceData_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGPSAssistanceData_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGPSAssistanceData_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGPSAssistanceData_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGPSAssistanceData_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGPSAssistanceData_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGPSAssistanceData_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RequestedGPSAssistanceData_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RequestedGPSAssistanceData_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedGPSAssistanceData_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RequestedGPSAssistanceData_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1l, 38l } /* (SIZE(1..38)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedGPSAssistanceData = {
+ "RANAP_RequestedGPSAssistanceData",
+ "RANAP_RequestedGPSAssistanceData",
+ RANAP_RequestedGPSAssistanceData_free,
+ RANAP_RequestedGPSAssistanceData_print,
+ RANAP_RequestedGPSAssistanceData_constraint,
+ RANAP_RequestedGPSAssistanceData_decode_ber,
+ RANAP_RequestedGPSAssistanceData_encode_der,
+ RANAP_RequestedGPSAssistanceData_decode_xer,
+ RANAP_RequestedGPSAssistanceData_encode_xer,
+ RANAP_RequestedGPSAssistanceData_decode_uper,
+ RANAP_RequestedGPSAssistanceData_encode_uper,
+ RANAP_RequestedGPSAssistanceData_decode_aper,
+ RANAP_RequestedGPSAssistanceData_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1,
+ sizeof(asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedGPSAssistanceData_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RequestedGPSAssistanceData_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_RequestedLocationRelatedDataType.c b/src/ranap/RANAP_RequestedLocationRelatedDataType.c
new file mode 100644
index 0000000..ca84208
--- /dev/null
+++ b/src/ranap/RANAP_RequestedLocationRelatedDataType.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestedLocationRelatedDataType.h>
+
+int
+RANAP_RequestedLocationRelatedDataType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_RequestedLocationRelatedDataType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_RequestedLocationRelatedDataType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedLocationRelatedDataType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_RequestedLocationRelatedDataType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedLocationRelatedDataType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_RequestedLocationRelatedDataType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_RequestedLocationRelatedDataType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_RequestedLocationRelatedDataType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_RequestedLocationRelatedDataType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_RequestedLocationRelatedDataType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_RequestedLocationRelatedDataType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_RequestedLocationRelatedDataType_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_RequestedLocationRelatedDataType_value2enum_1[] = {
+ { 0, 27, "decipheringKeysUEBasedOTDOA" },
+ { 1, 26, "decipheringKeysAssistedGPS" },
+ { 2, 35, "dedicatedAssistanceDataUEBasedOTDOA" },
+ { 3, 34, "dedicatedAssistanceDataAssistedGPS" },
+ { 4, 28, "decipheringKeysAssistedGANSS" },
+ { 5, 36, "dedicatedAssistanceDataAssistedGANSS" },
+ { 6, 34, "decipheringKeysAssistedGPSandGANSS" },
+ { 7, 42, "dedicatedAssistanceDataAssistedGPSandGANSS" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_RequestedLocationRelatedDataType_enum2value_1[] = {
+ 4, /* decipheringKeysAssistedGANSS(4) */
+ 1, /* decipheringKeysAssistedGPS(1) */
+ 6, /* decipheringKeysAssistedGPSandGANSS(6) */
+ 0, /* decipheringKeysUEBasedOTDOA(0) */
+ 5, /* dedicatedAssistanceDataAssistedGANSS(5) */
+ 3, /* dedicatedAssistanceDataAssistedGPS(3) */
+ 7, /* dedicatedAssistanceDataAssistedGPSandGANSS(7) */
+ 2 /* dedicatedAssistanceDataUEBasedOTDOA(2) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_RequestedLocationRelatedDataType_specs_1 = {
+ asn_MAP_RANAP_RequestedLocationRelatedDataType_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_RequestedLocationRelatedDataType_enum2value_1, /* N => "tag"; sorted by N */
+ 8, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedLocationRelatedDataType = {
+ "RANAP_RequestedLocationRelatedDataType",
+ "RANAP_RequestedLocationRelatedDataType",
+ RANAP_RequestedLocationRelatedDataType_free,
+ RANAP_RequestedLocationRelatedDataType_print,
+ RANAP_RequestedLocationRelatedDataType_constraint,
+ RANAP_RequestedLocationRelatedDataType_decode_ber,
+ RANAP_RequestedLocationRelatedDataType_encode_der,
+ RANAP_RequestedLocationRelatedDataType_decode_xer,
+ RANAP_RequestedLocationRelatedDataType_encode_xer,
+ RANAP_RequestedLocationRelatedDataType_decode_uper,
+ RANAP_RequestedLocationRelatedDataType_encode_uper,
+ RANAP_RequestedLocationRelatedDataType_decode_aper,
+ RANAP_RequestedLocationRelatedDataType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1,
+ sizeof(asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedLocationRelatedDataType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RequestedLocationRelatedDataType_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_RequestedLocationRelatedDataType_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.c b/src/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.c
new file mode 100644
index 0000000..23262f9
--- /dev/null
+++ b/src/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestedMBMSIPMulticastAddressandAPNRequest.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1l, 512l } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_specs_1 = {
+ sizeof(struct RANAP_RequestedMBMSIPMulticastAddressandAPNRequest),
+ offsetof(struct RANAP_RequestedMBMSIPMulticastAddressandAPNRequest, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest = {
+ "RANAP_RequestedMBMSIPMulticastAddressandAPNRequest",
+ "RANAP_RequestedMBMSIPMulticastAddressandAPNRequest",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1,
+ sizeof(asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_constr_1,
+ asn_MBR_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RequestedMBMSIPMulticastAddressandAPNRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_RequestedMulticastServiceList.c b/src/ranap/RANAP_RequestedMulticastServiceList.c
new file mode 100644
index 0000000..398b14d
--- /dev/null
+++ b/src/ranap/RANAP_RequestedMulticastServiceList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_RequestedMulticastServiceList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_RequestedMulticastServiceList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_RequestedMulticastServiceList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_RequestedMulticastServiceList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_RequestedMulticastServiceList_specs_1 = {
+ sizeof(struct RANAP_RequestedMulticastServiceList),
+ offsetof(struct RANAP_RequestedMulticastServiceList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_RequestedMulticastServiceList = {
+ "RANAP_RequestedMulticastServiceList",
+ "RANAP_RequestedMulticastServiceList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_RequestedMulticastServiceList_tags_1,
+ sizeof(asn_DEF_RANAP_RequestedMulticastServiceList_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedMulticastServiceList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_RequestedMulticastServiceList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_RequestedMulticastServiceList_tags_1)
+ /sizeof(asn_DEF_RANAP_RequestedMulticastServiceList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_RequestedMulticastServiceList_constr_1,
+ asn_MBR_RANAP_RequestedMulticastServiceList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_RequestedMulticastServiceList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Reset.c b/src/ranap/RANAP_Reset.c
new file mode 100644
index 0000000..c8e20d8
--- /dev/null
+++ b/src/ranap/RANAP_Reset.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Reset.h>
+
+static int
+memb_reset_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_reset_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_reset_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_reset_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_reset_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_reset_ies_specs_2 = {
+ sizeof(struct reset_ies),
+ offsetof(struct reset_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reset_ies_2 = {
+ "reset-ies",
+ "reset-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_reset_ies_tags_2,
+ sizeof(asn_DEF_reset_ies_tags_2)
+ /sizeof(asn_DEF_reset_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_reset_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_reset_ies_tags_2)
+ /sizeof(asn_DEF_reset_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_reset_ies_constr_2,
+ asn_MBR_reset_ies_2,
+ 1, /* Single element */
+ &asn_SPC_reset_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_Reset_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Reset, reset_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_reset_ies_2,
+ memb_reset_ies_constraint_1,
+ &asn_PER_memb_reset_ies_constr_2,
+ 0,
+ "reset-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Reset_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Reset_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reset-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Reset_specs_1 = {
+ sizeof(struct RANAP_Reset),
+ offsetof(struct RANAP_Reset, _asn_ctx),
+ asn_MAP_RANAP_Reset_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Reset = {
+ "RANAP_Reset",
+ "RANAP_Reset",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Reset_tags_1,
+ sizeof(asn_DEF_RANAP_Reset_tags_1)
+ /sizeof(asn_DEF_RANAP_Reset_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Reset_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Reset_tags_1)
+ /sizeof(asn_DEF_RANAP_Reset_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Reset_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_Reset_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetAcknowledge.c b/src/ranap/RANAP_ResetAcknowledge.c
new file mode 100644
index 0000000..e266309
--- /dev/null
+++ b/src/ranap/RANAP_ResetAcknowledge.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResetAcknowledge.h>
+
+static int
+memb_resetAcknowledge_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_resetAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_resetAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resetAcknowledge_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_resetAcknowledge_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resetAcknowledge_ies_specs_2 = {
+ sizeof(struct resetAcknowledge_ies),
+ offsetof(struct resetAcknowledge_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resetAcknowledge_ies_2 = {
+ "resetAcknowledge-ies",
+ "resetAcknowledge-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_resetAcknowledge_ies_tags_2,
+ sizeof(asn_DEF_resetAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_resetAcknowledge_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_resetAcknowledge_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_resetAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_resetAcknowledge_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_resetAcknowledge_ies_constr_2,
+ asn_MBR_resetAcknowledge_ies_2,
+ 1, /* Single element */
+ &asn_SPC_resetAcknowledge_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetAcknowledge_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetAcknowledge, resetAcknowledge_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_resetAcknowledge_ies_2,
+ memb_resetAcknowledge_ies_constraint_1,
+ &asn_PER_memb_resetAcknowledge_ies_constr_2,
+ 0,
+ "resetAcknowledge-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetAcknowledge_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetAcknowledge_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* resetAcknowledge-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetAcknowledge_specs_1 = {
+ sizeof(struct RANAP_ResetAcknowledge),
+ offsetof(struct RANAP_ResetAcknowledge, _asn_ctx),
+ asn_MAP_RANAP_ResetAcknowledge_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetAcknowledge = {
+ "RANAP_ResetAcknowledge",
+ "RANAP_ResetAcknowledge",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetAcknowledge_tags_1,
+ sizeof(asn_DEF_RANAP_ResetAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetAcknowledge_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetAcknowledge_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetAcknowledge_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetAcknowledge_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ResetAcknowledge_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResource.c b/src/ranap/RANAP_ResetResource.c
new file mode 100644
index 0000000..68cd027
--- /dev/null
+++ b/src/ranap/RANAP_ResetResource.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResetResource.h>
+
+static int
+memb_resetResource_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_resetResource_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_resetResource_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resetResource_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_resetResource_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resetResource_ies_specs_2 = {
+ sizeof(struct resetResource_ies),
+ offsetof(struct resetResource_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resetResource_ies_2 = {
+ "resetResource-ies",
+ "resetResource-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_resetResource_ies_tags_2,
+ sizeof(asn_DEF_resetResource_ies_tags_2)
+ /sizeof(asn_DEF_resetResource_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_resetResource_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_resetResource_ies_tags_2)
+ /sizeof(asn_DEF_resetResource_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_resetResource_ies_constr_2,
+ asn_MBR_resetResource_ies_2,
+ 1, /* Single element */
+ &asn_SPC_resetResource_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResource_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResource, resetResource_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_resetResource_ies_2,
+ memb_resetResource_ies_constraint_1,
+ &asn_PER_memb_resetResource_ies_constr_2,
+ 0,
+ "resetResource-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResource_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResource_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* resetResource-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResource_specs_1 = {
+ sizeof(struct RANAP_ResetResource),
+ offsetof(struct RANAP_ResetResource, _asn_ctx),
+ asn_MAP_RANAP_ResetResource_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResource = {
+ "RANAP_ResetResource",
+ "RANAP_ResetResource",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResource_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResource_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResource_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResource_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResource_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResource_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResource_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ResetResource_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResourceAckItem.c b/src/ranap/RANAP_ResetResourceAckItem.c
new file mode 100644
index 0000000..db1a117
--- /dev/null
+++ b/src/ranap/RANAP_ResetResourceAckItem.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResetResourceAckItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResourceAckItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResourceAckItem, iuSigConId),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IuSignallingConnectionIdentifier,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuSigConId"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_ResetResourceAckItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_ResetResourceAckItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResourceAckItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResourceAckItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iuSigConId */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResourceAckItem_specs_1 = {
+ sizeof(struct RANAP_ResetResourceAckItem),
+ offsetof(struct RANAP_ResetResourceAckItem, _asn_ctx),
+ asn_MAP_RANAP_ResetResourceAckItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_ResetResourceAckItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAckItem = {
+ "RANAP_ResetResourceAckItem",
+ "RANAP_ResetResourceAckItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResourceAckItem_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResourceAckItem_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAckItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResourceAckItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResourceAckItem_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAckItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResourceAckItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_ResetResourceAckItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResourceAckList.c b/src/ranap/RANAP_ResetResourceAckList.c
new file mode 100644
index 0000000..6a47218
--- /dev/null
+++ b/src/ranap/RANAP_ResetResourceAckList.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+#include <constr_CHOICE.h>
+
+#include <osmocom/ranap/RANAP_ResetResourceAckList.h>
+
+static int
+memb_resetResourceAckList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_resetResourceAckList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_resetResourceAckList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resetResourceAckList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_resetResourceAckList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resetResourceAckList_ies_specs_2 = {
+ sizeof(struct resetResourceAckList_ies),
+ offsetof(struct resetResourceAckList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resetResourceAckList_ies_2 = {
+ "resetResourceAckList-ies",
+ "resetResourceAckList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_resetResourceAckList_ies_tags_2,
+ sizeof(asn_DEF_resetResourceAckList_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceAckList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_resetResourceAckList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_resetResourceAckList_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceAckList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_resetResourceAckList_ies_constr_2,
+ asn_MBR_resetResourceAckList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_resetResourceAckList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResourceAckList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResourceAckList, resetResourceAckList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_resetResourceAckList_ies_2,
+ memb_resetResourceAckList_ies_constraint_1,
+ &asn_PER_memb_resetResourceAckList_ies_constr_2,
+ 0,
+ "resetResourceAckList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResourceAckList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResourceAckList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* resetResourceAckList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResourceAckList_specs_1 = {
+ sizeof(struct RANAP_ResetResourceAckList),
+ offsetof(struct RANAP_ResetResourceAckList, _asn_ctx),
+ asn_MAP_RANAP_ResetResourceAckList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAckList = {
+ "RANAP_ResetResourceAckList",
+ "RANAP_ResetResourceAckList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResourceAckList_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResourceAckList_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAckList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResourceAckList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResourceAckList_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAckList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResourceAckList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ResetResourceAckList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResourceAcknowledge.c b/src/ranap/RANAP_ResetResourceAcknowledge.c
new file mode 100644
index 0000000..116abb1
--- /dev/null
+++ b/src/ranap/RANAP_ResetResourceAcknowledge.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResetResourceAcknowledge.h>
+
+static int
+memb_resetResourceAcknowledge_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_resetResourceAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_resetResourceAcknowledge_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resetResourceAcknowledge_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_resetResourceAcknowledge_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resetResourceAcknowledge_ies_specs_2 = {
+ sizeof(struct resetResourceAcknowledge_ies),
+ offsetof(struct resetResourceAcknowledge_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resetResourceAcknowledge_ies_2 = {
+ "resetResourceAcknowledge-ies",
+ "resetResourceAcknowledge-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_resetResourceAcknowledge_ies_tags_2,
+ sizeof(asn_DEF_resetResourceAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceAcknowledge_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_resetResourceAcknowledge_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_resetResourceAcknowledge_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceAcknowledge_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_resetResourceAcknowledge_ies_constr_2,
+ asn_MBR_resetResourceAcknowledge_ies_2,
+ 1, /* Single element */
+ &asn_SPC_resetResourceAcknowledge_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResourceAcknowledge_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResourceAcknowledge, resetResourceAcknowledge_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_resetResourceAcknowledge_ies_2,
+ memb_resetResourceAcknowledge_ies_constraint_1,
+ &asn_PER_memb_resetResourceAcknowledge_ies_constr_2,
+ 0,
+ "resetResourceAcknowledge-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResourceAcknowledge_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResourceAcknowledge_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* resetResourceAcknowledge-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResourceAcknowledge_specs_1 = {
+ sizeof(struct RANAP_ResetResourceAcknowledge),
+ offsetof(struct RANAP_ResetResourceAcknowledge, _asn_ctx),
+ asn_MAP_RANAP_ResetResourceAcknowledge_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceAcknowledge = {
+ "RANAP_ResetResourceAcknowledge",
+ "RANAP_ResetResourceAcknowledge",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResourceAcknowledge_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResourceAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAcknowledge_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResourceAcknowledge_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResourceAcknowledge_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceAcknowledge_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResourceAcknowledge_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ResetResourceAcknowledge_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResourceItem.c b/src/ranap/RANAP_ResetResourceItem.c
new file mode 100644
index 0000000..f541b5b
--- /dev/null
+++ b/src/ranap/RANAP_ResetResourceItem.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResetResourceItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResourceItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResourceItem, iuSigConId),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IuSignallingConnectionIdentifier,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuSigConId"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_ResetResourceItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_ResetResourceItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResourceItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResourceItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iuSigConId */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResourceItem_specs_1 = {
+ sizeof(struct RANAP_ResetResourceItem),
+ offsetof(struct RANAP_ResetResourceItem, _asn_ctx),
+ asn_MAP_RANAP_ResetResourceItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_ResetResourceItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceItem = {
+ "RANAP_ResetResourceItem",
+ "RANAP_ResetResourceItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResourceItem_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResourceItem_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResourceItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResourceItem_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResourceItem_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_ResetResourceItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResetResourceList.c b/src/ranap/RANAP_ResetResourceList.c
new file mode 100644
index 0000000..6d1faf8
--- /dev/null
+++ b/src/ranap/RANAP_ResetResourceList.c
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+#include <constr_CHOICE.h>
+
+#include <osmocom/ranap/RANAP_ResetResourceList.h>
+
+static int
+memb_resetResourceList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_resetResourceList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_resetResourceList_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resetResourceList_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_resetResourceList_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resetResourceList_ies_specs_2 = {
+ sizeof(struct resetResourceList_ies),
+ offsetof(struct resetResourceList_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resetResourceList_ies_2 = {
+ "resetResourceList-ies",
+ "resetResourceList-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_resetResourceList_ies_tags_2,
+ sizeof(asn_DEF_resetResourceList_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceList_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_resetResourceList_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_resetResourceList_ies_tags_2)
+ /sizeof(asn_DEF_resetResourceList_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_resetResourceList_ies_constr_2,
+ asn_MBR_resetResourceList_ies_2,
+ 1, /* Single element */
+ &asn_SPC_resetResourceList_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_ResetResourceList_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResetResourceList, resetResourceList_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_resetResourceList_ies_2,
+ memb_resetResourceList_ies_constraint_1,
+ &asn_PER_memb_resetResourceList_ies_constr_2,
+ 0,
+ "resetResourceList-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResetResourceList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResetResourceList_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* resetResourceList-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResetResourceList_specs_1 = {
+ sizeof(struct RANAP_ResetResourceList),
+ offsetof(struct RANAP_ResetResourceList, _asn_ctx),
+ asn_MAP_RANAP_ResetResourceList_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResetResourceList = {
+ "RANAP_ResetResourceList",
+ "RANAP_ResetResourceList",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResetResourceList_tags_1,
+ sizeof(asn_DEF_RANAP_ResetResourceList_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResetResourceList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResetResourceList_tags_1)
+ /sizeof(asn_DEF_RANAP_ResetResourceList_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResetResourceList_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_ResetResourceList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResidualBitErrorRatio.c b/src/ranap/RANAP_ResidualBitErrorRatio.c
new file mode 100644
index 0000000..ae010ab
--- /dev/null
+++ b/src/ranap/RANAP_ResidualBitErrorRatio.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResidualBitErrorRatio.h>
+
+static int
+memb_mantissa_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 9l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_exponent_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 8l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_mantissa_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 1l, 9l } /* (1..9) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_exponent_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (1..8) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_ResidualBitErrorRatio_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResidualBitErrorRatio, mantissa),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_mantissa_constraint_1,
+ &asn_PER_memb_mantissa_constr_2,
+ 0,
+ "mantissa"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_ResidualBitErrorRatio, exponent),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_exponent_constraint_1,
+ &asn_PER_memb_exponent_constr_3,
+ 0,
+ "exponent"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_ResidualBitErrorRatio, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_ResidualBitErrorRatio_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_ResidualBitErrorRatio_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_ResidualBitErrorRatio_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mantissa */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* exponent */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_ResidualBitErrorRatio_specs_1 = {
+ sizeof(struct RANAP_ResidualBitErrorRatio),
+ offsetof(struct RANAP_ResidualBitErrorRatio, _asn_ctx),
+ asn_MAP_RANAP_ResidualBitErrorRatio_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_ResidualBitErrorRatio_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResidualBitErrorRatio = {
+ "RANAP_ResidualBitErrorRatio",
+ "RANAP_ResidualBitErrorRatio",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResidualBitErrorRatio_tags_1,
+ sizeof(asn_DEF_RANAP_ResidualBitErrorRatio_tags_1)
+ /sizeof(asn_DEF_RANAP_ResidualBitErrorRatio_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResidualBitErrorRatio_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResidualBitErrorRatio_tags_1)
+ /sizeof(asn_DEF_RANAP_ResidualBitErrorRatio_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_ResidualBitErrorRatio_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_ResidualBitErrorRatio_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_ResponseTime.c b/src/ranap/RANAP_ResponseTime.c
new file mode 100644
index 0000000..4b1f270
--- /dev/null
+++ b/src/ranap/RANAP_ResponseTime.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_ResponseTime.h>
+
+int
+RANAP_ResponseTime_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_ResponseTime_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_ResponseTime_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_ResponseTime_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ResponseTime_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_ResponseTime_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ResponseTime_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_ResponseTime_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_ResponseTime_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_ResponseTime_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_ResponseTime_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_ResponseTime_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_ResponseTime_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_ResponseTime_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_ResponseTime_value2enum_1[] = {
+ { 0, 8, "lowdelay" },
+ { 1, 13, "delaytolerant" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_ResponseTime_enum2value_1[] = {
+ 1, /* delaytolerant(1) */
+ 0 /* lowdelay(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_ResponseTime_specs_1 = {
+ asn_MAP_RANAP_ResponseTime_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_ResponseTime_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_ResponseTime_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_ResponseTime = {
+ "RANAP_ResponseTime",
+ "RANAP_ResponseTime",
+ RANAP_ResponseTime_free,
+ RANAP_ResponseTime_print,
+ RANAP_ResponseTime_constraint,
+ RANAP_ResponseTime_decode_ber,
+ RANAP_ResponseTime_encode_der,
+ RANAP_ResponseTime_decode_xer,
+ RANAP_ResponseTime_encode_xer,
+ RANAP_ResponseTime_decode_uper,
+ RANAP_ResponseTime_encode_uper,
+ RANAP_ResponseTime_decode_aper,
+ RANAP_ResponseTime_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_ResponseTime_tags_1,
+ sizeof(asn_DEF_RANAP_ResponseTime_tags_1)
+ /sizeof(asn_DEF_RANAP_ResponseTime_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_ResponseTime_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_ResponseTime_tags_1)
+ /sizeof(asn_DEF_RANAP_ResponseTime_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_ResponseTime_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_ResponseTime_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SAC.c b/src/ranap/RANAP_SAC.c
new file mode 100644
index 0000000..70ae666
--- /dev/null
+++ b/src/ranap/RANAP_SAC.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SAC.h>
+
+int
+RANAP_SAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_SAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SAC = {
+ "RANAP_SAC",
+ "RANAP_SAC",
+ RANAP_SAC_free,
+ RANAP_SAC_print,
+ RANAP_SAC_constraint,
+ RANAP_SAC_decode_ber,
+ RANAP_SAC_encode_der,
+ RANAP_SAC_decode_xer,
+ RANAP_SAC_encode_xer,
+ RANAP_SAC_decode_uper,
+ RANAP_SAC_encode_uper,
+ RANAP_SAC_decode_aper,
+ RANAP_SAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SAC_tags_1,
+ sizeof(asn_DEF_RANAP_SAC_tags_1)
+ /sizeof(asn_DEF_RANAP_SAC_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SAC_tags_1)
+ /sizeof(asn_DEF_RANAP_SAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SAI.c b/src/ranap/RANAP_SAI.c
new file mode 100644
index 0000000..786c4ed
--- /dev/null
+++ b/src/ranap/RANAP_SAI.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SAI.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SAI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SAI, lAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SAI, sAC),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sAC"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SAI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SAI_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sAC */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SAI_specs_1 = {
+ sizeof(struct RANAP_SAI),
+ offsetof(struct RANAP_SAI, _asn_ctx),
+ asn_MAP_RANAP_SAI_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_SAI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SAI = {
+ "RANAP_SAI",
+ "RANAP_SAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SAI_tags_1,
+ sizeof(asn_DEF_RANAP_SAI_tags_1)
+ /sizeof(asn_DEF_RANAP_SAI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SAI_tags_1)
+ /sizeof(asn_DEF_RANAP_SAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SAI_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_SAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SAPI.c b/src/ranap/RANAP_SAPI.c
new file mode 100644
index 0000000..10761b3
--- /dev/null
+++ b/src/ranap/RANAP_SAPI.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SAPI.h>
+
+int
+RANAP_SAPI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SAPI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_SAPI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SAPI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAPI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SAPI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAPI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SAPI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SAPI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SAPI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SAPI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SAPI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SAPI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SAPI_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_SAPI_value2enum_1[] = {
+ { 0, 6, "sapi-0" },
+ { 1, 6, "sapi-3" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_SAPI_enum2value_1[] = {
+ 0, /* sapi-0(0) */
+ 1 /* sapi-3(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_SAPI_specs_1 = {
+ asn_MAP_RANAP_SAPI_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_SAPI_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SAPI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SAPI = {
+ "RANAP_SAPI",
+ "RANAP_SAPI",
+ RANAP_SAPI_free,
+ RANAP_SAPI_print,
+ RANAP_SAPI_constraint,
+ RANAP_SAPI_decode_ber,
+ RANAP_SAPI_encode_der,
+ RANAP_SAPI_decode_xer,
+ RANAP_SAPI_encode_xer,
+ RANAP_SAPI_decode_uper,
+ RANAP_SAPI_encode_uper,
+ RANAP_SAPI_decode_aper,
+ RANAP_SAPI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SAPI_tags_1,
+ sizeof(asn_DEF_RANAP_SAPI_tags_1)
+ /sizeof(asn_DEF_RANAP_SAPI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SAPI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SAPI_tags_1)
+ /sizeof(asn_DEF_RANAP_SAPI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SAPI_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_SAPI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SDU-ErrorRatio.c b/src/ranap/RANAP_SDU-ErrorRatio.c
new file mode 100644
index 0000000..84ebb05
--- /dev/null
+++ b/src/ranap/RANAP_SDU-ErrorRatio.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SDU-ErrorRatio.h>
+
+static int
+memb_mantissa_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 9l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static int
+memb_exponent_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 6l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_mantissa_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 1l, 9l } /* (1..9) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_exponent_constr_3 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 1l, 6l } /* (1..6) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_ErrorRatio_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SDU_ErrorRatio, mantissa),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_mantissa_constraint_1,
+ &asn_PER_memb_mantissa_constr_2,
+ 0,
+ "mantissa"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SDU_ErrorRatio, exponent),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_exponent_constraint_1,
+ &asn_PER_memb_exponent_constr_3,
+ 0,
+ "exponent"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SDU_ErrorRatio, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SDU_ErrorRatio_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_ErrorRatio_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SDU_ErrorRatio_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mantissa */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* exponent */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SDU_ErrorRatio_specs_1 = {
+ sizeof(struct RANAP_SDU_ErrorRatio),
+ offsetof(struct RANAP_SDU_ErrorRatio, _asn_ctx),
+ asn_MAP_RANAP_SDU_ErrorRatio_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_SDU_ErrorRatio_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_ErrorRatio = {
+ "RANAP_SDU-ErrorRatio",
+ "RANAP_SDU-ErrorRatio",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SDU_ErrorRatio_tags_1,
+ sizeof(asn_DEF_RANAP_SDU_ErrorRatio_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_ErrorRatio_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SDU_ErrorRatio_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SDU_ErrorRatio_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_ErrorRatio_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SDU_ErrorRatio_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SDU_ErrorRatio_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SDU-FormatInformationParameterItem.c b/src/ranap/RANAP_SDU-FormatInformationParameterItem.c
new file mode 100644
index 0000000..99a2ca6
--- /dev/null
+++ b/src/ranap/RANAP_SDU-FormatInformationParameterItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameterItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_FormatInformationParameterItem_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_SDU_FormatInformationParameterItem, subflowSDU_Size),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SubflowSDU_Size,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "subflowSDU-Size"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_SDU_FormatInformationParameterItem, rAB_SubflowCombinationBitRate),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_SubflowCombinationBitRate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-SubflowCombinationBitRate"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SDU_FormatInformationParameterItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SDU_FormatInformationParameterItem_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SDU_FormatInformationParameterItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subflowSDU-Size */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-SubflowCombinationBitRate */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SDU_FormatInformationParameterItem_specs_1 = {
+ sizeof(struct RANAP_SDU_FormatInformationParameterItem),
+ offsetof(struct RANAP_SDU_FormatInformationParameterItem, _asn_ctx),
+ asn_MAP_RANAP_SDU_FormatInformationParameterItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_SDU_FormatInformationParameterItem_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_FormatInformationParameterItem = {
+ "RANAP_SDU-FormatInformationParameterItem",
+ "RANAP_SDU-FormatInformationParameterItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1,
+ sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SDU_FormatInformationParameterItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SDU_FormatInformationParameterItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SDU-FormatInformationParameters.c b/src/ranap/RANAP_SDU-FormatInformationParameters.c
new file mode 100644
index 0000000..01248c6
--- /dev/null
+++ b/src/ranap/RANAP_SDU-FormatInformationParameters.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SDU-FormatInformationParameters.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SDU_FormatInformationParameters_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 6, 6, 1l, 64l } /* (SIZE(1..64)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_FormatInformationParameters_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SDU_FormatInformationParameterItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_SDU_FormatInformationParameters_specs_1 = {
+ sizeof(struct RANAP_SDU_FormatInformationParameters),
+ offsetof(struct RANAP_SDU_FormatInformationParameters, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_FormatInformationParameters = {
+ "RANAP_SDU-FormatInformationParameters",
+ "RANAP_SDU-FormatInformationParameters",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1,
+ sizeof(asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_FormatInformationParameters_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SDU_FormatInformationParameters_constr_1,
+ asn_MBR_RANAP_SDU_FormatInformationParameters_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_SDU_FormatInformationParameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SDU-ParameterItem.c b/src/ranap/RANAP_SDU-ParameterItem.c
new file mode 100644
index 0000000..cba8fbe
--- /dev/null
+++ b/src/ranap/RANAP_SDU-ParameterItem.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SDU-ParameterItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_ParameterItem_1[] = {
+ { ATF_POINTER, 1, offsetof(struct RANAP_SDU_ParameterItem, sDU_ErrorRatio),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SDU_ErrorRatio,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sDU-ErrorRatio"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SDU_ParameterItem, residualBitErrorRatio),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ResidualBitErrorRatio,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "residualBitErrorRatio"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SDU_ParameterItem, deliveryOfErroneousSDU),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DeliveryOfErroneousSDU,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "deliveryOfErroneousSDU"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_SDU_ParameterItem, sDU_FormatInformationParameters),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SDU_FormatInformationParameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sDU-FormatInformationParameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SDU_ParameterItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SDU_ParameterItem_oms_1[] = { 0, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_ParameterItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SDU_ParameterItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sDU-ErrorRatio */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* residualBitErrorRatio */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* deliveryOfErroneousSDU */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sDU-FormatInformationParameters */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SDU_ParameterItem_specs_1 = {
+ sizeof(struct RANAP_SDU_ParameterItem),
+ offsetof(struct RANAP_SDU_ParameterItem, _asn_ctx),
+ asn_MAP_RANAP_SDU_ParameterItem_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RANAP_SDU_ParameterItem_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_ParameterItem = {
+ "RANAP_SDU-ParameterItem",
+ "RANAP_SDU-ParameterItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SDU_ParameterItem_tags_1,
+ sizeof(asn_DEF_RANAP_SDU_ParameterItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_ParameterItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SDU_ParameterItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SDU_ParameterItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_ParameterItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SDU_ParameterItem_1,
+ 5, /* Elements count */
+ &asn_SPC_RANAP_SDU_ParameterItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SDU-Parameters.c b/src/ranap/RANAP_SDU-Parameters.c
new file mode 100644
index 0000000..c8f27da
--- /dev/null
+++ b/src/ranap/RANAP_SDU-Parameters.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SDU-Parameters.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SDU_Parameters_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 7l } /* (SIZE(1..7)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_Parameters_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SDU_ParameterItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_Parameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_SDU_Parameters_specs_1 = {
+ sizeof(struct RANAP_SDU_Parameters),
+ offsetof(struct RANAP_SDU_Parameters, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_Parameters = {
+ "RANAP_SDU-Parameters",
+ "RANAP_SDU-Parameters",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SDU_Parameters_tags_1,
+ sizeof(asn_DEF_RANAP_SDU_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_Parameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SDU_Parameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SDU_Parameters_tags_1)
+ /sizeof(asn_DEF_RANAP_SDU_Parameters_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SDU_Parameters_constr_1,
+ asn_MBR_RANAP_SDU_Parameters_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_SDU_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SNA-Access-Information.c b/src/ranap/RANAP_SNA-Access-Information.c
new file mode 100644
index 0000000..f6867f0
--- /dev/null
+++ b/src/ranap/RANAP_SNA-Access-Information.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SNA-Access-Information.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SNA_Access_Information_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SNA_Access_Information, authorisedPLMNs),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_AuthorisedPLMNs,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "authorisedPLMNs"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SNA_Access_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SNA_Access_Information_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SNA_Access_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SNA_Access_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* authorisedPLMNs */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SNA_Access_Information_specs_1 = {
+ sizeof(struct RANAP_SNA_Access_Information),
+ offsetof(struct RANAP_SNA_Access_Information, _asn_ctx),
+ asn_MAP_RANAP_SNA_Access_Information_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_SNA_Access_Information_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SNA_Access_Information = {
+ "RANAP_SNA-Access-Information",
+ "RANAP_SNA-Access-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SNA_Access_Information_tags_1,
+ sizeof(asn_DEF_RANAP_SNA_Access_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_SNA_Access_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SNA_Access_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SNA_Access_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_SNA_Access_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SNA_Access_Information_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_SNA_Access_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SNAC.c b/src/ranap/RANAP_SNAC.c
new file mode 100644
index 0000000..0bb1399
--- /dev/null
+++ b/src/ranap/RANAP_SNAC.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SNAC.h>
+
+int
+RANAP_SNAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SNAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SNAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SNAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SNAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SNAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SNAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SNAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SNAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SNAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SNAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SNAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SNAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SNAC_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SNAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SNAC = {
+ "RANAP_SNAC",
+ "RANAP_SNAC",
+ RANAP_SNAC_free,
+ RANAP_SNAC_print,
+ RANAP_SNAC_constraint,
+ RANAP_SNAC_decode_ber,
+ RANAP_SNAC_encode_der,
+ RANAP_SNAC_decode_xer,
+ RANAP_SNAC_encode_xer,
+ RANAP_SNAC_decode_uper,
+ RANAP_SNAC_encode_uper,
+ RANAP_SNAC_decode_aper,
+ RANAP_SNAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SNAC_tags_1,
+ sizeof(asn_DEF_RANAP_SNAC_tags_1)
+ /sizeof(asn_DEF_RANAP_SNAC_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SNAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SNAC_tags_1)
+ /sizeof(asn_DEF_RANAP_SNAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SNAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SRB-ID.c b/src/ranap/RANAP_SRB-ID.c
new file mode 100644
index 0000000..777b117
--- /dev/null
+++ b/src/ranap/RANAP_SRB-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRB-ID.h>
+
+int
+RANAP_SRB_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 32l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SRB_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SRB_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SRB_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRB_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SRB_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRB_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SRB_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRB_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SRB_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SRB_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SRB_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRB_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SRB_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 5, 5, 1l, 32l } /* (1..32) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_ID = {
+ "RANAP_SRB-ID",
+ "RANAP_SRB-ID",
+ RANAP_SRB_ID_free,
+ RANAP_SRB_ID_print,
+ RANAP_SRB_ID_constraint,
+ RANAP_SRB_ID_decode_ber,
+ RANAP_SRB_ID_encode_der,
+ RANAP_SRB_ID_decode_xer,
+ RANAP_SRB_ID_encode_xer,
+ RANAP_SRB_ID_decode_uper,
+ RANAP_SRB_ID_encode_uper,
+ RANAP_SRB_ID_decode_aper,
+ RANAP_SRB_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRB_ID_tags_1,
+ sizeof(asn_DEF_RANAP_SRB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SRB_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SRB-TrCH-Mapping.c b/src/ranap/RANAP_SRB-TrCH-Mapping.c
new file mode 100644
index 0000000..3ff0d0f
--- /dev/null
+++ b/src/ranap/RANAP_SRB-TrCH-Mapping.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRB-TrCH-Mapping.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SRB_TrCH_Mapping_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 8l } /* (SIZE(1..8)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SRB_TrCH_Mapping_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SRB_TrCH_MappingItem,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_SRB_TrCH_Mapping_specs_1 = {
+ sizeof(struct RANAP_SRB_TrCH_Mapping),
+ offsetof(struct RANAP_SRB_TrCH_Mapping, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_TrCH_Mapping = {
+ "RANAP_SRB-TrCH-Mapping",
+ "RANAP_SRB-TrCH-Mapping",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1,
+ sizeof(asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_TrCH_Mapping_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SRB_TrCH_Mapping_constr_1,
+ asn_MBR_RANAP_SRB_TrCH_Mapping_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_SRB_TrCH_Mapping_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRB-TrCH-MappingItem.c b/src/ranap/RANAP_SRB-TrCH-MappingItem.c
new file mode 100644
index 0000000..5de2fea
--- /dev/null
+++ b/src/ranap/RANAP_SRB-TrCH-MappingItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRB-TrCH-MappingItem.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRB_TrCH_MappingItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRB_TrCH_MappingItem, sRB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SRB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sRB-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRB_TrCH_MappingItem, trCH_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TrCH_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "trCH-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SRB_TrCH_MappingItem, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SRB_TrCH_MappingItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRB_TrCH_MappingItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sRB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trCH-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRB_TrCH_MappingItem_specs_1 = {
+ sizeof(struct RANAP_SRB_TrCH_MappingItem),
+ offsetof(struct RANAP_SRB_TrCH_MappingItem, _asn_ctx),
+ asn_MAP_RANAP_SRB_TrCH_MappingItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_SRB_TrCH_MappingItem_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_TrCH_MappingItem = {
+ "RANAP_SRB-TrCH-MappingItem",
+ "RANAP_SRB-TrCH-MappingItem",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1,
+ sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1)
+ /sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRB_TrCH_MappingItem_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SRB_TrCH_MappingItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRNS-ContextRequest.c b/src/ranap/RANAP_SRNS-ContextRequest.c
new file mode 100644
index 0000000..b701e34
--- /dev/null
+++ b/src/ranap/RANAP_SRNS-ContextRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRNS-ContextRequest.h>
+
+static int
+memb_srnS_ContextRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_srnS_ContextRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_srnS_ContextRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srnS_ContextRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_srnS_ContextRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srnS_ContextRequest_ies_specs_2 = {
+ sizeof(struct srnS_ContextRequest_ies),
+ offsetof(struct srnS_ContextRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srnS_ContextRequest_ies_2 = {
+ "srnS-ContextRequest-ies",
+ "srnS-ContextRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_srnS_ContextRequest_ies_tags_2,
+ sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2)
+ /sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_srnS_ContextRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2)
+ /sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_srnS_ContextRequest_ies_constr_2,
+ asn_MBR_srnS_ContextRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_srnS_ContextRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRNS_ContextRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRNS_ContextRequest, srnS_ContextRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_srnS_ContextRequest_ies_2,
+ memb_srnS_ContextRequest_ies_constraint_1,
+ &asn_PER_memb_srnS_ContextRequest_ies_constr_2,
+ 0,
+ "srnS-ContextRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRNS_ContextRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRNS_ContextRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srnS-ContextRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRNS_ContextRequest_specs_1 = {
+ sizeof(struct RANAP_SRNS_ContextRequest),
+ offsetof(struct RANAP_SRNS_ContextRequest, _asn_ctx),
+ asn_MAP_RANAP_SRNS_ContextRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_ContextRequest = {
+ "RANAP_SRNS-ContextRequest",
+ "RANAP_SRNS-ContextRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRNS_ContextRequest_tags_1,
+ sizeof(asn_DEF_RANAP_SRNS_ContextRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_ContextRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRNS_ContextRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRNS_ContextRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_ContextRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRNS_ContextRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SRNS_ContextRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRNS-ContextResponse.c b/src/ranap/RANAP_SRNS-ContextResponse.c
new file mode 100644
index 0000000..392ff04
--- /dev/null
+++ b/src/ranap/RANAP_SRNS-ContextResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRNS-ContextResponse.h>
+
+static int
+memb_srnS_ContextResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_srnS_ContextResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_srnS_ContextResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srnS_ContextResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_srnS_ContextResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srnS_ContextResponse_ies_specs_2 = {
+ sizeof(struct srnS_ContextResponse_ies),
+ offsetof(struct srnS_ContextResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srnS_ContextResponse_ies_2 = {
+ "srnS-ContextResponse-ies",
+ "srnS-ContextResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_srnS_ContextResponse_ies_tags_2,
+ sizeof(asn_DEF_srnS_ContextResponse_ies_tags_2)
+ /sizeof(asn_DEF_srnS_ContextResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_srnS_ContextResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_srnS_ContextResponse_ies_tags_2)
+ /sizeof(asn_DEF_srnS_ContextResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_srnS_ContextResponse_ies_constr_2,
+ asn_MBR_srnS_ContextResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_srnS_ContextResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRNS_ContextResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRNS_ContextResponse, srnS_ContextResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_srnS_ContextResponse_ies_2,
+ memb_srnS_ContextResponse_ies_constraint_1,
+ &asn_PER_memb_srnS_ContextResponse_ies_constr_2,
+ 0,
+ "srnS-ContextResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRNS_ContextResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRNS_ContextResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srnS-ContextResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRNS_ContextResponse_specs_1 = {
+ sizeof(struct RANAP_SRNS_ContextResponse),
+ offsetof(struct RANAP_SRNS_ContextResponse, _asn_ctx),
+ asn_MAP_RANAP_SRNS_ContextResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_ContextResponse = {
+ "RANAP_SRNS-ContextResponse",
+ "RANAP_SRNS-ContextResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRNS_ContextResponse_tags_1,
+ sizeof(asn_DEF_RANAP_SRNS_ContextResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_ContextResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRNS_ContextResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRNS_ContextResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_ContextResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRNS_ContextResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SRNS_ContextResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRNS-DataForwardCommand.c b/src/ranap/RANAP_SRNS-DataForwardCommand.c
new file mode 100644
index 0000000..8044a32
--- /dev/null
+++ b/src/ranap/RANAP_SRNS-DataForwardCommand.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRNS-DataForwardCommand.h>
+
+static int
+memb_srnS_DataForwardCommand_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_srnS_DataForwardCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_srnS_DataForwardCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srnS_DataForwardCommand_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_srnS_DataForwardCommand_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srnS_DataForwardCommand_ies_specs_2 = {
+ sizeof(struct srnS_DataForwardCommand_ies),
+ offsetof(struct srnS_DataForwardCommand_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srnS_DataForwardCommand_ies_2 = {
+ "srnS-DataForwardCommand-ies",
+ "srnS-DataForwardCommand-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_srnS_DataForwardCommand_ies_tags_2,
+ sizeof(asn_DEF_srnS_DataForwardCommand_ies_tags_2)
+ /sizeof(asn_DEF_srnS_DataForwardCommand_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_srnS_DataForwardCommand_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_srnS_DataForwardCommand_ies_tags_2)
+ /sizeof(asn_DEF_srnS_DataForwardCommand_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_srnS_DataForwardCommand_ies_constr_2,
+ asn_MBR_srnS_DataForwardCommand_ies_2,
+ 1, /* Single element */
+ &asn_SPC_srnS_DataForwardCommand_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRNS_DataForwardCommand_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRNS_DataForwardCommand, srnS_DataForwardCommand_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_srnS_DataForwardCommand_ies_2,
+ memb_srnS_DataForwardCommand_ies_constraint_1,
+ &asn_PER_memb_srnS_DataForwardCommand_ies_constr_2,
+ 0,
+ "srnS-DataForwardCommand-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRNS_DataForwardCommand_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srnS-DataForwardCommand-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRNS_DataForwardCommand_specs_1 = {
+ sizeof(struct RANAP_SRNS_DataForwardCommand),
+ offsetof(struct RANAP_SRNS_DataForwardCommand, _asn_ctx),
+ asn_MAP_RANAP_SRNS_DataForwardCommand_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRNS_DataForwardCommand = {
+ "RANAP_SRNS-DataForwardCommand",
+ "RANAP_SRNS-DataForwardCommand",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1,
+ sizeof(asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_SRNS_DataForwardCommand_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRNS_DataForwardCommand_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SRNS_DataForwardCommand_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRVCC-CSKeysRequest.c b/src/ranap/RANAP_SRVCC-CSKeysRequest.c
new file mode 100644
index 0000000..e7a6c14
--- /dev/null
+++ b/src/ranap/RANAP_SRVCC-CSKeysRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRVCC-CSKeysRequest.h>
+
+static int
+memb_srvcC_CSKeysRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_srvcC_CSKeysRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_srvcC_CSKeysRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srvcC_CSKeysRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_srvcC_CSKeysRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srvcC_CSKeysRequest_ies_specs_2 = {
+ sizeof(struct srvcC_CSKeysRequest_ies),
+ offsetof(struct srvcC_CSKeysRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srvcC_CSKeysRequest_ies_2 = {
+ "srvcC-CSKeysRequest-ies",
+ "srvcC-CSKeysRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_srvcC_CSKeysRequest_ies_tags_2,
+ sizeof(asn_DEF_srvcC_CSKeysRequest_ies_tags_2)
+ /sizeof(asn_DEF_srvcC_CSKeysRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_srvcC_CSKeysRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_srvcC_CSKeysRequest_ies_tags_2)
+ /sizeof(asn_DEF_srvcC_CSKeysRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_srvcC_CSKeysRequest_ies_constr_2,
+ asn_MBR_srvcC_CSKeysRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_srvcC_CSKeysRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRVCC_CSKeysRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRVCC_CSKeysRequest, srvcC_CSKeysRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_srvcC_CSKeysRequest_ies_2,
+ memb_srvcC_CSKeysRequest_ies_constraint_1,
+ &asn_PER_memb_srvcC_CSKeysRequest_ies_constr_2,
+ 0,
+ "srvcC-CSKeysRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRVCC_CSKeysRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srvcC-CSKeysRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRVCC_CSKeysRequest_specs_1 = {
+ sizeof(struct RANAP_SRVCC_CSKeysRequest),
+ offsetof(struct RANAP_SRVCC_CSKeysRequest, _asn_ctx),
+ asn_MAP_RANAP_SRVCC_CSKeysRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_CSKeysRequest = {
+ "RANAP_SRVCC-CSKeysRequest",
+ "RANAP_SRVCC-CSKeysRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1,
+ sizeof(asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_CSKeysRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRVCC_CSKeysRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SRVCC_CSKeysRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRVCC-CSKeysResponse.c b/src/ranap/RANAP_SRVCC-CSKeysResponse.c
new file mode 100644
index 0000000..c484f32
--- /dev/null
+++ b/src/ranap/RANAP_SRVCC-CSKeysResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRVCC-CSKeysResponse.h>
+
+static int
+memb_srvcC_CSKeysResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_srvcC_CSKeysResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_srvcC_CSKeysResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srvcC_CSKeysResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_srvcC_CSKeysResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srvcC_CSKeysResponse_ies_specs_2 = {
+ sizeof(struct srvcC_CSKeysResponse_ies),
+ offsetof(struct srvcC_CSKeysResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srvcC_CSKeysResponse_ies_2 = {
+ "srvcC-CSKeysResponse-ies",
+ "srvcC-CSKeysResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_srvcC_CSKeysResponse_ies_tags_2,
+ sizeof(asn_DEF_srvcC_CSKeysResponse_ies_tags_2)
+ /sizeof(asn_DEF_srvcC_CSKeysResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_srvcC_CSKeysResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_srvcC_CSKeysResponse_ies_tags_2)
+ /sizeof(asn_DEF_srvcC_CSKeysResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_srvcC_CSKeysResponse_ies_constr_2,
+ asn_MBR_srvcC_CSKeysResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_srvcC_CSKeysResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRVCC_CSKeysResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRVCC_CSKeysResponse, srvcC_CSKeysResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_srvcC_CSKeysResponse_ies_2,
+ memb_srvcC_CSKeysResponse_ies_constraint_1,
+ &asn_PER_memb_srvcC_CSKeysResponse_ies_constr_2,
+ 0,
+ "srvcC-CSKeysResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRVCC_CSKeysResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srvcC-CSKeysResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRVCC_CSKeysResponse_specs_1 = {
+ sizeof(struct RANAP_SRVCC_CSKeysResponse),
+ offsetof(struct RANAP_SRVCC_CSKeysResponse, _asn_ctx),
+ asn_MAP_RANAP_SRVCC_CSKeysResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_CSKeysResponse = {
+ "RANAP_SRVCC-CSKeysResponse",
+ "RANAP_SRVCC-CSKeysResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1,
+ sizeof(asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_CSKeysResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRVCC_CSKeysResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SRVCC_CSKeysResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRVCC-HO-Indication.c b/src/ranap/RANAP_SRVCC-HO-Indication.c
new file mode 100644
index 0000000..7c77cb7
--- /dev/null
+++ b/src/ranap/RANAP_SRVCC-HO-Indication.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRVCC-HO-Indication.h>
+
+int
+RANAP_SRVCC_HO_Indication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_SRVCC_HO_Indication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SRVCC_HO_Indication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_HO_Indication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_HO_Indication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_HO_Indication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_HO_Indication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_HO_Indication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_HO_Indication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_HO_Indication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_HO_Indication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRVCC_HO_Indication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SRVCC_HO_Indication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_SRVCC_HO_Indication_value2enum_1[] = {
+ { 0, 9, "ps-and-cs" },
+ { 1, 7, "cs-only" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_SRVCC_HO_Indication_enum2value_1[] = {
+ 1, /* cs-only(1) */
+ 0 /* ps-and-cs(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_SRVCC_HO_Indication_specs_1 = {
+ asn_MAP_RANAP_SRVCC_HO_Indication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_SRVCC_HO_Indication_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRVCC_HO_Indication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_HO_Indication = {
+ "RANAP_SRVCC-HO-Indication",
+ "RANAP_SRVCC-HO-Indication",
+ RANAP_SRVCC_HO_Indication_free,
+ RANAP_SRVCC_HO_Indication_print,
+ RANAP_SRVCC_HO_Indication_constraint,
+ RANAP_SRVCC_HO_Indication_decode_ber,
+ RANAP_SRVCC_HO_Indication_encode_der,
+ RANAP_SRVCC_HO_Indication_decode_xer,
+ RANAP_SRVCC_HO_Indication_encode_xer,
+ RANAP_SRVCC_HO_Indication_decode_uper,
+ RANAP_SRVCC_HO_Indication_encode_uper,
+ RANAP_SRVCC_HO_Indication_decode_aper,
+ RANAP_SRVCC_HO_Indication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRVCC_HO_Indication_tags_1,
+ sizeof(asn_DEF_RANAP_SRVCC_HO_Indication_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_HO_Indication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRVCC_HO_Indication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRVCC_HO_Indication_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_HO_Indication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SRVCC_HO_Indication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_SRVCC_HO_Indication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRVCC-Information.c b/src/ranap/RANAP_SRVCC-Information.c
new file mode 100644
index 0000000..bd781e0
--- /dev/null
+++ b/src/ranap/RANAP_SRVCC-Information.c
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRVCC-Information.h>
+
+static int
+memb_nonce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_nonce_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 128l, 128l } /* (SIZE(128..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SRVCC_Information_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SRVCC_Information, nonce),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_nonce_constraint_1,
+ &asn_PER_memb_nonce_constr_2,
+ 0,
+ "nonce"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SRVCC_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SRVCC_Information_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SRVCC_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRVCC_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nonce */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRVCC_Information_specs_1 = {
+ sizeof(struct RANAP_SRVCC_Information),
+ offsetof(struct RANAP_SRVCC_Information, _asn_ctx),
+ asn_MAP_RANAP_SRVCC_Information_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_SRVCC_Information_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_Information = {
+ "RANAP_SRVCC-Information",
+ "RANAP_SRVCC-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRVCC_Information_tags_1,
+ sizeof(asn_DEF_RANAP_SRVCC_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRVCC_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRVCC_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SRVCC_Information_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_SRVCC_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SRVCC-Operation-Possible.c b/src/ranap/RANAP_SRVCC-Operation-Possible.c
new file mode 100644
index 0000000..6473456
--- /dev/null
+++ b/src/ranap/RANAP_SRVCC-Operation-Possible.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SRVCC-Operation-Possible.h>
+
+int
+RANAP_SRVCC_Operation_Possible_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_SRVCC_Operation_Possible_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SRVCC_Operation_Possible_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_Operation_Possible_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_Operation_Possible_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_Operation_Possible_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_Operation_Possible_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_Operation_Possible_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_Operation_Possible_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SRVCC_Operation_Possible_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SRVCC_Operation_Possible_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SRVCC_Operation_Possible_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SRVCC_Operation_Possible_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_SRVCC_Operation_Possible_value2enum_1[] = {
+ { 0, 14, "srvcc-possible" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_SRVCC_Operation_Possible_enum2value_1[] = {
+ 0 /* srvcc-possible(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_SRVCC_Operation_Possible_specs_1 = {
+ asn_MAP_RANAP_SRVCC_Operation_Possible_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_SRVCC_Operation_Possible_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRVCC_Operation_Possible = {
+ "RANAP_SRVCC-Operation-Possible",
+ "RANAP_SRVCC-Operation-Possible",
+ RANAP_SRVCC_Operation_Possible_free,
+ RANAP_SRVCC_Operation_Possible_print,
+ RANAP_SRVCC_Operation_Possible_constraint,
+ RANAP_SRVCC_Operation_Possible_decode_ber,
+ RANAP_SRVCC_Operation_Possible_encode_der,
+ RANAP_SRVCC_Operation_Possible_decode_xer,
+ RANAP_SRVCC_Operation_Possible_encode_xer,
+ RANAP_SRVCC_Operation_Possible_decode_uper,
+ RANAP_SRVCC_Operation_Possible_encode_uper,
+ RANAP_SRVCC_Operation_Possible_decode_aper,
+ RANAP_SRVCC_Operation_Possible_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1,
+ sizeof(asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1)
+ /sizeof(asn_DEF_RANAP_SRVCC_Operation_Possible_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SRVCC_Operation_Possible_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_SRVCC_Operation_Possible_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SecurityModeCommand.c b/src/ranap/RANAP_SecurityModeCommand.c
new file mode 100644
index 0000000..b4eb8b1
--- /dev/null
+++ b/src/ranap/RANAP_SecurityModeCommand.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SecurityModeCommand.h>
+
+static int
+memb_securityModeCommand_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_securityModeCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_securityModeCommand_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_securityModeCommand_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_securityModeCommand_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_securityModeCommand_ies_specs_2 = {
+ sizeof(struct securityModeCommand_ies),
+ offsetof(struct securityModeCommand_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_securityModeCommand_ies_2 = {
+ "securityModeCommand-ies",
+ "securityModeCommand-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_securityModeCommand_ies_tags_2,
+ sizeof(asn_DEF_securityModeCommand_ies_tags_2)
+ /sizeof(asn_DEF_securityModeCommand_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_securityModeCommand_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_securityModeCommand_ies_tags_2)
+ /sizeof(asn_DEF_securityModeCommand_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_securityModeCommand_ies_constr_2,
+ asn_MBR_securityModeCommand_ies_2,
+ 1, /* Single element */
+ &asn_SPC_securityModeCommand_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SecurityModeCommand_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SecurityModeCommand, securityModeCommand_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_securityModeCommand_ies_2,
+ memb_securityModeCommand_ies_constraint_1,
+ &asn_PER_memb_securityModeCommand_ies_constr_2,
+ 0,
+ "securityModeCommand-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SecurityModeCommand_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SecurityModeCommand_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* securityModeCommand-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SecurityModeCommand_specs_1 = {
+ sizeof(struct RANAP_SecurityModeCommand),
+ offsetof(struct RANAP_SecurityModeCommand, _asn_ctx),
+ asn_MAP_RANAP_SecurityModeCommand_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeCommand = {
+ "RANAP_SecurityModeCommand",
+ "RANAP_SecurityModeCommand",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SecurityModeCommand_tags_1,
+ sizeof(asn_DEF_RANAP_SecurityModeCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeCommand_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SecurityModeCommand_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SecurityModeCommand_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeCommand_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SecurityModeCommand_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SecurityModeCommand_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SecurityModeComplete.c b/src/ranap/RANAP_SecurityModeComplete.c
new file mode 100644
index 0000000..36cf2bd
--- /dev/null
+++ b/src/ranap/RANAP_SecurityModeComplete.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SecurityModeComplete.h>
+
+static int
+memb_securityModeComplete_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_securityModeComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_securityModeComplete_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_securityModeComplete_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_securityModeComplete_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_securityModeComplete_ies_specs_2 = {
+ sizeof(struct securityModeComplete_ies),
+ offsetof(struct securityModeComplete_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_securityModeComplete_ies_2 = {
+ "securityModeComplete-ies",
+ "securityModeComplete-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_securityModeComplete_ies_tags_2,
+ sizeof(asn_DEF_securityModeComplete_ies_tags_2)
+ /sizeof(asn_DEF_securityModeComplete_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_securityModeComplete_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_securityModeComplete_ies_tags_2)
+ /sizeof(asn_DEF_securityModeComplete_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_securityModeComplete_ies_constr_2,
+ asn_MBR_securityModeComplete_ies_2,
+ 1, /* Single element */
+ &asn_SPC_securityModeComplete_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SecurityModeComplete_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SecurityModeComplete, securityModeComplete_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_securityModeComplete_ies_2,
+ memb_securityModeComplete_ies_constraint_1,
+ &asn_PER_memb_securityModeComplete_ies_constr_2,
+ 0,
+ "securityModeComplete-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SecurityModeComplete_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SecurityModeComplete_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* securityModeComplete-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SecurityModeComplete_specs_1 = {
+ sizeof(struct RANAP_SecurityModeComplete),
+ offsetof(struct RANAP_SecurityModeComplete, _asn_ctx),
+ asn_MAP_RANAP_SecurityModeComplete_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeComplete = {
+ "RANAP_SecurityModeComplete",
+ "RANAP_SecurityModeComplete",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SecurityModeComplete_tags_1,
+ sizeof(asn_DEF_RANAP_SecurityModeComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeComplete_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SecurityModeComplete_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SecurityModeComplete_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeComplete_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SecurityModeComplete_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SecurityModeComplete_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SecurityModeReject.c b/src/ranap/RANAP_SecurityModeReject.c
new file mode 100644
index 0000000..778d327
--- /dev/null
+++ b/src/ranap/RANAP_SecurityModeReject.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SecurityModeReject.h>
+
+static int
+memb_securityModeReject_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_securityModeReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_securityModeReject_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_securityModeReject_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_securityModeReject_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_securityModeReject_ies_specs_2 = {
+ sizeof(struct securityModeReject_ies),
+ offsetof(struct securityModeReject_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_securityModeReject_ies_2 = {
+ "securityModeReject-ies",
+ "securityModeReject-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_securityModeReject_ies_tags_2,
+ sizeof(asn_DEF_securityModeReject_ies_tags_2)
+ /sizeof(asn_DEF_securityModeReject_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_securityModeReject_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_securityModeReject_ies_tags_2)
+ /sizeof(asn_DEF_securityModeReject_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_securityModeReject_ies_constr_2,
+ asn_MBR_securityModeReject_ies_2,
+ 1, /* Single element */
+ &asn_SPC_securityModeReject_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_SecurityModeReject_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SecurityModeReject, securityModeReject_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_securityModeReject_ies_2,
+ memb_securityModeReject_ies_constraint_1,
+ &asn_PER_memb_securityModeReject_ies_constr_2,
+ 0,
+ "securityModeReject-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SecurityModeReject_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SecurityModeReject_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* securityModeReject-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SecurityModeReject_specs_1 = {
+ sizeof(struct RANAP_SecurityModeReject),
+ offsetof(struct RANAP_SecurityModeReject, _asn_ctx),
+ asn_MAP_RANAP_SecurityModeReject_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SecurityModeReject = {
+ "RANAP_SecurityModeReject",
+ "RANAP_SecurityModeReject",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SecurityModeReject_tags_1,
+ sizeof(asn_DEF_RANAP_SecurityModeReject_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeReject_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SecurityModeReject_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SecurityModeReject_tags_1)
+ /sizeof(asn_DEF_RANAP_SecurityModeReject_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SecurityModeReject_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_SecurityModeReject_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Service-Handover.c b/src/ranap/RANAP_Service-Handover.c
new file mode 100644
index 0000000..2acae33
--- /dev/null
+++ b/src/ranap/RANAP_Service-Handover.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Service-Handover.h>
+
+int
+RANAP_Service_Handover_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Service_Handover_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Service_Handover_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Service_Handover_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Service_Handover_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Service_Handover_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Service_Handover_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Service_Handover_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Service_Handover_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Service_Handover_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Service_Handover_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Service_Handover_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Service_Handover_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Service_Handover_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Service_Handover_value2enum_1[] = {
+ { 0, 35, "handover-to-GSM-should-be-performed" },
+ { 1, 39, "handover-to-GSM-should-not-be-performed" },
+ { 2, 38, "handover-to-GSM-shall-not-be-performed" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Service_Handover_enum2value_1[] = {
+ 2, /* handover-to-GSM-shall-not-be-performed(2) */
+ 0, /* handover-to-GSM-should-be-performed(0) */
+ 1 /* handover-to-GSM-should-not-be-performed(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Service_Handover_specs_1 = {
+ asn_MAP_RANAP_Service_Handover_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Service_Handover_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Service_Handover_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Service_Handover = {
+ "RANAP_Service-Handover",
+ "RANAP_Service-Handover",
+ RANAP_Service_Handover_free,
+ RANAP_Service_Handover_print,
+ RANAP_Service_Handover_constraint,
+ RANAP_Service_Handover_decode_ber,
+ RANAP_Service_Handover_encode_der,
+ RANAP_Service_Handover_decode_xer,
+ RANAP_Service_Handover_encode_xer,
+ RANAP_Service_Handover_decode_uper,
+ RANAP_Service_Handover_encode_uper,
+ RANAP_Service_Handover_decode_aper,
+ RANAP_Service_Handover_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Service_Handover_tags_1,
+ sizeof(asn_DEF_RANAP_Service_Handover_tags_1)
+ /sizeof(asn_DEF_RANAP_Service_Handover_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Service_Handover_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Service_Handover_tags_1)
+ /sizeof(asn_DEF_RANAP_Service_Handover_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Service_Handover_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Service_Handover_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Session-Re-establishment-Indicator.c b/src/ranap/RANAP_Session-Re-establishment-Indicator.c
new file mode 100644
index 0000000..1223002
--- /dev/null
+++ b/src/ranap/RANAP_Session-Re-establishment-Indicator.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Session-Re-establishment-Indicator.h>
+
+int
+RANAP_Session_Re_establishment_Indicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_Session_Re_establishment_Indicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Session_Re_establishment_Indicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Session_Re_establishment_Indicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Session_Re_establishment_Indicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Session_Re_establishment_Indicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Session_Re_establishment_Indicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Session_Re_establishment_Indicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Session_Re_establishment_Indicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Session_Re_establishment_Indicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Session_Re_establishment_Indicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Session_Re_establishment_Indicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Session_Re_establishment_Indicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_Session_Re_establishment_Indicator_value2enum_1[] = {
+ { 0, 4, "true" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_Session_Re_establishment_Indicator_enum2value_1[] = {
+ 0 /* true(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_Session_Re_establishment_Indicator_specs_1 = {
+ asn_MAP_RANAP_Session_Re_establishment_Indicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_Session_Re_establishment_Indicator_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Session_Re_establishment_Indicator = {
+ "RANAP_Session-Re-establishment-Indicator",
+ "RANAP_Session-Re-establishment-Indicator",
+ RANAP_Session_Re_establishment_Indicator_free,
+ RANAP_Session_Re_establishment_Indicator_print,
+ RANAP_Session_Re_establishment_Indicator_constraint,
+ RANAP_Session_Re_establishment_Indicator_decode_ber,
+ RANAP_Session_Re_establishment_Indicator_encode_der,
+ RANAP_Session_Re_establishment_Indicator_decode_xer,
+ RANAP_Session_Re_establishment_Indicator_encode_xer,
+ RANAP_Session_Re_establishment_Indicator_decode_uper,
+ RANAP_Session_Re_establishment_Indicator_encode_uper,
+ RANAP_Session_Re_establishment_Indicator_decode_aper,
+ RANAP_Session_Re_establishment_Indicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1,
+ sizeof(asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1)
+ /sizeof(asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1)
+ /sizeof(asn_DEF_RANAP_Session_Re_establishment_Indicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Session_Re_establishment_Indicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_Session_Re_establishment_Indicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SessionUpdateID.c b/src/ranap/RANAP_SessionUpdateID.c
new file mode 100644
index 0000000..2c5ade2
--- /dev/null
+++ b/src/ranap/RANAP_SessionUpdateID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SessionUpdateID.h>
+
+int
+RANAP_SessionUpdateID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 1048575l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SessionUpdateID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SessionUpdateID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SessionUpdateID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SessionUpdateID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SessionUpdateID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SessionUpdateID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SessionUpdateID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SessionUpdateID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SessionUpdateID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SessionUpdateID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SessionUpdateID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SessionUpdateID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 20, -1, 0l, 1048575l } /* (0..1048575) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SessionUpdateID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SessionUpdateID = {
+ "RANAP_SessionUpdateID",
+ "RANAP_SessionUpdateID",
+ RANAP_SessionUpdateID_free,
+ RANAP_SessionUpdateID_print,
+ RANAP_SessionUpdateID_constraint,
+ RANAP_SessionUpdateID_decode_ber,
+ RANAP_SessionUpdateID_encode_der,
+ RANAP_SessionUpdateID_decode_xer,
+ RANAP_SessionUpdateID_encode_xer,
+ RANAP_SessionUpdateID_decode_uper,
+ RANAP_SessionUpdateID_encode_uper,
+ RANAP_SessionUpdateID_decode_aper,
+ RANAP_SessionUpdateID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SessionUpdateID_tags_1,
+ sizeof(asn_DEF_RANAP_SessionUpdateID_tags_1)
+ /sizeof(asn_DEF_RANAP_SessionUpdateID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SessionUpdateID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SessionUpdateID_tags_1)
+ /sizeof(asn_DEF_RANAP_SessionUpdateID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SessionUpdateID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Shared-Network-Information.c b/src/ranap/RANAP_Shared-Network-Information.c
new file mode 100644
index 0000000..66ef42d
--- /dev/null
+++ b/src/ranap/RANAP_Shared-Network-Information.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Shared-Network-Information.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_Shared_Network_Information_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_Shared_Network_Information, pLMNs_in_shared_network),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNs_in_shared_network,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNs-in-shared-network"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_Shared_Network_Information, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_Shared_Network_Information_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_Shared_Network_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_Shared_Network_Information_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNs-in-shared-network */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_Shared_Network_Information_specs_1 = {
+ sizeof(struct RANAP_Shared_Network_Information),
+ offsetof(struct RANAP_Shared_Network_Information, _asn_ctx),
+ asn_MAP_RANAP_Shared_Network_Information_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_Shared_Network_Information_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Shared_Network_Information = {
+ "RANAP_Shared-Network-Information",
+ "RANAP_Shared-Network-Information",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Shared_Network_Information_tags_1,
+ sizeof(asn_DEF_RANAP_Shared_Network_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_Shared_Network_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Shared_Network_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Shared_Network_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_Shared_Network_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_Shared_Network_Information_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_Shared_Network_Information_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SignallingIndication.c b/src/ranap/RANAP_SignallingIndication.c
new file mode 100644
index 0000000..4f494a6
--- /dev/null
+++ b/src/ranap/RANAP_SignallingIndication.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SignallingIndication.h>
+
+int
+RANAP_SignallingIndication_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SignallingIndication_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_SignallingIndication_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SignallingIndication_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SignallingIndication_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SignallingIndication_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SignallingIndication_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SignallingIndication_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SignallingIndication_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SignallingIndication_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SignallingIndication_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SignallingIndication_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SignallingIndication_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SignallingIndication_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0l, 0l } /* (0..0,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_SignallingIndication_value2enum_1[] = {
+ { 0, 10, "signalling" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_SignallingIndication_enum2value_1[] = {
+ 0 /* signalling(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_SignallingIndication_specs_1 = {
+ asn_MAP_RANAP_SignallingIndication_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_SignallingIndication_enum2value_1, /* N => "tag"; sorted by N */
+ 1, /* Number of elements in the maps */
+ 2, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SignallingIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SignallingIndication = {
+ "RANAP_SignallingIndication",
+ "RANAP_SignallingIndication",
+ RANAP_SignallingIndication_free,
+ RANAP_SignallingIndication_print,
+ RANAP_SignallingIndication_constraint,
+ RANAP_SignallingIndication_decode_ber,
+ RANAP_SignallingIndication_encode_der,
+ RANAP_SignallingIndication_decode_xer,
+ RANAP_SignallingIndication_encode_xer,
+ RANAP_SignallingIndication_decode_uper,
+ RANAP_SignallingIndication_encode_uper,
+ RANAP_SignallingIndication_decode_aper,
+ RANAP_SignallingIndication_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SignallingIndication_tags_1,
+ sizeof(asn_DEF_RANAP_SignallingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_SignallingIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SignallingIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SignallingIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_SignallingIndication_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SignallingIndication_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_SignallingIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Source-ToTarget-TransparentContainer.c b/src/ranap/RANAP_Source-ToTarget-TransparentContainer.c
new file mode 100644
index 0000000..8831b93
--- /dev/null
+++ b/src/ranap/RANAP_Source-ToTarget-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Source-ToTarget-TransparentContainer.h>
+
+int
+RANAP_Source_ToTarget_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Source_ToTarget_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Source_ToTarget_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Source_ToTarget_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Source_ToTarget_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Source_ToTarget_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Source_ToTarget_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Source_ToTarget_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Source_ToTarget_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Source_ToTarget_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Source_ToTarget_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Source_ToTarget_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Source_ToTarget_TransparentContainer = {
+ "RANAP_Source-ToTarget-TransparentContainer",
+ "RANAP_Source-ToTarget-TransparentContainer",
+ RANAP_Source_ToTarget_TransparentContainer_free,
+ RANAP_Source_ToTarget_TransparentContainer_print,
+ RANAP_Source_ToTarget_TransparentContainer_constraint,
+ RANAP_Source_ToTarget_TransparentContainer_decode_ber,
+ RANAP_Source_ToTarget_TransparentContainer_encode_der,
+ RANAP_Source_ToTarget_TransparentContainer_decode_xer,
+ RANAP_Source_ToTarget_TransparentContainer_encode_xer,
+ RANAP_Source_ToTarget_TransparentContainer_decode_uper,
+ RANAP_Source_ToTarget_TransparentContainer_encode_uper,
+ RANAP_Source_ToTarget_TransparentContainer_decode_aper,
+ RANAP_Source_ToTarget_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_Source_ToTarget_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.c b/src/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.c
new file mode 100644
index 0000000..5f45db0
--- /dev/null
+++ b/src/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceBSS-ToTargetBSS-TransparentContainer.h>
+
+int
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer = {
+ "RANAP_SourceBSS-ToTargetBSS-TransparentContainer",
+ "RANAP_SourceBSS-ToTargetBSS-TransparentContainer",
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_free,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_print,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_constraint,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_der,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper,
+ RANAP_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SourceCellID.c b/src/ranap/RANAP_SourceCellID.c
new file mode 100644
index 0000000..888c8ee
--- /dev/null
+++ b/src/ranap/RANAP_SourceCellID.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceCellID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SourceCellID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SourceCellID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceCellID, choice.sourceUTRANCellID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SourceUTRANCellID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceUTRANCellID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceCellID, choice.sourceGERANCellID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceGERANCellID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SourceCellID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourceUTRANCellID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sourceGERANCellID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_SourceCellID_specs_1 = {
+ sizeof(struct RANAP_SourceCellID),
+ offsetof(struct RANAP_SourceCellID, _asn_ctx),
+ offsetof(struct RANAP_SourceCellID, present),
+ sizeof(((struct RANAP_SourceCellID *)0)->present),
+ asn_MAP_RANAP_SourceCellID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceCellID = {
+ "RANAP_SourceCellID",
+ "RANAP_SourceCellID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_SourceCellID_constr_1,
+ asn_MBR_RANAP_SourceCellID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_SourceCellID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceID.c b/src/ranap/RANAP_SourceID.c
new file mode 100644
index 0000000..71b6232
--- /dev/null
+++ b/src/ranap/RANAP_SourceID.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SourceID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SourceID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceID, choice.sourceRNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SourceRNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sourceRNC-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceID, choice.sAI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_SAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "sAI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SourceID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourceRNC-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sAI */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_SourceID_specs_1 = {
+ sizeof(struct RANAP_SourceID),
+ offsetof(struct RANAP_SourceID, _asn_ctx),
+ offsetof(struct RANAP_SourceID, present),
+ sizeof(((struct RANAP_SourceID *)0)->present),
+ asn_MAP_RANAP_SourceID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceID = {
+ "RANAP_SourceID",
+ "RANAP_SourceID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_SourceID_constr_1,
+ asn_MBR_RANAP_SourceID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_SourceID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceRNC-ID.c b/src/ranap/RANAP_SourceRNC-ID.c
new file mode 100644
index 0000000..759ec62
--- /dev/null
+++ b/src/ranap/RANAP_SourceRNC-ID.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceRNC-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SourceRNC_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceRNC_ID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceRNC_ID, rNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rNC-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SourceRNC_ID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SourceRNC_ID_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceRNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SourceRNC_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rNC-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SourceRNC_ID_specs_1 = {
+ sizeof(struct RANAP_SourceRNC_ID),
+ offsetof(struct RANAP_SourceRNC_ID, _asn_ctx),
+ asn_MAP_RANAP_SourceRNC_ID_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_SourceRNC_ID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceRNC_ID = {
+ "RANAP_SourceRNC-ID",
+ "RANAP_SourceRNC-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceRNC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_SourceRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceRNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceRNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceRNC_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SourceRNC_ID_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SourceRNC_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.c b/src/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.c
new file mode 100644
index 0000000..c3b3bac
--- /dev/null
+++ b/src/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.c
@@ -0,0 +1,183 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceRNC-ToTargetRNC-TransparentContainer.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, rRC_Container),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RRC_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rRC-Container"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, numberOfIuInstances),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_NumberOfIuInstances,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "numberOfIuInstances"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, relocationType),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RelocationType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "relocationType"
+ },
+ { ATF_POINTER, 10, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, chosenIntegrityProtectionAlgorithm),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ChosenIntegrityProtectionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "chosenIntegrityProtectionAlgorithm"
+ },
+ { ATF_POINTER, 9, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, integrityProtectionKey),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IntegrityProtectionKey,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "integrityProtectionKey"
+ },
+ { ATF_POINTER, 8, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, chosenEncryptionAlgorithForSignalling),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ChosenEncryptionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "chosenEncryptionAlgorithForSignalling"
+ },
+ { ATF_POINTER, 7, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, cipheringKey),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_EncryptionKey,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cipheringKey"
+ },
+ { ATF_POINTER, 6, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, chosenEncryptionAlgorithForCS),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ChosenEncryptionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "chosenEncryptionAlgorithForCS"
+ },
+ { ATF_POINTER, 5, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, chosenEncryptionAlgorithForPS),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ChosenEncryptionAlgorithm,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "chosenEncryptionAlgorithForPS"
+ },
+ { ATF_POINTER, 4, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, d_RNTI),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_D_RNTI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "d-RNTI"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, targetCellId),
+ (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetCellId,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "targetCellId"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, rAB_TrCH_Mapping),
+ (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAB_TrCH_Mapping,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAB-TrCH-Mapping"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_oms_1[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rRC-Container */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfIuInstances */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* relocationType */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* chosenIntegrityProtectionAlgorithm */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* integrityProtectionKey */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* chosenEncryptionAlgorithForSignalling */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* cipheringKey */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* chosenEncryptionAlgorithForCS */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* chosenEncryptionAlgorithForPS */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* d-RNTI */
+ { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* targetCellId */
+ { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* rAB-TrCH-Mapping */
+ { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_specs_1 = {
+ sizeof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer),
+ offsetof(struct RANAP_SourceRNC_ToTargetRNC_TransparentContainer, _asn_ctx),
+ asn_MAP_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tag2el_1,
+ 13, /* Count of tags in the map */
+ asn_MAP_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_oms_1, /* Optional members */
+ 10, 0, /* Root/Additions */
+ 12, /* Start extensions */
+ 14 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer = {
+ "RANAP_SourceRNC-ToTargetRNC-TransparentContainer",
+ "RANAP_SourceRNC-ToTargetRNC-TransparentContainer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_1,
+ 13, /* Elements count */
+ &asn_SPC_RANAP_SourceRNC_ToTargetRNC_TransparentContainer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceStatisticsDescriptor.c b/src/ranap/RANAP_SourceStatisticsDescriptor.c
new file mode 100644
index 0000000..d9a33f9
--- /dev/null
+++ b/src/ranap/RANAP_SourceStatisticsDescriptor.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceStatisticsDescriptor.h>
+
+int
+RANAP_SourceStatisticsDescriptor_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_SourceStatisticsDescriptor_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SourceStatisticsDescriptor_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceStatisticsDescriptor_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SourceStatisticsDescriptor_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceStatisticsDescriptor_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SourceStatisticsDescriptor_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceStatisticsDescriptor_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SourceStatisticsDescriptor_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SourceStatisticsDescriptor_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SourceStatisticsDescriptor_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceStatisticsDescriptor_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SourceStatisticsDescriptor_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_SourceStatisticsDescriptor_value2enum_1[] = {
+ { 0, 6, "speech" },
+ { 1, 7, "unknown" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_SourceStatisticsDescriptor_enum2value_1[] = {
+ 0, /* speech(0) */
+ 1 /* unknown(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_SourceStatisticsDescriptor_specs_1 = {
+ asn_MAP_RANAP_SourceStatisticsDescriptor_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_SourceStatisticsDescriptor_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceStatisticsDescriptor = {
+ "RANAP_SourceStatisticsDescriptor",
+ "RANAP_SourceStatisticsDescriptor",
+ RANAP_SourceStatisticsDescriptor_free,
+ RANAP_SourceStatisticsDescriptor_print,
+ RANAP_SourceStatisticsDescriptor_constraint,
+ RANAP_SourceStatisticsDescriptor_decode_ber,
+ RANAP_SourceStatisticsDescriptor_encode_der,
+ RANAP_SourceStatisticsDescriptor_decode_xer,
+ RANAP_SourceStatisticsDescriptor_encode_xer,
+ RANAP_SourceStatisticsDescriptor_decode_uper,
+ RANAP_SourceStatisticsDescriptor_encode_uper,
+ RANAP_SourceStatisticsDescriptor_decode_aper,
+ RANAP_SourceStatisticsDescriptor_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1,
+ sizeof(asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceStatisticsDescriptor_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SourceStatisticsDescriptor_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_SourceStatisticsDescriptor_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceUTRANCellID.c b/src/ranap/RANAP_SourceUTRANCellID.c
new file mode 100644
index 0000000..f4eee8f
--- /dev/null
+++ b/src/ranap/RANAP_SourceUTRANCellID.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceUTRANCellID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SourceUTRANCellID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceUTRANCellID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SourceUTRANCellID, uTRANcellID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetCellId,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uTRANcellID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_SourceUTRANCellID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_SourceUTRANCellID_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceUTRANCellID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SourceUTRANCellID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uTRANcellID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SourceUTRANCellID_specs_1 = {
+ sizeof(struct RANAP_SourceUTRANCellID),
+ offsetof(struct RANAP_SourceUTRANCellID, _asn_ctx),
+ asn_MAP_RANAP_SourceUTRANCellID_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_SourceUTRANCellID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceUTRANCellID = {
+ "RANAP_SourceUTRANCellID",
+ "RANAP_SourceUTRANCellID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceUTRANCellID_tags_1,
+ sizeof(asn_DEF_RANAP_SourceUTRANCellID_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceUTRANCellID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceUTRANCellID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceUTRANCellID_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceUTRANCellID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SourceUTRANCellID_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SourceUTRANCellID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.c b/src/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.c
new file mode 100644
index 0000000..1da35fe
--- /dev/null
+++ b/src/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer.h>
+
+int
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer = {
+ "RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer",
+ "RANAP_SourceeNodeB-ToTargeteNodeB-TransparentContainer",
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_free,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_print,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_constraint,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_ber,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_der,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_xer,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_xer,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_uper,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_uper,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_decode_aper,
+ RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_SourceeNodeB_ToTargeteNodeB_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SubflowSDU-Size.c b/src/ranap/RANAP_SubflowSDU-Size.c
new file mode 100644
index 0000000..36282df
--- /dev/null
+++ b/src/ranap/RANAP_SubflowSDU-Size.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SubflowSDU-Size.h>
+
+int
+RANAP_SubflowSDU_Size_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 4095l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SubflowSDU_Size_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SubflowSDU_Size_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubflowSDU_Size_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SubflowSDU_Size_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubflowSDU_Size_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SubflowSDU_Size_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubflowSDU_Size_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SubflowSDU_Size_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SubflowSDU_Size_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SubflowSDU_Size_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SubflowSDU_Size_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SubflowSDU_Size_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (0..4095) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SubflowSDU_Size_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SubflowSDU_Size = {
+ "RANAP_SubflowSDU-Size",
+ "RANAP_SubflowSDU-Size",
+ RANAP_SubflowSDU_Size_free,
+ RANAP_SubflowSDU_Size_print,
+ RANAP_SubflowSDU_Size_constraint,
+ RANAP_SubflowSDU_Size_decode_ber,
+ RANAP_SubflowSDU_Size_encode_der,
+ RANAP_SubflowSDU_Size_decode_xer,
+ RANAP_SubflowSDU_Size_encode_xer,
+ RANAP_SubflowSDU_Size_decode_uper,
+ RANAP_SubflowSDU_Size_encode_uper,
+ RANAP_SubflowSDU_Size_decode_aper,
+ RANAP_SubflowSDU_Size_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SubflowSDU_Size_tags_1,
+ sizeof(asn_DEF_RANAP_SubflowSDU_Size_tags_1)
+ /sizeof(asn_DEF_RANAP_SubflowSDU_Size_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SubflowSDU_Size_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SubflowSDU_Size_tags_1)
+ /sizeof(asn_DEF_RANAP_SubflowSDU_Size_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SubflowSDU_Size_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SubscriberProfileIDforRFP.c b/src/ranap/RANAP_SubscriberProfileIDforRFP.c
new file mode 100644
index 0000000..afda7a5
--- /dev/null
+++ b/src/ranap/RANAP_SubscriberProfileIDforRFP.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SubscriberProfileIDforRFP.h>
+
+int
+RANAP_SubscriberProfileIDforRFP_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 256l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SubscriberProfileIDforRFP_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SubscriberProfileIDforRFP_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubscriberProfileIDforRFP_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SubscriberProfileIDforRFP_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubscriberProfileIDforRFP_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SubscriberProfileIDforRFP_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SubscriberProfileIDforRFP_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SubscriberProfileIDforRFP_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SubscriberProfileIDforRFP_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SubscriberProfileIDforRFP_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SubscriberProfileIDforRFP_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SubscriberProfileIDforRFP_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (1..256) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SubscriberProfileIDforRFP = {
+ "RANAP_SubscriberProfileIDforRFP",
+ "RANAP_SubscriberProfileIDforRFP",
+ RANAP_SubscriberProfileIDforRFP_free,
+ RANAP_SubscriberProfileIDforRFP_print,
+ RANAP_SubscriberProfileIDforRFP_constraint,
+ RANAP_SubscriberProfileIDforRFP_decode_ber,
+ RANAP_SubscriberProfileIDforRFP_encode_der,
+ RANAP_SubscriberProfileIDforRFP_decode_xer,
+ RANAP_SubscriberProfileIDforRFP_encode_xer,
+ RANAP_SubscriberProfileIDforRFP_decode_uper,
+ RANAP_SubscriberProfileIDforRFP_encode_uper,
+ RANAP_SubscriberProfileIDforRFP_decode_aper,
+ RANAP_SubscriberProfileIDforRFP_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1,
+ sizeof(asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1)
+ /sizeof(asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1)
+ /sizeof(asn_DEF_RANAP_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SubscriberProfileIDforRFP_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SuccessfulOutcome.c b/src/ranap/RANAP_SuccessfulOutcome.c
new file mode 100644
index 0000000..4becadb
--- /dev/null
+++ b/src/ranap/RANAP_SuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_SuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_SuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SuccessfulOutcome_specs_1 = {
+ sizeof(struct RANAP_SuccessfulOutcome),
+ offsetof(struct RANAP_SuccessfulOutcome, _asn_ctx),
+ asn_MAP_RANAP_SuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SuccessfulOutcome = {
+ "RANAP_SuccessfulOutcome",
+ "RANAP_SuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_RANAP_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RANAP_SuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RANAP_SuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_SuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_SuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_SupportedBitrate.c b/src/ranap/RANAP_SupportedBitrate.c
new file mode 100644
index 0000000..8e7ae21
--- /dev/null
+++ b/src/ranap/RANAP_SupportedBitrate.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SupportedBitrate.h>
+
+int
+RANAP_SupportedBitrate_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 1000000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_SupportedBitrate_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_SupportedBitrate_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SupportedBitrate_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_SupportedBitrate_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SupportedBitrate_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_SupportedBitrate_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_SupportedBitrate_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_SupportedBitrate_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_SupportedBitrate_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_SupportedBitrate_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_SupportedBitrate_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_SupportedBitrate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 1l, 1000000000l } /* (1..1000000000,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SupportedBitrate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SupportedBitrate = {
+ "RANAP_SupportedBitrate",
+ "RANAP_SupportedBitrate",
+ RANAP_SupportedBitrate_free,
+ RANAP_SupportedBitrate_print,
+ RANAP_SupportedBitrate_constraint,
+ RANAP_SupportedBitrate_decode_ber,
+ RANAP_SupportedBitrate_encode_der,
+ RANAP_SupportedBitrate_decode_xer,
+ RANAP_SupportedBitrate_encode_xer,
+ RANAP_SupportedBitrate_decode_uper,
+ RANAP_SupportedBitrate_encode_uper,
+ RANAP_SupportedBitrate_decode_aper,
+ RANAP_SupportedBitrate_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SupportedBitrate_tags_1,
+ sizeof(asn_DEF_RANAP_SupportedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_SupportedBitrate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SupportedBitrate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SupportedBitrate_tags_1)
+ /sizeof(asn_DEF_RANAP_SupportedBitrate_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SupportedBitrate_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_SupportedRAB-ParameterBitrateList.c b/src/ranap/RANAP_SupportedRAB-ParameterBitrateList.c
new file mode 100644
index 0000000..f2056d9
--- /dev/null
+++ b/src/ranap/RANAP_SupportedRAB-ParameterBitrateList.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_SupportedRAB-ParameterBitrateList.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_SupportedRAB_ParameterBitrateList_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 1l, 2l } /* (SIZE(1..2)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_SupportedRAB_ParameterBitrateList_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_SupportedBitrate,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_SupportedRAB_ParameterBitrateList_specs_1 = {
+ sizeof(struct RANAP_SupportedRAB_ParameterBitrateList),
+ offsetof(struct RANAP_SupportedRAB_ParameterBitrateList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SupportedRAB_ParameterBitrateList = {
+ "RANAP_SupportedRAB-ParameterBitrateList",
+ "RANAP_SupportedRAB-ParameterBitrateList",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1,
+ sizeof(asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1)
+ /sizeof(asn_DEF_RANAP_SupportedRAB_ParameterBitrateList_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_SupportedRAB_ParameterBitrateList_constr_1,
+ asn_MBR_RANAP_SupportedRAB_ParameterBitrateList_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_SupportedRAB_ParameterBitrateList_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TAC.c b/src/ranap/RANAP_TAC.c
new file mode 100644
index 0000000..0987350
--- /dev/null
+++ b/src/ranap/RANAP_TAC.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TAC.h>
+
+int
+RANAP_TAC_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TAC_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TAC_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TAC_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TAC_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TAC_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TAC_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TAC_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TAC_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TAC_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TAC_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TAC_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TAC_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TAC_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2l, 2l } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TAC_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TAC = {
+ "RANAP_TAC",
+ "RANAP_TAC",
+ RANAP_TAC_free,
+ RANAP_TAC_print,
+ RANAP_TAC_constraint,
+ RANAP_TAC_decode_ber,
+ RANAP_TAC_encode_der,
+ RANAP_TAC_decode_xer,
+ RANAP_TAC_encode_xer,
+ RANAP_TAC_decode_uper,
+ RANAP_TAC_encode_uper,
+ RANAP_TAC_decode_aper,
+ RANAP_TAC_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TAC_tags_1,
+ sizeof(asn_DEF_RANAP_TAC_tags_1)
+ /sizeof(asn_DEF_RANAP_TAC_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TAC_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TAC_tags_1)
+ /sizeof(asn_DEF_RANAP_TAC_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TAC_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TAI.c b/src/ranap/RANAP_TAI.c
new file mode 100644
index 0000000..f1e62ba
--- /dev/null
+++ b/src/ranap/RANAP_TAI.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TAI.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TAI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TAI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TAI, tAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tAC"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TAI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TAI_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TAI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TAI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TAI_specs_1 = {
+ sizeof(struct RANAP_TAI),
+ offsetof(struct RANAP_TAI, _asn_ctx),
+ asn_MAP_RANAP_TAI_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TAI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TAI = {
+ "RANAP_TAI",
+ "RANAP_TAI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TAI_tags_1,
+ sizeof(asn_DEF_RANAP_TAI_tags_1)
+ /sizeof(asn_DEF_RANAP_TAI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TAI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TAI_tags_1)
+ /sizeof(asn_DEF_RANAP_TAI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TAI_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TAI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TBCD-STRING.c b/src/ranap/RANAP_TBCD-STRING.c
new file mode 100644
index 0000000..2a42138
--- /dev/null
+++ b/src/ranap/RANAP_TBCD-STRING.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TBCD-STRING.h>
+
+int
+RANAP_TBCD_STRING_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TBCD_STRING_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TBCD_STRING_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TBCD_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TBCD_STRING_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TBCD_STRING_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TBCD_STRING_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TBCD_STRING_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TBCD_STRING_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TBCD_STRING_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TBCD_STRING_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TBCD_STRING_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_TBCD_STRING_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TBCD_STRING = {
+ "RANAP_TBCD-STRING",
+ "RANAP_TBCD-STRING",
+ RANAP_TBCD_STRING_free,
+ RANAP_TBCD_STRING_print,
+ RANAP_TBCD_STRING_constraint,
+ RANAP_TBCD_STRING_decode_ber,
+ RANAP_TBCD_STRING_encode_der,
+ RANAP_TBCD_STRING_decode_xer,
+ RANAP_TBCD_STRING_encode_xer,
+ RANAP_TBCD_STRING_decode_uper,
+ RANAP_TBCD_STRING_encode_uper,
+ RANAP_TBCD_STRING_decode_aper,
+ RANAP_TBCD_STRING_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TBCD_STRING_tags_1,
+ sizeof(asn_DEF_RANAP_TBCD_STRING_tags_1)
+ /sizeof(asn_DEF_RANAP_TBCD_STRING_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TBCD_STRING_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TBCD_STRING_tags_1)
+ /sizeof(asn_DEF_RANAP_TBCD_STRING_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TMGI.c b/src/ranap/RANAP_TMGI.c
new file mode 100644
index 0000000..07d1d68
--- /dev/null
+++ b/src/ranap/RANAP_TMGI.c
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TMGI.h>
+
+static int
+memb_serviceID_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_serviceID_constr_3 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 3l, 3l } /* (SIZE(3..3)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_TMGI_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TMGI, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TMGI, serviceID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OCTET_STRING,
+ memb_serviceID_constraint_1,
+ &asn_PER_memb_serviceID_constr_3,
+ 0,
+ "serviceID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TMGI, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TMGI_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TMGI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TMGI_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serviceID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TMGI_specs_1 = {
+ sizeof(struct RANAP_TMGI),
+ offsetof(struct RANAP_TMGI, _asn_ctx),
+ asn_MAP_RANAP_TMGI_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TMGI_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TMGI = {
+ "RANAP_TMGI",
+ "RANAP_TMGI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TMGI_tags_1,
+ sizeof(asn_DEF_RANAP_TMGI_tags_1)
+ /sizeof(asn_DEF_RANAP_TMGI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TMGI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TMGI_tags_1)
+ /sizeof(asn_DEF_RANAP_TMGI_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TMGI_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TMGI_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TMSI.c b/src/ranap/RANAP_TMSI.c
new file mode 100644
index 0000000..57b02cf
--- /dev/null
+++ b/src/ranap/RANAP_TMSI.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TMSI.h>
+
+int
+RANAP_TMSI_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 4l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TMSI_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TMSI_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TMSI_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TMSI_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TMSI_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TMSI_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TMSI_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TMSI_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TMSI_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TMSI_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TMSI_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TMSI_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TMSI_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 4l, 4l } /* (SIZE(4..4)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TMSI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TMSI = {
+ "RANAP_TMSI",
+ "RANAP_TMSI",
+ RANAP_TMSI_free,
+ RANAP_TMSI_print,
+ RANAP_TMSI_constraint,
+ RANAP_TMSI_decode_ber,
+ RANAP_TMSI_encode_der,
+ RANAP_TMSI_decode_xer,
+ RANAP_TMSI_encode_xer,
+ RANAP_TMSI_decode_uper,
+ RANAP_TMSI_encode_uper,
+ RANAP_TMSI_decode_aper,
+ RANAP_TMSI_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TMSI_tags_1,
+ sizeof(asn_DEF_RANAP_TMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_TMSI_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TMSI_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TMSI_tags_1)
+ /sizeof(asn_DEF_RANAP_TMSI_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TMSI_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TNLInformationEnhRelInfoReq.c b/src/ranap/RANAP_TNLInformationEnhRelInfoReq.c
new file mode 100644
index 0000000..1a62c74
--- /dev/null
+++ b/src/ranap/RANAP_TNLInformationEnhRelInfoReq.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoReq.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TNLInformationEnhRelInfoReq_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TNLInformationEnhRelInfoReq, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TNLInformationEnhRelInfoReq, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TNLInformationEnhRelInfoReq, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TNLInformationEnhRelInfoReq_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TNLInformationEnhRelInfoReq_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TNLInformationEnhRelInfoReq_specs_1 = {
+ sizeof(struct RANAP_TNLInformationEnhRelInfoReq),
+ offsetof(struct RANAP_TNLInformationEnhRelInfoReq, _asn_ctx),
+ asn_MAP_RANAP_TNLInformationEnhRelInfoReq_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TNLInformationEnhRelInfoReq_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TNLInformationEnhRelInfoReq = {
+ "RANAP_TNLInformationEnhRelInfoReq",
+ "RANAP_TNLInformationEnhRelInfoReq",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1,
+ sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1)
+ /sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoReq_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TNLInformationEnhRelInfoReq_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TNLInformationEnhRelInfoReq_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TNLInformationEnhRelInfoRes.c b/src/ranap/RANAP_TNLInformationEnhRelInfoRes.c
new file mode 100644
index 0000000..ab09d87
--- /dev/null
+++ b/src/ranap/RANAP_TNLInformationEnhRelInfoRes.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TNLInformationEnhRelInfoRes.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TNLInformationEnhRelInfoRes_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TNLInformationEnhRelInfoRes, dl_forwardingTransportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-forwardingTransportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TNLInformationEnhRelInfoRes, dl_forwardingTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dl-forwardingTransportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TNLInformationEnhRelInfoRes, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TNLInformationEnhRelInfoRes_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TNLInformationEnhRelInfoRes_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-forwardingTransportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-forwardingTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TNLInformationEnhRelInfoRes_specs_1 = {
+ sizeof(struct RANAP_TNLInformationEnhRelInfoRes),
+ offsetof(struct RANAP_TNLInformationEnhRelInfoRes, _asn_ctx),
+ asn_MAP_RANAP_TNLInformationEnhRelInfoRes_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TNLInformationEnhRelInfoRes_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TNLInformationEnhRelInfoRes = {
+ "RANAP_TNLInformationEnhRelInfoRes",
+ "RANAP_TNLInformationEnhRelInfoRes",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1,
+ sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1)
+ /sizeof(asn_DEF_RANAP_TNLInformationEnhRelInfoRes_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TNLInformationEnhRelInfoRes_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TNLInformationEnhRelInfoRes_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Target-ToSource-TransparentContainer.c b/src/ranap/RANAP_Target-ToSource-TransparentContainer.c
new file mode 100644
index 0000000..f3964cd
--- /dev/null
+++ b/src/ranap/RANAP_Target-ToSource-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Target-ToSource-TransparentContainer.h>
+
+int
+RANAP_Target_ToSource_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_Target_ToSource_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Target_ToSource_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Target_ToSource_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Target_ToSource_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Target_ToSource_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Target_ToSource_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Target_ToSource_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Target_ToSource_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Target_ToSource_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Target_ToSource_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Target_ToSource_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Target_ToSource_TransparentContainer = {
+ "RANAP_Target-ToSource-TransparentContainer",
+ "RANAP_Target-ToSource-TransparentContainer",
+ RANAP_Target_ToSource_TransparentContainer_free,
+ RANAP_Target_ToSource_TransparentContainer_print,
+ RANAP_Target_ToSource_TransparentContainer_constraint,
+ RANAP_Target_ToSource_TransparentContainer_decode_ber,
+ RANAP_Target_ToSource_TransparentContainer_encode_der,
+ RANAP_Target_ToSource_TransparentContainer_decode_xer,
+ RANAP_Target_ToSource_TransparentContainer_encode_xer,
+ RANAP_Target_ToSource_TransparentContainer_decode_uper,
+ RANAP_Target_ToSource_TransparentContainer_encode_uper,
+ RANAP_Target_ToSource_TransparentContainer_decode_aper,
+ RANAP_Target_ToSource_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_Target_ToSource_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.c b/src/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.c
new file mode 100644
index 0000000..a0fc0b7
--- /dev/null
+++ b/src/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetBSS-ToSourceBSS-TransparentContainer.h>
+
+int
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer = {
+ "RANAP_TargetBSS-ToSourceBSS-TransparentContainer",
+ "RANAP_TargetBSS-ToSourceBSS-TransparentContainer",
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_free,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_print,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_constraint,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_der,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper,
+ RANAP_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TargetCellId.c b/src/ranap/RANAP_TargetCellId.c
new file mode 100644
index 0000000..9f8bcb1
--- /dev/null
+++ b/src/ranap/RANAP_TargetCellId.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetCellId.h>
+
+int
+RANAP_TargetCellId_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 268435455l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TargetCellId_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_TargetCellId_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TargetCellId_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetCellId_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TargetCellId_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetCellId_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TargetCellId_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargetCellId_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TargetCellId_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TargetCellId_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TargetCellId_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargetCellId_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TargetCellId_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 28, -1, 0l, 268435455l } /* (0..268435455) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TargetCellId_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetCellId = {
+ "RANAP_TargetCellId",
+ "RANAP_TargetCellId",
+ RANAP_TargetCellId_free,
+ RANAP_TargetCellId_print,
+ RANAP_TargetCellId_constraint,
+ RANAP_TargetCellId_decode_ber,
+ RANAP_TargetCellId_encode_der,
+ RANAP_TargetCellId_decode_xer,
+ RANAP_TargetCellId_encode_xer,
+ RANAP_TargetCellId_decode_uper,
+ RANAP_TargetCellId_encode_uper,
+ RANAP_TargetCellId_decode_aper,
+ RANAP_TargetCellId_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargetCellId_tags_1,
+ sizeof(asn_DEF_RANAP_TargetCellId_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetCellId_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargetCellId_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargetCellId_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetCellId_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TargetCellId_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TargetENB-ID.c b/src/ranap/RANAP_TargetENB-ID.c
new file mode 100644
index 0000000..7df701f
--- /dev/null
+++ b/src/ranap/RANAP_TargetENB-ID.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetENB-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TargetENB_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetENB_ID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetENB_ID, eNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_ENB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "eNB-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TargetENB_ID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetENB_ID, selectedTAI),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "selectedTAI"
+ },
+};
+static const int asn_MAP_RANAP_TargetENB_ID_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TargetENB_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TargetENB_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* iE-Extensions */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* selectedTAI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TargetENB_ID_specs_1 = {
+ sizeof(struct RANAP_TargetENB_ID),
+ offsetof(struct RANAP_TargetENB_ID, _asn_ctx),
+ asn_MAP_RANAP_TargetENB_ID_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_TargetENB_ID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetENB_ID = {
+ "RANAP_TargetENB-ID",
+ "RANAP_TargetENB-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargetENB_ID_tags_1,
+ sizeof(asn_DEF_RANAP_TargetENB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetENB_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargetENB_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargetENB_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetENB_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TargetENB_ID_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_TargetENB_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TargetID.c b/src/ranap/RANAP_TargetID.c
new file mode 100644
index 0000000..5d27376
--- /dev/null
+++ b/src/ranap/RANAP_TargetID.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_TargetID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_TargetID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetID, choice.targetRNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetRNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "targetRNC-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetID, choice.cGI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_CGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetID, choice.targeteNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetENB_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "targeteNB-ID"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TargetID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* targetRNC-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cGI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* targeteNB-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_TargetID_specs_1 = {
+ sizeof(struct RANAP_TargetID),
+ offsetof(struct RANAP_TargetID, _asn_ctx),
+ offsetof(struct RANAP_TargetID, present),
+ sizeof(((struct RANAP_TargetID *)0)->present),
+ asn_MAP_RANAP_TargetID_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetID = {
+ "RANAP_TargetID",
+ "RANAP_TargetID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_TargetID_constr_1,
+ asn_MBR_RANAP_TargetID_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TargetID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TargetRNC-ID.c b/src/ranap/RANAP_TargetRNC-ID.c
new file mode 100644
index 0000000..ef48c54
--- /dev/null
+++ b/src/ranap/RANAP_TargetRNC-ID.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetRNC-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TargetRNC_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetRNC_ID, lAI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_LAI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "lAI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TargetRNC_ID, rAC),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RAC,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rAC"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetRNC_ID, rNC_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RNC_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rNC-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TargetRNC_ID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TargetRNC_ID_oms_1[] = { 1, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TargetRNC_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TargetRNC_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rNC-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TargetRNC_ID_specs_1 = {
+ sizeof(struct RANAP_TargetRNC_ID),
+ offsetof(struct RANAP_TargetRNC_ID, _asn_ctx),
+ asn_MAP_RANAP_TargetRNC_ID_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_TargetRNC_ID_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetRNC_ID = {
+ "RANAP_TargetRNC-ID",
+ "RANAP_TargetRNC-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargetRNC_ID_tags_1,
+ sizeof(asn_DEF_RANAP_TargetRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetRNC_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargetRNC_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargetRNC_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetRNC_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TargetRNC_ID_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_TargetRNC_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.c b/src/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.c
new file mode 100644
index 0000000..c192beb
--- /dev/null
+++ b/src/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargetRNC-ToSourceRNC-TransparentContainer.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer, rRC_Container),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_RRC_Container,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "rRC-Container"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer, d_RNTI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_D_RNTI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "d-RNTI"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rRC-Container */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* d-RNTI */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_specs_1 = {
+ sizeof(struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer),
+ offsetof(struct RANAP_TargetRNC_ToSourceRNC_TransparentContainer, _asn_ctx),
+ asn_MAP_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer = {
+ "RANAP_TargetRNC-ToSourceRNC-TransparentContainer",
+ "RANAP_TargetRNC-ToSourceRNC-TransparentContainer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TargetRNC_ToSourceRNC_TransparentContainer_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.c b/src/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.c
new file mode 100644
index 0000000..715b992
--- /dev/null
+++ b/src/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer.h>
+
+int
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer = {
+ "RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer",
+ "RANAP_TargeteNodeB-ToSourceeNodeB-TransparentContainer",
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_free,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_print,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_constraint,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_ber,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_der,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_xer,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_xer,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_uper,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_uper,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_decode_aper,
+ RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1,
+ sizeof(asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1)
+ /sizeof(asn_DEF_RANAP_TargeteNodeB_ToSourceeNodeB_TransparentContainer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TemporaryUE-ID.c b/src/ranap/RANAP_TemporaryUE-ID.c
new file mode 100644
index 0000000..9cde280
--- /dev/null
+++ b/src/ranap/RANAP_TemporaryUE-ID.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TemporaryUE-ID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_TemporaryUE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_TemporaryUE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TemporaryUE_ID, choice.tMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMSI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TemporaryUE_ID, choice.p_TMSI),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_P_TMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "p-TMSI"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TemporaryUE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMSI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* p-TMSI */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_TemporaryUE_ID_specs_1 = {
+ sizeof(struct RANAP_TemporaryUE_ID),
+ offsetof(struct RANAP_TemporaryUE_ID, _asn_ctx),
+ offsetof(struct RANAP_TemporaryUE_ID, present),
+ sizeof(((struct RANAP_TemporaryUE_ID *)0)->present),
+ asn_MAP_RANAP_TemporaryUE_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TemporaryUE_ID = {
+ "RANAP_TemporaryUE-ID",
+ "RANAP_TemporaryUE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_TemporaryUE_ID_constr_1,
+ asn_MBR_RANAP_TemporaryUE_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_TemporaryUE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.c b/src/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.c
new file mode 100644
index 0000000..1291b93
--- /dev/null
+++ b/src/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Time-UE-StayedInCell-EnhancedGranularity.h>
+
+int
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 40950l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Time_UE_StayedInCell_EnhancedGranularity_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 40950l } /* (0..40950) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity = {
+ "RANAP_Time-UE-StayedInCell-EnhancedGranularity",
+ "RANAP_Time-UE-StayedInCell-EnhancedGranularity",
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_free,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_print,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_constraint,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_ber,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_der,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_xer,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_xer,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_uper,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_uper,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_decode_aper,
+ RANAP_Time_UE_StayedInCell_EnhancedGranularity_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1,
+ sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1)
+ /sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1)
+ /sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Time_UE_StayedInCell_EnhancedGranularity_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_Time-UE-StayedInCell.c b/src/ranap/RANAP_Time-UE-StayedInCell.c
new file mode 100644
index 0000000..1ac324f
--- /dev/null
+++ b/src/ranap/RANAP_Time-UE-StayedInCell.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_Time-UE-StayedInCell.h>
+
+int
+RANAP_Time_UE_StayedInCell_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 4095l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_Time_UE_StayedInCell_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_Time_UE_StayedInCell_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_Time_UE_StayedInCell_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_Time_UE_StayedInCell_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_Time_UE_StayedInCell_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_Time_UE_StayedInCell_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 12, 12, 0l, 4095l } /* (0..4095) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_Time_UE_StayedInCell_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_Time_UE_StayedInCell = {
+ "RANAP_Time-UE-StayedInCell",
+ "RANAP_Time-UE-StayedInCell",
+ RANAP_Time_UE_StayedInCell_free,
+ RANAP_Time_UE_StayedInCell_print,
+ RANAP_Time_UE_StayedInCell_constraint,
+ RANAP_Time_UE_StayedInCell_decode_ber,
+ RANAP_Time_UE_StayedInCell_encode_der,
+ RANAP_Time_UE_StayedInCell_decode_xer,
+ RANAP_Time_UE_StayedInCell_encode_xer,
+ RANAP_Time_UE_StayedInCell_decode_uper,
+ RANAP_Time_UE_StayedInCell_encode_uper,
+ RANAP_Time_UE_StayedInCell_decode_aper,
+ RANAP_Time_UE_StayedInCell_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_Time_UE_StayedInCell_tags_1,
+ sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_tags_1)
+ /sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_Time_UE_StayedInCell_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_tags_1)
+ /sizeof(asn_DEF_RANAP_Time_UE_StayedInCell_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_Time_UE_StayedInCell_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TimeToMBMSDataTransfer.c b/src/ranap/RANAP_TimeToMBMSDataTransfer.c
new file mode 100644
index 0000000..7108dbd
--- /dev/null
+++ b/src/ranap/RANAP_TimeToMBMSDataTransfer.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TimeToMBMSDataTransfer.h>
+
+int
+RANAP_TimeToMBMSDataTransfer_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TimeToMBMSDataTransfer_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TimeToMBMSDataTransfer_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimeToMBMSDataTransfer_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TimeToMBMSDataTransfer_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimeToMBMSDataTransfer_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TimeToMBMSDataTransfer_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimeToMBMSDataTransfer_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TimeToMBMSDataTransfer_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TimeToMBMSDataTransfer_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TimeToMBMSDataTransfer_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TimeToMBMSDataTransfer_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TimeToMBMSDataTransfer_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TimeToMBMSDataTransfer = {
+ "RANAP_TimeToMBMSDataTransfer",
+ "RANAP_TimeToMBMSDataTransfer",
+ RANAP_TimeToMBMSDataTransfer_free,
+ RANAP_TimeToMBMSDataTransfer_print,
+ RANAP_TimeToMBMSDataTransfer_constraint,
+ RANAP_TimeToMBMSDataTransfer_decode_ber,
+ RANAP_TimeToMBMSDataTransfer_encode_der,
+ RANAP_TimeToMBMSDataTransfer_decode_xer,
+ RANAP_TimeToMBMSDataTransfer_encode_xer,
+ RANAP_TimeToMBMSDataTransfer_decode_uper,
+ RANAP_TimeToMBMSDataTransfer_encode_uper,
+ RANAP_TimeToMBMSDataTransfer_decode_aper,
+ RANAP_TimeToMBMSDataTransfer_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1,
+ sizeof(asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1)
+ /sizeof(asn_DEF_RANAP_TimeToMBMSDataTransfer_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TimeToMBMSDataTransfer_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TimingDifferenceULDL.c b/src/ranap/RANAP_TimingDifferenceULDL.c
new file mode 100644
index 0000000..226c23a
--- /dev/null
+++ b/src/ranap/RANAP_TimingDifferenceULDL.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TimingDifferenceULDL.h>
+
+int
+RANAP_TimingDifferenceULDL_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TimingDifferenceULDL_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TimingDifferenceULDL_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimingDifferenceULDL_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TimingDifferenceULDL_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimingDifferenceULDL_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TimingDifferenceULDL_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TimingDifferenceULDL_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TimingDifferenceULDL_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TimingDifferenceULDL_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TimingDifferenceULDL_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TimingDifferenceULDL_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TimingDifferenceULDL_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TimingDifferenceULDL_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TimingDifferenceULDL = {
+ "RANAP_TimingDifferenceULDL",
+ "RANAP_TimingDifferenceULDL",
+ RANAP_TimingDifferenceULDL_free,
+ RANAP_TimingDifferenceULDL_print,
+ RANAP_TimingDifferenceULDL_constraint,
+ RANAP_TimingDifferenceULDL_decode_ber,
+ RANAP_TimingDifferenceULDL_encode_der,
+ RANAP_TimingDifferenceULDL_decode_xer,
+ RANAP_TimingDifferenceULDL_encode_xer,
+ RANAP_TimingDifferenceULDL_decode_uper,
+ RANAP_TimingDifferenceULDL_encode_uper,
+ RANAP_TimingDifferenceULDL_decode_aper,
+ RANAP_TimingDifferenceULDL_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TimingDifferenceULDL_tags_1,
+ sizeof(asn_DEF_RANAP_TimingDifferenceULDL_tags_1)
+ /sizeof(asn_DEF_RANAP_TimingDifferenceULDL_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TimingDifferenceULDL_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TimingDifferenceULDL_tags_1)
+ /sizeof(asn_DEF_RANAP_TimingDifferenceULDL_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TimingDifferenceULDL_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TrCH-ID-List.c b/src/ranap/RANAP_TrCH-ID-List.c
new file mode 100644
index 0000000..1a4219c
--- /dev/null
+++ b/src/ranap/RANAP_TrCH-ID-List.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TrCH-ID-List.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_TrCH_ID_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 3, 3, 1l, 7l } /* (SIZE(1..7)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_TrCH_ID_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_TrCH_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TrCH_ID_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_TrCH_ID_List_specs_1 = {
+ sizeof(struct RANAP_TrCH_ID_List),
+ offsetof(struct RANAP_TrCH_ID_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TrCH_ID_List = {
+ "RANAP_TrCH-ID-List",
+ "RANAP_TrCH-ID-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TrCH_ID_List_tags_1,
+ sizeof(asn_DEF_RANAP_TrCH_ID_List_tags_1)
+ /sizeof(asn_DEF_RANAP_TrCH_ID_List_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TrCH_ID_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TrCH_ID_List_tags_1)
+ /sizeof(asn_DEF_RANAP_TrCH_ID_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TrCH_ID_List_constr_1,
+ asn_MBR_RANAP_TrCH_ID_List_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_TrCH_ID_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TrCH-ID.c b/src/ranap/RANAP_TrCH-ID.c
new file mode 100644
index 0000000..b55ab2b
--- /dev/null
+++ b/src/ranap/RANAP_TrCH-ID.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TrCH-ID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TrCH_ID_1[] = {
+ { ATF_POINTER, 4, offsetof(struct RANAP_TrCH_ID, dCH_ID),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DCH_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dCH-ID"
+ },
+ { ATF_POINTER, 3, offsetof(struct RANAP_TrCH_ID, dSCH_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DSCH_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dSCH-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_TrCH_ID, uSCH_ID),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_USCH_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uSCH-ID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TrCH_ID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TrCH_ID_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TrCH_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TrCH_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dCH-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dSCH-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uSCH-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TrCH_ID_specs_1 = {
+ sizeof(struct RANAP_TrCH_ID),
+ offsetof(struct RANAP_TrCH_ID, _asn_ctx),
+ asn_MAP_RANAP_TrCH_ID_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_TrCH_ID_oms_1, /* Optional members */
+ 4, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TrCH_ID = {
+ "RANAP_TrCH-ID",
+ "RANAP_TrCH-ID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TrCH_ID_tags_1,
+ sizeof(asn_DEF_RANAP_TrCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TrCH_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TrCH_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TrCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_TrCH_ID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TrCH_ID_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_TrCH_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TraceDepth.c b/src/ranap/RANAP_TraceDepth.c
new file mode 100644
index 0000000..0a8e152
--- /dev/null
+++ b/src/ranap/RANAP_TraceDepth.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceDepth.h>
+
+int
+RANAP_TraceDepth_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TraceDepth_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_TraceDepth_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TraceDepth_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceDepth_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TraceDepth_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceDepth_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TraceDepth_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceDepth_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TraceDepth_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TraceDepth_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TraceDepth_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceDepth_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TraceDepth_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_TraceDepth_value2enum_1[] = {
+ { 0, 7, "minimum" },
+ { 1, 6, "medium" },
+ { 2, 7, "maximum" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_TraceDepth_enum2value_1[] = {
+ 2, /* maximum(2) */
+ 1, /* medium(1) */
+ 0 /* minimum(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_TraceDepth_specs_1 = {
+ asn_MAP_RANAP_TraceDepth_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_TraceDepth_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceDepth_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceDepth = {
+ "RANAP_TraceDepth",
+ "RANAP_TraceDepth",
+ RANAP_TraceDepth_free,
+ RANAP_TraceDepth_print,
+ RANAP_TraceDepth_constraint,
+ RANAP_TraceDepth_decode_ber,
+ RANAP_TraceDepth_encode_der,
+ RANAP_TraceDepth_decode_xer,
+ RANAP_TraceDepth_encode_xer,
+ RANAP_TraceDepth_decode_uper,
+ RANAP_TraceDepth_encode_uper,
+ RANAP_TraceDepth_decode_aper,
+ RANAP_TraceDepth_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceDepth_tags_1,
+ sizeof(asn_DEF_RANAP_TraceDepth_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceDepth_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceDepth_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceDepth_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceDepth_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TraceDepth_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_TraceDepth_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TraceInformation.c b/src/ranap/RANAP_TraceInformation.c
new file mode 100644
index 0000000..7bce26b
--- /dev/null
+++ b/src/ranap/RANAP_TraceInformation.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TraceInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TraceInformation, traceReference),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceReference"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TraceInformation, ue_identity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_UE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ue-identity"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_TraceInformation, tracePropagationParameters),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TracePropagationParameters,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tracePropagationParameters"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TraceInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TraceInformation_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TraceInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* traceReference */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ue-identity */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tracePropagationParameters */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TraceInformation_specs_1 = {
+ sizeof(struct RANAP_TraceInformation),
+ offsetof(struct RANAP_TraceInformation, _asn_ctx),
+ asn_MAP_RANAP_TraceInformation_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_TraceInformation_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceInformation = {
+ "RANAP_TraceInformation",
+ "RANAP_TraceInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceInformation_tags_1,
+ sizeof(asn_DEF_RANAP_TraceInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TraceInformation_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_TraceInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TracePropagationParameters.c b/src/ranap/RANAP_TracePropagationParameters.c
new file mode 100644
index 0000000..2caf614
--- /dev/null
+++ b/src/ranap/RANAP_TracePropagationParameters.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TracePropagationParameters.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TracePropagationParameters_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TracePropagationParameters, traceRecordingSessionReference),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceRecordingSessionReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceRecordingSessionReference"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TracePropagationParameters, traceDepth),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceDepth,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceDepth"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_TracePropagationParameters, listOfInterfacesToTrace),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ListOfInterfacesToTrace,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "listOfInterfacesToTrace"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TracePropagationParameters, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TracePropagationParameters_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TracePropagationParameters_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TracePropagationParameters_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* traceRecordingSessionReference */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* traceDepth */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* listOfInterfacesToTrace */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TracePropagationParameters_specs_1 = {
+ sizeof(struct RANAP_TracePropagationParameters),
+ offsetof(struct RANAP_TracePropagationParameters, _asn_ctx),
+ asn_MAP_RANAP_TracePropagationParameters_tag2el_1,
+ 4, /* Count of tags in the map */
+ asn_MAP_RANAP_TracePropagationParameters_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TracePropagationParameters = {
+ "RANAP_TracePropagationParameters",
+ "RANAP_TracePropagationParameters",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TracePropagationParameters_tags_1,
+ sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TracePropagationParameters_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1)
+ /sizeof(asn_DEF_RANAP_TracePropagationParameters_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TracePropagationParameters_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_TracePropagationParameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TraceRecordingSessionInformation.c b/src/ranap/RANAP_TraceRecordingSessionInformation.c
new file mode 100644
index 0000000..ba88e32
--- /dev/null
+++ b/src/ranap/RANAP_TraceRecordingSessionInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceRecordingSessionInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TraceRecordingSessionInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TraceRecordingSessionInformation, traceReference),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceReference"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TraceRecordingSessionInformation, traceRecordingSessionReference),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TraceRecordingSessionReference,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "traceRecordingSessionReference"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TraceRecordingSessionInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TraceRecordingSessionInformation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TraceRecordingSessionInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* traceReference */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* traceRecordingSessionReference */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TraceRecordingSessionInformation_specs_1 = {
+ sizeof(struct RANAP_TraceRecordingSessionInformation),
+ offsetof(struct RANAP_TraceRecordingSessionInformation, _asn_ctx),
+ asn_MAP_RANAP_TraceRecordingSessionInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TraceRecordingSessionInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceRecordingSessionInformation = {
+ "RANAP_TraceRecordingSessionInformation",
+ "RANAP_TraceRecordingSessionInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1,
+ sizeof(asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceRecordingSessionInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TraceRecordingSessionInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TraceRecordingSessionInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TraceRecordingSessionReference.c b/src/ranap/RANAP_TraceRecordingSessionReference.c
new file mode 100644
index 0000000..86b167f
--- /dev/null
+++ b/src/ranap/RANAP_TraceRecordingSessionReference.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceRecordingSessionReference.h>
+
+int
+RANAP_TraceRecordingSessionReference_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_TraceRecordingSessionReference_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TraceRecordingSessionReference_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceRecordingSessionReference_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TraceRecordingSessionReference_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceRecordingSessionReference_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TraceRecordingSessionReference_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceRecordingSessionReference_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TraceRecordingSessionReference_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TraceRecordingSessionReference_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TraceRecordingSessionReference_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceRecordingSessionReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TraceRecordingSessionReference_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceRecordingSessionReference_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceRecordingSessionReference = {
+ "RANAP_TraceRecordingSessionReference",
+ "RANAP_TraceRecordingSessionReference",
+ RANAP_TraceRecordingSessionReference_free,
+ RANAP_TraceRecordingSessionReference_print,
+ RANAP_TraceRecordingSessionReference_constraint,
+ RANAP_TraceRecordingSessionReference_decode_ber,
+ RANAP_TraceRecordingSessionReference_encode_der,
+ RANAP_TraceRecordingSessionReference_decode_xer,
+ RANAP_TraceRecordingSessionReference_encode_xer,
+ RANAP_TraceRecordingSessionReference_decode_uper,
+ RANAP_TraceRecordingSessionReference_encode_uper,
+ RANAP_TraceRecordingSessionReference_decode_aper,
+ RANAP_TraceRecordingSessionReference_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceRecordingSessionReference_tags_1,
+ sizeof(asn_DEF_RANAP_TraceRecordingSessionReference_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceRecordingSessionReference_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceRecordingSessionReference_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceRecordingSessionReference_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceRecordingSessionReference_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TraceRecordingSessionReference_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TraceReference.c b/src/ranap/RANAP_TraceReference.c
new file mode 100644
index 0000000..6e9b057
--- /dev/null
+++ b/src/ranap/RANAP_TraceReference.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceReference.h>
+
+int
+RANAP_TraceReference_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 2l && size <= 3l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TraceReference_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TraceReference_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TraceReference_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceReference_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TraceReference_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceReference_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TraceReference_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceReference_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TraceReference_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TraceReference_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TraceReference_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceReference_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TraceReference_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 1, 1, 2l, 3l } /* (SIZE(2..3)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceReference_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceReference = {
+ "RANAP_TraceReference",
+ "RANAP_TraceReference",
+ RANAP_TraceReference_free,
+ RANAP_TraceReference_print,
+ RANAP_TraceReference_constraint,
+ RANAP_TraceReference_decode_ber,
+ RANAP_TraceReference_encode_der,
+ RANAP_TraceReference_decode_xer,
+ RANAP_TraceReference_encode_xer,
+ RANAP_TraceReference_decode_uper,
+ RANAP_TraceReference_encode_uper,
+ RANAP_TraceReference_decode_aper,
+ RANAP_TraceReference_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceReference_tags_1,
+ sizeof(asn_DEF_RANAP_TraceReference_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceReference_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceReference_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceReference_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceReference_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TraceReference_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TraceType.c b/src/ranap/RANAP_TraceType.c
new file mode 100644
index 0000000..0bae3d4
--- /dev/null
+++ b/src/ranap/RANAP_TraceType.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TraceType.h>
+
+int
+RANAP_TraceType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 1l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TraceType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TraceType_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TraceType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TraceType_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TraceType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TraceType_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TraceType_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TraceType_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TraceType_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TraceType_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TraceType_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 1l, 1l } /* (SIZE(1..1)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TraceType_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TraceType = {
+ "RANAP_TraceType",
+ "RANAP_TraceType",
+ RANAP_TraceType_free,
+ RANAP_TraceType_print,
+ RANAP_TraceType_constraint,
+ RANAP_TraceType_decode_ber,
+ RANAP_TraceType_encode_der,
+ RANAP_TraceType_decode_xer,
+ RANAP_TraceType_encode_xer,
+ RANAP_TraceType_decode_uper,
+ RANAP_TraceType_encode_uper,
+ RANAP_TraceType_decode_aper,
+ RANAP_TraceType_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TraceType_tags_1,
+ sizeof(asn_DEF_RANAP_TraceType_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceType_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TraceType_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TraceType_tags_1)
+ /sizeof(asn_DEF_RANAP_TraceType_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TraceType_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TrafficClass.c b/src/ranap/RANAP_TrafficClass.c
new file mode 100644
index 0000000..725adc5
--- /dev/null
+++ b/src/ranap/RANAP_TrafficClass.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TrafficClass.h>
+
+int
+RANAP_TrafficClass_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TrafficClass_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_TrafficClass_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TrafficClass_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficClass_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TrafficClass_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficClass_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TrafficClass_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficClass_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TrafficClass_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TrafficClass_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TrafficClass_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TrafficClass_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TrafficClass_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_TrafficClass_value2enum_1[] = {
+ { 0, 14, "conversational" },
+ { 1, 9, "streaming" },
+ { 2, 11, "interactive" },
+ { 3, 10, "background" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_TrafficClass_enum2value_1[] = {
+ 3, /* background(3) */
+ 0, /* conversational(0) */
+ 2, /* interactive(2) */
+ 1 /* streaming(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_TrafficClass_specs_1 = {
+ asn_MAP_RANAP_TrafficClass_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_TrafficClass_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TrafficClass_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TrafficClass = {
+ "RANAP_TrafficClass",
+ "RANAP_TrafficClass",
+ RANAP_TrafficClass_free,
+ RANAP_TrafficClass_print,
+ RANAP_TrafficClass_constraint,
+ RANAP_TrafficClass_decode_ber,
+ RANAP_TrafficClass_encode_der,
+ RANAP_TrafficClass_decode_xer,
+ RANAP_TrafficClass_encode_xer,
+ RANAP_TrafficClass_decode_uper,
+ RANAP_TrafficClass_encode_uper,
+ RANAP_TrafficClass_decode_aper,
+ RANAP_TrafficClass_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TrafficClass_tags_1,
+ sizeof(asn_DEF_RANAP_TrafficClass_tags_1)
+ /sizeof(asn_DEF_RANAP_TrafficClass_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TrafficClass_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TrafficClass_tags_1)
+ /sizeof(asn_DEF_RANAP_TrafficClass_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TrafficClass_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_TrafficClass_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TrafficHandlingPriority.c b/src/ranap/RANAP_TrafficHandlingPriority.c
new file mode 100644
index 0000000..504be51
--- /dev/null
+++ b/src/ranap/RANAP_TrafficHandlingPriority.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TrafficHandlingPriority.h>
+
+int
+RANAP_TrafficHandlingPriority_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_TrafficHandlingPriority_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TrafficHandlingPriority_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficHandlingPriority_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TrafficHandlingPriority_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficHandlingPriority_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TrafficHandlingPriority_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TrafficHandlingPriority_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TrafficHandlingPriority_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TrafficHandlingPriority_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TrafficHandlingPriority_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TrafficHandlingPriority_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TrafficHandlingPriority_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 4, 4, 0l, 15l } /* (0..15) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TrafficHandlingPriority_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TrafficHandlingPriority = {
+ "RANAP_TrafficHandlingPriority",
+ "RANAP_TrafficHandlingPriority",
+ RANAP_TrafficHandlingPriority_free,
+ RANAP_TrafficHandlingPriority_print,
+ RANAP_TrafficHandlingPriority_constraint,
+ RANAP_TrafficHandlingPriority_decode_ber,
+ RANAP_TrafficHandlingPriority_encode_der,
+ RANAP_TrafficHandlingPriority_decode_xer,
+ RANAP_TrafficHandlingPriority_encode_xer,
+ RANAP_TrafficHandlingPriority_decode_uper,
+ RANAP_TrafficHandlingPriority_encode_uper,
+ RANAP_TrafficHandlingPriority_decode_aper,
+ RANAP_TrafficHandlingPriority_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TrafficHandlingPriority_tags_1,
+ sizeof(asn_DEF_RANAP_TrafficHandlingPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_TrafficHandlingPriority_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TrafficHandlingPriority_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TrafficHandlingPriority_tags_1)
+ /sizeof(asn_DEF_RANAP_TrafficHandlingPriority_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TrafficHandlingPriority_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TransferDelay.c b/src/ranap/RANAP_TransferDelay.c
new file mode 100644
index 0000000..8d7c75a
--- /dev/null
+++ b/src/ranap/RANAP_TransferDelay.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TransferDelay.h>
+
+int
+RANAP_TransferDelay_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TransferDelay_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_TransferDelay_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TransferDelay_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransferDelay_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TransferDelay_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransferDelay_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TransferDelay_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransferDelay_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TransferDelay_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TransferDelay_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TransferDelay_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TransferDelay_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TransferDelay_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TransferDelay_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TransferDelay = {
+ "RANAP_TransferDelay",
+ "RANAP_TransferDelay",
+ RANAP_TransferDelay_free,
+ RANAP_TransferDelay_print,
+ RANAP_TransferDelay_constraint,
+ RANAP_TransferDelay_decode_ber,
+ RANAP_TransferDelay_encode_der,
+ RANAP_TransferDelay_decode_xer,
+ RANAP_TransferDelay_encode_xer,
+ RANAP_TransferDelay_decode_uper,
+ RANAP_TransferDelay_encode_uper,
+ RANAP_TransferDelay_decode_aper,
+ RANAP_TransferDelay_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TransferDelay_tags_1,
+ sizeof(asn_DEF_RANAP_TransferDelay_tags_1)
+ /sizeof(asn_DEF_RANAP_TransferDelay_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TransferDelay_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TransferDelay_tags_1)
+ /sizeof(asn_DEF_RANAP_TransferDelay_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TransferDelay_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TransportLayerAddress.c b/src/ranap/RANAP_TransportLayerAddress.c
new file mode 100644
index 0000000..19d7ed5
--- /dev/null
+++ b/src/ranap/RANAP_TransportLayerAddress.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TransportLayerAddress.h>
+
+int
+RANAP_TransportLayerAddress_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size >= 1l && size <= 160l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_TransportLayerAddress_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TransportLayerAddress_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransportLayerAddress_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TransportLayerAddress_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransportLayerAddress_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TransportLayerAddress_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TransportLayerAddress_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TransportLayerAddress_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TransportLayerAddress_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TransportLayerAddress_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TransportLayerAddress_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TransportLayerAddress_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1l, 160l } /* (SIZE(1..160,...)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TransportLayerAddress_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TransportLayerAddress = {
+ "RANAP_TransportLayerAddress",
+ "RANAP_TransportLayerAddress",
+ RANAP_TransportLayerAddress_free,
+ RANAP_TransportLayerAddress_print,
+ RANAP_TransportLayerAddress_constraint,
+ RANAP_TransportLayerAddress_decode_ber,
+ RANAP_TransportLayerAddress_encode_der,
+ RANAP_TransportLayerAddress_decode_xer,
+ RANAP_TransportLayerAddress_encode_xer,
+ RANAP_TransportLayerAddress_decode_uper,
+ RANAP_TransportLayerAddress_encode_uper,
+ RANAP_TransportLayerAddress_decode_aper,
+ RANAP_TransportLayerAddress_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TransportLayerAddress_tags_1,
+ sizeof(asn_DEF_RANAP_TransportLayerAddress_tags_1)
+ /sizeof(asn_DEF_RANAP_TransportLayerAddress_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TransportLayerAddress_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TransportLayerAddress_tags_1)
+ /sizeof(asn_DEF_RANAP_TransportLayerAddress_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TransportLayerAddress_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TransportLayerInformation.c b/src/ranap/RANAP_TransportLayerInformation.c
new file mode 100644
index 0000000..56a2ac4
--- /dev/null
+++ b/src/ranap/RANAP_TransportLayerInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TransportLayerInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TransportLayerInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TransportLayerInformation, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TransportLayerInformation, iuTransportAssociation),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_IuTransportAssociation,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iuTransportAssociation"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TransportLayerInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TransportLayerInformation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TransportLayerInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TransportLayerInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iuTransportAssociation */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TransportLayerInformation_specs_1 = {
+ sizeof(struct RANAP_TransportLayerInformation),
+ offsetof(struct RANAP_TransportLayerInformation, _asn_ctx),
+ asn_MAP_RANAP_TransportLayerInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TransportLayerInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TransportLayerInformation = {
+ "RANAP_TransportLayerInformation",
+ "RANAP_TransportLayerInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TransportLayerInformation_tags_1,
+ sizeof(asn_DEF_RANAP_TransportLayerInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TransportLayerInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TransportLayerInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TransportLayerInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TransportLayerInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TransportLayerInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TransportLayerInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TriggerID.c b/src/ranap/RANAP_TriggerID.c
new file mode 100644
index 0000000..a4a4da4
--- /dev/null
+++ b/src/ranap/RANAP_TriggerID.c
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TriggerID.h>
+
+int
+RANAP_TriggerID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size >= 3l && size <= 22l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TriggerID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_TriggerID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TriggerID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggerID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TriggerID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggerID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TriggerID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggerID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TriggerID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TriggerID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TriggerID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TriggerID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TriggerID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 3l, 22l } /* (SIZE(3..22)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TriggerID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TriggerID = {
+ "RANAP_TriggerID",
+ "RANAP_TriggerID",
+ RANAP_TriggerID_free,
+ RANAP_TriggerID_print,
+ RANAP_TriggerID_constraint,
+ RANAP_TriggerID_decode_ber,
+ RANAP_TriggerID_encode_der,
+ RANAP_TriggerID_decode_xer,
+ RANAP_TriggerID_encode_xer,
+ RANAP_TriggerID_decode_uper,
+ RANAP_TriggerID_encode_uper,
+ RANAP_TriggerID_decode_aper,
+ RANAP_TriggerID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TriggerID_tags_1,
+ sizeof(asn_DEF_RANAP_TriggerID_tags_1)
+ /sizeof(asn_DEF_RANAP_TriggerID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TriggerID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TriggerID_tags_1)
+ /sizeof(asn_DEF_RANAP_TriggerID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TriggerID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_TriggeringMessage.c b/src/ranap/RANAP_TriggeringMessage.c
new file mode 100644
index 0000000..27a6b8a
--- /dev/null
+++ b/src/ranap/RANAP_TriggeringMessage.c
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-CommonDataTypes"
+ * found in "../../asn1/ranap/RANAP-CommonDataTypes.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TriggeringMessage.h>
+
+int
+RANAP_TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_TriggeringMessage_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TriggeringMessage_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 3l } /* (0..3) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_TriggeringMessage_value2enum_1[] = {
+ { 0, 18, "initiating-message" },
+ { 1, 18, "successful-outcome" },
+ { 2, 21, "unsuccessfull-outcome" },
+ { 3, 7, "outcome" }
+};
+static const unsigned int asn_MAP_RANAP_TriggeringMessage_enum2value_1[] = {
+ 0, /* initiating-message(0) */
+ 3, /* outcome(3) */
+ 1, /* successful-outcome(1) */
+ 2 /* unsuccessfull-outcome(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_TriggeringMessage_specs_1 = {
+ asn_MAP_RANAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TriggeringMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TriggeringMessage = {
+ "RANAP_TriggeringMessage",
+ "RANAP_TriggeringMessage",
+ RANAP_TriggeringMessage_free,
+ RANAP_TriggeringMessage_print,
+ RANAP_TriggeringMessage_constraint,
+ RANAP_TriggeringMessage_decode_ber,
+ RANAP_TriggeringMessage_encode_der,
+ RANAP_TriggeringMessage_decode_xer,
+ RANAP_TriggeringMessage_encode_xer,
+ RANAP_TriggeringMessage_decode_uper,
+ RANAP_TriggeringMessage_encode_uper,
+ RANAP_TriggeringMessage_decode_aper,
+ RANAP_TriggeringMessage_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TriggeringMessage_tags_1,
+ sizeof(asn_DEF_RANAP_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_TriggeringMessage_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TriggeringMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_RANAP_TriggeringMessage_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TriggeringMessage_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_TriggeringMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TunnelInformation.c b/src/ranap/RANAP_TunnelInformation.c
new file mode 100644
index 0000000..ee69543
--- /dev/null
+++ b/src/ranap/RANAP_TunnelInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TunnelInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_TunnelInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_TunnelInformation, transportLayerAddress),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TransportLayerAddress,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transportLayerAddress"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_TunnelInformation, uDP_Port_Number),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Port_Number,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uDP-Port-Number"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_TunnelInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_TunnelInformation_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_TunnelInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_TunnelInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_TunnelInformation_specs_1 = {
+ sizeof(struct RANAP_TunnelInformation),
+ offsetof(struct RANAP_TunnelInformation, _asn_ctx),
+ asn_MAP_RANAP_TunnelInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_TunnelInformation_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TunnelInformation = {
+ "RANAP_TunnelInformation",
+ "RANAP_TunnelInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TunnelInformation_tags_1,
+ sizeof(asn_DEF_RANAP_TunnelInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TunnelInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TunnelInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TunnelInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_TunnelInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_TunnelInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_TunnelInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_TypeOfError.c b/src/ranap/RANAP_TypeOfError.c
new file mode 100644
index 0000000..be7417e
--- /dev/null
+++ b/src/ranap/RANAP_TypeOfError.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_TypeOfError.h>
+
+int
+RANAP_TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_TypeOfError_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_TypeOfError_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_TypeOfError_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_TypeOfError_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_TypeOfError_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_TypeOfError_value2enum_1[] = {
+ { 0, 14, "not-understood" },
+ { 1, 7, "missing" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_TypeOfError_enum2value_1[] = {
+ 1, /* missing(1) */
+ 0 /* not-understood(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_TypeOfError_specs_1 = {
+ asn_MAP_RANAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_TypeOfError_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_TypeOfError = {
+ "RANAP_TypeOfError",
+ "RANAP_TypeOfError",
+ RANAP_TypeOfError_free,
+ RANAP_TypeOfError_print,
+ RANAP_TypeOfError_constraint,
+ RANAP_TypeOfError_decode_ber,
+ RANAP_TypeOfError_encode_der,
+ RANAP_TypeOfError_decode_xer,
+ RANAP_TypeOfError_encode_xer,
+ RANAP_TypeOfError_decode_uper,
+ RANAP_TypeOfError_encode_uper,
+ RANAP_TypeOfError_decode_aper,
+ RANAP_TypeOfError_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_TypeOfError_tags_1,
+ sizeof(asn_DEF_RANAP_TypeOfError_tags_1)
+ /sizeof(asn_DEF_RANAP_TypeOfError_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_TypeOfError_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_TypeOfError_tags_1)
+ /sizeof(asn_DEF_RANAP_TypeOfError_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_TypeOfError_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_TypeOfError_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UE-AggregateMaximumBitRate.c b/src/ranap/RANAP_UE-AggregateMaximumBitRate.c
new file mode 100644
index 0000000..1ee0840
--- /dev/null
+++ b/src/ranap/RANAP_UE-AggregateMaximumBitRate.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRate.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UE_AggregateMaximumBitRate_1[] = {
+ { ATF_POINTER, 2, offsetof(struct RANAP_UE_AggregateMaximumBitRate, uE_AggregateMaximumBitRateDownlink),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uE-AggregateMaximumBitRateDownlink"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_UE_AggregateMaximumBitRate, uE_AggregateMaximumBitRateUplink),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uE-AggregateMaximumBitRateUplink"
+ },
+};
+static const int asn_MAP_RANAP_UE_AggregateMaximumBitRate_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UE_AggregateMaximumBitRate_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-AggregateMaximumBitRateDownlink */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uE-AggregateMaximumBitRateUplink */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UE_AggregateMaximumBitRate_specs_1 = {
+ sizeof(struct RANAP_UE_AggregateMaximumBitRate),
+ offsetof(struct RANAP_UE_AggregateMaximumBitRate, _asn_ctx),
+ asn_MAP_RANAP_UE_AggregateMaximumBitRate_tag2el_1,
+ 2, /* Count of tags in the map */
+ asn_MAP_RANAP_UE_AggregateMaximumBitRate_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 1, /* Start extensions */
+ 3 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRate = {
+ "RANAP_UE-AggregateMaximumBitRate",
+ "RANAP_UE-AggregateMaximumBitRate",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1,
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UE_AggregateMaximumBitRate_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_UE_AggregateMaximumBitRate_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.c b/src/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.c
new file mode 100644
index 0000000..800682e
--- /dev/null
+++ b/src/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateDownlink.h>
+
+int
+RANAP_UE_AggregateMaximumBitRateDownlink_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 1000000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_UE_AggregateMaximumBitRateDownlink_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UE_AggregateMaximumBitRateDownlink_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateDownlink_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_AggregateMaximumBitRateDownlink_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UE_AggregateMaximumBitRateDownlink_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 30, -1, 1l, 1000000000l } /* (1..1000000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink = {
+ "RANAP_UE-AggregateMaximumBitRateDownlink",
+ "RANAP_UE-AggregateMaximumBitRateDownlink",
+ RANAP_UE_AggregateMaximumBitRateDownlink_free,
+ RANAP_UE_AggregateMaximumBitRateDownlink_print,
+ RANAP_UE_AggregateMaximumBitRateDownlink_constraint,
+ RANAP_UE_AggregateMaximumBitRateDownlink_decode_ber,
+ RANAP_UE_AggregateMaximumBitRateDownlink_encode_der,
+ RANAP_UE_AggregateMaximumBitRateDownlink_decode_xer,
+ RANAP_UE_AggregateMaximumBitRateDownlink_encode_xer,
+ RANAP_UE_AggregateMaximumBitRateDownlink_decode_uper,
+ RANAP_UE_AggregateMaximumBitRateDownlink_encode_uper,
+ RANAP_UE_AggregateMaximumBitRateDownlink_decode_aper,
+ RANAP_UE_AggregateMaximumBitRateDownlink_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1,
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UE_AggregateMaximumBitRateDownlink_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UE-AggregateMaximumBitRateUplink.c b/src/ranap/RANAP_UE-AggregateMaximumBitRateUplink.c
new file mode 100644
index 0000000..970f30b
--- /dev/null
+++ b/src/ranap/RANAP_UE-AggregateMaximumBitRateUplink.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UE-AggregateMaximumBitRateUplink.h>
+
+int
+RANAP_UE_AggregateMaximumBitRateUplink_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 1l && value <= 1000000000l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_UE_AggregateMaximumBitRateUplink_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UE_AggregateMaximumBitRateUplink_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UE_AggregateMaximumBitRateUplink_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_AggregateMaximumBitRateUplink_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UE_AggregateMaximumBitRateUplink_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 30, -1, 1l, 1000000000l } /* (1..1000000000) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink = {
+ "RANAP_UE-AggregateMaximumBitRateUplink",
+ "RANAP_UE-AggregateMaximumBitRateUplink",
+ RANAP_UE_AggregateMaximumBitRateUplink_free,
+ RANAP_UE_AggregateMaximumBitRateUplink_print,
+ RANAP_UE_AggregateMaximumBitRateUplink_constraint,
+ RANAP_UE_AggregateMaximumBitRateUplink_decode_ber,
+ RANAP_UE_AggregateMaximumBitRateUplink_encode_der,
+ RANAP_UE_AggregateMaximumBitRateUplink_decode_xer,
+ RANAP_UE_AggregateMaximumBitRateUplink_encode_xer,
+ RANAP_UE_AggregateMaximumBitRateUplink_decode_uper,
+ RANAP_UE_AggregateMaximumBitRateUplink_encode_uper,
+ RANAP_UE_AggregateMaximumBitRateUplink_decode_aper,
+ RANAP_UE_AggregateMaximumBitRateUplink_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1,
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UE_AggregateMaximumBitRateUplink_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UE-History-Information.c b/src/ranap/RANAP_UE-History-Information.c
new file mode 100644
index 0000000..fd82b33
--- /dev/null
+++ b/src/ranap/RANAP_UE-History-Information.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UE-History-Information.h>
+
+int
+RANAP_UE_History_Information_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UE_History_Information_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_UE_History_Information_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UE_History_Information_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_History_Information_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UE_History_Information_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_History_Information_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UE_History_Information_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UE_History_Information_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UE_History_Information_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UE_History_Information_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UE_History_Information_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UE_History_Information_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_UE_History_Information_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_History_Information = {
+ "RANAP_UE-History-Information",
+ "RANAP_UE-History-Information",
+ RANAP_UE_History_Information_free,
+ RANAP_UE_History_Information_print,
+ RANAP_UE_History_Information_constraint,
+ RANAP_UE_History_Information_decode_ber,
+ RANAP_UE_History_Information_encode_der,
+ RANAP_UE_History_Information_decode_xer,
+ RANAP_UE_History_Information_encode_xer,
+ RANAP_UE_History_Information_decode_uper,
+ RANAP_UE_History_Information_encode_uper,
+ RANAP_UE_History_Information_decode_aper,
+ RANAP_UE_History_Information_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UE_History_Information_tags_1,
+ sizeof(asn_DEF_RANAP_UE_History_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_History_Information_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UE_History_Information_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UE_History_Information_tags_1)
+ /sizeof(asn_DEF_RANAP_UE_History_Information_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UE-ID.c b/src/ranap/RANAP_UE-ID.c
new file mode 100644
index 0000000..7ef0d0c
--- /dev/null
+++ b/src/ranap/RANAP_UE-ID.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UE-ID.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_UE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_UE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UE_ID, choice.imsi),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMSI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "imsi"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UE_ID, choice.imei),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "imei"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UE_ID, choice.imeisv),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IMEISV,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "imeisv"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* imsi */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* imei */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* imeisv */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_UE_ID_specs_1 = {
+ sizeof(struct RANAP_UE_ID),
+ offsetof(struct RANAP_UE_ID, _asn_ctx),
+ offsetof(struct RANAP_UE_ID, present),
+ sizeof(((struct RANAP_UE_ID *)0)->present),
+ asn_MAP_RANAP_UE_ID_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 2 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_ID = {
+ "RANAP_UE-ID",
+ "RANAP_UE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_UE_ID_constr_1,
+ asn_MBR_RANAP_UE_ID_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_UE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UESBI-Iu.c b/src/ranap/RANAP_UESBI-Iu.c
new file mode 100644
index 0000000..360e8d9
--- /dev/null
+++ b/src/ranap/RANAP_UESBI-Iu.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UESBI-Iu.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UESBI_Iu_1[] = {
+ { ATF_POINTER, 3, offsetof(struct RANAP_UESBI_Iu, uESBI_IuA),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UESBI_IuA,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uESBI-IuA"
+ },
+ { ATF_POINTER, 2, offsetof(struct RANAP_UESBI_Iu, uESBI_IuB),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UESBI_IuB,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uESBI-IuB"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_UESBI_Iu, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_UESBI_Iu_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UESBI_Iu_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UESBI_Iu_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uESBI-IuA */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uESBI-IuB */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UESBI_Iu_specs_1 = {
+ sizeof(struct RANAP_UESBI_Iu),
+ offsetof(struct RANAP_UESBI_Iu, _asn_ctx),
+ asn_MAP_RANAP_UESBI_Iu_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_UESBI_Iu_oms_1, /* Optional members */
+ 3, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_Iu = {
+ "RANAP_UESBI-Iu",
+ "RANAP_UESBI-Iu",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UESBI_Iu_tags_1,
+ sizeof(asn_DEF_RANAP_UESBI_Iu_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_Iu_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UESBI_Iu_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UESBI_Iu_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_Iu_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UESBI_Iu_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_UESBI_Iu_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UESBI-IuA.c b/src/ranap/RANAP_UESBI-IuA.c
new file mode 100644
index 0000000..80d876f
--- /dev/null
+++ b/src/ranap/RANAP_UESBI-IuA.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UESBI-IuA.h>
+
+int
+RANAP_UESBI_IuA_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size >= 1l && size <= 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_UESBI_IuA_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UESBI_IuA_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuA_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuA_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuA_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuA_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuA_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuA_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuA_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuA_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UESBI_IuA_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UESBI_IuA_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UESBI_IuA_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_IuA = {
+ "RANAP_UESBI-IuA",
+ "RANAP_UESBI-IuA",
+ RANAP_UESBI_IuA_free,
+ RANAP_UESBI_IuA_print,
+ RANAP_UESBI_IuA_constraint,
+ RANAP_UESBI_IuA_decode_ber,
+ RANAP_UESBI_IuA_encode_der,
+ RANAP_UESBI_IuA_decode_xer,
+ RANAP_UESBI_IuA_encode_xer,
+ RANAP_UESBI_IuA_decode_uper,
+ RANAP_UESBI_IuA_encode_uper,
+ RANAP_UESBI_IuA_decode_aper,
+ RANAP_UESBI_IuA_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UESBI_IuA_tags_1,
+ sizeof(asn_DEF_RANAP_UESBI_IuA_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_IuA_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UESBI_IuA_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UESBI_IuA_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_IuA_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UESBI_IuA_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UESBI-IuB.c b/src/ranap/RANAP_UESBI-IuB.c
new file mode 100644
index 0000000..b9b5fa7
--- /dev/null
+++ b/src/ranap/RANAP_UESBI-IuB.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UESBI-IuB.h>
+
+int
+RANAP_UESBI_IuB_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size >= 1l && size <= 128l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_UESBI_IuB_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UESBI_IuB_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuB_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuB_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuB_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuB_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuB_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuB_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UESBI_IuB_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UESBI_IuB_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UESBI_IuB_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UESBI_IuB_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UESBI_IuB_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UESBI_IuB = {
+ "RANAP_UESBI-IuB",
+ "RANAP_UESBI-IuB",
+ RANAP_UESBI_IuB_free,
+ RANAP_UESBI_IuB_print,
+ RANAP_UESBI_IuB_constraint,
+ RANAP_UESBI_IuB_decode_ber,
+ RANAP_UESBI_IuB_encode_der,
+ RANAP_UESBI_IuB_decode_xer,
+ RANAP_UESBI_IuB_encode_xer,
+ RANAP_UESBI_IuB_decode_uper,
+ RANAP_UESBI_IuB_encode_uper,
+ RANAP_UESBI_IuB_decode_aper,
+ RANAP_UESBI_IuB_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UESBI_IuB_tags_1,
+ sizeof(asn_DEF_RANAP_UESBI_IuB_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_IuB_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UESBI_IuB_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UESBI_IuB_tags_1)
+ /sizeof(asn_DEF_RANAP_UESBI_IuB_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UESBI_IuB_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UESpecificInformationIndication.c b/src/ranap/RANAP_UESpecificInformationIndication.c
new file mode 100644
index 0000000..8a4b986
--- /dev/null
+++ b/src/ranap/RANAP_UESpecificInformationIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UESpecificInformationIndication.h>
+
+static int
+memb_ueSpecificInformationIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueSpecificInformationIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueSpecificInformationIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueSpecificInformationIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueSpecificInformationIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueSpecificInformationIndication_ies_specs_2 = {
+ sizeof(struct ueSpecificInformationIndication_ies),
+ offsetof(struct ueSpecificInformationIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueSpecificInformationIndication_ies_2 = {
+ "ueSpecificInformationIndication-ies",
+ "ueSpecificInformationIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueSpecificInformationIndication_ies_tags_2,
+ sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2)
+ /sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueSpecificInformationIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2)
+ /sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueSpecificInformationIndication_ies_constr_2,
+ asn_MBR_ueSpecificInformationIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueSpecificInformationIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UESpecificInformationIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UESpecificInformationIndication, ueSpecificInformationIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueSpecificInformationIndication_ies_2,
+ memb_ueSpecificInformationIndication_ies_constraint_1,
+ &asn_PER_memb_ueSpecificInformationIndication_ies_constr_2,
+ 0,
+ "ueSpecificInformationIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UESpecificInformationIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UESpecificInformationIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueSpecificInformationIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UESpecificInformationIndication_specs_1 = {
+ sizeof(struct RANAP_UESpecificInformationIndication),
+ offsetof(struct RANAP_UESpecificInformationIndication, _asn_ctx),
+ asn_MAP_RANAP_UESpecificInformationIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UESpecificInformationIndication = {
+ "RANAP_UESpecificInformationIndication",
+ "RANAP_UESpecificInformationIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UESpecificInformationIndication_tags_1,
+ sizeof(asn_DEF_RANAP_UESpecificInformationIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_UESpecificInformationIndication_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UESpecificInformationIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UESpecificInformationIndication_tags_1)
+ /sizeof(asn_DEF_RANAP_UESpecificInformationIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UESpecificInformationIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UESpecificInformationIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UL-GTP-PDU-SequenceNumber.c b/src/ranap/RANAP_UL-GTP-PDU-SequenceNumber.c
new file mode 100644
index 0000000..213fe1a
--- /dev/null
+++ b/src/ranap/RANAP_UL-GTP-PDU-SequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UL-GTP-PDU-SequenceNumber.h>
+
+int
+RANAP_UL_GTP_PDU_SequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_UL_GTP_PDU_SequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UL_GTP_PDU_SequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UL_GTP_PDU_SequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UL_GTP_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UL_GTP_PDU_SequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber = {
+ "RANAP_UL-GTP-PDU-SequenceNumber",
+ "RANAP_UL-GTP-PDU-SequenceNumber",
+ RANAP_UL_GTP_PDU_SequenceNumber_free,
+ RANAP_UL_GTP_PDU_SequenceNumber_print,
+ RANAP_UL_GTP_PDU_SequenceNumber_constraint,
+ RANAP_UL_GTP_PDU_SequenceNumber_decode_ber,
+ RANAP_UL_GTP_PDU_SequenceNumber_encode_der,
+ RANAP_UL_GTP_PDU_SequenceNumber_decode_xer,
+ RANAP_UL_GTP_PDU_SequenceNumber_encode_xer,
+ RANAP_UL_GTP_PDU_SequenceNumber_decode_uper,
+ RANAP_UL_GTP_PDU_SequenceNumber_encode_uper,
+ RANAP_UL_GTP_PDU_SequenceNumber_decode_aper,
+ RANAP_UL_GTP_PDU_SequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_UL_GTP_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UL_GTP_PDU_SequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UL-N-PDU-SequenceNumber.c b/src/ranap/RANAP_UL-N-PDU-SequenceNumber.c
new file mode 100644
index 0000000..dd49cc9
--- /dev/null
+++ b/src/ranap/RANAP_UL-N-PDU-SequenceNumber.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UL-N-PDU-SequenceNumber.h>
+
+int
+RANAP_UL_N_PDU_SequenceNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_UL_N_PDU_SequenceNumber_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UL_N_PDU_SequenceNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_N_PDU_SequenceNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UL_N_PDU_SequenceNumber_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_N_PDU_SequenceNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UL_N_PDU_SequenceNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UL_N_PDU_SequenceNumber_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UL_N_PDU_SequenceNumber_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UL_N_PDU_SequenceNumber_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UL_N_PDU_SequenceNumber_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UL_N_PDU_SequenceNumber_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UL_N_PDU_SequenceNumber_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UL_N_PDU_SequenceNumber = {
+ "RANAP_UL-N-PDU-SequenceNumber",
+ "RANAP_UL-N-PDU-SequenceNumber",
+ RANAP_UL_N_PDU_SequenceNumber_free,
+ RANAP_UL_N_PDU_SequenceNumber_print,
+ RANAP_UL_N_PDU_SequenceNumber_constraint,
+ RANAP_UL_N_PDU_SequenceNumber_decode_ber,
+ RANAP_UL_N_PDU_SequenceNumber_encode_der,
+ RANAP_UL_N_PDU_SequenceNumber_decode_xer,
+ RANAP_UL_N_PDU_SequenceNumber_encode_xer,
+ RANAP_UL_N_PDU_SequenceNumber_decode_uper,
+ RANAP_UL_N_PDU_SequenceNumber_encode_uper,
+ RANAP_UL_N_PDU_SequenceNumber_decode_aper,
+ RANAP_UL_N_PDU_SequenceNumber_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1,
+ sizeof(asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1)
+ /sizeof(asn_DEF_RANAP_UL_N_PDU_SequenceNumber_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UL_N_PDU_SequenceNumber_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UP-ModeVersions.c b/src/ranap/RANAP_UP-ModeVersions.c
new file mode 100644
index 0000000..4345da9
--- /dev/null
+++ b/src/ranap/RANAP_UP-ModeVersions.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UP-ModeVersions.h>
+
+int
+RANAP_UP_ModeVersions_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 16l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RANAP_UP_ModeVersions_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UP_ModeVersions_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UP_ModeVersions_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UP_ModeVersions_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UP_ModeVersions_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UP_ModeVersions_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UP_ModeVersions_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UP_ModeVersions_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UP_ModeVersions_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UP_ModeVersions_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UP_ModeVersions_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UP_ModeVersions_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 16l, 16l } /* (SIZE(16..16)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UP_ModeVersions_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UP_ModeVersions = {
+ "RANAP_UP-ModeVersions",
+ "RANAP_UP-ModeVersions",
+ RANAP_UP_ModeVersions_free,
+ RANAP_UP_ModeVersions_print,
+ RANAP_UP_ModeVersions_constraint,
+ RANAP_UP_ModeVersions_decode_ber,
+ RANAP_UP_ModeVersions_encode_der,
+ RANAP_UP_ModeVersions_decode_xer,
+ RANAP_UP_ModeVersions_encode_xer,
+ RANAP_UP_ModeVersions_decode_uper,
+ RANAP_UP_ModeVersions_encode_uper,
+ RANAP_UP_ModeVersions_decode_aper,
+ RANAP_UP_ModeVersions_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UP_ModeVersions_tags_1,
+ sizeof(asn_DEF_RANAP_UP_ModeVersions_tags_1)
+ /sizeof(asn_DEF_RANAP_UP_ModeVersions_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UP_ModeVersions_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UP_ModeVersions_tags_1)
+ /sizeof(asn_DEF_RANAP_UP_ModeVersions_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UP_ModeVersions_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UPInformation.c b/src/ranap/RANAP_UPInformation.c
new file mode 100644
index 0000000..a997ae6
--- /dev/null
+++ b/src/ranap/RANAP_UPInformation.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UPInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UPInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, frameSeqNoUL),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_FrameSequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "frameSeqNoUL"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, frameSeqNoDL),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_FrameSequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "frameSeqNoDL"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, pdu14FrameSeqNoUL),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PDUType14FrameSequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pdu14FrameSeqNoUL"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, pdu14FrameSeqNoDL),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PDUType14FrameSequenceNumber,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pdu14FrameSeqNoDL"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, dataPDUType),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_DataPDUType,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dataPDUType"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UPInformation, upinitialisationFrame),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UPInitialisationFrame,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "upinitialisationFrame"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_UPInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_UPInformation_oms_1[] = { 6 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UPInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UPInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frameSeqNoUL */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frameSeqNoDL */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pdu14FrameSeqNoUL */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pdu14FrameSeqNoDL */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dataPDUType */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* upinitialisationFrame */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UPInformation_specs_1 = {
+ sizeof(struct RANAP_UPInformation),
+ offsetof(struct RANAP_UPInformation, _asn_ctx),
+ asn_MAP_RANAP_UPInformation_tag2el_1,
+ 7, /* Count of tags in the map */
+ asn_MAP_RANAP_UPInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 6, /* Start extensions */
+ 8 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UPInformation = {
+ "RANAP_UPInformation",
+ "RANAP_UPInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UPInformation_tags_1,
+ sizeof(asn_DEF_RANAP_UPInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_UPInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UPInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UPInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_UPInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UPInformation_1,
+ 7, /* Elements count */
+ &asn_SPC_RANAP_UPInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UPInitialisationFrame.c b/src/ranap/RANAP_UPInitialisationFrame.c
new file mode 100644
index 0000000..7ff360c
--- /dev/null
+++ b/src/ranap/RANAP_UPInitialisationFrame.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UPInitialisationFrame.h>
+
+int
+RANAP_UPInitialisationFrame_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RANAP_UPInitialisationFrame_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UPInitialisationFrame_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UPInitialisationFrame_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UPInitialisationFrame_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UPInitialisationFrame_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UPInitialisationFrame_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UPInitialisationFrame_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UPInitialisationFrame_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UPInitialisationFrame_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UPInitialisationFrame_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UPInitialisationFrame_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RANAP_UPInitialisationFrame_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UPInitialisationFrame = {
+ "RANAP_UPInitialisationFrame",
+ "RANAP_UPInitialisationFrame",
+ RANAP_UPInitialisationFrame_free,
+ RANAP_UPInitialisationFrame_print,
+ RANAP_UPInitialisationFrame_constraint,
+ RANAP_UPInitialisationFrame_decode_ber,
+ RANAP_UPInitialisationFrame_encode_der,
+ RANAP_UPInitialisationFrame_decode_xer,
+ RANAP_UPInitialisationFrame_encode_xer,
+ RANAP_UPInitialisationFrame_decode_uper,
+ RANAP_UPInitialisationFrame_encode_uper,
+ RANAP_UPInitialisationFrame_decode_aper,
+ RANAP_UPInitialisationFrame_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UPInitialisationFrame_tags_1,
+ sizeof(asn_DEF_RANAP_UPInitialisationFrame_tags_1)
+ /sizeof(asn_DEF_RANAP_UPInitialisationFrame_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UPInitialisationFrame_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UPInitialisationFrame_tags_1)
+ /sizeof(asn_DEF_RANAP_UPInitialisationFrame_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_USCH-ID.c b/src/ranap/RANAP_USCH-ID.c
new file mode 100644
index 0000000..4784926
--- /dev/null
+++ b/src/ranap/RANAP_USCH-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_USCH-ID.h>
+
+int
+RANAP_USCH_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_USCH_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_USCH_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_USCH_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_USCH_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_USCH_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_USCH_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_USCH_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_USCH_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_USCH_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_USCH_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_USCH_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_USCH_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_USCH_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_USCH_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_USCH_ID = {
+ "RANAP_USCH-ID",
+ "RANAP_USCH-ID",
+ RANAP_USCH_ID_free,
+ RANAP_USCH_ID_print,
+ RANAP_USCH_ID_constraint,
+ RANAP_USCH_ID_decode_ber,
+ RANAP_USCH_ID_encode_der,
+ RANAP_USCH_ID_decode_xer,
+ RANAP_USCH_ID_encode_xer,
+ RANAP_USCH_ID_decode_uper,
+ RANAP_USCH_ID_encode_uper,
+ RANAP_USCH_ID_decode_aper,
+ RANAP_USCH_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_USCH_ID_tags_1,
+ sizeof(asn_DEF_RANAP_USCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_USCH_ID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_USCH_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_USCH_ID_tags_1)
+ /sizeof(asn_DEF_RANAP_USCH_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_USCH_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_UTRAN-CellID.c b/src/ranap/RANAP_UTRAN-CellID.c
new file mode 100644
index 0000000..8735f20
--- /dev/null
+++ b/src/ranap/RANAP_UTRAN-CellID.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UTRAN-CellID.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UTRAN_CellID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UTRAN_CellID, pLMNidentity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_PLMNidentity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "pLMNidentity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UTRAN_CellID, cellID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TargetCellId,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cellID"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_UTRAN_CellID, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_UTRAN_CellID_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UTRAN_CellID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UTRAN_CellID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UTRAN_CellID_specs_1 = {
+ sizeof(struct RANAP_UTRAN_CellID),
+ offsetof(struct RANAP_UTRAN_CellID, _asn_ctx),
+ asn_MAP_RANAP_UTRAN_CellID_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_UTRAN_CellID_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UTRAN_CellID = {
+ "RANAP_UTRAN-CellID",
+ "RANAP_UTRAN-CellID",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UTRAN_CellID_tags_1,
+ sizeof(asn_DEF_RANAP_UTRAN_CellID_tags_1)
+ /sizeof(asn_DEF_RANAP_UTRAN_CellID_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UTRAN_CellID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UTRAN_CellID_tags_1)
+ /sizeof(asn_DEF_RANAP_UTRAN_CellID_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UTRAN_CellID_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_UTRAN_CellID_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UeRadioCapabilityMatchRequest.c b/src/ranap/RANAP_UeRadioCapabilityMatchRequest.c
new file mode 100644
index 0000000..d2b179b
--- /dev/null
+++ b/src/ranap/RANAP_UeRadioCapabilityMatchRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UeRadioCapabilityMatchRequest.h>
+
+static int
+memb_ueRadioCapabilityMatchRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueRadioCapabilityMatchRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueRadioCapabilityMatchRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueRadioCapabilityMatchRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueRadioCapabilityMatchRequest_ies_specs_2 = {
+ sizeof(struct ueRadioCapabilityMatchRequest_ies),
+ offsetof(struct ueRadioCapabilityMatchRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueRadioCapabilityMatchRequest_ies_2 = {
+ "ueRadioCapabilityMatchRequest-ies",
+ "ueRadioCapabilityMatchRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2,
+ sizeof(asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2)
+ /sizeof(asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2)
+ /sizeof(asn_DEF_ueRadioCapabilityMatchRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueRadioCapabilityMatchRequest_ies_constr_2,
+ asn_MBR_ueRadioCapabilityMatchRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueRadioCapabilityMatchRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UeRadioCapabilityMatchRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UeRadioCapabilityMatchRequest, ueRadioCapabilityMatchRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueRadioCapabilityMatchRequest_ies_2,
+ memb_ueRadioCapabilityMatchRequest_ies_constraint_1,
+ &asn_PER_memb_ueRadioCapabilityMatchRequest_ies_constr_2,
+ 0,
+ "ueRadioCapabilityMatchRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UeRadioCapabilityMatchRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRadioCapabilityMatchRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UeRadioCapabilityMatchRequest_specs_1 = {
+ sizeof(struct RANAP_UeRadioCapabilityMatchRequest),
+ offsetof(struct RANAP_UeRadioCapabilityMatchRequest, _asn_ctx),
+ asn_MAP_RANAP_UeRadioCapabilityMatchRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UeRadioCapabilityMatchRequest = {
+ "RANAP_UeRadioCapabilityMatchRequest",
+ "RANAP_UeRadioCapabilityMatchRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1,
+ sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UeRadioCapabilityMatchRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UeRadioCapabilityMatchRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UeRadioCapabilityMatchResponse.c b/src/ranap/RANAP_UeRadioCapabilityMatchResponse.c
new file mode 100644
index 0000000..50be895
--- /dev/null
+++ b/src/ranap/RANAP_UeRadioCapabilityMatchResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UeRadioCapabilityMatchResponse.h>
+
+static int
+memb_ueRadioCapabilityMatchResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_ueRadioCapabilityMatchResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_ueRadioCapabilityMatchResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueRadioCapabilityMatchResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueRadioCapabilityMatchResponse_ies_specs_2 = {
+ sizeof(struct ueRadioCapabilityMatchResponse_ies),
+ offsetof(struct ueRadioCapabilityMatchResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueRadioCapabilityMatchResponse_ies_2 = {
+ "ueRadioCapabilityMatchResponse-ies",
+ "ueRadioCapabilityMatchResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2,
+ sizeof(asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2)
+ /sizeof(asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2)
+ /sizeof(asn_DEF_ueRadioCapabilityMatchResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_ueRadioCapabilityMatchResponse_ies_constr_2,
+ asn_MBR_ueRadioCapabilityMatchResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_ueRadioCapabilityMatchResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UeRadioCapabilityMatchResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UeRadioCapabilityMatchResponse, ueRadioCapabilityMatchResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_ueRadioCapabilityMatchResponse_ies_2,
+ memb_ueRadioCapabilityMatchResponse_ies_constraint_1,
+ &asn_PER_memb_ueRadioCapabilityMatchResponse_ies_constr_2,
+ 0,
+ "ueRadioCapabilityMatchResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UeRadioCapabilityMatchResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueRadioCapabilityMatchResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UeRadioCapabilityMatchResponse_specs_1 = {
+ sizeof(struct RANAP_UeRadioCapabilityMatchResponse),
+ offsetof(struct RANAP_UeRadioCapabilityMatchResponse, _asn_ctx),
+ asn_MAP_RANAP_UeRadioCapabilityMatchResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UeRadioCapabilityMatchResponse = {
+ "RANAP_UeRadioCapabilityMatchResponse",
+ "RANAP_UeRadioCapabilityMatchResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1,
+ sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_UeRadioCapabilityMatchResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UeRadioCapabilityMatchResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UeRadioCapabilityMatchResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UnsuccessfulLinking-IEs.c b/src/ranap/RANAP_UnsuccessfulLinking-IEs.c
new file mode 100644
index 0000000..9b18171
--- /dev/null
+++ b/src/ranap/RANAP_UnsuccessfulLinking-IEs.c
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UnsuccessfulLinking-IEs.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_UnsuccessfulLinking_IEs_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 7, 7, 1l, 128l } /* (SIZE(1..128)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_MemberD_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct MemberD, tMGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_TMGI,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct MemberD, cause),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_RANAP_Cause,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cause"
+ },
+ { ATF_POINTER, 1, offsetof(struct MemberD, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_MemberD_oms_2[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MemberD_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MemberD_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MemberD_specs_2 = {
+ sizeof(struct MemberD),
+ offsetof(struct MemberD, _asn_ctx),
+ asn_MAP_MemberD_tag2el_2,
+ 3, /* Count of tags in the map */
+ asn_MAP_MemberD_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_MemberD_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_MemberD_tags_2,
+ sizeof(asn_DEF_MemberD_tags_2)
+ /sizeof(asn_DEF_MemberD_tags_2[0]), /* 1 */
+ asn_DEF_MemberD_tags_2, /* Same as above */
+ sizeof(asn_DEF_MemberD_tags_2)
+ /sizeof(asn_DEF_MemberD_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_MemberD_2,
+ 3, /* Elements count */
+ &asn_SPC_MemberD_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UnsuccessfulLinking_IEs_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_MemberD_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RANAP_UnsuccessfulLinking_IEs_specs_1 = {
+ sizeof(struct RANAP_UnsuccessfulLinking_IEs),
+ offsetof(struct RANAP_UnsuccessfulLinking_IEs, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfulLinking_IEs = {
+ "RANAP_UnsuccessfulLinking-IEs",
+ "RANAP_UnsuccessfulLinking-IEs",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1,
+ sizeof(asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfulLinking_IEs_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UnsuccessfulLinking_IEs_constr_1,
+ asn_MBR_RANAP_UnsuccessfulLinking_IEs_1,
+ 1, /* Single element */
+ &asn_SPC_RANAP_UnsuccessfulLinking_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UnsuccessfulOutcome.c b/src/ranap/RANAP_UnsuccessfulOutcome.c
new file mode 100644
index 0000000..897d1af
--- /dev/null
+++ b/src/ranap/RANAP_UnsuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UnsuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UnsuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UnsuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UnsuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UnsuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UnsuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UnsuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UnsuccessfulOutcome_specs_1 = {
+ sizeof(struct RANAP_UnsuccessfulOutcome),
+ offsetof(struct RANAP_UnsuccessfulOutcome, _asn_ctx),
+ asn_MAP_RANAP_UnsuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfulOutcome = {
+ "RANAP_UnsuccessfulOutcome",
+ "RANAP_UnsuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UnsuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_RANAP_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UnsuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UnsuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_UnsuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.c b/src/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.c
new file mode 100644
index 0000000..164712b
--- /dev/null
+++ b/src/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.c
@@ -0,0 +1,161 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UnsuccessfullyTransmittedDataVolume.h>
+
+int
+RANAP_UnsuccessfullyTransmittedDataVolume_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+
+ /* Constraint check succeeded */
+ return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */
+}
+
+void
+RANAP_UnsuccessfullyTransmittedDataVolume_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UnsuccessfullyTransmittedDataVolume_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UnsuccessfullyTransmittedDataVolume_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UnsuccessfullyTransmittedDataVolume_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UnsuccessfullyTransmittedDataVolume_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 32, -1, 0l, 4294967295ul } /* (0..4294967295) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_UnsuccessfullyTransmittedDataVolume_specs_1 = {
+ 0, 0, 0, 0, 0,
+ 0, /* Native long size */
+ 1 /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume = {
+ "RANAP_UnsuccessfullyTransmittedDataVolume",
+ "RANAP_UnsuccessfullyTransmittedDataVolume",
+ RANAP_UnsuccessfullyTransmittedDataVolume_free,
+ RANAP_UnsuccessfullyTransmittedDataVolume_print,
+ RANAP_UnsuccessfullyTransmittedDataVolume_constraint,
+ RANAP_UnsuccessfullyTransmittedDataVolume_decode_ber,
+ RANAP_UnsuccessfullyTransmittedDataVolume_encode_der,
+ RANAP_UnsuccessfullyTransmittedDataVolume_decode_xer,
+ RANAP_UnsuccessfullyTransmittedDataVolume_encode_xer,
+ RANAP_UnsuccessfullyTransmittedDataVolume_decode_uper,
+ RANAP_UnsuccessfullyTransmittedDataVolume_encode_uper,
+ RANAP_UnsuccessfullyTransmittedDataVolume_decode_aper,
+ RANAP_UnsuccessfullyTransmittedDataVolume_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1,
+ sizeof(asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1)
+ /sizeof(asn_DEF_RANAP_UnsuccessfullyTransmittedDataVolume_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UnsuccessfullyTransmittedDataVolume_constr_1,
+ 0, 0, /* No members */
+ &asn_SPC_RANAP_UnsuccessfullyTransmittedDataVolume_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UplinkInformationExchangeFailure.c b/src/ranap/RANAP_UplinkInformationExchangeFailure.c
new file mode 100644
index 0000000..ce7253a
--- /dev/null
+++ b/src/ranap/RANAP_UplinkInformationExchangeFailure.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeFailure.h>
+
+static int
+memb_uplinkInformationExchangeFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_uplinkInformationExchangeFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_uplinkInformationExchangeFailure_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uplinkInformationExchangeFailure_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkInformationExchangeFailure_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkInformationExchangeFailure_ies_specs_2 = {
+ sizeof(struct uplinkInformationExchangeFailure_ies),
+ offsetof(struct uplinkInformationExchangeFailure_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkInformationExchangeFailure_ies_2 = {
+ "uplinkInformationExchangeFailure-ies",
+ "uplinkInformationExchangeFailure-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_uplinkInformationExchangeFailure_ies_tags_2,
+ sizeof(asn_DEF_uplinkInformationExchangeFailure_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeFailure_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_uplinkInformationExchangeFailure_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_uplinkInformationExchangeFailure_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeFailure_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_uplinkInformationExchangeFailure_ies_constr_2,
+ asn_MBR_uplinkInformationExchangeFailure_ies_2,
+ 1, /* Single element */
+ &asn_SPC_uplinkInformationExchangeFailure_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UplinkInformationExchangeFailure_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UplinkInformationExchangeFailure, uplinkInformationExchangeFailure_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_uplinkInformationExchangeFailure_ies_2,
+ memb_uplinkInformationExchangeFailure_ies_constraint_1,
+ &asn_PER_memb_uplinkInformationExchangeFailure_ies_constr_2,
+ 0,
+ "uplinkInformationExchangeFailure-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UplinkInformationExchangeFailure_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* uplinkInformationExchangeFailure-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UplinkInformationExchangeFailure_specs_1 = {
+ sizeof(struct RANAP_UplinkInformationExchangeFailure),
+ offsetof(struct RANAP_UplinkInformationExchangeFailure, _asn_ctx),
+ asn_MAP_RANAP_UplinkInformationExchangeFailure_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeFailure = {
+ "RANAP_UplinkInformationExchangeFailure",
+ "RANAP_UplinkInformationExchangeFailure",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1,
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeFailure_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UplinkInformationExchangeFailure_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UplinkInformationExchangeFailure_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UplinkInformationExchangeRequest.c b/src/ranap/RANAP_UplinkInformationExchangeRequest.c
new file mode 100644
index 0000000..1be1464
--- /dev/null
+++ b/src/ranap/RANAP_UplinkInformationExchangeRequest.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeRequest.h>
+
+static int
+memb_uplinkInformationExchangeRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_uplinkInformationExchangeRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_uplinkInformationExchangeRequest_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uplinkInformationExchangeRequest_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkInformationExchangeRequest_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkInformationExchangeRequest_ies_specs_2 = {
+ sizeof(struct uplinkInformationExchangeRequest_ies),
+ offsetof(struct uplinkInformationExchangeRequest_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkInformationExchangeRequest_ies_2 = {
+ "uplinkInformationExchangeRequest-ies",
+ "uplinkInformationExchangeRequest-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_uplinkInformationExchangeRequest_ies_tags_2,
+ sizeof(asn_DEF_uplinkInformationExchangeRequest_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeRequest_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_uplinkInformationExchangeRequest_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_uplinkInformationExchangeRequest_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeRequest_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_uplinkInformationExchangeRequest_ies_constr_2,
+ asn_MBR_uplinkInformationExchangeRequest_ies_2,
+ 1, /* Single element */
+ &asn_SPC_uplinkInformationExchangeRequest_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UplinkInformationExchangeRequest_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UplinkInformationExchangeRequest, uplinkInformationExchangeRequest_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_uplinkInformationExchangeRequest_ies_2,
+ memb_uplinkInformationExchangeRequest_ies_constraint_1,
+ &asn_PER_memb_uplinkInformationExchangeRequest_ies_constr_2,
+ 0,
+ "uplinkInformationExchangeRequest-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UplinkInformationExchangeRequest_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* uplinkInformationExchangeRequest-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UplinkInformationExchangeRequest_specs_1 = {
+ sizeof(struct RANAP_UplinkInformationExchangeRequest),
+ offsetof(struct RANAP_UplinkInformationExchangeRequest, _asn_ctx),
+ asn_MAP_RANAP_UplinkInformationExchangeRequest_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeRequest = {
+ "RANAP_UplinkInformationExchangeRequest",
+ "RANAP_UplinkInformationExchangeRequest",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1,
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeRequest_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UplinkInformationExchangeRequest_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UplinkInformationExchangeRequest_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UplinkInformationExchangeResponse.c b/src/ranap/RANAP_UplinkInformationExchangeResponse.c
new file mode 100644
index 0000000..638a9d3
--- /dev/null
+++ b/src/ranap/RANAP_UplinkInformationExchangeResponse.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UplinkInformationExchangeResponse.h>
+
+static int
+memb_uplinkInformationExchangeResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_uplinkInformationExchangeResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_uplinkInformationExchangeResponse_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uplinkInformationExchangeResponse_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RANAP_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkInformationExchangeResponse_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkInformationExchangeResponse_ies_specs_2 = {
+ sizeof(struct uplinkInformationExchangeResponse_ies),
+ offsetof(struct uplinkInformationExchangeResponse_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkInformationExchangeResponse_ies_2 = {
+ "uplinkInformationExchangeResponse-ies",
+ "uplinkInformationExchangeResponse-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_uplinkInformationExchangeResponse_ies_tags_2,
+ sizeof(asn_DEF_uplinkInformationExchangeResponse_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeResponse_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_uplinkInformationExchangeResponse_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_uplinkInformationExchangeResponse_ies_tags_2)
+ /sizeof(asn_DEF_uplinkInformationExchangeResponse_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_uplinkInformationExchangeResponse_ies_constr_2,
+ asn_MBR_uplinkInformationExchangeResponse_ies_2,
+ 1, /* Single element */
+ &asn_SPC_uplinkInformationExchangeResponse_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RANAP_UplinkInformationExchangeResponse_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UplinkInformationExchangeResponse, uplinkInformationExchangeResponse_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_uplinkInformationExchangeResponse_ies_2,
+ memb_uplinkInformationExchangeResponse_ies_constraint_1,
+ &asn_PER_memb_uplinkInformationExchangeResponse_ies_constr_2,
+ 0,
+ "uplinkInformationExchangeResponse-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UplinkInformationExchangeResponse_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* uplinkInformationExchangeResponse-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UplinkInformationExchangeResponse_specs_1 = {
+ sizeof(struct RANAP_UplinkInformationExchangeResponse),
+ offsetof(struct RANAP_UplinkInformationExchangeResponse, _asn_ctx),
+ asn_MAP_RANAP_UplinkInformationExchangeResponse_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UplinkInformationExchangeResponse = {
+ "RANAP_UplinkInformationExchangeResponse",
+ "RANAP_UplinkInformationExchangeResponse",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1,
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1)
+ /sizeof(asn_DEF_RANAP_UplinkInformationExchangeResponse_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UplinkInformationExchangeResponse_1,
+ 1, /* Elements count */
+ &asn_SPC_RANAP_UplinkInformationExchangeResponse_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UserPlaneInformation.c b/src/ranap/RANAP_UserPlaneInformation.c
new file mode 100644
index 0000000..cf47b4a
--- /dev/null
+++ b/src/ranap/RANAP_UserPlaneInformation.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-PDU"
+ * found in "../../asn1/ranap/RANAP-PDU.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UserPlaneInformation.h>
+
+static asn_TYPE_member_t asn_MBR_RANAP_UserPlaneInformation_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UserPlaneInformation, userPlaneMode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UserPlaneMode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "userPlaneMode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_UserPlaneInformation, uP_ModeVersions),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_UP_ModeVersions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "uP-ModeVersions"
+ },
+ { ATF_POINTER, 1, offsetof(struct RANAP_UserPlaneInformation, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_ProtocolExtensionContainer,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RANAP_UserPlaneInformation_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UserPlaneInformation_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UserPlaneInformation_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* userPlaneMode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uP-ModeVersions */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UserPlaneInformation_specs_1 = {
+ sizeof(struct RANAP_UserPlaneInformation),
+ offsetof(struct RANAP_UserPlaneInformation, _asn_ctx),
+ asn_MAP_RANAP_UserPlaneInformation_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_RANAP_UserPlaneInformation_oms_1, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 2, /* Start extensions */
+ 4 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UserPlaneInformation = {
+ "RANAP_UserPlaneInformation",
+ "RANAP_UserPlaneInformation",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UserPlaneInformation_tags_1,
+ sizeof(asn_DEF_RANAP_UserPlaneInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_UserPlaneInformation_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UserPlaneInformation_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UserPlaneInformation_tags_1)
+ /sizeof(asn_DEF_RANAP_UserPlaneInformation_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_UserPlaneInformation_1,
+ 3, /* Elements count */
+ &asn_SPC_RANAP_UserPlaneInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_UserPlaneMode.c b/src/ranap/RANAP_UserPlaneMode.c
new file mode 100644
index 0000000..2e6205a
--- /dev/null
+++ b/src/ranap/RANAP_UserPlaneMode.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_UserPlaneMode.h>
+
+int
+RANAP_UserPlaneMode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_UserPlaneMode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_UserPlaneMode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UserPlaneMode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_UserPlaneMode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UserPlaneMode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_UserPlaneMode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_UserPlaneMode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_UserPlaneMode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_UserPlaneMode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_UserPlaneMode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_UserPlaneMode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_UserPlaneMode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_UserPlaneMode_value2enum_1[] = {
+ { 0, 16, "transparent-mode" },
+ { 1, 37, "support-mode-for-predefined-SDU-sizes" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_UserPlaneMode_enum2value_1[] = {
+ 1, /* support-mode-for-predefined-SDU-sizes(1) */
+ 0 /* transparent-mode(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_UserPlaneMode_specs_1 = {
+ asn_MAP_RANAP_UserPlaneMode_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_UserPlaneMode_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_UserPlaneMode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UserPlaneMode = {
+ "RANAP_UserPlaneMode",
+ "RANAP_UserPlaneMode",
+ RANAP_UserPlaneMode_free,
+ RANAP_UserPlaneMode_print,
+ RANAP_UserPlaneMode_constraint,
+ RANAP_UserPlaneMode_decode_ber,
+ RANAP_UserPlaneMode_encode_der,
+ RANAP_UserPlaneMode_decode_xer,
+ RANAP_UserPlaneMode_encode_xer,
+ RANAP_UserPlaneMode_decode_uper,
+ RANAP_UserPlaneMode_encode_uper,
+ RANAP_UserPlaneMode_decode_aper,
+ RANAP_UserPlaneMode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_UserPlaneMode_tags_1,
+ sizeof(asn_DEF_RANAP_UserPlaneMode_tags_1)
+ /sizeof(asn_DEF_RANAP_UserPlaneMode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_UserPlaneMode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_UserPlaneMode_tags_1)
+ /sizeof(asn_DEF_RANAP_UserPlaneMode_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_UserPlaneMode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_UserPlaneMode_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_VelocityEstimate.c b/src/ranap/RANAP_VelocityEstimate.c
new file mode 100644
index 0000000..14d7ad4
--- /dev/null
+++ b/src/ranap/RANAP_VelocityEstimate.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_VelocityEstimate.h>
+
+static asn_per_constraints_t asn_PER_type_RANAP_VelocityEstimate_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_VelocityEstimate_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VelocityEstimate, choice.horizontalVelocity),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalVelocity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalVelocity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VelocityEstimate, choice.horizontalWithVerticalVelocity),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalWithVerticalVelocity,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalWithVerticalVelocity"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VelocityEstimate, choice.horizontalVelocityWithUncertainty),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalVelocityWithUncertainty,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalVelocityWithUncertainty"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VelocityEstimate, choice.horizontalWithVeritcalVelocityAndUncertainty),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_HorizontalWithVerticalVelocityAndUncertainty,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "horizontalWithVeritcalVelocityAndUncertainty"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_VelocityEstimate_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* horizontalVelocity */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* horizontalWithVerticalVelocity */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* horizontalVelocityWithUncertainty */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* horizontalWithVeritcalVelocityAndUncertainty */
+};
+static asn_CHOICE_specifics_t asn_SPC_RANAP_VelocityEstimate_specs_1 = {
+ sizeof(struct RANAP_VelocityEstimate),
+ offsetof(struct RANAP_VelocityEstimate, _asn_ctx),
+ offsetof(struct RANAP_VelocityEstimate, present),
+ sizeof(((struct RANAP_VelocityEstimate *)0)->present),
+ asn_MAP_RANAP_VelocityEstimate_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_VelocityEstimate = {
+ "RANAP_VelocityEstimate",
+ "RANAP_VelocityEstimate",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RANAP_VelocityEstimate_constr_1,
+ asn_MBR_RANAP_VelocityEstimate_1,
+ 4, /* Elements count */
+ &asn_SPC_RANAP_VelocityEstimate_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_VerticalAccuracyCode.c b/src/ranap/RANAP_VerticalAccuracyCode.c
new file mode 100644
index 0000000..0843c05
--- /dev/null
+++ b/src/ranap/RANAP_VerticalAccuracyCode.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_VerticalAccuracyCode.h>
+
+int
+RANAP_VerticalAccuracyCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 127l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RANAP_VerticalAccuracyCode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_VerticalAccuracyCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalAccuracyCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_VerticalAccuracyCode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalAccuracyCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_VerticalAccuracyCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalAccuracyCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_VerticalAccuracyCode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_VerticalAccuracyCode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_VerticalAccuracyCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VerticalAccuracyCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_VerticalAccuracyCode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 7, 7, 0l, 127l } /* (0..127) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_VerticalAccuracyCode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalAccuracyCode = {
+ "RANAP_VerticalAccuracyCode",
+ "RANAP_VerticalAccuracyCode",
+ RANAP_VerticalAccuracyCode_free,
+ RANAP_VerticalAccuracyCode_print,
+ RANAP_VerticalAccuracyCode_constraint,
+ RANAP_VerticalAccuracyCode_decode_ber,
+ RANAP_VerticalAccuracyCode_encode_der,
+ RANAP_VerticalAccuracyCode_decode_xer,
+ RANAP_VerticalAccuracyCode_encode_xer,
+ RANAP_VerticalAccuracyCode_decode_uper,
+ RANAP_VerticalAccuracyCode_encode_uper,
+ RANAP_VerticalAccuracyCode_decode_aper,
+ RANAP_VerticalAccuracyCode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_VerticalAccuracyCode_tags_1,
+ sizeof(asn_DEF_RANAP_VerticalAccuracyCode_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalAccuracyCode_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_VerticalAccuracyCode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_VerticalAccuracyCode_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalAccuracyCode_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_VerticalAccuracyCode_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/ranap/RANAP_VerticalSpeedDirection.c b/src/ranap/RANAP_VerticalSpeedDirection.c
new file mode 100644
index 0000000..6806f9d
--- /dev/null
+++ b/src/ranap/RANAP_VerticalSpeedDirection.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_VerticalSpeedDirection.h>
+
+int
+RANAP_VerticalSpeedDirection_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_VerticalSpeedDirection_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_VerticalSpeedDirection_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalSpeedDirection_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_VerticalSpeedDirection_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalSpeedDirection_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_VerticalSpeedDirection_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VerticalSpeedDirection_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_VerticalSpeedDirection_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_VerticalSpeedDirection_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_VerticalSpeedDirection_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VerticalSpeedDirection_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_VerticalSpeedDirection_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_VerticalSpeedDirection_value2enum_1[] = {
+ { 0, 6, "upward" },
+ { 1, 8, "downward" }
+};
+static const unsigned int asn_MAP_RANAP_VerticalSpeedDirection_enum2value_1[] = {
+ 1, /* downward(1) */
+ 0 /* upward(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_VerticalSpeedDirection_specs_1 = {
+ asn_MAP_RANAP_VerticalSpeedDirection_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_VerticalSpeedDirection_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_VerticalSpeedDirection_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalSpeedDirection = {
+ "RANAP_VerticalSpeedDirection",
+ "RANAP_VerticalSpeedDirection",
+ RANAP_VerticalSpeedDirection_free,
+ RANAP_VerticalSpeedDirection_print,
+ RANAP_VerticalSpeedDirection_constraint,
+ RANAP_VerticalSpeedDirection_decode_ber,
+ RANAP_VerticalSpeedDirection_encode_der,
+ RANAP_VerticalSpeedDirection_decode_xer,
+ RANAP_VerticalSpeedDirection_encode_xer,
+ RANAP_VerticalSpeedDirection_decode_uper,
+ RANAP_VerticalSpeedDirection_encode_uper,
+ RANAP_VerticalSpeedDirection_decode_aper,
+ RANAP_VerticalSpeedDirection_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_VerticalSpeedDirection_tags_1,
+ sizeof(asn_DEF_RANAP_VerticalSpeedDirection_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalSpeedDirection_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_VerticalSpeedDirection_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_VerticalSpeedDirection_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalSpeedDirection_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_VerticalSpeedDirection_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_VerticalSpeedDirection_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_VerticalVelocity.c b/src/ranap/RANAP_VerticalVelocity.c
new file mode 100644
index 0000000..c35778a
--- /dev/null
+++ b/src/ranap/RANAP_VerticalVelocity.c
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_VerticalVelocity.h>
+
+static int
+memb_veritcalSpeed_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_veritcalSpeed_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RANAP_VerticalVelocity_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VerticalVelocity, veritcalSpeed),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_veritcalSpeed_constraint_1,
+ &asn_PER_memb_veritcalSpeed_constr_2,
+ 0,
+ "veritcalSpeed"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RANAP_VerticalVelocity, veritcalSpeedDirection),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RANAP_VerticalSpeedDirection,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "veritcalSpeedDirection"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_VerticalVelocity_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_VerticalVelocity_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* veritcalSpeed */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* veritcalSpeedDirection */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_VerticalVelocity_specs_1 = {
+ sizeof(struct RANAP_VerticalVelocity),
+ offsetof(struct RANAP_VerticalVelocity, _asn_ctx),
+ asn_MAP_RANAP_VerticalVelocity_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_VerticalVelocity = {
+ "RANAP_VerticalVelocity",
+ "RANAP_VerticalVelocity",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_VerticalVelocity_tags_1,
+ sizeof(asn_DEF_RANAP_VerticalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalVelocity_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_VerticalVelocity_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_VerticalVelocity_tags_1)
+ /sizeof(asn_DEF_RANAP_VerticalVelocity_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RANAP_VerticalVelocity_1,
+ 2, /* Elements count */
+ &asn_SPC_RANAP_VerticalVelocity_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap/RANAP_VoiceSupportMatchIndicator.c b/src/ranap/RANAP_VoiceSupportMatchIndicator.c
new file mode 100644
index 0000000..2ad7a29
--- /dev/null
+++ b/src/ranap/RANAP_VoiceSupportMatchIndicator.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include <osmocom/ranap/RANAP_VoiceSupportMatchIndicator.h>
+
+int
+RANAP_VoiceSupportMatchIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RANAP_VoiceSupportMatchIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RANAP_VoiceSupportMatchIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VoiceSupportMatchIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RANAP_VoiceSupportMatchIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VoiceSupportMatchIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RANAP_VoiceSupportMatchIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RANAP_VoiceSupportMatchIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RANAP_VoiceSupportMatchIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RANAP_VoiceSupportMatchIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RANAP_VoiceSupportMatchIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RANAP_VoiceSupportMatchIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RANAP_VoiceSupportMatchIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RANAP_VoiceSupportMatchIndicator_value2enum_1[] = {
+ { 0, 9, "supported" },
+ { 1, 13, "not-supported" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RANAP_VoiceSupportMatchIndicator_enum2value_1[] = {
+ 1, /* not-supported(1) */
+ 0 /* supported(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RANAP_VoiceSupportMatchIndicator_specs_1 = {
+ asn_MAP_RANAP_VoiceSupportMatchIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RANAP_VoiceSupportMatchIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_VoiceSupportMatchIndicator = {
+ "RANAP_VoiceSupportMatchIndicator",
+ "RANAP_VoiceSupportMatchIndicator",
+ RANAP_VoiceSupportMatchIndicator_free,
+ RANAP_VoiceSupportMatchIndicator_print,
+ RANAP_VoiceSupportMatchIndicator_constraint,
+ RANAP_VoiceSupportMatchIndicator_decode_ber,
+ RANAP_VoiceSupportMatchIndicator_encode_der,
+ RANAP_VoiceSupportMatchIndicator_decode_xer,
+ RANAP_VoiceSupportMatchIndicator_encode_xer,
+ RANAP_VoiceSupportMatchIndicator_decode_uper,
+ RANAP_VoiceSupportMatchIndicator_encode_uper,
+ RANAP_VoiceSupportMatchIndicator_decode_aper,
+ RANAP_VoiceSupportMatchIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1,
+ sizeof(asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1)
+ /sizeof(asn_DEF_RANAP_VoiceSupportMatchIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RANAP_VoiceSupportMatchIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RANAP_VoiceSupportMatchIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/ranap_common.c b/src/ranap_common.c
new file mode 100644
index 0000000..13c913f
--- /dev/null
+++ b/src/ranap_common.c
@@ -0,0 +1,583 @@
+/* common RANAP code */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdint.h>
+
+#include <osmocom/core/msgb.h>
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/ranap/ranap_common.h>
+
+extern int asn1_xer_print;
+int _ranap_DRANAP = 0;
+#define DRANAP _ranap_DRANAP
+
+const struct value_string ranap_presence_vals[5] = {
+ { RANAP_RANAP_PDU_PR_initiatingMessage, "Initiating" },
+ { RANAP_RANAP_PDU_PR_successfulOutcome, "Successful Outcome" },
+ { RANAP_RANAP_PDU_PR_unsuccessfulOutcome, "Unsuccessful Outcome" },
+ { RANAP_RANAP_PDU_PR_outcome, "(Intermediate) Outcome" },
+ { 0, NULL }
+};
+
+const struct value_string ranap_procedure_code_vals[48] = {
+ { RANAP_ProcedureCode_id_RAB_Assignment, "RAB Assignment" },
+ { RANAP_ProcedureCode_id_Iu_Release, "Iu Release" },
+ { RANAP_ProcedureCode_id_RelocationPreparation, "Relocation Preparation" },
+ { RANAP_ProcedureCode_id_RelocationResourceAllocation, "Relocation Resource Allocation" },
+ { RANAP_ProcedureCode_id_RelocationCancel, "Relocation Cancel" },
+ { RANAP_ProcedureCode_id_SRNS_ContextTransfer, "SRNS Context Transfer" },
+ { RANAP_ProcedureCode_id_SecurityModeControl, "Security Mode Control" },
+ { RANAP_ProcedureCode_id_DataVolumeReport, "Data Volume Report" },
+ { RANAP_ProcedureCode_id_Reset, "Reset" },
+ { RANAP_ProcedureCode_id_RAB_ReleaseRequest, "RAB Release Request" },
+ { RANAP_ProcedureCode_id_Iu_ReleaseRequest, "Iu Release Request" },
+ { RANAP_ProcedureCode_id_RelocationDetect, "Relocation Detect" },
+ { RANAP_ProcedureCode_id_RelocationComplete, "Relocation Complete" },
+ { RANAP_ProcedureCode_id_Paging, "Paging" },
+ { RANAP_ProcedureCode_id_CommonID, "Common ID" },
+ { RANAP_ProcedureCode_id_CN_InvokeTrace, "CN Invoke Trace" },
+ { RANAP_ProcedureCode_id_LocationReportingControl, "Location Reporting Control" },
+ { RANAP_ProcedureCode_id_LocationReport, "Location Report" },
+ { RANAP_ProcedureCode_id_InitialUE_Message, "Initial UE Message" },
+ { RANAP_ProcedureCode_id_DirectTransfer, "Direct Transfer" },
+ { RANAP_ProcedureCode_id_OverloadControl, "Overload Control" },
+ { RANAP_ProcedureCode_id_ErrorIndication, "Error Indication" },
+ { RANAP_ProcedureCode_id_SRNS_DataForward, "SRNS Data Forward" },
+ { RANAP_ProcedureCode_id_ForwardSRNS_Context, "Forward SRNS Context" },
+ { RANAP_ProcedureCode_id_privateMessage, "Private Message" },
+ { RANAP_ProcedureCode_id_CN_DeactivateTrace, "CN Deactivate Trace" },
+ { RANAP_ProcedureCode_id_ResetResource, "Reset Resource" },
+ { RANAP_ProcedureCode_id_RANAP_Relocation, "RANAP Relocation" },
+ { RANAP_ProcedureCode_id_RAB_ModifyRequest, "RAB Modify Request" },
+ { RANAP_ProcedureCode_id_LocationRelatedData, "Location Related Data" },
+ { RANAP_ProcedureCode_id_InformationTransfer, "Information Transfer" },
+ { RANAP_ProcedureCode_id_UESpecificInformation, "UE Specific Information" },
+ { RANAP_ProcedureCode_id_UplinkInformationExchange, "Uplink Information Transfer" },
+ { RANAP_ProcedureCode_id_DirectInformationTransfer, "Direct Information Transfer" },
+ { RANAP_ProcedureCode_id_MBMSSessionStart, "MBMS Session Start" },
+ { RANAP_ProcedureCode_id_MBMSSessionUpdate, "MBMS Session Update" },
+ { RANAP_ProcedureCode_id_MBMSSessionStop, "MBMS Session Stop" },
+ { RANAP_ProcedureCode_id_MBMSUELinking, "MBMS UE Linking" },
+ { RANAP_ProcedureCode_id_MBMSRegistration, "MBMS Registration" },
+ { RANAP_ProcedureCode_id_MBMSCNDe_Registration_Procedure, "MBMS CN De-Registration" },
+ { RANAP_ProcedureCode_id_MBMSRABEstablishmentIndication, "MBMS RAB Establishment Indication" },
+ { RANAP_ProcedureCode_id_MBMSRABRelease, "MBMS RAB Release" },
+ { RANAP_ProcedureCode_id_enhancedRelocationComplete, "Enhanced Relocation Complete" },
+ { RANAP_ProcedureCode_id_enhancedRelocationCompleteConfirm, "Enhanced Relocation Complete Confirm" },
+ { RANAP_ProcedureCode_id_RANAPenhancedRelocation, "RANAP Enhanced Relocation" },
+ { RANAP_ProcedureCode_id_SRVCCPreparation, "SRVCC Preparation" },
+ { RANAP_ProcedureCode_id_UeRadioCapabilityMatch, "UE Radio Capability Match" },
+ { 0, NULL }
+};
+
+static const struct value_string ranap_cause_radio_vals[] = {
+ { RANAP_CauseRadioNetwork_rab_pre_empted, "RAB pre-empted" },
+ { RANAP_CauseRadioNetwork_trelocoverall_expiry, "Treloc_overall expiry" },
+ { RANAP_CauseRadioNetwork_trelocprep_expiry, "Treloc_prep expiry" },
+ { RANAP_CauseRadioNetwork_treloccomplete_expiry,"Treloc_complete expiry" },
+ { RANAP_CauseRadioNetwork_tqueing_expiry, "Tqueueing expiry" },
+ { RANAP_CauseRadioNetwork_relocation_triggered, "Relocation triggered" },
+ { RANAP_CauseRadioNetwork_trellocalloc_expiry, "Treloc_alloc expiry" },
+ { RANAP_CauseRadioNetwork_unable_to_establish_during_relocation,
+ "unable to establish during relocation" },
+ { RANAP_CauseRadioNetwork_unknown_target_rnc,
+ "unknown target RNC" },
+ { RANAP_CauseRadioNetwork_relocation_cancelled, "Relocation cancelled" },
+ { RANAP_CauseRadioNetwork_successful_relocation, "Successful relocation" },
+ { RANAP_CauseRadioNetwork_requested_ciphering_and_or_integrity_protection_algorithms_not_supported,
+ "requested ciph. and/or int. prot. algorithms not supported" },
+ { RANAP_CauseRadioNetwork_conflict_with_already_existing_integrity_protection_and_or_ciphering_information,
+ "conflict with existing int. prot. and/or ciph. information" },
+ { RANAP_CauseRadioNetwork_failure_in_the_radio_interface_procedure,
+ "failure in the radio interface procedure" },
+ { RANAP_CauseRadioNetwork_release_due_to_utran_generated_reason,
+ "release due to UTRAN generated reason" },
+ { RANAP_CauseRadioNetwork_user_inactivity, "user inactivity" },
+ { RANAP_CauseRadioNetwork_time_critical_relocation,
+ "time critical relocation" },
+ { RANAP_CauseRadioNetwork_requested_traffic_class_not_available,
+ "requested traffic class not available" },
+ { RANAP_CauseRadioNetwork_invalid_rab_parameters_value,
+ "invalid RAB parameters value" },
+ { RANAP_CauseRadioNetwork_requested_maximum_bit_rate_not_available,
+ "requested max. bit-rate not available" },
+ { RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_not_available,
+ "requested guaranteed bit-rate not available" },
+ { RANAP_CauseRadioNetwork_requested_transfer_delay_not_achievable,
+ "requested transfer delay not achievable" },
+ { RANAP_CauseRadioNetwork_invalid_rab_parameters_combination,
+ "invalid RAB parameters combination" },
+ { RANAP_CauseRadioNetwork_condition_violation_for_sdu_parameters,
+ "condition violation for SDU parameters" },
+ { RANAP_CauseRadioNetwork_condition_violation_for_traffic_handling_priority,
+ "condition violation for traffic handling priority" },
+ { RANAP_CauseRadioNetwork_condition_violation_for_guaranteed_bit_rate,
+ "condition violation for guaranteed bit-rate" },
+ { RANAP_CauseRadioNetwork_user_plane_versions_not_supported,
+ "user-plane versions not supported" },
+ { RANAP_CauseRadioNetwork_iu_up_failure, "Iu-UP failure" },
+ { RANAP_CauseRadioNetwork_relocation_failure_in_target_CN_RNC_or_target_system,
+ "relocation failure in target CN/RNC or target system" },
+ { RANAP_CauseRadioNetwork_invalid_RAB_ID, "Invalid RAB ID" },
+ { RANAP_CauseRadioNetwork_no_remaining_rab, "No remaining RAB" },
+ { RANAP_CauseRadioNetwork_interaction_with_other_procedure,
+ "interaction with other procedure" },
+ { RANAP_CauseRadioNetwork_requested_maximum_bit_rate_for_dl_not_available,
+ "requested maximum bit-rate for DL not available" },
+ { RANAP_CauseRadioNetwork_requested_maximum_bit_rate_for_ul_not_available,
+ "requested maximum bit-rate for UL not available" },
+ { RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_for_dl_not_available,
+ "requested guaranteed bit-rate for DL not available" },
+ { RANAP_CauseRadioNetwork_requested_guaranteed_bit_rate_for_ul_not_available,
+ "requested guaranteed bit-rate for UL not available" },
+ { RANAP_CauseRadioNetwork_repeated_integrity_checking_failure,
+ "repeated integrity checking failure" },
+ { RANAP_CauseRadioNetwork_requested_request_type_not_supported,
+ "requested request type not supported" },
+ { RANAP_CauseRadioNetwork_request_superseded, "request superseded" },
+ { RANAP_CauseRadioNetwork_release_due_to_UE_generated_signalling_connection_release,
+ "release due to UE-generated signalling connection release" },
+ { RANAP_CauseRadioNetwork_resource_optimisation_relocation,
+ "resource optimisation relocation" },
+ { RANAP_CauseRadioNetwork_requested_information_not_available,
+ "requested information not available" },
+ { RANAP_CauseRadioNetwork_relocation_desirable_for_radio_reasons,
+ "relocation desirable for radio reasons" },
+ { RANAP_CauseRadioNetwork_relocation_not_supported_in_target_RNC_or_target_system,
+ "relocation not supported in target RNC or target system" },
+ { RANAP_CauseRadioNetwork_directed_retry, "directed retry" },
+ { RANAP_CauseRadioNetwork_radio_connection_with_UE_Lost,
+ "radio connection with UE lost" },
+ { RANAP_CauseRadioNetwork_rNC_unable_to_establish_all_RFCs,
+ "RNC unable to establish al RFCs" },
+ { RANAP_CauseRadioNetwork_deciphering_keys_not_available,
+ "de-ciphering keys not available" },
+ { RANAP_CauseRadioNetwork_dedicated_assistance_data_not_available,
+ "dedicated assistance data not available" },
+ { RANAP_CauseRadioNetwork_relocation_target_not_allowed,
+ "relocation target not allowed" },
+ { RANAP_CauseRadioNetwork_location_reporting_congestion,
+ "relocation reporting congestion" },
+ { RANAP_CauseRadioNetwork_reduce_load_in_serving_cell,
+ "reduce load in serving cell" },
+ { RANAP_CauseRadioNetwork_no_radio_resources_available_in_target_cell,
+ "no radio resources available in target cell" },
+ { RANAP_CauseRadioNetwork_gERAN_Iumode_failure,
+ "GERAN Iu-Mode failure" },
+ { RANAP_CauseRadioNetwork_access_restricted_due_to_shared_networks,
+ "access restricted due to shared networks" },
+ { RANAP_CauseRadioNetwork_incoming_relocation_not_supported_due_to_PUESBINE_feature,
+ "incoming relocation not supported due to PUESBINE feature" },
+ { RANAP_CauseRadioNetwork_traffic_load_in_the_target_cell_higher_than_in_the_source_cell,
+ "traffic load in the target cell higher than in the source cell" },
+ { RANAP_CauseRadioNetwork_mBMS_no_multicast_service_for_this_UE,
+ "MBMS: no multicast service for this UE" },
+ { RANAP_CauseRadioNetwork_mBMS_unknown_UE_ID, "MBMS: unknown UE ID" },
+ { RANAP_CauseRadioNetwork_successful_MBMS_session_start_no_data_bearer_necessary,
+ "successful MBMS session start; no data bearer necessarry" },
+ { RANAP_CauseRadioNetwork_mBMS_superseded_due_to_NNSF,
+ "MBMS superseded due to NNSF" },
+ { RANAP_CauseRadioNetwork_mBMS_UE_linking_already_done,
+ "MBMS: UE linking already done" },
+ { RANAP_CauseRadioNetwork_mBMS_UE_de_linking_failure_no_existing_UE_linking,
+ "MBMS: UE de-linking failure; no existing UE linking" },
+ { RANAP_CauseRadioNetwork_tMGI_unknown, "TMGI unknown" },
+ { 0, NULL }
+};
+
+static const struct value_string ranap_cause_transm_vals[] = {
+ { RANAP_CauseTransmissionNetwork_signalling_transport_resource_failure,
+ "signalling transport resource failure" },
+ { RANAP_CauseTransmissionNetwork_iu_transport_connection_failed_to_establish,
+ "Iu transport connection failed to establish" },
+ { 0, NULL }
+};
+
+static const struct value_string ranap_cause_nas_vals[] = {
+ { RANAP_CauseNAS_user_restriction_start_indication,
+ "user restriction; start indication" },
+ { RANAP_CauseNAS_user_restriction_end_indication,
+ "user restriction; stop indication" },
+ { RANAP_CauseNAS_normal_release,
+ "normal release" },
+ { RANAP_CauseNAS_csg_subscription_expiry,
+ "CSG subscription expiry" },
+ { 0, NULL }
+};
+
+static const struct value_string ranap_cause_prot_vals[] = {
+ { RANAP_CauseProtocol_transfer_syntax_error,
+ "transfer sytax error" },
+ { RANAP_CauseProtocol_semantic_error,
+ "semantic error" },
+ { RANAP_CauseProtocol_message_not_compatible_with_receiver_state,
+ "message not compatible with receiver state" },
+ { RANAP_CauseProtocol_abstract_syntax_error_reject,
+ "syntax error: reject" },
+ { RANAP_CauseProtocol_abstract_syntax_error_ignore_and_notify,
+ "syntax error: ignore and notify" },
+ { RANAP_CauseProtocol_abstract_syntax_error_falsely_constructed_message,
+ "syntax error: falsely constructed message" },
+ { 0, NULL }
+};
+
+static const struct value_string ranap_cause_misc_vals[] = {
+ { RANAP_CauseMisc_om_intervention, "OAM intervention" },
+ { RANAP_CauseMisc_no_resource_available, "no resource available" },
+ { RANAP_CauseMisc_unspecified_failure, "unspecified failure" },
+ { RANAP_CauseMisc_network_optimisation, "network optimisation" },
+ { 0, NULL }
+};
+
+char *ranap_cause_str(const RANAP_Cause_t *cause)
+{
+ static char buf[128];
+
+ switch (cause->present) {
+ case RANAP_Cause_PR_radioNetwork:
+ snprintf(buf, sizeof(buf), "radio(%s)",
+ get_value_string(ranap_cause_radio_vals,
+ cause->choice.radioNetwork));
+ break;
+ case RANAP_Cause_PR_transmissionNetwork:
+ snprintf(buf, sizeof(buf), "transmission(%s)",
+ get_value_string(ranap_cause_transm_vals,
+ cause->choice.transmissionNetwork));
+ break;
+ case RANAP_Cause_PR_nAS:
+ snprintf(buf, sizeof(buf), "nas(%s)",
+ get_value_string(ranap_cause_nas_vals,
+ cause->choice.nAS));
+ break;
+ case RANAP_Cause_PR_protocol:
+ snprintf(buf, sizeof(buf), "protocol(%s)",
+ get_value_string(ranap_cause_prot_vals,
+ cause->choice.protocol));
+ break;
+ case RANAP_Cause_PR_misc:
+ snprintf(buf, sizeof(buf), "misc(%s)",
+ get_value_string(ranap_cause_misc_vals,
+ cause->choice.misc));
+ break;
+ case RANAP_Cause_PR_non_Standard:
+ snprintf(buf, sizeof(buf), "non-standard(%u)",
+ cause->choice.non_Standard);
+ break;
+ default:
+ strcpy(buf, "unknown");
+ break;
+ }
+ return buf;
+}
+
+
+static struct msgb *ranap_msgb_alloc(void)
+{
+ return msgb_alloc_headroom(1024+512, 512, "RANAP Tx");
+}
+
+static struct msgb *_ranap_gen_msg(RANAP_RANAP_PDU_t *pdu)
+{
+ struct msgb *msg = ranap_msgb_alloc();
+ asn_enc_rval_t rval;
+
+ if (!msg)
+ return NULL;
+
+ rval = aper_encode_to_buffer(&asn_DEF_RANAP_RANAP_PDU, pdu,
+ msg->data, msgb_tailroom(msg));
+ if (rval.encoded < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error encoding type: %s\n",
+ rval.failed_type->name);
+
+ }
+
+ msgb_put(msg, rval.encoded/8);
+
+ return msg;
+}
+
+struct msgb *ranap_generate_initiating_message(e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t *td, void *sptr)
+{
+ RANAP_RANAP_PDU_t pdu;
+ struct msgb *msg;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RANAP_RANAP_PDU_PR_initiatingMessage;
+ pdu.choice.initiatingMessage.procedureCode = procedureCode;
+ pdu.choice.initiatingMessage.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _ranap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RANAP_PDU, &pdu);
+
+ return msg;
+}
+
+struct msgb *ranap_generate_successful_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ RANAP_RANAP_PDU_t pdu;
+ struct msgb *msg;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RANAP_RANAP_PDU_PR_successfulOutcome;
+ pdu.choice.successfulOutcome.procedureCode = procedureCode;
+ pdu.choice.successfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _ranap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RANAP_PDU, &pdu);
+
+ return msg;
+}
+
+struct msgb *ranap_generate_unsuccessful_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ RANAP_RANAP_PDU_t pdu;
+ struct msgb *msg;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RANAP_RANAP_PDU_PR_unsuccessfulOutcome;
+ pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
+ pdu.choice.unsuccessfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _ranap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RANAP_PDU, &pdu);
+
+ return msg;
+}
+
+struct msgb *ranap_generate_outcome(
+ e_RANAP_ProcedureCode procedureCode,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ RANAP_RANAP_PDU_t pdu;
+ struct msgb *msg;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RANAP_RANAP_PDU_PR_outcome;
+ pdu.choice.outcome.procedureCode = procedureCode;
+ pdu.choice.outcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.outcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ msg = _ranap_gen_msg(&pdu);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RANAP_PDU, &pdu);
+
+ return msg;
+}
+
+
+RANAP_IE_t *ranap_new_ie(RANAP_ProtocolIE_ID_t id,
+ RANAP_Criticality_t criticality,
+ asn_TYPE_descriptor_t * type, void *sptr)
+{
+ RANAP_IE_t *buff;
+ int rc;
+
+ if ((buff = CALLOC(1, sizeof(*buff))) == NULL) {
+ // Possible error on malloc
+ return NULL;
+ }
+
+ buff->id = id;
+ buff->criticality = criticality;
+
+ rc = ANY_fromType_aper(&buff->value, type, sptr);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ if (asn1_xer_print)
+ if (xer_fprint(stdout, &asn_DEF_RANAP_IE, buff) < 0) {
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ return buff;
+}
+
+RANAP_ProtocolIE_FieldPair_t *ranap_new_ie_pair(RANAP_ProtocolIE_ID_t id,
+ RANAP_Criticality_t criticality1,
+ asn_TYPE_descriptor_t *type1, void *sptr1,
+ RANAP_Criticality_t criticality2,
+ asn_TYPE_descriptor_t *type2, void *sptr2)
+{
+ RANAP_ProtocolIE_FieldPair_t *buff;
+ int rc;
+
+ if ((buff = CALLOC(1, sizeof(*buff))) == NULL) {
+ // Possible error on malloc
+ return NULL;
+ }
+
+ buff->id = id;
+ buff->firstCriticality = criticality1;
+ buff->secondCriticality = criticality2;
+
+ rc = ANY_fromType_aper(&buff->firstValue, type1, sptr1);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ rc = ANY_fromType_aper(&buff->secondValue, type2, sptr2);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ ASN_STRUCT_FREE(asn_DEF_RANAP_ProtocolIE_FieldPair, buff);
+ return NULL;
+ }
+
+ if (asn1_xer_print)
+ if (xer_fprint(stdout, &asn_DEF_RANAP_ProtocolIE_FieldPair, buff) < 0) {
+ ASN_STRUCT_FREE(asn_DEF_RANAP_ProtocolIE_FieldPair, buff);
+ return NULL;
+ }
+
+ return buff;
+}
+
+int ranap_parse_lai(struct gprs_ra_id *ra_id, const RANAP_LAI_t *lai)
+{
+ uint8_t *ptr = lai->pLMNidentity.buf;
+
+ /* Avoid unitialized mem for parse failures, and set rac to zero (which
+ * isn't being parsed). */
+ *ra_id = (struct gprs_ra_id){ .lac = 0xfffe };
+
+ /* TS 25.413 9.2.3.55 */
+ if (lai->pLMNidentity.size != 3) {
+ LOGP(DRANAP, LOGL_ERROR, "Invalid PLMN Identity size:"
+ " should be 3, is %d\n", lai->pLMNidentity.size);
+ return -1;
+ }
+
+ ra_id->mcc = (ptr[0] & 0xF) * 100 +
+ (ptr[0] >> 4) * 10 +
+ (ptr[1] & 0xF);
+ ra_id->mnc = (ptr[2] & 0xF) * 10 +
+ (ptr[2] >> 4);
+ if ((ptr[1] >> 4) != 0xF)
+ ra_id->mnc += (ptr[1] >> 4) * 100;
+
+ if (lai->lAC.size != 2) {
+ LOGP(DRANAP, LOGL_ERROR, "Invalid LAC size:"
+ " should be 2, is %d\n", lai->lAC.size);
+ return -1;
+ }
+
+ ra_id->lac = asn1str_to_u16(&lai->lAC);
+
+ /* TS 25.413 9.2.3.6 */
+ if (ra_id->lac == 0 || ra_id->lac == 0xfffe) {
+ LOGP(DRANAP, LOGL_ERROR, "Invalid LAC: 0x%hx\n",
+ ra_id->lac);
+ return -1;
+ }
+
+ return 0;
+}
+
+void ranap_set_log_area(int log_area)
+{
+ _ranap_DRANAP = log_area;
+}
+
+int ranap_ip_from_transp_layer_addr(const BIT_STRING_t *in, uint32_t *ip)
+{
+ uint32_t addr;
+ uint8_t x213[] = {0x35, 0x00, 0x01};
+
+ /* Only support IPv4 for now - plain and with x213 encapsulation */
+ if (in->size == 4)
+ *ip = *(uint32_t *)in->buf;
+ else if ((in->size == 7) && !memcmp(in->buf, x213, sizeof(x213)))
+ *ip = htonl(*(uint32_t *)&in->buf[3]);
+ else
+ return -1;
+
+ return 0;
+
+}
+
+int ranap_decode_rab_setupormodifieditemies_fromlist(
+ RANAP_RAB_SetupOrModifiedItemIEs_t *raB_SetupOrModifiedItemIEs,
+ ANY_t *any_p) {
+
+ RANAP_RAB_SetupOrModifiedItem_t *ranaP_RABSetupOrModifiedItem_p = NULL;
+ int decoded = 0;
+ assert(any_p != NULL);
+ assert(raB_SetupOrModifiedItemIEs != NULL);
+
+ memset(raB_SetupOrModifiedItemIEs, 0, sizeof(RANAP_RAB_SetupOrModifiedItemIEs_t));
+ RANAP_DEBUG("Decoding message RANAP_RAB_SetupOrModifiedItemIEs (%s:%d)\n", __FILE__, __LINE__);
+ decoded = ANY_to_type_aper(any_p, &asn_DEF_RANAP_RAB_SetupOrModifiedItem, (void**)&ranaP_RABSetupOrModifiedItem_p);
+ if (decoded < 0) {
+ RANAP_DEBUG("Decoding of IE raB_SetupOrModifiedItem failed\n");
+ return -1;
+ }
+ if (asn1_xer_print)
+ xer_fprint(stdout, &asn_DEF_RANAP_RAB_SetupOrModifiedItem, ranaP_RABSetupOrModifiedItem_p);
+ memcpy(&raB_SetupOrModifiedItemIEs->raB_SetupOrModifiedItem, ranaP_RABSetupOrModifiedItem_p, sizeof(RANAP_RAB_SetupOrModifiedItem_t));
+ FREEMEM(ranaP_RABSetupOrModifiedItem_p);
+
+ return decoded;
+}
+
diff --git a/src/ranap_common_cn.c b/src/ranap_common_cn.c
new file mode 100644
index 0000000..d02eb37
--- /dev/null
+++ b/src/ranap_common_cn.c
@@ -0,0 +1,546 @@
+/* RANAP interface for a core-network node */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
+
+#include <osmocom/ranap/ranap_common.h>
+#include <osmocom/ranap/ranap_common_cn.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+
+#include <osmocom/iuh/hnbgw.h>
+
+static int cn_ranap_rx_initiating_msg_co(void *ctx, RANAP_InitiatingMessage_t *imsg,
+ ranap_message *message)
+{
+ int rc = 0;
+
+ message->procedureCode = imsg->procedureCode;
+ message->criticality = imsg->criticality;
+
+ DEBUGP(DRANAP, "Rx CO IM (%s)\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_InitialUE_Message:
+ rc = ranap_decode_initialue_messageies(&message->msg.initialUE_MessageIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ rc = ranap_decode_directtransferies(&message->msg.directTransferIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_RAB_ReleaseRequest:
+ /* RNC requests the release of RAB */
+ rc = ranap_decode_rab_releaserequesties(&message->msg.raB_ReleaseRequestIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_Iu_ReleaseRequest:
+ /* RNC requests the release of Iu */
+ rc = ranap_decode_iu_releaserequesties(&message->msg.iu_ReleaseRequestIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ rc = ranap_decode_errorindicationies(&message->msg.errorIndicationIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_RAB_ModifyRequest:
+ rc = ranap_decode_rab_modifyrequesties(&message->msg.raB_ModifyRequestIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ /* Only an RNC will receive a Security Mode Control as
+ * Initiating Message, in other words: only hnb-test. */
+ rc = ranap_decode_securitymodecommandies(&message->msg.securityModeCommandIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ rc = ranap_decode_iu_releasecommandies(&message->msg.iu_ReleaseCommandIEs, &imsg->value);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %s (CO, IM) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+ rc = -1;
+ break;
+ }
+
+ return rc;
+}
+
+static void cn_ranap_free_initiating_msg_co(ranap_message *message)
+{
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_InitialUE_Message:
+ ranap_free_initialue_messageies(&message->msg.initialUE_MessageIEs);
+ break;
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ ranap_free_directtransferies(&message->msg.directTransferIEs);
+ break;
+ case RANAP_ProcedureCode_id_RAB_ReleaseRequest:
+ /* RNC requests the release of RAB */
+ ranap_free_rab_releaserequesties(&message->msg.raB_ReleaseRequestIEs);
+ break;
+ case RANAP_ProcedureCode_id_Iu_ReleaseRequest:
+ /* RNC requests the release of Iu */
+ ranap_free_iu_releaserequesties(&message->msg.iu_ReleaseRequestIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ ranap_free_errorindicationies(&message->msg.errorIndicationIEs);
+ break;
+ case RANAP_ProcedureCode_id_RAB_ModifyRequest:
+ ranap_free_rab_modifyrequesties(&message->msg.raB_ModifyRequestIEs);
+ break;
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ /* Only an RNC will receive a Security Mode Control as
+ * Initiating Message, in other words: only hnb-test. */
+ ranap_free_securitymodecommandies(&message->msg.securityModeCommandIEs);
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ ranap_free_iu_releasecommandies(&message->msg.iu_ReleaseCommandIEs);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing suspicious RANAP "
+ "Procedure %s (CO, IM) from RNC\n",
+ get_value_string(ranap_procedure_code_vals, message->procedureCode));
+ break;
+ }
+}
+
+static int cn_ranap_rx_successful_msg_co(void *ctx, RANAP_SuccessfulOutcome_t *imsg,
+ ranap_message *message)
+{
+ int rc = 0;
+
+ message->procedureCode = imsg->procedureCode;
+ message->criticality = imsg->criticality;
+
+ DEBUGP(DRANAP, "Rx CO SO (%s)\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB assignment response */
+ rc = ranap_decode_rab_assignmentresponseies(&message->msg.raB_AssignmentResponseIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* Security Mode Complete */
+ rc = ranap_decode_securitymodecompleteies(&message->msg.securityModeCompleteIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* Iu release Complete; confirmation of CN-initiated release */
+ rc = ranap_decode_iu_releasecompleteies(&message->msg.iu_ReleaseCompleteIEs, &imsg->value);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %s (SO) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+ rc = -1;
+ break;
+ }
+
+ return rc;
+}
+
+static void cn_ranap_free_successful_msg_co(ranap_message *message)
+{
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB assignment response */
+ ranap_free_rab_assignmentresponseies(&message->msg.raB_AssignmentResponseIEs);
+ break;
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* Security Mode Complete */
+ ranap_free_securitymodecompleteies(&message->msg.securityModeCompleteIEs);
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* Iu release Complete; confirmation of CN-initiated release */
+ ranap_free_iu_releasecompleteies(&message->msg.iu_ReleaseCompleteIEs);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing suspicious RANAP "
+ "Procedure %s (SO) from RNC\n",
+ get_value_string(ranap_procedure_code_vals, message->procedureCode));
+ break;
+ }
+}
+
+static int cn_ranap_rx_outcome_msg_co(void *ctx, RANAP_Outcome_t *imsg,
+ ranap_message *message)
+{
+ int rc = 0;
+
+ message->procedureCode = imsg->procedureCode;
+ message->criticality = imsg->criticality;
+
+ DEBUGP(DRANAP, "Rx CO O (%s)\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB assignment response */
+ rc = ranap_decode_rab_assignmentresponseies(&message->msg.raB_AssignmentResponseIEs, &imsg->value);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %s (O) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+ rc = -1;
+ break;
+ }
+
+ return rc;
+}
+
+static void cn_ranap_free_outcome_msg_co(ranap_message *message)
+{
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB assignment response */
+ ranap_free_rab_assignmentresponseies(&message->msg.raB_AssignmentResponseIEs);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing suspicious RANAP "
+ "Procedure %s (O) from RNC\n",
+ get_value_string(ranap_procedure_code_vals, message->procedureCode));
+ break;
+ }
+}
+
+static int _cn_ranap_rx_co(void *ctx, RANAP_RANAP_PDU_t *pdu, ranap_message *message)
+{
+ int rc = 0;
+
+ switch (pdu->present) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ rc = cn_ranap_rx_initiating_msg_co(ctx, &pdu->choice.initiatingMessage, message);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ rc = cn_ranap_rx_successful_msg_co(ctx, &pdu->choice.successfulOutcome, message);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "unsuccessful outcome procedure %s (CO) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals,
+ pdu->choice.unsuccessfulOutcome.procedureCode));
+ rc = -1;
+ break;
+ case RANAP_RANAP_PDU_PR_outcome:
+ rc = cn_ranap_rx_outcome_msg_co(ctx, &pdu->choice.outcome, message);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "presence %s (CO) from RNC, ignoring\n",
+ get_value_string(ranap_presence_vals, pdu->present));
+ rc = -1;
+ break;
+ }
+
+ return rc;
+}
+
+static void _cn_ranap_free_co(ranap_message *message)
+{
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ cn_ranap_free_initiating_msg_co(message);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ cn_ranap_free_successful_msg_co(message);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing unsupported RANAP "
+ "unsuccessful outcome procedure (CO) from RNC\n");
+ break;
+ case RANAP_RANAP_PDU_PR_outcome:
+ cn_ranap_free_outcome_msg_co(message);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "presence %s (CO) from RNC, ignoring\n",
+ get_value_string(ranap_presence_vals, message->direction));
+ break;
+ }
+}
+
+/* receive a connection-oriented RANAP message and call
+ * cn_ranap_handle_co() with the resulting ranap_message struct */
+int ranap_cn_rx_co(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len)
+{
+ RANAP_RANAP_PDU_t *pdu = NULL;
+ ranap_message message;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(&message, 0, sizeof(message));
+
+ dec_ret = aper_decode(NULL,&asn_DEF_RANAP_RANAP_PDU, (void **) &pdu,
+ data, len, 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
+ return -1;
+ }
+
+ message.direction = pdu->present;
+
+ rc = _cn_ranap_rx_co(ctx, pdu, &message);
+
+ if (rc == 0)
+ (*cb)(ctx, &message);
+ else
+ LOGP(DRANAP, LOGL_ERROR, "Not calling cn_ranap_handle_co() due to rc=%d\n", rc);
+
+ /* Free the asn1 structs in message */
+ _cn_ranap_free_co(&message);
+
+ ASN_STRUCT_FREE(asn_DEF_RANAP_RANAP_PDU, pdu);
+
+ return rc;
+}
+
+static int cn_ranap_rx_initiating_msg_cl(void *ctx, RANAP_InitiatingMessage_t *imsg,
+ ranap_message *message)
+{
+ int rc;
+
+ message->procedureCode = imsg->procedureCode;
+ message->criticality = imsg->criticality;
+
+ DEBUGP(DRANAP, "Rx CL IM (%s)\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ /* Reset request */
+ rc = ranap_decode_reseties(&message->msg.resetIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_OverloadControl: /* Overload ind */
+ rc = ranap_decode_overloadies(&message->msg.overloadIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication: /* Error ind */
+ rc = ranap_decode_errorindicationies(&message->msg.errorIndicationIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* request */
+ rc = ranap_decode_resetresourceies(&message->msg.resetResourceIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ rc = ranap_decode_informationtransferindicationies(&message->msg.informationTransferIndicationIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ rc = ranap_decode_directinformationtransferies(&message->msg.directInformationTransferIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ rc = ranap_decode_uplinkinformationexchangerequesties(&message->msg.uplinkInformationExchangeRequestIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_Paging:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ rc = ranap_decode_pagingies(&message->msg.pagingIEs, &imsg->value);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %s (CL, IM) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+ break;
+ }
+}
+
+static void cn_ranap_free_initiating_msg_cl(ranap_message *message)
+{
+
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ /* Reset request */
+ ranap_free_reseties(&message->msg.resetIEs);
+ break;
+ case RANAP_ProcedureCode_id_OverloadControl: /* Overload ind */
+ ranap_free_overloadies(&message->msg.overloadIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication: /* Error ind */
+ ranap_free_errorindicationies(&message->msg.errorIndicationIEs);
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* request */
+ ranap_free_resetresourceies(&message->msg.resetResourceIEs);
+ break;
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ ranap_free_informationtransferindicationies(&message->msg.informationTransferIndicationIEs);
+ break;
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ ranap_free_directinformationtransferies(&message->msg.directInformationTransferIEs);
+ break;
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ ranap_free_uplinkinformationexchangerequesties(&message->msg.uplinkInformationExchangeRequestIEs);
+ break;
+ case RANAP_ProcedureCode_id_Paging:
+ /* FIXME this is not a message received by CN (used by hnb-test) */
+ ranap_free_pagingies(&message->msg.pagingIEs);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing suspicious RANAP "
+ "Procedure %s (CL, IM)\n",
+ get_value_string(ranap_procedure_code_vals, message->procedureCode));
+ break;
+ }
+}
+
+static int cn_ranap_rx_successful_msg_cl(void *ctx, RANAP_SuccessfulOutcome_t *imsg,
+ ranap_message *message)
+{
+ int rc;
+
+ message->procedureCode = imsg->procedureCode;
+ message->criticality = imsg->criticality;
+
+ DEBUGP(DRANAP, "Rx CL SO (%s)\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+
+ switch (imsg->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset: /* Reset acknowledge */
+ rc = ranap_decode_resetacknowledgeies(&message->msg.resetAcknowledgeIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* response */
+ rc = ranap_decode_resetresourceacknowledgeies(&message->msg.resetResourceAcknowledgeIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ rc = ranap_decode_resetresourceacknowledgeies(&message->msg.resetResourceAcknowledgeIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ rc = ranap_decode_informationtransferconfirmationies(&message->msg.informationTransferConfirmationIEs, &imsg->value);
+ break;
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ rc = ranap_decode_uplinkinformationexchangeresponseies(&message->msg.uplinkInformationExchangeResponseIEs, &imsg->value);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "Procedure %s (CL, SO) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals, imsg->procedureCode));
+ break;
+ }
+}
+
+static void cn_ranap_free_successful_msg_cl(ranap_message *message)
+{
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset: /* Reset acknowledge */
+ ranap_free_resetacknowledgeies(&message->msg.resetAcknowledgeIEs);
+ break;
+ case RANAP_ProcedureCode_id_ResetResource: /* response */
+ ranap_free_resetresourceacknowledgeies(&message->msg.resetResourceAcknowledgeIEs);
+ break;
+ case RANAP_ProcedureCode_id_InformationTransfer:
+ ranap_free_resetresourceacknowledgeies(&message->msg.resetResourceAcknowledgeIEs);
+ break;
+ case RANAP_ProcedureCode_id_DirectInformationTransfer:
+ ranap_free_informationtransferconfirmationies(&message->msg.informationTransferConfirmationIEs);
+ break;
+ case RANAP_ProcedureCode_id_UplinkInformationExchange:
+ ranap_free_uplinkinformationexchangeresponseies(&message->msg.uplinkInformationExchangeResponseIEs);
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing suspicious RANAP "
+ "Procedure %s (CL, SO)\n",
+ get_value_string(ranap_procedure_code_vals, message->procedureCode));
+ break;
+ }
+}
+
+static int _cn_ranap_rx_cl(void *ctx, RANAP_RANAP_PDU_t *pdu, ranap_message *message)
+{
+ int rc;
+
+ /* Extend _cn_ranap_free_cl as well when extending this function */
+
+ switch (pdu->present) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ rc = cn_ranap_rx_initiating_msg_cl(ctx, &pdu->choice.initiatingMessage,
+ message);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ rc = cn_ranap_rx_successful_msg_cl(ctx, &pdu->choice.successfulOutcome,
+ message);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Received unsupported RANAP "
+ "unsuccessful outcome procedure %s (CL) from RNC, ignoring\n",
+ get_value_string(ranap_procedure_code_vals,
+ pdu->choice.unsuccessfulOutcome.procedureCode));
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Received suspicious RANAP "
+ "presence %s (CL) from RNC, ignoring\n",
+ get_value_string(ranap_presence_vals, pdu->present));
+ break;
+ }
+}
+
+static void _cn_ranap_free_cl(ranap_message *message)
+{
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ cn_ranap_free_initiating_msg_cl(message);
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ cn_ranap_free_successful_msg_cl(message);
+ break;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ LOGP(DRANAP, LOGL_NOTICE, "Not freeing unsupported RANAP "
+ "unsuccessful outcome procedure from RNC\n");
+ break;
+ default:
+ LOGP(DRANAP, LOGL_NOTICE, "Suspicious RANAP "
+ "presence %s (CL) from RNC, ignoring\n", message->direction);
+ break;
+ }
+}
+
+/* receive a connection-less RANAP message and call
+ * cn_ranap_handle_co() with the resulting ranap_message struct */
+int ranap_cn_rx_cl(ranap_handle_cb cb, void *ctx, uint8_t *data, size_t len)
+{
+ RANAP_RANAP_PDU_t *pdu = NULL;
+ ranap_message message;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(&message, 0, sizeof(message));
+
+ dec_ret = aper_decode(NULL,&asn_DEF_RANAP_RANAP_PDU, (void **) &pdu,
+ data, len, 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DRANAP, LOGL_ERROR, "Error in RANAP ASN.1 decode\n");
+ return -1;
+ }
+
+ message.direction = pdu->present;
+
+ rc = _cn_ranap_rx_cl(ctx, pdu, &message);
+
+ if (rc == 0)
+ (*cb)(ctx, &message);
+ else
+ LOGP(DRANAP, LOGL_ERROR, "Not calling cn_ranap_handle_cl() due to rc=%d\n", rc);
+
+ /* Free the asn1 structs in message */
+ _cn_ranap_free_cl(&message);
+
+ ASN_STRUCT_FREE(asn_DEF_RANAP_RANAP_PDU, pdu);
+
+ return rc;
+}
diff --git a/src/ranap_msg_factory.c b/src/ranap_msg_factory.c
new file mode 100644
index 0000000..64d87f9
--- /dev/null
+++ b/src/ranap_msg_factory.c
@@ -0,0 +1,928 @@
+/* high-level RANAP messsage generation code */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/msgb.h>
+
+#include "asn1helpers.h"
+#include <osmocom/ranap/iu_helpers.h>
+
+#include <osmocom/ranap/ranap_common.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+
+#define DRANAP _ranap_DRANAP
+
+/*! \brief allocate a new long and assing a value to it */
+static long *new_long(long in)
+{
+ long *out = CALLOC(1, sizeof(long));
+ *out = in;
+ return out;
+}
+
+/*! \brief generate RANAP RESET message */
+struct msgb *ranap_new_msg_reset(RANAP_CN_DomainIndicator_t domain,
+ const RANAP_Cause_t *cause)
+{
+ RANAP_ResetIEs_t ies;
+ RANAP_Reset_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ ies.cN_DomainIndicator = domain;
+ if (cause)
+ memcpy(&ies.cause, cause, sizeof(ies.cause));
+
+ memset(&out, 0, sizeof(out));
+ rc = ranap_encode_reseties(&out, &ies);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "error encoding reset IEs: %d\n", rc);
+ return NULL;
+ }
+
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_Reset,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Reset,
+ &out);
+
+ /* release dynamic allocations attached to dt */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Reset, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP RESET ACK message */
+struct msgb *ranap_new_msg_reset_ack(RANAP_CN_DomainIndicator_t domain,
+ RANAP_GlobalRNC_ID_t *rnc_id)
+{
+ RANAP_ResetAcknowledgeIEs_t ies;
+ RANAP_ResetAcknowledge_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ ies.cN_DomainIndicator = domain;
+
+ /* The RNC shall include the globalRNC_ID in the RESET
+ * ACKNOWLEDGE message to the CN */
+ if (rnc_id) {
+ ies.presenceMask = RESETACKNOWLEDGEIES_RANAP_GLOBALRNC_ID_PRESENT;
+ OCTET_STRING_noalloc(&ies.globalRNC_ID.pLMNidentity,
+ rnc_id->pLMNidentity.buf,
+ rnc_id->pLMNidentity.size);
+ ies.globalRNC_ID.rNC_ID = rnc_id->rNC_ID;
+ }
+
+ /* FIXME: Do we need criticalityDiagnostics */
+
+ memset(&out, 0, sizeof(out));
+ rc = ranap_encode_resetacknowledgeies(&out, &ies);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "error encoding reset ack IEs: %d\n", rc);
+ return NULL;
+ }
+
+ msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_Reset,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_ResetAcknowledge,
+ &out);
+
+ /* release dynamic allocations attached to dt */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_ResetAcknowledge, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP INITIAL UE message */
+struct msgb *ranap_new_msg_initial_ue(uint32_t conn_id, int is_ps,
+ RANAP_GlobalRNC_ID_t *rnc_id,
+ uint8_t *nas_pdu, unsigned int nas_len)
+{
+ RANAP_InitialUE_MessageIEs_t ies;
+ RANAP_InitialUE_Message_t out;
+ struct msgb *msg;
+ uint32_t ctxidbuf;
+ int rc;
+ uint16_t buf0 = 0x2342;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RANAP_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RANAP_CN_DomainIndicator_cs_domain;
+
+ OCTET_STRING_noalloc(&ies.lai.pLMNidentity, rnc_id->pLMNidentity.buf, rnc_id->pLMNidentity.size);
+ OCTET_STRING_noalloc(&ies.lai.lAC, (uint8_t *)&buf0, sizeof(buf0));
+
+ OCTET_STRING_noalloc(&ies.sai.pLMNidentity, rnc_id->pLMNidentity.buf, rnc_id->pLMNidentity.size);
+ OCTET_STRING_noalloc(&ies.sai.lAC, (uint8_t *)&buf0, sizeof(buf0));
+ OCTET_STRING_noalloc(&ies.sai.sAC, (uint8_t *)&buf0, sizeof(buf0));
+
+ OCTET_STRING_noalloc(&ies.nas_pdu, nas_pdu, nas_len);
+ asn1_u24_to_bitstring(&ies.iuSigConId, &ctxidbuf, conn_id);
+ OCTET_STRING_noalloc(&ies.globalRNC_ID.pLMNidentity, rnc_id->pLMNidentity.buf, rnc_id->pLMNidentity.size);
+ ies.globalRNC_ID.rNC_ID = rnc_id->rNC_ID;
+
+ memset(&out, 0, sizeof(out));
+ rc = ranap_encode_initialue_messageies(&out, &ies);
+ if (rc < 0) {
+ LOGP(DRANAP, LOGL_ERROR, "error encoding initial UE IEs: %d\n", rc);
+ return NULL;
+ }
+
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_InitialUE_Message,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_InitialUE_Message,
+ &out);
+
+ /* release dynamic allocations attached to dt */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_InitialUE_Message, &out);
+
+ return msg;
+}
+
+
+/*! \brief generate RANAP DIRECT TRANSFER message */
+struct msgb *ranap_new_msg_dt(uint8_t sapi, const uint8_t *nas, unsigned int nas_len)
+{
+ RANAP_DirectTransferIEs_t ies;
+ RANAP_DirectTransfer_t dt;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&dt, 0, sizeof(dt));
+
+ /* only SAPI optional field shall be present for CN->RNC */
+ ies.presenceMask = DIRECTTRANSFERIES_RANAP_SAPI_PRESENT;
+
+ if (sapi == 3)
+ ies.sapi = RANAP_SAPI_sapi_3;
+ else
+ ies.sapi = RANAP_SAPI_sapi_0;
+
+ /* Avoid copying + later freeing of OCTET STRING */
+ OCTET_STRING_noalloc(&ies.nas_pdu, nas, nas_len);
+
+ /* ies -> dt */
+ rc = ranap_encode_directtransferies(&dt, &ies);
+
+ /* dt -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_DirectTransfer,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_DirectTransfer,
+ &dt);
+
+ /* release dynamic allocations attached to dt */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_DirectTransfer, &dt);
+
+ return msg;
+}
+
+static const enum RANAP_IntegrityProtectionAlgorithm ip_alg[2] = {
+ RANAP_IntegrityProtectionAlgorithm_standard_UMTS_integrity_algorithm_UIA1,
+ RANAP_IntegrityProtectionAlgorithm_standard_UMTS_integrity_algorithm_UIA2,
+};
+
+static const RANAP_EncryptionAlgorithm_t enc_alg[2] = {
+ RANAP_EncryptionAlgorithm_standard_UMTS_encryption_algorith_UEA1,
+ RANAP_EncryptionAlgorithm_standard_UMTS_encryption_algorithm_UEA2,
+};
+
+/*! \brief generate RANAP SECURITY MODE COMMAND message */
+struct msgb *ranap_new_msg_sec_mod_cmd(const uint8_t *ik, const uint8_t *ck, enum RANAP_KeyStatus status)
+{
+ RANAP_SecurityModeCommandIEs_t ies;
+ RANAP_SecurityModeCommand_t out;
+ struct msgb *msg;
+ int i, rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ for (i = 0; i < ARRAY_SIZE(ip_alg); i++) {
+ /* needs to be dynamically allocated, as
+ * SET_OF_free() will call FREEMEM() on it */
+ RANAP_IntegrityProtectionAlgorithm_t *alg = CALLOC(1, sizeof(*alg));
+ *alg = ip_alg[i];
+ ASN_SEQUENCE_ADD(&ies.integrityProtectionInformation.permittedAlgorithms, alg);
+ }
+
+ BIT_STRING_fromBuf(&ies.integrityProtectionInformation.key, ik, 16*8);
+
+ if (ck) {
+ ies.presenceMask = SECURITYMODECOMMANDIES_RANAP_ENCRYPTIONINFORMATION_PRESENT;
+ for (i = 0; i < ARRAY_SIZE(ip_alg); i++) {
+ /* needs to be dynamically allocated, as
+ * SET_OF_free() will call FREEMEM() on it */
+ RANAP_EncryptionAlgorithm_t *alg = CALLOC(1, sizeof(*alg));
+ *alg = enc_alg[i];
+ ASN_SEQUENCE_ADD(&ies.encryptionInformation.permittedAlgorithms, alg);
+ }
+ BIT_STRING_fromBuf(&ies.encryptionInformation.key, ck, 16*8);
+ }
+
+ ies.keyStatus = status;
+
+ /* ies -> out */
+ rc = ranap_encode_securitymodecommandies(&out, &ies);
+
+ /* release dynamic allocations attached to ies */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_IntegrityProtectionInformation, &ies.integrityProtectionInformation);
+ if (ck)
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_EncryptionInformation, &ies.encryptionInformation);
+
+ /* out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_SecurityModeControl,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_SecurityModeCommand,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_SecurityModeCommand, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP SECURITY MODE COMPLETE message */
+struct msgb *ranap_new_msg_sec_mod_compl(
+ RANAP_ChosenIntegrityProtectionAlgorithm_t chosen_ip_alg,
+ RANAP_ChosenEncryptionAlgorithm_t chosen_enc_alg)
+{
+ RANAP_SecurityModeCompleteIEs_t ies;
+ RANAP_SecurityModeComplete_t out;
+ struct msgb *msg;
+ int i, rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ ies.presenceMask = SECURITYMODECOMPLETEIES_RANAP_CHOSENENCRYPTIONALGORITHM_PRESENT;
+ ies.chosenIntegrityProtectionAlgorithm = chosen_ip_alg;
+ ies.chosenEncryptionAlgorithm = chosen_enc_alg;
+
+ /* ies -> out */
+ rc = ranap_encode_securitymodecompleteies(&out, &ies);
+
+ /* out -> msg */
+ msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_SecurityModeControl,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_SecurityModeComplete,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_SecurityModeComplete, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP COMMON ID message */
+struct msgb *ranap_new_msg_common_id(const char *imsi)
+{
+ RANAP_CommonID_IEs_t ies;
+ RANAP_CommonID_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ if (imsi) {
+ uint8_t *imsi_buf = CALLOC(1, 16);
+ rc = ranap_imsi_encode(imsi_buf, 16, imsi);
+ ies.permanentNAS_UE_ID.present = RANAP_PermanentNAS_UE_ID_PR_iMSI;
+ ies.permanentNAS_UE_ID.choice.iMSI.buf = imsi_buf;
+ ies.permanentNAS_UE_ID.choice.iMSI.size = rc;
+ } else
+ ies.permanentNAS_UE_ID.present = RANAP_PermanentNAS_UE_ID_PR_NOTHING;
+
+ /* ies -> out */
+ rc = ranap_encode_commonid_ies(&out, &ies);
+ /* release dynamic allocations attached to ies */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_PermanentNAS_UE_ID, &ies.permanentNAS_UE_ID);
+ if (rc < 0)
+ return NULL;
+
+ /* out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_CommonID,
+ RANAP_Criticality_ignore,
+ &asn_DEF_RANAP_CommonID,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_CommonID, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP IU RELEASE COMMAND message */
+struct msgb *ranap_new_msg_iu_rel_cmd(const RANAP_Cause_t *cause_in)
+{
+ RANAP_Iu_ReleaseCommandIEs_t ies;
+ RANAP_Iu_ReleaseCommand_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ memcpy(&ies.cause, cause_in, sizeof(ies.cause));
+
+ /* ies -> out */
+ rc = ranap_encode_iu_releasecommandies(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ /* out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_Iu_Release,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Iu_ReleaseCommand,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Iu_ReleaseCommand, &out);
+
+ return msg;
+}
+
+/*! \brief generate RAPAP IU RELEASE COMPLETE message */
+struct msgb *ranap_new_msg_iu_rel_compl(void)
+{
+ RANAP_Iu_ReleaseCompleteIEs_t ies;
+ RANAP_Iu_ReleaseComplete_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* ies -> out */
+ rc = ranap_encode_iu_releasecompleteies(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ /* out -> msg */
+ msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_Iu_Release,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Iu_ReleaseComplete,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Iu_ReleaseComplete, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP PAGING COMMAND message */
+struct msgb *ranap_new_msg_paging_cmd(const char *imsi, const uint32_t *tmsi, int is_ps, uint32_t cause)
+{
+ RANAP_PagingIEs_t ies;
+ RANAP_Paging_t out;
+ struct msgb *msg;
+ uint8_t *imsi_buf = CALLOC(1, 16);
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* put together the 'ies' */
+ if (is_ps)
+ ies.cN_DomainIndicator = RANAP_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RANAP_CN_DomainIndicator_cs_domain;
+
+ rc = ranap_imsi_encode(imsi_buf, 16, imsi);
+ ies.permanentNAS_UE_ID.present = RANAP_PermanentNAS_UE_ID_PR_iMSI;
+ ies.permanentNAS_UE_ID.choice.iMSI.buf = imsi_buf;
+ ies.permanentNAS_UE_ID.choice.iMSI.size = rc;
+
+ if (tmsi) {
+ uint32_t *tmsi_buf = CALLOC(1, sizeof(*tmsi_buf));
+ ies.presenceMask |= PAGINGIES_RANAP_TEMPORARYUE_ID_PRESENT;
+ if (is_ps) {
+ ies.temporaryUE_ID.present = RANAP_TemporaryUE_ID_PR_p_TMSI;
+ asn1_u32_to_str(&ies.temporaryUE_ID.choice.tMSI, tmsi_buf, *tmsi);
+ } else {
+ ies.temporaryUE_ID.present = RANAP_TemporaryUE_ID_PR_tMSI;
+ asn1_u32_to_str(&ies.temporaryUE_ID.choice.p_TMSI, tmsi_buf, *tmsi);
+ }
+ }
+
+ if (cause) {
+ ies.presenceMask |= PAGINGIES_RANAP_PAGINGCAUSE_PRESENT;
+ ies.pagingCause = cause;
+ }
+
+ /* ies -> out */
+ rc = ranap_encode_pagingies(&out, &ies);
+ /* release dynamic allocation attached to ies */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_PermanentNAS_UE_ID, &ies.permanentNAS_UE_ID);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_TemporaryUE_ID, &ies.temporaryUE_ID);
+ if (rc < 0)
+ return NULL;
+
+ /* out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_Paging,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Paging,
+ &out);
+
+ /* release dynamic allocations attached to out */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Paging, &out);
+
+ return msg;
+}
+
+static RANAP_SDU_ErrorRatio_t *new_sdu_error_ratio(long mantissa, long exponent)
+{
+ RANAP_SDU_ErrorRatio_t *err = CALLOC(1, sizeof(*err));
+
+ err->mantissa = mantissa;
+ err->exponent = exponent;
+
+ return err;
+}
+
+
+static RANAP_SDU_FormatInformationParameterItem_t *
+new_format_info_pars(long sdu_size)
+{
+ RANAP_SDU_FormatInformationParameterItem_t *fmti = CALLOC(1, sizeof(*fmti));
+ fmti->subflowSDU_Size = new_long(sdu_size);
+ return fmti;
+}
+
+enum sdu_par_profile {
+ SDUPAR_P_VOICE0,
+ SDUPAR_P_VOICE1,
+ SDUPAR_P_VOICE2,
+ SDUPAR_P_DATA,
+};
+
+/* See Chapter 5 of TS 26.102 */
+static RANAP_SDU_ParameterItem_t *new_sdu_par_item(enum sdu_par_profile profile)
+{
+ RANAP_SDU_ParameterItem_t *sdui = CALLOC(1, sizeof(*sdui));
+ RANAP_SDU_FormatInformationParameters_t *fmtip = CALLOC(1, sizeof(*fmtip));
+ RANAP_SDU_FormatInformationParameterItem_t *fmti;
+
+ switch (profile) {
+ case SDUPAR_P_VOICE0:
+ sdui->sDU_ErrorRatio = new_sdu_error_ratio(1, 5);
+ sdui->residualBitErrorRatio.mantissa = 1;
+ sdui->residualBitErrorRatio.exponent = 6;
+ sdui->deliveryOfErroneousSDU = RANAP_DeliveryOfErroneousSDU_yes;
+ sdui->sDU_FormatInformationParameters = fmtip;
+ fmti = new_format_info_pars(81);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ fmti = new_format_info_pars(39);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ /* FIXME: could be 10 SDU descriptors for AMR! */
+ break;
+ case SDUPAR_P_VOICE1:
+ sdui->residualBitErrorRatio.mantissa = 1;
+ sdui->residualBitErrorRatio.exponent = 3;
+ sdui->deliveryOfErroneousSDU = RANAP_DeliveryOfErroneousSDU_no_error_detection_consideration;
+ sdui->sDU_FormatInformationParameters = fmtip;
+ fmti = new_format_info_pars(103);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ fmti = new_format_info_pars(0);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ /* FIXME: could be 10 SDU descriptors for AMR! */
+ break;
+ case SDUPAR_P_VOICE2:
+ sdui->residualBitErrorRatio.mantissa = 5;
+ sdui->residualBitErrorRatio.exponent = 3;
+ sdui->deliveryOfErroneousSDU = RANAP_DeliveryOfErroneousSDU_no_error_detection_consideration;
+ sdui->sDU_FormatInformationParameters = fmtip;
+ fmti = new_format_info_pars(60);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ fmti = new_format_info_pars(0);
+ ASN_SEQUENCE_ADD(fmtip, fmti);
+ /* FIXME: could be 10 SDU descriptors for AMR! */
+ break;
+ case SDUPAR_P_DATA:
+ sdui->sDU_ErrorRatio = new_sdu_error_ratio(1, 4);
+ sdui->residualBitErrorRatio.mantissa = 1;
+ sdui->residualBitErrorRatio.exponent = 5;
+ sdui->deliveryOfErroneousSDU = RANAP_DeliveryOfErroneousSDU_no;
+ FREEMEM(fmtip);
+ break;
+ }
+
+ return sdui;
+}
+
+static RANAP_AllocationOrRetentionPriority_t *
+new_alloc_ret_prio(RANAP_PriorityLevel_t level, int capability, int vulnerability,
+ int queueing_allowed)
+{
+ RANAP_AllocationOrRetentionPriority_t *arp = CALLOC(1, sizeof(*arp));
+
+ arp->priorityLevel = level;
+
+ if (capability)
+ arp->pre_emptionCapability = RANAP_Pre_emptionCapability_may_trigger_pre_emption;
+ else
+ arp->pre_emptionCapability = RANAP_Pre_emptionCapability_shall_not_trigger_pre_emption;
+
+ if (vulnerability)
+ arp->pre_emptionVulnerability = RANAP_Pre_emptionVulnerability_pre_emptable;
+ else
+ arp->pre_emptionVulnerability = RANAP_Pre_emptionVulnerability_not_pre_emptable;
+
+ if (queueing_allowed)
+ arp->queuingAllowed = RANAP_QueuingAllowed_queueing_allowed;
+ else
+ arp->queuingAllowed = RANAP_QueuingAllowed_queueing_not_allowed;
+
+ return arp;
+}
+
+/* See Chapter 5 of TS 26.102 */
+static RANAP_RAB_Parameters_t *new_rab_par_voice(long bitrate_guaranteed,
+ long bitrate_max)
+{
+ RANAP_RAB_Parameters_t *rab = CALLOC(1, sizeof(*rab));
+ RANAP_SDU_ParameterItem_t *sdui;
+
+ rab->trafficClass = RANAP_TrafficClass_conversational;
+ rab->rAB_AsymmetryIndicator = RANAP_RAB_AsymmetryIndicator_symmetric_bidirectional;
+
+ ASN_SEQUENCE_ADD(&rab->maxBitrate.list, new_long(bitrate_max));
+ rab->guaranteedBitRate = CALLOC(1, sizeof(*rab->guaranteedBitRate));
+ ASN_SEQUENCE_ADD(rab->guaranteedBitRate, new_long(bitrate_guaranteed));
+ rab->deliveryOrder = RANAP_DeliveryOrder_delivery_order_requested;
+ rab->maxSDU_Size = 244;
+
+ sdui = new_sdu_par_item(SDUPAR_P_VOICE0);
+ ASN_SEQUENCE_ADD(&rab->sDU_Parameters, sdui);
+ sdui = new_sdu_par_item(SDUPAR_P_VOICE1);
+ ASN_SEQUENCE_ADD(&rab->sDU_Parameters, sdui);
+ sdui = new_sdu_par_item(SDUPAR_P_VOICE2);
+ ASN_SEQUENCE_ADD(&rab->sDU_Parameters, sdui);
+
+ rab->transferDelay = new_long(80);
+ rab->allocationOrRetentionPriority = new_alloc_ret_prio(RANAP_PriorityLevel_no_priority, 0, 1, 0);
+
+ rab->sourceStatisticsDescriptor = new_long(RANAP_SourceStatisticsDescriptor_speech);
+
+ return rab;
+}
+
+static RANAP_NAS_SynchronisationIndicator_t *new_rab_nas_sync_ind(int val)
+{
+ uint8_t val_buf = (val / 10) << 4;
+ RANAP_NAS_SynchronisationIndicator_t *nsi = CALLOC(1, sizeof(*nsi));
+ BIT_STRING_fromBuf(nsi, &val_buf, 4);
+ return nsi;
+}
+
+static RANAP_RAB_Parameters_t *new_rab_par_data(uint32_t dl_max_bitrate, uint32_t ul_max_bitrate)
+{
+ RANAP_RAB_Parameters_t *rab = CALLOC(1, sizeof(*rab));
+ RANAP_SDU_ParameterItem_t *sdui;
+
+ rab->trafficClass = RANAP_TrafficClass_background;
+ rab->rAB_AsymmetryIndicator = RANAP_RAB_AsymmetryIndicator_asymmetric_bidirectional;
+
+ ASN_SEQUENCE_ADD(&rab->maxBitrate.list, new_long(dl_max_bitrate));
+ ASN_SEQUENCE_ADD(&rab->maxBitrate.list, new_long(ul_max_bitrate));
+ rab->deliveryOrder = RANAP_DeliveryOrder_delivery_order_requested;
+ rab->maxSDU_Size = 8000;
+
+ sdui = new_sdu_par_item(SDUPAR_P_DATA);
+ ASN_SEQUENCE_ADD(&rab->sDU_Parameters, sdui);
+
+ rab->allocationOrRetentionPriority = new_alloc_ret_prio(RANAP_PriorityLevel_no_priority, 0, 0, 0);
+
+ RANAP_ProtocolExtensionField_t *pxf = CALLOC(1, sizeof(*pxf));
+ pxf->id = RANAP_ProtocolIE_ID_id_RAB_Parameter_ExtendedMaxBitrateList;
+ pxf->criticality = RANAP_Criticality_ignore;
+
+ RANAP_RAB_Parameter_ExtendedMaxBitrateList_t *rab_mbrlist = CALLOC(1, sizeof(*rab_mbrlist));
+ RANAP_ExtendedMaxBitrate_t *xmbr = CALLOC(1, sizeof(*xmbr));
+ *xmbr = 42000000;
+ ASN_SEQUENCE_ADD(&rab_mbrlist->list, xmbr);
+
+ ANY_fromType_aper(&pxf->value, &asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList, rab_mbrlist);
+
+ ASN_STRUCT_FREE(asn_DEF_RANAP_RAB_Parameter_ExtendedMaxBitrateList, rab_mbrlist);
+
+ rab->iE_Extensions = CALLOC(1, sizeof(*rab->iE_Extensions));
+ ASN_SEQUENCE_ADD(&rab->iE_Extensions->list, pxf);
+
+ return rab;
+}
+
+static void new_transp_layer_addr(BIT_STRING_t *out, uint32_t ip, bool use_x213_nsap)
+{
+ uint8_t *buf;
+ unsigned int len;
+
+ if (use_x213_nsap) {
+ len = 160/8;
+ buf = CALLOC(len, sizeof(uint8_t));
+ buf[0] = 0x35; /* AFI For IANA ICP */
+ buf[1] = 0x00; /* See A.5.2.1.2.7 of X.213 */
+ buf[2] = 0x01;
+ *(uint32_t *)&buf[3] = ntohl(ip);
+ } else {
+ len = 4;
+ buf = CALLOC(len, sizeof(uint8_t));
+ *(uint32_t *)buf = ntohl(ip);
+ }
+ out->buf = buf;
+ out->size = len;
+ out->bits_unused = 0;
+}
+
+static RANAP_TransportLayerInformation_t *new_transp_info_rtp(uint32_t ip, uint16_t port,
+ bool use_x213_nsap)
+{
+ RANAP_TransportLayerInformation_t *tli = CALLOC(1, sizeof(*tli));
+ uint8_t binding_id[4];
+
+ binding_id[0] = port >> 8;
+ binding_id[1] = port & 0xff;
+ binding_id[2] = binding_id[3] = 0;
+
+ new_transp_layer_addr(&tli->transportLayerAddress, ip, use_x213_nsap);
+ tli->iuTransportAssociation.present = RANAP_IuTransportAssociation_PR_bindingID;
+ OCTET_STRING_fromBuf(&tli->iuTransportAssociation.choice.bindingID,
+ (const char *) binding_id, sizeof(binding_id));
+
+ return tli;
+}
+
+static RANAP_TransportLayerInformation_t *new_transp_info_gtp(uint32_t ip, uint32_t tei,
+ bool use_x213_nsap)
+{
+ RANAP_TransportLayerInformation_t *tli = CALLOC(1, sizeof(*tli));
+ uint32_t binding_buf = htonl(tei);
+
+ new_transp_layer_addr(&tli->transportLayerAddress, ip, use_x213_nsap);
+ tli->iuTransportAssociation.present = RANAP_IuTransportAssociation_PR_gTP_TEI;
+ OCTET_STRING_fromBuf(&tli->iuTransportAssociation.choice.gTP_TEI,
+ (const char *) &binding_buf, sizeof(binding_buf));
+
+ return tli;
+}
+
+static RANAP_UserPlaneInformation_t *new_upi(long mode, uint8_t mode_versions)
+{
+ RANAP_UserPlaneInformation_t *upi = CALLOC(1, sizeof(*upi));
+ uint16_t *buf = CALLOC(1, sizeof(*buf));
+
+ *buf = ntohs(mode_versions);
+
+ upi->userPlaneMode = mode;
+ upi->uP_ModeVersions.buf = (uint8_t *) buf;
+ upi->uP_ModeVersions.size = sizeof(*buf);
+ upi->uP_ModeVersions.bits_unused = 0;
+
+ return upi;
+}
+
+
+static void assign_new_ra_id(RANAP_RAB_ID_t *id, uint8_t rab_id)
+{
+ uint8_t *buf = CALLOC(1, sizeof(*buf));
+ *buf = rab_id;
+
+ id->buf = buf;
+ id->size = 1;
+ id->bits_unused = 0;
+}
+
+/*! \brief generate RANAP RAB ASSIGNMENT REQUEST message for CS (voice).
+ * See 3GPP TS 25.413 8.2.
+ * RAB ID: 3GPP TS 25.413 9.2.1.2
+ */
+struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip,
+ uint16_t rtp_port,
+ bool use_x213_nsap)
+{
+ RANAP_ProtocolIE_FieldPair_t *pair;
+ RANAP_RAB_AssignmentRequestIEs_t ies;
+ RANAP_RAB_AssignmentRequest_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* only assingnment is present, no release */
+ ies.presenceMask = RAB_ASSIGNMENTREQUESTIES_RANAP_RAB_SETUPORMODIFYLIST_PRESENT;
+
+ /* put together the 'First' part */
+ RANAP_RAB_SetupOrModifyItemFirst_t first;
+ memset(&first, 0, sizeof(first));
+ assign_new_ra_id(&first.rAB_ID, rab_id);
+ first.nAS_SynchronisationIndicator = new_rab_nas_sync_ind(60);
+ first.rAB_Parameters = new_rab_par_voice(6700, 12200);
+ first.userPlaneInformation = new_upi(RANAP_UserPlaneMode_support_mode_for_predefined_SDU_sizes, 1); /* 2? */
+ first.transportLayerInformation = new_transp_info_rtp(rtp_ip, rtp_port,
+ use_x213_nsap);
+
+ /* put together the 'Second' part */
+ RANAP_RAB_SetupOrModifyItemSecond_t second;
+ memset(&second, 0, sizeof(second));
+
+ /* Build an IE Pair out of first and second part:
+ * (first, second) -> pair */
+ pair = ranap_new_ie_pair(RANAP_ProtocolIE_ID_id_RAB_SetupOrModifyItem,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_RAB_SetupOrModifyItemFirst, &first,
+ RANAP_Criticality_ignore,
+ &asn_DEF_RANAP_RAB_SetupOrModifyItemSecond, &second);
+
+ /* the pair has been made, we can release any of its elements */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst, &first);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond, &second);
+
+ RANAP_ProtocolIE_ContainerPair_t *container_pair = CALLOC(1, sizeof(*container_pair));
+ /* Add the pair to the list of IEs of the RAB ass.req */
+ ASN_SEQUENCE_ADD(container_pair, pair);
+ ASN_SEQUENCE_ADD(&ies.raB_SetupOrModifyList.list, container_pair);
+
+ /* encode the IEs into the actual assignment request:
+ * ies -> out */
+ rc = ranap_encode_rab_assignmentrequesties(&out, &ies);
+ /* 'out' has been generated, we can now release the input */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyList,
+ &ies.raB_SetupOrModifyList);
+ if (rc < 0)
+ return NULL;
+
+ /* generate an Initiating Mesasage: out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_RAB_Assignment,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_RAB_AssignmentRequest, &out);
+
+ /* 'msg' has been generated, we cann now release the input 'out' */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_AssignmentRequest, &out);
+
+ return msg;
+}
+
+/*! \brief generate RANAP RAB ASSIGNMENT REQUEST message for PS (data) */
+struct msgb *ranap_new_msg_rab_assign_data(uint8_t rab_id, uint32_t gtp_ip,
+ uint32_t gtp_tei, bool use_x213_nsap)
+{
+ RANAP_ProtocolIE_FieldPair_t *pair;
+ RANAP_RAB_AssignmentRequestIEs_t ies;
+ RANAP_RAB_AssignmentRequest_t out;
+ RANAP_DataVolumeReportingIndication_t *dat_vol_ind;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* only assingnment is present, no release */
+ ies.presenceMask = RAB_ASSIGNMENTREQUESTIES_RANAP_RAB_SETUPORMODIFYLIST_PRESENT;
+
+ /* put together the 'First' part */
+ RANAP_RAB_SetupOrModifyItemFirst_t first;
+ memset(&first, 0, sizeof(first));
+ assign_new_ra_id(&first.rAB_ID, rab_id);
+ //first.nAS_SynchronisationIndicator = FIXME;
+
+ first.rAB_Parameters = new_rab_par_data(1600000, 800000);
+ first.userPlaneInformation = new_upi(RANAP_UserPlaneMode_transparent_mode, 1);
+ first.transportLayerInformation = new_transp_info_gtp(gtp_ip, gtp_tei,
+ use_x213_nsap);
+
+ /* put together the 'Second' part */
+ RANAP_RAB_SetupOrModifyItemSecond_t second;
+ memset(&second, 0, sizeof(second));
+ second.pDP_TypeInformation = CALLOC(1, sizeof(*second.pDP_TypeInformation));
+ ASN_SEQUENCE_ADD(second.pDP_TypeInformation, new_long(RANAP_PDP_Type_ipv4));
+ dat_vol_ind = CALLOC(1, sizeof(*dat_vol_ind));
+ *dat_vol_ind = RANAP_DataVolumeReportingIndication_do_not_report;
+ second.dataVolumeReportingIndication = dat_vol_ind;
+ second.dl_GTP_PDU_SequenceNumber = new_long(0);
+ second.ul_GTP_PDU_SequenceNumber = new_long(0);
+
+ /* Build an IE Pair out of first and second part:
+ * (first, second) -> pair */
+ pair = ranap_new_ie_pair(RANAP_ProtocolIE_ID_id_RAB_SetupOrModifyItem,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_RAB_SetupOrModifyItemFirst,
+ &first, RANAP_Criticality_ignore,
+ &asn_DEF_RANAP_RAB_SetupOrModifyItemSecond,
+ &second);
+
+ /* the pair has been made, we can release any of its elements */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyItemFirst, &first);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyItemSecond, &second);
+
+ RANAP_ProtocolIE_ContainerPair_t *container_pair = CALLOC(1, sizeof(*container_pair));
+ /* Add the pair to the list of IEs of the RAB ass.req */
+ ASN_SEQUENCE_ADD(&container_pair->list, pair);
+ /* Add the pair to the list of IEs of the RAB ass.req */
+ ASN_SEQUENCE_ADD(&ies.raB_SetupOrModifyList.list, container_pair);
+
+ /* encode the IEs into the actual assignment request:
+ * ies -> out */
+ rc = ranap_encode_rab_assignmentrequesties(&out, &ies);
+ /* 'out' has been generated, we can now release the input */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_SetupOrModifyList,
+ &ies.raB_SetupOrModifyList);
+ if (rc < 0)
+ return NULL;
+
+ /* generate an Initiating Mesasage: out -> msg */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_RAB_Assignment,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_RAB_AssignmentRequest, &out);
+
+ /* 'msg' has been generated, we cann now release the input 'out' */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_AssignmentRequest, &out);
+
+ return msg;
+}
+
+struct msgb *ranap_new_msg_iu_rel_req(const RANAP_Cause_t *cause)
+{
+ RANAP_Iu_ReleaseRequestIEs_t ies;
+ RANAP_Iu_ReleaseRequest_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ memcpy(&ies.cause, cause, sizeof(ies.cause));
+
+ rc = ranap_encode_iu_releaserequesties(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ /* encode the output into the msgb */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_Iu_ReleaseRequest,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_Iu_ReleaseRequest, &out);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_Iu_ReleaseRequest, &out);
+
+ return msg;
+}
+
+struct msgb *ranap_new_msg_rab_rel_req(uint8_t rab_id, const RANAP_Cause_t *cause)
+{
+ RANAP_RAB_ReleaseItemIEs_t item_ies;
+ RANAP_RAB_ReleaseRequestIEs_t ies;
+ RANAP_RAB_ReleaseRequest_t out;
+ struct msgb *msg;
+ int rc;
+
+ memset(&item_ies, 0, sizeof(item_ies));
+ memset(&ies, 0, sizeof(ies));
+ memset(&out, 0, sizeof(out));
+
+ /* put together the ReleaseItem */
+ assign_new_ra_id(&item_ies.raB_ReleaseItem.rAB_ID, rab_id);
+ memcpy(&item_ies.raB_ReleaseItem.cause, cause, sizeof(item_ies.raB_ReleaseItem.cause));
+
+ /* add to the list */
+ rc = ranap_encode_rab_releaseitemies(&ies.raB_ReleaseList, &item_ies);
+ if (rc < 0)
+ return NULL;
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_ReleaseItem, &item_ies.raB_ReleaseItem);
+
+ /* encoe the list IEs into the output */
+ rc = ranap_encode_rab_releaserequesties(&out, &ies);
+ if (rc < 0)
+ return NULL;
+ /* 'out' has been generated, we can release the input */
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_ReleaseList, &ies.raB_ReleaseList);
+
+ /* encode the output into the msgb */
+ msg = ranap_generate_initiating_message(RANAP_ProcedureCode_id_RAB_ReleaseRequest,
+ RANAP_Criticality_reject,
+ &asn_DEF_RANAP_RAB_ReleaseRequest, &out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_RAB_ReleaseRequest, &out);
+
+ return msg;
+}
diff --git a/src/regen-common-includes.sh b/src/regen-common-includes.sh
new file mode 100755
index 0000000..8754995
--- /dev/null
+++ b/src/regen-common-includes.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+#for f in `(cd ../asn1/hnbap/asn1c && ls --color=none -1 *.h)`; do echo "#include \"$f\""; done
+for f in ranap/*.h; do echo "#include \"$f\""; done
diff --git a/src/rua/Makefile.am b/src/rua/Makefile.am
new file mode 100644
index 0000000..d8fb042
--- /dev/null
+++ b/src/rua/Makefile.am
@@ -0,0 +1,89 @@
+ASN_MODULE_SOURCES= \
+ RUA_Criticality.c \
+ RUA_Presence.c \
+ RUA_ProcedureCode.c \
+ RUA_PrivateIE-ID.c \
+ RUA_ProtocolIE-ID.c \
+ RUA_TriggeringMessage.c \
+ RUA_IE-Extensions.c \
+ RUA_CN-DomainIndicator.c \
+ RUA_CSGMembershipStatus.c \
+ RUA_Establishment-Cause.c \
+ RUA_Context-ID.c \
+ RUA_IntraDomainNasNodeSelector.c \
+ RUA_Gsm-map-IDNNS.c \
+ RUA_Ansi-41-IDNNS.c \
+ RUA_RANAP-Message.c \
+ RUA_RoutingParameter.c \
+ RUA_Cause.c \
+ RUA_CauseRadioNetwork.c \
+ RUA_CauseTransport.c \
+ RUA_CauseProtocol.c \
+ RUA_CauseMisc.c \
+ RUA_CriticalityDiagnostics.c \
+ RUA_CriticalityDiagnostics-IE-List.c \
+ RUA_TypeOfError.c \
+ RUA_RUA-PDU.c \
+ RUA_InitiatingMessage.c \
+ RUA_SuccessfulOutcome.c \
+ RUA_UnsuccessfulOutcome.c \
+ RUA_Connect.c \
+ RUA_DirectTransfer.c \
+ RUA_Disconnect.c \
+ RUA_ConnectionlessTransfer.c \
+ RUA_ErrorIndication.c \
+ RUA_PrivateMessage.c \
+ RUA_IE.c
+
+ASN_MODULE_INC= \
+ RUA_Criticality.h \
+ RUA_Presence.h \
+ RUA_ProcedureCode.h \
+ RUA_PrivateIE-ID.h \
+ RUA_ProtocolIE-ID.h \
+ RUA_TriggeringMessage.h \
+ RUA_IE-Extensions.h \
+ RUA_CN-DomainIndicator.h \
+ RUA_CSGMembershipStatus.h \
+ RUA_Establishment-Cause.h \
+ RUA_Context-ID.h \
+ RUA_IntraDomainNasNodeSelector.h \
+ RUA_Gsm-map-IDNNS.h \
+ RUA_Ansi-41-IDNNS.h \
+ RUA_RANAP-Message.h \
+ RUA_RoutingParameter.h \
+ RUA_Cause.h \
+ RUA_CauseRadioNetwork.h \
+ RUA_CauseTransport.h \
+ RUA_CauseProtocol.h \
+ RUA_CauseMisc.h \
+ RUA_CriticalityDiagnostics.h \
+ RUA_CriticalityDiagnostics-IE-List.h \
+ RUA_TypeOfError.h \
+ RUA_RUA-PDU.h \
+ RUA_InitiatingMessage.h \
+ RUA_SuccessfulOutcome.h \
+ RUA_UnsuccessfulOutcome.h \
+ RUA_Connect.h \
+ RUA_DirectTransfer.h \
+ RUA_Disconnect.h \
+ RUA_ConnectionlessTransfer.h \
+ RUA_ErrorIndication.h \
+ RUA_PrivateMessage.h \
+ RUA_IE.h
+
+AM_CFLAGS = -I$(top_srcdir)/include $(ASN1C_CFLAGS) $(OSMOCORE_CFLAGS)
+
+noinst_LIBRARIES=libosmo-asn1-rua.a
+libosmo_asn1_rua_a_SOURCES=$(ASN_MODULE_SOURCES)
+libosmo_asn1_rua_a_LIBADD=$(ASN1C_LDADD)
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+ ASN1C_PREFIX="RUA_" asn1c -gen-PER $(top_srcdir)/asn1/rua/RUA-CommonDataTypes.asn $(top_srcdir)/asn1/rua/RUA-Constants.asn $(top_srcdir)/asn1/rua/RUA-IEs.asn $(top_srcdir)/asn1/rua/RUA-PDU.asn
+# remove the local copy of the runtime code
+ @rm ANY.* BOOLEAN.* INTEGER.* NativeEnumerated.* NativeInteger.* OBJECT_IDENTIFIER.* asn_* OCTET_STRING.* converter-sample.c per_* xer_* constr* der_* ber_* BIT_STRING.*
+# change include style to `#include <dir/foo.h>'
+ $(top_srcdir)/move-asn1-header-files.sh osmocom/rua $(ASN_MODULE_INC)
+
diff --git a/src/rua/RUA_Ansi-41-IDNNS.c b/src/rua/RUA_Ansi-41-IDNNS.c
new file mode 100644
index 0000000..3895632
--- /dev/null
+++ b/src/rua/RUA_Ansi-41-IDNNS.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_Ansi-41-IDNNS.h>
+
+int
+RUA_Ansi_41_IDNNS_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 14l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_Ansi_41_IDNNS_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Ansi_41_IDNNS_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Ansi_41_IDNNS_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Ansi_41_IDNNS_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Ansi_41_IDNNS_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Ansi_41_IDNNS_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 14l, 14l } /* (SIZE(14..14)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Ansi_41_IDNNS_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Ansi_41_IDNNS = {
+ "RUA_Ansi-41-IDNNS",
+ "RUA_Ansi-41-IDNNS",
+ RUA_Ansi_41_IDNNS_free,
+ RUA_Ansi_41_IDNNS_print,
+ RUA_Ansi_41_IDNNS_constraint,
+ RUA_Ansi_41_IDNNS_decode_ber,
+ RUA_Ansi_41_IDNNS_encode_der,
+ RUA_Ansi_41_IDNNS_decode_xer,
+ RUA_Ansi_41_IDNNS_encode_xer,
+ RUA_Ansi_41_IDNNS_decode_uper,
+ RUA_Ansi_41_IDNNS_encode_uper,
+ RUA_Ansi_41_IDNNS_decode_aper,
+ RUA_Ansi_41_IDNNS_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Ansi_41_IDNNS_tags_1,
+ sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1)
+ /sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Ansi_41_IDNNS_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1)
+ /sizeof(asn_DEF_RUA_Ansi_41_IDNNS_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_Ansi_41_IDNNS_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_CN-DomainIndicator.c b/src/rua/RUA_CN-DomainIndicator.c
new file mode 100644
index 0000000..e7e137e
--- /dev/null
+++ b/src/rua/RUA_CN-DomainIndicator.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CN-DomainIndicator.h>
+
+int
+RUA_CN_DomainIndicator_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CN_DomainIndicator_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CN_DomainIndicator_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CN_DomainIndicator_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CN_DomainIndicator_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CN_DomainIndicator_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CN_DomainIndicator_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CN_DomainIndicator_value2enum_1[] = {
+ { 0, 9, "cs-domain" },
+ { 1, 9, "ps-domain" }
+};
+static const unsigned int asn_MAP_RUA_CN_DomainIndicator_enum2value_1[] = {
+ 0, /* cs-domain(0) */
+ 1 /* ps-domain(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CN_DomainIndicator_specs_1 = {
+ asn_MAP_RUA_CN_DomainIndicator_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CN_DomainIndicator_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CN_DomainIndicator_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CN_DomainIndicator = {
+ "RUA_CN-DomainIndicator",
+ "RUA_CN-DomainIndicator",
+ RUA_CN_DomainIndicator_free,
+ RUA_CN_DomainIndicator_print,
+ RUA_CN_DomainIndicator_constraint,
+ RUA_CN_DomainIndicator_decode_ber,
+ RUA_CN_DomainIndicator_encode_der,
+ RUA_CN_DomainIndicator_decode_xer,
+ RUA_CN_DomainIndicator_encode_xer,
+ RUA_CN_DomainIndicator_decode_uper,
+ RUA_CN_DomainIndicator_encode_uper,
+ RUA_CN_DomainIndicator_decode_aper,
+ RUA_CN_DomainIndicator_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CN_DomainIndicator_tags_1,
+ sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CN_DomainIndicator_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1)
+ /sizeof(asn_DEF_RUA_CN_DomainIndicator_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CN_DomainIndicator_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CN_DomainIndicator_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CSGMembershipStatus.c b/src/rua/RUA_CSGMembershipStatus.c
new file mode 100644
index 0000000..718bd76
--- /dev/null
+++ b/src/rua/RUA_CSGMembershipStatus.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CSGMembershipStatus.h>
+
+int
+RUA_CSGMembershipStatus_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CSGMembershipStatus_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CSGMembershipStatus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CSGMembershipStatus_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CSGMembershipStatus_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CSGMembershipStatus_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CSGMembershipStatus_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CSGMembershipStatus_value2enum_1[] = {
+ { 0, 6, "member" },
+ { 1, 10, "non-member" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CSGMembershipStatus_enum2value_1[] = {
+ 0, /* member(0) */
+ 1 /* non-member(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CSGMembershipStatus_specs_1 = {
+ asn_MAP_RUA_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CSGMembershipStatus_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CSGMembershipStatus_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CSGMembershipStatus = {
+ "RUA_CSGMembershipStatus",
+ "RUA_CSGMembershipStatus",
+ RUA_CSGMembershipStatus_free,
+ RUA_CSGMembershipStatus_print,
+ RUA_CSGMembershipStatus_constraint,
+ RUA_CSGMembershipStatus_decode_ber,
+ RUA_CSGMembershipStatus_encode_der,
+ RUA_CSGMembershipStatus_decode_xer,
+ RUA_CSGMembershipStatus_encode_xer,
+ RUA_CSGMembershipStatus_decode_uper,
+ RUA_CSGMembershipStatus_encode_uper,
+ RUA_CSGMembershipStatus_decode_aper,
+ RUA_CSGMembershipStatus_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CSGMembershipStatus_tags_1,
+ sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1)
+ /sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CSGMembershipStatus_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1)
+ /sizeof(asn_DEF_RUA_CSGMembershipStatus_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CSGMembershipStatus_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CSGMembershipStatus_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Cause.c b/src/rua/RUA_Cause.c
new file mode 100644
index 0000000..abd2b40
--- /dev/null
+++ b/src/rua/RUA_Cause.c
@@ -0,0 +1,92 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_Cause.h>
+
+static asn_per_constraints_t asn_PER_type_RUA_Cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_Cause_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.radioNetwork),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_CauseRadioNetwork,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "radioNetwork"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.transport),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_CauseTransport,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "transport"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.protocol),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_CauseProtocol,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "protocol"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Cause, choice.misc),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_CauseMisc,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "misc"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Cause_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_Cause_specs_1 = {
+ sizeof(struct RUA_Cause),
+ offsetof(struct RUA_Cause, _asn_ctx),
+ offsetof(struct RUA_Cause, present),
+ sizeof(((struct RUA_Cause *)0)->present),
+ asn_MAP_RUA_Cause_tag2el_1,
+ 4, /* Count of tags in the map */
+ 0,
+ 4 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Cause = {
+ "RUA_Cause",
+ "RUA_Cause",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RUA_Cause_constr_1,
+ asn_MBR_RUA_Cause_1,
+ 4, /* Elements count */
+ &asn_SPC_RUA_Cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseMisc.c b/src/rua/RUA_CauseMisc.c
new file mode 100644
index 0000000..ab68490
--- /dev/null
+++ b/src/rua/RUA_CauseMisc.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CauseMisc.h>
+
+int
+RUA_CauseMisc_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseMisc_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CauseMisc_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseMisc_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseMisc_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseMisc_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseMisc_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseMisc_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseMisc_value2enum_1[] = {
+ { 0, 19, "processing-overload" },
+ { 1, 16, "hardware-failure" },
+ { 2, 20, "o-and-m-intervention" },
+ { 3, 11, "unspecified" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseMisc_enum2value_1[] = {
+ 1, /* hardware-failure(1) */
+ 2, /* o-and-m-intervention(2) */
+ 0, /* processing-overload(0) */
+ 3 /* unspecified(3) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseMisc_specs_1 = {
+ asn_MAP_RUA_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseMisc_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseMisc = {
+ "RUA_CauseMisc",
+ "RUA_CauseMisc",
+ RUA_CauseMisc_free,
+ RUA_CauseMisc_print,
+ RUA_CauseMisc_constraint,
+ RUA_CauseMisc_decode_ber,
+ RUA_CauseMisc_encode_der,
+ RUA_CauseMisc_decode_xer,
+ RUA_CauseMisc_encode_xer,
+ RUA_CauseMisc_decode_uper,
+ RUA_CauseMisc_encode_uper,
+ RUA_CauseMisc_decode_aper,
+ RUA_CauseMisc_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CauseMisc_tags_1,
+ sizeof(asn_DEF_RUA_CauseMisc_tags_1)
+ /sizeof(asn_DEF_RUA_CauseMisc_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CauseMisc_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CauseMisc_tags_1)
+ /sizeof(asn_DEF_RUA_CauseMisc_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CauseMisc_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CauseMisc_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseProtocol.c b/src/rua/RUA_CauseProtocol.c
new file mode 100644
index 0000000..0c03177
--- /dev/null
+++ b/src/rua/RUA_CauseProtocol.c
@@ -0,0 +1,177 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CauseProtocol.h>
+
+int
+RUA_CauseProtocol_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseProtocol_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CauseProtocol_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseProtocol_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseProtocol_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseProtocol_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseProtocol_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseProtocol_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0l, 6l } /* (0..6,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseProtocol_value2enum_1[] = {
+ { 0, 21, "transfer-syntax-error" },
+ { 1, 28, "abstract-syntax-error-reject" },
+ { 2, 39, "abstract-syntax-error-ignore-and-notify" },
+ { 3, 42, "message-not-compatible-with-receiver-state" },
+ { 4, 14, "semantic-error" },
+ { 5, 11, "unspecified" },
+ { 6, 49, "abstract-syntax-error-falsely-constructed-message" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseProtocol_enum2value_1[] = {
+ 6, /* abstract-syntax-error-falsely-constructed-message(6) */
+ 2, /* abstract-syntax-error-ignore-and-notify(2) */
+ 1, /* abstract-syntax-error-reject(1) */
+ 3, /* message-not-compatible-with-receiver-state(3) */
+ 4, /* semantic-error(4) */
+ 0, /* transfer-syntax-error(0) */
+ 5 /* unspecified(5) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseProtocol_specs_1 = {
+ asn_MAP_RUA_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */
+ 7, /* Number of elements in the maps */
+ 8, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseProtocol_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseProtocol = {
+ "RUA_CauseProtocol",
+ "RUA_CauseProtocol",
+ RUA_CauseProtocol_free,
+ RUA_CauseProtocol_print,
+ RUA_CauseProtocol_constraint,
+ RUA_CauseProtocol_decode_ber,
+ RUA_CauseProtocol_encode_der,
+ RUA_CauseProtocol_decode_xer,
+ RUA_CauseProtocol_encode_xer,
+ RUA_CauseProtocol_decode_uper,
+ RUA_CauseProtocol_encode_uper,
+ RUA_CauseProtocol_decode_aper,
+ RUA_CauseProtocol_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CauseProtocol_tags_1,
+ sizeof(asn_DEF_RUA_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_RUA_CauseProtocol_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CauseProtocol_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CauseProtocol_tags_1)
+ /sizeof(asn_DEF_RUA_CauseProtocol_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CauseProtocol_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CauseProtocol_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseRadioNetwork.c b/src/rua/RUA_CauseRadioNetwork.c
new file mode 100644
index 0000000..b098555
--- /dev/null
+++ b/src/rua/RUA_CauseRadioNetwork.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CauseRadioNetwork.h>
+
+int
+RUA_CauseRadioNetwork_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CauseRadioNetwork_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseRadioNetwork_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseRadioNetwork_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseRadioNetwork_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseRadioNetwork_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseRadioNetwork_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 3l } /* (0..3,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseRadioNetwork_value2enum_1[] = {
+ { 0, 6, "normal" },
+ { 1, 14, "connect-failed" },
+ { 2, 15, "network-release" },
+ { 3, 11, "unspecified" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseRadioNetwork_enum2value_1[] = {
+ 1, /* connect-failed(1) */
+ 2, /* network-release(2) */
+ 0, /* normal(0) */
+ 3 /* unspecified(3) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseRadioNetwork_specs_1 = {
+ asn_MAP_RUA_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */
+ 4, /* Number of elements in the maps */
+ 5, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseRadioNetwork_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseRadioNetwork = {
+ "RUA_CauseRadioNetwork",
+ "RUA_CauseRadioNetwork",
+ RUA_CauseRadioNetwork_free,
+ RUA_CauseRadioNetwork_print,
+ RUA_CauseRadioNetwork_constraint,
+ RUA_CauseRadioNetwork_decode_ber,
+ RUA_CauseRadioNetwork_encode_der,
+ RUA_CauseRadioNetwork_decode_xer,
+ RUA_CauseRadioNetwork_encode_xer,
+ RUA_CauseRadioNetwork_decode_uper,
+ RUA_CauseRadioNetwork_encode_uper,
+ RUA_CauseRadioNetwork_decode_aper,
+ RUA_CauseRadioNetwork_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CauseRadioNetwork_tags_1,
+ sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CauseRadioNetwork_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1)
+ /sizeof(asn_DEF_RUA_CauseRadioNetwork_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CauseRadioNetwork_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CauseRadioNetwork_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CauseTransport.c b/src/rua/RUA_CauseTransport.c
new file mode 100644
index 0000000..95ccbcc
--- /dev/null
+++ b/src/rua/RUA_CauseTransport.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CauseTransport.h>
+
+int
+RUA_CauseTransport_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_CauseTransport_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_CauseTransport_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_CauseTransport_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_CauseTransport_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_CauseTransport_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_CauseTransport_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_CauseTransport_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_CauseTransport_value2enum_1[] = {
+ { 0, 30, "transport-resource-unavailable" },
+ { 1, 11, "unspecified" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_CauseTransport_enum2value_1[] = {
+ 0, /* transport-resource-unavailable(0) */
+ 1 /* unspecified(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_CauseTransport_specs_1 = {
+ asn_MAP_RUA_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CauseTransport_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CauseTransport = {
+ "RUA_CauseTransport",
+ "RUA_CauseTransport",
+ RUA_CauseTransport_free,
+ RUA_CauseTransport_print,
+ RUA_CauseTransport_constraint,
+ RUA_CauseTransport_decode_ber,
+ RUA_CauseTransport_encode_der,
+ RUA_CauseTransport_decode_xer,
+ RUA_CauseTransport_encode_xer,
+ RUA_CauseTransport_decode_uper,
+ RUA_CauseTransport_encode_uper,
+ RUA_CauseTransport_decode_aper,
+ RUA_CauseTransport_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CauseTransport_tags_1,
+ sizeof(asn_DEF_RUA_CauseTransport_tags_1)
+ /sizeof(asn_DEF_RUA_CauseTransport_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CauseTransport_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CauseTransport_tags_1)
+ /sizeof(asn_DEF_RUA_CauseTransport_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CauseTransport_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_CauseTransport_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Connect.c b/src/rua/RUA_Connect.c
new file mode 100644
index 0000000..19d56a1
--- /dev/null
+++ b/src/rua/RUA_Connect.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_Connect.h>
+
+static int
+memb_connect_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_connect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_connect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_connect_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_connect_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_connect_ies_specs_2 = {
+ sizeof(struct connect_ies),
+ offsetof(struct connect_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_connect_ies_2 = {
+ "connect-ies",
+ "connect-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_connect_ies_tags_2,
+ sizeof(asn_DEF_connect_ies_tags_2)
+ /sizeof(asn_DEF_connect_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_connect_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_connect_ies_tags_2)
+ /sizeof(asn_DEF_connect_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_connect_ies_constr_2,
+ asn_MBR_connect_ies_2,
+ 1, /* Single element */
+ &asn_SPC_connect_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Connect_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Connect, connect_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_connect_ies_2,
+ memb_connect_ies_constraint_1,
+ &asn_PER_memb_connect_ies_constr_2,
+ 0,
+ "connect-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Connect_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Connect_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* connect-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Connect_specs_1 = {
+ sizeof(struct RUA_Connect),
+ offsetof(struct RUA_Connect, _asn_ctx),
+ asn_MAP_RUA_Connect_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Connect = {
+ "RUA_Connect",
+ "RUA_Connect",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Connect_tags_1,
+ sizeof(asn_DEF_RUA_Connect_tags_1)
+ /sizeof(asn_DEF_RUA_Connect_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Connect_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Connect_tags_1)
+ /sizeof(asn_DEF_RUA_Connect_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_Connect_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_Connect_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_ConnectionlessTransfer.c b/src/rua/RUA_ConnectionlessTransfer.c
new file mode 100644
index 0000000..086a240
--- /dev/null
+++ b/src/rua/RUA_ConnectionlessTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_ConnectionlessTransfer.h>
+
+static int
+memb_connectionlessTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_connectionlessTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_connectionlessTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_connectionlessTransfer_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_connectionlessTransfer_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_connectionlessTransfer_ies_specs_2 = {
+ sizeof(struct connectionlessTransfer_ies),
+ offsetof(struct connectionlessTransfer_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_connectionlessTransfer_ies_2 = {
+ "connectionlessTransfer-ies",
+ "connectionlessTransfer-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_connectionlessTransfer_ies_tags_2,
+ sizeof(asn_DEF_connectionlessTransfer_ies_tags_2)
+ /sizeof(asn_DEF_connectionlessTransfer_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_connectionlessTransfer_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_connectionlessTransfer_ies_tags_2)
+ /sizeof(asn_DEF_connectionlessTransfer_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_connectionlessTransfer_ies_constr_2,
+ asn_MBR_connectionlessTransfer_ies_2,
+ 1, /* Single element */
+ &asn_SPC_connectionlessTransfer_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_ConnectionlessTransfer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_ConnectionlessTransfer, connectionlessTransfer_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_connectionlessTransfer_ies_2,
+ memb_connectionlessTransfer_ies_constraint_1,
+ &asn_PER_memb_connectionlessTransfer_ies_constr_2,
+ 0,
+ "connectionlessTransfer-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ConnectionlessTransfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_ConnectionlessTransfer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* connectionlessTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_ConnectionlessTransfer_specs_1 = {
+ sizeof(struct RUA_ConnectionlessTransfer),
+ offsetof(struct RUA_ConnectionlessTransfer, _asn_ctx),
+ asn_MAP_RUA_ConnectionlessTransfer_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ConnectionlessTransfer = {
+ "RUA_ConnectionlessTransfer",
+ "RUA_ConnectionlessTransfer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_ConnectionlessTransfer_tags_1,
+ sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1)
+ /sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1[0]), /* 1 */
+ asn_DEF_RUA_ConnectionlessTransfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1)
+ /sizeof(asn_DEF_RUA_ConnectionlessTransfer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_ConnectionlessTransfer_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_ConnectionlessTransfer_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Context-ID.c b/src/rua/RUA_Context-ID.c
new file mode 100644
index 0000000..e6d7780
--- /dev/null
+++ b/src/rua/RUA_Context-ID.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_Context-ID.h>
+
+int
+RUA_Context_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 24l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Context_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_Context_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Context_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Context_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Context_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Context_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Context_ID_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 24l, 24l } /* (SIZE(24..24)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Context_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Context_ID = {
+ "RUA_Context-ID",
+ "RUA_Context-ID",
+ RUA_Context_ID_free,
+ RUA_Context_ID_print,
+ RUA_Context_ID_constraint,
+ RUA_Context_ID_decode_ber,
+ RUA_Context_ID_encode_der,
+ RUA_Context_ID_decode_xer,
+ RUA_Context_ID_encode_xer,
+ RUA_Context_ID_decode_uper,
+ RUA_Context_ID_encode_uper,
+ RUA_Context_ID_decode_aper,
+ RUA_Context_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Context_ID_tags_1,
+ sizeof(asn_DEF_RUA_Context_ID_tags_1)
+ /sizeof(asn_DEF_RUA_Context_ID_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Context_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Context_ID_tags_1)
+ /sizeof(asn_DEF_RUA_Context_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_Context_ID_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_Criticality.c b/src/rua/RUA_Criticality.c
new file mode 100644
index 0000000..9e3a1f2
--- /dev/null
+++ b/src/rua/RUA_Criticality.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_Criticality.h>
+
+int
+RUA_Criticality_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Criticality_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_Criticality_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Criticality_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Criticality_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Criticality_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Criticality_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Criticality_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Criticality_value2enum_1[] = {
+ { 0, 6, "reject" },
+ { 1, 6, "ignore" },
+ { 2, 6, "notify" }
+};
+static const unsigned int asn_MAP_RUA_Criticality_enum2value_1[] = {
+ 1, /* ignore(1) */
+ 2, /* notify(2) */
+ 0 /* reject(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Criticality_specs_1 = {
+ asn_MAP_RUA_Criticality_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_Criticality_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Criticality_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Criticality = {
+ "RUA_Criticality",
+ "RUA_Criticality",
+ RUA_Criticality_free,
+ RUA_Criticality_print,
+ RUA_Criticality_constraint,
+ RUA_Criticality_decode_ber,
+ RUA_Criticality_encode_der,
+ RUA_Criticality_decode_xer,
+ RUA_Criticality_encode_xer,
+ RUA_Criticality_decode_uper,
+ RUA_Criticality_encode_uper,
+ RUA_Criticality_decode_aper,
+ RUA_Criticality_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Criticality_tags_1,
+ sizeof(asn_DEF_RUA_Criticality_tags_1)
+ /sizeof(asn_DEF_RUA_Criticality_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Criticality_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Criticality_tags_1)
+ /sizeof(asn_DEF_RUA_Criticality_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_Criticality_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_Criticality_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CriticalityDiagnostics-IE-List.c b/src/rua/RUA_CriticalityDiagnostics-IE-List.c
new file mode 100644
index 0000000..55e4657
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics-IE-List.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CriticalityDiagnostics-IE-List.h>
+
+static asn_per_constraints_t asn_PER_type_RUA_CriticalityDiagnostics_IE_List_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 8, 8, 1l, 256l } /* (SIZE(1..256)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct Member, iECriticality),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iECriticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Member, iE_ID),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-ID"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct Member, typeOfError),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_TypeOfError,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "typeOfError"
+ },
+ { ATF_POINTER, 1, offsetof(struct Member, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_Member_oms_2[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = {
+ sizeof(struct Member),
+ offsetof(struct Member, _asn_ctx),
+ asn_MAP_Member_tag2el_2,
+ 4, /* Count of tags in the map */
+ asn_MAP_Member_oms_2, /* Optional members */
+ 1, 0, /* Root/Additions */
+ 3, /* Start extensions */
+ 5 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+ "SEQUENCE",
+ "SEQUENCE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_Member_tags_2,
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ asn_DEF_Member_tags_2, /* Same as above */
+ sizeof(asn_DEF_Member_tags_2)
+ /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_Member_2,
+ 4, /* Elements count */
+ &asn_SPC_Member_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_CriticalityDiagnostics_IE_List_1[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_Member_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RUA_CriticalityDiagnostics_IE_List_specs_1 = {
+ sizeof(struct RUA_CriticalityDiagnostics_IE_List),
+ offsetof(struct RUA_CriticalityDiagnostics_IE_List, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics_IE_List = {
+ "RUA_CriticalityDiagnostics-IE-List",
+ "RUA_CriticalityDiagnostics-IE-List",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1,
+ sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1)
+ /sizeof(asn_DEF_RUA_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_CriticalityDiagnostics_IE_List_constr_1,
+ asn_MBR_RUA_CriticalityDiagnostics_IE_List_1,
+ 1, /* Single element */
+ &asn_SPC_RUA_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_CriticalityDiagnostics.c b/src/rua/RUA_CriticalityDiagnostics.c
new file mode 100644
index 0000000..a279f5a
--- /dev/null
+++ b/src/rua/RUA_CriticalityDiagnostics.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_CriticalityDiagnostics.h>
+
+static asn_TYPE_member_t asn_MBR_RUA_CriticalityDiagnostics_1[] = {
+ { ATF_POINTER, 5, offsetof(struct RUA_CriticalityDiagnostics, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_POINTER, 4, offsetof(struct RUA_CriticalityDiagnostics, triggeringMessage),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_TriggeringMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "triggeringMessage"
+ },
+ { ATF_POINTER, 3, offsetof(struct RUA_CriticalityDiagnostics, procedureCriticality),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCriticality"
+ },
+ { ATF_POINTER, 2, offsetof(struct RUA_CriticalityDiagnostics, iEsCriticalityDiagnostics),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_CriticalityDiagnostics_IE_List,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iEsCriticalityDiagnostics"
+ },
+ { ATF_POINTER, 1, offsetof(struct RUA_CriticalityDiagnostics, iE_Extensions),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_IE_Extensions,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iE-Extensions"
+ },
+};
+static const int asn_MAP_RUA_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RUA_CriticalityDiagnostics_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_CriticalityDiagnostics_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_CriticalityDiagnostics_specs_1 = {
+ sizeof(struct RUA_CriticalityDiagnostics),
+ offsetof(struct RUA_CriticalityDiagnostics, _asn_ctx),
+ asn_MAP_RUA_CriticalityDiagnostics_tag2el_1,
+ 5, /* Count of tags in the map */
+ asn_MAP_RUA_CriticalityDiagnostics_oms_1, /* Optional members */
+ 5, 0, /* Root/Additions */
+ 4, /* Start extensions */
+ 6 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_CriticalityDiagnostics = {
+ "RUA_CriticalityDiagnostics",
+ "RUA_CriticalityDiagnostics",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_CriticalityDiagnostics_tags_1,
+ sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ asn_DEF_RUA_CriticalityDiagnostics_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1)
+ /sizeof(asn_DEF_RUA_CriticalityDiagnostics_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_CriticalityDiagnostics_1,
+ 5, /* Elements count */
+ &asn_SPC_RUA_CriticalityDiagnostics_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_DirectTransfer.c b/src/rua/RUA_DirectTransfer.c
new file mode 100644
index 0000000..8036517
--- /dev/null
+++ b/src/rua/RUA_DirectTransfer.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_DirectTransfer.h>
+
+static int
+memb_directTransfer_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_directTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_directTransfer_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_directTransfer_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_directTransfer_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_directTransfer_ies_specs_2 = {
+ sizeof(struct directTransfer_ies),
+ offsetof(struct directTransfer_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_directTransfer_ies_2 = {
+ "directTransfer-ies",
+ "directTransfer-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_directTransfer_ies_tags_2,
+ sizeof(asn_DEF_directTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directTransfer_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_directTransfer_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_directTransfer_ies_tags_2)
+ /sizeof(asn_DEF_directTransfer_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_directTransfer_ies_constr_2,
+ asn_MBR_directTransfer_ies_2,
+ 1, /* Single element */
+ &asn_SPC_directTransfer_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_DirectTransfer_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_DirectTransfer, directTransfer_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_directTransfer_ies_2,
+ memb_directTransfer_ies_constraint_1,
+ &asn_PER_memb_directTransfer_ies_constr_2,
+ 0,
+ "directTransfer-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_DirectTransfer_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_DirectTransfer_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* directTransfer-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_DirectTransfer_specs_1 = {
+ sizeof(struct RUA_DirectTransfer),
+ offsetof(struct RUA_DirectTransfer, _asn_ctx),
+ asn_MAP_RUA_DirectTransfer_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_DirectTransfer = {
+ "RUA_DirectTransfer",
+ "RUA_DirectTransfer",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_DirectTransfer_tags_1,
+ sizeof(asn_DEF_RUA_DirectTransfer_tags_1)
+ /sizeof(asn_DEF_RUA_DirectTransfer_tags_1[0]), /* 1 */
+ asn_DEF_RUA_DirectTransfer_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_DirectTransfer_tags_1)
+ /sizeof(asn_DEF_RUA_DirectTransfer_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_DirectTransfer_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_DirectTransfer_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Disconnect.c b/src/rua/RUA_Disconnect.c
new file mode 100644
index 0000000..898bd90
--- /dev/null
+++ b/src/rua/RUA_Disconnect.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_Disconnect.h>
+
+static int
+memb_disconnect_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_disconnect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_disconnect_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_disconnect_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_disconnect_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_disconnect_ies_specs_2 = {
+ sizeof(struct disconnect_ies),
+ offsetof(struct disconnect_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_disconnect_ies_2 = {
+ "disconnect-ies",
+ "disconnect-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_disconnect_ies_tags_2,
+ sizeof(asn_DEF_disconnect_ies_tags_2)
+ /sizeof(asn_DEF_disconnect_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_disconnect_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_disconnect_ies_tags_2)
+ /sizeof(asn_DEF_disconnect_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_disconnect_ies_constr_2,
+ asn_MBR_disconnect_ies_2,
+ 1, /* Single element */
+ &asn_SPC_disconnect_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Disconnect_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Disconnect, disconnect_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_disconnect_ies_2,
+ memb_disconnect_ies_constraint_1,
+ &asn_PER_memb_disconnect_ies_constr_2,
+ 0,
+ "disconnect-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Disconnect_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Disconnect_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* disconnect-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Disconnect_specs_1 = {
+ sizeof(struct RUA_Disconnect),
+ offsetof(struct RUA_Disconnect, _asn_ctx),
+ asn_MAP_RUA_Disconnect_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Disconnect = {
+ "RUA_Disconnect",
+ "RUA_Disconnect",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Disconnect_tags_1,
+ sizeof(asn_DEF_RUA_Disconnect_tags_1)
+ /sizeof(asn_DEF_RUA_Disconnect_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Disconnect_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Disconnect_tags_1)
+ /sizeof(asn_DEF_RUA_Disconnect_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_Disconnect_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_Disconnect_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_ErrorIndication.c b/src/rua/RUA_ErrorIndication.c
new file mode 100644
index 0000000..d95ff32
--- /dev/null
+++ b/src/rua/RUA_ErrorIndication.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_ErrorIndication.h>
+
+static int
+memb_errorIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_errorIndication_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_errorIndication_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_errorIndication_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_errorIndication_ies_specs_2 = {
+ sizeof(struct errorIndication_ies),
+ offsetof(struct errorIndication_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_errorIndication_ies_2 = {
+ "errorIndication-ies",
+ "errorIndication-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_errorIndication_ies_tags_2,
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_errorIndication_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_errorIndication_ies_tags_2)
+ /sizeof(asn_DEF_errorIndication_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_errorIndication_ies_constr_2,
+ asn_MBR_errorIndication_ies_2,
+ 1, /* Single element */
+ &asn_SPC_errorIndication_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_ErrorIndication_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_ErrorIndication, errorIndication_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_errorIndication_ies_2,
+ memb_errorIndication_ies_constraint_1,
+ &asn_PER_memb_errorIndication_ies_constr_2,
+ 0,
+ "errorIndication-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ErrorIndication_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_ErrorIndication_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* errorIndication-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_ErrorIndication_specs_1 = {
+ sizeof(struct RUA_ErrorIndication),
+ offsetof(struct RUA_ErrorIndication, _asn_ctx),
+ asn_MAP_RUA_ErrorIndication_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ErrorIndication = {
+ "RUA_ErrorIndication",
+ "RUA_ErrorIndication",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_ErrorIndication_tags_1,
+ sizeof(asn_DEF_RUA_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_RUA_ErrorIndication_tags_1[0]), /* 1 */
+ asn_DEF_RUA_ErrorIndication_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_ErrorIndication_tags_1)
+ /sizeof(asn_DEF_RUA_ErrorIndication_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_ErrorIndication_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_ErrorIndication_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Establishment-Cause.c b/src/rua/RUA_Establishment-Cause.c
new file mode 100644
index 0000000..2bdace5
--- /dev/null
+++ b/src/rua/RUA_Establishment-Cause.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_Establishment-Cause.h>
+
+int
+RUA_Establishment_Cause_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Establishment_Cause_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_Establishment_Cause_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Establishment_Cause_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Establishment_Cause_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Establishment_Cause_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Establishment_Cause_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Establishment_Cause_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Establishment_Cause_value2enum_1[] = {
+ { 0, 14, "emergency-call" },
+ { 1, 11, "normal-call" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_Establishment_Cause_enum2value_1[] = {
+ 0, /* emergency-call(0) */
+ 1 /* normal-call(1) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Establishment_Cause_specs_1 = {
+ asn_MAP_RUA_Establishment_Cause_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_Establishment_Cause_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Establishment_Cause_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Establishment_Cause = {
+ "RUA_Establishment-Cause",
+ "RUA_Establishment-Cause",
+ RUA_Establishment_Cause_free,
+ RUA_Establishment_Cause_print,
+ RUA_Establishment_Cause_constraint,
+ RUA_Establishment_Cause_decode_ber,
+ RUA_Establishment_Cause_encode_der,
+ RUA_Establishment_Cause_decode_xer,
+ RUA_Establishment_Cause_encode_xer,
+ RUA_Establishment_Cause_decode_uper,
+ RUA_Establishment_Cause_encode_uper,
+ RUA_Establishment_Cause_decode_aper,
+ RUA_Establishment_Cause_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Establishment_Cause_tags_1,
+ sizeof(asn_DEF_RUA_Establishment_Cause_tags_1)
+ /sizeof(asn_DEF_RUA_Establishment_Cause_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Establishment_Cause_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Establishment_Cause_tags_1)
+ /sizeof(asn_DEF_RUA_Establishment_Cause_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_Establishment_Cause_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_Establishment_Cause_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Gsm-map-IDNNS.c b/src/rua/RUA_Gsm-map-IDNNS.c
new file mode 100644
index 0000000..75bdb96
--- /dev/null
+++ b/src/rua/RUA_Gsm-map-IDNNS.c
@@ -0,0 +1,636 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_Gsm-map-IDNNS.h>
+
+static asn_per_constraints_t asn_PER_type_routingbasis_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 3, 3, 0l, 7l } /* (0..7) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_localPTMSI_3[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct localPTMSI, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_localPTMSI_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_localPTMSI_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_localPTMSI_specs_3 = {
+ sizeof(struct localPTMSI),
+ offsetof(struct localPTMSI, _asn_ctx),
+ asn_MAP_localPTMSI_tag2el_3,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_localPTMSI_3 = {
+ "localPTMSI",
+ "localPTMSI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_localPTMSI_tags_3,
+ sizeof(asn_DEF_localPTMSI_tags_3)
+ /sizeof(asn_DEF_localPTMSI_tags_3[0]) - 1, /* 1 */
+ asn_DEF_localPTMSI_tags_3, /* Same as above */
+ sizeof(asn_DEF_localPTMSI_tags_3)
+ /sizeof(asn_DEF_localPTMSI_tags_3[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_localPTMSI_3,
+ 1, /* Elements count */
+ &asn_SPC_localPTMSI_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tMSIofsamePLMN_5[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct tMSIofsamePLMN, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_tMSIofsamePLMN_tags_5[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_tMSIofsamePLMN_tag2el_5[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_tMSIofsamePLMN_specs_5 = {
+ sizeof(struct tMSIofsamePLMN),
+ offsetof(struct tMSIofsamePLMN, _asn_ctx),
+ asn_MAP_tMSIofsamePLMN_tag2el_5,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tMSIofsamePLMN_5 = {
+ "tMSIofsamePLMN",
+ "tMSIofsamePLMN",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_tMSIofsamePLMN_tags_5,
+ sizeof(asn_DEF_tMSIofsamePLMN_tags_5)
+ /sizeof(asn_DEF_tMSIofsamePLMN_tags_5[0]) - 1, /* 1 */
+ asn_DEF_tMSIofsamePLMN_tags_5, /* Same as above */
+ sizeof(asn_DEF_tMSIofsamePLMN_tags_5)
+ /sizeof(asn_DEF_tMSIofsamePLMN_tags_5[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_tMSIofsamePLMN_5,
+ 1, /* Elements count */
+ &asn_SPC_tMSIofsamePLMN_specs_5 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tMSIofdifferentPLMN_7[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct tMSIofdifferentPLMN, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_tMSIofdifferentPLMN_tags_7[] = {
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_tMSIofdifferentPLMN_tag2el_7[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_tMSIofdifferentPLMN_specs_7 = {
+ sizeof(struct tMSIofdifferentPLMN),
+ offsetof(struct tMSIofdifferentPLMN, _asn_ctx),
+ asn_MAP_tMSIofdifferentPLMN_tag2el_7,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tMSIofdifferentPLMN_7 = {
+ "tMSIofdifferentPLMN",
+ "tMSIofdifferentPLMN",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_tMSIofdifferentPLMN_tags_7,
+ sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7)
+ /sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7[0]) - 1, /* 1 */
+ asn_DEF_tMSIofdifferentPLMN_tags_7, /* Same as above */
+ sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7)
+ /sizeof(asn_DEF_tMSIofdifferentPLMN_tags_7[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_tMSIofdifferentPLMN_7,
+ 1, /* Elements count */
+ &asn_SPC_tMSIofdifferentPLMN_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMSIresponsetopaging_9[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct iMSIresponsetopaging, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iMSIresponsetopaging_tags_9[] = {
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMSIresponsetopaging_tag2el_9[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMSIresponsetopaging_specs_9 = {
+ sizeof(struct iMSIresponsetopaging),
+ offsetof(struct iMSIresponsetopaging, _asn_ctx),
+ asn_MAP_iMSIresponsetopaging_tag2el_9,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMSIresponsetopaging_9 = {
+ "iMSIresponsetopaging",
+ "iMSIresponsetopaging",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iMSIresponsetopaging_tags_9,
+ sizeof(asn_DEF_iMSIresponsetopaging_tags_9)
+ /sizeof(asn_DEF_iMSIresponsetopaging_tags_9[0]) - 1, /* 1 */
+ asn_DEF_iMSIresponsetopaging_tags_9, /* Same as above */
+ sizeof(asn_DEF_iMSIresponsetopaging_tags_9)
+ /sizeof(asn_DEF_iMSIresponsetopaging_tags_9[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_iMSIresponsetopaging_9,
+ 1, /* Elements count */
+ &asn_SPC_iMSIresponsetopaging_specs_9 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMSIcauseUEinitiatedEvent_11[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct iMSIcauseUEinitiatedEvent, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[] = {
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMSIcauseUEinitiatedEvent_tag2el_11[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMSIcauseUEinitiatedEvent_specs_11 = {
+ sizeof(struct iMSIcauseUEinitiatedEvent),
+ offsetof(struct iMSIcauseUEinitiatedEvent, _asn_ctx),
+ asn_MAP_iMSIcauseUEinitiatedEvent_tag2el_11,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMSIcauseUEinitiatedEvent_11 = {
+ "iMSIcauseUEinitiatedEvent",
+ "iMSIcauseUEinitiatedEvent",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iMSIcauseUEinitiatedEvent_tags_11,
+ sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11)
+ /sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[0]) - 1, /* 1 */
+ asn_DEF_iMSIcauseUEinitiatedEvent_tags_11, /* Same as above */
+ sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11)
+ /sizeof(asn_DEF_iMSIcauseUEinitiatedEvent_tags_11[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_iMSIcauseUEinitiatedEvent_11,
+ 1, /* Elements count */
+ &asn_SPC_iMSIcauseUEinitiatedEvent_specs_11 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_iMEI_13[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct iMEI, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_iMEI_tags_13[] = {
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_iMEI_tag2el_13[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_iMEI_specs_13 = {
+ sizeof(struct iMEI),
+ offsetof(struct iMEI, _asn_ctx),
+ asn_MAP_iMEI_tag2el_13,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_iMEI_13 = {
+ "iMEI",
+ "iMEI",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_iMEI_tags_13,
+ sizeof(asn_DEF_iMEI_tags_13)
+ /sizeof(asn_DEF_iMEI_tags_13[0]) - 1, /* 1 */
+ asn_DEF_iMEI_tags_13, /* Same as above */
+ sizeof(asn_DEF_iMEI_tags_13)
+ /sizeof(asn_DEF_iMEI_tags_13[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_iMEI_13,
+ 1, /* Elements count */
+ &asn_SPC_iMEI_specs_13 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spare2_15[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct spare2, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_spare2_tags_15[] = {
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_spare2_tag2el_15[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_spare2_specs_15 = {
+ sizeof(struct spare2),
+ offsetof(struct spare2, _asn_ctx),
+ asn_MAP_spare2_tag2el_15,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spare2_15 = {
+ "spare2",
+ "spare2",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_spare2_tags_15,
+ sizeof(asn_DEF_spare2_tags_15)
+ /sizeof(asn_DEF_spare2_tags_15[0]) - 1, /* 1 */
+ asn_DEF_spare2_tags_15, /* Same as above */
+ sizeof(asn_DEF_spare2_tags_15)
+ /sizeof(asn_DEF_spare2_tags_15[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_spare2_15,
+ 1, /* Elements count */
+ &asn_SPC_spare2_specs_15 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spare1_17[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct spare1, routingparameter),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_RoutingParameter,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingparameter"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_spare1_tags_17[] = {
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_spare1_tag2el_17[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* routingparameter */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_spare1_specs_17 = {
+ sizeof(struct spare1),
+ offsetof(struct spare1, _asn_ctx),
+ asn_MAP_spare1_tag2el_17,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spare1_17 = {
+ "spare1",
+ "spare1",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_spare1_tags_17,
+ sizeof(asn_DEF_spare1_tags_17)
+ /sizeof(asn_DEF_spare1_tags_17[0]) - 1, /* 1 */
+ asn_DEF_spare1_tags_17, /* Same as above */
+ sizeof(asn_DEF_spare1_tags_17)
+ /sizeof(asn_DEF_spare1_tags_17[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_spare1_17,
+ 1, /* Elements count */
+ &asn_SPC_spare1_specs_17 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_routingbasis_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.localPTMSI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_localPTMSI_3,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "localPTMSI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.tMSIofsamePLMN),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_tMSIofsamePLMN_5,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMSIofsamePLMN"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.tMSIofdifferentPLMN),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ 0,
+ &asn_DEF_tMSIofdifferentPLMN_7,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "tMSIofdifferentPLMN"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMSIresponsetopaging),
+ (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+ 0,
+ &asn_DEF_iMSIresponsetopaging_9,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSIresponsetopaging"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMSIcauseUEinitiatedEvent),
+ (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+ 0,
+ &asn_DEF_iMSIcauseUEinitiatedEvent_11,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMSIcauseUEinitiatedEvent"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.iMEI),
+ (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+ 0,
+ &asn_DEF_iMEI_13,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "iMEI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.spare2),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ 0,
+ &asn_DEF_spare2_15,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "spare2"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct routingbasis, choice.spare1),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ 0,
+ &asn_DEF_spare1_17,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "spare1"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_routingbasis_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* localPTMSI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tMSIofsamePLMN */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tMSIofdifferentPLMN */
+ { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iMSIresponsetopaging */
+ { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* iMSIcauseUEinitiatedEvent */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* iMEI */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* spare2 */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_routingbasis_specs_2 = {
+ sizeof(struct routingbasis),
+ offsetof(struct routingbasis, _asn_ctx),
+ offsetof(struct routingbasis, present),
+ sizeof(((struct routingbasis *)0)->present),
+ asn_MAP_routingbasis_tag2el_2,
+ 8, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_routingbasis_2 = {
+ "routingbasis",
+ "routingbasis",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_routingbasis_constr_2,
+ asn_MBR_routingbasis_2,
+ 8, /* Elements count */
+ &asn_SPC_routingbasis_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_Gsm_map_IDNNS_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Gsm_map_IDNNS, routingbasis),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_routingbasis_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "routingbasis"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_Gsm_map_IDNNS, dummy),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BOOLEAN,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "dummy"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Gsm_map_IDNNS_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_Gsm_map_IDNNS_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* routingbasis */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dummy */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_Gsm_map_IDNNS_specs_1 = {
+ sizeof(struct RUA_Gsm_map_IDNNS),
+ offsetof(struct RUA_Gsm_map_IDNNS, _asn_ctx),
+ asn_MAP_RUA_Gsm_map_IDNNS_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Gsm_map_IDNNS = {
+ "RUA_Gsm-map-IDNNS",
+ "RUA_Gsm-map-IDNNS",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Gsm_map_IDNNS_tags_1,
+ sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1)
+ /sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Gsm_map_IDNNS_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1)
+ /sizeof(asn_DEF_RUA_Gsm_map_IDNNS_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_Gsm_map_IDNNS_1,
+ 2, /* Elements count */
+ &asn_SPC_RUA_Gsm_map_IDNNS_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_IE-Extensions.c b/src/rua/RUA_IE-Extensions.c
new file mode 100644
index 0000000..80fa907
--- /dev/null
+++ b/src/rua/RUA_IE-Extensions.c
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_IE-Extensions.h>
+
+static asn_per_constraints_t asn_PER_type_RUA_IE_Extensions_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 1l, 65535l } /* (SIZE(1..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_IE_Extensions_1[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IE_Extensions_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_RUA_IE_Extensions_specs_1 = {
+ sizeof(struct RUA_IE_Extensions),
+ offsetof(struct RUA_IE_Extensions, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IE_Extensions = {
+ "RUA_IE-Extensions",
+ "RUA_IE-Extensions",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_IE_Extensions_tags_1,
+ sizeof(asn_DEF_RUA_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_RUA_IE_Extensions_tags_1[0]), /* 1 */
+ asn_DEF_RUA_IE_Extensions_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_IE_Extensions_tags_1)
+ /sizeof(asn_DEF_RUA_IE_Extensions_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_IE_Extensions_constr_1,
+ asn_MBR_RUA_IE_Extensions_1,
+ 1, /* Single element */
+ &asn_SPC_RUA_IE_Extensions_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_IE.c b/src/rua/RUA_IE.c
new file mode 100644
index 0000000..77378f4
--- /dev/null
+++ b/src/rua/RUA_IE.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_IE.h>
+
+static asn_TYPE_member_t asn_MBR_RUA_IE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_IE, id),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProtocolIE_ID,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "id"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_IE, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_IE, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_IE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_IE_specs_1 = {
+ sizeof(struct RUA_IE),
+ offsetof(struct RUA_IE, _asn_ctx),
+ asn_MAP_RUA_IE_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IE = {
+ "RUA_IE",
+ "RUA_IE",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_IE_tags_1,
+ sizeof(asn_DEF_RUA_IE_tags_1)
+ /sizeof(asn_DEF_RUA_IE_tags_1[0]), /* 1 */
+ asn_DEF_RUA_IE_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_IE_tags_1)
+ /sizeof(asn_DEF_RUA_IE_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_IE_1,
+ 3, /* Elements count */
+ &asn_SPC_RUA_IE_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_InitiatingMessage.c b/src/rua/RUA_InitiatingMessage.c
new file mode 100644
index 0000000..bcadd0f
--- /dev/null
+++ b/src/rua/RUA_InitiatingMessage.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_InitiatingMessage.h>
+
+static asn_TYPE_member_t asn_MBR_RUA_InitiatingMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_InitiatingMessage, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_InitiatingMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_InitiatingMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_InitiatingMessage_specs_1 = {
+ sizeof(struct RUA_InitiatingMessage),
+ offsetof(struct RUA_InitiatingMessage, _asn_ctx),
+ asn_MAP_RUA_InitiatingMessage_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_InitiatingMessage = {
+ "RUA_InitiatingMessage",
+ "RUA_InitiatingMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_InitiatingMessage_tags_1,
+ sizeof(asn_DEF_RUA_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_RUA_InitiatingMessage_tags_1[0]), /* 1 */
+ asn_DEF_RUA_InitiatingMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_InitiatingMessage_tags_1)
+ /sizeof(asn_DEF_RUA_InitiatingMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_InitiatingMessage_1,
+ 3, /* Elements count */
+ &asn_SPC_RUA_InitiatingMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_IntraDomainNasNodeSelector.c b/src/rua/RUA_IntraDomainNasNodeSelector.c
new file mode 100644
index 0000000..b266c6f
--- /dev/null
+++ b/src/rua/RUA_IntraDomainNasNodeSelector.c
@@ -0,0 +1,337 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_IntraDomainNasNodeSelector.h>
+
+static int
+memb_futurecoding_constraint_7(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 15l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_cn_Type_constr_4 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_futurecoding_constr_8 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 15l, 15l } /* (SIZE(15..15)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_version_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cn_Type_4[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct cn_Type, choice.gsm_Map_IDNNS),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Gsm_map_IDNNS,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "gsm-Map-IDNNS"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct cn_Type, choice.ansi_41_IDNNS),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Ansi_41_IDNNS,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "ansi-41-IDNNS"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_cn_Type_tag2el_4[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gsm-Map-IDNNS */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ansi-41-IDNNS */
+};
+static asn_CHOICE_specifics_t asn_SPC_cn_Type_specs_4 = {
+ sizeof(struct cn_Type),
+ offsetof(struct cn_Type, _asn_ctx),
+ offsetof(struct cn_Type, present),
+ sizeof(((struct cn_Type *)0)->present),
+ asn_MAP_cn_Type_tag2el_4,
+ 2, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cn_Type_4 = {
+ "cn-Type",
+ "cn-Type",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_cn_Type_constr_4,
+ asn_MBR_cn_Type_4,
+ 2, /* Elements count */
+ &asn_SPC_cn_Type_specs_4 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_release99_3[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct release99, cn_Type),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_cn_Type_4,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "cn-Type"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_release99_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_release99_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cn-Type */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_release99_specs_3 = {
+ sizeof(struct release99),
+ offsetof(struct release99, _asn_ctx),
+ asn_MAP_release99_tag2el_3,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_release99_3 = {
+ "release99",
+ "release99",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_release99_tags_3,
+ sizeof(asn_DEF_release99_tags_3)
+ /sizeof(asn_DEF_release99_tags_3[0]) - 1, /* 1 */
+ asn_DEF_release99_tags_3, /* Same as above */
+ sizeof(asn_DEF_release99_tags_3)
+ /sizeof(asn_DEF_release99_tags_3[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_release99_3,
+ 1, /* Elements count */
+ &asn_SPC_release99_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_later_7[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct later, futurecoding),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_BIT_STRING,
+ memb_futurecoding_constraint_7,
+ &asn_PER_memb_futurecoding_constr_8,
+ 0,
+ "futurecoding"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_later_tags_7[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_later_tag2el_7[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* futurecoding */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_later_specs_7 = {
+ sizeof(struct later),
+ offsetof(struct later, _asn_ctx),
+ asn_MAP_later_tag2el_7,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_later_7 = {
+ "later",
+ "later",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_later_tags_7,
+ sizeof(asn_DEF_later_tags_7)
+ /sizeof(asn_DEF_later_tags_7[0]) - 1, /* 1 */
+ asn_DEF_later_tags_7, /* Same as above */
+ sizeof(asn_DEF_later_tags_7)
+ /sizeof(asn_DEF_later_tags_7[0]), /* 2 */
+ 0, /* No PER visible constraints */
+ asn_MBR_later_7,
+ 1, /* Elements count */
+ &asn_SPC_later_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_version_2[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct version, choice.release99),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_release99_3,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "release99"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct version, choice.later),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_later_7,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "later"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_version_tag2el_2[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release99 */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* later */
+};
+static asn_CHOICE_specifics_t asn_SPC_version_specs_2 = {
+ sizeof(struct version),
+ offsetof(struct version, _asn_ctx),
+ offsetof(struct version, present),
+ sizeof(((struct version *)0)->present),
+ asn_MAP_version_tag2el_2,
+ 2, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_version_2 = {
+ "version",
+ "version",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_version_constr_2,
+ asn_MBR_version_2,
+ 2, /* Elements count */
+ &asn_SPC_version_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_IntraDomainNasNodeSelector_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_IntraDomainNasNodeSelector, version),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_version_2,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "version"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_IntraDomainNasNodeSelector_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* version */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_IntraDomainNasNodeSelector_specs_1 = {
+ sizeof(struct RUA_IntraDomainNasNodeSelector),
+ offsetof(struct RUA_IntraDomainNasNodeSelector, _asn_ctx),
+ asn_MAP_RUA_IntraDomainNasNodeSelector_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_IntraDomainNasNodeSelector = {
+ "RUA_IntraDomainNasNodeSelector",
+ "RUA_IntraDomainNasNodeSelector",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1,
+ sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1)
+ /sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[0]), /* 1 */
+ asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1)
+ /sizeof(asn_DEF_RUA_IntraDomainNasNodeSelector_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_IntraDomainNasNodeSelector_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_IntraDomainNasNodeSelector_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_Presence.c b/src/rua/RUA_Presence.c
new file mode 100644
index 0000000..6da824c
--- /dev/null
+++ b/src/rua/RUA_Presence.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_Presence.h>
+
+int
+RUA_Presence_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_Presence_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_Presence_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_Presence_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_Presence_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_Presence_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_Presence_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_Presence_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_Presence_value2enum_1[] = {
+ { 0, 8, "optional" },
+ { 1, 11, "conditional" },
+ { 2, 9, "mandatory" }
+};
+static const unsigned int asn_MAP_RUA_Presence_enum2value_1[] = {
+ 1, /* conditional(1) */
+ 2, /* mandatory(2) */
+ 0 /* optional(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_Presence_specs_1 = {
+ asn_MAP_RUA_Presence_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_Presence_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_Presence_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_Presence = {
+ "RUA_Presence",
+ "RUA_Presence",
+ RUA_Presence_free,
+ RUA_Presence_print,
+ RUA_Presence_constraint,
+ RUA_Presence_decode_ber,
+ RUA_Presence_encode_der,
+ RUA_Presence_decode_xer,
+ RUA_Presence_encode_xer,
+ RUA_Presence_decode_uper,
+ RUA_Presence_encode_uper,
+ RUA_Presence_decode_aper,
+ RUA_Presence_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_Presence_tags_1,
+ sizeof(asn_DEF_RUA_Presence_tags_1)
+ /sizeof(asn_DEF_RUA_Presence_tags_1[0]), /* 1 */
+ asn_DEF_RUA_Presence_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_Presence_tags_1)
+ /sizeof(asn_DEF_RUA_Presence_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_Presence_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_Presence_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_PrivateIE-ID.c b/src/rua/RUA_PrivateIE-ID.c
new file mode 100644
index 0000000..729333e
--- /dev/null
+++ b/src/rua/RUA_PrivateIE-ID.c
@@ -0,0 +1,102 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_PrivateIE-ID.h>
+
+static int
+memb_local_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_memb_local_constr_2 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_type_RUA_PrivateIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 1, 1, 0l, 1l } /* (0..1) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_PrivateIE_ID_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateIE_ID, choice.local),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ memb_local_constraint_1,
+ &asn_PER_memb_local_constr_2,
+ 0,
+ "local"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateIE_ID, choice.global),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OBJECT_IDENTIFIER,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "global"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_PrivateIE_ID_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_PrivateIE_ID_specs_1 = {
+ sizeof(struct RUA_PrivateIE_ID),
+ offsetof(struct RUA_PrivateIE_ID, _asn_ctx),
+ offsetof(struct RUA_PrivateIE_ID, present),
+ sizeof(((struct RUA_PrivateIE_ID *)0)->present),
+ asn_MAP_RUA_PrivateIE_ID_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0,
+ -1 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_PrivateIE_ID = {
+ "RUA_PrivateIE-ID",
+ "RUA_PrivateIE-ID",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RUA_PrivateIE_ID_constr_1,
+ asn_MBR_RUA_PrivateIE_ID_1,
+ 2, /* Elements count */
+ &asn_SPC_RUA_PrivateIE_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_PrivateMessage.c b/src/rua/RUA_PrivateMessage.c
new file mode 100644
index 0000000..c549409
--- /dev/null
+++ b/src/rua/RUA_PrivateMessage.c
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_PrivateMessage.h>
+
+static int
+memb_privateMessage_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ /* Determine the number of elements */
+ size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+
+ if((size <= 65535l)) {
+ /* Perform validation of the inner elements */
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+static asn_per_constraints_t asn_PER_type_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_per_constraints_t asn_PER_memb_privateMessage_ies_constr_2 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (SIZE(0..65535)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_privateMessage_ies_2[] = {
+ { ATF_POINTER, 0, 0,
+ -1 /* Ambiguous tag (CHOICE?) */,
+ 0,
+ &asn_DEF_RUA_IE,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_privateMessage_ies_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_privateMessage_ies_specs_2 = {
+ sizeof(struct privateMessage_ies),
+ offsetof(struct privateMessage_ies, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_privateMessage_ies_2 = {
+ "privateMessage-ies",
+ "privateMessage-ies",
+ SEQUENCE_OF_free,
+ SEQUENCE_OF_print,
+ SEQUENCE_OF_constraint,
+ SEQUENCE_OF_decode_ber,
+ SEQUENCE_OF_encode_der,
+ SEQUENCE_OF_decode_xer,
+ SEQUENCE_OF_encode_xer,
+ SEQUENCE_OF_decode_uper,
+ SEQUENCE_OF_encode_uper,
+ SEQUENCE_OF_decode_aper,
+ SEQUENCE_OF_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_privateMessage_ies_tags_2,
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]) - 1, /* 1 */
+ asn_DEF_privateMessage_ies_tags_2, /* Same as above */
+ sizeof(asn_DEF_privateMessage_ies_tags_2)
+ /sizeof(asn_DEF_privateMessage_ies_tags_2[0]), /* 2 */
+ &asn_PER_type_privateMessage_ies_constr_2,
+ asn_MBR_privateMessage_ies_2,
+ 1, /* Single element */
+ &asn_SPC_privateMessage_ies_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_RUA_PrivateMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_PrivateMessage, privateMessage_ies),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_privateMessage_ies_2,
+ memb_privateMessage_ies_constraint_1,
+ &asn_PER_memb_privateMessage_ies_constr_2,
+ 0,
+ "privateMessage-ies"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_PrivateMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_PrivateMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateMessage-ies */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_PrivateMessage_specs_1 = {
+ sizeof(struct RUA_PrivateMessage),
+ offsetof(struct RUA_PrivateMessage, _asn_ctx),
+ asn_MAP_RUA_PrivateMessage_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 0, /* Start extensions */
+ 2 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_PrivateMessage = {
+ "RUA_PrivateMessage",
+ "RUA_PrivateMessage",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_PrivateMessage_tags_1,
+ sizeof(asn_DEF_RUA_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_RUA_PrivateMessage_tags_1[0]), /* 1 */
+ asn_DEF_RUA_PrivateMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_PrivateMessage_tags_1)
+ /sizeof(asn_DEF_RUA_PrivateMessage_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_PrivateMessage_1,
+ 1, /* Elements count */
+ &asn_SPC_RUA_PrivateMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_ProcedureCode.c b/src/rua/RUA_ProcedureCode.c
new file mode 100644
index 0000000..61b31ff
--- /dev/null
+++ b/src/rua/RUA_ProcedureCode.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_ProcedureCode.h>
+
+int
+RUA_ProcedureCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 255l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_ProcedureCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RUA_ProcedureCode_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_ProcedureCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_ProcedureCode_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_ProcedureCode_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_ProcedureCode_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_ProcedureCode_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 8, 8, 0l, 255l } /* (0..255) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ProcedureCode_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ProcedureCode = {
+ "RUA_ProcedureCode",
+ "RUA_ProcedureCode",
+ RUA_ProcedureCode_free,
+ RUA_ProcedureCode_print,
+ RUA_ProcedureCode_constraint,
+ RUA_ProcedureCode_decode_ber,
+ RUA_ProcedureCode_encode_der,
+ RUA_ProcedureCode_decode_xer,
+ RUA_ProcedureCode_encode_xer,
+ RUA_ProcedureCode_decode_uper,
+ RUA_ProcedureCode_encode_uper,
+ RUA_ProcedureCode_decode_aper,
+ RUA_ProcedureCode_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_ProcedureCode_tags_1,
+ sizeof(asn_DEF_RUA_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_RUA_ProcedureCode_tags_1[0]), /* 1 */
+ asn_DEF_RUA_ProcedureCode_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_ProcedureCode_tags_1)
+ /sizeof(asn_DEF_RUA_ProcedureCode_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_ProcedureCode_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_ProtocolIE-ID.c b/src/rua/RUA_ProtocolIE-ID.c
new file mode 100644
index 0000000..5260eed
--- /dev/null
+++ b/src/rua/RUA_ProtocolIE-ID.c
@@ -0,0 +1,165 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_ProtocolIE-ID.h>
+
+int
+RUA_ProtocolIE_ID_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ long value;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ value = *(const long *)sptr;
+
+ if((value >= 0l && value <= 65535l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeInteger.free_struct;
+ td->print_struct = asn_DEF_NativeInteger.print_struct;
+ td->check_constraints = asn_DEF_NativeInteger.check_constraints;
+ td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
+ td->der_encoder = asn_DEF_NativeInteger.der_encoder;
+ td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeInteger.per_constraints;
+ td->elements = asn_DEF_NativeInteger.elements;
+ td->elements_count = asn_DEF_NativeInteger.elements_count;
+ td->specifics = asn_DEF_NativeInteger.specifics;
+}
+
+void
+RUA_ProtocolIE_ID_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_ProtocolIE_ID_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_ProtocolIE_ID_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_ProtocolIE_ID_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_ProtocolIE_ID_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_ProtocolIE_ID_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 16, 16, 0l, 65535l } /* (0..65535) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_ProtocolIE_ID_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_ProtocolIE_ID = {
+ "RUA_ProtocolIE-ID",
+ "RUA_ProtocolIE-ID",
+ RUA_ProtocolIE_ID_free,
+ RUA_ProtocolIE_ID_print,
+ RUA_ProtocolIE_ID_constraint,
+ RUA_ProtocolIE_ID_decode_ber,
+ RUA_ProtocolIE_ID_encode_der,
+ RUA_ProtocolIE_ID_decode_xer,
+ RUA_ProtocolIE_ID_encode_xer,
+ RUA_ProtocolIE_ID_decode_uper,
+ RUA_ProtocolIE_ID_encode_uper,
+ RUA_ProtocolIE_ID_decode_aper,
+ RUA_ProtocolIE_ID_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_ProtocolIE_ID_tags_1,
+ sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1[0]), /* 1 */
+ asn_DEF_RUA_ProtocolIE_ID_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1)
+ /sizeof(asn_DEF_RUA_ProtocolIE_ID_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_ProtocolIE_ID_constr_1,
+ 0, 0, /* Defined elsewhere */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_RANAP-Message.c b/src/rua/RUA_RANAP-Message.c
new file mode 100644
index 0000000..28911c6
--- /dev/null
+++ b/src/rua/RUA_RANAP-Message.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_RANAP-Message.h>
+
+int
+RUA_RANAP_Message_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_RANAP_Message_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_OCTET_STRING.free_struct;
+ td->print_struct = asn_DEF_OCTET_STRING.print_struct;
+ td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
+ td->elements = asn_DEF_OCTET_STRING.elements;
+ td->elements_count = asn_DEF_OCTET_STRING.elements_count;
+ td->specifics = asn_DEF_OCTET_STRING.specifics;
+}
+
+void
+RUA_RANAP_Message_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_RANAP_Message_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_RANAP_Message_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_RANAP_Message_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_RANAP_Message_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static const ber_tlv_tag_t asn_DEF_RUA_RANAP_Message_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RANAP_Message = {
+ "RUA_RANAP-Message",
+ "RUA_RANAP-Message",
+ RUA_RANAP_Message_free,
+ RUA_RANAP_Message_print,
+ RUA_RANAP_Message_constraint,
+ RUA_RANAP_Message_decode_ber,
+ RUA_RANAP_Message_encode_der,
+ RUA_RANAP_Message_decode_xer,
+ RUA_RANAP_Message_encode_xer,
+ RUA_RANAP_Message_decode_uper,
+ RUA_RANAP_Message_encode_uper,
+ RUA_RANAP_Message_decode_aper,
+ RUA_RANAP_Message_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_RANAP_Message_tags_1,
+ sizeof(asn_DEF_RUA_RANAP_Message_tags_1)
+ /sizeof(asn_DEF_RUA_RANAP_Message_tags_1[0]), /* 1 */
+ asn_DEF_RUA_RANAP_Message_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_RANAP_Message_tags_1)
+ /sizeof(asn_DEF_RUA_RANAP_Message_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_RUA-PDU.c b/src/rua/RUA_RUA-PDU.c
new file mode 100644
index 0000000..92215f6
--- /dev/null
+++ b/src/rua/RUA_RUA-PDU.c
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_RUA-PDU.h>
+
+static asn_per_constraints_t asn_PER_type_RUA_RUA_PDU_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0l, 2l } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_RUA_RUA_PDU_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.initiatingMessage),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_InitiatingMessage,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "initiatingMessage"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.successfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_SuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "successfulOutcome"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_RUA_PDU, choice.unsuccessfulOutcome),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_UnsuccessfulOutcome,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "unsuccessfulOutcome"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_RUA_PDU_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */
+};
+static asn_CHOICE_specifics_t asn_SPC_RUA_RUA_PDU_specs_1 = {
+ sizeof(struct RUA_RUA_PDU),
+ offsetof(struct RUA_RUA_PDU, _asn_ctx),
+ offsetof(struct RUA_RUA_PDU, present),
+ sizeof(((struct RUA_RUA_PDU *)0)->present),
+ asn_MAP_RUA_RUA_PDU_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RUA_PDU = {
+ "RUA_RUA-PDU",
+ "RUA_RUA-PDU",
+ CHOICE_free,
+ CHOICE_print,
+ CHOICE_constraint,
+ CHOICE_decode_ber,
+ CHOICE_encode_der,
+ CHOICE_decode_xer,
+ CHOICE_encode_xer,
+ CHOICE_decode_uper,
+ CHOICE_encode_uper,
+ CHOICE_decode_aper,
+ CHOICE_encode_aper,
+ CHOICE_outmost_tag,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ &asn_PER_type_RUA_RUA_PDU_constr_1,
+ asn_MBR_RUA_RUA_PDU_1,
+ 3, /* Elements count */
+ &asn_SPC_RUA_RUA_PDU_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_RoutingParameter.c b/src/rua/RUA_RoutingParameter.c
new file mode 100644
index 0000000..be2e102
--- /dev/null
+++ b/src/rua/RUA_RoutingParameter.c
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_RoutingParameter.h>
+
+int
+RUA_RoutingParameter_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(st->size > 0) {
+ /* Size in bits */
+ size = 8 * st->size - (st->bits_unused & 0x07);
+ } else {
+ size = 0;
+ }
+
+ if((size == 10l)) {
+ /* Constraint check succeeded */
+ return 0;
+ } else {
+ _ASN_CTFAIL(app_key, td, sptr,
+ "%s: constraint failed (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_RoutingParameter_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_BIT_STRING.free_struct;
+ td->print_struct = asn_DEF_BIT_STRING.print_struct;
+ td->check_constraints = asn_DEF_BIT_STRING.check_constraints;
+ td->ber_decoder = asn_DEF_BIT_STRING.ber_decoder;
+ td->der_encoder = asn_DEF_BIT_STRING.der_encoder;
+ td->xer_decoder = asn_DEF_BIT_STRING.xer_decoder;
+ td->xer_encoder = asn_DEF_BIT_STRING.xer_encoder;
+ td->uper_decoder = asn_DEF_BIT_STRING.uper_decoder;
+ td->uper_encoder = asn_DEF_BIT_STRING.uper_encoder;
+ td->aper_decoder = asn_DEF_BIT_STRING.aper_decoder;
+ td->aper_encoder = asn_DEF_BIT_STRING.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_BIT_STRING.per_constraints;
+ td->elements = asn_DEF_BIT_STRING.elements;
+ td->elements_count = asn_DEF_BIT_STRING.elements_count;
+ td->specifics = asn_DEF_BIT_STRING.specifics;
+}
+
+void
+RUA_RoutingParameter_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_RoutingParameter_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_RoutingParameter_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_RoutingParameter_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_RoutingParameter_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_RoutingParameter_constr_1 GCC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 10l, 10l } /* (SIZE(10..10)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RUA_RoutingParameter_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_RoutingParameter = {
+ "RUA_RoutingParameter",
+ "RUA_RoutingParameter",
+ RUA_RoutingParameter_free,
+ RUA_RoutingParameter_print,
+ RUA_RoutingParameter_constraint,
+ RUA_RoutingParameter_decode_ber,
+ RUA_RoutingParameter_encode_der,
+ RUA_RoutingParameter_decode_xer,
+ RUA_RoutingParameter_encode_xer,
+ RUA_RoutingParameter_decode_uper,
+ RUA_RoutingParameter_encode_uper,
+ RUA_RoutingParameter_decode_aper,
+ RUA_RoutingParameter_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_RoutingParameter_tags_1,
+ sizeof(asn_DEF_RUA_RoutingParameter_tags_1)
+ /sizeof(asn_DEF_RUA_RoutingParameter_tags_1[0]), /* 1 */
+ asn_DEF_RUA_RoutingParameter_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_RoutingParameter_tags_1)
+ /sizeof(asn_DEF_RUA_RoutingParameter_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_RoutingParameter_constr_1,
+ 0, 0, /* No members */
+ 0 /* No specifics */
+};
+
diff --git a/src/rua/RUA_SuccessfulOutcome.c b/src/rua/RUA_SuccessfulOutcome.c
new file mode 100644
index 0000000..f446ec8
--- /dev/null
+++ b/src/rua/RUA_SuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_SuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_RUA_SuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_SuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_SuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_SuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_SuccessfulOutcome_specs_1 = {
+ sizeof(struct RUA_SuccessfulOutcome),
+ offsetof(struct RUA_SuccessfulOutcome, _asn_ctx),
+ asn_MAP_RUA_SuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_SuccessfulOutcome = {
+ "RUA_SuccessfulOutcome",
+ "RUA_SuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_SuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_RUA_SuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RUA_SuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_SuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_RUA_SuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_TriggeringMessage.c b/src/rua/RUA_TriggeringMessage.c
new file mode 100644
index 0000000..8b2de60
--- /dev/null
+++ b/src/rua/RUA_TriggeringMessage.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-CommonDataTypes"
+ * found in "../../asn1/rua/RUA-CommonDataTypes.asn"
+ */
+
+#include <osmocom/rua/RUA_TriggeringMessage.h>
+
+int
+RUA_TriggeringMessage_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_TriggeringMessage_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_TriggeringMessage_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_TriggeringMessage_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_TriggeringMessage_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_TriggeringMessage_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_TriggeringMessage_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_TriggeringMessage_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED, 2, 2, 0l, 2l } /* (0..2) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_TriggeringMessage_value2enum_1[] = {
+ { 0, 18, "initiating-message" },
+ { 1, 18, "successful-outcome" },
+ { 2, 20, "unsuccessful-outcome" }
+};
+static const unsigned int asn_MAP_RUA_TriggeringMessage_enum2value_1[] = {
+ 0, /* initiating-message(0) */
+ 1, /* successful-outcome(1) */
+ 2 /* unsuccessful-outcome(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_TriggeringMessage_specs_1 = {
+ asn_MAP_RUA_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 0, /* Enumeration is not extensible */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_TriggeringMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_TriggeringMessage = {
+ "RUA_TriggeringMessage",
+ "RUA_TriggeringMessage",
+ RUA_TriggeringMessage_free,
+ RUA_TriggeringMessage_print,
+ RUA_TriggeringMessage_constraint,
+ RUA_TriggeringMessage_decode_ber,
+ RUA_TriggeringMessage_encode_der,
+ RUA_TriggeringMessage_decode_xer,
+ RUA_TriggeringMessage_encode_xer,
+ RUA_TriggeringMessage_decode_uper,
+ RUA_TriggeringMessage_encode_uper,
+ RUA_TriggeringMessage_decode_aper,
+ RUA_TriggeringMessage_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_TriggeringMessage_tags_1,
+ sizeof(asn_DEF_RUA_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_RUA_TriggeringMessage_tags_1[0]), /* 1 */
+ asn_DEF_RUA_TriggeringMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_TriggeringMessage_tags_1)
+ /sizeof(asn_DEF_RUA_TriggeringMessage_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_TriggeringMessage_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_TriggeringMessage_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_TypeOfError.c b/src/rua/RUA_TypeOfError.c
new file mode 100644
index 0000000..c48d852
--- /dev/null
+++ b/src/rua/RUA_TypeOfError.c
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-IEs"
+ * found in "../../asn1/rua/RUA-IEs.asn"
+ */
+
+#include <osmocom/rua/RUA_TypeOfError.h>
+
+int
+RUA_TypeOfError_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ /* Replace with underlying type checker */
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ return td->check_constraints(td, sptr, ctfailcb, app_key);
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static void
+RUA_TypeOfError_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+ td->free_struct = asn_DEF_NativeEnumerated.free_struct;
+ td->print_struct = asn_DEF_NativeEnumerated.print_struct;
+ td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
+ td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
+ td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
+ td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
+ td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
+ td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
+ td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
+ td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
+ td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
+ if(!td->per_constraints)
+ td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
+ td->elements = asn_DEF_NativeEnumerated.elements;
+ td->elements_count = asn_DEF_NativeEnumerated.elements_count;
+ /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
+}
+
+void
+RUA_TypeOfError_free(asn_TYPE_descriptor_t *td,
+ void *struct_ptr, int contents_only) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ td->free_struct(td, struct_ptr, contents_only);
+}
+
+int
+RUA_TypeOfError_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
+ int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const void *bufptr, size_t size, int tag_mode) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_der(asn_TYPE_descriptor_t *td,
+ void *structure, int tag_mode, ber_tlv_tag_t tag,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ void **structure, const char *opt_mname, const void *bufptr, size_t size) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
+ int ilevel, enum xer_encoder_flags_e flags,
+ asn_app_consume_bytes_f *cb, void *app_key) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_uper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->uper_encoder(td, constraints, structure, per_out);
+}
+
+asn_enc_rval_t
+RUA_TypeOfError_encode_aper(asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints,
+ void *structure, asn_per_outp_t *per_out) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_encoder(td, constraints, structure, per_out);
+}
+
+asn_dec_rval_t
+RUA_TypeOfError_decode_aper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+ asn_per_constraints_t *constraints, void **structure, asn_per_data_t *per_data) {
+ RUA_TypeOfError_1_inherit_TYPE_descriptor(td);
+ return td->aper_decoder(opt_codec_ctx, td, constraints, structure, per_data);
+}
+
+static asn_per_constraints_t asn_PER_type_RUA_TypeOfError_constr_1 GCC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0l, 1l } /* (0..1,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RUA_TypeOfError_value2enum_1[] = {
+ { 0, 14, "not-understood" },
+ { 1, 7, "missing" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_RUA_TypeOfError_enum2value_1[] = {
+ 1, /* missing(1) */
+ 0 /* not-understood(0) */
+ /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_RUA_TypeOfError_specs_1 = {
+ asn_MAP_RUA_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_RUA_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */
+ 2, /* Number of elements in the maps */
+ 3, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_RUA_TypeOfError_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_TypeOfError = {
+ "RUA_TypeOfError",
+ "RUA_TypeOfError",
+ RUA_TypeOfError_free,
+ RUA_TypeOfError_print,
+ RUA_TypeOfError_constraint,
+ RUA_TypeOfError_decode_ber,
+ RUA_TypeOfError_encode_der,
+ RUA_TypeOfError_decode_xer,
+ RUA_TypeOfError_encode_xer,
+ RUA_TypeOfError_decode_uper,
+ RUA_TypeOfError_encode_uper,
+ RUA_TypeOfError_decode_aper,
+ RUA_TypeOfError_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_TypeOfError_tags_1,
+ sizeof(asn_DEF_RUA_TypeOfError_tags_1)
+ /sizeof(asn_DEF_RUA_TypeOfError_tags_1[0]), /* 1 */
+ asn_DEF_RUA_TypeOfError_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_TypeOfError_tags_1)
+ /sizeof(asn_DEF_RUA_TypeOfError_tags_1[0]), /* 1 */
+ &asn_PER_type_RUA_TypeOfError_constr_1,
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_RUA_TypeOfError_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua/RUA_UnsuccessfulOutcome.c b/src/rua/RUA_UnsuccessfulOutcome.c
new file mode 100644
index 0000000..95e6dd5
--- /dev/null
+++ b/src/rua/RUA_UnsuccessfulOutcome.c
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RUA-PDU"
+ * found in "../../asn1/rua/RUA-PDU.asn"
+ */
+
+#include <osmocom/rua/RUA_UnsuccessfulOutcome.h>
+
+static asn_TYPE_member_t asn_MBR_RUA_UnsuccessfulOutcome_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, procedureCode),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_ProcedureCode,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "procedureCode"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, criticality),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RUA_Criticality,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "criticality"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RUA_UnsuccessfulOutcome, value),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_ANY,
+ 0, /* Defer constraints checking to the member type */
+ 0, /* No PER visible constraints */
+ 0,
+ "value"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_RUA_UnsuccessfulOutcome_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RUA_UnsuccessfulOutcome_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RUA_UnsuccessfulOutcome_specs_1 = {
+ sizeof(struct RUA_UnsuccessfulOutcome),
+ offsetof(struct RUA_UnsuccessfulOutcome, _asn_ctx),
+ asn_MAP_RUA_UnsuccessfulOutcome_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ -1, /* Start extensions */
+ -1 /* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RUA_UnsuccessfulOutcome = {
+ "RUA_UnsuccessfulOutcome",
+ "RUA_UnsuccessfulOutcome",
+ SEQUENCE_free,
+ SEQUENCE_print,
+ SEQUENCE_constraint,
+ SEQUENCE_decode_ber,
+ SEQUENCE_encode_der,
+ SEQUENCE_decode_xer,
+ SEQUENCE_encode_xer,
+ SEQUENCE_decode_uper,
+ SEQUENCE_encode_uper,
+ SEQUENCE_decode_aper,
+ SEQUENCE_encode_aper,
+ 0, /* Use generic outmost tag fetcher */
+ asn_DEF_RUA_UnsuccessfulOutcome_tags_1,
+ sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ asn_DEF_RUA_UnsuccessfulOutcome_tags_1, /* Same as above */
+ sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1)
+ /sizeof(asn_DEF_RUA_UnsuccessfulOutcome_tags_1[0]), /* 1 */
+ 0, /* No PER visible constraints */
+ asn_MBR_RUA_UnsuccessfulOutcome_1,
+ 3, /* Elements count */
+ &asn_SPC_RUA_UnsuccessfulOutcome_specs_1 /* Additional specs */
+};
+
diff --git a/src/rua_common.c b/src/rua_common.c
new file mode 100644
index 0000000..3c9d773
--- /dev/null
+++ b/src/rua_common.c
@@ -0,0 +1,226 @@
+/* common RUA (RANAP User Adaption) Code */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+#include <stdint.h>
+
+#include <osmocom/core/msgb.h>
+
+#include <osmocom/rua/rua_common.h>
+#include <osmocom/iuh/hnbgw.h>
+
+extern int asn1_xer_print;
+
+static const struct value_string rua_cause_radio_vals[] = {
+ { RUA_CauseRadioNetwork_normal, "normal" },
+ { RUA_CauseRadioNetwork_connect_failed, "connect failed" },
+ { RUA_CauseRadioNetwork_network_release, "network release" },
+ { RUA_CauseRadioNetwork_unspecified, "unspecified" },
+ { 0, NULL }
+};
+
+static const struct value_string rua_cause_transp_vals[] = {
+ { RUA_CauseTransport_transport_resource_unavailable, "resource unavailable" },
+ { RUA_CauseTransport_unspecified, "unspecified" },
+ { 0, NULL }
+};
+
+static const struct value_string rua_cause_prot_vals[] = {
+ { RUA_CauseProtocol_transfer_syntax_error, "syntax error" },
+ { RUA_CauseProtocol_abstract_syntax_error_reject,
+ "abstract syntax error; reject" },
+ { RUA_CauseProtocol_abstract_syntax_error_ignore_and_notify,
+ "abstract syntax error; ignore and notify" },
+ { RUA_CauseProtocol_message_not_compatible_with_receiver_state,
+ "message not compatible with receiver state" },
+ { RUA_CauseProtocol_semantic_error, "semantic error" },
+ { RUA_CauseProtocol_unspecified, "unspecified" },
+ { RUA_CauseProtocol_abstract_syntax_error_falsely_constructed_message,
+ "falsely constructed message" },
+ { 0, NULL }
+};
+
+static const struct value_string rua_cause_misc_vals[] = {
+ { RUA_CauseMisc_processing_overload, "processing overload" },
+ { RUA_CauseMisc_hardware_failure, "hardware failure" },
+ { RUA_CauseMisc_o_and_m_intervention, "OAM intervention" },
+ { RUA_CauseMisc_unspecified, "unspecified" },
+ { 0, NULL }
+};
+
+char *rua_cause_str(RUA_Cause_t *cause)
+{
+ static char buf[32];
+
+ switch (cause->present) {
+ case RUA_Cause_PR_radioNetwork:
+ snprintf(buf, sizeof(buf), "radio(%s)",
+ get_value_string(rua_cause_radio_vals,
+ cause->choice.radioNetwork));
+ break;
+ case RUA_Cause_PR_transport:
+ snprintf(buf, sizeof(buf), "transport(%s)",
+ get_value_string(rua_cause_transp_vals,
+ cause->choice.transport));
+ break;
+ case RUA_Cause_PR_protocol:
+ snprintf(buf, sizeof(buf), "protocol(%s)",
+ get_value_string(rua_cause_prot_vals,
+ cause->choice.protocol));
+ break;
+ case RUA_Cause_PR_misc:
+ snprintf(buf, sizeof(buf), "misc(%s)",
+ get_value_string(rua_cause_misc_vals,
+ cause->choice.misc));
+ break;
+ default:
+ strcpy(buf, "unknown");
+ break;
+ }
+ return buf;
+}
+
+
+static struct msgb *rua_msgb_alloc(void)
+{
+ return msgb_alloc(1024, "RUA Tx");
+}
+
+static struct msgb *_rua_gen_msg(RUA_RUA_PDU_t *pdu)
+{
+ struct msgb *msg = rua_msgb_alloc();
+ asn_enc_rval_t rval;
+
+ if (!msg)
+ return NULL;
+
+ rval = aper_encode_to_buffer(&asn_DEF_RUA_RUA_PDU, pdu,
+ msg->data, msgb_tailroom(msg));
+ if (rval.encoded < 0) {
+ LOGP(DRUA, LOGL_ERROR, "Error encoding type: %s\n",
+ rval.failed_type->name);
+
+ }
+
+ msgb_put(msg, rval.encoded/8);
+
+ return msg;
+}
+
+
+struct msgb *rua_generate_initiating_message(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td, void *sptr)
+{
+ RUA_RUA_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RUA_RUA_PDU_PR_initiatingMessage;
+ pdu.choice.initiatingMessage.procedureCode = procedureCode;
+ pdu.choice.initiatingMessage.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ return _rua_gen_msg(&pdu);
+}
+
+struct msgb *rua_generate_successful_outcome(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ RUA_RUA_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RUA_RUA_PDU_PR_successfulOutcome;
+ pdu.choice.successfulOutcome.procedureCode = procedureCode;
+ pdu.choice.successfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ return _rua_gen_msg(&pdu);
+}
+
+struct msgb *rua_generate_unsuccessful_outcome(
+ e_RUA_ProcedureCode procedureCode,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * td,
+ void *sptr)
+{
+ RUA_RUA_PDU_t pdu;
+ int rc;
+
+ memset(&pdu, 0, sizeof(pdu));
+
+ pdu.present = RUA_RUA_PDU_PR_unsuccessfulOutcome;
+ pdu.choice.unsuccessfulOutcome.procedureCode = procedureCode;
+ pdu.choice.unsuccessfulOutcome.criticality = criticality;
+ rc = ANY_fromType_aper(&pdu.choice.unsuccessfulOutcome.value, td, sptr);
+ if (rc < 0) {
+ LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ return NULL;
+ }
+
+ return _rua_gen_msg(&pdu);
+}
+
+RUA_IE_t *rua_new_ie(RUA_ProtocolIE_ID_t id,
+ RUA_Criticality_t criticality,
+ asn_TYPE_descriptor_t * type, void *sptr)
+{
+
+ RUA_IE_t *buff;
+ int rc;
+
+ if ((buff = CALLOC(1, sizeof(*buff))) == NULL) {
+ // Possible error on malloc
+ return NULL;
+ }
+
+ buff->id = id;
+ buff->criticality = criticality;
+
+ rc = ANY_fromType_aper(&buff->value, type, sptr);
+ if (rc < 0) {
+ LOGP(DRUA, LOGL_ERROR, "Error in ANY_fromType_aper\n");
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ if (asn1_xer_print)
+ if (xer_fprint(stdout, &asn_DEF_RUA_IE, buff) < 0) {
+ FREEMEM(buff);
+ return NULL;
+ }
+
+ return buff;
+}
diff --git a/src/rua_msg_factory.c b/src/rua_msg_factory.c
new file mode 100644
index 0000000..268f6ac
--- /dev/null
+++ b/src/rua_msg_factory.c
@@ -0,0 +1,154 @@
+#include <stdint.h>
+#include <osmocom/netif/stream.h>
+
+#include <osmocom/rua/rua_common.h>
+#include <osmocom/rua/rua_ies_defs.h>
+#include <osmocom/rua/rua_msg_factory.h>
+#include "asn1helpers.h"
+#include <osmocom/iuh/hnbgw.h>
+
+
+struct msgb *rua_new_udt(struct msgb *inmsg)
+{
+ RUA_ConnectionlessTransfer_t out;
+ RUA_ConnectionlessTransferIEs_t ies;
+ struct msgb *msg;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ OCTET_STRING_fromBuf(&ies.ranaP_Message, inmsg->data, msgb_length(inmsg));
+ msgb_free(inmsg);
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_connectionlesstransferies(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_ConnectionlessTransfer,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_ConnectionlessTransfer,
+ &out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_ConnectionlessTransfer, &out);
+
+ DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
+
+ msgb_sctp_ppid(msg) = IUH_PPI_RUA;
+
+ return msg;
+}
+
+struct msgb *rua_new_conn(int is_ps, uint32_t context_id, struct msgb *inmsg)
+{
+ RUA_Connect_t out;
+ RUA_ConnectIEs_t ies;
+ struct msgb *msg;
+ uint32_t ctxidbuf;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
+ asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
+ ies.establishment_Cause = RUA_Establishment_Cause_normal_call;
+ OCTET_STRING_fromBuf(&ies.ranaP_Message, inmsg->data, msgb_length(inmsg));
+ msgb_free(inmsg);
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_connecties(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_Connect,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_Connect,
+ &out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Connect, &out);
+
+ DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
+
+ msgb_sctp_ppid(msg) = IUH_PPI_RUA;
+
+ return msg;
+}
+
+struct msgb *rua_new_dt(int is_ps, uint32_t context_id, struct msgb *inmsg)
+{
+ RUA_DirectTransfer_t out;
+ RUA_DirectTransferIEs_t ies;
+ struct msgb *msg;
+ uint32_t ctxidbuf;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
+ asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
+ OCTET_STRING_fromBuf(&ies.ranaP_Message, inmsg->data, msgb_length(inmsg));
+ msgb_free(inmsg);
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_directtransferies(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_DirectTransfer,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_DirectTransfer,
+ &out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_DirectTransfer, &out);
+
+ DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
+
+ msgb_sctp_ppid(msg) = IUH_PPI_RUA;
+
+ return msg;
+}
+
+struct msgb *rua_new_disc(int is_ps, uint32_t context_id, struct msgb *inmsg)
+{
+ RUA_Disconnect_t out;
+ RUA_DisconnectIEs_t ies;
+ struct msgb *msg;
+ uint32_t ctxidbuf;
+ int rc;
+
+ memset(&ies, 0, sizeof(ies));
+ if (is_ps)
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_ps_domain;
+ else
+ ies.cN_DomainIndicator = RUA_CN_DomainIndicator_cs_domain;
+ asn1_u24_to_bitstring(&ies.context_ID, &ctxidbuf, context_id);
+ /* FIXME: make cause configurable */
+ ies.cause.present = RUA_Cause_PR_radioNetwork;
+ ies.cause.choice.radioNetwork = RUA_CauseRadioNetwork_normal;
+ if (inmsg && inmsg->data&& msgb_length(inmsg)) {
+ ies.presenceMask |= DISCONNECTIES_RUA_RANAP_MESSAGE_PRESENT;
+ OCTET_STRING_fromBuf(&ies.ranaP_Message, inmsg->data, msgb_length(inmsg));
+ }
+ msgb_free(inmsg);
+
+ memset(&out, 0, sizeof(out));
+ rc = rua_encode_disconnecties(&out, &ies);
+ if (rc < 0)
+ return NULL;
+
+ msg = rua_generate_initiating_message(RUA_ProcedureCode_id_Disconnect,
+ RUA_Criticality_reject,
+ &asn_DEF_RUA_Disconnect,
+ &out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RUA_Disconnect, &out);
+
+ DEBUGP(DMAIN, "transmitting RUA payload of %u bytes\n", msgb_length(msg));
+
+ msgb_sctp_ppid(msg) = IUH_PPI_RUA;
+
+ return msg;
+}
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
new file mode 100644
index 0000000..28ad56c
--- /dev/null
+++ b/src/tests/Makefile.am
@@ -0,0 +1,75 @@
+AM_CFLAGS = -g -I$(top_srcdir)/src/tests \
+ -I$(top_srcdir)/include -I$(top_builddir)/include \
+ $(OSMOVTY_CFLAGS) $(OSMOCORE_CFLAGS) $(OSMOGSM_CFLAGS) \
+ $(OSMONETIF_CFLAGS) $(ASN1C_CFLAGS) $(OSMOSIGTRAN_CFLAGS)
+
+COMMON_LIBS = $(OSMOVTY_LIBS) $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(ASN1C_LIBS) $(OSMOSIGTRAN_LIBS) -lsctp
+
+check_PROGRAMS = test-ranap test-helpers test-hnbap hnb-test #dummy-cn
+
+noinst_HEADERS = test_common.h hnb-test.h hnb-test-layers.h
+
+HNBAP_FILES = $(top_srcdir)/src/hnbap_common.c $(top_builddir)/src/hnbap_decoder.c $(top_builddir)/src/hnbap_encoder.c
+RUA_FILES = $(top_srcdir)/src/rua_common.c $(top_builddir)/src/rua_decoder.c $(top_builddir)/src/rua_encoder.c $(top_srcdir)/src/rua_msg_factory.c
+
+test_helpers_SOURCES = test-helpers.c test_common.c
+test_helpers_LDADD = $(COMMON_LIBS) $(top_builddir)/src/libosmo-ranap.la
+
+test_hnbap_SOURCES = $(top_srcdir)/src/hnbap_common.c $(top_builddir)/src/hnbap_decoder.c test-hnbap.c test_common.c
+test_hnbap_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/libosmo-ranap.la
+
+hnb_test_SOURCES = $(HNBAP_FILES) $(RUA_FILES) hnb-test.c test_common.c hnb-test-ranap.c hnb-test-rua.c
+hnb_test_LDADD = $(COMMON_LIBS) $(top_builddir)/src/hnbap/libosmo-asn1-hnbap.a $(top_builddir)/src/rua/libosmo-asn1-rua.a $(top_builddir)/src/libosmo-ranap.la
+
+test_ranap_SOURCES = $(RANAP_FILES) test-ranap.c test_common.c
+test_ranap_LDADD = $(COMMON_LIBS) $(top_builddir)/src/libosmo-ranap.la
+
+# TODO: re-add using SCCP?
+#dummy_cn_SOURCES = $(RANAP_FILES) test_common.c dummy_cn_sua.c
+#dummy_cn_LDADD = $(COMMON_LIBS) $(top_builddir)/src/libosmo-ranap.la
+
+$(top_builddir)/src/libosmo-ranap.la:
+ $(MAKE) -C $(top_builddir)/src libosmo-ranap.la
+
+# The `:;' works around a Bash 3.2 bug when the output is not writeable.
+$(srcdir)/package.m4: $(top_srcdir)/configure.ac
+ :;{ \
+ echo '# Signature of the current package.' && \
+ echo 'm4_define([AT_PACKAGE_NAME],' && \
+ echo ' [$(PACKAGE_NAME)])' && \
+ echo 'm4_define([AT_PACKAGE_TARNAME],' && \
+ echo ' [$(PACKAGE_TARNAME)])' && \
+ echo 'm4_define([AT_PACKAGE_VERSION],' && \
+ echo ' [$(PACKAGE_VERSION)])' && \
+ echo 'm4_define([AT_PACKAGE_STRING],' && \
+ echo ' [$(PACKAGE_STRING)])' && \
+ echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \
+ echo ' [$(PACKAGE_BUGREPORT)])'; \
+ echo 'm4_define([AT_PACKAGE_URL],' && \
+ echo ' [$(PACKAGE_URL)])'; \
+ } >'$(srcdir)/package.m4'
+
+TESTSUITE = $(srcdir)/testsuite
+EXTRA_DIST = testsuite.at $(TESTSUITE) $(srcdir)/package.m4 \
+ test-helpers.err test-helpers.ok test-hnbap.ok test-ranap.ok
+
+DISTCLEANFILES = atconfig
+
+check-local: atconfig $(TESTSUITE)
+ $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
+
+installcheck-local: atconfig $(TESTSUITE)
+ $(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \
+ $(TESTSUITEFLAGS)
+
+clean-local:
+ test ! -f '$(TESTSUITE)' || \
+ $(SHELL) '$(TESTSUITE)' --clean
+
+AUTOM4TE = $(SHELL) $(top_srcdir)/missing --run autom4te
+AUTOTEST = $(AUTOM4TE) --language=autotest
+
+$(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4
+ $(AUTOTEST) -I '$(top_srcdir)/include' -I '$(srcdir)' -o $@.tmp $@.at
+ mv $@.tmp $@
+
diff --git a/src/tests/dummy_cn_sua.c b/src/tests/dummy_cn_sua.c
new file mode 100644
index 0000000..f9b4244
--- /dev/null
+++ b/src/tests/dummy_cn_sua.c
@@ -0,0 +1,386 @@
+#include <stdint.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define _GNU_SOURCE
+#include <getopt.h>
+
+#include <osmocom/core/select.h>
+#include <osmocom/core/prim.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/application.h>
+#include <osmocom/vty/logging.h>
+
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/sigtran/sua.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include "test_common.h"
+
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_common_cn.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+#include <osmocom/iuh/hnbgw.h>
+
+int asn1_xer_print = 1;
+const char *cmdline_bind_addr = "127.0.0.1";
+
+struct ue_conn_ctx {
+ struct llist_head list;
+ struct osmo_sccp_link *link;
+ uint32_t conn_id;
+};
+
+static LLIST_HEAD(conn_ctx_list);
+
+struct ue_conn_ctx *ue_conn_ctx_alloc(struct osmo_sccp_link *link, uint32_t conn_id)
+{
+ struct ue_conn_ctx *ctx = talloc_zero(NULL, struct ue_conn_ctx);
+
+ ctx->link = link;
+ ctx->conn_id = conn_id;
+ llist_add(&ctx->list, &conn_ctx_list);
+
+ return ctx;
+}
+
+struct ue_conn_ctx *ue_conn_ctx_find(struct osmo_sccp_link *link, uint32_t conn_id)
+{
+ struct ue_conn_ctx *ctx;
+
+ llist_for_each_entry(ctx, &conn_ctx_list, list) {
+ if (ctx->link == link && ctx->conn_id == conn_id)
+ return ctx;
+ }
+ return NULL;
+}
+
+/***********************************************************************
+ * RANAP handling
+ ***********************************************************************/
+
+static int ranap_handle_co_initial_ue(struct ue_conn_ctx *ctx, RANAP_InitialUE_MessageIEs_t *ies)
+{
+ struct gprs_ra_id ra_id;
+ uint16_t sai;
+ struct msgb *msg = msgb_alloc(256, "RANAP->NAS");
+ uint8_t *cur;
+ struct osmo_scu_prim *prim;
+
+ ranap_parse_lai(&ra_id, &ies->lai);
+ sai = asn1str_to_u16(&ies->sai.sAC);
+ cur = msgb_put(msg, ies->nas_pdu.size);
+ memcpy(msg, ies->nas_pdu.buf, ies->nas_pdu.size);
+ msgb_free(msg);
+ /* FIXME: set msgb_gmmh() */
+
+ /* FIXME: Feed into the MM layer */
+ //rc = gsm0408_gprs_rcvmsg_iu(msg, ra_id, sai, conn_id);
+
+ msg = ranap_new_msg_dt(0, NULL, 0);
+
+ msg->l2h = msg->data;
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = ctx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER, OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+
+ osmo_sua_user_link_down(ctx->link, &prim->oph);
+
+ return 0;
+}
+
+static int ranap_handle_co_dt(void *ctx, RANAP_DirectTransferIEs_t *ies)
+{
+ struct gprs_ra_id _ra_id, *ra_id = NULL;
+ uint16_t _sai, *sai = NULL;
+ struct msgb *msg = msgb_alloc(256, "RANAP->NAS");
+ uint8_t *cur;
+
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_LAI_PRESENT) {
+ ranap_parse_lai(&_ra_id, &ies->lai);
+ ra_id = &_ra_id;
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_RAC_PRESENT) {
+ _ra_id.rac = asn1str_to_u8(&ies->rac);
+ }
+ if (ies->presenceMask & DIRECTTRANSFERIES_RANAP_SAI_PRESENT) {
+ _sai = asn1str_to_u16(&ies->sai.sAC);
+ sai = &_sai;
+ }
+ }
+
+ cur = msgb_put(msg, ies->nas_pdu.size);
+ memcpy(msg, ies->nas_pdu.buf, ies->nas_pdu.size);
+ /* FIXME: set msgb_gmmh() */
+
+ /* FIXME: Feed into the MM/CC/SMS-CP layer */
+ //rc = gsm0408_gprs_rcvmsg_iu(msg, ra_id, sai, conn_id);
+
+ return 0;
+}
+
+static int ranap_handle_co_err_ind(void *ctx, RANAP_ErrorIndicationIEs_t *ies)
+{
+ if (ies->presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT)
+ LOGP(DRANAP, LOGL_ERROR, "Rx Error Indication (%s)\n",
+ ranap_cause_str(&ies->cause));
+ else
+ LOGP(DRANAP, LOGL_ERROR, "Rx Error Indication\n");
+
+ return 0;
+}
+
+static int ranap_handle_co_iu_rel_req(struct ue_conn_ctx *ctx, RANAP_Iu_ReleaseRequestIEs_t *ies)
+{
+ struct msgb *msg;
+ struct osmo_scu_prim *prim;
+
+ LOGP(DRANAP, LOGL_INFO, "Received Iu Release Request, Sending Release Command\n");
+ msg = ranap_new_msg_iu_rel_cmd(&ies->cause);
+ msg->l2h = msg->data;
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = ctx->conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST, msg);
+ osmo_sua_user_link_down(ctx->link, &prim->oph);
+ return 0;
+}
+
+/* Entry point for connection-oriented ANAP message */
+static void cn_ranap_handle_co(void *ctx, ranap_message *message)
+{
+ int rc = 0;
+
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_InitialUE_Message:
+ rc = ranap_handle_co_initial_ue(ctx, &message->msg.initialUE_MessageIEs);
+ break;
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ rc = ranap_handle_co_dt(ctx, &message->msg.directTransferIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ rc = ranap_handle_co_err_ind(ctx, &message->msg.errorIndicationIEs);
+ break;
+ case RANAP_ProcedureCode_id_Iu_ReleaseRequest:
+ /* Iu Release Request */
+ rc = ranap_handle_co_iu_rel_req(ctx, &message->msg.iu_ReleaseRequestIEs);
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* RAB Assignment Response */
+ break;
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ /* Security Mode Complete */
+ break;
+ case RANAP_ProcedureCode_id_Iu_Release:
+ /* Iu Release Complete */
+ break;
+ }
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ case RANAP_RANAP_PDU_PR_outcome:
+ default:
+ break;
+ }
+}
+
+static int ranap_handle_cl_reset_req(void *ctx, RANAP_ResetIEs_t *ies)
+{
+ /* FIXME: send reset response */
+
+ LOGP(DRANAP, LOGL_ERROR, "Rx Reset Request\n");
+}
+
+static int ranap_handle_cl_err_ind(void *ctx, RANAP_ErrorIndicationIEs_t *ies)
+{
+ if (ies->presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT)
+ LOGP(DRANAP, LOGL_ERROR, "Rx Error Indication (%s)\n",
+ ranap_cause_str(&ies->cause));
+ else
+ LOGP(DRANAP, LOGL_ERROR, "Rx Error Indication\n");
+
+ return 0;
+}
+
+/* Entry point for connection-less RANAP message */
+static void cn_ranap_handle_cl(void *ctx, ranap_message *message)
+{
+ int rc = 0;
+
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ switch (message->procedureCode) {
+ case RANAP_ProcedureCode_id_Reset:
+ /* received reset.req, send reset.resp */
+ rc = ranap_handle_cl_reset_req(ctx, &message->msg.resetIEs);
+ break;
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ rc = ranap_handle_cl_err_ind(ctx, &message->msg.errorIndicationIEs);
+ break;
+ }
+ break;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ case RANAP_RANAP_PDU_PR_outcome:
+ default:
+ break;
+ }
+}
+
+/***********************************************************************
+ *
+ ***********************************************************************/
+
+int tx_unitdata(struct osmo_sccp_link *link);
+int tx_conn_req(struct osmo_sccp_link *link, uint32_t conn_id);
+
+struct osmo_prim_hdr *make_conn_req(uint32_t conn_id);
+struct osmo_prim_hdr *make_dt1_req(uint32_t conn_id, const uint8_t *data, unsigned int len);
+
+struct osmo_prim_hdr *make_conn_resp(struct osmo_scu_connect_param *param)
+{
+ struct msgb *msg = msgb_alloc(1024, "conn_resp");
+ struct osmo_scu_prim *prim;
+
+ prim = (struct osmo_scu_prim *) msgb_put(msg, sizeof(*prim));
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_CONNECT,
+ PRIM_OP_RESPONSE, msg);
+ memcpy(&prim->u.connect, param, sizeof(prim->u.connect));
+ return &prim->oph;
+}
+
+static int sccp_sap_up(struct osmo_prim_hdr *oph, void *link)
+{
+ struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
+ struct osmo_prim_hdr *resp = NULL;
+ const uint8_t payload[] = { 0xb1, 0xb2, 0xb3 };
+ int rc;
+ struct ue_conn_ctx *ue;
+
+ printf("sccp_sap_up(%s)\n", osmo_scu_prim_name(oph));
+
+ switch (OSMO_PRIM_HDR(oph)) {
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM):
+ /* confirmation of outbound connection */
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_INDICATION):
+ /* indication of new inbound connection request*/
+ printf("N-CONNECT.ind(X->%u)\n", prim->u.connect.conn_id);
+ if (/* prim->u.connect.called_addr.ssn != OSMO_SCCP_SSN_RANAP || */
+ !msgb_l2(oph->msg) || msgb_l2len(oph->msg) == 0) {
+ LOGP(DMAIN, LOGL_NOTICE, "Received invalid N-CONNECT.ind\n");
+ return 0;
+ }
+ /* FIXME: allocate UE context */
+ ue = ue_conn_ctx_alloc(link, prim->u.connect.conn_id);
+ /* first ensure the local SUA/SCCP socket is ACTIVE */
+ resp = make_conn_resp(&prim->u.connect);
+ osmo_sua_user_link_down(link, resp);
+ /* then handle the RANAP payload */
+ rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_INDICATION):
+ /* indication of disconnect */
+ printf("N-DISCONNECT.ind(%u)\n", prim->u.disconnect.conn_id);
+ ue = ue_conn_ctx_find(link, prim->u.disconnect.conn_id);
+ rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
+ /* connection-oriented data received */
+ printf("N-DATA.ind(%u, %s)\n", prim->u.data.conn_id,
+ osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
+ /* resolve UE context */
+ ue = ue_conn_ctx_find(link, prim->u.data.conn_id);
+ rc = ranap_cn_rx_co(cn_ranap_handle_co, ue, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
+ /* connection-oriented data received */
+ printf("N-UNITDATA.ind(%s)\n",
+ osmo_hexdump(msgb_l2(oph->msg), msgb_l2len(oph->msg)));
+ rc = ranap_cn_rx_cl(cn_ranap_handle_cl, link, msgb_l2(oph->msg), msgb_l2len(oph->msg));
+ break;
+ }
+
+ msgb_free(oph->msg);
+ return 0;
+}
+
+static void print_usage()
+{
+ printf("Usage: dummy-cn\n");
+}
+
+static void print_help()
+{
+ printf(" -h --help This text.\n");
+ printf(" -b --bind addr Bind to local IP address (default 127.0.0.1)\n");
+}
+
+static void handle_options(int argc, char **argv)
+{
+ while (1) {
+ int option_index = 0, c;
+ static struct option long_options[] = {
+ {"help", 0, 0, 'h'},
+ {"bind", 1, 0, 'b'},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long(argc, argv, "hb:V",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'h':
+ print_usage();
+ print_help();
+ exit(0);
+ case 'b':
+ cmdline_bind_addr = optarg;
+ break;
+ default:
+ printf("Unknown cmdline argument (-h shows help)\n");
+ exit(1);
+ break;
+ }
+ }
+}
+
+int main(int argc, char **argv)
+{
+ struct osmo_sccp_user *user;
+ void *ctx = talloc_named_const(NULL, 1, "root");
+ int rc;
+ int port = 14001;
+
+ osmo_sua_set_log_area(DSUA);
+ ranap_set_log_area(DRANAP);
+
+ test_common_init();
+
+ handle_options(argc, argv);
+
+ user = osmo_sua_user_create(ctx, sccp_sap_up, ctx);
+
+ rc = osmo_sua_server_listen(user, cmdline_bind_addr, port);
+ if (rc < 0) {
+ exit(1);
+ }
+
+ printf("dummy-cn listening on %s %d\n", cmdline_bind_addr, port);
+
+ while (1) {
+ osmo_select_main(0);
+ }
+}
diff --git a/src/tests/hnb-test-layers.h b/src/tests/hnb-test-layers.h
new file mode 100644
index 0000000..62369f3
--- /dev/null
+++ b/src/tests/hnb-test-layers.h
@@ -0,0 +1,21 @@
+#pragma once
+
+struct ANY;
+struct ranap_message_s;
+struct hnb_test;
+
+/* main calls RUA */
+void hnb_test_rua_dt_handle(struct hnb_test *hnb, struct ANY *in);
+void hnb_test_rua_cl_handle(struct hnb_test *hnb, struct ANY *in);
+
+/* RUA calls RANAP */
+void hnb_test_rua_dt_handle_ranap(struct hnb_test *hnb,
+ struct ranap_message_s *ranap_msg);
+void hnb_test_rua_cl_handle_ranap(struct hnb_test *hnb,
+ struct ranap_message_s *ranap_msg);
+
+/* RANAP calls main with actual payload*/
+void hnb_test_nas_rx_dtap(struct hnb_test *hnb, void *data, int len);
+void hnb_test_rx_secmode_cmd(struct hnb_test *hnb, long ip_alg);
+void hnb_test_rx_iu_release(struct hnb_test *hnb);
+void hnb_test_rx_paging(struct hnb_test *hnb, const char *imsi);
diff --git a/src/tests/hnb-test-ranap.c b/src/tests/hnb-test-ranap.c
new file mode 100644
index 0000000..e7c9871
--- /dev/null
+++ b/src/tests/hnb-test-ranap.c
@@ -0,0 +1,85 @@
+#include <osmocom/core/msgb.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+
+#include "hnb-test-layers.h"
+
+static const char *printstr(OCTET_STRING_t *s)
+{
+ return osmo_hexdump((char*)s->buf, s->size);
+}
+
+#define PP(octet_string_t) \
+ printf(#octet_string_t " = %s\n",\
+ printstr(&octet_string_t))
+
+void hnb_test_rua_dt_handle_ranap(struct hnb_test *hnb,
+ struct ranap_message_s *ranap_msg)
+{
+ int len;
+ char *data;
+ RANAP_PermittedIntegrityProtectionAlgorithms_t *algs;
+ RANAP_IntegrityProtectionAlgorithm_t *first_alg;
+
+ printf("rx ranap_msg->procedureCode %d\n",
+ ranap_msg->procedureCode);
+
+ switch (ranap_msg->procedureCode) {
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ printf("rx DirectTransfer: presence = %hx\n",
+ ranap_msg->msg.directTransferIEs.presenceMask);
+ PP(ranap_msg->msg.directTransferIEs.nas_pdu);
+
+ len = ranap_msg->msg.directTransferIEs.nas_pdu.size;
+ data = ranap_msg->msg.directTransferIEs.nas_pdu.buf;
+
+ hnb_test_nas_rx_dtap(hnb, data, len);
+ return;
+
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ printf("rx SecurityModeControl: presence = %hx\n",
+ ranap_msg->msg.securityModeCommandIEs.presenceMask);
+
+ /* Just pick the first available IP alg, don't care about
+ * encryption (yet?) */
+ algs = &ranap_msg->msg.securityModeCommandIEs.integrityProtectionInformation.permittedAlgorithms;
+ if (algs->list.count < 1) {
+ printf("Security Mode Command: No permitted algorithms.\n");
+ return;
+ }
+ first_alg = *algs->list.array;
+
+ hnb_test_rx_secmode_cmd(hnb, *first_alg);
+ return;
+
+ case RANAP_ProcedureCode_id_Iu_Release:
+ hnb_test_rx_iu_release(hnb);
+ return;
+ }
+}
+
+void hnb_test_rua_cl_handle_ranap(struct hnb_test *hnb,
+ struct ranap_message_s *ranap_msg)
+{
+ char imsi[16];
+
+ printf("rx ranap_msg->procedureCode %d\n",
+ ranap_msg->procedureCode);
+
+ switch (ranap_msg->procedureCode) {
+ case RANAP_ProcedureCode_id_Paging:
+ if (ranap_msg->msg.pagingIEs.permanentNAS_UE_ID.present == RANAP_PermanentNAS_UE_ID_PR_iMSI) {
+ ranap_bcd_decode(imsi, sizeof(imsi),
+ ranap_msg->msg.pagingIEs.permanentNAS_UE_ID.choice.iMSI.buf,
+ ranap_msg->msg.pagingIEs.permanentNAS_UE_ID.choice.iMSI.size);
+ } else imsi[0] = '\0';
+
+ printf("rx Paging: presence=%hx domain=%d IMSI=%s\n",
+ ranap_msg->msg.pagingIEs.presenceMask,
+ ranap_msg->msg.pagingIEs.cN_DomainIndicator,
+ imsi
+ );
+
+ hnb_test_rx_paging(hnb, imsi);
+ return;
+ }
+}
diff --git a/src/tests/hnb-test-rua.c b/src/tests/hnb-test-rua.c
new file mode 100644
index 0000000..a218852
--- /dev/null
+++ b/src/tests/hnb-test-rua.c
@@ -0,0 +1,40 @@
+
+#include <asn1c/ANY.h>
+#include <osmocom/rua/rua_ies_defs.h>
+
+#include "hnb-test-layers.h"
+
+void hnb_test_rua_dt_handle(struct hnb_test *hnb, ANY_t *in)
+{
+ RUA_DirectTransferIEs_t ies;
+ int rc;
+
+ rc = rua_decode_directtransferies(&ies, in);
+ if (rc < 0) {
+ printf("failed to decode RUA DT IEs\n");
+ return;
+ }
+
+ rc = ranap_cn_rx_co(hnb_test_rua_dt_handle_ranap, hnb, ies.ranaP_Message.buf, ies.ranaP_Message.size);
+
+ /* FIXME: what to do with the asn1c-allocated memory */
+ rua_free_directtransferies(&ies);
+}
+
+void hnb_test_rua_cl_handle(struct hnb_test *hnb, ANY_t *in)
+{
+ RUA_ConnectionlessTransferIEs_t ies;
+ int rc;
+
+ rc = rua_decode_connectionlesstransferies(&ies, in);
+ if (rc < 0) {
+ printf("failed to decode RUA CL IEs\n");
+ return;
+ }
+
+ rc = ranap_cn_rx_cl(hnb_test_rua_cl_handle_ranap, hnb, ies.ranaP_Message.buf, ies.ranaP_Message.size);
+
+ /* FIXME: what to do with the asn1c-allocated memory */
+ rua_free_connectionlesstransferies(&ies);
+}
+
diff --git a/src/tests/hnb-test.c b/src/tests/hnb-test.c
new file mode 100644
index 0000000..68a3117
--- /dev/null
+++ b/src/tests/hnb-test.c
@@ -0,0 +1,1012 @@
+/* Test HNB */
+
+/* (C) 2015 by Daniel Willmann <dwillmann@sysmocom.de>
+ * (C) 2015 by Sysmocom s.f.m.c. GmbH
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+#include <errno.h>
+#include <signal.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/sctp.h>
+#include <arpa/inet.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/select.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/socket.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/write_queue.h>
+#include <osmocom/netif/stream.h>
+#include <osmocom/gsm/tlv.h>
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/vty/telnet_interface.h>
+#include <osmocom/vty/logging.h>
+#include <osmocom/vty/command.h>
+
+#include <osmocom/crypt/auth.h>
+
+#include "hnb-test.h"
+#include "hnb-test-layers.h"
+#include <osmocom/hnbap/hnbap_common.h>
+#include <osmocom/hnbap/hnbap_ies_defs.h>
+#include <osmocom/rua/rua_msg_factory.h>
+#include "asn1helpers.h"
+#include <osmocom/ranap/iu_helpers.h>
+#include "test_common.h"
+
+#include <osmocom/ranap/ranap_msg_factory.h>
+
+#include <osmocom/rua/RUA_RUA-PDU.h>
+
+#include <osmocom/gsm/protocol/gsm_04_08.h>
+
+#include <osmocom/ranap/RANAP_ProcedureCode.h>
+#include <osmocom/ranap/RANAP_Criticality.h>
+#include <osmocom/ranap/RANAP_DirectTransfer.h>
+
+static void *tall_hnb_ctx;
+
+struct hnb_test g_hnb_test = {
+ .gw_addr = "127.0.0.1",
+ .gw_port = IUH_DEFAULT_SCTP_PORT,
+};
+
+struct msgb *rua_new_udt(struct msgb *inmsg);
+
+static int hnb_test_ue_de_register_tx(struct hnb_test *hnb_test)
+{
+ struct msgb *msg;
+ int rc, imsi_len;
+ uint32_t ctx_id;
+
+ UEDe_Register_t dereg;
+ UEDe_RegisterIEs_t dereg_ies;
+ memset(&dereg_ies, 0, sizeof(dereg_ies));
+
+ asn1_u24_to_bitstring(&dereg_ies.context_ID, &ctx_id, hnb_test->ctx_id);
+ dereg_ies.cause.present = Cause_PR_radioNetwork;
+ dereg_ies.cause.choice.radioNetwork = CauseRadioNetwork_connection_with_UE_lost;
+
+ memset(&dereg, 0, sizeof(dereg));
+ rc = hnbap_encode_uede_registeries(&dereg, &dereg_ies);
+
+ msg = hnbap_generate_initiating_message(ProcedureCode_id_UEDe_Register,
+ Criticality_ignore,
+ &asn_DEF_UEDe_Register,
+ &dereg);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_UEDe_Register, &dereg);
+
+ msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;
+
+ return osmo_wqueue_enqueue(&hnb_test->wqueue, msg);
+}
+
+static int hnb_test_ue_register_tx(struct hnb_test *hnb_test, const char *imsi_str)
+{
+ struct msgb *msg;
+ int rc, imsi_len;
+
+ char imsi_buf[16];
+
+ UERegisterRequest_t request_out;
+ UERegisterRequestIEs_t request;
+ memset(&request, 0, sizeof(request));
+
+ request.uE_Identity.present = UE_Identity_PR_iMSI;
+
+ imsi_len = ranap_imsi_encode(imsi_buf, sizeof(imsi_buf), imsi_str);
+ OCTET_STRING_fromBuf(&request.uE_Identity.choice.iMSI, imsi_buf, imsi_len);
+
+ request.registration_Cause = Registration_Cause_normal;
+ request.uE_Capabilities.access_stratum_release_indicator = Access_stratum_release_indicator_rel_6;
+ request.uE_Capabilities.csg_capability = CSG_Capability_not_csg_capable;
+
+ memset(&request_out, 0, sizeof(request_out));
+ rc = hnbap_encode_ueregisterrequesties(&request_out, &request);
+
+ msg = hnbap_generate_initiating_message(ProcedureCode_id_UERegister,
+ Criticality_reject,
+ &asn_DEF_UERegisterRequest,
+ &request_out);
+
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_UERegisterRequest, &request_out);
+
+ msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;
+
+ return osmo_wqueue_enqueue(&hnb_test->wqueue, msg);
+}
+
+static int hnb_test_rx_hnb_register_acc(struct hnb_test *hnb, ANY_t *in)
+{
+ int rc;
+ HNBRegisterAcceptIEs_t accept;
+
+ rc = hnbap_decode_hnbregisteraccepties(&accept, in);
+ if (rc < 0) {
+ }
+
+ hnb->rnc_id = accept.rnc_id;
+ printf("HNB Register accept with RNC ID %u\n", hnb->rnc_id);
+
+ hnbap_free_hnbregisteraccepties(&accept);
+ return 0;
+}
+
+static int hnb_test_rx_ue_register_acc(struct hnb_test *hnb, ANY_t *in)
+{
+ int rc;
+ uint32_t ctx_id;
+ UERegisterAcceptIEs_t accept;
+ char imsi[16];
+
+ rc = hnbap_decode_ueregisteraccepties(&accept, in);
+ if (rc < 0) {
+ return rc;
+ }
+
+ if (accept.uE_Identity.present != UE_Identity_PR_iMSI) {
+ printf("Wrong type in UE register accept\n");
+ return -1;
+ }
+
+ ctx_id = asn1bitstr_to_u24(&accept.context_ID);
+
+ ranap_bcd_decode(imsi, sizeof(imsi), accept.uE_Identity.choice.iMSI.buf,
+ accept.uE_Identity.choice.iMSI.size);
+ printf("UE Register accept for IMSI %s, context %u\n", imsi, ctx_id);
+
+ hnb->ctx_id = ctx_id;
+ hnbap_free_ueregisteraccepties(&accept);
+
+ return 0;
+}
+
+static struct msgb *gen_nas_id_resp()
+{
+ uint8_t id_resp[] = {
+ GSM48_PDISC_MM,
+ GSM48_MT_MM_ID_RESP,
+ /* IMEISV */
+ 0x09, /* len */
+ 0x03, /* first digit (0000) + even (0) + id IMEISV (011) */
+ 0x31, 0x91, 0x06, 0x00, 0x28, 0x47, 0x11, /* digits */
+ 0xf2, /* filler (1111) + last digit (0010) */
+ };
+
+ return ranap_new_msg_dt(0, id_resp, sizeof(id_resp));
+}
+
+static struct msgb *gen_nas_tmsi_realloc_compl()
+{
+ uint8_t id_resp[] = {
+ GSM48_PDISC_MM,
+ GSM48_MT_MM_TMSI_REALL_COMPL,
+ };
+
+ return ranap_new_msg_dt(0, id_resp, sizeof(id_resp));
+}
+
+static struct msgb *gen_nas_auth_resp(uint8_t *sres)
+{
+ uint8_t id_resp[] = {
+ GSM48_PDISC_MM,
+ 0x80 | GSM48_MT_MM_AUTH_RESP, /* simulate sequence nr 2 */
+ 0x61, 0xb5, 0x69, 0xf5 /* hardcoded SRES */
+ };
+
+ memcpy(id_resp + 2, sres, 4);
+
+ return ranap_new_msg_dt(0, id_resp, sizeof(id_resp));
+}
+
+static int hnb_test_tx_dt(struct hnb_test *hnb, struct msgb *txm)
+{
+ struct hnbtest_chan *chan;
+ struct msgb *rua;
+
+ chan = hnb->cs.chan;
+ if (!chan) {
+ printf("hnb_test_nas_tx_tmsi_realloc_compl(): No CS channel established yet.\n");
+ return -1;
+ }
+
+ rua = rua_new_dt(chan->is_ps, chan->conn_id, txm);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+ return 0;
+}
+
+static struct tlv_parsed *parse_mm(struct gsm48_hdr *gh, int len)
+{
+ static struct tlv_parsed tp;
+ int parse_res;
+
+ len -= (const char *)&gh->data[0] - (const char *)gh;
+
+ OSMO_ASSERT(gsm48_hdr_pdisc(gh) == GSM48_PDISC_MM);
+
+ parse_res = tlv_parse(&tp, &gsm48_mm_att_tlvdef, &gh->data[0], len, 0, 0);
+ if (parse_res <= 0) {
+ uint8_t msg_type = gsm48_hdr_msg_type(gh);
+ printf("Error parsing MM message 0x%hhx: %d\n", msg_type, parse_res);
+ return NULL;
+ }
+
+ return &tp;
+}
+
+int hnb_test_nas_rx_lu_accept(struct gsm48_hdr *gh, int len, int *sent_tmsi)
+{
+ printf(" :D Location Update Accept :D\n");
+ struct gsm48_loc_area_id *lai;
+
+ lai = (struct gsm48_loc_area_id *)&gh->data[0];
+
+ uint16_t mcc, mnc, lac;
+ gsm48_decode_lai(lai, &mcc, &mnc, &lac);
+ printf("LU: mcc %hd mnc %hd lac %hd\n",
+ mcc, mnc, lac);
+
+ struct tlv_parsed tp;
+ int parse_res;
+
+ len -= (const char *)&gh->data[0] - (const char *)gh;
+ parse_res = tlv_parse(&tp, &gsm48_mm_att_tlvdef, &gh->data[0], len, 0, 0);
+ if (parse_res <= 0) {
+ printf("Error parsing Location Update Accept message: %d\n", parse_res);
+ return -1;
+ }
+
+ if (TLVP_PRESENT(&tp, GSM48_IE_MOBILE_ID)) {
+ uint8_t type = TLVP_VAL(&tp, GSM48_IE_NAME_SHORT)[0] & 0x0f;
+ if (type == GSM_MI_TYPE_TMSI)
+ *sent_tmsi = 1;
+ else *sent_tmsi = 0;
+ }
+ return 0;
+}
+
+void hnb_test_nas_rx_mm_info(struct gsm48_hdr *gh, int len)
+{
+ printf(" :) MM Info :)\n");
+ struct tlv_parsed *tp = parse_mm(gh, len);
+ if (!tp)
+ return;
+
+ if (TLVP_PRESENT(tp, GSM48_IE_NAME_SHORT)) {
+ char name[128] = {0};
+ gsm_7bit_decode_n(name, 127,
+ TLVP_VAL(tp, GSM48_IE_NAME_SHORT)+1,
+ (TLVP_LEN(tp, GSM48_IE_NAME_SHORT)-1)*8/7);
+ printf("Info: Short Network Name: %s\n", name);
+ }
+
+ if (TLVP_PRESENT(tp, GSM48_IE_NAME_LONG)) {
+ char name[128] = {0};
+ gsm_7bit_decode_n(name, 127,
+ TLVP_VAL(tp, GSM48_IE_NAME_LONG)+1,
+ (TLVP_LEN(tp, GSM48_IE_NAME_LONG)-1)*8/7);
+ printf("Info: Long Network Name: %s\n", name);
+ }
+}
+
+static int hnb_test_nas_rx_auth_req(struct hnb_test *hnb, struct gsm48_hdr *gh,
+ int len)
+{
+ struct gsm48_auth_req *ar;
+ int parse_res;
+
+ len -= (const char *)&gh->data[0] - (const char *)gh;
+
+ if (len < sizeof(*ar)) {
+ printf("GSM48 Auth Req does not fit.\n");
+ return;
+ }
+
+ printf(" :) Authentication Request :)\n");
+
+ ar = (struct gsm48_auth_req*) &gh->data[0];
+ int seq = ar->key_seq;
+
+ /* Generate SRES from *HARDCODED* Ki for Iuh testing */
+ struct osmo_auth_vector vec;
+ /* Ki 000102030405060708090a0b0c0d0e0f */
+ struct osmo_sub_auth_data auth = {
+ .type = OSMO_AUTH_TYPE_GSM,
+ .algo = OSMO_AUTH_ALG_COMP128v1,
+ .u.gsm.ki = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x0e, 0x0f
+ },
+ };
+
+ memset(&vec, 0, sizeof(vec));
+ osmo_auth_gen_vec(&vec, &auth, ar->rand);
+
+ printf("seq %d rand %s",
+ seq, osmo_hexdump(ar->rand, sizeof(ar->rand)));
+ printf(" --> sres %s\n",
+ osmo_hexdump(vec.sres, 4));
+
+ return hnb_test_tx_dt(hnb, gen_nas_auth_resp(vec.sres));
+}
+
+void hnb_test_tx_iu_release_req(struct hnb_test *hnb)
+{
+ RANAP_Cause_t cause = {
+ .present = RANAP_Cause_PR_radioNetwork,
+ .choice.transmissionNetwork = RANAP_CauseRadioNetwork_release_due_to_UE_generated_signalling_connection_release,
+ };
+ hnb_test_tx_dt(hnb, ranap_new_msg_iu_rel_req(&cause));
+}
+
+void hnb_test_tx_iu_release_compl(struct hnb_test *hnb)
+{
+ hnb_test_tx_dt(hnb, ranap_new_msg_iu_rel_compl());
+}
+
+static int hnb_test_nas_rx_mm(struct hnb_test *hnb, struct gsm48_hdr *gh, int len)
+{
+ struct hnbtest_chan *chan;
+
+ chan = hnb->cs.chan;
+ if (!chan) {
+ printf("hnb_test_nas_rx_mm(): No CS channel established yet.\n");
+ return -1;
+ }
+
+ OSMO_ASSERT(!chan->is_ps);
+
+ uint8_t msg_type = gsm48_hdr_msg_type(gh);
+ int sent_tmsi;
+
+ switch (msg_type) {
+ case GSM48_MT_MM_ID_REQ:
+ return hnb_test_tx_dt(hnb, gen_nas_id_resp());
+
+ case GSM48_MT_MM_LOC_UPD_ACCEPT:
+ if (hnb_test_nas_rx_lu_accept(gh, len, &sent_tmsi))
+ return -1;
+ if (sent_tmsi)
+ return hnb_test_tx_dt(hnb, gen_nas_tmsi_realloc_compl());
+ else
+ return 0;
+
+ case GSM48_MT_MM_LOC_UPD_REJECT:
+ printf("Received Location Update Reject\n");
+ return 0;
+
+ case GSM48_MT_MM_INFO:
+ hnb_test_nas_rx_mm_info(gh, len);
+ hnb_test_tx_iu_release_req(hnb);
+ return 0;
+
+ case GSM48_MT_MM_AUTH_REQ:
+ return hnb_test_nas_rx_auth_req(hnb, gh, len);
+
+ default:
+ printf("04.08 message type not handled by hnb-test: 0x%x\n",
+ msg_type);
+ return 0;
+ }
+
+}
+
+void hnb_test_nas_rx_dtap(struct hnb_test *hnb, void *data, int len)
+{
+ int rc;
+ printf("got %d bytes: %s\n", len, osmo_hexdump(data, len));
+
+ // nas_pdu == '05 08 12' ==> IMEI Identity request
+ // '05 04 0d' ==> LU reject
+
+ struct gsm48_hdr *gh = data;
+ if (len < sizeof(*gh)) {
+ printf("hnb_test_nas_rx_dtap(): NAS PDU is too short: %d. Ignoring.\n",
+ len);
+ return;
+ }
+ uint8_t pdisc = gsm48_hdr_pdisc(gh);
+
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ rc = hnb_test_nas_rx_mm(hnb, gh, len);
+ if (rc != 0)
+ printf("Error receiving MM message: %d\n", rc);
+ return;
+ default:
+ printf("04.08 discriminator not handled by hnb-test: %d\n",
+ pdisc);
+ return;
+ }
+}
+
+void hnb_test_rx_secmode_cmd(struct hnb_test *hnb, long ip_alg)
+{
+ printf(" :) Security Mode Command :)\n");
+ /* not caring about encryption yet, just pass 0 for No Encryption. */
+ hnb_test_tx_dt(hnb, ranap_new_msg_sec_mod_compl(ip_alg, 0));
+}
+
+void hnb_test_rx_iu_release(struct hnb_test *hnb)
+{
+ hnb_test_tx_iu_release_compl(hnb);
+}
+
+void hnb_test_rx_paging(struct hnb_test *hnb, const char *imsi)
+{
+ printf(" :) Paging Request for %s :)\n", imsi);
+ /* TODO reply */
+}
+
+int hnb_test_hnbap_rx(struct hnb_test *hnb, struct msgb *msg)
+{
+ HNBAP_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL, &asn_DEF_HNBAP_PDU, (void **) &pdu,
+ msg->data, msgb_length(msg), 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DMAIN, LOGL_ERROR, "Error in ASN.1 decode\n");
+ return rc;
+ }
+
+ if (pdu->present != HNBAP_PDU_PR_successfulOutcome) {
+ printf("Unexpected HNBAP message received\n");
+ }
+
+ switch (pdu->choice.successfulOutcome.procedureCode) {
+ case ProcedureCode_id_HNBRegister:
+ /* Get HNB id and send UE Register request */
+ rc = hnb_test_rx_hnb_register_acc(hnb, &pdu->choice.successfulOutcome.value);
+ break;
+ case ProcedureCode_id_UERegister:
+ rc = hnb_test_rx_ue_register_acc(hnb, &pdu->choice.successfulOutcome.value);
+ break;
+ default:
+ break;
+ }
+
+ return rc;
+}
+
+extern void direct_transfer_nas_pdu_print(ANY_t *in);
+
+int hnb_test_rua_rx(struct hnb_test *hnb, struct msgb *msg)
+{
+ RUA_RUA_PDU_t _pdu, *pdu = &_pdu;
+ asn_dec_rval_t dec_ret;
+ int rc;
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL, &asn_DEF_RUA_RUA_PDU, (void **) &pdu,
+ msg->data, msgb_length(msg), 0, 0);
+ if (dec_ret.code != RC_OK) {
+ LOGP(DMAIN, LOGL_ERROR, "Error in ASN.1 decode\n");
+ return rc;
+ }
+
+ switch (pdu->present) {
+ case RUA_RUA_PDU_PR_successfulOutcome:
+ printf("RUA_RUA_PDU_PR_successfulOutcome\n");
+ break;
+ case RUA_RUA_PDU_PR_initiatingMessage:
+ printf("RUA_RUA_PDU_PR_initiatingMessage\n");
+ break;
+ case RUA_RUA_PDU_PR_NOTHING:
+ printf("RUA_RUA_PDU_PR_NOTHING\n");
+ break;
+ case RUA_RUA_PDU_PR_unsuccessfulOutcome:
+ printf("RUA_RUA_PDU_PR_unsuccessfulOutcome\n");
+ break;
+ default:
+ printf("Unexpected RUA message received\n");
+ break;
+ }
+
+ switch (pdu->choice.successfulOutcome.procedureCode) {
+ case RUA_ProcedureCode_id_ConnectionlessTransfer:
+ printf("RUA rx Connectionless Transfer\n");
+ hnb_test_rua_cl_handle(hnb, &pdu->choice.successfulOutcome.value);
+ break;
+ case RUA_ProcedureCode_id_Connect:
+ printf("RUA rx Connect\n");
+ break;
+ case RUA_ProcedureCode_id_DirectTransfer:
+ printf("RUA rx DirectTransfer\n");
+ hnb_test_rua_dt_handle(hnb, &pdu->choice.successfulOutcome.value);
+ break;
+ case RUA_ProcedureCode_id_Disconnect:
+ printf("RUA rx Disconnect\n");
+ break;
+ case RUA_ProcedureCode_id_ErrorIndication:
+ printf("RUA rx ErrorIndication\n");
+ break;
+ case RUA_ProcedureCode_id_privateMessage:
+ printf("RUA rx privateMessage\n");
+ break;
+ default:
+ printf("RUA rx unknown message\n");
+ break;
+ }
+
+ return rc;
+}
+
+static int hnb_read_cb(struct osmo_fd *fd)
+{
+ struct hnb_test *hnb_test = fd->data;
+ struct sctp_sndrcvinfo sinfo;
+ struct msgb *msg = msgb_alloc(IUH_MSGB_SIZE, "Iuh rx");
+ int flags = 0;
+ int rc;
+
+ if (!msg)
+ return -ENOMEM;
+
+ rc = sctp_recvmsg(fd->fd, msgb_data(msg), msgb_tailroom(msg),
+ NULL, NULL, &sinfo, &flags);
+ if (rc < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Error during sctp_recvmsg()\n");
+ /* FIXME: clean up after disappeared HNB */
+ close(fd->fd);
+ osmo_fd_unregister(fd);
+ return rc;
+ } else if (rc == 0) {
+ LOGP(DMAIN, LOGL_INFO, "Connection to HNB closed\n");
+ close(fd->fd);
+ osmo_fd_unregister(fd);
+ fd->fd = -1;
+
+ return -1;
+ } else {
+ msgb_put(msg, rc);
+ }
+
+ if (flags & MSG_NOTIFICATION) {
+ LOGP(DMAIN, LOGL_DEBUG, "Ignoring SCTP notification\n");
+ msgb_free(msg);
+ return 0;
+ }
+
+ sinfo.sinfo_ppid = ntohl(sinfo.sinfo_ppid);
+
+ switch (sinfo.sinfo_ppid) {
+ case IUH_PPI_HNBAP:
+ printf("HNBAP message received\n");
+ rc = hnb_test_hnbap_rx(hnb_test, msg);
+ break;
+ case IUH_PPI_RUA:
+ printf("RUA message received\n");
+ rc = hnb_test_rua_rx(hnb_test, msg);
+ break;
+ case IUH_PPI_SABP:
+ case IUH_PPI_RNA:
+ case IUH_PPI_PUA:
+ LOGP(DMAIN, LOGL_ERROR, "Unimplemented SCTP PPID=%u received\n",
+ sinfo.sinfo_ppid);
+ rc = 0;
+ break;
+ default:
+ LOGP(DMAIN, LOGL_ERROR, "Unknown SCTP PPID=%u received\n",
+ sinfo.sinfo_ppid);
+ rc = 0;
+ break;
+ }
+
+ msgb_free(msg);
+ return rc;
+}
+
+static int hnb_write_cb(struct osmo_fd *fd, struct msgb *msg)
+{
+ struct hnb_test *ctx = fd->data;
+ struct sctp_sndrcvinfo sinfo = {
+ .sinfo_ppid = htonl(msgb_sctp_ppid(msg)),
+ .sinfo_stream = 0,
+ };
+ int rc;
+
+ printf("Sending: %s\n", osmo_hexdump(msgb_data(msg), msgb_length(msg)));
+ rc = sctp_send(fd->fd, msgb_data(msg), msgb_length(msg),
+ &sinfo, 0);
+ /* we don't need to msgb_free(), write_queue does this for us */
+ return rc;
+}
+
+static void hnb_send_register_req(struct hnb_test *hnb_test)
+{
+ HNBRegisterRequest_t request_out;
+ struct msgb *msg;
+ int rc;
+ uint16_t lac, sac;
+ uint8_t rac;
+ uint32_t cid;
+ uint8_t plmn[] = {0x09, 0xf1, 0x99};
+ char identity[50] = "ATestHNB@";
+
+ HNBRegisterRequestIEs_t request;
+ memset(&request, 0, sizeof(request));
+
+ lac = 0xc0fe;
+ sac = 0xabab;
+ rac = 0x42;
+ cid = 0xadceaab;
+
+ asn1_u16_to_str(&request.lac, &lac, lac);
+ asn1_u16_to_str(&request.sac, &sac, sac);
+ asn1_u8_to_str(&request.rac, &rac, rac);
+ asn1_u28_to_bitstring(&request.cellIdentity, &cid, cid);
+
+ request.hnB_Identity.hNB_Identity_Info.buf = identity;
+ request.hnB_Identity.hNB_Identity_Info.size = strlen(identity);
+
+ request.plmNidentity.buf = plmn;
+ request.plmNidentity.size = 3;
+
+
+
+ memset(&request_out, 0, sizeof(request_out));
+ rc = hnbap_encode_hnbregisterrequesties(&request_out, &request);
+ if (rc < 0) {
+ printf("Could not encode HNB register request IEs\n");
+ }
+
+ msg = hnbap_generate_initiating_message(ProcedureCode_id_HNBRegister,
+ Criticality_reject,
+ &asn_DEF_HNBRegisterRequest,
+ &request_out);
+
+
+ msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;
+
+ osmo_wqueue_enqueue(&hnb_test->wqueue, msg);
+}
+
+static void hnb_send_deregister_req(struct hnb_test *hnb_test)
+{
+ struct msgb *msg;
+ int rc;
+
+ HNBDe_RegisterIEs_t request;
+ memset(&request, 0, sizeof(request));
+
+ request.cause.present = Cause_PR_misc;
+ request.cause.choice.misc = CauseMisc_o_and_m_intervention;
+
+ HNBDe_Register_t request_out;
+ memset(&request_out, 0, sizeof(request_out));
+ rc = hnbap_encode_hnbde_registeries(&request_out, &request);
+ if (rc < 0) {
+ printf("Could not encode HNB deregister request IEs\n");
+ }
+
+ msg = hnbap_generate_initiating_message(ProcedureCode_id_HNBDe_Register,
+ Criticality_reject,
+ &asn_DEF_HNBDe_Register,
+ &request_out);
+
+ msgb_sctp_ppid(msg) = IUH_PPI_HNBAP;
+
+ osmo_wqueue_enqueue(&hnb_test->wqueue, msg);
+}
+
+
+static const struct log_info_cat log_cat[] = {
+ [DMAIN] = {
+ .name = "DMAIN", .loglevel = LOGL_INFO, .enabled = 1,
+ .color = "",
+ .description = "Main program",
+ },
+ [DHNBAP] = {
+ .name = "DHNBAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "Home Node B Application Part",
+ },
+};
+
+static const struct log_info hnb_test_log_info = {
+ .cat = log_cat,
+ .num_cat = ARRAY_SIZE(log_cat),
+};
+
+static struct vty_app_info vty_info = {
+ .name = "OsmoHNB-Test",
+ .version = "0",
+};
+
+static int sctp_sock_init(int fd)
+{
+ struct sctp_event_subscribe event;
+ int rc;
+
+ /* subscribe for all events */
+ memset((uint8_t *)&event, 1, sizeof(event));
+ rc = setsockopt(fd, IPPROTO_SCTP, SCTP_EVENTS,
+ &event, sizeof(event));
+
+ return rc;
+}
+
+#define HNBAP_STR "HNBAP related commands\n"
+#define HNB_STR "HomeNodeB commands\n"
+#define UE_STR "User Equipment commands\n"
+#define RANAP_STR "RANAP related commands\n"
+#define CSPS_STR "Circuit Switched\n" "Packet Switched\n"
+
+DEFUN(hnb_register, hnb_register_cmd,
+ "hnbap hnb register", HNBAP_STR HNB_STR "Send HNB-REGISTER REQUEST")
+{
+ hnb_send_register_req(&g_hnb_test);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(hnb_deregister, hnb_deregister_cmd,
+ "hnbap hnb deregister", HNBAP_STR HNB_STR "Send HNB-DEREGISTER REQUEST")
+{
+ hnb_send_deregister_req(&g_hnb_test);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(ue_register, ue_register_cmd,
+ "hnbap ue register IMSI", HNBAP_STR UE_STR "Send UE-REGISTER REQUEST")
+{
+ hnb_test_ue_register_tx(&g_hnb_test, argv[0]);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(asn_dbg, asn_dbg_cmd,
+ "asn-debug (1|0)", "Enable or disabel libasn1c debugging")
+{
+ asn_debug = atoi(argv[0]);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(ranap_reset, ranap_reset_cmd,
+ "ranap reset (cs|ps)", RANAP_STR "Send RANAP RESET\n" CSPS_STR)
+{
+ int is_ps = 0;
+ struct msgb *msg, *rua;
+
+ RANAP_Cause_t cause = {
+ .present = RANAP_Cause_PR_transmissionNetwork,
+ .choice.transmissionNetwork = RANAP_CauseTransmissionNetwork_signalling_transport_resource_failure,
+ };
+
+ if (!strcmp(argv[0], "ps"))
+ is_ps = 1;
+
+ msg = ranap_new_msg_reset(is_ps, &cause);
+ rua = rua_new_udt(msg);
+ //msgb_free(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ return CMD_SUCCESS;
+}
+
+
+enum my_vty_nodes {
+ CHAN_NODE = _LAST_OSMOVTY_NODE,
+};
+
+static struct cmd_node chan_node = {
+ CHAN_NODE,
+ "%s(chan)> ",
+ 1,
+};
+
+
+static struct msgb *gen_initue_lu(int is_ps, uint32_t conn_id, const char *imsi)
+{
+ uint8_t lu[] = { GSM48_PDISC_MM, GSM48_MT_MM_LOC_UPD_REQUEST,
+ 0x70, 0x62, 0xf2, 0x30, 0xff, 0xf3, 0x57,
+ /* len, IMSI/type, IMSI-------------------------------- */
+ 0x08, 0x29, 0x26, 0x24, 0x10, 0x32, 0x54, 0x76, 0x98,
+ 0x33, 0x03, 0x57, 0x18 , 0xb2 };
+ uint8_t plmn_id[] = { 0x09, 0x01, 0x99 };
+ RANAP_GlobalRNC_ID_t rnc_id = {
+ .rNC_ID = 23,
+ .pLMNidentity.buf = plmn_id,
+ .pLMNidentity.size = sizeof(plmn_id),
+ };
+
+ /* FIXME: patch imsi */
+ /* Note: the Mobile Identitiy IE's IMSI data has the identity type and
+ * an even/odd indicator bit encoded in the first octet. So the first
+ * octet looks like this:
+ *
+ * 8 7 6 5 | 4 | 3 2 1
+ * IMSI-digit | even/odd | type
+ *
+ * followed by the remaining IMSI digits.
+ * If digit count is even (bit 4 == 0), that first high-nibble is 0xf.
+ * (derived from Iu pcap Location Update Request msg and TS 25.413)
+ *
+ * TODO I'm only 90% sure about this
+ */
+
+ return ranap_new_msg_initial_ue(conn_id, is_ps, &rnc_id, lu, sizeof(lu));
+}
+
+DEFUN(chan, chan_cmd,
+ "channel (cs|ps) lu imsi IMSI",
+ "Open a new Signalling Connection\n"
+ "To Circuit-Switched CN\n"
+ "To Packet-Switched CN\n"
+ "Performing a Location Update\n"
+ )
+{
+ struct hnbtest_chan *chan;
+ struct msgb *msg, *rua;
+ static uint16_t conn_id = 42;
+
+ chan = talloc_zero(tall_hnb_ctx, struct hnbtest_chan);
+ if (!strcmp(argv[0], "ps"))
+ chan->is_ps = 1;
+ chan->imsi = talloc_strdup(chan, argv[1]);
+ chan->conn_id = conn_id;
+ conn_id++;
+
+ msg = gen_initue_lu(chan->is_ps, chan->conn_id, chan->imsi);
+ rua = rua_new_conn(chan->is_ps, chan->conn_id, msg);
+
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ vty->index = chan;
+ vty->node = CHAN_NODE;
+
+ if (!chan->is_ps)
+ g_hnb_test.cs.chan = chan;
+
+
+ return CMD_SUCCESS;
+}
+
+static void hnbtest_vty_init(void)
+{
+ install_element_ve(&asn_dbg_cmd);
+ install_element_ve(&hnb_register_cmd);
+ install_element_ve(&hnb_deregister_cmd);
+ install_element_ve(&ue_register_cmd);
+ install_element_ve(&ranap_reset_cmd);
+ install_element_ve(&chan_cmd);
+
+ install_node(&chan_node, NULL);
+ vty_install_default(CHAN_NODE);
+}
+
+static void handle_options(int argc, char **argv)
+{
+ while (1) {
+ int idx = 0, c;
+ static const struct option long_options[] = {
+ { "ues", 1, 0, 'u' },
+ { "gw-addr", 1, 0, 'g' },
+ { 0, 0, 0, 0 },
+ };
+
+ c = getopt_long(argc, argv, "u:g:", long_options, &idx);
+
+ if (c == -1)
+ break;
+
+ switch (c) {
+ case 'u':
+ g_hnb_test.ues = atoi(optarg);
+ break;
+ case 'g':
+ g_hnb_test.gw_addr = optarg;
+ break;
+ }
+ }
+}
+
+int main(int argc, char **argv)
+{
+ int rc;
+
+ test_common_init();
+
+ tall_hnb_ctx = talloc_named_const(NULL, 0, "hnb_context");
+
+ vty_init(&vty_info);
+ hnbtest_vty_init();
+
+ rc = telnet_init_dynif(NULL, NULL, vty_get_bind_addr(), 2324);
+ if (rc < 0) {
+ perror("Error binding VTY port");
+ exit(1);
+ }
+
+ handle_options(argc, argv);
+
+ osmo_wqueue_init(&g_hnb_test.wqueue, 16);
+ g_hnb_test.wqueue.bfd.data = &g_hnb_test;
+ g_hnb_test.wqueue.read_cb = hnb_read_cb;
+ g_hnb_test.wqueue.write_cb = hnb_write_cb;
+
+ rc = osmo_sock_init_ofd(&g_hnb_test.wqueue.bfd, AF_INET, SOCK_STREAM,
+ IPPROTO_SCTP, g_hnb_test.gw_addr,
+ g_hnb_test.gw_port, OSMO_SOCK_F_CONNECT);
+ if (rc < 0) {
+ perror("Error connecting to Iuh port");
+ exit(1);
+ }
+ sctp_sock_init(g_hnb_test.wqueue.bfd.fd);
+
+#if 0
+ /* some hard-coded message generation. Doesn't make sense from
+ * a protocol point of view but enables to look at the encoded
+ * results in wireshark for manual verification */
+ {
+ struct msgb *msg, *rua;
+ const uint8_t nas[] = { 0, 1, 2, 3 };
+ const uint8_t ik[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+
+ msg = ranap_new_msg_dt(0, nas, sizeof(nas));
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ msg = ranap_new_msg_sec_mod_cmd(ik, ik, RANAP_KeyStatus_new);
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ msg = ranap_new_msg_iu_rel_cmd()
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ msg = ranap_new_msg_paging_cmd("901990123456789", NULL, 0, 0);
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ msg = ranap_new_msg_rab_assign_voice(1, 0x01020304, 0x1020);
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+
+ msg = ranap_new_msg_rab_assign_data(2, 0x01020304, 0x11223344);
+ rua = rua_new_udt(msg);
+ osmo_wqueue_enqueue(&g_hnb_test.wqueue, rua);
+ }
+#endif
+
+ while (1) {
+ rc = osmo_select_main(0);
+ if (rc < 0)
+ exit(3);
+ }
+
+ /* not reached */
+ exit(0);
+}
diff --git a/src/tests/hnb-test.h b/src/tests/hnb-test.h
new file mode 100644
index 0000000..4af50a7
--- /dev/null
+++ b/src/tests/hnb-test.h
@@ -0,0 +1,80 @@
+#pragma once
+
+#include <osmocom/core/select.h>
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/write_queue.h>
+
+#define DEBUG
+#include <osmocom/core/logging.h>
+
+enum {
+ DMAIN,
+ DHNBAP,
+};
+
+
+/* 25.467 Section 7.1 */
+#define IUH_DEFAULT_SCTP_PORT 29169
+#define RNA_DEFAULT_SCTP_PORT 25471
+
+#define IUH_PPI_RUA 19
+#define IUH_PPI_HNBAP 20
+#define IUH_PPI_SABP 31
+#define IUH_PPI_RNA 42
+#define IUH_PPI_PUA 55
+
+#define IUH_MSGB_SIZE 2048
+
+struct umts_cell_id {
+ uint16_t mcc; /*!< Mobile Country Code */
+ uint16_t mnc; /*!< Mobile Network Code */
+ uint16_t lac; /*!< Locaton Area Code */
+ uint16_t rac; /*!< Routing Area Code */
+ uint16_t sac; /*!< Service Area Code */
+ uint32_t cid; /*!< Cell ID */
+};
+
+struct ue_context {
+ /*! Entry in the HNB-global list of UE */
+ struct llist_head list;
+ /*! Unique Context ID for this UE */
+ uint32_t context_id;
+ char imsi[16+1];
+};
+
+struct hnbtest_chan {
+ int is_ps;
+ uint32_t conn_id;
+ char *imsi;
+};
+
+struct hnb_test {
+ const char *gw_addr;
+ uint16_t gw_port;
+ /*! SCTP listen socket for incoming connections */
+ struct osmo_fd conn_fd;
+
+ /*! SCTP socket + write queue for Iuh to this specific HNB */
+ struct osmo_wqueue wqueue;
+ /*! copied from HNB-Identity-Info IE */
+ char identity_info[256];
+ /*! copied from Cell Identity IE */
+ struct umts_cell_id id;
+
+ /*! SCTP stream ID for HNBAP */
+ uint16_t hnbap_stream;
+ /*! SCTP stream ID for RUA */
+ uint16_t rua_stream;
+
+ uint16_t rnc_id;
+
+ uint32_t ctx_id;
+
+ int ues;
+
+ struct {
+ struct hnbtest_chan *chan;
+ } cs;
+};
+
+extern struct hnb_test g_hnb_test;
diff --git a/src/tests/test-helpers.c b/src/tests/test-helpers.c
new file mode 100644
index 0000000..44fd735
--- /dev/null
+++ b/src/tests/test-helpers.c
@@ -0,0 +1,215 @@
+/* some humble start of unit testing */
+
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "test_common.h"
+
+#include <osmocom/ranap/iu_helpers.h>
+#include <osmocom/ranap/ranap_common.h>
+#include "asn1helpers.h"
+
+#include <assert.h>
+#define ASSERT(x) assert(x)
+
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/ranap/RANAP_LAI.h>
+
+int asn1_xer_print = 0;
+void *talloc_asn1_ctx;
+
+/* use odd number of digits */
+const uint8_t imsi_encoded[] = { 0x10, 0x32, 0x54, 0x76, 0xF8 };
+const char imsi_decoded[] = "012345678";
+
+void test_iu_helpers(void)
+{
+ char outstr[32];
+ uint8_t outbuf[16];
+ int rc;
+
+ printf("Testing Iu helper functions\n");
+
+ printf("pre-encoded: %s\n", osmo_hexdump_nospc(imsi_encoded,
+ sizeof(imsi_encoded)));
+ rc = ranap_bcd_decode(outstr, sizeof(outstr), imsi_encoded,
+ sizeof(imsi_encoded));
+ ASSERT(rc >= 0);
+ printf("decoded: %s\n", outstr);
+ ASSERT(!strcmp(outstr, imsi_decoded));
+
+ rc = ranap_imsi_encode(outbuf, sizeof(outbuf), imsi_decoded);
+ ASSERT(rc >= 0);
+ printf("re-encoded: %s\n", osmo_hexdump_nospc(outbuf, rc));
+ ASSERT(!memcmp(outbuf, imsi_encoded, sizeof(imsi_encoded)));
+}
+
+const uint32_t val1 = 0xdeadbeef;
+
+const OCTET_STRING_t text1 = {
+ .buf = "0123456789012345",
+ .size = 16,
+};
+
+const OCTET_STRING_t text2 = {
+ .buf = "01234567890123456789012345678901234567890",
+ .size = 40,
+};
+
+void test_asn1_helpers(void)
+{
+ int rc;
+
+ void *buffer;
+ BIT_STRING_t enc;
+ uint32_t res, tmpval;
+ char text[32];
+
+ printf("Testing asn.1 helper functions\n");
+
+ printf("Encoding 0x%x to asn.1 bitstring\n", val1);
+ asn1_u32_to_bitstring(&enc, &tmpval, val1);
+
+ ASSERT(enc.size == sizeof(uint32_t));
+ ASSERT(enc.bits_unused == 0);
+
+ rc = aper_encode_to_new_buffer(&asn_DEF_BIT_STRING, 0, &enc, (void **) &buffer);
+ printf("Encoded: %s\n", osmo_hexdump_nospc(buffer, rc));
+
+ res = asn1bitstr_to_u32(&enc);
+
+ printf("Decoding back to uint32_t: 0x%x\n", res);
+ ASSERT(res == val1);
+
+ printf("Encoding %s to 24-bit asn.1 bitstring\n",
+ osmo_hexdump_nospc((unsigned char*)&val1, 3));
+ asn1_u24_to_bitstring(&enc, &tmpval, val1);
+
+ ASSERT(enc.size == 24/8);
+ ASSERT(enc.bits_unused == 0);
+
+ rc = aper_encode_to_new_buffer(&asn_DEF_BIT_STRING, 0, &enc, (void **) &buffer);
+ printf("Encoded: %s\n", osmo_hexdump_nospc(buffer, rc));
+
+ rc = asn1_strncpy(text, &text1, sizeof(text));
+ printf("Decoding string from asn.1: %s\n", text);
+
+ ASSERT(rc == 16);
+ ASSERT(!strcmp(text, (char *)text1.buf));
+
+ rc = asn1_strncpy(text, &text2, sizeof(text));
+ printf("Decoding large string from asn1: %s\n", text);
+ ASSERT(rc == 31);
+
+}
+
+void test_ranap_common(void)
+{
+ uint8_t plmnid_buf[] = { 0x21, 0xf3, 0x54 };
+ uint8_t lac_buf[] = { 0xab, 0xcd };
+
+ struct gprs_ra_id ra_id = {0};
+
+ int rc;
+
+ RANAP_LAI_t lai = {
+ .pLMNidentity = {
+ .buf = plmnid_buf,
+ .size = 3
+ },
+ .lAC = {
+ .buf = lac_buf,
+ .size = 2
+ }
+ };
+
+ printf("Testing ranap common functions\n");
+
+ printf("PLMN-Id [ %s]", osmo_hexdump((char*)lai.pLMNidentity.buf,
+ lai.pLMNidentity.size));
+ printf(", LAC [ %s]\n", osmo_hexdump((char*)lai.lAC.buf,
+ lai.lAC.size));
+
+ rc = ranap_parse_lai(&ra_id, &lai);
+ printf(" rc == %d\n", rc);
+ OSMO_ASSERT(rc == 0);
+ printf(" mcc == %d mnc == %d\n", ra_id.mcc, ra_id.mnc);
+ OSMO_ASSERT(ra_id.mcc == 123);
+ OSMO_ASSERT(ra_id.mnc == 45);
+ printf(" lac == 0x%x\n", ra_id.lac);
+ OSMO_ASSERT(ra_id.lac == 0xabcd);
+
+
+ /* three digit MNC */
+ uint8_t plmnid_buf_mnc3[] = { 0x21, 0x43, 0x65 };
+ lai.pLMNidentity.buf = plmnid_buf_mnc3;
+
+ printf("PLMN-Id [ %s]", osmo_hexdump((char*)lai.pLMNidentity.buf,
+ lai.pLMNidentity.size));
+ printf(", LAC [ %s]\n", osmo_hexdump((char*)lai.lAC.buf,
+ lai.lAC.size));
+
+ rc = ranap_parse_lai(&ra_id, &lai);
+ printf(" rc == %d\n", rc);
+ OSMO_ASSERT(rc == 0);
+ printf(" mcc == %d mnc == %d\n", ra_id.mcc, ra_id.mnc);
+ OSMO_ASSERT(ra_id.mcc == 123);
+ OSMO_ASSERT(ra_id.mnc == 456);
+ printf(" lac == 0x%x\n", ra_id.lac);
+ OSMO_ASSERT(ra_id.lac == 0xabcd);
+
+
+ /* wrong PLMN-Id size */
+ lai.pLMNidentity.size = 2;
+
+ printf("PLMN-Id [ %s]", osmo_hexdump((char*)lai.pLMNidentity.buf,
+ lai.pLMNidentity.size));
+ printf(", LAC [ %s]\n", osmo_hexdump((char*)lai.lAC.buf,
+ lai.lAC.size));
+
+ rc = ranap_parse_lai(&ra_id, &lai);
+ printf(" rc == %d\n", rc);
+ OSMO_ASSERT(rc == -1);
+
+
+ /* wrong LAC size */
+ lai.pLMNidentity.size = 3;
+ lai.lAC.size = 1;
+
+ printf("PLMN-Id [ %s]", osmo_hexdump((char*)lai.pLMNidentity.buf,
+ lai.pLMNidentity.size));
+ printf(", LAC [ %s]\n", osmo_hexdump((char*)lai.lAC.buf,
+ lai.lAC.size));
+
+ rc = ranap_parse_lai(&ra_id, &lai);
+ printf(" rc == %d\n", rc);
+ OSMO_ASSERT(rc == -1);
+}
+
+int main(int argc, char **argv)
+{
+ test_common_init();
+
+ test_iu_helpers();
+ test_asn1_helpers();
+ test_ranap_common();
+
+ return 0;
+}
diff --git a/src/tests/test-helpers.err b/src/tests/test-helpers.err
new file mode 100644
index 0000000..891094a
--- /dev/null
+++ b/src/tests/test-helpers.err
@@ -0,0 +1,2 @@
+Invalid PLMN Identity size: should be 3, is 2
+Invalid LAC size: should be 2, is 1
diff --git a/src/tests/test-helpers.ok b/src/tests/test-helpers.ok
new file mode 100644
index 0000000..ddfea78
--- /dev/null
+++ b/src/tests/test-helpers.ok
@@ -0,0 +1,25 @@
+Testing Iu helper functions
+pre-encoded: 10325476f8
+decoded: 012345678
+re-encoded: 10325476f8
+Testing asn.1 helper functions
+Encoding 0xdeadbeef to asn.1 bitstring
+Encoded: 20deadbeef
+Decoding back to uint32_t: 0xdeadbeef
+Encoding efbead to 24-bit asn.1 bitstring
+Encoded: 18adbeef
+Decoding string from asn.1: 0123456789012345
+Decoding large string from asn1: 0123456789012345678901234567890
+Testing ranap common functions
+PLMN-Id [ 21 f3 54 ], LAC [ ab cd ]
+ rc == 0
+ mcc == 123 mnc == 45
+ lac == 0xabcd
+PLMN-Id [ 21 43 65 ], LAC [ ab cd ]
+ rc == 0
+ mcc == 123 mnc == 456
+ lac == 0xabcd
+PLMN-Id [ 21 43 ], LAC [ ab cd ]
+ rc == -1
+PLMN-Id [ 21 43 65 ], LAC [ ab ]
+ rc == -1
diff --git a/src/tests/test-hnbap.c b/src/tests/test-hnbap.c
new file mode 100644
index 0000000..ef46070
--- /dev/null
+++ b/src/tests/test-hnbap.c
@@ -0,0 +1,180 @@
+/* Test de-/encoding of HBNAP messages */
+
+/* (C) 2015 by Daniel Willmann <dwillmann@sysmocom.de>
+ * (C) 2015 by sysmocom s.f.m.c GmbH
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <osmocom/ranap/iu_helpers.h>
+#include "asn1helpers.h"
+
+#include <osmocom/hnbap/hnbap_common.h>
+#include <osmocom/hnbap/hnbap_ies_defs.h>
+#include "test_common.h"
+
+#include <assert.h>
+#define ASSERT(x) assert(x)
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/application.h>
+
+static const unsigned char hnbap_reg_req[] = {
+0x00, 0x01,
+0x00, 0x57, 0x00, 0x00, 0x07, 0x00, 0x03, 0x00,
+0x15, 0x04, 0x80, 0x31, 0x30, 0x30, 0x30, 0x35,
+0x42, 0x39, 0x2d, 0x30, 0x30, 0x31, 0x30, 0x39,
+0x34, 0x32, 0x30, 0x35, 0x30, 0x40, 0x00, 0x08,
+0x00, 0x17, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x11, 0x00, 0x05, 0x00, 0xc0, 0xa8, 0x00,
+0x32, 0x00, 0x09, 0x00, 0x03, 0x09, 0xf1, 0x99,
+0x00, 0x0b, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x06, 0x00, 0x02, 0x40, 0x20, 0x00, 0x07,
+0x00, 0x01, 0x64, 0x00, 0x0a, 0x00, 0x02, 0x00,
+0x01
+};
+
+static const unsigned char hnbap_reg_acc[] = {
+0x20, 0x01,
+0x00, 0x09, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00,
+0x02, 0x00, 0x00
+};
+
+static const unsigned char hnbap_ue_reg_req[] = {
+0x00, 0x03,
+0x00, 0x1a, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00,
+0x09, 0x0a, 0x62, 0x02, 0x11, 0x32, 0x54, 0x76,
+0x98, 0xf0, 0x00, 0x0c, 0x40, 0x01, 0x40, 0x00,
+0x0d, 0x00, 0x01, 0x0d
+};
+
+static const unsigned char hnbap_ue_reg_acc[] = {
+0x20, 0x03,
+0x00, 0x17, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00,
+0x09, 0x0a, 0x62, 0x02, 0x11, 0x32, 0x54, 0x76,
+0x98, 0xf0, 0x00, 0x04, 0x00, 0x03, 0x17, 0x00,
+0x00
+};
+
+void test_asn1_decoding(void)
+{
+ int rc;
+
+ HNBAP_PDU_t _pdu, *pdu = &_pdu;
+ InitiatingMessage_t *im;
+ SuccessfulOutcome_t *so;
+ UERegisterRequestIEs_t ue_req_ies;
+ UERegisterAcceptIEs_t ue_acc_ies;
+ HNBRegisterRequestIEs_t hnb_ies;
+
+ char imsi[16];
+
+ asn_dec_rval_t dec_ret;
+
+ memset(pdu, 0, sizeof(*pdu));
+ printf("Testing asn.1 HNBAP decoding\n");
+
+ dec_ret = aper_decode(NULL, &asn_DEF_HNBAP_PDU, (void **) &pdu,
+ hnbap_reg_req, sizeof(hnbap_reg_req), 0, 0);
+
+
+ ASSERT(dec_ret.code == RC_OK);
+ ASSERT(pdu->present == HNBAP_PDU_PR_initiatingMessage);
+
+ im = &pdu->choice.initiatingMessage;
+
+ ASSERT(im->procedureCode == ProcedureCode_id_HNBRegister);
+
+ rc = hnbap_decode_hnbregisterrequesties(&hnb_ies, &im->value);
+ ASSERT(rc >= 0);
+
+ uint16_t lac, sac;
+ uint8_t rac;
+ uint32_t cid;
+
+ lac = asn1str_to_u16(&hnb_ies.lac);
+ sac = asn1str_to_u16(&hnb_ies.sac);
+ rac = asn1str_to_u8(&hnb_ies.rac);
+ cid = asn1bitstr_to_u32(&hnb_ies.cellIdentity);
+
+ ASSERT(lac == 0x4020);
+ ASSERT(sac == 0x0001);
+ ASSERT(rac == 0x64);
+ ASSERT(cid == 0x0000000);
+
+ ASSERT(!strcmp((char *) hnb_ies.hnB_Identity.hNB_Identity_Info.buf, "10005B9-0010942050@"));
+
+ printf("HNBAP register request for HNB %s\n", (char *) hnb_ies.hnB_Identity.hNB_Identity_Info.buf);
+ hnbap_free_hnbregisterrequesties(&hnb_ies);
+
+ dec_ret = aper_decode(NULL, &asn_DEF_HNBAP_PDU, (void **) &pdu,
+ hnbap_ue_reg_req, sizeof(hnbap_ue_reg_req), 0, 0);
+
+
+ ASSERT(dec_ret.code == RC_OK);
+ ASSERT(pdu->present == HNBAP_PDU_PR_initiatingMessage);
+
+ im = &pdu->choice.initiatingMessage;
+ ASSERT(im->procedureCode == ProcedureCode_id_UERegister);
+
+ rc = hnbap_decode_ueregisterrequesties(&ue_req_ies, &im->value);
+ ASSERT(rc >= 0);
+
+ ASSERT(ue_req_ies.uE_Identity.present == UE_Identity_PR_iMSI);
+ ranap_bcd_decode(imsi, sizeof(imsi), ue_req_ies.uE_Identity.choice.iMSI.buf,
+ ue_req_ies.uE_Identity.choice.iMSI.size);
+
+ printf("HNBAP UE Register request from IMSI %s\n", imsi);
+ hnbap_free_ueregisterrequesties(&ue_req_ies);
+
+ memset(pdu, 0, sizeof(*pdu));
+ dec_ret = aper_decode(NULL, &asn_DEF_HNBAP_PDU, (void **) &pdu,
+ hnbap_ue_reg_acc, sizeof(hnbap_ue_reg_acc), 0, 0);
+
+
+ ASSERT(dec_ret.code == RC_OK);
+ ASSERT(pdu->present == HNBAP_PDU_PR_successfulOutcome);
+
+ so = &pdu->choice.successfulOutcome;
+ ASSERT(so->procedureCode == ProcedureCode_id_UERegister);
+
+ rc = hnbap_decode_ueregisteraccepties(&ue_acc_ies, &so->value);
+ ASSERT(rc >= 0);
+
+ ASSERT(ue_acc_ies.uE_Identity.present == UE_Identity_PR_iMSI);
+ ranap_bcd_decode(imsi, sizeof(imsi), ue_acc_ies.uE_Identity.choice.iMSI.buf,
+ ue_acc_ies.uE_Identity.choice.iMSI.size);
+
+ printf("HNBAP UE Register accept to IMSI %s\n", imsi);
+ hnbap_free_ueregisteraccepties(&ue_acc_ies);
+
+}
+
+int main(int argc, char **argv)
+{
+ int rc;
+
+ test_common_init();
+ log_set_log_level(osmo_stderr_target, LOGL_INFO);
+
+
+ test_asn1_decoding();
+
+ return 0;
+}
+
diff --git a/src/tests/test-hnbap.ok b/src/tests/test-hnbap.ok
new file mode 100644
index 0000000..03331c4
--- /dev/null
+++ b/src/tests/test-hnbap.ok
@@ -0,0 +1,4 @@
+Testing asn.1 HNBAP decoding
+HNBAP register request for HNB 10005B9-0010942050@
+HNBAP UE Register request from IMSI 262011234567890
+HNBAP UE Register accept to IMSI 262011234567890
diff --git a/src/tests/test-ranap.c b/src/tests/test-ranap.c
new file mode 100644
index 0000000..c1c7003
--- /dev/null
+++ b/src/tests/test-ranap.c
@@ -0,0 +1,202 @@
+/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/vty/logging.h>
+
+#include "asn1helpers.h"
+#include <osmocom/ranap/iu_helpers.h>
+
+#include <osmocom/ranap/ranap_common.h>
+#include <osmocom/ranap/ranap_ies_defs.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+#include <osmocom/ranap/RANAP_MaxBitrate.h>
+#include <osmocom/ranap/RANAP_CauseMisc.h>
+
+#include "test_common.h"
+
+#include <osmocom/iuh/hnbgw.h>
+
+int asn1_xer_print = 1;
+
+extern void *tall_msgb_ctx;
+
+static void test_aper_int(uint32_t inp)
+{
+ RANAP_MaxBitrate_t mbr = inp;
+ asn_enc_rval_t rv;
+ uint8_t buf[32];
+
+ memset(buf, 0, sizeof(buf));
+
+ rv = aper_encode_to_buffer(&asn_DEF_RANAP_MaxBitrate, &mbr, buf, sizeof(buf));
+ if (rv.encoded == -1) {
+ fprintf(stderr, "Failed\n");
+ return;
+ }
+ printf("Encoded MaxBitRate %u to %s\n", mbr, osmo_hexdump(buf, rv.encoded/8));
+}
+
+static void test_aper_causemisc(uint32_t inp, uint8_t exp_enc)
+{
+ RANAP_Cause_t c = { .present = RANAP_Cause_PR_misc, .choice.misc = inp };
+ RANAP_Cause_t *c_dec = NULL;
+ asn_enc_rval_t rv;
+ uint8_t buf[32];
+
+ memset(buf, 0, sizeof(buf));
+
+ rv = aper_encode_to_buffer(&asn_DEF_RANAP_Cause, &c, buf, sizeof(buf));
+ if (rv.encoded == -1) {
+ fprintf(stderr, "Failed\n");
+ return;
+ }
+ /* test encoding */
+ printf("Encoded Cause Misc=%u to %s\n", inp, osmo_hexdump(buf, rv.encoded/8));
+ OSMO_ASSERT(buf[0] == exp_enc);
+ OSMO_ASSERT(rv.encoded == 8);
+
+ /* test re-decoding */
+ aper_decode(NULL, &asn_DEF_RANAP_Cause, &c_dec, buf, 1, 0, 0);
+ printf("Decoded Cause Misc=%u\n", c_dec->choice.misc);
+ OSMO_ASSERT(c_dec->present == RANAP_Cause_PR_misc);
+ OSMO_ASSERT(c_dec->choice.misc == inp);
+ ASN_STRUCT_FREE(asn_DEF_RANAP_Cause, c_dec);
+}
+
+int main(int argc, char **argv)
+{
+ uint8_t nas_buf[] = { 0xaa, 0xbb, 0xcc };
+ struct msgb *msg;
+ const char *imsi = "901700123456789";
+ uint32_t tmsi = 0x01234567;
+ uint32_t rtp_ip = 0x0a0b0c0d;
+ uint16_t rtp_port = 2342;
+ uint32_t gtp_ip = 0x1a1b1c1d;
+ uint32_t gtp_tei = 0x11223344;
+ uint8_t ik[16] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+ uint8_t ck[16] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
+ int i, rc;
+
+ //asn_debug = 1;
+
+ test_common_init();
+
+ test_aper_int(1);
+ test_aper_int(2);
+ test_aper_int(3);
+ test_aper_int(255);
+ test_aper_int(256);
+ test_aper_int(257);
+ test_aper_int(64000);
+ test_aper_int(0xffff);
+ test_aper_int(0xffff+1);
+ test_aper_int(0xffff+2);
+ test_aper_int(16000000);
+ test_aper_causemisc(RANAP_CauseMisc_unspecified_failure, 0x42);
+
+ for (i = 0; i < 1; i++) {
+ printf("\n==> DIRECT TRANSFER\n");
+ msg = ranap_new_msg_dt(0, nas_buf, sizeof(nas_buf));
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> SECURITY MODE COMMAND\n");
+ msg = ranap_new_msg_sec_mod_cmd(ik, ck, RANAP_KeyStatus_new);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> COMMON ID\n");
+ msg = ranap_new_msg_common_id(imsi);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> IU RELEASE CMD\n");
+ RANAP_Cause_t cause = { .present = RANAP_Cause_PR_radioNetwork,
+ .choice.radioNetwork = RANAP_CauseRadioNetwork_radio_connection_with_UE_Lost };
+ msg = ranap_new_msg_iu_rel_cmd(&cause);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> PAGING CMD\n");
+ msg = ranap_new_msg_paging_cmd(imsi, &tmsi, 0, RANAP_PagingCause_terminating_conversational_call);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> RAB ASSIGNMENT COMMAND (VOICE)\n");
+ msg = ranap_new_msg_rab_assign_voice(1, rtp_ip, rtp_port, 1);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> RAB ASSIGNMENT COMMAND (DATA)\n");
+ msg = ranap_new_msg_rab_assign_data(2, gtp_ip, gtp_tei, 1);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> RESET CMD\n");
+ msg = ranap_new_msg_reset(RANAP_CN_DomainIndicator_cs_domain, &cause);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> RESET ACK\n");
+ uint8_t plmn_id[] = { 0x09, 0x01, 0x99 };
+ RANAP_GlobalRNC_ID_t rnc_id;
+ rnc_id.pLMNidentity.buf = plmn_id;
+ rnc_id.pLMNidentity.size = sizeof(plmn_id);
+ rnc_id.rNC_ID = 2342;
+ msg = ranap_new_msg_reset_ack(RANAP_CN_DomainIndicator_cs_domain, &rnc_id);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> INITIAL UE\n");
+ msg = ranap_new_msg_initial_ue(23, 0, &rnc_id, nas_buf, sizeof(nas_buf));
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> IU RELEASE REQ\n");
+ msg = ranap_new_msg_iu_rel_req(&cause);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+
+ printf("\n==> RAB RELEASE REQ\n");
+ msg = ranap_new_msg_rab_rel_req(23, &cause);
+ if (msg)
+ printf("%s\n", msgb_hexdump(msg));
+ msgb_free(msg);
+ }
+
+ printf("report\n");
+ talloc_report(talloc_asn1_ctx, stdout);
+ talloc_report(tall_msgb_ctx, stdout);
+ //talloc_report(NULL, stdout);
+ printf("exit\n");
+ exit(0);
+}
diff --git a/src/tests/test-ranap.ok b/src/tests/test-ranap.ok
new file mode 100644
index 0000000..2a8de8f
--- /dev/null
+++ b/src/tests/test-ranap.ok
@@ -0,0 +1,222 @@
+Encoded MaxBitRate 1 to 00 00
+Encoded MaxBitRate 2 to 00 01
+Encoded MaxBitRate 3 to 00 02
+Encoded MaxBitRate 255 to 00 fe
+Encoded MaxBitRate 256 to 00 ff
+Encoded MaxBitRate 257 to 40 01 00
+Encoded MaxBitRate 64000 to 40 f9 ff
+Encoded MaxBitRate 65535 to 40 ff fe
+Encoded MaxBitRate 65536 to 40 ff ff
+Encoded MaxBitRate 65537 to 80 01 00 00
+Encoded MaxBitRate 16000000 to 80 f4 23 ff
+Encoded Cause Misc=115 to 42
+Decoded Cause Misc=115
+
+==> DIRECT TRANSFER
+<RANAP_IE>
+ <id>16</id>
+ <criticality><ignore/></criticality>
+ <value>03 AA BB CC</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>59</id>
+ <criticality><ignore/></criticality>
+ <value>00</value>
+</RANAP_IE>
+00 14 00 10 00 00 02 00 10 40 04 03 aa bb cc 00 3b 40 01 00
+
+==> SECURITY MODE COMMAND
+<RANAP_IE>
+ <id>12</id>
+ <criticality><reject/></criticality>
+ <value>
+ 08 08 01 01 01 01 01 01 01 01 01 01 01 01 01 01
+ 01 01
+ </value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>11</id>
+ <criticality><ignore/></criticality>
+ <value>
+ 08 90 02 02 02 02 02 02 02 02 02 02 02 02 02 02
+ 02 02
+ </value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>75</id>
+ <criticality><reject/></criticality>
+ <value>40</value>
+</RANAP_IE>
+00 06 00 34 00 00 03 00 0c 00 12 08 08 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 0b 40 12 08 90 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 00 4b 00 01 40
+
+==> COMMON ID
+<RANAP_IE>
+ <id>23</id>
+ <criticality><ignore/></criticality>
+ <value>50 09 71 00 21 43 65 87 F9</value>
+</RANAP_IE>
+00 0f 40 10 00 00 01 00 17 40 09 50 09 71 00 21 43 65 87 f9
+
+==> IU RELEASE CMD
+<RANAP_IE>
+ <id>4</id>
+ <criticality><ignore/></criticality>
+ <value>0B 40</value>
+</RANAP_IE>
+00 01 00 09 00 00 01 00 04 40 02 0b 40
+
+==> PAGING CMD
+<RANAP_IE>
+ <id>3</id>
+ <criticality><ignore/></criticality>
+ <value>00</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>23</id>
+ <criticality><ignore/></criticality>
+ <value>50 09 71 00 21 43 65 87 F9</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>64</id>
+ <criticality><ignore/></criticality>
+ <value>00 01 23 45 67</value>
+</RANAP_IE>
+00 0e 00 1e 00 00 03 00 03 40 01 00 00 17 40 09 50 09 71 00 21 43 65 87 f9 00 40 40 05 00 01 23 45 67
+
+==> RAB ASSIGNMENT COMMAND (VOICE)
+<RANAP_ProtocolIE-FieldPair>
+ <id>53</id>
+ <firstCriticality><reject/></firstCriticality>
+ <firstValue>
+ 78 02 CD 80 10 2F A7 20 1A 2C 00 00 F4 4C 08 0A
+ 02 80 00 51 40 00 27 20 28 14 00 67 40 00 00 22
+ 28 14 00 3C 40 00 00 00 50 3D 02 00 02 27 C0 35
+ 00 01 0A 0B 0C 0D 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 40 09 26 00 00
+ </firstValue>
+ <secondCriticality><ignore/></secondCriticality>
+ <secondValue>00</secondValue>
+</RANAP_ProtocolIE-FieldPair>
+<RANAP_IE>
+ <id>54</id>
+ <criticality><ignore/></criticality>
+ <value>
+ 00 00 01 00 35 00 48 78 02 CD 80 10 2F A7 20 1A
+ 2C 00 00 F4 4C 08 0A 02 80 00 51 40 00 27 20 28
+ 14 00 67 40 00 00 22 28 14 00 3C 40 00 00 00 50
+ 3D 02 00 02 27 C0 35 00 01 0A 0B 0C 0D 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 40 09 26 00 00 40
+ 01 00
+ </value>
+</RANAP_IE>
+00 00 00 59 00 00 01 00 36 40 52 00 00 01 00 35 00 48 78 02 cd 80 10 2f a7 20 1a 2c 00 00 f4 4c 08 0a 02 80 00 51 40 00 27 20 28 14 00 67 40 00 00 22 28 14 00 3c 40 00 00 00 50 3d 02 00 02 27 c0 35 00 01 0a 0b 0c 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 40 09 26 00 00 40 01 00
+
+==> RAB ASSIGNMENT COMMAND (DATA)
+<RANAP_ProtocolIE-FieldPair>
+ <id>53</id>
+ <firstCriticality><reject/></firstCriticality>
+ <firstValue>
+ 38 04 12 DE 18 69 FF 80 0C 34 FF 00 1F 40 08 06
+ 08 9E 00 00 00 00 B1 40 05 60 01 8C BA 7F 00 00
+ 11 3E 35 00 01 1A 1B 1C 1D 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 11 22 33 44
+ </firstValue>
+ <secondCriticality><ignore/></secondCriticality>
+ <secondValue>78 1C 00 00 00 00</secondValue>
+</RANAP_ProtocolIE-FieldPair>
+<RANAP_IE>
+ <id>54</id>
+ <criticality><ignore/></criticality>
+ <value>
+ 00 00 01 00 35 00 3B 38 04 12 DE 18 69 FF 80 0C
+ 34 FF 00 1F 40 08 06 08 9E 00 00 00 00 B1 40 05
+ 60 01 8C BA 7F 00 00 11 3E 35 00 01 1A 1B 1C 1D
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 22
+ 33 44 40 06 78 1C 00 00 00 00
+ </value>
+</RANAP_IE>
+00 00 00 51 00 00 01 00 36 40 4a 00 00 01 00 35 00 3b 38 04 12 de 18 69 ff 80 0c 34 ff 00 1f 40 08 06 08 9e 00 00 00 00 b1 40 05 60 01 8c ba 7f 00 00 11 3e 35 00 01 1a 1b 1c 1d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 22 33 44 40 06 78 1c 00 00 00 00
+
+==> RESET CMD
+<RANAP_IE>
+ <id>4</id>
+ <criticality><ignore/></criticality>
+ <value>0B 40</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>3</id>
+ <criticality><reject/></criticality>
+ <value>00</value>
+</RANAP_IE>
+00 09 00 0e 00 00 02 00 04 40 02 0b 40 00 03 00 01 00
+
+==> RESET ACK
+<RANAP_IE>
+ <id>3</id>
+ <criticality><reject/></criticality>
+ <value>00</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>86</id>
+ <criticality><ignore/></criticality>
+ <value>09 01 99 09 26</value>
+</RANAP_IE>
+20 09 00 11 00 00 02 00 03 00 01 00 00 56 40 05 09 01 99 09 26
+
+==> INITIAL UE
+<RANAP_IE>
+ <id>3</id>
+ <criticality><ignore/></criticality>
+ <value>00</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>15</id>
+ <criticality><ignore/></criticality>
+ <value>00 09 01 99 42 23</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>58</id>
+ <criticality><ignore/></criticality>
+ <value>00 09 01 99 42 23 42 23</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>16</id>
+ <criticality><ignore/></criticality>
+ <value>03 AA BB CC</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>79</id>
+ <criticality><ignore/></criticality>
+ <value>00 00 17</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>86</id>
+ <criticality><ignore/></criticality>
+ <value>09 01 99 09 26</value>
+</RANAP_IE>
+00 13 00 36 00 00 06 00 03 40 01 00 00 0f 40 06 00 09 01 99 42 23 00 3a 40 08 00 09 01 99 42 23 42 23 00 10 40 04 03 aa bb cc 00 4f 40 03 00 00 17 00 56 40 05 09 01 99 09 26
+
+==> IU RELEASE REQ
+<RANAP_IE>
+ <id>4</id>
+ <criticality><ignore/></criticality>
+ <value>0B 40</value>
+</RANAP_IE>
+00 0b 00 09 00 00 01 00 04 40 02 0b 40
+
+==> RAB RELEASE REQ
+<RANAP_IE>
+ <id>40</id>
+ <criticality><ignore/></criticality>
+ <value>05 C2 D0</value>
+</RANAP_IE>
+<RANAP_IE>
+ <id>41</id>
+ <criticality><ignore/></criticality>
+ <value>00 00 01 00 28 40 03 05 C2 D0</value>
+</RANAP_IE>
+00 0a 00 11 00 00 01 00 29 40 0a 00 00 01 00 28 40 03 05 c2 d0
+report
+talloc report on 'asn1_context' (total 0 bytes in 1 blocks)
+talloc report on 'msgb' (total 0 bytes in 1 blocks)
+exit
diff --git a/src/tests/test_common.c b/src/tests/test_common.c
new file mode 100644
index 0000000..c8aafdd
--- /dev/null
+++ b/src/tests/test_common.c
@@ -0,0 +1,87 @@
+/* Common osmo-iuh test stub code */
+
+/* (C) 2015 by Sysmocom s.f.m.c. GmbH
+ * Author: Daniel Willmann <dwillmann@sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+#include <errno.h>
+#include <signal.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/sctp.h>
+#include <arpa/inet.h>
+
+#include <osmocom/core/application.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/logging.h>
+
+#include <osmocom/iuh/hnbgw.h>
+
+void *talloc_asn1_ctx;
+
+static const struct log_info_cat log_cat[] = {
+ [DMAIN] = {
+ .name = "DMAIN", .loglevel = LOGL_INFO, .enabled = 1,
+ .color = "",
+ .description = "Main program",
+ },
+ [DHNBAP] = {
+ .name = "DHNBAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "Home Node B Application Part",
+ },
+ [DRANAP] = {
+ .name = "RANAP", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "RAN Application Part",
+ },
+ [DRUA] = {
+ .name = "RUA", .loglevel = LOGL_DEBUG, .enabled = 1,
+ .color = "",
+ .description = "RANAP User Adaptation",
+ },
+};
+
+static const struct log_info test_log_info = {
+ .cat = log_cat,
+ .num_cat = ARRAY_SIZE(log_cat),
+};
+
+int test_common_init(void)
+{
+ int rc;
+
+ msgb_talloc_ctx_init(NULL, 0);
+ talloc_asn1_ctx = talloc_named_const(NULL, 0, "asn1_context");
+
+ rc = osmo_init_logging(&test_log_info);
+ if (rc < 0)
+ exit(1);
+
+ ranap_set_log_area(DRANAP);
+
+ log_set_print_filename(osmo_stderr_target, 0);
+ log_set_use_color(osmo_stderr_target, 0);
+}
diff --git a/src/tests/test_common.h b/src/tests/test_common.h
new file mode 100644
index 0000000..1af1abd
--- /dev/null
+++ b/src/tests/test_common.h
@@ -0,0 +1,3 @@
+#pragma once
+
+int test_common_init(void);
diff --git a/src/tests/testsuite.at b/src/tests/testsuite.at
new file mode 100644
index 0000000..9378f18
--- /dev/null
+++ b/src/tests/testsuite.at
@@ -0,0 +1,22 @@
+AT_INIT
+AT_BANNER([Regression tests.])
+
+
+AT_SETUP([helpers])
+AT_KEYWORDS([helpers])
+cat $abs_srcdir/test-helpers.ok > expout
+cat $abs_srcdir/test-helpers.err > experr
+AT_CHECK([$abs_top_builddir/src/tests/test-helpers], [0], [expout], [experr])
+AT_CLEANUP
+
+AT_SETUP([hnbap])
+AT_KEYWORDS([hnbap])
+cat $abs_srcdir/test-hnbap.ok > expout
+AT_CHECK([$abs_top_builddir/src/tests/test-hnbap], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([ranap])
+AT_KEYWORDS([ranap])
+cat $abs_srcdir/test-ranap.ok > expout
+AT_CHECK([$abs_top_builddir/src/tests/test-ranap], [0], [expout])
+AT_CLEANUP